From 73aa290766f4358a36c7d5408868c5c0db95a265 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 20 Jun 2022 14:43:40 +0700 Subject: [PATCH] Add PelayananFarmakologiService Pembuatan service pencatatan pelayanan dokter farmakologi --- .../dao/PelayananFarmakologiDao.java | 47 +++++ .../service/PelayananFarmakologiService.java | 14 ++ .../impl/PelayananFarmakologiServiceImpl.java | 160 ++++++++++++++++++ .../entities/PelayananFarmakologi.java | 125 ++++++++++++++ .../vo/PelayananFarmakologiVO.java | 101 +++++++++++ .../src/main/resources/hibernate.cfg.xml | 1 + 6 files changed, 448 insertions(+) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananFarmakologiDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananFarmakologiService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananFarmakologiServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananFarmakologi.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananFarmakologiVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananFarmakologiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananFarmakologiDao.java new file mode 100644 index 00000000..76e83b0a --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananFarmakologiDao.java @@ -0,0 +1,47 @@ +package com.jasamedika.medifirst2000.dao; + +import java.util.List; +import java.util.Map; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.PelayananFarmakologi; + +/** + * @author salmanoe + * @since Jun 20, 2022 + * + */ +@Repository("pelayananFarmakologiDao") +public interface PelayananFarmakologiDao extends PagingAndSortingRepository { + + @Query("select pf from PelayananFarmakologi pf " + "where pf.statusEnabled is true " + + "and to_char(pf.tglPelayanan,'yyyy-MM') = :bulan " + "and pf.pegawaiId = :pegawaiId") + List findAllByKontrak(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai); + + @Query("select new Map(pfk.noRec as noRec," + "pfk.tglPelayanan as tglPelayanan," + "pfk.skor as skor," + + "pfk.jumlah as jumlah," + "pfk.skor*pfk.jumlah as tSkor," + "pfk.catatan as detail," + + "pf.id as produkId," + "pf.namaProduk as namaProduk," + "pf.kdProduk as kdProduk," + + "(case when pf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' " + + "when pf.kdProduk = 2 then 'pelayanan Pasien (Nontarif)' " + + "when pf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk," + "pg.id as pegawaiId," + + "pg.namaLengkap as namaLengkap) " + "from PelayananFarmakologi pfk " + "inner join pfk.produk pf " + + "inner join pfk.pegawai pg " + "where pfk.statusEnabled is true " + "and pf.statusEnabled is true " + + "and pg.statusEnabled is true " + "and to_char(pfk.tglPelayanan,'yyyy-MM') = :bulan " + + "and pfk.pegawaiId = :pegawaiId " + "order by pf.namaProduk, pfk.tglPelayanan") + List> findPelayananFarmakologi(@Param("bulan") String bulan, + @Param("pegawaiId") Integer idPegawai); + + @Query("select new Map(pfk.tglPelayanan as tglPelayanan," + + "to_char(pfk.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tglPelayananFormatted," + "pfk.jumlah as jumlah," + + "pfk.catatan as catatan) " + "from PelayananFarmakologi pfk " + "inner join pfk.pegawai pg " + + "inner join pfk.produk pf " + "where pfk.statusEnabled is true " + "and pf.statusEnabled is true " + + "and pg.statusEnabled is true " + "and pg.id = :pegawaiId " + "and pf.id = :produkId " + + "and to_char(pfk.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan") + List> findPelayananFarmakologiDetail(@Param("pegawaiId") Integer idPegawai, + @Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananFarmakologiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananFarmakologiService.java new file mode 100644 index 00000000..91f10afa --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananFarmakologiService.java @@ -0,0 +1,14 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.entities.PelayananFarmakologi; +import com.jasamedika.medifirst2000.vo.PelayananFarmakologiVO; + +/** + * @author salmanoe + * @since Jun 20, 2022 + * + */ +public interface PelayananFarmakologiService + extends BaseVoService { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananFarmakologiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananFarmakologiServiceImpl.java new file mode 100644 index 00000000..ed520f9f --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananFarmakologiServiceImpl.java @@ -0,0 +1,160 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.PelayananFarmakologiDao; +import com.jasamedika.medifirst2000.dao.SkoringTindakanFarmakologiDao; +import com.jasamedika.medifirst2000.entities.Pegawai; +import com.jasamedika.medifirst2000.entities.PelayananFarmakologi; +import com.jasamedika.medifirst2000.entities.ProdukFarmakologi; +import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.PelayananFarmakologiService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.PelayananFarmakologiVO; +import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; + +/** + * @author salmanoe + * @since Jun 20, 2022 + * + */ +@Service("pelayananFarmakologiService") +public class PelayananFarmakologiServiceImpl extends BaseVoServiceImpl implements PelayananFarmakologiService { + + @Autowired + private BaseConverterImpl pelayananFarmakologiConverter; + + @Autowired + private BaseConverterImpl produkFarmakologiConverter; + + @Autowired + private BaseConverterImpl pegawaiConverter; + + @Autowired + private PelayananFarmakologiDao pelayananFarmakologiDao; + + @Autowired + private SkoringTindakanFarmakologiDao skoringTindakanFarmakologiDao; + + @Override + public PelayananFarmakologiVO add(PelayananFarmakologiVO vo) throws JpaSystemException, ServiceVOException { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat mf = new SimpleDateFormat("yyyy-MM"); + + if (mf.format(vo.getTglPelayanan()).equals(mf.format(new Date()))) { + PelayananFarmakologi pelayananFarmakologi = pelayananFarmakologiConverter.transferVOToModel(vo, + new PelayananFarmakologi()); + + ProdukFarmakologi produk = produkFarmakologiConverter.transferVOToModel(vo.getProduk(), + new ProdukFarmakologi()); + pelayananFarmakologi.setProduk(produk); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananFarmakologi.setPegawai(pegawai); + + SkoringTindakanFarmakologi skoringFarmakologi = skoringTindakanFarmakologiDao + .findLast(vo.getProduk().getId(), df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringFarmakologi)) { + skoringFarmakologi.setSkor(skoringFarmakologi.getSkor()); + } else { + skoringFarmakologi.setSkor(1.00); + } + + PelayananFarmakologi resultModel = pelayananFarmakologiDao.save(pelayananFarmakologi); + + PelayananFarmakologiVO resultVO = new PelayananFarmakologiVO(); + resultVO = pelayananFarmakologiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } else { + return null; + } + } + + @Override + public PelayananFarmakologiVO update(PelayananFarmakologiVO vo) throws JpaSystemException, ServiceVOException { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + PelayananFarmakologi pelayananFarmakologiLama = pelayananFarmakologiDao.findOne(vo.getNoRec()); + + PelayananFarmakologi pelayananFarmakologiBaru = pelayananFarmakologiConverter.transferVOToModel(vo, + pelayananFarmakologiLama); + + ProdukFarmakologi produk = produkFarmakologiConverter.transferVOToModel(vo.getProduk(), + new ProdukFarmakologi()); + pelayananFarmakologiBaru.setProduk(produk); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananFarmakologiBaru.setPegawai(pegawai); + + SkoringTindakanFarmakologi skoringFarmakologi = skoringTindakanFarmakologiDao.findLast(vo.getProduk().getId(), + df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringFarmakologi)) { + pelayananFarmakologiBaru.setSkor(skoringFarmakologi.getSkor()); + } else { + pelayananFarmakologiBaru.setSkor(1.00); + } + + PelayananFarmakologi resultModel = pelayananFarmakologiDao.save(pelayananFarmakologiBaru); + + PelayananFarmakologiVO resultVO = new PelayananFarmakologiVO(); + resultVO = pelayananFarmakologiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + pelayananFarmakologiDao.delete(key); + + return true; + } + + @Override + public PelayananFarmakologiVO findById(String key) throws JpaSystemException { + PelayananFarmakologiVO result = new PelayananFarmakologiVO(); + + PelayananFarmakologi pelayananFarmakologi = pelayananFarmakologiDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(pelayananFarmakologi)) { + result = pelayananFarmakologiConverter.transferModelToVO(pelayananFarmakologi, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = pelayananFarmakologiDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (PelayananFarmakologi model : models) { + PelayananFarmakologiVO vo = new PelayananFarmakologiVO(); + vo = pelayananFarmakologiConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananFarmakologi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananFarmakologi.java new file mode 100644 index 00000000..eb4827c2 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananFarmakologi.java @@ -0,0 +1,125 @@ +package com.jasamedika.medifirst2000.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jun 20, 2022 + * + */ +@Entity +@Table(name = "pelayananfarmakologi_t") +public class PelayananFarmakologi extends BaseTransaction { + + @ManyToOne(fetch = FetchType.LAZY) + @NotNull(message = "Produk Farmakologi tidak boleh kosong") + @JoinColumn(name = "objectprodukfarmakologifk") + @Caption(value = "Produk Farmakologi") + private ProdukFarmakologi produk; + + @Column(name = "objectprodukfarmakologifk", insertable = false, updatable = false, nullable = false) + private Integer produkId; + + @Column(name = "tglpelayanan", nullable = false) + @Caption(value = "Tanggal Pelayanan") + @Temporal(TemporalType.TIMESTAMP) + private Date tglPelayanan; + + @Column(name = "skor", nullable = false) + @Caption(value = "Nilai Skor") + private Double skor; + + @Column(name = "jumlah", nullable = false) + @Caption(value = "Jumlah") + private Double jumlah; + + @Column(name = "catatan", nullable = true) + @Caption(value = "Catatan") + private String catatan; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "objectpegawaifk") + @Caption(value = "Pegawai") + private Pegawai pegawai; + + @Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = true) + private Integer pegawaiId; + + public ProdukFarmakologi getProduk() { + return produk; + } + + public void setProduk(ProdukFarmakologi produk) { + this.produk = produk; + } + + public Integer getProdukId() { + return produkId; + } + + public void setProdukId(Integer produkId) { + this.produkId = produkId; + } + + public Date getTglPelayanan() { + return tglPelayanan; + } + + public void setTglPelayanan(Date tglPelayanan) { + this.tglPelayanan = tglPelayanan; + } + + public Double getSkor() { + return skor; + } + + public void setSkor(Double skor) { + this.skor = skor; + } + + public Double getJumlah() { + return jumlah; + } + + public void setJumlah(Double jumlah) { + this.jumlah = jumlah; + } + + public String getCatatan() { + return catatan; + } + + public void setCatatan(String catatan) { + this.catatan = catatan; + } + + public Pegawai getPegawai() { + return pegawai; + } + + public void setPegawai(Pegawai pegawai) { + this.pegawai = pegawai; + } + + public Integer getPegawaiId() { + return pegawaiId; + } + + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananFarmakologiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananFarmakologiVO.java new file mode 100644 index 00000000..4339d25d --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananFarmakologiVO.java @@ -0,0 +1,101 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jun 20, 2022 + * + */ +public class PelayananFarmakologiVO extends BaseTransactionVO { + + @Caption(value = "Produk Farmakologi") + private ProdukFarmakologiVO produk; + + private Integer produkId; + + @Caption(value = "Tanggal Pelayanan") + private Date tglPelayanan; + + @Caption(value = "Nilai Skor") + private Double skor; + + @Caption(value = "Jumlah") + private Double jumlah; + + @Caption(value = "Catatan") + private String catatan; + + @Caption(value = "Pegawai") + private PegawaiVO pegawai; + + private Integer pegawaiId; + + public ProdukFarmakologiVO getProduk() { + return produk; + } + + public void setProduk(ProdukFarmakologiVO produk) { + this.produk = produk; + } + + public Integer getProdukId() { + return produkId; + } + + public void setProdukId(Integer produkId) { + this.produkId = produkId; + } + + public Date getTglPelayanan() { + return tglPelayanan; + } + + public void setTglPelayanan(Date tglPelayanan) { + this.tglPelayanan = tglPelayanan; + } + + public Double getSkor() { + return skor; + } + + public void setSkor(Double skor) { + this.skor = skor; + } + + public Double getJumlah() { + return jumlah; + } + + public void setJumlah(Double jumlah) { + this.jumlah = jumlah; + } + + public String getCatatan() { + return catatan; + } + + public void setCatatan(String catatan) { + this.catatan = catatan; + } + + public PegawaiVO getPegawai() { + return pegawai; + } + + public void setPegawai(PegawaiVO pegawai) { + this.pegawai = pegawai; + } + + public Integer getPegawaiId() { + return pegawaiId; + } + + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; + } + +} diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index 51212510..1ab766f2 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -705,5 +705,6 @@ +