package com.jasamedika.medifirst2000.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

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

import com.google.gson.Gson;
import com.jasamedika.medifirst2000.converter.AgamaConverter;
import com.jasamedika.medifirst2000.converter.AsalRujukanConverter;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.DesaKelurahanConverter;
import com.jasamedika.medifirst2000.converter.GolonganDarahConverter;
import com.jasamedika.medifirst2000.converter.HubunganKeluargaConverter;
import com.jasamedika.medifirst2000.converter.JenisKelaminConverter;
import com.jasamedika.medifirst2000.converter.KelompokPasienConverter;
import com.jasamedika.medifirst2000.converter.KotaKabupatenConverter;
import com.jasamedika.medifirst2000.converter.LoginUserConverter;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.PegawaiConverter;
import com.jasamedika.medifirst2000.converter.PekerjaanConverter;
import com.jasamedika.medifirst2000.converter.PendidikanConverter;
import com.jasamedika.medifirst2000.converter.RegistrasiPasienConverter;
import com.jasamedika.medifirst2000.converter.RuanganConverter;
import com.jasamedika.medifirst2000.converter.StatusPerkawinanConverter;
import com.jasamedika.medifirst2000.converter.TitlePasienConverter;
import com.jasamedika.medifirst2000.dao.AgamaDao;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.AntrianPasienRegistrasiDao;
import com.jasamedika.medifirst2000.dao.JadwalDokterDao;
import com.jasamedika.medifirst2000.dao.KelompokPasienDao;
import com.jasamedika.medifirst2000.dao.PasienDaftarDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.dao.custom.AntrianPasienRegistrasiDaoCustom;
import com.jasamedika.medifirst2000.dao.custom.PasienDaoCustom;
import com.jasamedika.medifirst2000.entities.Agama;
import com.jasamedika.medifirst2000.entities.Alamat;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.AntrianPasienRegistrasi;
import com.jasamedika.medifirst2000.entities.AsalRujukan;
import com.jasamedika.medifirst2000.entities.DesaKelurahan;
import com.jasamedika.medifirst2000.entities.GolonganDarah;
import com.jasamedika.medifirst2000.entities.JadwalDokter;
import com.jasamedika.medifirst2000.entities.JenisKelamin;
import com.jasamedika.medifirst2000.entities.Kebangsaan;
import com.jasamedika.medifirst2000.entities.KelompokPasien;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.Negara;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.PasienDaftar;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Pekerjaan;
import com.jasamedika.medifirst2000.entities.Pendidikan;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.entities.StatusPerkawinan;
import com.jasamedika.medifirst2000.entities.TitlePasien;
import com.jasamedika.medifirst2000.enums.StatusAntrianEnum;
import com.jasamedika.medifirst2000.enums.TipePasienEnum;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.AgamaService;
import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService;
import com.jasamedika.medifirst2000.service.AntrianPasienRegistrasiService;
import com.jasamedika.medifirst2000.service.KelompokPasienService;
import com.jasamedika.medifirst2000.service.PasienDaftarService;
import com.jasamedika.medifirst2000.service.PasienService;
import com.jasamedika.medifirst2000.service.RegistrasiPasienOnlineService;
import com.jasamedika.medifirst2000.service.RegistrasiPelayananPasienService;
import com.jasamedika.medifirst2000.util.Age;
import com.jasamedika.medifirst2000.util.AgeCalculator;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.AgamaVO;
import com.jasamedika.medifirst2000.vo.AntrianPasienRegistrasiVO;
import com.jasamedika.medifirst2000.vo.DesaKelurahanVO;
import com.jasamedika.medifirst2000.vo.GridAntrianPasienDiPeriksaVO;
import com.jasamedika.medifirst2000.vo.GridAntrianPasienRegistrasiVO;
import com.jasamedika.medifirst2000.vo.KebangsaanVO;
import com.jasamedika.medifirst2000.vo.KelompokPasienVO;
import com.jasamedika.medifirst2000.vo.NegaraVO;
import com.jasamedika.medifirst2000.vo.PasienDaftarVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;

/**
 * Implement class for RegistrasiPasienService
 * 
 * @author Askur
 * @param <T>
 */
@Service("registrasiPasienOnlineService")
public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
		implements RegistrasiPasienOnlineService<AntrianPasienRegistrasiVO> {

	@Autowired
	private PasienDaftarService pasienDaftarService;

	@Autowired
	private KelompokPasienConverter kelompokPasienConverter;

	@Autowired
	private KelompokPasienDao kelompokPasienDao;

	@Autowired
	private BaseConverterImpl<PasienVO, Pasien> pasienConverter;

	@Autowired
	private BaseConverterImpl<PasienDaftarVO, PasienDaftar> pasienDaftarConverter;

	@Autowired
	private JenisKelaminConverter jenisKelaminConverter;

	@Autowired
	private AgamaConverter agamaConverter;

	@Autowired
	private PendidikanConverter pendidikanConverter;

	@Autowired
	private PekerjaanConverter pekerjaanConverter;

	@Autowired
	private StatusPerkawinanConverter statusPerkawinanConverter;

	@Autowired
	private TitlePasienConverter titlePasienConverter;

	@Autowired
	private AsalRujukanConverter asalRujukanConverter;

	@Autowired
	private RuanganConverter ruanganConverter;

	@Autowired
	private LoginUserConverter loginUserConverter;

	@Autowired
	private GolonganDarahConverter golonganDarahConverter;

	@Autowired
	private AntrianPasienRegistrasiService antrianPasienRegistrasiService;

	@Autowired
	private KelompokPasienService kelompokPasienService;

	@Autowired
	private AntrianPasienDiPeriksaService antrianPasienDiPeriksaService;

	@Autowired
	private RegistrasiPasienConverter registrasiPasienConverter;

	@Autowired
	private PegawaiConverter pegawaiConverter;

	@Autowired
	private AntrianPasienRegistrasiDao antrianPasienRegistrasiDao;

	@Autowired
	private RegistrasiPelayananPasienService registrasiPelayananPasienService;

	@Autowired
	private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;

	@Autowired
	private RegistrasiPelayananPasienDao registrasiPelayananPasienDao;

	@Autowired
	private PasienDaftarDao pasienDaftarDao;

	@Autowired
	private AntrianPasienRegistrasiDaoCustom antrianPasienRegistrasiDaoCustom;

	@Autowired
	private PasienService pasienService;

	@Autowired
	private AgamaDao agamaDao;

	@Autowired
	private PasienDao pasienDao;

	@Autowired
	private BaseConverterImpl<AntrianPasienRegistrasiVO, AntrianPasienRegistrasi> antrianPasienRegistrasiConverter;

	@Autowired
	private BaseConverterImpl<DesaKelurahanVO, DesaKelurahan> desaKelurahanConverter;

	private Map<String, Object> resultSavePasienDaftar;

	@Autowired
	private BaseConverterImpl<KebangsaanVO, Kebangsaan> kebangsaanConverter;

	@Autowired
	private BaseConverterImpl<NegaraVO, Negara> negaraConverter;

	@Override
	public Map<String, Object> saveRegistrasiPasienOnline(AntrianPasienRegistrasiVO vo) {
		AntrianPasienRegistrasi model = new AntrianPasienRegistrasi();
		model.setType(vo.getType());
		if (vo.getJenisPasien() == null) {
			if (vo.getState() == null || vo.getState().equals("UMUM"))
				model.setJenisPasien(
						kelompokPasienDao.findOne(Integer.parseInt(GetSettingDataFixed("KdKelompokPasienUmum"))));
			else if (vo.getState().equals("NONUMUM"))
				model.setJenisPasien(
						kelompokPasienDao.findOne(Integer.parseInt(GetSettingDataFixed("KdKelompokPasienAsuransi"))));

		}
		model = antrianPasienRegistrasiConverter.transferVOToModel(vo, model);

		if (CommonUtil.isNotNullOrEmpty(vo.getDesaKelurahan())) {
			model.setDesaKelurahan(
					desaKelurahanConverter.transferVOToModel(vo.getDesaKelurahan(), new DesaKelurahan()));
		}

		if (CommonUtil.isNotNullOrEmpty(vo.getAsalRujukan())) {
			model.setAsalRujukan(asalRujukanConverter.transferVOToModel(vo.getAsalRujukan(), new AsalRujukan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getPoliTujuan())) {
			model.setRuangan(ruanganConverter.transferVOToModel(vo.getPoliTujuan(), new Ruangan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getTglReservasi())) {
			model.setTglReservasi(vo.getTglReservasi());
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getTipePasien())) {
			model.setTipePasien(vo.getTipePasien());
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getAgama())) {
			model.setAgama(agamaConverter.transferVOToModel(vo.getAgama(), new Agama()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getJenisKelamin())) {
			model.setJenisKelamin(jenisKelaminConverter.transferVOToModel(vo.getJenisKelamin(), new JenisKelamin()));
		}
		if (vo.getTipePasien().equalsIgnoreCase(TipePasienEnum.LAMA.getVal())) {
			if (CommonUtil.isNotNullOrEmpty(vo.getPasien())) {
				model.setPasien(pasienConverter.transferVOToModel(vo.getPasien(), new Pasien()));
			}
		} else if (vo.getTipePasien().equalsIgnoreCase(TipePasienEnum.BARU.getVal())) {
			model.setPasien(null);
			if (CommonUtil.isNotNullOrEmpty(vo.getGolonganDarah())) {
				model.setGolonganDarah(
						golonganDarahConverter.transferVOToModel(vo.getGolonganDarah(), new GolonganDarah()));
			}
			if (CommonUtil.isNotNullOrEmpty(vo.getTitlePasien())) {
				model.setTitlePasien(titlePasienConverter.transferVOToModel(vo.getTitlePasien(), new TitlePasien()));
			}
			model.setNamaPasien(vo.getPasien().getNamaDepan());

			model.setNoBpjs(vo.getNoBpjs());
			model.setNoIdentitas(vo.getNoIdentitas());
			model.setNoAsuransiLain(vo.getNoAsuransiLain());
			model.setTempatLahir(vo.getPasien().getTempatLahir());
			model.setTglLahir(vo.getPasien().getTglLahir());
			model.setTipePasien(vo.getTipePasien());
			model.setNoIdentitas(vo.getNoIdentitas());
			// add by askur 02082016
			model.setNoAditional(vo.getNoAditional());
			model.setPaspor(vo.getPaspor());
			//
			model.setAlamatLengkap(vo.getAlamatLengkap());
			model.setNamaIbu(vo.getPasien().getNamaIbu());
			if (CommonUtil.isNotNullOrEmpty(vo.getPasien().getTglLahir())) {
				model.setTglLahir(vo.getPasien().getTglLahir());
			}

		}

		if (CommonUtil.isNotNullOrEmpty(vo.getDokter())) {
			model.setPegawai(pegawaiConverter.transferVOToModel(vo.getDokter(), new Pegawai()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getPekerjaan())) {
			model.setPekerjaan(pekerjaanConverter.transferVOToModel(vo.getPekerjaan(), new Pekerjaan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getPendidikan())) {
			model.setPendidikan(pendidikanConverter.transferVOToModel(vo.getPendidikan(), new Pendidikan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getStatusPerkawinan())) {
			model.setStatusPerkawinan(
					statusPerkawinanConverter.transferVOToModel(vo.getStatusPerkawinan(), new StatusPerkawinan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getStatusPerkawinan())) {
			model.setStatusPerkawinan(
					statusPerkawinanConverter.transferVOToModel(vo.getStatusPerkawinan(), new StatusPerkawinan()));
		}
		//add by askur 04102016
		if (CommonUtil.isNotNullOrEmpty(vo.getKebangsaan())) {
			model.setKebangsaan(
					kebangsaanConverter.transferVOToModel(vo.getKebangsaan(), new Kebangsaan()));
		}
		if (CommonUtil.isNotNullOrEmpty(vo.getNegara())) {
			model.setNegara(
					negaraConverter.transferVOToModel(vo.getNegara(), new Negara()));
		}
		//
		UUID noReservasi = UUID.randomUUID();
		model.setNamaIbu(vo.getNamaIbu());
		if (vo.getPoliTujuan().getId() == (Integer.parseInt(GetSettingDataFixed("KdRuanganPendaftaran").toString())))
			model.setNoReservasi("-");
		else
			model.setNoReservasi(noReservasi.toString().substring(1, 8));
		AntrianPasienRegistrasi antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model);
		
		// no lama
		//model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi()));
		
		// no antrian baru
		model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi(), model.getJenis()));
		
		
		antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model);
		Map<String, Object> result = new HashMap<String, Object>();
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi)) {
			result.put("noRec", antrianPasienRegistrasi.getNoRec());
			result.put("noReservasi", antrianPasienRegistrasi.getNoReservasi());
			if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getPasienId())) {
				result.put("pasien", antrianPasienRegistrasi.getPasien());
			}
		}
		return result;

	}

	@Override
	public Map<String, Object> confirmRegistrasiPasienOnline(String noReservasi) {
		AntrianPasienRegistrasi model = antrianPasienRegistrasiDao.findByNoReservasi(noReservasi);
		Map<String, Object> result = new HashMap<String, Object>();
		if (model == null) {

			result.put("message", "data tidak ditemukan");
			return result;
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		if (!sdf.format(model.getTglReservasi()).equals(sdf.format(new Date()))) {
			result.put("message", "Silahkan kembali lagi nanti tanggal " + sdf.format(model.getTglReservasi()));
			return result;
		}
		if (model.getIsConfirm() != null && model.getIsConfirm() == true) {
			result.put("message", "Data sudah di konfirmasi sebelumnya");
			return result;
		}
		model.setIsConfirm(true);
		antrianPasienRegistrasiDao.save(model);
		result.put("noReservasi", noReservasi);

		// return confirmRegistrasiPasienBaru(model);
		// } else {
		// return confirmRegistrasiPasienLama(model);
		// }
		return result;

	}

	@Autowired
	private JadwalDokterDao jadwalDokterDao;

	@Transactional(readOnly = false)
	public Map<String, Object> confirmRegistrasiPasienLama(AntrianPasienRegistrasi model) {
		model.setIsConfirm(true);
		Map<String, Object> resultSavePasienDaftar = new HashMap<String, Object>();
		Map<String, Object> resultSaveRegistrasiPelayananPasien = new HashMap<String, Object>();
		Map<String, Object> resultConfirmRegistrasi = new HashMap<String, Object>();
		PasienDaftar pasienDaftar = new PasienDaftar();
		if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
			pasienDaftar.setRuangan(model.getRuangan());
		}
		if (CommonUtil.isNotNullOrEmpty(model.getPasien())) {
			pasienDaftar.setPasien(model.getPasien());

			// pasienDaftar.setPasien(pasienConverter.transferVOToModel(model.getPasien(),
			// new Pasien()));
			List<PasienDaftar> listPasienDaftar = pasienDaftarDao.findByPasienNoCm(model.getPasien().getNoCm());
			if (listPasienDaftar == null) {
				pasienDaftar.setIsKajianAwal(true);
			} else {
				if (listPasienDaftar.size() == 0) {
					pasienDaftar.setIsKajianAwal(true);
				} else {

					PasienDaftar pasienDaftarTemp = listPasienDaftar.get(0);

					long diff = new Date().getTime() - pasienDaftarTemp.getTglRegistrasi().getTime();
					long diffMonth = diff / 1000 / 60 / 60 / 24 / 30;
					pasienDaftar.setIsKajianAwal(diffMonth >= 3);
				}
			}
			if (pasienDaftar.getKasusPenyakit() != null) {
				Integer countKasusPenyakit = pasienDaftarDao.checkStatuspasien(pasienDaftar.getKasusPenyakit().getId());
				if (countKasusPenyakit == 0 || countKasusPenyakit == null)
					pasienDaftar.setStatusKasusPenyakit(true);
				else
					pasienDaftar.setStatusKasusPenyakit(false);
			} else
				pasienDaftar.setStatusKasusPenyakit(true);

		}

		pasienDaftar.setIsOnSiteService((byte) 0);
		pasienDaftar.setIsRegistrasiLengkap((byte) 0);
		pasienDaftar.setTglRegistrasi(new Date());
		KelompokPasien kelompokPasien = kelompokPasienDao.getKelompokPasienUmum().get(0);
		pasienDaftar.setKelompokPasien(kelompokPasien);
		pasienDaftar.setNoRegistrasi(pasienDaftarService.getFormatNumberByMonthYear());

		AntrianPasienDiPeriksa antrianPasienDiPeriksa = new AntrianPasienDiPeriksa();
		if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
			antrianPasienDiPeriksa.setRuangan(model.getRuangan());
		}

		if (CommonUtil.isNotNullOrEmpty(model.getAsalRujukan())) {
			antrianPasienDiPeriksa.setAsalRujukan(model.getAsalRujukan());
		}
		if (CommonUtil.isNotNullOrEmpty(model.getPegawai())) {
			antrianPasienDiPeriksa.setPegawai(model.getPegawai());
		}
		if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
			antrianPasienDiPeriksa.setRuangan(model.getRuangan());
		}
		antrianPasienDiPeriksa.setTglRegistrasi(new Date());
		antrianPasienDiPeriksa.setNoMasuk(StatusAntrianEnum.MENUNGGU.getVal());
		antrianPasienDiPeriksa.setStatusPasien((byte) 1);
		antrianPasienDiPeriksa.setPasienDaftar(pasienDaftar);
		antrianPasienDiPeriksa.setNoAntrian(antrianPasienDiPeriksaService.getFormatNumberByMonthYearRuangan(
				antrianPasienDiPeriksa.getTglRegistrasi(), antrianPasienDiPeriksa.getRuangan().getId()));
		antrianPasienDiPeriksa.setStatusAntrian(StatusAntrianEnum.MENUNGGU.getVal());
		pasienDaftar.getAntrianPasienDiPeriksaSet().add(antrianPasienDiPeriksa);
		if (CommonUtil.isNotNullOrEmpty(model.getPegawai())) {
			antrianPasienDiPeriksa.setPegawai(model.getPegawai());
			if (!CommonUtil.isNotNullOrEmpty(model.getPegawai().getId())) {
				PegawaiVO pegawaiVo = new PegawaiVO();

				// pilih dokter yang otomatis dan per quota
				List<JadwalDokter> jadwalDokters = jadwalDokterDao
						.findJadwalByTanggalRuangan(pasienDaftar.getRuangan().getId(), pasienDaftar.getTglRegistrasi());
				Integer maxQuota = 0;
				for (JadwalDokter jadwalDokter : jadwalDokters) {
					if (jadwalDokter.getQuota() != null && jadwalDokter.getQuota() > maxQuota) {
						maxQuota = jadwalDokter.getQuota();
					}
				}
				Boolean valid = false;
				for (JadwalDokter jadwalDokter : jadwalDokters) {
					if (jadwalDokter.getQuota() != null && jadwalDokter.getQuota() < maxQuota) {
						valid = true;
						jadwalDokter.setQuota(jadwalDokter.getQuota() + 1);
						jadwalDokterDao.save(jadwalDokter);
						pegawaiVo.setId(jadwalDokter.getDokter().getId());
						model.setPegawai(jadwalDokter.getDokter());
						break;
					}
				}
				if (!valid) {
					for (JadwalDokter jadwalDokter : jadwalDokters) {
						if (jadwalDokter.getQuota() == null || jadwalDokter.getQuota() == maxQuota) {
							valid = true;
							if (jadwalDokter.getQuota() == null)
								jadwalDokter.setQuota(0);
							jadwalDokter.setQuota(jadwalDokter.getQuota() + 1);
							jadwalDokterDao.save(jadwalDokter);
							pegawaiVo.setId(jadwalDokter.getDokter().getId());
							model.setPegawai(jadwalDokter.getDokter());
							break;
						}
					}
				}

			}

		} else {
			PegawaiVO pegawaiVo = new PegawaiVO();

			// pilih dokter yang otomatis dan per quota
			List<JadwalDokter> jadwalDokters = jadwalDokterDao
					.findJadwalByTanggalRuangan(pasienDaftar.getRuangan().getId(), pasienDaftar.getTglRegistrasi());
			Integer maxQuota = 0;
			for (JadwalDokter jadwalDokter : jadwalDokters) {
				if (jadwalDokter.getQuota() != null && jadwalDokter.getQuota() > maxQuota) {
					maxQuota = jadwalDokter.getQuota();
				}
			}
			Boolean valid = false;
			for (JadwalDokter jadwalDokter : jadwalDokters) {
				if (jadwalDokter.getQuota() != null && jadwalDokter.getQuota() < maxQuota) {
					valid = true;
					jadwalDokter.setQuota(jadwalDokter.getQuota() + 1);
					jadwalDokterDao.save(jadwalDokter);
					pegawaiVo.setId(jadwalDokter.getDokter().getId());
					model.setPegawai(jadwalDokter.getDokter());
					break;
				}
			}
			if (!valid) {
				for (JadwalDokter jadwalDokter : jadwalDokters) {
					if (jadwalDokter.getQuota() == null || jadwalDokter.getQuota() == maxQuota) {
						valid = true;
						if (jadwalDokter.getQuota() == null)
							jadwalDokter.setQuota(0);
						jadwalDokter.setQuota(jadwalDokter.getQuota() + 1);
						jadwalDokterDao.save(jadwalDokter);
						pegawaiVo.setId(jadwalDokter.getDokter().getId());
						model.setPegawai(jadwalDokter.getDokter());
						break;
					}
				}
			}

		}
		antrianPasienDiPeriksa.setPegawai(model.getPegawai());
		pasienDaftar.setDokterPenanggungJawab(model.getPegawai());

		PasienDaftar passienDaftarResult = pasienDaftarDao.save(pasienDaftar);
		if (CommonUtil.isNotNullOrEmpty(passienDaftarResult)) {
			Object put = resultSavePasienDaftar.put("noRec", pasienDaftar.getNoRec());
			resultSavePasienDaftar.put("noRegistrasi", pasienDaftar.getNoRegistrasi());
			resultSavePasienDaftar.put("noAntrian", antrianPasienDiPeriksa.getNoAntrian());
			resultSavePasienDaftar.put("noRecAntrian", antrianPasienDiPeriksa.getNoRec());
			resultSavePasienDaftar.put("message", "Silahkan menuju polli" + pasienDaftar.getRuangan().getNamaRuangan());
			resultSavePasienDaftar.put("Status", "PasienLama");
			if (CommonUtil.isNotNullOrEmpty(pasienDaftar.getPasienId())) {
				resultSavePasienDaftar.put("noCm", pasienDaftar.getPasien().getNoCm());
			}

			resultSaveRegistrasiPelayananPasien = registrasiPelayananPasienService
					.createRegistrasiPelayananPasien(pasienDaftar.getNoRegistrasi(), null);

		}
		resultConfirmRegistrasi.putAll(resultSaveRegistrasiPelayananPasien);
		resultConfirmRegistrasi.putAll(resultSavePasienDaftar);
		resultConfirmRegistrasi.put("noReservasi", model.getNoReservasi());

		return resultConfirmRegistrasi;
	}

	public Map<String, Object> prosesAntrianPasienRegistasi(String noReservasi) {

		Map<String, Object> savePasienAndPasienDaftar = new HashMap<String, Object>();
		Map<String, Object> savePasienDaftar = new HashMap<String, Object>();
		Map<String, Object> result = new HashMap<String, Object>();

		savePasienAndPasienDaftar = savePasienAndPasienDaftar(noReservasi);

		return savePasienAndPasienDaftar;

	}

	@Override
	public Map<String, Object> savePasienAndPasienDaftar(String noReservasi) {
		Map<String, Object> result = new HashMap<String, Object>();
		AntrianPasienRegistrasi model = antrianPasienRegistrasiDao.findByNoReservasi(noReservasi);
		Pasien pasien = new Pasien();
		if (model.getTipePasien().equalsIgnoreCase(TipePasienEnum.BARU.getVal())) {
			if (CommonUtil.isNotNullOrEmpty(model.getAgama())) {
				pasien.setAgama(model.getAgama());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getGolonganDarah())) {
				pasien.setGolonganDarah(model.getGolonganDarah());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getJenisKelamin())) {
				pasien.setJenisKelamin(model.getJenisKelamin());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getPekerjaan())) {
				pasien.setPekerjaan(model.getPekerjaan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getPendidikan())) {
				pasien.setPendidikan(model.getPendidikan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getStatusPerkawinan())) {
				pasien.setStatusPerkawinan(model.getStatusPerkawinan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getTitlePasien())) {
				pasien.setTitlePasien(model.getTitlePasien());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {
				pasien.setTglLahir(pasien.getTglLahir());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getAlamatLengkap())) {
				Alamat alamat = new Alamat();
				alamat.setAlamatLengkap(model.getAlamatLengkap());
				pasien.getAlamats().add(alamat);
			}
			pasien.setNamaPasien(model.getNamaPasien());
			pasien.setNamaIbu(model.getNamaIbu());
			pasien.setTglDaftar(new Date());
			pasien.setNoIdentitas(model.getNoIdentitas());
		}
		//want to edit by askur 03012017
		pasien.setNoCm(pasienService.generatePasienCM());
		pasien = pasienDao.save(pasien);
		if (CommonUtil.isNotNullOrEmpty(pasien)) {
			result.put("noCm", pasien.getNoCm());
		}

		PasienDaftar pasienDaftar = new PasienDaftar();
		if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
			pasienDaftar.setRuangan(model.getRuangan());
		}
		if (CommonUtil.isNotNullOrEmpty(pasien)) {
			pasienDaftar.setPasien(pasien);
		}
		pasienDaftar.setKelompokPasien(kelompokPasienDao.getKelompokPasienUmum().get(0));
		pasienDaftar.setIsOnSiteService((byte) 1);
		pasienDaftar.setIsRegistrasiLengkap((byte) 1);
		pasienDaftar.setTglRegistrasi(new Date());
		pasienDaftar.setNoRegistrasi(pasienDaftarService.getFormatNumberByMonthYear());

		AntrianPasienDiPeriksa antrianPasienDiPeriksa = new AntrianPasienDiPeriksa();
		if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
			antrianPasienDiPeriksa.setRuangan(model.getRuangan());
		}

		if (CommonUtil.isNotNullOrEmpty(model.getAsalRujukan())) {
			antrianPasienDiPeriksa.setAsalRujukan(model.getAsalRujukan());
		}
		if (CommonUtil.isNotNullOrEmpty(model.getPegawai())) {
			antrianPasienDiPeriksa.setPegawai(model.getPegawai());
		}

		antrianPasienDiPeriksa.setTglRegistrasi(new Date());
		antrianPasienDiPeriksa.setNoMasuk(StatusAntrianEnum.MENUNGGU.getVal());
		antrianPasienDiPeriksa.setStatusPasien((byte) 1);
		antrianPasienDiPeriksa.setPasienDaftar(pasienDaftar);
		antrianPasienDiPeriksa.setNoAntrian(antrianPasienDiPeriksaService.getFormatNumberByMonthYear());
		antrianPasienDiPeriksa.setStatusAntrian(StatusAntrianEnum.MENUNGGU.getVal());
		pasienDaftar.getAntrianPasienDiPeriksaSet().add(antrianPasienDiPeriksa);

		PasienDaftar passienDaftarResult = pasienDaftarDao.save(pasienDaftar);

		if (CommonUtil.isNotNullOrEmpty(passienDaftarResult)) {
			result.put("noRegistrasi", pasienDaftar.getNoRegistrasi());
			result.put("noAntrian", antrianPasienDiPeriksa.getNoAntrian());
			if (CommonUtil.isNotNullOrEmpty(pasienDaftar.getPasien())) {
				result.put("noCm", pasienDaftar.getPasien().getNoCm());
			}
		}
		return result;
	}

	public Map<String, Object> savePasienDaftar(String noReservasi) {
		Map<String, Object> result = new HashMap<String, Object>();
		AntrianPasienRegistrasi model = antrianPasienRegistrasiDao.findByNoReservasi(noReservasi);
		Pasien pasien = new Pasien();
		if (model.getTipePasien().equalsIgnoreCase(TipePasienEnum.BARU.getVal())) {
			if (CommonUtil.isNotNullOrEmpty(model.getAgama())) {
				pasien.setAgama(model.getAgama());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getGolonganDarah())) {
				pasien.setGolonganDarah(model.getGolonganDarah());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getJenisKelamin())) {
				pasien.setJenisKelamin(model.getJenisKelamin());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getPekerjaan())) {
				pasien.setPekerjaan(model.getPekerjaan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getPendidikan())) {
				pasien.setPendidikan(model.getPendidikan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getStatusPerkawinan())) {
				pasien.setStatusPerkawinan(model.getStatusPerkawinan());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getTitlePasien())) {
				pasien.setTitlePasien(model.getTitlePasien());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {
				pasien.setTglLahir(pasien.getTglLahir());
			}
			if (CommonUtil.isNotNullOrEmpty(model.getAlamatLengkap())) {
				Alamat alamat = new Alamat();
				alamat.setAlamatLengkap(model.getAlamatLengkap());
				pasien.getAlamats().add(alamat);
			}
		}
		pasien = pasienDao.save(pasien);
		if (CommonUtil.isNotNullOrEmpty(pasien)) {
			result.put("noCm", pasien.getNoCm());
		}
		return result;
	}

	public Map<String, Object> confirmRegistrasiPasienBaru(AntrianPasienRegistrasi antrianPasienRegistrasi) {
		antrianPasienRegistrasi.setIsConfirm(true);
		AntrianPasienRegistrasi model = new AntrianPasienRegistrasi();
		model.setNoAntrian(antrianPasienDiPeriksaService.getFormatNumberByMonthYear());
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getAsalRujukan())) {
			model.setAsalRujukan(antrianPasienRegistrasi.getAsalRujukan());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getRuangan())) {
			model.setRuangan(antrianPasienRegistrasi.getRuangan());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getTglReservasi())) {
			model.setTglReservasi(antrianPasienRegistrasi.getTglReservasi());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getAgama())) {
			model.setAgama(antrianPasienRegistrasi.getAgama());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getJenisKelamin())) {
			model.setJenisKelamin(antrianPasienRegistrasi.getJenisKelamin());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getType())) {
			model.setType(antrianPasienRegistrasi.getType());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getPegawai())) {
			model.setPegawai(antrianPasienRegistrasi.getPegawai());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getPekerjaan())) {
			model.setPekerjaan(antrianPasienRegistrasi.getPekerjaan());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getPendidikan())) {
			model.setPendidikan(antrianPasienRegistrasi.getPendidikan());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getStatusPerkawinan())) {
			model.setStatusPerkawinan(antrianPasienRegistrasi.getStatusPerkawinan());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getTipePasien())) {
			model.setTipePasien(antrianPasienRegistrasi.getTipePasien());
		}

		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getGolonganDarah())) {
			model.setGolonganDarah(antrianPasienRegistrasi.getGolonganDarah());
		}
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getTitlePasien())) {
			model.setTitlePasien(antrianPasienRegistrasi.getTitlePasien());
		}
		model.setNamaPasien(antrianPasienRegistrasi.getNamaPasien());
		model.setAlamatLengkap(antrianPasienRegistrasi.getAlamatLengkap());
		model.setNamaIbu(antrianPasienRegistrasi.getNamaIbu());
		if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi.getTglLahir())) {
			model.setTglLahir(antrianPasienRegistrasi.getTglLahir());
		}
		try {
			model = antrianPasienRegistrasiConverter.Clone(antrianPasienRegistrasi, antrianPasienRegistrasi,
					new String[] { "id" });
		} catch (IllegalArgumentException | IllegalAccessException e) {

		}
		UUID noReservasi = UUID.randomUUID();
		model.setNoReservasi("-");
		Map<String, Object> result = new HashMap<String, Object>();
		model.setNoAntrian(antrianPasienRegistrasiService.getFormatNumberByMonthYear());
		model.setStatusPanggil("0");
		AntrianPasienRegistrasi resultModel = antrianPasienRegistrasiDao.save(model);
		if (CommonUtil.isNotNullOrEmpty(resultModel)) {
			result.put("noRec", antrianPasienRegistrasi.getNoRec());
			result.put("noRecAntrian", resultModel.getNoRec());
			result.put("noAntrian", resultModel.getNoAntrian());
			result.put("noRegistrasi", "");
			result.put("message", "Silahkan menuju loket pendaftaran");
			result.put("noCm", "");
			result.put("Status", "PasienBaru");
		}
		return result;
	}

	@Override
	public Map<String, Object> findAllAntrianPaging(Integer page, Integer limit, String sort, String dir,
			Integer ruanganId, String dateStart, String dateEnd, String namaPasien, String noReservasi) {
		Date startDate = null;
		Date endDate = null;
		
		if (CommonUtil.isNotNullOrEmpty(dateStart)) {
			startDate = DateUtil.toDate(dateStart);
		}
		if (CommonUtil.isNotNullOrEmpty(dateEnd)) {
			endDate = DateUtil.toDate(dateEnd);
		}

		int totalRow = antrianPasienRegistrasiDaoCustom.findAllAntrianPagingCount(startDate, endDate, ruanganId,
				namaPasien);
		int totalPages = 0;

		int pageRequested = page;

		if (totalRow > 0) {
			totalPages = (int) Math.ceil((double) totalRow / (double) limit);
		} else {
			totalPages = 0;
		}

		if (pageRequested > totalPages)
			pageRequested = totalPages;
		int rowStart = pageRequested * limit - limit;
		if (rowStart < 0) {
			rowStart = 0;
		}
		
		int rowEnd = limit;
		List<AntrianPasienRegistrasi> antrianPasienRegistrasiList = antrianPasienRegistrasiDaoCustom
				.findAllAntrianPagingList(rowStart, rowEnd, startDate, endDate, ruanganId, namaPasien, noReservasi);

		
		List<GridAntrianPasienRegistrasiVO> gridAntrianPasienDiPeriksaVoList = new ArrayList<GridAntrianPasienRegistrasiVO>();
		
		for (AntrianPasienRegistrasi model : antrianPasienRegistrasiList) {
			GridAntrianPasienRegistrasiVO gridAntrianPasienRegistrasiVO = new GridAntrianPasienRegistrasiVO();
			gridAntrianPasienRegistrasiVO.setNoAntrian(model.getNoAntrian());
			if(CommonUtil.isNotNullOrEmpty(model.getRuangan()))
			{
			gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(),
					new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" }));
			}
			else
			{
				RuanganVO ruang = new RuanganVO();
				ruang.setNamaRuangan("");
				ruang.setId(null);
				ruang.setKdRuangan(null);
				gridAntrianPasienRegistrasiVO.setRuangan(ruang);
			}
			
			if (model.getPegawai() != null)
				
				gridAntrianPasienRegistrasiVO.setDokter(pegawaiConverter.transferModelToVOCustom(model.getPegawai(),
						new PegawaiVO(), new String[] { "id", "namaLengkap", "noTlp" }));
			
			else
				
				gridAntrianPasienRegistrasiVO.setDokter(new PegawaiVO());
			
			if (model.getJenisPasien() != null)
				
				gridAntrianPasienRegistrasiVO.setKelompokPasien(
						kelompokPasienConverter.transferModelToVO(model.getJenisPasien(), new KelompokPasienVO()));
			
			if (model.getIsConfirm() != null && model.getIsConfirm() == true)
				gridAntrianPasienRegistrasiVO.setStatus("Confirm");
			else {
				if (model.getNoReservasi() == "-") {

				} else if (model.getNoReservasi().substring(0, 2).startsWith("38")) {
					gridAntrianPasienRegistrasiVO.setStatus("Pasien Perjanjian");
				} else {
					gridAntrianPasienRegistrasiVO.setStatus("Reservasi");
				}
			
			}
			gridAntrianPasienRegistrasiVO.setNoReservasi(model.getNoReservasi());
			gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec());
			gridAntrianPasienRegistrasiVO.setTglReservasi(model.getTglReservasi());
			if (model.getNamaPasien() == null) {
				if (model.getPasien() == null) {
					gridAntrianPasienRegistrasiVO.setNamaPasien("");
					gridAntrianPasienRegistrasiVO.setNoCm("");
				} else {
					gridAntrianPasienRegistrasiVO.setNamaPasien(model.getPasien().getNamaPasien());
					gridAntrianPasienRegistrasiVO.setNoCm(model.getPasien().getNoCm());
				}

			} else
				gridAntrianPasienRegistrasiVO.setNamaPasien(model.getNamaPasien());
			if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {
				Age age = AgeCalculator.calculateAge(model.getTglLahir());
				if (CommonUtil.isNotNullOrEmpty(age)) {
					gridAntrianPasienRegistrasiVO.setUmur(age.toString());
				}
			}

			gridAntrianPasienDiPeriksaVoList.add(gridAntrianPasienRegistrasiVO);

		} 

		return constructMapReturn(gridAntrianPasienDiPeriksaVoList, totalRow, totalPages);
		
	}

	@Override
	public Map<String, Object> findAllAntrianBaruPagingList(Integer page, Integer limit, String sort, String dir,
			Integer ruanganId, String dateStart, String dateEnd, String namaPasien) {
		Date startDate = null;
		Date endDate = null;
		if (CommonUtil.isNotNullOrEmpty(dateStart)) {
			startDate = DateUtil.toDate(dateStart);
		}
		if (CommonUtil.isNotNullOrEmpty(dateEnd)) {
			endDate = DateUtil.toDate(dateEnd);
		}

		int totalRow = 0;
		int totalPages = 0;

		int pageRequested = page;

		if (totalRow > 0) {
			totalPages = (int) Math.ceil((double) totalRow / (double) limit);
		} else {
			totalPages = 0;
		}

		if (pageRequested > totalPages)
			pageRequested = totalPages;
		int rowStart = pageRequested * limit - limit;
		if (rowStart < 0) {
			rowStart = 0;
		}
		int rowEnd = limit;
		List<AntrianPasienRegistrasi> antrianPasienRegistrasiList = antrianPasienRegistrasiDaoCustom
				.findAllAntrianBaruPagingList(rowStart, rowEnd, startDate, endDate, ruanganId, namaPasien);

		List<GridAntrianPasienRegistrasiVO> gridAntrianPasienDiPeriksaVoList = new ArrayList<GridAntrianPasienRegistrasiVO>();
		for (AntrianPasienRegistrasi model : antrianPasienRegistrasiList) {
			GridAntrianPasienRegistrasiVO gridAntrianPasienRegistrasiVO = new GridAntrianPasienRegistrasiVO();
			gridAntrianPasienRegistrasiVO.setNoAntrian(model.getNoAntrian());

			gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(),
					new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" }));
			if (model.getIsConfirm() != null && model.getIsConfirm() == true)
				gridAntrianPasienRegistrasiVO.setStatus("Confirm");
			gridAntrianPasienRegistrasiVO.setNoReservasi(model.getNoReservasi());
			if (model.getNamaPasien() == null) {
				gridAntrianPasienRegistrasiVO.setNamaPasien(model.getPasien().getNamaPasien());
				gridAntrianPasienRegistrasiVO.setNoCm(model.getPasien().getNoCm());

			} else
				gridAntrianPasienRegistrasiVO.setNamaPasien(model.getNamaPasien());
			gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec());
			
			if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {;
				Age age = AgeCalculator.calculateAge(model.getTglLahir());
				if (CommonUtil.isNotNullOrEmpty(age)) {
					gridAntrianPasienRegistrasiVO.setUmur(age.toString());
				}
			}

			gridAntrianPasienDiPeriksaVoList.add(gridAntrianPasienRegistrasiVO);

		}

		return constructMapReturn(gridAntrianPasienDiPeriksaVoList, totalRow, totalPages);
	}

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

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

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

	@Override
	public AntrianPasienRegistrasiVO findById(Integer key) throws JpaSystemException {
		return null;
	}

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

	@Override
	public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
			String sort, String dir) {
		return null;
	}

	@Override
	public Map<String, Object> saveRegistrasiPasienTouchScreen(AntrianPasienRegistrasiVO vo) {
		RuanganVO ruanganVo = new RuanganVO();
		ruanganVo.setId(Integer.parseInt(GetSettingDataFixed("KdRuanganPendaftaran").toString()));
		vo.setPoliTujuan(ruanganVo);
		return saveRegistrasiPasienOnline(vo);
	}

	@Override
	public Map<String,Object> getPasienByNoRec(String id) {
		BaseConverterImpl<AntrianPasienRegistrasiVO, AntrianPasienRegistrasi> converter = new BaseConverterImpl<>();
		AntrianPasienRegistrasiVO vo = new AntrianPasienRegistrasiVO();
		AntrianPasienRegistrasi data = antrianPasienRegistrasiDaoCustom.findByNoRec(id);	
		
		try {
			return data.ToMap();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	@Transactional
	public Map<String, Object> getPasienDaftarByNoRec(String id) {
		BaseConverterImpl<AntrianPasienRegistrasiVO, AntrianPasienRegistrasi> converter = new BaseConverterImpl<>();
		PasienDaftarVO vo = new PasienDaftarVO();
		PasienDaftar data = pasienDaftarDao.findByNoRec(id);
		if (data == null) {
			AntrianPasienDiPeriksa antrianPasienDiPeriksa = antrianPasienDiPeriksaDao.findOne(id);
			if(antrianPasienDiPeriksa==null)
				data = pasienDaftarDao.findByNoRec(id);
			else
			data = antrianPasienDiPeriksa.getPasienDaftar();
		}
		Gson gson = new Gson();
		String json;
		try {
			return data.ToMap();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}

		return null;
	}

	@Override
	public Map<String, Object> confirmPendaftaran(String noReservasi) {
		AntrianPasienRegistrasi model = antrianPasienRegistrasiDao.findByNoReservasi(noReservasi);
		Map<String, Object> result = new HashMap<String, Object>();
		if (model == null) {

			result.put("message", "data tidak ditemukan");
			return result;
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		if (!sdf.format(model.getTglReservasi()).equals(sdf.format(new Date()))) {
			result.put("message", "Silahkan kembali lagi nanti tanggal " + sdf.format(model.getTglReservasi()));
			return result;
		}
		if (model.getIsConfirm() != null && model.getIsConfirm() == true) {
			result.put("message", "Data sudah di konfirmasi sebelumnya");
			return result;
		}
		model.setIsConfirm(true);
		antrianPasienRegistrasiDao.save(model);
		if (model.getTipePasien().equalsIgnoreCase(TipePasienEnum.BARU.getVal())) {
			return confirmRegistrasiPasienBaru(model);
		} else {
			return confirmRegistrasiPasienLama(model);
		}

	}

}
