Update MigrasiPasienServiceImpl.java

Perbaikan validasi running scheduler awal belum ada data
This commit is contained in:
Salman Manoe 2024-07-30 15:10:03 +07:00
parent 9cd36a1043
commit 16fa8ecdc9

View File

@ -71,139 +71,148 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
@Override
public List<PasienDto> extractAndTransform() {
List<PasienDto> dtoList = new ArrayList<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
List<StatusMigrasi> statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN));
List<Pasien> listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList);
List<Integer> listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList());
List<String> listNoCmPasien = listPasien.stream().map(Pasien::getNoCm).collect(Collectors.toList());
List<Map<String, Object>> listCaraMeninggal = pasienDaftarDao.findPenyebabKematianByPasienIdIn(listIdPasien);
List<Alamat> listAlamat = alamatDao.findByPasienIdIn(listIdPasien);
List<DokumenVedika> listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien);
List<Pasien> listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien);
List<AsuransiPasien> listAsuransi = asuransiPasienDao.findByPasienIdIn(listIdPasien);
List<PasienDto> dtoList = new ArrayList<>();
listPasien.forEach(pasien -> {
PasienDto.PasienDtoBuilder dtoBuilder = PasienDto.builder();
dtoBuilder.status("AKTIF");
dtoBuilder.noRekamMedis(pasien.getNoCm());
dtoBuilder.namaLengkap(pasien.getNamaPasien());
dtoBuilder.namaPanggilan(CommonUtil.isNotNullOrEmpty(pasien.getNamaDepan()) ? pasien.getNamaDepan()
: pasien.getNamaPasien().split(" ")[0]);
dtoBuilder.tempatLahir(pasien.getTempatLahir());
dtoBuilder.caraRegistrasi("INTERNAL");
if (CommonUtil.isNotNullOrEmpty(pasien.getTglLahir()))
dtoBuilder.tanggalLahir(dateFormat.format(pasien.getTglLahir()));
dtoBuilder.surel(pasien.getEmail());
if (CommonUtil.isNotNullOrEmpty(pasien.getTitlePasienId()))
dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build());
dtoBuilder.identitas(new HashSet<>(Collections.singletonList(
IdentitasDto.builder().jenisIdentitas(JenisIdentitasDto.builder().id(KTP.id()).build())
.noIdentitas(pasien.getNoIdentitas()).build())));
if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId()))
dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getGolonganDarahId()) && pasien.getGolonganDarahId() != 0)
dtoBuilder
.golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build());
listCaraMeninggal.stream().filter(c -> pasien.getId().equals(c.get("idPasien"))).findFirst()
.ifPresent(c -> {
if (CommonUtil.isNotNullOrEmpty(c.get("idPenyebabKematian"))) {
if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build());
if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build());
if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build());
if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build());
if (Arrays.asList(Master.CaraMeninggal.LAHIR)
.contains(Integer.parseInt(c.get("idPenyebabKematian").toString())))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build());
}
});
if (CommonUtil.isNotNullOrEmpty(pasien.getKebangsaanId()))
dtoBuilder
.kewarganegaraan(KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getNegaraId()))
dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getAgamaId()))
dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).build());
{
if (Master.Pendidikan.TIDAK_SEKOLAH.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(TIDAK_SEKOLAH.id()).build());
if (Master.Pendidikan.SD.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SD.id()).build());
if (Master.Pendidikan.SLTP_SEDERAJAT.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SLTP_SEDERAJAT.id()).build());
if (Master.Pendidikan.SLTA_SEDERAJAT.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SLTA_SEDERAJAT.id()).build());
if (Arrays.asList(Master.Pendidikan.D1_SAMPAI_D3_SEDERAJAT).contains(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(D1_SAMPAI_D3_SEDERAJAT.id()).build());
if (Master.Pendidikan.D4.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(D4.id()).build());
if (Master.Pendidikan.S1.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S1.id()).build());
if (Master.Pendidikan.S2.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S2.id()).build());
if (Master.Pendidikan.S3.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S3.id()).build());
}
{
List<Alamat> alamatPasien = listAlamat.stream()
.filter(alamat -> pasien.getId().equals(alamat.getPasienId())).collect(Collectors.toList());
dtoBuilder.alamat(setAlamat(alamatPasien));
}
{
Set<GawaiDto> gawaiDto = new HashSet<>();
if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoTelepon())))
.jenisGawai(JenisGawaiDto.builder().id(1L).build()).build());
if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoHp())))
.jenisGawai(JenisGawaiDto.builder().id(2L).build()).build());
dtoBuilder.gawai(gawaiDto);
}
{
if (Master.Pekerjaan.TIDAK_BEKERJA.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(TIDAK_BEKERJA.id()).build());
if (Master.Pekerjaan.PNS.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(PNS.id()).build());
if (Master.Pekerjaan.TNI_ATAU_POLRI.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(TNI_ATAU_POLRI.id()).build());
if (Master.Pekerjaan.BUMN.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(BUMN.id()).build());
if (Arrays.asList(Master.Pekerjaan.PEGAWAI_SWASTA_ATAU_WIRAUSAHA).contains(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(PEGAWAI_SWASTA_ATAU_WIRAUSAHA.id()).build());
}
{
if (Master.StatusPerkawinan.KAWIN.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(KAWIN.id()).build());
} else if (Master.StatusPerkawinan.CERAI_HIDUP.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(CERAI_HIDUP.id()).build());
} else if (Master.StatusPerkawinan.CERAI_MATI.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(CERAI_MATI.id()).build());
} else {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(BELUM_KAWIN.id()).build());
if (CommonUtil.isNotNullOrEmpty(listPasien)) {
List<Integer> listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList());
List<String> listNoCmPasien = listPasien.stream().map(Pasien::getNoCm).collect(Collectors.toList());
List<Map<String, Object>> listCaraMeninggal = pasienDaftarDao
.findPenyebabKematianByPasienIdIn(listIdPasien);
List<Alamat> listAlamat = alamatDao.findByPasienIdIn(listIdPasien);
List<DokumenVedika> listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien);
List<Pasien> listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien);
List<AsuransiPasien> listAsuransi = asuransiPasienDao.findByPasienIdIn(listIdPasien);
listPasien.forEach(pasien -> {
PasienDto.PasienDtoBuilder dtoBuilder = PasienDto.builder();
dtoBuilder.status("AKTIF");
dtoBuilder.noRekamMedis(pasien.getNoCm());
dtoBuilder.namaLengkap(pasien.getNamaPasien());
dtoBuilder.namaPanggilan(CommonUtil.isNotNullOrEmpty(pasien.getNamaDepan()) ? pasien.getNamaDepan()
: pasien.getNamaPasien().split(" ")[0]);
dtoBuilder.tempatLahir(pasien.getTempatLahir());
dtoBuilder.caraRegistrasi("INTERNAL");
if (CommonUtil.isNotNullOrEmpty(pasien.getTglLahir()))
dtoBuilder.tanggalLahir(dateFormat.format(pasien.getTglLahir()));
dtoBuilder.surel(pasien.getEmail());
if (CommonUtil.isNotNullOrEmpty(pasien.getTitlePasienId()))
dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build());
dtoBuilder.identitas(new HashSet<>(Collections.singletonList(
IdentitasDto.builder().jenisIdentitas(JenisIdentitasDto.builder().id(KTP.id()).build())
.noIdentitas(pasien.getNoIdentitas()).build())));
if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId()))
dtoBuilder
.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getGolonganDarahId()) && pasien.getGolonganDarahId() != 0)
dtoBuilder.golonganDarah(
GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build());
listCaraMeninggal.stream().filter(c -> pasien.getId().equals(c.get("idPasien"))).findFirst()
.ifPresent(c -> {
if (CommonUtil.isNotNullOrEmpty(c.get("idPenyebabKematian"))) {
if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(
CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build());
if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder
.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build());
if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build());
if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build());
if (Arrays.asList(Master.CaraMeninggal.LAHIR)
.contains(Integer.parseInt(c.get("idPenyebabKematian").toString())))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build());
}
});
if (CommonUtil.isNotNullOrEmpty(pasien.getKebangsaanId()))
dtoBuilder.kewarganegaraan(
KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getNegaraId()))
dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getAgamaId()))
dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).build());
{
if (Master.Pendidikan.TIDAK_SEKOLAH.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(TIDAK_SEKOLAH.id()).build());
if (Master.Pendidikan.SD.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SD.id()).build());
if (Master.Pendidikan.SLTP_SEDERAJAT.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SLTP_SEDERAJAT.id()).build());
if (Master.Pendidikan.SLTA_SEDERAJAT.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(SLTA_SEDERAJAT.id()).build());
if (Arrays.asList(Master.Pendidikan.D1_SAMPAI_D3_SEDERAJAT).contains(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(D1_SAMPAI_D3_SEDERAJAT.id()).build());
if (Master.Pendidikan.D4.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(D4.id()).build());
if (Master.Pendidikan.S1.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S1.id()).build());
if (Master.Pendidikan.S2.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S2.id()).build());
if (Master.Pendidikan.S3.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(S3.id()).build());
}
}
{
dtoBuilder.berkas(setBerkas(listDokumenVedika));
}
{
List<Pasien> pasienAnak = listPasienAnak.stream()
.filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay())).collect(Collectors.toList());
dtoBuilder.keluarga(setAnak(pasienAnak));
}
{
List<AsuransiPasien> asuransiPasien = listAsuransi.stream()
.filter(asuransi -> pasien.getId().equals(asuransi.getNoCmId())).collect(Collectors.toList());
dtoBuilder.jaminan(setJaminan(asuransiPasien));
}
dtoList.add(dtoBuilder.build());
});
{
List<Alamat> alamatPasien = listAlamat.stream()
.filter(alamat -> pasien.getId().equals(alamat.getPasienId())).collect(Collectors.toList());
dtoBuilder.alamat(setAlamat(alamatPasien));
}
{
Set<GawaiDto> gawaiDto = new HashSet<>();
if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0')
gawaiDto.add(
GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoTelepon())))
.jenisGawai(JenisGawaiDto.builder().id(1L).build()).build());
if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoHp())))
.jenisGawai(JenisGawaiDto.builder().id(2L).build()).build());
dtoBuilder.gawai(gawaiDto);
}
{
if (Master.Pekerjaan.TIDAK_BEKERJA.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(TIDAK_BEKERJA.id()).build());
if (Master.Pekerjaan.PNS.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(PNS.id()).build());
if (Master.Pekerjaan.TNI_ATAU_POLRI.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(TNI_ATAU_POLRI.id()).build());
if (Master.Pekerjaan.BUMN.equals(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(BUMN.id()).build());
if (Arrays.asList(Master.Pekerjaan.PEGAWAI_SWASTA_ATAU_WIRAUSAHA).contains(pasien.getPekerjaanId()))
dtoBuilder.pekerjaan(PekerjaanDto.builder().id(PEGAWAI_SWASTA_ATAU_WIRAUSAHA.id()).build());
}
{
if (Master.StatusPerkawinan.KAWIN.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(KAWIN.id()).build());
} else if (Master.StatusPerkawinan.CERAI_HIDUP.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(CERAI_HIDUP.id()).build());
} else if (Master.StatusPerkawinan.CERAI_MATI.equals(pasien.getStatusPerkawinanId())) {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(CERAI_MATI.id()).build());
} else {
dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(BELUM_KAWIN.id()).build());
}
}
{
dtoBuilder.berkas(setBerkas(listDokumenVedika));
}
{
List<Pasien> pasienAnak = listPasienAnak.stream()
.filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay()))
.collect(Collectors.toList());
dtoBuilder.keluarga(setAnak(pasienAnak));
}
{
List<AsuransiPasien> asuransiPasien = listAsuransi.stream()
.filter(asuransi -> pasien.getId().equals(asuransi.getNoCmId()))
.collect(Collectors.toList());
dtoBuilder.jaminan(setJaminan(asuransiPasien));
}
dtoList.add(dtoBuilder.build());
});
}
return dtoList;
}