diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java index 52549dd0..aae79884 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java @@ -116,10 +116,14 @@ public interface PasienDao extends JpaRepository { + "or length(ps.noidentitas) <> 16) " + "order by ps.statusenabled, ps.tgldaftar desc", nativeQuery = true) List findByValidBpjs(); + @Query("select anak from Pasien ibu, Pasien anak " + "where ibu.noCm = anak.reportDisplay " + + "and ibu.statusEnabled is true and anak.statusEnabled is true " + "and ibu.noCm in (:listNoCmIbu)") + List findAnakByNoCmOfIbu(@Param("listNoCmIbu") List listNoCmIbu); + @Query("select new Map(ibu.id as idIbu,anak.id as idAnak) " + "from Pasien ibu, Pasien anak " + "where ibu.noCm = anak.reportDisplay " + "and ibu.statusEnabled is true and anak.statusEnabled is true " + "and ibu.id in (:listIdIbu)") - List> findIdByNoCmOfIbu(@Param("listIdIbu") Set listIdIbu); + List> findIdByIdOfIbu(@Param("listIdIbu") Set listIdIbu); @Query(value = "select ps.* from pasien_m ps " + "where ps.statusenabled is true " + "and ps.nocm ~ '^[0-9\\.]+$' " + "and length(ps.nocm) = 8 " + "and cast(ps.nocm as integer) < 10000000 " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java index 60ebe063..ed71643b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java @@ -16,6 +16,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.jasamedika.medifirst2000.etl.pasien.constant.CaraMeninggal.*; +import static com.jasamedika.medifirst2000.etl.pasien.constant.HubunganKeluarga.ANAK; import static com.jasamedika.medifirst2000.etl.pasien.constant.JenisAlamat.DOMISILI; import static com.jasamedika.medifirst2000.etl.pasien.constant.JenisAlamat.IDENTITAS; import static com.jasamedika.medifirst2000.etl.pasien.constant.JenisIdentitas.KTP; @@ -77,7 +78,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { List> listCaraMeninggal = pasienDaftarDao.findPenyebabKematianByPasienIdIn(listIdPasien); List listAlamat = alamatDao.findByPasienIdIn(listIdPasien); List listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien); - List> listAnak = pasienDao.findIdByNoCmOfIbu(new HashSet<>(listIdPasien)); + List listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien); List listAsuransi = asuransiPasienDao.findByPasienIdIn(listIdPasien); List dtoList = new ArrayList<>(); listPasien.forEach(pasien -> { @@ -174,9 +175,9 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.berkas(setBerkas(listDokumenVedika)); } { - List> anakPasien = listAnak.stream() - .filter(anak -> pasien.getId().equals(anak.get("idIbu"))).collect(Collectors.toList()); - dtoBuilder.keluarga(setAnak(anakPasien)); + List pasienAnak = listPasienAnak.stream() + .filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay())).collect(Collectors.toList()); + dtoBuilder.keluarga(setAnak(pasienAnak)); } { List asuransiPasien = listAsuransi.stream() @@ -198,7 +199,6 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { if (alamat.getRtrw().split(" ")[2].equals("RW")) dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3])); dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos())); - dtoList.add(dtoBuilder.build()); { if (Master.JenisAlamat.IDENTITAS.equals(alamat.getJenisAlamatId())) dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build()); @@ -208,6 +208,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.kelurahanDesa( KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build()); dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build()); + dtoList.add(dtoBuilder.build()); }); return dtoList; } @@ -219,17 +220,34 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.judulBerkas(dokumenVedika.getNamaFile()); dtoBuilder.lokasiBerkas(dokumenVedika.getUrl()); dtoBuilder.jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build()); + dtoList.add(dtoBuilder.build()); }); return dtoList; } - private Set setAnak(List> listAnakPasien) { - // TODO: Set ekstraksi dan transformasi anak pasien - return new HashSet<>(); + private Set setAnak(List listPasienAnak) { + Set dtoList = new HashSet<>(); + listPasienAnak.forEach(anak -> { + KeluargaDto.KeluargaDtoBuilder dtoBuilder = KeluargaDto.builder(); + dtoBuilder.namaLengkap(anak.getNamaPasien()); + dtoBuilder.namaPanggilan(anak.getNamaDepan()); + dtoBuilder.surel(anak.getEmail()); + if (NumberUtils.isParsable(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0') + dtoBuilder.noGawai(Integer.parseInt("62" + anak.getNoHp())); + dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build()); + dtoList.add(dtoBuilder.build()); + }); + return dtoList; } private Set setJaminan(List listAsuransiPasien) { - // TODO: Set ekstraksi dan transformasi asuransi pasien + Set dtoList = new HashSet<>(); + listAsuransiPasien.forEach(asuransi -> { + JaminanDto.JaminanDtoBuilder dtoBuilder = JaminanDto.builder(); + dtoBuilder.nomorKartu(asuransi.getNoAsuransi()); + dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()) + .surel(asuransi.getRekanan().getEmail()).build()); + }); return new HashSet<>(); } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 1405504a..b14e3664 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -1636,7 +1636,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .findPasienPaketDiRanapByDokter(drKsmObgyn, allProdukEntriId); Set setIdIbu = ibuPaketDiRanapByDokter.stream() .map(pasien -> Integer.parseInt(pasien.get("pasienId").toString())).collect(Collectors.toSet()); - List> ibuAnak = pasienDao.findIdByNoCmOfIbu(setIdIbu); + List> ibuAnak = pasienDao.findIdByIdOfIbu(setIdIbu); listData.forEach(d -> { List listIdAnak = ibuAnak.stream().filter(bn -> Integer .parseInt(d.get("pasienId").toString()) == Integer.parseInt(bn.get("idIbu").toString()) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/KeluargaDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/KeluargaDto.java index a2ab6d00..3e754e9b 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/KeluargaDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/KeluargaDto.java @@ -14,14 +14,12 @@ import java.util.UUID; @AllArgsConstructor @NoArgsConstructor public class KeluargaDto { - private UUID id; - private HubunganKeluargaDto hubunganKeluarga; - private String gelarDepan; - private String namaLengkap; - private String namaPanggilan; - private String gelarBelakang; - private String surel; - private String kodeNegaraGawai; - private Integer noGawai; - private PasienDto pasien; + private UUID id; + private HubunganKeluargaDto hubunganKeluarga; + private String gelarDepan; + private String namaLengkap; + private String namaPanggilan; + private String gelarBelakang; + private String surel; + private Integer noGawai; }