Add PelayananFarmakologiService

Pembuatan service pencatatan pelayanan dokter farmakologi
This commit is contained in:
salmanoe 2022-06-20 14:43:40 +07:00
parent 0b9aaf29b8
commit 73aa290766
6 changed files with 448 additions and 0 deletions

View File

@ -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<PelayananFarmakologi, String> {
@Query("select pf from PelayananFarmakologi pf " + "where pf.statusEnabled is true "
+ "and to_char(pf.tglPelayanan,'yyyy-MM') = :bulan " + "and pf.pegawaiId = :pegawaiId")
List<PelayananFarmakologi> 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<Map<String, Object>> 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<Map<String, Object>> findPelayananFarmakologiDetail(@Param("pegawaiId") Integer idPegawai,
@Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan);
}

View File

@ -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<PelayananFarmakologi, PelayananFarmakologiVO, String> {
}

View File

@ -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<PelayananFarmakologiVO, PelayananFarmakologi> pelayananFarmakologiConverter;
@Autowired
private BaseConverterImpl<ProdukFarmakologiVO, ProdukFarmakologi> produkFarmakologiConverter;
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> 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<PelayananFarmakologiVO> findAll() throws JpaSystemException {
List<PelayananFarmakologiVO> result = new ArrayList<PelayananFarmakologiVO>();
Iterable<PelayananFarmakologi> 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<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -705,5 +705,6 @@
<mapping class="com.jasamedika.medifirst2000.entities.MapProdukKelompokKerja"/>
<mapping class="com.jasamedika.medifirst2000.entities.ProdukFarmakologi"/>
<mapping class="com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi"/>
<mapping class="com.jasamedika.medifirst2000.entities.PelayananFarmakologi"/>
</session-factory>
</hibernate-configuration>