From f58a1dcade01e8fe7a1ea71022409e1b0913cde2 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 23 Nov 2023 13:32:39 +0700 Subject: [PATCH] Update service migrasi pasien Pembuatan subrutin asuransi pasien dan api ekstrasi dan transformasi --- .../controller/MigrasiPasienController.java | 17 ++- .../medifirst2000/dao/MigrasiPasienDao.java | 5 +- .../service/MigrasiPasienService.java | 2 +- .../impl/MigrasiPasienServiceImpl.java | 106 +++++++++++------- .../entities/AsuransiPasien.java | 4 +- .../etl/pasien/dto/GawaiDto.java | 4 +- .../etl/pasien/dto/KeluargaDto.java | 2 +- 7 files changed, 87 insertions(+), 53 deletions(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java index 92766a0c..ac41d2d8 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java @@ -1,15 +1,17 @@ package com.jasamedika.medifirst2000.controller; -import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; -import static org.springframework.web.bind.annotation.RequestMethod.GET; - +import com.jasamedika.medifirst2000.etl.pasien.dto.PasienDto; +import com.jasamedika.medifirst2000.service.MigrasiPasienService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.jasamedika.medifirst2000.service.MigrasiPasienService; +import java.util.List; + +import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; +import static org.springframework.web.bind.annotation.RequestMethod.GET; /** * @author Salman @@ -19,6 +21,7 @@ import com.jasamedika.medifirst2000.service.MigrasiPasienService; @RestController @RequestMapping("/migrasi/pasien") public class MigrasiPasienController { + @Autowired private MigrasiPasienService migrasiPasienService; @@ -27,4 +30,10 @@ public class MigrasiPasienController { migrasiPasienService.init(); return new ResponseEntity<>(null, HttpStatus.OK); } + + @RequestMapping(value = "/extraction/transformation", method = GET, produces = APPLICATION_JSON_VALUE) + public ResponseEntity extractAndTransform() { + List dto = migrasiPasienService.extractAndTransform(); + return new ResponseEntity<>(dto, HttpStatus.OK); + } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java index 12ca07aa..85b890d4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java @@ -4,6 +4,8 @@ import com.jasamedika.medifirst2000.entities.MigrasiPasien; import com.jasamedika.medifirst2000.entities.Pasien; import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; @@ -13,5 +15,6 @@ import java.util.List; * @since 06/11/2023 */ public interface MigrasiPasienDao extends JpaRepository { - List findPasienByStatusMigrasiIn(List statusMigrasiList); + @Query("select mp.pasien from MigrasiPasien mp where mp.statusMigrasi in (:listStatusMigrasi)") + List findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List statusMigrasiList); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java index 8cda783a..22071448 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java @@ -12,5 +12,5 @@ import java.util.List; public interface MigrasiPasienService { void init(); - List sendToNewDb(); + List extractAndTransform(); } 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 ed71643b..b5ccfb53 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 @@ -6,7 +6,8 @@ import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import com.jasamedika.medifirst2000.etl.pasien.dto.*; import com.jasamedika.medifirst2000.service.MigrasiPasienService; -import org.apache.commons.lang3.math.NumberUtils; +import com.jasamedika.medifirst2000.util.CommonUtil; +import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -70,7 +71,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { } @Override - public List sendToNewDb() { + public List extractAndTransform() { List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); List listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList); List listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList()); @@ -87,35 +88,47 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.namaLengkap(pasien.getNamaPasien()); dtoBuilder.namaPanggilan(pasien.getNamaDepan()); dtoBuilder.tempatLahir(pasien.getTempatLahir()); - dtoBuilder.tanggalLahir(pasien.getTglLahir().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + if (CommonUtil.isNotNullOrEmpty(pasien.getTglLahir())) + dtoBuilder.tanggalLahir( + pasien.getTglLahir().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); dtoBuilder.surel(pasien.getEmail()); - dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build()); + 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()))); - dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build()); - dtoBuilder.golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build()); + if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId())) + dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build()); + if (CommonUtil.isNotNullOrEmpty(pasien.getGolonganDarahId())) + dtoBuilder + .golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build()); listCaraMeninggal.stream().filter(c -> pasien.getId().equals(c.get("idPasien"))).findFirst() .ifPresent(c -> { - 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(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()); + } }); - dtoBuilder.kewarganegaraan(KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build()); - dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build()); - dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).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()); @@ -143,10 +156,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { } { Set gawaiDto = new HashSet<>(); - if (NumberUtils.isParsable(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0') - gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoTelepon())).build()); - if (NumberUtils.isParsable(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0') - gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoHp())).build()); + if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0') + gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoTelepon())).build()); + if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0') + gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoHp())).build()); dtoBuilder.gawai(gawaiDto); } { @@ -194,20 +207,26 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { listAlamat.forEach(alamat -> { AlamatDto.AlamatDtoBuilder dtoBuilder = AlamatDto.builder(); dtoBuilder.alamat(alamat.getAlamatLengkap()); - if (alamat.getRtrw().split(" ")[0].equals("RT")) - dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1])); - if (alamat.getRtrw().split(" ")[2].equals("RW")) - dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3])); - dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos())); + if (CommonUtil.isNotNullOrEmpty(alamat.getRtrw())) { + if (alamat.getRtrw().split(" ")[0].equals("RT")) + dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1])); + if (alamat.getRtrw().split(" ")[2].equals("RW")) + dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3])); + } + if (NumberUtils.isNumber(alamat.getKodePos())) + dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos())); { if (Master.JenisAlamat.IDENTITAS.equals(alamat.getJenisAlamatId())) dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build()); if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId())) dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(DOMISILI.id()).build()); } - dtoBuilder.kelurahanDesa( - KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build()); - dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build()); + if (CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan()) + && CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId())) + dtoBuilder.kelurahanDesa( + KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build()); + if (CommonUtil.isNotNullOrEmpty(alamat.getNegaraId())) + dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build()); dtoList.add(dtoBuilder.build()); }); return dtoList; @@ -219,7 +238,9 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { BerkasDto.BerkasDtoBuilder dtoBuilder = BerkasDto.builder(); dtoBuilder.judulBerkas(dokumenVedika.getNamaFile()); dtoBuilder.lokasiBerkas(dokumenVedika.getUrl()); - dtoBuilder.jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build()); + if (CommonUtil.isNotNullOrEmpty(dokumenVedika.getJenisBerkasId())) + dtoBuilder + .jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build()); dtoList.add(dtoBuilder.build()); }); return dtoList; @@ -232,8 +253,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { 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())); + if (NumberUtils.isNumber(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0') + dtoBuilder.noGawai(Long.parseLong("62" + anak.getNoHp())); dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build()); dtoList.add(dtoBuilder.build()); }); @@ -245,9 +266,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { 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()); + if (CommonUtil.isNotNullOrEmpty(asuransi.getRekanan())) + dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()).build()); + dtoList.add(dtoBuilder.build()); }); - return new HashSet<>(); + return dtoList; } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AsuransiPasien.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AsuransiPasien.java index 1821e8e2..de537aa2 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AsuransiPasien.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/AsuransiPasien.java @@ -46,7 +46,7 @@ public class AsuransiPasien extends BaseMaster { @Caption(value = "Kode Institusi Asal") @Column(name = "KdInstitusiAsal") - private short kdInstitusiAsal; + private Integer kdInstitusiAsal; @ManyToOne(fetch = LAZY) @JoinColumn(name = "ObjectJenisKelaminFk") @@ -66,7 +66,7 @@ public class AsuransiPasien extends BaseMaster { @Caption(value = "Kode Last Unit Bagian") @Column(name = "KdLastUnitBagian") - private short kdLastUnitBagian; + private Integer kdLastUnitBagian; @ManyToOne(fetch = LAZY) @JoinColumn(name = "ObjectPegawaiFk") diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/GawaiDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/GawaiDto.java index f53b7764..0a713ead 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/GawaiDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/GawaiDto.java @@ -17,6 +17,6 @@ import java.util.UUID; @AllArgsConstructor @NoArgsConstructor public class GawaiDto { - private UUID id; - private Integer noGawai; + private UUID id; + private Long noGawai; } 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 3e754e9b..8c901ae9 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 @@ -21,5 +21,5 @@ public class KeluargaDto { private String namaPanggilan; private String gelarBelakang; private String surel; - private Integer noGawai; + private Long noGawai; }