From 0d80bf59a935a78f08b4c871f2975fface92c980 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 6 Nov 2023 15:44:25 +0700 Subject: [PATCH] Create service migrasi pasien Pembuatan fitur pencatatan status migrasi data pasien --- .../controller/MigrasiPasienController.java | 30 ++++++++++++ .../src/main/webapp/WEB-INF/web.xml | 2 +- .../medifirst2000/dao/MigrasiPasienDao.java | 12 +++++ .../medifirst2000/dao/PasienDao.java | 7 ++- .../service/MigrasiPasienService.java | 10 ++++ .../impl/MigrasiPasienServiceImpl.java | 46 +++++++++++++++++++ .../medifirst2000/entities/MigrasiPasien.java | 45 ++++++++++++++++++ .../medifirst2000/entities/Pasien.java | 10 ---- .../medifirst2000/vo/MigrasiPasienVO.java | 28 +++++++++++ .../jasamedika/medifirst2000/vo/PasienVO.java | 4 -- .../src/main/resources/hibernate.cfg.xml | 2 + 11 files changed, 179 insertions(+), 17 deletions(-) create mode 100644 jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MigrasiPasien.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MigrasiPasienVO.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 new file mode 100644 index 00000000..92766a0c --- /dev/null +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/MigrasiPasienController.java @@ -0,0 +1,30 @@ +package com.jasamedika.medifirst2000.controller; + +import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; +import static org.springframework.web.bind.annotation.RequestMethod.GET; + +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; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +@RestController +@RequestMapping("/migrasi/pasien") +public class MigrasiPasienController { + @Autowired + private MigrasiPasienService migrasiPasienService; + + @RequestMapping(value = "/init", method = GET, produces = APPLICATION_JSON_VALUE) + public ResponseEntity initiateMigrasiPasien() { + migrasiPasienService.init(); + return new ResponseEntity<>(null, HttpStatus.OK); + } +} diff --git a/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml b/jasamedika-bridging/src/main/webapp/WEB-INF/web.xml index bf081aeb..73911d37 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 + development 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 new file mode 100644 index 00000000..0ee4077b --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MigrasiPasienDao.java @@ -0,0 +1,12 @@ +package com.jasamedika.medifirst2000.dao; + +import com.jasamedika.medifirst2000.entities.MigrasiPasien; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +public interface MigrasiPasienDao extends JpaRepository { +} 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 95a10506..52549dd0 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 @@ -2,7 +2,6 @@ package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.Alamat; 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.Lock; import org.springframework.data.jpa.repository.Query; @@ -122,5 +121,9 @@ public interface PasienDao extends JpaRepository { + "and ibu.id in (:listIdIbu)") List> findIdByNoCmOfIbu(@Param("listIdIbu") Set listIdIbu); - List findByStatusMigrasi(StatusMigrasi statusMigrasi); + @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) + List find100LatestByNotMigrateYet(); } 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 new file mode 100644 index 00000000..4a6b15a1 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MigrasiPasienService.java @@ -0,0 +1,10 @@ +package com.jasamedika.medifirst2000.service; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +public interface MigrasiPasienService { + void init(); +} 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 new file mode 100644 index 00000000..5f185c80 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MigrasiPasienServiceImpl.java @@ -0,0 +1,46 @@ +package com.jasamedika.medifirst2000.service.impl; + +import com.jasamedika.medifirst2000.dao.MigrasiPasienDao; +import com.jasamedika.medifirst2000.dao.PasienDao; +import com.jasamedika.medifirst2000.entities.MigrasiPasien; +import com.jasamedika.medifirst2000.entities.Pasien; +import com.jasamedika.medifirst2000.service.MigrasiPasienService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +@Service +@Transactional +public class MigrasiPasienServiceImpl implements MigrasiPasienService { + @Autowired + private MigrasiPasienDao migrasiPasienDao; + + @Autowired + private PasienDao pasienDao; + + @Override + public void init() { + List models = new ArrayList<>(); + List oneHundredPasien = pasienDao.find100LatestByNotMigrateYet(); + List oneHundredIdPasien = oneHundredPasien.stream().map(Pasien::getId).collect(Collectors.toList()); + oneHundredIdPasien.forEach(id -> { + MigrasiPasien migrasiPasien = new MigrasiPasien(); + Pasien pasien = new Pasien(); + pasien.setId(id); + migrasiPasien.setPasien(pasien); + migrasiPasien.setKdProfile((short) 0); + migrasiPasien.setStatusEnabled(true); + models.add(migrasiPasien); + }); + migrasiPasienDao.save(models); + } +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MigrasiPasien.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MigrasiPasien.java new file mode 100644 index 00000000..f9b890cf --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MigrasiPasien.java @@ -0,0 +1,45 @@ +package com.jasamedika.medifirst2000.entities; + +import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.entities.Pasien; +import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi.BELUM_KIRIM; +import static javax.persistence.EnumType.STRING; +import static javax.persistence.FetchType.LAZY; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +@Getter +@Setter +@Entity +@Table(name = "migrasipasien_t", uniqueConstraints = @UniqueConstraint(columnNames = "pasienfk")) +public class MigrasiPasien extends BaseTransaction { + private static final long serialVersionUID = 8936798143770665885L; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "pasienfk", nullable = false) + @NotNull(message = "Pasien tidak boleh kosong") + @Caption(value = "Pasien") + private Pasien pasien; + + @Column(name = "pasienfk", insertable = false, updatable = false, nullable = false) + private Integer pasienId; + + @Column(length = 30, nullable = false, columnDefinition = "varchar(30) default 'BELUM_KIRIM'") + @Enumerated(STRING) + @NotNull(message = "Status migrasi tidak boleh kosong") + @Size(max = 30, message = "Status migrasi maksimal {max} karakter") + @Caption(value = "Status Migrasi") + private StatusMigrasi statusMigrasi = BELUM_KIRIM; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Pasien.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Pasien.java index a763315e..4df40589 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Pasien.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Pasien.java @@ -2,7 +2,6 @@ package com.jasamedika.medifirst2000.entities; import com.fasterxml.jackson.annotation.JsonBackReference; import com.jasamedika.medifirst2000.base.BaseMaster; -import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import com.jasamedika.medifirst2000.helper.Caption; import com.jasamedika.medifirst2000.listener.MyEventListener; import lombok.Getter; @@ -10,13 +9,10 @@ import lombok.Setter; import javax.persistence.*; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import java.util.Date; import java.util.HashSet; import java.util.Set; -import static com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi.BELUM_KIRIM; -import static javax.persistence.EnumType.STRING; import static javax.persistence.FetchType.LAZY; import static javax.persistence.GenerationType.SEQUENCE; @@ -211,10 +207,4 @@ public class Pasien extends BaseMaster { @Column(name = "JamLahir") @Caption(value = "JamLahir") private Date jamLahir; - - @Column(length = 30, nullable = false, columnDefinition = "varchar(30) default 'BELUM_KIRIM'") - @Enumerated(STRING) - @Size(max = 30) - @Caption(value = "Status Migrasi") - private StatusMigrasi statusMigrasi = BELUM_KIRIM; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MigrasiPasienVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MigrasiPasienVO.java new file mode 100644 index 00000000..6fe2e5c8 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MigrasiPasienVO.java @@ -0,0 +1,28 @@ +package com.jasamedika.medifirst2000.vo; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; +import com.jasamedika.medifirst2000.helper.Caption; +import com.jasamedika.medifirst2000.vo.PasienVO; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; + +/** + * @author Salman + * @version 1.0.0 + * @since 06/11/2023 + */ +@Getter +@Setter +public class MigrasiPasienVO extends BaseTransactionVO { + @NotNull(message = "Pasien tidak boleh kosong") + @Caption(value = "Pasien") + private PasienVO pasien; + + private Integer pasienId; + + @Caption(value = "Status Migrasi") + private StatusMigrasi statusMigrasi; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PasienVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PasienVO.java index dd6f4317..d8fa3f03 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PasienVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PasienVO.java @@ -1,7 +1,6 @@ package com.jasamedika.medifirst2000.vo; import com.jasamedika.medifirst2000.base.vo.BaseMasterVO; -import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; import lombok.Setter; @@ -138,7 +137,4 @@ public class PasienVO extends BaseMasterVO { @Caption(value = "propinsi") private PropinsiVO propinsi; - - @Caption(value = "Status Migrasi") - private StatusMigrasi statusMigrasi; } diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index dd45c865..bbd5402d 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -884,5 +884,7 @@ + +