From e9608d50ee4b0721c23eb8deae5571c3453c9f77 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 29 Jul 2024 21:42:05 +0700 Subject: [PATCH] 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