From a9e273e8f09f736894de3cf49186f65ca8969c12 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 27 Dec 2023 11:43:48 +0700 Subject: [PATCH 1/5] Update jdbc property files Penyesuaian max pool size hikari karena load balancer --- .../src/main/resources/jdbc.bridging.properties | 6 +++--- .../src/main/resources/jdbc.mirroring.properties | 6 +++--- .../src/main/resources/jdbc.pelayanan.properties | 6 +++--- jasamedika-config/src/main/resources/jdbc.sdm.properties | 6 +++--- jasamedika-config/src/main/resources/jdbc.web.properties | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/jasamedika-config/src/main/resources/jdbc.bridging.properties b/jasamedika-config/src/main/resources/jdbc.bridging.properties index 06a8cb9d..38cd7bad 100644 --- a/jasamedika-config/src/main/resources/jdbc.bridging.properties +++ b/jasamedika-config/src/main/resources/jdbc.bridging.properties @@ -5,7 +5,7 @@ hibernate.hbm2ddl = none hibernate.format_sql = false hibernate.show_sql = false -hikari.config.maximum.pool.size = 50 +hikari.config.maximum.pool.size = 25 # DB Production jdbc.url = jdbc:postgresql://psql1.rsabhk.lan:5432/rsab_hk_production @@ -15,8 +15,8 @@ jdbc.serverName = psql1.rsabhk.lan jdbc.databaseName = rsab_hk_production jdbc.portNumber = 5432 -corePoolSizeAsyncConfigurer = 50 -maxPoolSizeAsyncConfigurer = 100 +corePoolSizeAsyncConfigurer = 10 +maxPoolSizeAsyncConfigurer = 20 systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ diff --git a/jasamedika-config/src/main/resources/jdbc.mirroring.properties b/jasamedika-config/src/main/resources/jdbc.mirroring.properties index 61f6dcbb..7f96edd6 100644 --- a/jasamedika-config/src/main/resources/jdbc.mirroring.properties +++ b/jasamedika-config/src/main/resources/jdbc.mirroring.properties @@ -5,7 +5,7 @@ hibernate.hbm2ddl = none hibernate.format_sql = false hibernate.show_sql = false -hikari.config.maximum.pool.size = 100 +hikari.config.maximum.pool.size = 50 # DB Mirroring jdbc.url = jdbc:postgresql://ds.rsabhk.lan:5432/rsab_hk_production @@ -15,8 +15,8 @@ jdbc.serverName = ds.rsabhk.lan jdbc.databaseName = rsab_hk_production jdbc.portNumber = 5432 -corePoolSizeAsyncConfigurer = 50 -maxPoolSizeAsyncConfigurer = 100 +corePoolSizeAsyncConfigurer = 10 +maxPoolSizeAsyncConfigurer = 20 systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ diff --git a/jasamedika-config/src/main/resources/jdbc.pelayanan.properties b/jasamedika-config/src/main/resources/jdbc.pelayanan.properties index 06a8cb9d..38cd7bad 100644 --- a/jasamedika-config/src/main/resources/jdbc.pelayanan.properties +++ b/jasamedika-config/src/main/resources/jdbc.pelayanan.properties @@ -5,7 +5,7 @@ hibernate.hbm2ddl = none hibernate.format_sql = false hibernate.show_sql = false -hikari.config.maximum.pool.size = 50 +hikari.config.maximum.pool.size = 25 # DB Production jdbc.url = jdbc:postgresql://psql1.rsabhk.lan:5432/rsab_hk_production @@ -15,8 +15,8 @@ jdbc.serverName = psql1.rsabhk.lan jdbc.databaseName = rsab_hk_production jdbc.portNumber = 5432 -corePoolSizeAsyncConfigurer = 50 -maxPoolSizeAsyncConfigurer = 100 +corePoolSizeAsyncConfigurer = 10 +maxPoolSizeAsyncConfigurer = 20 systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ diff --git a/jasamedika-config/src/main/resources/jdbc.sdm.properties b/jasamedika-config/src/main/resources/jdbc.sdm.properties index ed81670f..26b01e89 100644 --- a/jasamedika-config/src/main/resources/jdbc.sdm.properties +++ b/jasamedika-config/src/main/resources/jdbc.sdm.properties @@ -5,7 +5,7 @@ hibernate.hbm2ddl = none hibernate.format_sql = false hibernate.show_sql = false -hikari.config.maximum.pool.size = 120 +hikari.config.maximum.pool.size = 60 # DB Production jdbc.url = jdbc:postgresql://psql1.rsabhk.lan:5432/rsab_hk_production @@ -15,8 +15,8 @@ jdbc.serverName = psql1.rsabhk.lan jdbc.databaseName = rsab_hk_production jdbc.portNumber = 5432 -corePoolSizeAsyncConfigurer = 50 -maxPoolSizeAsyncConfigurer = 100 +corePoolSizeAsyncConfigurer = 10 +maxPoolSizeAsyncConfigurer = 20 systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ diff --git a/jasamedika-config/src/main/resources/jdbc.web.properties b/jasamedika-config/src/main/resources/jdbc.web.properties index 06a8cb9d..38cd7bad 100644 --- a/jasamedika-config/src/main/resources/jdbc.web.properties +++ b/jasamedika-config/src/main/resources/jdbc.web.properties @@ -5,7 +5,7 @@ hibernate.hbm2ddl = none hibernate.format_sql = false hibernate.show_sql = false -hikari.config.maximum.pool.size = 50 +hikari.config.maximum.pool.size = 25 # DB Production jdbc.url = jdbc:postgresql://psql1.rsabhk.lan:5432/rsab_hk_production @@ -15,8 +15,8 @@ jdbc.serverName = psql1.rsabhk.lan jdbc.databaseName = rsab_hk_production jdbc.portNumber = 5432 -corePoolSizeAsyncConfigurer = 50 -maxPoolSizeAsyncConfigurer = 100 +corePoolSizeAsyncConfigurer = 10 +maxPoolSizeAsyncConfigurer = 20 systemDirectory=/mnt/files/ reportDirectory=/home/svradmin/app-back/uploadfile/ From 4405b001dfc13e81af7c82fac8977d3c97ffecca Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 28 Dec 2023 08:49:56 +0700 Subject: [PATCH 2/5] Update DokterRawatBersama.java Penambahan relasi detail registrasi --- .../entities/DokterRawatBersama.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/DokterRawatBersama.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/DokterRawatBersama.java index aa7b5d5a..22eaabd6 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/DokterRawatBersama.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/DokterRawatBersama.java @@ -1,16 +1,16 @@ package com.jasamedika.medifirst2000.entities; +import com.jasamedika.medifirst2000.helper.Caption; import lombok.Getter; import lombok.Setter; -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Table; +import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; +import static javax.persistence.FetchType.LAZY; + /** * @author salmanoe * @version 1.0.0 @@ -21,14 +21,23 @@ import java.util.Date; @Entity @Table(name = "dokterrawatbersama_t") public class DokterRawatBersama implements Serializable { - private static final long serialVersionUID = -2730359617233536316L; + private static final long serialVersionUID = 6332383431538705253L; @EmbeddedId - private DokterRawatBersamaId id; + private DokterRawatBersamaId id; - @Column(nullable = false) - @NotNull(message = "Tanggal awal tidak boleh kosong") - private Date tanggalAwal; + @Column(nullable = false) + @NotNull(message = "Tanggal awal tidak boleh kosong") + private Date tanggalAwal; - private Date tanggalAkhir; + private Date tanggalAkhir; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "noregistrasifk", nullable = false) + @NotNull(message = "No Registrasi Harus Diisi") + @Caption(value = "No Registrasi") + private AntrianPasienDiPeriksa detailRegistrasi; + + @Column(name = "noregistrasifk", columnDefinition = "CHAR(32)", nullable = false, insertable = false, updatable = false) + private String detailRegistrasiId; } From 34542e4533e576be94dc7e38babe1d7b130b5f38 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 1 Jan 2024 19:48:54 +0700 Subject: [PATCH 3/5] Create service rekap logbook dokter Pembuatan service delete rekap untuk pembaharuan data harian --- .../dao/RekapLogbookDokterDao.java | 5 ++++ .../service/RekapLogbookDokterService.java | 13 ++++++++ .../impl/RekapLogbookDokterServiceImpl.java | 30 +++++++++++++++++++ .../task/schedule/LogbookTask.java | 10 ++++++- 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RekapLogbookDokterService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekapLogbookDokterServiceImpl.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RekapLogbookDokterDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RekapLogbookDokterDao.java index 913d7bc5..1549f399 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RekapLogbookDokterDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RekapLogbookDokterDao.java @@ -3,10 +3,15 @@ package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.RekapLogbookDokter; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Date; +import java.util.List; + /** * @author salmanoe * @version 1.0.0 * @since 07/11/2023 */ public interface RekapLogbookDokterDao extends JpaRepository { + + List findByBulanBetween(Date tglAwal, Date tglAkhir); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RekapLogbookDokterService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RekapLogbookDokterService.java new file mode 100644 index 00000000..f3a2715e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RekapLogbookDokterService.java @@ -0,0 +1,13 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.Date; + +/** + * @author Salman + * @version 1.0.0 + * @since 01/01/2024 + */ +public interface RekapLogbookDokterService { + + void deleteByPeriod(Date tglAwal, Date tglAkhir); +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekapLogbookDokterServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekapLogbookDokterServiceImpl.java new file mode 100644 index 00000000..77b71a77 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekapLogbookDokterServiceImpl.java @@ -0,0 +1,30 @@ +package com.jasamedika.medifirst2000.service.impl; + +import com.jasamedika.medifirst2000.dao.RekapLogbookDokterDao; +import com.jasamedika.medifirst2000.entities.RekapLogbookDokter; +import com.jasamedika.medifirst2000.service.RekapLogbookDokterService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @author Salman + * @version 1.0.0 + * @since 01/01/2024 + */ +@Service +@Transactional +public class RekapLogbookDokterServiceImpl implements RekapLogbookDokterService { + + @Autowired + private RekapLogbookDokterDao rekapLogbookDokterDao; + + @Override + public void deleteByPeriod(Date tglAwal, Date tglAkhir) { + List listRekap = rekapLogbookDokterDao.findByBulanBetween(tglAwal, tglAkhir); + rekapLogbookDokterDao.delete(listRekap); + } +} diff --git a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java index 00ec71a6..c6795eae 100644 --- a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java +++ b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java @@ -6,6 +6,7 @@ import com.jasamedika.medifirst2000.entities.KelompokPasien; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.RekapLogbookDokter; import com.jasamedika.medifirst2000.service.PelayananPasienService; +import com.jasamedika.medifirst2000.service.RekapLogbookDokterService; import com.jasamedika.medifirst2000.util.DateUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,7 +38,10 @@ public class LogbookTask { @Autowired private PelayananPasienService pelayananPasienService; - @Scheduled(cron = "0 0 0 6 * ?") + @Autowired + private RekapLogbookDokterService rekapLogbookDokterService; + + @Scheduled(cron = "0 0 0 1-6 * ?") public void saveRekapLogbookDokter() { LOGGER.info("Simpan rekapitulasi logbook dokter"); @@ -45,6 +49,10 @@ public class LogbookTask { Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Date tglAwal = DateUtil.startMonth(date); Date tglAkhir = DateUtil.endMonth(date); + { + // Delete untuk pembaharuan data + rekapLogbookDokterService.deleteByPeriod(tglAwal, tglAkhir); + } Set idPegawaiByTglPelayanan = pelayananPasienPetugasDao.findPegawaiByTglPelayanan(tglAwal, tglAkhir); DateFormat df = new SimpleDateFormat("yyyy-MM"); String bulan = df.format(date); From 4cece06cb02c4d739efde422941a2f7de6d59368 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 2 Jan 2024 14:23:22 +0700 Subject: [PATCH 4/5] Update model entities Pembuatan relasi aturan pakai di fitur verifikasi farmasi --- .../entities/PelayananPasien.java | 18 ++ .../entities/PelayananPasienRetur.java | 284 ++++++++++++++++++ .../vo/PelayananPasienReturVO.java | 161 ++++++++++ .../medifirst2000/vo/PelayananPasienVO.java | 10 + 4 files changed, 473 insertions(+) create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienRetur.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienReturVO.java diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java index 8f40a59d..7c047a8a 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java @@ -11,6 +11,8 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; +import static javax.persistence.FetchType.LAZY; + @Getter @Setter @Entity @@ -272,4 +274,20 @@ public class PelayananPasien extends MedicalRecordTransaction { private Boolean isPaket; private Boolean isSelisihPaket; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "aturanpakaifk") + @Caption(value = "Aturan Pakai") + private AturanPakai aturanPakaiReguler; + + @Column(name = "aturanpakaifk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String aturanPakaiRegulerId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "aturanpakaisignafk") + @Caption(value = "Aturan Pakai Signa") + private AturanPakaiSigna aturanPakaiSigna; + + @Column(name = "aturanpakaisignafk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String aturanPakaiSignaId; } \ No newline at end of file diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienRetur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienRetur.java new file mode 100644 index 00000000..1d81d8e8 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienRetur.java @@ -0,0 +1,284 @@ +package com.jasamedika.medifirst2000.entities; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import static javax.persistence.FetchType.LAZY; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 02/01/2024 + */ +@Getter +@Setter +@Entity +@Table(name = "pelayananpasienretur_t") +public class PelayananPasienRetur extends MedicalRecordTransaction { + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "Generik") + @Caption(value = "Generik") + private Generik generik; + + @Column(name = "Generik", insertable = false, updatable = false) + private Integer generikId; + + @Caption(value = "statusOrder") + @Column(name = "statusOrder") + private Byte statusOrder; + + @Caption(value = "jasa") + @Column(name = "jasa") + private Double jasa; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "KelasFk") + @Caption(value = "Produk") + private Kelas kelas; + + @Column(name = "KelasFk", insertable = false, updatable = false) + private Integer kelasId; + + @Caption(value = "Is Pasien") + @Column(name = "isPasien") + private Boolean isPasien; + + @Caption(value = "Is Pasien") + @Column(name = "isObat") + private Boolean isObat; + + @Caption(value = "Is Pasien") + @Column(name = "isDosis") + private Boolean isDosis; + + @Caption(value = "Is Pasien") + @Column(name = "isRoute") + private Boolean isRoute; + + @Caption(value = "Is Pasien") + @Column(name = "isDokumentasi") + private Boolean isDokumentasi; + + @Caption(value = "Is Pasien") + @Column(name = "isWaktu") + private Boolean isWaktu; + + @Caption(value = "Is Pasien") + @Column(name = "isInformasi") + private Boolean isInformasi; + + @Caption(value = "Is Benar") + @Column(name = "isBenar") + private Boolean isBenar; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "StrukFk") + private StrukPelayanan strukPelayanan; + + @Column(name = "StrukFk", nullable = false, insertable = false, updatable = false) + private String strukFk; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "StrukTerimaFk") + private StrukPelayanan strukTerima; + + @Column(name = "StrukTerimaFk", insertable = false, updatable = false) + private String strukTerimaId; + + @Caption(value = "nilaiKonversi") + @Column(name = "nilaiKonversi") + private Float nilaiKonversi; + + @Caption(value = "Status") + @Column(name = "status") + private String status; + + @Caption(value = "Tanggal Pelayanan") + @Column(name = "TglPelayanan") + private Date tglPelayanan; + + @Caption(value = "Harga Satuan") + @Column(name = "hargaSatuan") + private Double hargaSatuan; + + @Caption(value = "Harga Jual") + @Column(name = "HargaJual") + private Double hargaJual; + + @Caption(value = "Nilai Normal") + @Column(name = "NilaiNormal") + private Byte nilaiNormal; + + @Caption(value = "Piutang Penjamin") + @Column(name = "piutangPenjamin") + private Double piutangPenjamin; + + @Caption(value = "Piutang Rumah Sakit") + @Column(name = "piutangRumahSakit") + private Double piutangRumahSakit; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "NoBatch") + @Caption(value = "Struk Order") + private StrukPelayananDNoBatch noBatch; + + @Column(name = "NoBatch", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String noBatchId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "satuanViewFK") + @Caption(value = "satuanView") + private SatuanStandar satuanView; + + @Column(name = "satuanViewFK", insertable = false, updatable = false) + private Integer satuanViewId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "StrukOrderFk") + @Caption(value = "Struk Order") + private StrukOrder strukOrder; + + @Column(name = "StrukOrderFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String strukOrderId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "JenisObatFk") + @Caption(value = "Jenis Obat") + private JenisObat jenisObat; + + @Column(name = "JenisObatFk", insertable = false, updatable = false) + private Integer jenisObatId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ProdukFk") + @NotNull(message = "Produk Harus Diisi") + @Caption(value = "Produk") + private Produk produk; + + @Column(name = "ProdukFk", insertable = false, updatable = false) + private Integer produkId; + + @Column(name = "Stock", nullable = false, length = 100) + @Caption(value = "Stock") + private Double stock; + + @Column(name = "Jumlah", nullable = false, length = 100) + @Caption(value = "Jumlah") + private Double jumlah; + + @Column(name = "AturanPakai", length = 100) + @Caption(value = "AturanPakai") + private String aturanPakai; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "RouteFk") + @Caption(value = "Route") + private RouteFarmasi route; + + @Column(name = "RouteFk", insertable = false, updatable = false) + private Integer routeId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "KeteranganPakaiFk") + @Caption(value = "Keterangan Pakai") + private Stigma keteranganPakai; + + @Column(name = "KeteranganPakaiFk", insertable = false, updatable = false) + private Integer keteranganPakaiId; + + @Column(name = "KeteranganPakai2", length = 100) + @Caption(value = "KeteranganPakai2") + private String keteranganPakai2; + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Kelompok Transaksi") + @JoinColumn(name = "KdKelompokTransaksi") + private KelompokTransaksi kelompokTransaksi; + + @Column(name = "KdKelompokTransaksi", insertable = false, updatable = false) + private Integer kelompokTransaksiId; + + @Column(name = "KeteranganLain", length = 100) + @Caption(value = "KeteranganLain") + private String keteranganLain; + + @Caption(value = "Harga Discount") + @Column(name = "hargaDiscount") + private Double hargaDiscount; + + @Caption(value = "hargaNetto") + @Column(name = "hargaNetto") + private Double hargaNetto; + + @Caption(value = "dosis") + @Column(name = "dosis") + private Float dosis; + + @Caption(value = "NoRecTriger") + @Column(name = "noRecTriger") + private String noRecTriger; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "StrukResepFk") + @Caption(value = "StrukResep") + private StrukResep strukResep; + + @Column(name = "StrukResepFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String strukResepId; + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "JenisKemasan") + @JoinColumn(name = "JenisKemasanFK") + private JenisKemasan jenisKemasan; + + @Column(name = "JenisKemasanFK", insertable = false, updatable = false) + private Integer jenisKemasanId; + + @Column(name = "rKe") + @Caption(value = "rKe") + private String rKe; + + @JsonBackReference + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien") + private Set pelayananPasienPetugasSet = new HashSet<>(); + + @JsonBackReference + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien") + private Set racikan = new HashSet<>(); + + @JsonBackReference + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien") + private Set pelayananPasienDetailSet = new HashSet<>(); + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "strukreturfk") + @Caption(value = "Struk Retur") + private StrukRetur strukRetur; + + @Column(name = "strukreturfk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String strukReturId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "aturanpakaifk") + @Caption(value = "Aturan Pakai") + private AturanPakai aturanPakaiReguler; + + @Column(name = "aturanpakaifk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String aturanPakaiRegulerId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "aturanpakaisignafk") + @Caption(value = "Aturan Pakai Signa") + private AturanPakaiSigna aturanPakaiSigna; + + @Column(name = "aturanpakaisignafk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) + private String aturanPakaiSignaId; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienReturVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienReturVO.java new file mode 100644 index 00000000..c228120c --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienReturVO.java @@ -0,0 +1,161 @@ +package com.jasamedika.medifirst2000.vo; + +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 02/01/2024 + */ +@Getter +@Setter +public class PelayananPasienReturVO extends MedicalRecordTransactionVO { + @Caption(value = "Generik") + private GenerikVO generik; + + @Caption(value = "statusOrder") + private Byte statusOrder; + + @Caption(value = "Jasa Farmasi") + private Double jasa; + + @Caption(value = "Produk") + private KelasVO kelas; + + @Caption(value = "Is Pasien") + private Boolean isPasien; + + @Caption(value = "Is Pasien") + private Boolean isObat; + + @Caption(value = "Is Pasien") + private Boolean isDosis; + + @Caption(value = "Is Pasien") + private Boolean isRoute; + + @Caption(value = "Is Pasien") + private Boolean isDokumentasi; + + @Caption(value = "Is Pasien") + private Boolean isWaktu; + + @Caption(value = "Is Pasien") + private Boolean isInformasi; + + @Caption(value = "Is Benar") + private Boolean isBenar; + + private StrukPelayananVO strukPelayanan; + + @Caption(value = "Status") + private String status; + + @Caption(value = "Tanggal Pelayanan") + private Date tglPelayanan; + + @Caption(value = "Harga Satuan") + private Double hargaSatuan; + + @Caption(value = "Harga Jual") + private Double hargaJual; + + @Caption(value = "Nilai Normal") + private Byte nilaiNormal; + + @Caption(value = "Piutang Penjamin") + private Double piutangPenjamin; + + @Caption(value = "Piutang Rumah Sakit") + private Double piutangRumahSakit; + + @Caption(value = "Struk Order") + private StrukPelayananDNoBatchVO noBatch; + + @Caption(value = "Struk Order") + private StrukOrderVO strukOrder; + + @Caption(value = "Jenis Obat") + private JenisObatVO jenisObat; + + @NotNull(message = "Produk Harus Diisi") + @Caption(value = "Produk") + private ProdukVO produk; + + @Caption(value = "Stock") + private Double stock; + + @Caption(value = "Jumlah") + private Double jumlah; + + @Caption(value = "AturanPakai") + private String aturanPakai; + + @Caption(value = "Route") + private RouteFarmasiVO route; + + @Caption(value = "Keterangan Pakai") + private StigmaVO keteranganPakai; + + @Caption(value = "KeteranganPakai2") + private String keteranganPakai2; + + @Caption(value = "Kelompok Transaksi") + private KelompokTransaksiVO kelompokTransaksi; + + @Caption(value = "KeteranganLain") + private String keteranganLain; + + @Caption(value = "Harga Discount") + private Double hargaDiscount; + + @Caption(value = "hargaNetto") + private Double hargaNetto; + + @Caption(value = "NoRecTriger") + private String noRecTriger; + + @Caption(value = "qty") + private Double qty; + + @Caption(value = "totalHarga") + private Double totalHarga; + + @Caption(value = "resepKe") + private Integer resepKe; + + private Set pelayananPasienPetugasSet = new HashSet<>(); + + private Set racikan = new HashSet<>(); + + private Set pelayananPasienDetailSet = new HashSet<>(); + + @Caption(value = "petugas") + private Set petugas = new HashSet<>(); + + private SatuanStandarVO satuanView; + + private Integer satuanViewId; + + @Caption(value = "Struk Retur") + private StrukReturVO strukRetur; + + private String strukReturId; + + @Caption(value = "Aturan Pakai") + private AturanPakaiVO aturanPakaiReguler; + + private String aturanPakaiRegulerId; + + @Caption(value = "Aturan Pakai Signa") + private AturanPakaiSignaVO aturanPakaiSigna; + + private String aturanPakaiSignaId; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienVO.java index 1e33bcbd..8c47e315 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienVO.java @@ -152,4 +152,14 @@ public class PelayananPasienVO extends MedicalRecordTransactionVO { private Boolean isPaket; private Boolean isSelisihPaket; + + @Caption(value = "Aturan Pakai") + private AturanPakaiVO aturanPakaiReguler; + + private String aturanPakaiRegulerId; + + @Caption(value = "Aturan Pakai Signa") + private AturanPakaiSignaVO aturanPakaiSigna; + + private String aturanPakaiSignaId; } \ No newline at end of file From 0db7dad001bae6e1f38c8329006b585552584d61 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 9 Jan 2024 14:52:45 +0700 Subject: [PATCH 5/5] Create model entities Pembuatan table mapping KFA obat dan variasinya berdasarkan distributor --- .../entities/MapKfaToProduk.java | 90 +++++++++++++++++++ .../entities/MapKfaToProdukVarian.java | 70 +++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProduk.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProdukVarian.java diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProduk.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProduk.java new file mode 100644 index 00000000..61c36dc1 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProduk.java @@ -0,0 +1,90 @@ +package com.jasamedika.medifirst2000.entities; + +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.NotBlank; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +import static javax.persistence.FetchType.LAZY; +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 09/01/2024 + */ +@Getter +@Setter +@Entity +@Table(name = "b_sh_map_kfa_toproduk") +public class MapKfaToProduk implements Serializable { + private static final long serialVersionUID = -3622226917866786718L; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "gen_b_sh_map_kfa_toproduk_id_seq") + @SequenceGenerator(name = "gen_b_sh_map_kfa_toproduk_id_seq", sequenceName = "public.b_sh_map_kfa_toproduk_sequence", allocationSize = 1) + @Column(name = "id", columnDefinition = "int4 default nextval('b_sh_map_kfa_toproduk_sequence'::regclass)") + protected Integer id; + + @Column(name = "statusenabled", nullable = false) + @NotNull(message = "Status tidak boleh kosong") + @Caption("Status Enabled") + private Boolean statusEnabled; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "id_smart", nullable = false) + @NotNull(message = "Produk tidak boleh kosong") + @Caption(value = "Produk") + private Produk produk; + + @Column(name = "id_smart", insertable = false, updatable = false) + private Integer produkId; + + @Column(name = "nama_produk", length = 500, nullable = false, unique = true) + @Size(max = 500, message = "Nama produk maksimal {max} karakter") + @NotBlank(message = "Nama produk tidak boleh kosong") + @Caption("Nama Produk") + private String namaProduk; + + @Column(name = "satuan_dosis") + @Caption("Satuan Dosis") + private String satuanDosis; + + @Column(name = "perkiraan_satuan_besar") + @Caption("Perkiraan Satuan Besar") + private String perkiraanSatuanBesar; + + @Caption("Formula") + private String formula; + + @Column(name = "kode_kfa_1") + @Caption("Kode KFA 1") + private Integer kodeKfa1; + + @Column(name = "nama_kfa_1", length = 500) + @Size(max = 500, message = "Nama KFA 1 tidak boleh kosong") + @Caption("Nama KFA 1") + private String namaKfa1; + + @Column(name = "kode_kfa_2") + @Caption("Kode KFA 2") + private Integer kodeKfa2; + + @Column(name = "nama_kfa_2", length = 500) + @Size(max = 500, message = "Nama KFA 2 tidak boleh kosong") + @Caption("Nama KFA 2") + private String namaKfa2; + + @Column(name = "dosis_kfa_ingredients") + @Caption("Dosis KFA Ingredients") + private String dosisKfaIngredients; + + @Column(name = "satuan_kfa_ingredients") + @Caption("Satuan KFA Ingredients") + private String satuanKfaIngredients; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProdukVarian.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProdukVarian.java new file mode 100644 index 00000000..0904e705 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKfaToProdukVarian.java @@ -0,0 +1,70 @@ +package com.jasamedika.medifirst2000.entities; + +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.NotBlank; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +import static javax.persistence.FetchType.LAZY; +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 09/01/2024 + */ +@Getter +@Setter +@Entity +@Table(name = "b_sh_map_kfa_toproduk_varian") +public class MapKfaToProdukVarian implements Serializable { + private static final long serialVersionUID = 7946989249822624944L; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "gen_b_sh_map_kfa_toproduk_varian_id_seq") + @SequenceGenerator(name = "gen_b_sh_map_kfa_toproduk_varian_id_seq", sequenceName = "public.b_sh_map_kfa_toproduk_varian_sequence", allocationSize = 1) + @Column(name = "id", columnDefinition = "int4 default nextval('b_sh_map_kfa_toproduk_varian_sequence'::regclass)") + protected Integer id; + + @Column(name = "statusenabled", nullable = false) + @NotNull(message = "Status tidak boleh kosong") + @Caption("Status Enabled") + private Boolean statusEnabled; + + @Column(name = "nama_varian", length = 500, nullable = false, unique = true) + @Size(max = 500, message = "Nama varian maksimal {max} karakter") + @NotBlank(message = "Nama varian tidak boleh kosong") + @Caption("Nama Varian") + private String namaVarian; + + @Column(name = "kode_kfa_3") + @Caption("Kode KFA 3") + private Integer kodeKfa3; + + @Column(name = "nama_kfa_3", length = 500) + @Size(max = 500, message = "Nama KFA 3 tidak boleh kosong") + private String namaKfa3; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "rekanan_id", nullable = false) + @NotNull(message = "Rekanan distributor tidak boleh kosong") + @Caption(value = "Rekanan distributor") + private Rekanan distributor; + + @Column(name = "rekanan_id", insertable = false, updatable = false) + private Integer distributorId; + + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "b_sh_map_kfa_toproduk_id", nullable = false) + @NotNull(message = "Mapping KFA tidak boleh kosong") + @Caption(value = "Mapping KFA") + private MapKfaToProduk mapKfaToProduk; + + @Column(name = "b_sh_map_kfa_toproduk_id", insertable = false, updatable = false) + private Integer mapKfaToProdukId; +}