From be4c117a7612ea65be244fb1bddc7c33f1fd2f19 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 29 Mar 2024 21:39:42 +0700 Subject: [PATCH 01/20] Update service migrasi Persiapan pembuatan service scheduler update status migrasi belum kirim --- jasamedika-bridging/src/main/webapp/WEB-INF/web.xml | 2 +- jasamedika-config/src/main/resources/jdbc.localhost.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml b/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml index bf081aeb..f739001b 100644 --- a/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml +++ b/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml @@ -15,7 +15,7 @@ spring.profiles.default - bridging + localhost diff --git a/jasamedika-config/src/main/resources/jdbc.localhost.properties b/jasamedika-config/src/main/resources/jdbc.localhost.properties index e89e596c..676e31b0 100644 --- a/jasamedika-config/src/main/resources/jdbc.localhost.properties +++ b/jasamedika-config/src/main/resources/jdbc.localhost.properties @@ -1,7 +1,7 @@ jdbc.driver = org.postgresql.Driver hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect -hibernate.hbm2ddl = update +hibernate.hbm2ddl = none hibernate.format_sql = true hibernate.show_sql = true From 5a2a21d3a36a6552f13c29a8213846e114d7765f Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 25 Jul 2024 10:16:11 +0700 Subject: [PATCH 02/20] Update service migrasi pasien Pembuatan scheduler status migrasi sebelum ekstraksi --- .../controller/MigrasiPasienController.java | 2 +- .../task/schedule/MigrasiPasienTask.java | 30 +++++++++++++++++++ .../schedule/config/ScheduleTaskConfig.java | 26 ++++++++++++++++ .../service/MigrasiPasienService.java | 2 +- .../impl/MigrasiPasienServiceImpl.java | 2 +- 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java create mode 100644 jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java 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 ac41d2d8..75a380e3 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 @@ -27,7 +27,7 @@ public class MigrasiPasienController { @RequestMapping(value = "/init", method = GET, produces = APPLICATION_JSON_VALUE) public ResponseEntity initiateMigrasiPasien() { - migrasiPasienService.init(); + migrasiPasienService.newMigrate(); return new ResponseEntity<>(null, HttpStatus.OK); } diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java new file mode 100644 index 00000000..84eeb584 --- /dev/null +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -0,0 +1,30 @@ +package com.jasamedika.medifirst2000.task.schedule; + +import com.jasamedika.medifirst2000.service.MigrasiPasienService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 11/10/2023 + */ +@Component +public class MigrasiPasienTask { + private static final Logger LOGGER = LoggerFactory.getLogger(MigrasiPasienTask.class); + + @Autowired + private MigrasiPasienService migrasiPasienService; + + @Scheduled(cron = "0 0/15 * * * ?") + public void newMigrate() { + LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); + + migrasiPasienService.newMigrate(); + } +} diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java new file mode 100644 index 00000000..21c8e901 --- /dev/null +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java @@ -0,0 +1,26 @@ +package com.jasamedika.medifirst2000.task.schedule.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +/** + * @author Salman + * @since 12 Jul 2023 + */ +@Configuration +@EnableScheduling +@ComponentScan("com.jasamedika.medifirst2000.task") +public class ScheduleTaskConfig { + + @Bean + public TaskScheduler taskScheduler() { + ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); + threadPoolTaskScheduler.setPoolSize(50); + threadPoolTaskScheduler.setThreadNamePrefix("BridgingThreadPoolTaskScheduler"); + return threadPoolTaskScheduler; + } +} 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 22071448..003ae49a 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 @@ -10,7 +10,7 @@ import java.util.List; * @since 06/11/2023 */ public interface MigrasiPasienService { - void init(); + void newMigrate(); 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 b5ccfb53..63bf9d75 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 @@ -54,7 +54,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { private AsuransiPasienDao asuransiPasienDao; @Override - public void init() { + public void newMigrate() { List models = new ArrayList<>(); List oneHundredPasien = pasienDao.find100LatestByNotMigrateYet(); List oneHundredIdPasien = oneHundredPasien.stream().map(Pasien::getId).collect(Collectors.toList()); From 98ea5f2734380cdaeddcbf94ee9e2b5579735e6c Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 25 Jul 2024 14:48:44 +0700 Subject: [PATCH 03/20] Update MigrasiPasienController.java Perbaikan rest template exchange dto ke untuk ekstraksi --- .../medifirst2000/controller/MigrasiPasienController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 75a380e3..03b0bc64 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 @@ -32,8 +32,8 @@ public class MigrasiPasienController { } @RequestMapping(value = "/extraction/transformation", method = GET, produces = APPLICATION_JSON_VALUE) - public ResponseEntity extractAndTransform() { - List dto = migrasiPasienService.extractAndTransform(); - return new ResponseEntity<>(dto, HttpStatus.OK); + public ResponseEntity> extractAndTransform() { + List result = migrasiPasienService.extractAndTransform(); + return new ResponseEntity<>(result, HttpStatus.OK); } } From 0b048ed7e267a1730200d38c4e6293764882e604 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 25 Jul 2024 14:49:16 +0700 Subject: [PATCH 04/20] Update MigrasiPasienTask.java Perbaikan cron scheduler status migrasi sebelum ekstraksi --- .../medifirst2000/task/schedule/MigrasiPasienTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index 84eeb584..1ce73772 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -21,7 +21,7 @@ public class MigrasiPasienTask { @Autowired private MigrasiPasienService migrasiPasienService; - @Scheduled(cron = "0 0/15 * * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); From 147d143b52d32fb44b1b9b929256f15d65361b64 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 25 Jul 2024 14:49:34 +0700 Subject: [PATCH 05/20] Update MigrasiPasienServiceImpl.java Pembuatan sub rutin clean data no hape dan no telepon --- .../service/impl/MigrasiPasienServiceImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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 63bf9d75..9d92dd7f 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 @@ -157,9 +157,11 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { { Set gawaiDto = new HashSet<>(); if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0') - gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoTelepon())).build()); + gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoTelepon()))) + .build()); if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0') - gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoHp())).build()); + gawaiDto.add( + GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoHp()))).build()); dtoBuilder.gawai(gawaiDto); } { @@ -254,7 +256,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.namaPanggilan(anak.getNamaDepan()); dtoBuilder.surel(anak.getEmail()); if (NumberUtils.isNumber(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0') - dtoBuilder.noGawai(Long.parseLong("62" + anak.getNoHp())); + dtoBuilder.noGawai(Long.parseLong("62" + numbersOnly(anak.getNoHp()))); dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build()); dtoList.add(dtoBuilder.build()); }); @@ -272,4 +274,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { }); return dtoList; } + + private String numbersOnly(String str) { + return str.replaceAll("\\D", ""); + } } From 34f0bcaa7ac2c470156dd1b2fc123f7f0ef89c52 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 25 Jul 2024 14:50:10 +0700 Subject: [PATCH 06/20] Update PasienDto.java Perbaikan json format untuk tanggal lahir saat ekstraksi dan transformasi --- .../medifirst2000/etl/pasien/dto/PasienDto.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java index 639e4c07..e1446849 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java @@ -1,11 +1,19 @@ package com.jasamedika.medifirst2000.etl.pasien.dto; -import lombok.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.jackson.Jacksonized; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.Set; import java.util.UUID; +import static org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME; + /** * @author salmanoe * @version 1.0.0 @@ -15,6 +23,7 @@ import java.util.UUID; @Builder @AllArgsConstructor @NoArgsConstructor +@Jacksonized public class PasienDto { private UUID id; private String noRekamMedis; @@ -25,6 +34,8 @@ public class PasienDto { private SapaanDto sapaan; private Set identitas; private String tempatLahir; + @DateTimeFormat(iso = DATE_TIME) + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ") private LocalDateTime tanggalLahir; private JenisKelaminDto jenisKelamin; private GolonganDarahDto golonganDarah; From fb44d1810edf6793df7157589f884dde410982b8 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 26 Jul 2024 15:56:28 +0700 Subject: [PATCH 07/20] Update PasienDto.java Perbaikan format json tanggal lahir untuk transformasi --- .../medifirst2000/etl/pasien/dto/PasienDto.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java index e1446849..aa5426d4 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java @@ -1,19 +1,13 @@ package com.jasamedika.medifirst2000.etl.pasien.dto; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.extern.jackson.Jacksonized; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; import java.util.Set; import java.util.UUID; -import static org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME; - /** * @author salmanoe * @version 1.0.0 @@ -23,9 +17,9 @@ import static org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME @Builder @AllArgsConstructor @NoArgsConstructor -@Jacksonized public class PasienDto { private UUID id; + private String status; private String noRekamMedis; private String gelarDepan; private String namaLengkap; @@ -34,9 +28,7 @@ public class PasienDto { private SapaanDto sapaan; private Set identitas; private String tempatLahir; - @DateTimeFormat(iso = DATE_TIME) - @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ") - private LocalDateTime tanggalLahir; + private String tanggalLahir; private JenisKelaminDto jenisKelamin; private GolonganDarahDto golonganDarah; private GolonganResusDto golonganResus; @@ -57,4 +49,5 @@ public class PasienDto { private Set berkas; private Set keluarga; private Set jaminan; + private String caraRegistrasi; } From e0a9fb0cc5f7acda259d36ae39534d76acaa5b68 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 26 Jul 2024 15:57:31 +0700 Subject: [PATCH 08/20] Update MigrasiPasienServiceImpl.java Perbaikan validasi golongan darah dan status perkawinan default --- .../impl/MigrasiPasienServiceImpl.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) 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 9d92dd7f..d206b084 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 @@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.ZoneId; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -72,6 +72,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { @Override public List extractAndTransform() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); List listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList); List listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList()); @@ -84,13 +85,15 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { List dtoList = new ArrayList<>(); listPasien.forEach(pasien -> { PasienDto.PasienDtoBuilder dtoBuilder = PasienDto.builder(); + dtoBuilder.status("AKTIF"); dtoBuilder.noRekamMedis(pasien.getNoCm()); dtoBuilder.namaLengkap(pasien.getNamaPasien()); - dtoBuilder.namaPanggilan(pasien.getNamaDepan()); + 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( - pasien.getTglLahir().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + dtoBuilder.tanggalLahir(dateFormat.format(pasien.getTglLahir())); dtoBuilder.surel(pasien.getEmail()); if (CommonUtil.isNotNullOrEmpty(pasien.getTitlePasienId())) dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build()); @@ -99,7 +102,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { .noIdentitas(pasien.getNoIdentitas()).build()))); if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId())) dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build()); - if (CommonUtil.isNotNullOrEmpty(pasien.getGolonganDarahId())) + 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() @@ -177,14 +180,15 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { dtoBuilder.pekerjaan(PekerjaanDto.builder().id(PEGAWAI_SWASTA_ATAU_WIRAUSAHA.id()).build()); } { - if (Master.StatusPerkawinan.BELUM_KAWIN.equals(pasien.getStatusPerkawinanId())) - dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(BELUM_KAWIN.id()).build()); - if (Master.StatusPerkawinan.KAWIN.equals(pasien.getStatusPerkawinanId())) + if (Master.StatusPerkawinan.KAWIN.equals(pasien.getStatusPerkawinanId())) { dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(KAWIN.id()).build()); - if (Master.StatusPerkawinan.CERAI_HIDUP.equals(pasien.getStatusPerkawinanId())) + } else if (Master.StatusPerkawinan.CERAI_HIDUP.equals(pasien.getStatusPerkawinanId())) { dtoBuilder.statusPerkawinan(StatusPerkawinanDto.builder().id(CERAI_HIDUP.id()).build()); - if (Master.StatusPerkawinan.CERAI_MATI.equals(pasien.getStatusPerkawinanId())) + } 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)); From a4435078c317870fb56df027c618201dee1276c8 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Sat, 27 Jul 2024 07:59:26 +0700 Subject: [PATCH 09/20] Update service migrasi pasien Cleaning data etl master pasien untuk url lokasi berkas dan jenis gawai --- .../impl/MigrasiPasienServiceImpl.java | 11 +++++----- .../etl/pasien/dto/BerkasDto.java | 2 +- .../etl/pasien/dto/GawaiDto.java | 1 + .../etl/pasien/dto/JenisGawaiDto.java | 22 +++++++++++++++++++ 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/JenisGawaiDto.java 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 d206b084..09981112 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 @@ -161,10 +161,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { Set gawaiDto = new HashSet<>(); if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0') gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoTelepon()))) - .build()); + .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()))).build()); + gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + numbersOnly(pasien.getNoHp()))) + .jenisGawai(JenisGawaiDto.builder().id(2L).build()).build()); dtoBuilder.gawai(gawaiDto); } { @@ -224,7 +224,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { { if (Master.JenisAlamat.IDENTITAS.equals(alamat.getJenisAlamatId())) dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build()); - if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId())) + if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId()) + || Master.JenisAlamat.RUMAH.equals(alamat.getJenisAlamatId())) dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(DOMISILI.id()).build()); } if (CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan()) @@ -243,7 +244,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { listDokumenVedika.forEach(dokumenVedika -> { BerkasDto.BerkasDtoBuilder dtoBuilder = BerkasDto.builder(); dtoBuilder.judulBerkas(dokumenVedika.getNamaFile()); - dtoBuilder.lokasiBerkas(dokumenVedika.getUrl()); + dtoBuilder.lss(dokumenVedika.getUrl()); if (CommonUtil.isNotNullOrEmpty(dokumenVedika.getJenisBerkasId())) dtoBuilder .jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build()); diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/BerkasDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/BerkasDto.java index 5d086823..50142864 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/BerkasDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/BerkasDto.java @@ -17,5 +17,5 @@ public class BerkasDto { private UUID id; private JenisBerkasDto jenisBerkas; private String judulBerkas; - private String lokasiBerkas; + private String lss; } 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 0a713ead..9e8b3d24 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 @@ -19,4 +19,5 @@ import java.util.UUID; public class GawaiDto { private UUID id; private Long noGawai; + private JenisGawaiDto jenisGawai; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/JenisGawaiDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/JenisGawaiDto.java new file mode 100644 index 00000000..3ca48c00 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/JenisGawaiDto.java @@ -0,0 +1,22 @@ +package com.jasamedika.medifirst2000.etl.pasien.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @author Salman + * @version 1.0.0 + * @since 27/07/2024 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JenisGawaiDto { + private Long id; + private String jenisGawai; +} From f41595aa89b73d2445540ca6730235d1f10afba9 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 29 Jul 2024 16:11:25 +0700 Subject: [PATCH 10/20] Update MigrasiPasienServiceImpl.java Penambahan cleaning data untuk pasien memiliki no kartu jaminan tetapi tidak memiliki data rekanan asuransi --- .../service/impl/MigrasiPasienServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 09981112..1ed139f9 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 @@ -272,10 +272,12 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { Set dtoList = new HashSet<>(); listAsuransiPasien.forEach(asuransi -> { JaminanDto.JaminanDtoBuilder dtoBuilder = JaminanDto.builder(); - dtoBuilder.nomorKartu(asuransi.getNoAsuransi()); - if (CommonUtil.isNotNullOrEmpty(asuransi.getRekanan())) - dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()).build()); - dtoList.add(dtoBuilder.build()); + if (CommonUtil.isNotNullOrEmpty(asuransi.getNoAsuransi()) && !"-".equals(asuransi.getNoAsuransi())) { + dtoBuilder.nomorKartu(asuransi.getNoAsuransi()); + if (CommonUtil.isNotNullOrEmpty(asuransi.getRekanan())) + dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()).build()); + dtoList.add(dtoBuilder.build()); + } }); return dtoList; } From e9608d50ee4b0721c23eb8deae5571c3453c9f77 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 29 Jul 2024 21:42:05 +0700 Subject: [PATCH 11/20] Update service migrasi pasien Pembuatan scheduler untuk update status terkirim dari database baru ke status migrasi di smart --- .../task/schedule/MigrasiPasienTask.java | 40 ++++++++++++++++++- .../task/schedule/config/HeaderHandler.java | 24 +++++++++++ .../schedule/config/ScheduleTaskConfig.java | 12 ++++++ .../medifirst2000/dao/MigrasiPasienDao.java | 2 + .../service/MigrasiPasienService.java | 2 + .../impl/MigrasiPasienServiceImpl.java | 11 ++++- .../main/resources/jdbc.bridging.properties | 4 +- .../resources/jdbc.development.properties | 4 +- .../main/resources/jdbc.localhost.properties | 4 +- 9 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/HeaderHandler.java diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index 1ce73772..e86fc886 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -1,13 +1,27 @@ package com.jasamedika.medifirst2000.task.schedule; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jasamedika.medifirst2000.service.MigrasiPasienService; +import com.jasamedika.medifirst2000.util.CommonUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; +import java.net.URI; +import java.net.URISyntaxException; import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.jasamedika.medifirst2000.task.schedule.config.HeaderHandler.getHttpHeaders; +import static org.springframework.http.HttpMethod.GET; /** * @author salmanoe @@ -18,13 +32,37 @@ import java.time.LocalDateTime; public class MigrasiPasienTask { private static final Logger LOGGER = LoggerFactory.getLogger(MigrasiPasienTask.class); + @Autowired + private RestTemplate restTemplate; + + @Autowired + private ObjectMapper objectMapper; + @Autowired private MigrasiPasienService migrasiPasienService; - @Scheduled(cron = "0 0 0 * * ?") + @Value("${app.etl.migrasi.pasien}") + String baseUrl; + + @Scheduled(cron = "0 0/15 * * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); migrasiPasienService.newMigrate(); } + + @Scheduled(cron = "0 * 0/1 * * ?") + public void setStatusTerkirim() throws URISyntaxException { + LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now()); + + URI uri = new URI(baseUrl + "/status"); + HttpEntity entity = new HttpEntity<>(new Object(), getHttpHeaders()); + ResponseEntity exchange = restTemplate.exchange(uri, GET, entity, Object.class); + if (CommonUtil.isNotNullOrEmpty(exchange.getBody())) { + List> dtoList = objectMapper.convertValue(exchange.getBody(), List.class); + List noRekamMedisList = dtoList.stream().map(dto -> dto.get("noRekamMedis").toString()) + .collect(Collectors.toList()); + migrasiPasienService.setStatus(noRekamMedisList); + } + } } diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/HeaderHandler.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/HeaderHandler.java new file mode 100644 index 00000000..a26f9d8c --- /dev/null +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/HeaderHandler.java @@ -0,0 +1,24 @@ +package com.jasamedika.medifirst2000.task.schedule.config; + +import org.springframework.http.HttpHeaders; +import org.springframework.stereotype.Component; + +import java.util.Collections; + +import static org.springframework.http.MediaType.APPLICATION_JSON; + +/** + * @author Salman + * @version 1.0.0 + * @since 29/07/2024 + */ +@Component +public class HeaderHandler { + + public static HttpHeaders getHttpHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Collections.singletonList(APPLICATION_JSON)); + headers.setContentType(APPLICATION_JSON); + return headers; + } +} diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java index 21c8e901..d116429c 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/config/ScheduleTaskConfig.java @@ -1,11 +1,13 @@ package com.jasamedika.medifirst2000.task.schedule.config; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.web.client.RestTemplate; /** * @author Salman @@ -23,4 +25,14 @@ public class ScheduleTaskConfig { threadPoolTaskScheduler.setThreadNamePrefix("BridgingThreadPoolTaskScheduler"); return threadPoolTaskScheduler; } + + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper(); + } + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } } 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 85b890d4..640cc6ff 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 @@ -17,4 +17,6 @@ import java.util.List; public interface MigrasiPasienDao extends JpaRepository { @Query("select mp.pasien from MigrasiPasien mp where mp.statusMigrasi in (:listStatusMigrasi)") List findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List statusMigrasiList); + + List findByPasienNoCmIn(List noCmList); } 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 003ae49a..6678251b 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 @@ -13,4 +13,6 @@ public interface MigrasiPasienService { void newMigrate(); List extractAndTransform(); + + void setStatus(List noRekamMedisList); } 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 1ed139f9..20e826cc 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 @@ -23,8 +23,7 @@ import static com.jasamedika.medifirst2000.etl.pasien.constant.JenisAlamat.IDENT import static com.jasamedika.medifirst2000.etl.pasien.constant.JenisIdentitas.KTP; import static com.jasamedika.medifirst2000.etl.pasien.constant.Pekerjaan.*; import static com.jasamedika.medifirst2000.etl.pasien.constant.Pendidikan.*; -import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi.BELUM_KIRIM; -import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi.PEMBAHARUAN; +import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi.*; import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusPerkawinan.*; /** @@ -285,4 +284,12 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { private String numbersOnly(String str) { return str.replaceAll("\\D", ""); } + + @Override + public void setStatus(List noRekamMedisList) { + List byPasienNoCmIn = migrasiPasienDao.findByPasienNoCmIn(noRekamMedisList); + byPasienNoCmIn.stream().filter(migrasiPasien -> !TERKIRIM.equals(migrasiPasien.getStatusMigrasi())) + .forEach(migrasiPasien -> migrasiPasien.setStatusMigrasi(TERKIRIM)); + migrasiPasienDao.save(byPasienNoCmIn); + } } diff --git a/jasamedika-config/src/main/resources/jdbc.bridging.properties b/jasamedika-config/src/main/resources/jdbc.bridging.properties index af4e8839..2adbe90e 100644 --- a/jasamedika-config/src/main/resources/jdbc.bridging.properties +++ b/jasamedika-config/src/main/resources/jdbc.bridging.properties @@ -22,4 +22,6 @@ systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ urlServiceSarPras=https://smart.rsabhk.co.id:2222/jasamedika-web/ -urlService=https://smart.rsabhk.co.id:2222/simrs_harkit/service/transaksi/ \ No newline at end of file +urlService=https://smart.rsabhk.co.id:2222/simrs_harkit/service/transaksi/ + +app.etl.migrasi.pasien=http://localhost:8081/simrs/pasien/migrasi diff --git a/jasamedika-config/src/main/resources/jdbc.development.properties b/jasamedika-config/src/main/resources/jdbc.development.properties index 14eb8e0d..621c0e7f 100644 --- a/jasamedika-config/src/main/resources/jdbc.development.properties +++ b/jasamedika-config/src/main/resources/jdbc.development.properties @@ -22,4 +22,6 @@ systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ urlServiceSarPras=http://192.168.12.3:8080/jasamedika-web/ -urlService=http://192.168.12.3:5555/simrs_harkit/service/transaksi/ \ No newline at end of file +urlService=http://192.168.12.3:5555/simrs_harkit/service/transaksi/ + +app.etl.migrasi.pasien=http://localhost:8081/simrs/pasien/migrasi diff --git a/jasamedika-config/src/main/resources/jdbc.localhost.properties b/jasamedika-config/src/main/resources/jdbc.localhost.properties index 676e31b0..7fc8156e 100644 --- a/jasamedika-config/src/main/resources/jdbc.localhost.properties +++ b/jasamedika-config/src/main/resources/jdbc.localhost.properties @@ -22,4 +22,6 @@ systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ urlServiceSarPras=http://192.168.12.3:8080/jasamedika-web/ -urlService=http://192.168.12.3:5555/simrs_harkit/service/transaksi/ \ No newline at end of file +urlService=http://192.168.12.3:5555/simrs_harkit/service/transaksi/ + +app.etl.migrasi.pasien=http://localhost:8081/simrs/pasien/migrasi From 9cd36a1043261cbd30c29a2071b7e1c82af76af3 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 30 Jul 2024 15:09:35 +0700 Subject: [PATCH 12/20] Update MigrasiPasienTask.java Perbaikan service update flag terkirim di sistem SMART --- .../task/schedule/MigrasiPasienTask.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index e86fc886..4c5897df 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -16,9 +16,9 @@ import org.springframework.web.client.RestTemplate; import java.net.URI; import java.net.URISyntaxException; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import static com.jasamedika.medifirst2000.task.schedule.config.HeaderHandler.getHttpHeaders; import static org.springframework.http.HttpMethod.GET; @@ -44,25 +44,26 @@ public class MigrasiPasienTask { @Value("${app.etl.migrasi.pasien}") String baseUrl; - @Scheduled(cron = "0 0/15 * * * ?") + @Scheduled(cron = "0 15 0/1 * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); migrasiPasienService.newMigrate(); } - @Scheduled(cron = "0 * 0/1 * * ?") + @Scheduled(cron = "0 0 0/1 * * ?") public void setStatusTerkirim() throws URISyntaxException { LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now()); URI uri = new URI(baseUrl + "/status"); - HttpEntity entity = new HttpEntity<>(new Object(), getHttpHeaders()); + HttpEntity entity = new HttpEntity<>(null, getHttpHeaders()); ResponseEntity exchange = restTemplate.exchange(uri, GET, entity, Object.class); if (CommonUtil.isNotNullOrEmpty(exchange.getBody())) { - List> dtoList = objectMapper.convertValue(exchange.getBody(), List.class); - List noRekamMedisList = dtoList.stream().map(dto -> dto.get("noRekamMedis").toString()) - .collect(Collectors.toList()); - migrasiPasienService.setStatus(noRekamMedisList); + Map dto = objectMapper.convertValue(exchange.getBody(), HashMap.class); + if (CommonUtil.isNotNullOrEmpty(dto) && CommonUtil.isNotNullOrEmpty(dto.get("response"))) { + List noRekamMedisList = objectMapper.convertValue(dto.get("response"), List.class); + migrasiPasienService.setStatus(noRekamMedisList); + } } } } From 16fa8ecdc9828941aad16860a6851fbd4425eaa7 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 30 Jul 2024 15:10:03 +0700 Subject: [PATCH 13/20] Update MigrasiPasienServiceImpl.java Perbaikan validasi running scheduler awal belum ada data --- .../impl/MigrasiPasienServiceImpl.java | 267 +++++++++--------- 1 file changed, 138 insertions(+), 129 deletions(-) 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 20e826cc..a22e99a6 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 @@ -71,139 +71,148 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { @Override public List extractAndTransform() { + List dtoList = new ArrayList<>(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); List listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList); - List listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList()); - List listNoCmPasien = listPasien.stream().map(Pasien::getNoCm).collect(Collectors.toList()); - List> listCaraMeninggal = pasienDaftarDao.findPenyebabKematianByPasienIdIn(listIdPasien); - List listAlamat = alamatDao.findByPasienIdIn(listIdPasien); - List listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien); - List listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien); - List listAsuransi = asuransiPasienDao.findByPasienIdIn(listIdPasien); - List 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 alamatPasien = listAlamat.stream() - .filter(alamat -> pasien.getId().equals(alamat.getPasienId())).collect(Collectors.toList()); - dtoBuilder.alamat(setAlamat(alamatPasien)); - } - { - Set 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 listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList()); + List listNoCmPasien = listPasien.stream().map(Pasien::getNoCm).collect(Collectors.toList()); + List> listCaraMeninggal = pasienDaftarDao + .findPenyebabKematianByPasienIdIn(listIdPasien); + List listAlamat = alamatDao.findByPasienIdIn(listIdPasien); + List listDokumenVedika = dokumenVedikaDao.findByPasienNoMrIn(listNoCmPasien); + List listPasienAnak = pasienDao.findAnakByNoCmOfIbu(listNoCmPasien); + List 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 pasienAnak = listPasienAnak.stream() - .filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay())).collect(Collectors.toList()); - dtoBuilder.keluarga(setAnak(pasienAnak)); - } - { - List asuransiPasien = listAsuransi.stream() - .filter(asuransi -> pasien.getId().equals(asuransi.getNoCmId())).collect(Collectors.toList()); - dtoBuilder.jaminan(setJaminan(asuransiPasien)); - } - dtoList.add(dtoBuilder.build()); - }); + { + List alamatPasien = listAlamat.stream() + .filter(alamat -> pasien.getId().equals(alamat.getPasienId())).collect(Collectors.toList()); + dtoBuilder.alamat(setAlamat(alamatPasien)); + } + { + Set 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 pasienAnak = listPasienAnak.stream() + .filter(anak -> pasien.getNoCm().equals(anak.getReportDisplay())) + .collect(Collectors.toList()); + dtoBuilder.keluarga(setAnak(pasienAnak)); + } + { + List asuransiPasien = listAsuransi.stream() + .filter(asuransi -> pasien.getId().equals(asuransi.getNoCmId())) + .collect(Collectors.toList()); + dtoBuilder.jaminan(setJaminan(asuransiPasien)); + } + dtoList.add(dtoBuilder.build()); + }); + } return dtoList; } From f96622f4a5b27242a9e6eabafe69d7105dd41e37 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 31 Jul 2024 07:20:56 +0700 Subject: [PATCH 14/20] Update service migrasi pasien Perbaikan data tipe no cm pasien saat transformasi etl pasien dan penambahan ekstraksi transformasi flag kelahiran rs --- .../medifirst2000/service/impl/MigrasiPasienServiceImpl.java | 3 ++- .../com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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 a22e99a6..dfe4a8e3 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 @@ -87,10 +87,11 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { listPasien.forEach(pasien -> { PasienDto.PasienDtoBuilder dtoBuilder = PasienDto.builder(); dtoBuilder.status("AKTIF"); - dtoBuilder.noRekamMedis(pasien.getNoCm()); + dtoBuilder.noRekamMedis(Long.parseLong(pasien.getNoCm())); dtoBuilder.namaLengkap(pasien.getNamaPasien()); dtoBuilder.namaPanggilan(CommonUtil.isNotNullOrEmpty(pasien.getNamaDepan()) ? pasien.getNamaDepan() : pasien.getNamaPasien().split(" ")[0]); + dtoBuilder.isKelahiranRS(pasien.getNoCm().equals(pasien.getReportDisplay())); dtoBuilder.tempatLahir(pasien.getTempatLahir()); dtoBuilder.caraRegistrasi("INTERNAL"); if (CommonUtil.isNotNullOrEmpty(pasien.getTglLahir())) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java index aa5426d4..10279b4c 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/etl/pasien/dto/PasienDto.java @@ -20,11 +20,12 @@ import java.util.UUID; public class PasienDto { private UUID id; private String status; - private String noRekamMedis; + private Long noRekamMedis; private String gelarDepan; private String namaLengkap; private String namaPanggilan; private String gelarBelakang; + private Boolean isKelahiranRS; private SapaanDto sapaan; private Set identitas; private String tempatLahir; From 4204302bb5afad4534ed1db7b992062e1add92c5 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 31 Jul 2024 07:21:21 +0700 Subject: [PATCH 15/20] Update MigrasiPasienTask.java Penyesuaian konfigurasi stres testing untuk etl pasien --- .../medifirst2000/task/schedule/MigrasiPasienTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index 4c5897df..7afea372 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -44,14 +44,14 @@ public class MigrasiPasienTask { @Value("${app.etl.migrasi.pasien}") String baseUrl; - @Scheduled(cron = "0 15 0/1 * * ?") + @Scheduled(cron = "0 10/30 * * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); migrasiPasienService.newMigrate(); } - @Scheduled(cron = "0 0 0/1 * * ?") + @Scheduled(cron = "0 0/30 * * * ?") public void setStatusTerkirim() throws URISyntaxException { LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now()); From 115bc86893c280c92d6af75c9998a3480546be1b Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 31 Jul 2024 10:59:04 +0700 Subject: [PATCH 16/20] Update service migrasi pasien Perbaikan performance update flag status migrasi etl pasien di sistem smart --- .../controller/MigrasiPasienController.java | 12 ++++++++++++ .../medifirst2000/dao/MigrasiPasienDao.java | 7 ++++++- .../service/impl/MigrasiPasienServiceImpl.java | 9 +++++---- 3 files changed, 23 insertions(+), 5 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 03b0bc64..37295d05 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 @@ -5,6 +5,7 @@ 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -12,6 +13,7 @@ import java.util.List; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import static org.springframework.web.bind.annotation.RequestMethod.GET; +import static org.springframework.web.bind.annotation.RequestMethod.POST; /** * @author Salman @@ -36,4 +38,14 @@ public class MigrasiPasienController { List result = migrasiPasienService.extractAndTransform(); return new ResponseEntity<>(result, HttpStatus.OK); } + + @RequestMapping(value = "/status", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) + public ResponseEntity setStatus(@RequestBody List noRekamMedisList) { + try { + migrasiPasienService.setStatus(noRekamMedisList); + return new ResponseEntity<>(null, HttpStatus.ACCEPTED); + } catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } } 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 640cc6ff..95429468 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 @@ -18,5 +18,10 @@ public interface MigrasiPasienDao extends JpaRepository { @Query("select mp.pasien from MigrasiPasien mp where mp.statusMigrasi in (:listStatusMigrasi)") List findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List statusMigrasiList); - List findByPasienNoCmIn(List noCmList); + @Query(value = "select mp.* from migrasipasien_t mp " + "inner join pasien_m ps on mp.pasienfk = ps.id " + + "where mp.statusmigrasi in (:listStatusMigrasi) " + + "and ps.nocm in (:listNoRekamMedis)", nativeQuery = true) + List findByStatusMigrasiInAndPasienNoCmIn( + @Param("listStatusMigrasi") List statusMigrasiList, + @Param("listNoRekamMedis") List noRekamMedisList); } 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 dfe4a8e3..4d0555ce 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 @@ -297,9 +297,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { @Override public void setStatus(List noRekamMedisList) { - List byPasienNoCmIn = migrasiPasienDao.findByPasienNoCmIn(noRekamMedisList); - byPasienNoCmIn.stream().filter(migrasiPasien -> !TERKIRIM.equals(migrasiPasien.getStatusMigrasi())) - .forEach(migrasiPasien -> migrasiPasien.setStatusMigrasi(TERKIRIM)); - migrasiPasienDao.save(byPasienNoCmIn); + List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); + List listMigrasiPasien = migrasiPasienDao.findByStatusMigrasiInAndPasienNoCmIn(statusMigrasiList, + noRekamMedisList); + listMigrasiPasien.forEach(migrasiPasien -> migrasiPasien.setStatusMigrasi(TERKIRIM)); + migrasiPasienDao.save(listMigrasiPasien); } } From 29e591871f2dc244bfbde0e21454e421732a4034 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 1 Aug 2024 13:22:40 +0700 Subject: [PATCH 17/20] Update service migrasi pasien Perbaikan etl pasien di sisi smart untuk scheduler set status terkirim dan flag status persiapan migrasi --- .../medifirst2000/task/schedule/MigrasiPasienTask.java | 4 ++-- .../com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java | 7 ++++--- .../service/impl/MigrasiPasienServiceImpl.java | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index 7afea372..c6340bce 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -44,14 +44,14 @@ public class MigrasiPasienTask { @Value("${app.etl.migrasi.pasien}") String baseUrl; - @Scheduled(cron = "0 10/30 * * * ?") + @Scheduled(cron = "0 30 0/1 * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); migrasiPasienService.newMigrate(); } - @Scheduled(cron = "0 0/30 * * * ?") + @Scheduled(cron = "0 0 0/1 * * ?") public void setStatusTerkirim() throws URISyntaxException { LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now()); 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 95429468..cff00738 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 @@ -15,13 +15,14 @@ import java.util.List; * @since 06/11/2023 */ public interface MigrasiPasienDao extends JpaRepository { - @Query("select mp.pasien from MigrasiPasien mp where mp.statusMigrasi in (:listStatusMigrasi)") + @Query("select ps from MigrasiPasien mp " + "inner join mp.pasien ps " + + "where mp.statusMigrasi in (:listStatusMigrasi) " + + "and (ps.noIdentitas is not null or ps.noidentitas <> '')") List findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List statusMigrasiList); @Query(value = "select mp.* from migrasipasien_t mp " + "inner join pasien_m ps on mp.pasienfk = ps.id " + "where mp.statusmigrasi in (:listStatusMigrasi) " + "and ps.nocm in (:listNoRekamMedis)", nativeQuery = true) - List findByStatusMigrasiInAndPasienNoCmIn( - @Param("listStatusMigrasi") List statusMigrasiList, + List findByStatusMigrasiInAndPasienNoCmIn(@Param("listStatusMigrasi") List statusMigrasiList, @Param("listNoRekamMedis") List noRekamMedisList); } 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 4d0555ce..87a5819d 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 @@ -297,7 +297,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService { @Override public void setStatus(List noRekamMedisList) { - List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); + List statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)).stream() + .map(Enum::toString).collect(Collectors.toList()); List listMigrasiPasien = migrasiPasienDao.findByStatusMigrasiInAndPasienNoCmIn(statusMigrasiList, noRekamMedisList); listMigrasiPasien.forEach(migrasiPasien -> migrasiPasien.setStatusMigrasi(TERKIRIM)); From 1132e8f3d68fcf57f88e53fe32624af953e402e8 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 2 Aug 2024 14:54:38 +0700 Subject: [PATCH 18/20] Update access object migrasi pasien Penambahan filter untuk cleaning data pasien belum lengkap no identitas nik --- .../com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java | 4 ++-- .../java/com/jasamedika/medifirst2000/dao/PasienDao.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) 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 cff00738..0c33a5df 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 @@ -16,8 +16,8 @@ import java.util.List; */ public interface MigrasiPasienDao extends JpaRepository { @Query("select ps from MigrasiPasien mp " + "inner join mp.pasien ps " - + "where mp.statusMigrasi in (:listStatusMigrasi) " - + "and (ps.noIdentitas is not null or ps.noidentitas <> '')") + + "where mp.statusMigrasi in (:listStatusMigrasi) " + "and ps.noIdentitas is not null " + + "and ps.noIdentitas <> '' " + "and ps.noIdentitas <> '-'") List findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List statusMigrasiList); @Query(value = "select mp.* from migrasipasien_t mp " + "inner join pasien_m ps on mp.pasienfk = ps.id " 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 aae79884..ecaeb990 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 @@ -127,7 +127,8 @@ public interface PasienDao extends JpaRepository { @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 " - + "and ps.id not in (select mp.pasienfk from migrasipasien_t mp) " - + "order by cast(ps.nocm as integer) desc " + "limit 100", nativeQuery = true) + + "and ps.id not in (select mp.pasienfk from migrasipasien_t mp) " + "and ps.noidentitas is not null " + + "and ps.noidentitas <> '' " + "and ps.noidentitas <> '-' " + "order by cast(ps.nocm as integer) desc " + + "limit 100", nativeQuery = true) List find100LatestByNotMigrateYet(); } From ae9e167af68649a3d95ce40758c5cefb86ca2411 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 2 Aug 2024 14:54:52 +0700 Subject: [PATCH 19/20] Update MigrasiPasienTask.java Perbaikan penamaan api pengecekan dan update flag status kirim migrasi di smart --- .../medifirst2000/task/schedule/MigrasiPasienTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index c6340bce..f8876738 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -55,7 +55,7 @@ public class MigrasiPasienTask { public void setStatusTerkirim() throws URISyntaxException { LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now()); - URI uri = new URI(baseUrl + "/status"); + URI uri = new URI(baseUrl + "/no-rekam-medis"); HttpEntity entity = new HttpEntity<>(null, getHttpHeaders()); ResponseEntity exchange = restTemplate.exchange(uri, GET, entity, Object.class); if (CommonUtil.isNotNullOrEmpty(exchange.getBody())) { From ae07d1c16ddf4d594940aa4f29b0ee77784818a5 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 7 Aug 2024 10:02:21 +0700 Subject: [PATCH 20/20] Update MigrasiPasienTask.java Konfigurasi scheduler untuk production --- .../medifirst2000/task/schedule/MigrasiPasienTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java index f8876738..6bb01160 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/task/schedule/MigrasiPasienTask.java @@ -44,14 +44,14 @@ public class MigrasiPasienTask { @Value("${app.etl.migrasi.pasien}") String baseUrl; - @Scheduled(cron = "0 30 0/1 * * ?") + @Scheduled(cron = "0 0 18 * * ?") public void newMigrate() { LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now()); migrasiPasienService.newMigrate(); } - @Scheduled(cron = "0 0 0/1 * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void setStatusTerkirim() throws URISyntaxException { LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now());