From 22a541f51900b892dc973f96c1ae0d2569803d65 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 21 Sep 2021 16:01:01 +0700 Subject: [PATCH] - pembuatan service simpan dan edit pelayanan pasien oleh perawat - pembuatan service tampilan pelayanan pasien oleh perawat yang sudah dientri - pembuatan service hapus pelayanan pasien oleh perawat - penghapusan status verifikasi di pelayanan pasien oleh perawat - penghapusan informasi verifikator di pelayanan pasien oleh perawat --- .../dao/PelayananPasienPerawatDao.java | 15 ++++ .../dao/SkoringTindakanPerawatDao.java | 7 ++ .../PelayananPasienPerawatService.java | 10 ++- .../PelayananPasienPerawatServiceImpl.java | 61 +++++++++++++--- .../entities/PelayananPasienPerawat.java | 32 +++----- .../vo/PelayananPasienPerawatVO.java | 31 +++----- .../IkiDanRemunerasiController.java | 73 +++++++++++++++++++ 7 files changed, 175 insertions(+), 54 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPerawatDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPerawatDao.java index 5fc11f78..86008051 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPerawatDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPerawatDao.java @@ -1,6 +1,11 @@ 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.PelayananPasienPerawat; @@ -8,4 +13,14 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienPerawat; @Repository("pelayananPasienPerawatDao") public interface PelayananPasienPerawatDao extends PagingAndSortingRepository { + @Query("select new Map(pp.noRec as noRec,pp.antrianPasienDiperiksaId as noRecAPD," + + "pr.id as produkId,pr.namaProduk as namaProduk," + + "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted," + + "pp.jumlah as jumlah,pp.skor as skor,(pp.jumlah*pp.skor) as tSkor," + + "pg.id as pegawaiId,pg.namaLengkap as namaLengkap) " + "from PelayananPasienPerawat pp " + + "inner join pp.produk pr " + "left join pp.pegawai pg " + "where pp.statusEnabled is true " + + "and pp.antrianPasienDiperiksaId = :norecAPD " + "and pg.id = :pegawaiId " + "order by pp.tglPelayanan") + List> findByAntrianPasienDiperiksa(@Param("norecAPD") String noRec, + @Param("pegawaiId") Integer idPegawai); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanPerawatDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanPerawatDao.java index fada9406..99992e65 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanPerawatDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanPerawatDao.java @@ -91,4 +91,11 @@ public interface SkoringTindakanPerawatDao extends PagingAndSortingRepository> findAllDup(@Param("listNorec") List listNorec); + @Query(value = "select * from sdm_skoringtindakanperawat_t " + + "where statusenabled is true and statusverifikasi is true " + + "and objectprodukperawatfk = :produkId and to_char(tanggalmulaiberlaku,'yyyy-MM-dd') <= :tglMulaiBerlaku " + + "order by tanggalmulaiberlaku desc, tanggalpembaharuandata desc limit 1", nativeQuery = true) + SkoringTindakanPerawat findLast(@Param("produkId") Integer idProduk, + @Param("tglMulaiBerlaku") String tglMulaiBerlaku); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienPerawatService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienPerawatService.java index dc9fa342..b975d891 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienPerawatService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienPerawatService.java @@ -1,8 +1,16 @@ package com.jasamedika.medifirst2000.service; +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + import com.jasamedika.medifirst2000.entities.PelayananPasienPerawat; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; -public interface PelayananPasienPerawatService extends BaseVoService { +public interface PelayananPasienPerawatService + extends BaseVoService { + + List> findByAntrianPasienDiperiksa(String noRec, Integer idPegawai) throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienPerawatServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienPerawatServiceImpl.java index 92c4de19..ad1582a9 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienPerawatServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienPerawatServiceImpl.java @@ -1,5 +1,7 @@ package com.jasamedika.medifirst2000.service.impl; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -10,10 +12,12 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.PelayananPasienPerawatDao; +import com.jasamedika.medifirst2000.dao.SkoringTindakanPerawatDao; import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.PelayananPasienPerawat; import com.jasamedika.medifirst2000.entities.ProdukPerawat; +import com.jasamedika.medifirst2000.entities.SkoringTindakanPerawat; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -40,18 +44,34 @@ public class PelayananPasienPerawatServiceImpl extends BaseVoServiceImpl impleme @Autowired private PelayananPasienPerawatDao pelayananPerawatDao; + @Autowired + private SkoringTindakanPerawatDao skoringTindakanPerawatDao; + @Override public PelayananPasienPerawatVO add(PelayananPasienPerawatVO vo) throws JpaSystemException, ServiceVOException { - AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), - new AntrianPasienDiPeriksa()); - ProdukPerawat produk = produkPerawatConverter.transferVOToModel(vo.getProduk(), new ProdukPerawat()); - Pegawai verifikator = pegawaiConverter.transferVOToModel(vo.getVerifikator(), new Pegawai()); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + PelayananPasienPerawat pelayananPerawat = pelayananPerawatConverter.transferVOToModel(vo, new PelayananPasienPerawat()); + AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), + new AntrianPasienDiPeriksa()); pelayananPerawat.setAntrianPasienDiperiksa(antrianPasien); + + ProdukPerawat produk = produkPerawatConverter.transferVOToModel(vo.getProduk(), new ProdukPerawat()); pelayananPerawat.setProduk(produk); - pelayananPerawat.setVerifikator(verifikator); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananPerawat.setPegawai(pegawai); + + SkoringTindakanPerawat skoringPerawat = skoringTindakanPerawatDao.findLast(vo.getProduk().getId(), + df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringPerawat)) { + pelayananPerawat.setSkor(skoringPerawat.getSkor()); + } else { + pelayananPerawat.setSkor(1.00); + } + PelayananPasienPerawat resultModel = pelayananPerawatDao.save(pelayananPerawat); PelayananPasienPerawatVO resultVO = new PelayananPasienPerawatVO(); @@ -62,18 +82,31 @@ public class PelayananPasienPerawatServiceImpl extends BaseVoServiceImpl impleme @Override public PelayananPasienPerawatVO update(PelayananPasienPerawatVO vo) throws JpaSystemException, ServiceVOException { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + PelayananPasienPerawat pelayananPerawatLama = pelayananPerawatDao.findOne(vo.getNoRec()); - AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), - new AntrianPasienDiPeriksa()); - ProdukPerawat produk = produkPerawatConverter.transferVOToModel(vo.getProduk(), new ProdukPerawat()); - Pegawai verifikator = pegawaiConverter.transferVOToModel(vo.getVerifikator(), new Pegawai()); PelayananPasienPerawat pelayananPerawatBaru = pelayananPerawatConverter.transferVOToModel(vo, pelayananPerawatLama); + AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), + new AntrianPasienDiPeriksa()); pelayananPerawatBaru.setAntrianPasienDiperiksa(antrianPasien); + + ProdukPerawat produk = produkPerawatConverter.transferVOToModel(vo.getProduk(), new ProdukPerawat()); pelayananPerawatBaru.setProduk(produk); - pelayananPerawatBaru.setVerifikator(verifikator); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananPerawatBaru.setPegawai(pegawai); + + SkoringTindakanPerawat skoringPerawat = skoringTindakanPerawatDao.findLast(vo.getProduk().getId(), + df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringPerawat)) { + pelayananPerawatBaru.setSkor(skoringPerawat.getSkor()); + } else { + pelayananPerawatBaru.setSkor(1.00); + } + PelayananPasienPerawat resultModel = pelayananPerawatDao.save(pelayananPerawatBaru); PelayananPasienPerawatVO resultVO = new PelayananPasienPerawatVO(); @@ -124,4 +157,12 @@ public class PelayananPasienPerawatServiceImpl extends BaseVoServiceImpl impleme return null; } + @Override + public List> findByAntrianPasienDiperiksa(String noRec, Integer idPegawai) + throws JpaSystemException { + List> result = pelayananPerawatDao.findByAntrianPasienDiperiksa(noRec, idPegawai); + + return result; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienPerawat.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienPerawat.java index f869a2bf..0950d37a 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienPerawat.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienPerawat.java @@ -49,17 +49,13 @@ public class PelayananPasienPerawat extends BaseTransaction { @Caption(value = "Jumlah") private Double jumlah; - @Column(name = "verifikasi", nullable = true) - @Caption(value = "Verifikasi") - private Short verifikasi; - @ManyToOne @JoinColumn(name = "objectpegawaifk") @Caption(value = "Pegawai") - private Pegawai verifikator; + private Pegawai pegawai; @Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = true) - private Integer verifikatorId; + private Integer pegawaiId; public AntrianPasienDiPeriksa getAntrianPasienDiperiksa() { return antrianPasienDiperiksa; @@ -117,28 +113,20 @@ public class PelayananPasienPerawat extends BaseTransaction { this.jumlah = jumlah; } - public Short getVerifikasi() { - return verifikasi; + public Pegawai getPegawai() { + return pegawai; } - public void setVerifikasi(Short verifikasi) { - this.verifikasi = verifikasi; + public void setPegawai(Pegawai pegawai) { + this.pegawai = pegawai; } - public Pegawai getVerifikator() { - return verifikator; + public Integer getPegawaiId() { + return pegawaiId; } - public void setVerifikator(Pegawai verifikator) { - this.verifikator = verifikator; - } - - public Integer getVerifikatorId() { - return verifikatorId; - } - - public void setVerifikatorId(Integer verifikatorId) { - this.verifikatorId = verifikatorId; + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienPerawatVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienPerawatVO.java index 9f9ddcf6..526ffe27 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienPerawatVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienPerawatVO.java @@ -26,13 +26,10 @@ public class PelayananPasienPerawatVO extends BaseTransactionVO { @Caption(value = "Jumlah") private Double jumlah; - @Caption(value = "Verifikasi") - private Short verifikasi; - @Caption(value = "Pegawai") - private PegawaiVO verifikator; + private PegawaiVO pegawai; - private Integer verifikatorId; + private Integer pegawaiId; public AntrianPasienDiPeriksaVO getAntrianPasienDiperiksa() { return antrianPasienDiperiksa; @@ -90,28 +87,20 @@ public class PelayananPasienPerawatVO extends BaseTransactionVO { this.jumlah = jumlah; } - public Short getVerifikasi() { - return verifikasi; + public PegawaiVO getPegawai() { + return pegawai; } - public void setVerifikasi(Short verifikasi) { - this.verifikasi = verifikasi; + public void setPegawai(PegawaiVO pegawai) { + this.pegawai = pegawai; } - public PegawaiVO getVerifikator() { - return verifikator; + public Integer getPegawaiId() { + return pegawaiId; } - public void setVerifikator(PegawaiVO verifikator) { - this.verifikator = verifikator; - } - - public Integer getVerifikatorId() { - return verifikatorId; - } - - public void setVerifikatorId(Integer verifikatorId) { - this.verifikatorId = verifikatorId; + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 5d574a78..b32b3f35 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -36,6 +36,7 @@ import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService; import com.jasamedika.medifirst2000.service.LogbookKinerjaDokterService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService; +import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; import com.jasamedika.medifirst2000.service.SkoringTindakanPerawatService; @@ -49,6 +50,7 @@ import com.jasamedika.medifirst2000.vo.IndikatorKinerjaJabatanVO; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; +import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; @@ -102,6 +104,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -1494,4 +1499,72 @@ public class IkiDanRemunerasiController extends LocaleController savePelayananPasienPerawat(HttpServletRequest request, + @Valid @RequestBody PelayananPasienPerawatVO vo) { + try { + PelayananPasienPerawatVO result = new PelayananPasienPerawatVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = pelayananPasienPerawatService.update(vo); + } else { + result = pelayananPasienPerawatService.add(vo); + } + if (CommonUtil.isNotNullOrEmpty(result)) { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); + } else { + return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when add/update pelayanan pasien oleh perawat", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when add/update pelayanan pasien oleh perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/delete-pelayanan-pasien-perawat", method = RequestMethod.POST) + public ResponseEntity deletePelayananPasienPerawat(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String norec) { + try { + Boolean result = pelayananPasienPerawatService.delete(norec); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when delete pelayanan pasien perawat", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when delete pelayanan pasien perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-pelayanan-pasien-perawat", method = RequestMethod.GET) + public ResponseEntity>> getPelayananPasienPerawat(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String noRec, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + List> result = pelayananPasienPerawatService.findByAntrianPasienDiperiksa(noRec, + idPegawai); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get pelayanan pasien oleh perawat", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when get pelayanan pasien oleh perawat", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }