Update service migrasi pasien

Pembuatan subrutin ekstraksi dan transformasi data anak dari pasien
This commit is contained in:
Salman Manoe 2023-11-22 11:05:05 +07:00
parent 0385cc885b
commit 974c482c71
4 changed files with 41 additions and 21 deletions

View File

@ -116,10 +116,14 @@ public interface PasienDao extends JpaRepository<Pasien, Integer> {
+ "or length(ps.noidentitas) <> 16) " + "order by ps.statusenabled, ps.tgldaftar desc", nativeQuery = true)
List<Pasien> 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<Pasien> findAnakByNoCmOfIbu(@Param("listNoCmIbu") List<String> 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<Map<String, Object>> findIdByNoCmOfIbu(@Param("listIdIbu") Set<Integer> listIdIbu);
List<Map<String, Object>> findIdByIdOfIbu(@Param("listIdIbu") Set<Integer> 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 "

View File

@ -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<Map<String, Object>> listCaraMeninggal = pasienDaftarDao.findPenyebabKematianByPasienIdIn(listIdPasien);
List<Alamat> listAlamat = alamatDao.findByPasienIdIn(listIdPasien);
List<DokumenVedika> listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien);
List<Map<String, Object>> listAnak = pasienDao.findIdByNoCmOfIbu(new HashSet<>(listIdPasien));
List<Pasien> listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien);
List<AsuransiPasien> listAsuransi = asuransiPasienDao.findByPasienIdIn(listIdPasien);
List<PasienDto> dtoList = new ArrayList<>();
listPasien.forEach(pasien -> {
@ -174,9 +175,9 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
dtoBuilder.berkas(setBerkas(listDokumenVedika));
}
{
List<Map<String, Object>> anakPasien = listAnak.stream()
.filter(anak -> pasien.getId().equals(anak.get("idIbu"))).collect(Collectors.toList());
dtoBuilder.keluarga(setAnak(anakPasien));
List<Pasien> pasienAnak = listPasienAnak.stream()
.filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay())).collect(Collectors.toList());
dtoBuilder.keluarga(setAnak(pasienAnak));
}
{
List<AsuransiPasien> 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<KeluargaDto> setAnak(List<Map<String, Object>> listAnakPasien) {
// TODO: Set ekstraksi dan transformasi anak pasien
return new HashSet<>();
private Set<KeluargaDto> setAnak(List<Pasien> listPasienAnak) {
Set<KeluargaDto> 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<JaminanDto> setJaminan(List<AsuransiPasien> listAsuransiPasien) {
// TODO: Set ekstraksi dan transformasi asuransi pasien
Set<JaminanDto> 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<>();
}
}

View File

@ -1636,7 +1636,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.findPasienPaketDiRanapByDokter(drKsmObgyn, allProdukEntriId);
Set<Integer> setIdIbu = ibuPaketDiRanapByDokter.stream()
.map(pasien -> Integer.parseInt(pasien.get("pasienId").toString())).collect(Collectors.toSet());
List<Map<String, Object>> ibuAnak = pasienDao.findIdByNoCmOfIbu(setIdIbu);
List<Map<String, Object>> ibuAnak = pasienDao.findIdByIdOfIbu(setIdIbu);
listData.forEach(d -> {
List<Integer> listIdAnak = ibuAnak.stream().filter(bn -> Integer
.parseInt(d.get("pasienId").toString()) == Integer.parseInt(bn.get("idIbu").toString())

View File

@ -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;
}