package com.jasamedika.medifirst2000.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.converter.AlatTerpasangDetailConverter;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.PendidikanConverter;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.AsesmenPsikologisDao;
import com.jasamedika.medifirst2000.dao.KesanPsikologis_DiagnosisDao;
import com.jasamedika.medifirst2000.dao.PengalamanOrganisasiDao;
import com.jasamedika.medifirst2000.dao.PengkajianAwalPsikologiDao;
import com.jasamedika.medifirst2000.dao.ProfilSensoriDao;
import com.jasamedika.medifirst2000.dao.RiwayatPendidikanFormalDao;
import com.jasamedika.medifirst2000.dao.RiwayatPendidikanNonFormalDao;
import com.jasamedika.medifirst2000.dao.RiwayatPerkembanganDao;
import com.jasamedika.medifirst2000.dao.TesPsikologiDao;
import com.jasamedika.medifirst2000.entities.AlatTerpasangDetail;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.AsesmenPsikologis;
import com.jasamedika.medifirst2000.entities.AsesmenPsikologisDetail;
import com.jasamedika.medifirst2000.entities.CheckIn;
import com.jasamedika.medifirst2000.entities.KesanPsikologis_Diagnosis;
import com.jasamedika.medifirst2000.entities.KesanPsikologis_DiagnosisDetail;
import com.jasamedika.medifirst2000.entities.PasienDaftar;
import com.jasamedika.medifirst2000.entities.Pendidikan;
import com.jasamedika.medifirst2000.entities.PengalamanOrganisasi;
import com.jasamedika.medifirst2000.entities.PengkajianAwalPsikologi;
import com.jasamedika.medifirst2000.entities.PengobatanKhususDetail;
import com.jasamedika.medifirst2000.entities.ProfilSensori;
import com.jasamedika.medifirst2000.entities.RiwayatPendidikanFormal;
import com.jasamedika.medifirst2000.entities.RiwayatPendidikanNonFormal;
import com.jasamedika.medifirst2000.entities.RiwayatPerkembangan;
import com.jasamedika.medifirst2000.entities.RiwayatPerkembanganDetail;
import com.jasamedika.medifirst2000.entities.SistemProfilSensori;
import com.jasamedika.medifirst2000.entities.TesPsikologi;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.PasienDaftarService;
import com.jasamedika.medifirst2000.service.PengkajianAwalPsikologiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.AsesmenPsikologisDetailVO;
import com.jasamedika.medifirst2000.vo.AsesmenPsikologisVO;
import com.jasamedika.medifirst2000.vo.KesanPsikologis_DiagnosisDetailVO;
import com.jasamedika.medifirst2000.vo.KesanPsikologis_DiagnosisVO;
import com.jasamedika.medifirst2000.vo.PengalamanOrganisasiVO;
import com.jasamedika.medifirst2000.vo.PengkajianAwalPsikologiVO;
import com.jasamedika.medifirst2000.vo.ProfilSensoriVO;
import com.jasamedika.medifirst2000.vo.RiwayatPendidikanFormalVO;
import com.jasamedika.medifirst2000.vo.RiwayatPendidikanNonFormalVO;
import com.jasamedika.medifirst2000.vo.RiwayatPerkembanganDetailVO;
import com.jasamedika.medifirst2000.vo.RiwayatPerkembanganVO;
import com.jasamedika.medifirst2000.vo.SistemProfilSensoriVO;
import com.jasamedika.medifirst2000.vo.TesPsikologiVO;

@Service("pengkajianAwalPsikologiService")
public class PengkajianAwalPsikologiServiceImpl implements PengkajianAwalPsikologiService {

	@Autowired
	private BaseConverterImpl<PengkajianAwalPsikologiVO, PengkajianAwalPsikologi> pengkajianAwalPsikologiConverter;

	@Autowired
	private PendidikanConverter pendidikanConverter;

	@Autowired
	private PengkajianAwalPsikologiDao pengkajianAwalPsikologiDao;
	
	@Autowired
	private RiwayatPerkembanganDao riwayatPerkembanganDao;
	
	@Autowired
	private PengalamanOrganisasiDao pengalamanOrganisasiDao;
	
	@Autowired
	private RiwayatPendidikanFormalDao riwayatPendidikanFormalDao;
	
	@Autowired
	private RiwayatPendidikanNonFormalDao riwayatPendidikanNonFormalDao;
	
	@Autowired
	private AsesmenPsikologisDao asesmenPsikologisDao;
	
	@Autowired
	private ProfilSensoriDao profilSensoriDao;
	
	@Autowired
	private KesanPsikologis_DiagnosisDao kesanPsikologis_DiagnosisDao;
	
	@Autowired
	private TesPsikologiDao tesPsikologiDao;

	@Autowired
	private BaseConverterImpl<RiwayatPendidikanFormalVO, RiwayatPendidikanFormal> riwayatPendidikanFormalConverter;

	@Autowired
	private BaseConverterImpl<RiwayatPendidikanNonFormalVO, RiwayatPendidikanNonFormal> riwayatPendidikanNonFormalConverter;

	@Autowired
	private BaseConverterImpl<PengalamanOrganisasiVO, PengalamanOrganisasi> pengalamanOrganisasiConverter;

	@Autowired
	private BaseConverterImpl<RiwayatPerkembanganVO, RiwayatPerkembangan> riwayatPerkembanganConverter;

	@Autowired
	private BaseConverterImpl<RiwayatPerkembanganDetailVO, RiwayatPerkembanganDetail> riwayatPerkembanganDetailConverter;
	
	@Autowired
	private BaseConverterImpl<AsesmenPsikologisVO, AsesmenPsikologis> asesmenPsikologisConverter;
	
	@Autowired
	private BaseConverterImpl<ProfilSensoriVO, ProfilSensori> profilSensoriConverter;
	
	@Autowired
	private BaseConverterImpl<SistemProfilSensoriVO, SistemProfilSensori> sistemProfilSensoriConverter;

	@Autowired
	private BaseConverterImpl<AsesmenPsikologisDetailVO, AsesmenPsikologisDetail> asesmenPsikologisDetailConverter;
	
	@Autowired
	private BaseConverterImpl<KesanPsikologis_DiagnosisVO, KesanPsikologis_Diagnosis> kesanPsikologis_DiagnosisConverter;
	
	@Autowired
	private BaseConverterImpl<KesanPsikologis_DiagnosisDetailVO, KesanPsikologis_DiagnosisDetail> kesanPsikologis_DiagnosisDetailConverter;
	
	@Autowired
	private BaseConverterImpl<TesPsikologiVO, TesPsikologi> tesPsikologiConverter;
		
	@Autowired
	private PasienDaftarService pasienDaftarService;

	@Override
	public PengkajianAwalPsikologiVO add(PengkajianAwalPsikologiVO vo) throws JpaSystemException, ServiceVOException {
		return null;
	}

	@Override
	public PengkajianAwalPsikologiVO update(PengkajianAwalPsikologiVO vo)
			throws JpaSystemException, ServiceVOException {
		return null;
	}

	@Override
	public Boolean delete(String key) throws JpaSystemException {
		return null;
	}

	@Override
	public PengkajianAwalPsikologiVO findById(String key) throws JpaSystemException {
		return null;
	}

	@Override
	public List<PengkajianAwalPsikologiVO> findAll() throws JpaSystemException {
		return null;
	}

	@Override
	public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
			String sort, String dir) {
		return null;
	}
	@Autowired
	private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;
	@Override
	public Map<String, Object> addPengkajianAwal(PengkajianAwalPsikologiVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		PengkajianAwalPsikologi model = pengkajianAwalPsikologiConverter.transferVOToModel(vo,new PengkajianAwalPsikologi());
		AntrianPasienDiPeriksa pasien = antrianPasienDiPeriksaDao.findbyNoCmAndTglRegistrasi(vo.getPasien().getId(),
				vo.getTglRegistrasi());
		List<RiwayatPerkembangan> listRiwayatPerkembangan = new ArrayList<RiwayatPerkembangan>();
		List<RiwayatPendidikanFormal> listRiwayatPendidikanFormal = new ArrayList<RiwayatPendidikanFormal>();
		List<PengalamanOrganisasi> listPengalamanOrganisasi = new ArrayList<PengalamanOrganisasi>();
		List<RiwayatPendidikanNonFormal> listRiwayatPendidikanNonFormal = new ArrayList<RiwayatPendidikanNonFormal>();
		List<AsesmenPsikologis> listAsesmenPsikologis = new ArrayList<AsesmenPsikologis>();
		List<ProfilSensori> listProfilSensori= new ArrayList<ProfilSensori>();
		List<KesanPsikologis_Diagnosis> listKesanPsikologis_Diagnosis= new ArrayList<KesanPsikologis_Diagnosis>();
		List<TesPsikologi> listTesPsikologi= new ArrayList<TesPsikologi>();

		for (RiwayatPerkembanganVO riwayat : vo.getRiwayatPerkembangan()) {
			RiwayatPerkembangan riwayatPerkembangan = riwayatPerkembanganConverter.transferVOToModel(riwayat,
					new RiwayatPerkembangan());
			riwayatPerkembangan.setRiwayatPerkembanganDetail(riwayatPerkembanganDetailConverter
					.transferVOToModel(riwayat.getRiwayatPerkembanganDetail(), new RiwayatPerkembanganDetail()));
			riwayatPerkembangan.setPengkajianAwalPsikologi(model);
			listRiwayatPerkembangan.add(riwayatPerkembangan);
		}

		for (RiwayatPendidikanFormalVO pendidikan : vo.getRiwayatPendidikanFormal()) {
			RiwayatPendidikanFormal riwayatPendidikan = riwayatPendidikanFormalConverter.transferVOToModel(pendidikan,
					new RiwayatPendidikanFormal());
			riwayatPendidikan
					.setPendidikan(pendidikanConverter.transferVOToModel(pendidikan.getPendidikan(), new Pendidikan()));
			riwayatPendidikan.setPengkajianAwalPsikologi(model);
			listRiwayatPendidikanFormal.add(riwayatPendidikan);
		}

		for (RiwayatPendidikanNonFormalVO pendidikanNonFormal : vo.getRiwayatPendidikanNonFormal()) {
			RiwayatPendidikanNonFormal riwayatPendidikanNonFormal = riwayatPendidikanNonFormalConverter
					.transferVOToModel(pendidikanNonFormal, new RiwayatPendidikanNonFormal());
			riwayatPendidikanNonFormal.setPengkajianAwalPsikologi(model);
			listRiwayatPendidikanNonFormal.add(riwayatPendidikanNonFormal);
		}

		for (PengalamanOrganisasiVO pengalaman : vo.getPengalamanOrganisasi()) {
			PengalamanOrganisasi pengalamanOrganisasi = pengalamanOrganisasiConverter.transferVOToModel(pengalaman,
					new PengalamanOrganisasi());
			pengalamanOrganisasi.setPengkajianAwalPsikologi(model);
			listPengalamanOrganisasi.add(pengalamanOrganisasi);
		}
		
		for (AsesmenPsikologisVO asesmen : vo.getAsesmenPsikologis()) {
			AsesmenPsikologis asesmenPsikologis = asesmenPsikologisConverter.transferVOToModel(asesmen,new AsesmenPsikologis());
			asesmenPsikologis.setAsesmenPsikologisDetail(asesmenPsikologisDetailConverter.transferVOToModel(asesmen.getAsesmenPsikologisDetail(), new AsesmenPsikologisDetail()));
			asesmenPsikologis.setPengkajianAwalPsikologi(model);
			listAsesmenPsikologis.add(asesmenPsikologis);
		}
		
		for (ProfilSensoriVO profil : vo.getProfilSensori()) {
			ProfilSensori profilSensori = profilSensoriConverter.transferVOToModel(profil,new ProfilSensori());
			profilSensori.setSistemProfilSensori(sistemProfilSensoriConverter.transferVOToModel(profil.getSistemProfilSensori(), new SistemProfilSensori()));
			profilSensori.setPengkajianAwalPsikologi(model);
			listProfilSensori.add(profilSensori);
		}
		
		for(KesanPsikologis_DiagnosisVO psikologis : vo.getKesanPsikologis())
		{
			KesanPsikologis_Diagnosis kesanPsikologis = kesanPsikologis_DiagnosisConverter.transferVOToModel(psikologis, new KesanPsikologis_Diagnosis());
			kesanPsikologis.setKesanPsikologis(kesanPsikologis_DiagnosisDetailConverter.transferVOToModel(psikologis.getKesanPsikologis(), new KesanPsikologis_DiagnosisDetail()));
			kesanPsikologis.setPengkajianAwalPsikologi(model);
			listKesanPsikologis_Diagnosis.add(kesanPsikologis);
		}
		
		for(TesPsikologiVO tes : vo.getTesPsikologi())
		{
			TesPsikologi tesPsikologi = tesPsikologiConverter.transferVOToModel(tes, new TesPsikologi());
			tesPsikologi.setPengkajianAwalPsikologi(model);
			listTesPsikologi.add(tesPsikologi);
		}

		if (CommonUtil.isNotNullOrEmpty(model.getRiwayatPerkembangan())) {

			model.getRiwayatPerkembangan().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getRiwayatPendidikanFormal())) {

			model.getRiwayatPendidikanFormal().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getRiwayatPendidikanNonFormal())) {

			model.getRiwayatPendidikanNonFormal().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getPengalamanOrganisasi())) {

			model.getPengalamanOrganisasi().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getAsesmenPsikologis())) {

			model.getAsesmenPsikologis().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getProfilSensori())) {

			model.getProfilSensori().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getKesanPsikologis())) {

			model.getKesanPsikologis().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(model.getTesPsikologi())) {

			model.getTesPsikologi().clear();
		}		
		model.setPasien(pasien);
		model.getRiwayatPerkembangan().addAll(listRiwayatPerkembangan);
		model.getRiwayatPendidikanFormal().addAll(listRiwayatPendidikanFormal);
		model.getRiwayatPendidikanNonFormal().addAll(listRiwayatPendidikanNonFormal);
		model.getPengalamanOrganisasi().addAll(listPengalamanOrganisasi);
		model.getAsesmenPsikologis().addAll(listAsesmenPsikologis);
		model.getProfilSensori().addAll(listProfilSensori);
		model.getKesanPsikologis().addAll(listKesanPsikologis_Diagnosis);
		model.getTesPsikologi().addAll(listTesPsikologi);
		PengkajianAwalPsikologi resultModel = pengkajianAwalPsikologiDao.save(model);
		if (CommonUtil.isNotNullOrEmpty(resultModel)) {
			result.put("id", resultModel.getNoRec());
		}
		return result;
	}
	
	
	@Override
	public Map<String, Object> updatePengkajianAwal(PengkajianAwalPsikologiVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		PengkajianAwalPsikologi pengkajianAwalPsikologi = pengkajianAwalPsikologiConverter.transferVOToModel(vo, new PengkajianAwalPsikologi());
		List<RiwayatPerkembangan> modelRiwayatPerkembangan =riwayatPerkembanganDao.findByNoRec(vo.getNoRec());
		List<RiwayatPendidikanFormal> modelRiwayatPendidikanFormal = riwayatPendidikanFormalDao.findByNoRec(vo.getNoRec());
		List<PengalamanOrganisasi> modelPengalamanOrganisasi = pengalamanOrganisasiDao.findByNoRec(vo.getNoRec());
		List<RiwayatPendidikanNonFormal> modelRiwayatPendidikanNonFormal = riwayatPendidikanNonFormalDao.findByNoRec(vo.getNoRec());
		List<AsesmenPsikologis> modelAsesmenPsikologis = asesmenPsikologisDao.findByNoRec(vo.getNoRec());
		List<ProfilSensori> modelProfilSensori = profilSensoriDao.findByNoRec(vo.getNoRec());
		List<KesanPsikologis_Diagnosis> modelKesanPsikologis_Diagnosis = kesanPsikologis_DiagnosisDao.findByNoRec(vo.getNoRec());
		List<TesPsikologi> modelTesPsikologi = tesPsikologiDao.findByNoRec(vo.getNoRec());
		
		if (CommonUtil.isNotNullOrEmpty(modelRiwayatPerkembangan)) {
			riwayatPerkembanganDao.delete(modelRiwayatPerkembangan);
		}

		if (CommonUtil.isNotNullOrEmpty(modelRiwayatPendidikanFormal)) {
			riwayatPendidikanFormalDao.delete(modelRiwayatPendidikanFormal);
		}
		
		if (CommonUtil.isNotNullOrEmpty(modelPengalamanOrganisasi)) {
			pengalamanOrganisasiDao.delete(modelPengalamanOrganisasi);
		}
		
		if (CommonUtil.isNotNullOrEmpty(modelRiwayatPendidikanNonFormal)) {
			riwayatPendidikanNonFormalDao.delete(modelRiwayatPendidikanNonFormal);
		}		
		
		if (CommonUtil.isNotNullOrEmpty(modelAsesmenPsikologis)) {
			asesmenPsikologisDao.delete(modelAsesmenPsikologis);
		}

		if (CommonUtil.isNotNullOrEmpty(modelProfilSensori)) {
			profilSensoriDao.delete(modelProfilSensori);
		}
		
		if (CommonUtil.isNotNullOrEmpty(modelKesanPsikologis_Diagnosis)) {
			kesanPsikologis_DiagnosisDao.delete(modelKesanPsikologis_Diagnosis);
		}
		
		if (CommonUtil.isNotNullOrEmpty(modelTesPsikologi)) {
			tesPsikologiDao.delete(modelTesPsikologi);
		}	
		
		AntrianPasienDiPeriksa pasien = antrianPasienDiPeriksaDao.findbyNoCmAndTglRegistrasi(vo.getPasien().getId(),
				vo.getTglRegistrasi());
		List<RiwayatPerkembangan> listRiwayatPerkembangan = new ArrayList<RiwayatPerkembangan>();
		List<RiwayatPendidikanFormal> listRiwayatPendidikanFormal = new ArrayList<RiwayatPendidikanFormal>();
		List<PengalamanOrganisasi> listPengalamanOrganisasi = new ArrayList<PengalamanOrganisasi>();
		List<RiwayatPendidikanNonFormal> listRiwayatPendidikanNonFormal = new ArrayList<RiwayatPendidikanNonFormal>();
		List<AsesmenPsikologis> listAsesmenPsikologis = new ArrayList<AsesmenPsikologis>();
		List<ProfilSensori> listProfilSensori= new ArrayList<ProfilSensori>();
		List<KesanPsikologis_Diagnosis> listKesanPsikologis_Diagnosis= new ArrayList<KesanPsikologis_Diagnosis>();
		List<TesPsikologi> listTesPsikologi= new ArrayList<TesPsikologi>();

		for (RiwayatPerkembanganVO riwayat : vo.getRiwayatPerkembangan()) {
			RiwayatPerkembangan riwayatPerkembangan = riwayatPerkembanganConverter.transferVOToModel(riwayat,
					new RiwayatPerkembangan());
			riwayatPerkembangan.setRiwayatPerkembanganDetail(riwayatPerkembanganDetailConverter
					.transferVOToModel(riwayat.getRiwayatPerkembanganDetail(), new RiwayatPerkembanganDetail()));
			riwayatPerkembangan.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listRiwayatPerkembangan.add(riwayatPerkembangan);
		}

		for (RiwayatPendidikanFormalVO pendidikan : vo.getRiwayatPendidikanFormal()) {
			RiwayatPendidikanFormal riwayatPendidikan = riwayatPendidikanFormalConverter.transferVOToModel(pendidikan,
					new RiwayatPendidikanFormal());
			riwayatPendidikan
					.setPendidikan(pendidikanConverter.transferVOToModel(pendidikan.getPendidikan(), new Pendidikan()));
			riwayatPendidikan.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listRiwayatPendidikanFormal.add(riwayatPendidikan);
		}

		for (RiwayatPendidikanNonFormalVO pendidikanNonFormal : vo.getRiwayatPendidikanNonFormal()) {
			RiwayatPendidikanNonFormal riwayatPendidikanNonFormal = riwayatPendidikanNonFormalConverter
					.transferVOToModel(pendidikanNonFormal, new RiwayatPendidikanNonFormal());
			riwayatPendidikanNonFormal.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listRiwayatPendidikanNonFormal.add(riwayatPendidikanNonFormal);
		}

		for (PengalamanOrganisasiVO pengalaman : vo.getPengalamanOrganisasi()) {
			PengalamanOrganisasi pengalamanOrganisasi = pengalamanOrganisasiConverter.transferVOToModel(pengalaman,
					new PengalamanOrganisasi());
			pengalamanOrganisasi.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listPengalamanOrganisasi.add(pengalamanOrganisasi);
		}
		
		for (AsesmenPsikologisVO asesmen : vo.getAsesmenPsikologis()) {
			AsesmenPsikologis asesmenPsikologis = asesmenPsikologisConverter.transferVOToModel(asesmen,new AsesmenPsikologis());
			asesmenPsikologis.setAsesmenPsikologisDetail(asesmenPsikologisDetailConverter.transferVOToModel(asesmen.getAsesmenPsikologisDetail(), new AsesmenPsikologisDetail()));
			asesmenPsikologis.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listAsesmenPsikologis.add(asesmenPsikologis);
		}
		
		for (ProfilSensoriVO profil : vo.getProfilSensori()) {
			ProfilSensori profilSensori = profilSensoriConverter.transferVOToModel(profil,new ProfilSensori());
			profilSensori.setSistemProfilSensori(sistemProfilSensoriConverter.transferVOToModel(profil.getSistemProfilSensori(), new SistemProfilSensori()));
			profilSensori.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listProfilSensori.add(profilSensori);
		}
		
		for(KesanPsikologis_DiagnosisVO psikologis : vo.getKesanPsikologis())
		{
			KesanPsikologis_Diagnosis kesanPsikologis = kesanPsikologis_DiagnosisConverter.transferVOToModel(psikologis, new KesanPsikologis_Diagnosis());
			kesanPsikologis.setKesanPsikologis(kesanPsikologis_DiagnosisDetailConverter.transferVOToModel(psikologis.getKesanPsikologis(), new KesanPsikologis_DiagnosisDetail()));
			kesanPsikologis.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listKesanPsikologis_Diagnosis.add(kesanPsikologis);
		}
		
		for(TesPsikologiVO tes : vo.getTesPsikologi())
		{
			TesPsikologi tesPsikologi = tesPsikologiConverter.transferVOToModel(tes, new TesPsikologi());
			tesPsikologi.setPengkajianAwalPsikologi(pengkajianAwalPsikologi);
			listTesPsikologi.add(tesPsikologi);
		}

		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getRiwayatPerkembangan())) {

			pengkajianAwalPsikologi.getRiwayatPerkembangan().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getRiwayatPendidikanFormal())) {

			pengkajianAwalPsikologi.getRiwayatPendidikanFormal().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getRiwayatPendidikanNonFormal())) {

			pengkajianAwalPsikologi.getRiwayatPendidikanNonFormal().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getPengalamanOrganisasi())) {

			pengkajianAwalPsikologi.getPengalamanOrganisasi().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getAsesmenPsikologis())) {

			pengkajianAwalPsikologi.getAsesmenPsikologis().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getProfilSensori())) {

			pengkajianAwalPsikologi.getProfilSensori().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getKesanPsikologis())) {

			pengkajianAwalPsikologi.getKesanPsikologis().clear();
		}
		if (CommonUtil.isNotNullOrEmpty(pengkajianAwalPsikologi.getTesPsikologi())) {

			pengkajianAwalPsikologi.getTesPsikologi().clear();
		}		
		pengkajianAwalPsikologi.setPasien(pasien);
		pengkajianAwalPsikologi.getRiwayatPerkembangan().addAll(listRiwayatPerkembangan);
		pengkajianAwalPsikologi.getRiwayatPendidikanFormal().addAll(listRiwayatPendidikanFormal);
		pengkajianAwalPsikologi.getRiwayatPendidikanNonFormal().addAll(listRiwayatPendidikanNonFormal);
		pengkajianAwalPsikologi.getPengalamanOrganisasi().addAll(listPengalamanOrganisasi);
		pengkajianAwalPsikologi.getAsesmenPsikologis().addAll(listAsesmenPsikologis);
		pengkajianAwalPsikologi.getProfilSensori().addAll(listProfilSensori);
		pengkajianAwalPsikologi.getKesanPsikologis().addAll(listKesanPsikologis_Diagnosis);
		pengkajianAwalPsikologi.getTesPsikologi().addAll(listTesPsikologi);
		PengkajianAwalPsikologi resultModel = pengkajianAwalPsikologiDao.save(pengkajianAwalPsikologi);
		if (CommonUtil.isNotNullOrEmpty(resultModel)) {
			result.put("id", resultModel.getNoRec());
		}
		return result;
	}

}
