Add SkoringTindakanFarmakologiService

Pembuatan service skoring tindakan kelompok kerja farmakologi
This commit is contained in:
salmanoe 2022-06-20 10:26:15 +07:00
parent 1bd960d657
commit dabd0c1460
6 changed files with 477 additions and 0 deletions

View File

@ -0,0 +1,87 @@
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.SkoringTindakanFarmakologi;
import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes;
/**
* @author salmanoe
* @since Jun 20, 2022
*
*/
@Repository("skoringTindakanFarmakologiDao")
public interface SkoringTindakanFarmakologiDao extends PagingAndSortingRepository<SkoringTindakanFarmakologi, String> {
String strAllEnabled = "select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
+ "stf.skor as skor,stf.statusVerifikasi as kdVerif,"
+ "(case when stf.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stf.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stf.tanggalMulaiBerlaku as tglMulaiBerlaku,stf.tanggalPembaharuanData as tglPembaharuanData,"
+ "prf.id as produkId,prf.namaProduk as namaProduk,"
+ "(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as jenisProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') ";
String produk = "and lower(prf.namaProduk) like %:namaProduk% ";
String statusVerifikasi = "and stf.statusVerifikasi = :isVerif ";
String sortSearch = "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc";
@Query(strAllEnabled + sortSearch)
List<Map<String, Object>> findAllEnabled();
@Query(strAllEnabled + produk + sortSearch)
List<Map<String, Object>> findAllEnabledByProduk(@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + statusVerifikasi + sortSearch)
List<Map<String, Object>> findAllEnabledByVerif(@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + produk + statusVerifikasi + sortSearch)
List<Map<String, Object>> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif);
String strCekDupSkoring = "select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
+ "where stf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk ";
String skor = " and stf.skor = :skor";
String tglBerlaku = " and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku";
String idSkoring = " and stf.noRec <> :noRec";
String sortTglBerlaku = " order by stf.tanggalMulaiBerlaku desc";
@Query(strCekDupSkoring + skor + sortTglBerlaku)
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText);
@Query(strCekDupSkoring + tglBerlaku)
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText);
@Query(strCekDupSkoring + skor + idSkoring + sortTglBerlaku)
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText, @Param("noRec") String noRec);
@Query(strCekDupSkoring + tglBerlaku + idSkoring)
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText,
@Param("noRec") String noRec);
@Query("select new Map(stf.noRec as noRec," + "stf.skor as skor,prf.namaProduk as namaProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and stf.noRec in (:listNorec)")
List<Map<String, Object>> findAllDup(@Param("listNorec") List<String> listNorec);
}

View File

@ -0,0 +1,27 @@
package com.jasamedika.medifirst2000.service;
import java.util.List;
import java.util.Map;
import org.springframework.orm.jpa.JpaSystemException;
import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi;
import com.jasamedika.medifirst2000.vo.SkoringTindakanFarmakologiVO;
/**
* @author salmanoe
* @since Jun 20, 2022
*
*/
public interface SkoringTindakanFarmakologiService
extends BaseVoService<SkoringTindakanFarmakologi, SkoringTindakanFarmakologiVO, String> {
List<Map<String, Object>> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi)
throws JpaSystemException;
List<Map<String, Object>> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi,
Long tglMulaiBerlaku, String noRec) throws JpaSystemException;
Map<String, Object> findAkses(Integer idPegawai) throws JpaSystemException;
}

View File

@ -0,0 +1,171 @@
package com.jasamedika.medifirst2000.service.impl;
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 com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.LoggingUserDao;
import com.jasamedika.medifirst2000.dao.SkoringTindakanFarmakologiDao;
import com.jasamedika.medifirst2000.entities.LoggingUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.ProdukFarmakologi;
import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi;
import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.SkoringTindakanFarmakologiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanFarmakologiVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO;
/**
* @author salmanoe
* @since Jun 20, 2022
*
*/
public class SkoringTindakanFarmakologiServiceImpl extends BaseVoServiceImpl
implements SkoringTindakanFarmakologiService {
@Autowired
private BaseConverterImpl<SkoringTindakanFarmakologiVO, SkoringTindakanFarmakologi> skoringTindakanConverter;
@Autowired
private BaseConverterImpl<ProdukFarmakologiVO, ProdukFarmakologi> produkFarmakologiConverter;
@Autowired
private SkoringTindakanFarmakologiDao skoringTindakanDao;
@Autowired
private LoggingUserDao loggingUserDao;
public void addLoggingUser(Integer idLoginUser, String idReferensi, String keterangan) {
LoggingUser loggingUser = new LoggingUser();
LoginUser loginUser = new LoginUser();
loggingUser.setKdProfile((short) 0);
loggingUser.setStatusEnabled(true);
loggingUser.setTanggal(new Date());
loginUser.setId(idLoginUser);
loggingUser.setLoginUser(loginUser);
loggingUser.setJenisLog("Skoring Tindakan Farmakologi");
loggingUser.setReferensiId(idReferensi);
loggingUser.setReferensi("sdm_skoringtindakanfarmakologi_t");
loggingUser.setKeterangan(keterangan);
loggingUserDao.save(loggingUser);
}
@Override
public SkoringTindakanFarmakologiVO add(SkoringTindakanFarmakologiVO vo)
throws JpaSystemException, ServiceVOException {
ProdukFarmakologi produk = produkFarmakologiConverter.transferVOToModel(vo.getProduk(),
new ProdukFarmakologi());
SkoringTindakanFarmakologi skoringTindakan = skoringTindakanConverter.transferVOToModel(vo,
new SkoringTindakanFarmakologi());
skoringTindakan.setProduk(produk);
skoringTindakan.setTanggalPembaharuanData(new Date());
SkoringTindakanFarmakologi resultModel = skoringTindakanDao.save(skoringTindakan);
addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Buat data");
SkoringTindakanFarmakologiVO resultVO = new SkoringTindakanFarmakologiVO();
resultVO = skoringTindakanConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public SkoringTindakanFarmakologiVO update(SkoringTindakanFarmakologiVO vo)
throws JpaSystemException, ServiceVOException {
SkoringTindakanFarmakologi skoringTindakanLama = skoringTindakanDao.findOne(vo.getNoRec());
ProdukFarmakologi produk = produkFarmakologiConverter.transferVOToModel(vo.getProduk(),
new ProdukFarmakologi());
SkoringTindakanFarmakologi skoringTindakanBaru = skoringTindakanConverter.transferVOToModel(vo,
skoringTindakanLama);
skoringTindakanBaru.setProduk(produk);
skoringTindakanBaru.setTanggalPembaharuanData(new Date());
SkoringTindakanFarmakologi resultModel = skoringTindakanDao.save(skoringTindakanBaru);
if (vo.getStatusEnabled()) {
addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Edit data");
} else if (!vo.getStatusEnabled()) {
addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Hapus data");
}
SkoringTindakanFarmakologiVO resultVO = new SkoringTindakanFarmakologiVO();
resultVO = skoringTindakanConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(String key) throws JpaSystemException {
skoringTindakanDao.delete(key);
return true;
}
@Override
public SkoringTindakanFarmakologiVO findById(String key) throws JpaSystemException {
SkoringTindakanFarmakologiVO result = new SkoringTindakanFarmakologiVO();
SkoringTindakanFarmakologi skoringTindakan = skoringTindakanDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(skoringTindakan)) {
result = skoringTindakanConverter.transferModelToVO(skoringTindakan, result);
}
return result;
}
@Override
public List<SkoringTindakanFarmakologiVO> findAll() throws JpaSystemException {
List<SkoringTindakanFarmakologiVO> result = new ArrayList<SkoringTindakanFarmakologiVO>();
Iterable<SkoringTindakanFarmakologi> models = skoringTindakanDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (SkoringTindakanFarmakologi model : models) {
SkoringTindakanFarmakologiVO vo = new SkoringTindakanFarmakologiVO();
vo = skoringTindakanConverter.transferModelToVO(model, vo);
result.add(vo);
}
}
return result;
}
@Override
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
@Override
public List<Map<String, Object>> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi)
throws JpaSystemException {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Map<String, Object>> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi,
Long tglMulaiBerlaku, String noRec) throws JpaSystemException {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> findAkses(Integer idPegawai) throws JpaSystemException {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -0,0 +1,101 @@
package com.jasamedika.medifirst2000.entities;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
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 = "sdm_skoringtindakanfarmakologi_t")
public class SkoringTindakanFarmakologi extends BaseTransaction {
@Column(name = "skor", nullable = false)
@Caption(value = "Nilai Skor")
private Double skor;
@Column(name = "statusverifikasi", nullable = false)
@Caption(value = "Status Verifikasi")
private Boolean statusVerifikasi;
@Caption(value = "Tanggal Mulai Berlaku")
@Column(name = "tanggalmulaiberlaku", nullable = false)
@Temporal(TemporalType.DATE)
private Date tanggalMulaiBerlaku;
@Caption(value = "Tanggal Pembaharuan Data")
@Column(name = "tanggalpembaharuandata", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date tanggalPembaharuanData;
@ManyToOne
@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;
public Double getSkor() {
return skor;
}
public void setSkor(Double skor) {
this.skor = skor;
}
public Boolean getStatusVerifikasi() {
return statusVerifikasi;
}
public void setStatusVerifikasi(Boolean statusVerifikasi) {
this.statusVerifikasi = statusVerifikasi;
}
public Date getTanggalMulaiBerlaku() {
return tanggalMulaiBerlaku;
}
public void setTanggalMulaiBerlaku(Date tanggalMulaiBerlaku) {
this.tanggalMulaiBerlaku = tanggalMulaiBerlaku;
}
public Date getTanggalPembaharuanData() {
return tanggalPembaharuanData;
}
public void setTanggalPembaharuanData(Date tanggalPembaharuanData) {
this.tanggalPembaharuanData = tanggalPembaharuanData;
}
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;
}
}

View File

@ -0,0 +1,90 @@
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 SkoringTindakanFarmakologiVO extends BaseTransactionVO {
@Caption(value = "Nilai Skor")
private Double skor;
@Caption(value = "Status Verifikasi")
private Boolean statusVerifikasi;
@Caption(value = "Tanggal Mulai Berlaku")
private Date tanggalMulaiBerlaku;
@Caption(value = "Tanggal Pembaharuan Data")
private Date tanggalPembaharuanData;
@Caption(value = "Produk Perawat")
private ProdukFarmakologiVO produk;
private Integer produkId;
private Integer loginUserId;
public Double getSkor() {
return skor;
}
public void setSkor(Double skor) {
this.skor = skor;
}
public Boolean getStatusVerifikasi() {
return statusVerifikasi;
}
public void setStatusVerifikasi(Boolean statusVerifikasi) {
this.statusVerifikasi = statusVerifikasi;
}
public Date getTanggalMulaiBerlaku() {
return tanggalMulaiBerlaku;
}
public void setTanggalMulaiBerlaku(Date tanggalMulaiBerlaku) {
this.tanggalMulaiBerlaku = tanggalMulaiBerlaku;
}
public Date getTanggalPembaharuanData() {
return tanggalPembaharuanData;
}
public void setTanggalPembaharuanData(Date tanggalPembaharuanData) {
this.tanggalPembaharuanData = tanggalPembaharuanData;
}
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 Integer getLoginUserId() {
return loginUserId;
}
public void setLoginUserId(Integer loginUserId) {
this.loginUserId = loginUserId;
}
}

View File

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