From f85ccc5b837a0988a1187fc30147751e1ffadf3a Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 24 Sep 2021 08:03:55 +0700 Subject: [PATCH] - pembuatan service simpan master produk kelompok tenaga kesehatan lain - pembuatan service dropdown pilihan data master produk kelompok tenaga kesehatan lain berdasarkan profesi - pembuatan service simpan mapping skoring produk kelompok tenaga kesehatan lain - pembuatan service tampilan data mapping skoring produk kelompok tenaga kesehatan lain - pembuatan service validasi data duplikat mapping skoring produk kelompok tenaga kesehatan lain - pembuatan service validasi akses buat dan ubah data mapping skoring produk kelompok tenaga kesehatan lain - pembuatan service simpan entri kegiatan pelayanan oleh kelompok tenaga kesehatan lain - pembuatan service delete fisik data kegiatan pelayanan oleh kelompok tenaga kesehatan lain - pembuatan service tampilan data kegiatan pelayanan oleh kelompok tenaga kesehatan lain - pendaftaran tabel produknakes, master profesi, skoringtindakannakes, pelayananpasiennakes dalam konfigurasi hibernate --- .../medifirst2000/constants/Master.java | 1 + .../dao/PelayananPasienNakesDao.java | 26 ++ .../medifirst2000/dao/ProdukNakesDao.java | 27 ++ .../dao/SkoringTindakanNakesDao.java | 102 +++++ .../service/PelayananPasienNakesService.java | 16 + .../service/ProdukNakesService.java | 22 ++ .../service/SkoringTindakanNakesService.java | 22 ++ .../impl/PelayananPasienNakesServiceImpl.java | 166 ++++++++ .../service/impl/ProdukNakesServiceImpl.java | 121 ++++++ .../impl/SkoringTindakanNakesServiceImpl.java | 356 ++++++++++++++++++ .../SkoringTindakanPerawatServiceImpl.java | 1 - .../entities/PelayananPasienNakes.java | 132 +++++++ .../medifirst2000/entities/ProdukNakes.java | 73 ++++ .../medifirst2000/entities/Profesi.java | 46 +++ .../entities/SkoringTindakanNakes.java | 96 +++++ .../vo/PelayananPasienNakesVO.java | 106 ++++++ .../medifirst2000/vo/ProdukNakesVO.java | 50 +++ .../medifirst2000/vo/ProfesiVO.java | 29 ++ .../vo/SkoringTindakanNakesVO.java | 85 +++++ .../src/main/resources/hibernate.cfg.xml | 4 + .../IkiDanRemunerasiController.java | 243 +++++++++++- 21 files changed, 1713 insertions(+), 11 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienNakesDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanNakesDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienNakesService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanNakesService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienNakesServiceImpl.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanNakesServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienNakes.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SkoringTindakanNakes.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienNakesVO.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/SkoringTindakanNakesVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index e0cfdf93..81787f2d 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -364,6 +364,7 @@ public class Master { public static final Integer BAG_SDM = 24; public static final Integer BID_WAT = 21; + public static final Integer BID_JANG = 83; public static final Integer KSM_UMUM = 62; public static final Integer DIREKSI = 65; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienNakesDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienNakesDao.java new file mode 100644 index 00000000..573a3407 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienNakesDao.java @@ -0,0 +1,26 @@ +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.PelayananPasienNakes; + +@Repository("pelayananPasienNakesDao") +public interface PelayananPasienNakesDao 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 PelayananPasienNakes 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/ProdukNakesDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java new file mode 100644 index 00000000..3a98a97e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java @@ -0,0 +1,27 @@ +/** + * + */ +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.ProdukNakes; + +/** + * @author Lasak + * + */ +@Repository("produkNakesDao") +public interface ProdukNakesDao extends PagingAndSortingRepository { + + @Query("select new Map(prn.id as id,prn.namaProduk as namaProduk) " + "from ProdukNakes prn " + + "where prn.statusEnabled is true " + "and prn.profesiId = :profesiId") + List> findByProfesi(@Param("profesiId") Integer idProfesi); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanNakesDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanNakesDao.java new file mode 100644 index 00000000..f18eb73d --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanNakesDao.java @@ -0,0 +1,102 @@ +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.SkoringTindakanNakes; + +@Repository("skoringTindakanNakesDao") +public interface SkoringTindakanNakesDao extends PagingAndSortingRepository { + + String strAllEnabled = "select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + + "stn.skor as skor," + "stn.statusVerifikasi as kdVerif," + + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' " + + "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif," + + "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData," + + "prn.id as produkId,prn.namaProduk as namaProduk," + + "pfs.id as profesiId,pfs.namaProfesi as namaProfesi) " + "from SkoringTindakanNakes stn " + + "inner join stn.produk prn " + "inner join prn.profesi pfs " + "where stn.statusEnabled is true "; + + String produk = "and lower(prn.namaProduk) like %:namaProduk% "; + + String statusVerifikasi = "and stn.statusVerifikasi = :isVerif "; + + String profesi = "and pfs.id = :profesiId "; + + String sortSearch = "order by prn.namaProduk asc,stn.tanggalPembaharuanData desc"; + + @Query(strAllEnabled + sortSearch) + List> findAllEnabled(); + + @Query(strAllEnabled + produk + sortSearch) + List> findAllEnabledByProduk(@Param("namaProduk") String namaProduk); + + @Query(strAllEnabled + statusVerifikasi + sortSearch) + List> findAllEnabledByVerif(@Param("isVerif") Boolean isVerif); + + @Query(strAllEnabled + profesi + sortSearch) + List> findAllEnabledByProfesi(@Param("profesiId") Integer idProfesi); + + @Query(strAllEnabled + produk + statusVerifikasi + sortSearch) + List> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk, + @Param("isVerif") Boolean isVerif); + + @Query(strAllEnabled + produk + profesi + sortSearch) + List> findAllEnabledByProdukProfesi(@Param("namaProduk") String namaProduk, + @Param("profesiId") Integer idProfesi); + + @Query(strAllEnabled + statusVerifikasi + profesi + sortSearch) + List> findAllEnabledByVerifProfesi(@Param("isVerif") Boolean isVerif, + @Param("profesiId") Integer idProfesi); + + @Query(strAllEnabled + produk + statusVerifikasi + profesi + sortSearch) + List> findAllEnabledByProdukVerifProfesi(@Param("namaProduk") String namaProduk, + @Param("isVerif") Boolean isVerif, @Param("profesiId") Integer idProfesi); + + String strCekDupSkoring = "select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + + "inner join prn.profesi pfs " + "where stn.statusEnabled is true " + + "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk " + + "and pfs.id = :profesiId " + "and stn.skor = :skor"; + + String tglBerlaku = " and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku"; + + String idSkoring = " and stn.noRec <> :noRec"; + + String sortTglBerlaku = " order by stn.tanggalMulaiBerlaku desc"; + + @Query(strCekDupSkoring + sortTglBerlaku) + List findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi, + @Param("skor") Double skor, @Param("patternText") String patternText); + + @Query(strCekDupSkoring + tglBerlaku) + List findDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi, + @Param("skor") Double skor, @Param("tglMulaiBerlaku") String tglMulaiBerlaku, + @Param("patternText") String patternText); + + @Query(strCekDupSkoring + idSkoring + sortTglBerlaku) + List findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi, + @Param("skor") Double skor, @Param("patternText") String patternText, @Param("noRec") String noRec); + + @Query(strCekDupSkoring + tglBerlaku + idSkoring) + List findDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi, + @Param("skor") Double skor, @Param("tglMulaiBerlaku") String tglMulaiBerlaku, + @Param("patternText") String patternText, @Param("noRec") String noRec); + + @Query("select new Map(stn.noRec as noRec,stn.skor as skor," + "prn.namaProduk as namaProduk," + + "pfs.namaProfesi as namaProfesi) " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + + "inner join prn.profesi pfs " + "where stn.statusEnabled is true " + "and stn.noRec in (:listNorec)") + List> findAllDup(@Param("listNorec") List listNorec); + + @Query(value = "select * from sdm_skoringtindakannakes_t " + + "where statusenabled is true and statusverifikasi is true " + + "and objectproduknakesfk = :produkId and to_char(tanggalmulaiberlaku,'yyyy-MM-dd') <= :tglMulaiBerlaku " + + "order by tanggalmulaiberlaku desc, tanggalpembaharuandata desc limit 1", nativeQuery = true) + SkoringTindakanNakes findLast(@Param("produkId") Integer idProduk, + @Param("tglMulaiBerlaku") String tglMulaiBerlaku); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienNakesService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienNakesService.java new file mode 100644 index 00000000..b659da8e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienNakesService.java @@ -0,0 +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.PelayananPasienNakes; +import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; + +public interface PelayananPasienNakesService + extends BaseVoService { + + List> findByAntrianPasienDiperiksa(String noRec, Integer idPegawai) throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java new file mode 100644 index 00000000..f09d5770 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukNakesService.java @@ -0,0 +1,22 @@ +/** + * + */ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.ProdukNakes; +import com.jasamedika.medifirst2000.vo.ProdukNakesVO; + +/** + * @author Lasak + * + */ +public interface ProdukNakesService extends BaseVoService { + + List> findByProfesi(Integer idProfesi) throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanNakesService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanNakesService.java new file mode 100644 index 00000000..b450e411 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanNakesService.java @@ -0,0 +1,22 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes; +import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO; + +public interface SkoringTindakanNakesService + extends BaseVoService { + + List> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi) + throws JpaSystemException; + + List> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi, + Long tglMulaiBerlaku, String noRec) throws JpaSystemException; + + Map findAkses(Integer idPegawai) throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienNakesServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienNakesServiceImpl.java new file mode 100644 index 00000000..c383be8e --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienNakesServiceImpl.java @@ -0,0 +1,166 @@ +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; + +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.PelayananPasienNakesDao; +import com.jasamedika.medifirst2000.dao.SkoringTindakanNakesDao; +import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa; +import com.jasamedika.medifirst2000.entities.Pegawai; +import com.jasamedika.medifirst2000.entities.PelayananPasienNakes; +import com.jasamedika.medifirst2000.entities.ProdukNakes; +import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.AntrianPasienDiPeriksaVO; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; +import com.jasamedika.medifirst2000.vo.ProdukNakesVO; + +@Service("pelayananPasienNakesService") +public class PelayananPasienNakesServiceImpl extends BaseVoServiceImpl implements PelayananPasienNakesService { + + @Autowired + private BaseConverterImpl pelayananNakesConverter; + + @Autowired + private BaseConverterImpl antrianPasienConverter; + + @Autowired + private BaseConverterImpl produkNakesConverter; + + @Autowired + private BaseConverterImpl pegawaiConverter; + + @Autowired + private PelayananPasienNakesDao pelayananNakesDao; + + @Autowired + private SkoringTindakanNakesDao skoringTindakanNakesDao; + + @Override + public PelayananPasienNakesVO add(PelayananPasienNakesVO vo) throws JpaSystemException, ServiceVOException { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + PelayananPasienNakes pelayananNakes = pelayananNakesConverter.transferVOToModel(vo, new PelayananPasienNakes()); + + AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), + new AntrianPasienDiPeriksa()); + pelayananNakes.setAntrianPasienDiperiksa(antrianPasien); + + ProdukNakes produk = produkNakesConverter.transferVOToModel(vo.getProduk(), new ProdukNakes()); + pelayananNakes.setProduk(produk); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananNakes.setPegawai(pegawai); + + SkoringTindakanNakes skoringNakes = skoringTindakanNakesDao.findLast(vo.getProduk().getId(), + df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringNakes)) { + pelayananNakes.setSkor(skoringNakes.getSkor()); + } else { + pelayananNakes.setSkor(1.00); + } + + PelayananPasienNakes resultModel = pelayananNakesDao.save(pelayananNakes); + + PelayananPasienNakesVO resultVO = new PelayananPasienNakesVO(); + resultVO = pelayananNakesConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public PelayananPasienNakesVO update(PelayananPasienNakesVO vo) throws JpaSystemException, ServiceVOException { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + PelayananPasienNakes pelayananNakesLama = pelayananNakesDao.findOne(vo.getNoRec()); + + PelayananPasienNakes pelayananNakesBaru = pelayananNakesConverter.transferVOToModel(vo, pelayananNakesLama); + + AntrianPasienDiPeriksa antrianPasien = antrianPasienConverter.transferVOToModel(vo.getAntrianPasienDiperiksa(), + new AntrianPasienDiPeriksa()); + pelayananNakesBaru.setAntrianPasienDiperiksa(antrianPasien); + + ProdukNakes produk = produkNakesConverter.transferVOToModel(vo.getProduk(), new ProdukNakes()); + pelayananNakesBaru.setProduk(produk); + + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + pelayananNakesBaru.setPegawai(pegawai); + + SkoringTindakanNakes skoringNakes = skoringTindakanNakesDao.findLast(vo.getProduk().getId(), + df.format(vo.getTglPelayanan())); + if (CommonUtil.isNotNullOrEmpty(skoringNakes)) { + pelayananNakesBaru.setSkor(skoringNakes.getSkor()); + } else { + pelayananNakesBaru.setSkor(1.00); + } + + PelayananPasienNakes resultModel = pelayananNakesDao.save(pelayananNakesBaru); + + PelayananPasienNakesVO resultVO = new PelayananPasienNakesVO(); + resultVO = pelayananNakesConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + pelayananNakesDao.delete(key); + + return true; + } + + @Override + public PelayananPasienNakesVO findById(String key) throws JpaSystemException { + PelayananPasienNakesVO result = new PelayananPasienNakesVO(); + + PelayananPasienNakes pelayananNakes = pelayananNakesDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(pelayananNakes)) { + result = pelayananNakesConverter.transferModelToVO(pelayananNakes, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = pelayananNakesDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (PelayananPasienNakes model : models) { + PelayananPasienNakesVO vo = new PelayananPasienNakesVO(); + vo = pelayananNakesConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findByAntrianPasienDiperiksa(String noRec, Integer idPegawai) + throws JpaSystemException { + List> result = pelayananNakesDao.findByAntrianPasienDiperiksa(noRec, idPegawai); + + return result; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java new file mode 100644 index 00000000..6f186917 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukNakesServiceImpl.java @@ -0,0 +1,121 @@ +/** + * + */ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +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.ProdukNakesDao; +import com.jasamedika.medifirst2000.entities.ProdukNakes; +import com.jasamedika.medifirst2000.entities.Profesi; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.ProdukNakesService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.ProdukNakesVO; +import com.jasamedika.medifirst2000.vo.ProfesiVO; + +/** + * @author Lasak + * + */ +@Service("produkNakesService") +public class ProdukNakesServiceImpl extends BaseVoServiceImpl implements ProdukNakesService { + + @Autowired + private BaseConverterImpl produkNakesConverter; + + @Autowired + private BaseConverterImpl profesiConverter; + + @Autowired + private ProdukNakesDao produkNakesDao; + + @Override + public ProdukNakesVO add(ProdukNakesVO vo) throws JpaSystemException, ServiceVOException { + ProdukNakes produkNakes = produkNakesConverter.transferVOToModel(vo, new ProdukNakes()); + + Profesi profesi = profesiConverter.transferVOToModel(vo.getProfesi(), new Profesi()); + produkNakes.setProfesi(profesi); + + ProdukNakes resultModel = produkNakesDao.save(produkNakes); + + ProdukNakesVO resultVO = new ProdukNakesVO(); + resultVO = produkNakesConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public ProdukNakesVO update(ProdukNakesVO vo) throws JpaSystemException, ServiceVOException { + ProdukNakes produkNakesLama = produkNakesDao.findOne(vo.getId()); + + ProdukNakes produkNakesBaru = produkNakesConverter.transferVOToModel(vo, produkNakesLama); + + Profesi profesi = profesiConverter.transferVOToModel(vo.getProfesi(), new Profesi()); + produkNakesBaru.setProfesi(profesi); + + ProdukNakes resultModel = produkNakesDao.save(produkNakesBaru); + + ProdukNakesVO resultVO = new ProdukNakesVO(); + resultVO = produkNakesConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(Integer key) throws JpaSystemException { + produkNakesDao.delete(key); + + return true; + } + + @Override + public ProdukNakesVO findById(Integer key) throws JpaSystemException { + ProdukNakesVO result = new ProdukNakesVO(); + + ProdukNakes produkNakes = produkNakesDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(produkNakes)) { + result = produkNakesConverter.transferModelToVO(produkNakes, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = produkNakesDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (ProdukNakes model : models) { + ProdukNakesVO vo = new ProdukNakesVO(); + vo = produkNakesConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findByProfesi(Integer idProfesi) throws JpaSystemException { + List> result = produkNakesDao.findByProfesi(idProfesi); + + return result; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanNakesServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanNakesServiceImpl.java new file mode 100644 index 00000000..f1448385 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanNakesServiceImpl.java @@ -0,0 +1,356 @@ +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.HashMap; +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.constants.Master; +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.LoggingUserDao; +import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; +import com.jasamedika.medifirst2000.dao.SkoringTindakanNakesDao; +import com.jasamedika.medifirst2000.dao.SubUnitKerjaDao; +import com.jasamedika.medifirst2000.entities.LoggingUser; +import com.jasamedika.medifirst2000.entities.LoginUser; +import com.jasamedika.medifirst2000.entities.ProdukNakes; +import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.SkoringTindakanNakesService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.ProdukNakesVO; +import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO; + +@Service("skoringTindakanNakesService") +public class SkoringTindakanNakesServiceImpl extends BaseVoServiceImpl implements SkoringTindakanNakesService { + + @Autowired + private BaseConverterImpl skoringTindakanConverter; + + @Autowired + private BaseConverterImpl produkNakesConverter; + + @Autowired + private SkoringTindakanNakesDao skoringTindakanDao; + + @Autowired + private LoggingUserDao loggingUserDao; + + @Autowired + private SettingDataFixedDao settingDataFixedDao; + + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mappingJabatanDao; + + @Autowired + private SubUnitKerjaDao subUnitKerjaDao; + + 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 Nakes"); + loggingUser.setReferensiId(idReferensi); + loggingUser.setReferensi("sdm_skoringtindakannakes_t"); + loggingUser.setKeterangan(keterangan); + + loggingUserDao.save(loggingUser); + } + + @Override + public SkoringTindakanNakesVO add(SkoringTindakanNakesVO vo) throws JpaSystemException, ServiceVOException { + ProdukNakes produk = produkNakesConverter.transferVOToModel(vo.getProduk(), new ProdukNakes()); + SkoringTindakanNakes skoringTindakan = skoringTindakanConverter.transferVOToModel(vo, + new SkoringTindakanNakes()); + + skoringTindakan.setProduk(produk); + skoringTindakan.setTanggalPembaharuanData(new Date()); + SkoringTindakanNakes resultModel = skoringTindakanDao.save(skoringTindakan); + + addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Buat data"); + + SkoringTindakanNakesVO resultVO = new SkoringTindakanNakesVO(); + resultVO = skoringTindakanConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public SkoringTindakanNakesVO update(SkoringTindakanNakesVO vo) throws JpaSystemException, ServiceVOException { + SkoringTindakanNakes skoringTindakanLama = skoringTindakanDao.findOne(vo.getNoRec()); + + ProdukNakes produk = produkNakesConverter.transferVOToModel(vo.getProduk(), new ProdukNakes()); + SkoringTindakanNakes skoringTindakanBaru = skoringTindakanConverter.transferVOToModel(vo, skoringTindakanLama); + + skoringTindakanBaru.setProduk(produk); + skoringTindakanBaru.setTanggalPembaharuanData(new Date()); + SkoringTindakanNakes 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"); + } + + SkoringTindakanNakesVO resultVO = new SkoringTindakanNakesVO(); + resultVO = skoringTindakanConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + skoringTindakanDao.delete(key); + + return true; + } + + @Override + public SkoringTindakanNakesVO findById(String key) throws JpaSystemException { + SkoringTindakanNakesVO result = new SkoringTindakanNakesVO(); + + SkoringTindakanNakes skoringTindakan = skoringTindakanDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(skoringTindakan)) { + result = skoringTindakanConverter.transferModelToVO(skoringTindakan, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = skoringTindakanDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (SkoringTindakanNakes model : models) { + SkoringTindakanNakesVO vo = new SkoringTindakanNakesVO(); + vo = skoringTindakanConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi) + throws JpaSystemException { + List> result = new ArrayList<>(); + List> data = new ArrayList<>(); + List> filter = new ArrayList<>(); + + if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif) + && CommonUtil.isNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabled(); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif) + && CommonUtil.isNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByProduk(namaProduk.toLowerCase()); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif) + && CommonUtil.isNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByVerif(isVerif); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByProfesi(idProfesi); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif) + && CommonUtil.isNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByProdukVerif(namaProduk.toLowerCase(), isVerif); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByProdukProfesi(namaProduk.toLowerCase(), idProfesi); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByVerifProfesi(isVerif, idProfesi); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif) + && CommonUtil.isNotNullOrEmpty(idProfesi)) { + data = skoringTindakanDao.findAllEnabledByProdukVerifProfesi(namaProduk.toLowerCase(), isVerif, idProfesi); + } + + // filtering + for (Map mapData : data) { + boolean isContained = false; + for (Map mapFilter : filter) { + if (mapData.get("produkId").equals(mapFilter.get("produkId")) + && mapData.get("tglMulaiBerlaku").equals(mapFilter.get("tglMulaiBerlaku"))) { + isContained = true; + break; + } + } + if (!isContained) { + Map mapFilter = new HashMap<>(); + mapFilter.put("produkId", mapData.get("produkId")); + mapFilter.put("tglMulaiBerlaku", mapData.get("tglMulaiBerlaku")); + filter.add(mapFilter); + } + } + + for (Map mapFilter : filter) { + for (Map mapData : data) { + if (mapFilter.get("produkId").equals(mapData.get("produkId")) + && mapFilter.get("tglMulaiBerlaku").equals(mapData.get("tglMulaiBerlaku"))) { + // data hanya untuk diakses oleh bidang penunjang + mapData.put("unitKerjaId", Master.UnitKerja.BID_JANG); + + result.add(mapData); + break; + } + } + } + + return result; + } + + @Override + public List> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi, + Long tglMulaiBerlaku, String noRec) throws JpaSystemException { + List> result = new ArrayList<>(); + List listNorec = new ArrayList<>(); + + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(noRec)) { + listNorec = skoringTindakanDao.findLastDupSkoring(replacedNamaProduk, idProfesi, skor, patternText, noRec); + if (CommonUtil.isNullOrEmpty(listNorec)) { + listNorec = skoringTindakanDao.findDupSkoring(replacedNamaProduk, idProfesi, skor, + df.format(new Date(tglMulaiBerlaku)), patternText, noRec); + } + } else { + listNorec = skoringTindakanDao.findLastDupSkoring(replacedNamaProduk, idProfesi, skor, patternText); + if (CommonUtil.isNullOrEmpty(listNorec)) { + listNorec = skoringTindakanDao.findDupSkoring(replacedNamaProduk, idProfesi, skor, + df.format(new Date(tglMulaiBerlaku)), patternText); + } + } + + if (CommonUtil.isNotNullOrEmpty(listNorec)) { + result = skoringTindakanDao.findAllDup(listNorec); + } + + return result; + } + + @Override + public Map findAkses(Integer idPegawai) throws JpaSystemException { + Map result = new HashMap<>(); + List listRs = new ArrayList<>(); + List listIdUnitKerja = new ArrayList<>(); + List listUnitKerjaSuperuser = new ArrayList<>(); + + listIdUnitKerja.add(Master.UnitKerja.BID_JANG); + listUnitKerjaSuperuser.add(Master.UnitKerja.BAG_SDM); + + List> listSuperuser = mappingJabatanDao.findAksesPegawaiPenilai(listIdUnitKerja, idPegawai); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiStaf(listUnitKerjaSuperuser, idPegawai)); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiAtasan(listUnitKerjaSuperuser, idPegawai)); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiPenilai(listUnitKerjaSuperuser, idPegawai)); + if (CommonUtil.isNotNullOrEmpty(listSuperuser)) { + listRs.addAll(listIdUnitKerja); + + result.put("isSuperuser", true); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listAtasan = mappingJabatanDao.findAksesPegawaiAtasan(listIdUnitKerja, idPegawai); + if (CommonUtil.isNotNullOrEmpty(listAtasan)) { + for (Map map : listAtasan) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", true); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listStaf = mappingJabatanDao.findAksesPegawaiStaf(listIdUnitKerja, idPegawai); + if (CommonUtil.isNotNullOrEmpty(listStaf)) { + for (Map map : listStaf) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", true); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listSuperElse = mappingJabatanDao.findAksesPegawaiPenilai(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listSuperElse)) { + for (Map map : listSuperElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listAtasanElse = mappingJabatanDao.findAksesPegawaiAtasan(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listAtasanElse)) { + for (Map map : listAtasanElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listStafElse = mappingJabatanDao.findAksesPegawaiStaf(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listStafElse)) { + for (Map map : listStafElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } + } + } + } + } + } + + return result; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanPerawatServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanPerawatServiceImpl.java index 8c7242b2..2390504a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanPerawatServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanPerawatServiceImpl.java @@ -3,7 +3,6 @@ package com.jasamedika.medifirst2000.service.impl; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienNakes.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienNakes.java new file mode 100644 index 00000000..3f6eddde --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasienNakes.java @@ -0,0 +1,132 @@ +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; + +@Entity +@Table(name = "pelayananpasiennakes_t") +public class PelayananPasienNakes extends BaseTransaction { + + @ManyToOne + @NotNull(message = "Nomor Registrasi Harus Diisi") + @JoinColumn(name = "noregistrasifk") + @Caption(value = "Nomor Registrasi") + private AntrianPasienDiPeriksa antrianPasienDiperiksa; + + @Column(name = "noregistrasifk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = false) + private String antrianPasienDiperiksaId; + + @ManyToOne + @NotNull(message = "Produk Nakes tidak boleh kosong") + @JoinColumn(name = "objectproduknakesfk") + @Caption(value = "Produk Nakes") + private ProdukNakes produk; + + @Column(name = "objectproduknakesfk", 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; + + @ManyToOne + @JoinColumn(name = "objectpegawaifk") + @Caption(value = "Pegawai") + private Pegawai pegawai; + + @Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = true) + private Integer pegawaiId; + + public AntrianPasienDiPeriksa getAntrianPasienDiperiksa() { + return antrianPasienDiperiksa; + } + + public void setAntrianPasienDiperiksa(AntrianPasienDiPeriksa antrianPasienDiperiksa) { + this.antrianPasienDiperiksa = antrianPasienDiperiksa; + } + + public String getAntrianPasienDiperiksaId() { + return antrianPasienDiperiksaId; + } + + public void setAntrianPasienDiperiksaId(String antrianPasienDiperiksaId) { + this.antrianPasienDiperiksaId = antrianPasienDiperiksaId; + } + + public ProdukNakes getProduk() { + return produk; + } + + public void setProduk(ProdukNakes 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 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/entities/ProdukNakes.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java new file mode 100644 index 00000000..9a306887 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java @@ -0,0 +1,73 @@ +package com.jasamedika.medifirst2000.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.BaseActive; +import com.jasamedika.medifirst2000.helper.Caption; + +@Entity +@Table(name = "produknakes_m") +public class ProdukNakes extends BaseActive { + + @NotNull(message = "Nama Produk tidak boleh kosong") + @Column(name = "namaproduk", nullable = false) + @Caption(value = "Nama Produk") + private String namaProduk; + + @ManyToOne + @NotNull(message = "Profesi tidak boleh kosong") + @JoinColumn(name = "objectprofesifk") + @Caption(value = "Profesi") + private Profesi profesi; + + @Column(name = "objectprofesifk", insertable = false, updatable = false, nullable = false) + private Integer profesiId; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.produknakes_m_id_seq") + @SequenceGenerator(name = "public.produknakes_m_id_seq", sequenceName = "public.produknakes_m_id_seq", allocationSize = 1) + @Column(name = "id") + protected Integer id; + + public String getNamaProduk() { + return namaProduk; + } + + public void setNamaProduk(String namaProduk) { + this.namaProduk = namaProduk; + } + + public Profesi getProfesi() { + return profesi; + } + + public void setProfesi(Profesi profesi) { + this.profesi = profesi; + } + + public Integer getProfesiId() { + return profesiId; + } + + public void setProfesiId(Integer profesiId) { + this.profesiId = profesiId; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java new file mode 100644 index 00000000..210b42a4 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java @@ -0,0 +1,46 @@ +package com.jasamedika.medifirst2000.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.BaseActive; +import com.jasamedika.medifirst2000.helper.Caption; + +@Entity +@Table(name = "sdm_profesi_m") +public class Profesi extends BaseActive { + + @NotNull(message = "Nama Profesi tidak boleh kosong") + @Column(name = "namaprofesi", nullable = false) + @Caption(value = "Nama Profesi") + private String namaProfesi; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.sdm_profesi_m_id_seq") + @SequenceGenerator(name = "public.sdm_profesi_m_id_seq", sequenceName = "public.sdm_profesi_m_id_seq", allocationSize = 1) + @Column(name = "id") + protected Integer id; + + public String getNamaProfesi() { + return namaProfesi; + } + + public void setNamaProfesi(String namaProfesi) { + this.namaProfesi = namaProfesi; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SkoringTindakanNakes.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SkoringTindakanNakes.java new file mode 100644 index 00000000..1e87c9da --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SkoringTindakanNakes.java @@ -0,0 +1,96 @@ +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; + +@Entity +@Table(name = "sdm_skoringtindakannakes_t") +public class SkoringTindakanNakes 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 Nakes tidak boleh kosong") + @JoinColumn(name = "objectproduknakesfk") + @Caption(value = "Produk Nakes") + private ProdukNakes produk; + + @Column(name = "objectproduknakesfk", 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 ProdukNakes getProduk() { + return produk; + } + + public void setProduk(ProdukNakes produk) { + this.produk = produk; + } + + public Integer getProdukId() { + return produkId; + } + + public void setProdukId(Integer produkId) { + this.produkId = produkId; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienNakesVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienNakesVO.java new file mode 100644 index 00000000..b58f7f1a --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PelayananPasienNakesVO.java @@ -0,0 +1,106 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class PelayananPasienNakesVO extends BaseTransactionVO { + + @Caption(value = "Nomor Registrasi") + private AntrianPasienDiPeriksaVO antrianPasienDiperiksa; + + private String antrianPasienDiperiksaId; + + @Caption(value = "Produk Nakes") + private ProdukNakesVO 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 = "Pegawai") + private PegawaiVO pegawai; + + private Integer pegawaiId; + + public AntrianPasienDiPeriksaVO getAntrianPasienDiperiksa() { + return antrianPasienDiperiksa; + } + + public void setAntrianPasienDiperiksa(AntrianPasienDiPeriksaVO antrianPasienDiperiksa) { + this.antrianPasienDiperiksa = antrianPasienDiperiksa; + } + + public String getAntrianPasienDiperiksaId() { + return antrianPasienDiperiksaId; + } + + public void setAntrianPasienDiperiksaId(String antrianPasienDiperiksaId) { + this.antrianPasienDiperiksaId = antrianPasienDiperiksaId; + } + + public ProdukNakesVO getProduk() { + return produk; + } + + public void setProduk(ProdukNakesVO 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 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/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java new file mode 100644 index 00000000..9cdd50a6 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukNakesVO.java @@ -0,0 +1,50 @@ +package com.jasamedika.medifirst2000.vo; + +import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class ProdukNakesVO extends BaseActiveVO { + + @Caption(value = "Nama Produk") + private String namaProduk; + + @Caption(value = "Profesi") + private ProfesiVO profesi; + + private Integer profesiId; + + protected Integer id; + + public String getNamaProduk() { + return namaProduk; + } + + public void setNamaProduk(String namaProduk) { + this.namaProduk = namaProduk; + } + + public ProfesiVO getProfesi() { + return profesi; + } + + public void setProfesi(ProfesiVO profesi) { + this.profesi = profesi; + } + + public Integer getProfesiId() { + return profesiId; + } + + public void setProfesiId(Integer profesiId) { + this.profesiId = profesiId; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java new file mode 100644 index 00000000..5d31e00f --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java @@ -0,0 +1,29 @@ +package com.jasamedika.medifirst2000.vo; + +import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class ProfesiVO extends BaseActiveVO { + + @Caption(value = "Nama Profesi") + private String namaProfesi; + + protected Integer id; + + public String getNamaProfesi() { + return namaProfesi; + } + + public void setNamaProfesi(String namaProfesi) { + this.namaProfesi = namaProfesi; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/SkoringTindakanNakesVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/SkoringTindakanNakesVO.java new file mode 100644 index 00000000..e1515ef7 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/SkoringTindakanNakesVO.java @@ -0,0 +1,85 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class SkoringTindakanNakesVO 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 ProdukNakesVO 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 ProdukNakesVO getProduk() { + return produk; + } + + public void setProduk(ProdukNakesVO 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; + } + +} diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index 4ec5050b..4686e2e6 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -694,5 +694,9 @@ + + + + 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 b32b3f35..d5d046e0 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,9 +36,12 @@ 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.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; +import com.jasamedika.medifirst2000.service.ProdukNakesService; import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; +import com.jasamedika.medifirst2000.service.SkoringTindakanNakesService; import com.jasamedika.medifirst2000.service.SkoringTindakanPerawatService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.rest.RestUtil; @@ -50,10 +53,13 @@ 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.PelayananPasienNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; +import com.jasamedika.medifirst2000.vo.ProdukNakesVO; import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; +import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanPerawatVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; import com.jasamedika.medifirst2000.vo.custom.TargetLayananJamKerjaVO; @@ -107,6 +113,15 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -1425,11 +1440,11 @@ public class IkiDanRemunerasiController extends LocaleController saveProdukNakes(HttpServletRequest request, + @Valid @RequestBody ProdukNakesVO vo) { + try { + ProdukNakesVO result = new ProdukNakesVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getId())) { + result = produkNakesService.update(vo); + } else { + result = produkNakesService.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 master produk nakes", 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 master produk nakes", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-produk-nakes", method = RequestMethod.GET) + public ResponseEntity>> getProdukNakes(HttpServletRequest request, + @RequestParam(value = "profesiId", required = false) Integer idProfesi) throws ParseException { + try { + List> result = produkNakesService.findByProfesi(idProfesi); + 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 produk nakes per profesi", 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 produk nakes per profesi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/save-skoring-tindakan-nakes", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity saveSkoringTindakanNakes(HttpServletRequest request, + @Valid @RequestBody SkoringTindakanNakesVO vo) { + try { + SkoringTindakanNakesVO result = new SkoringTindakanNakesVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = skoringTindakanNakesService.update(vo); + } else { + result = skoringTindakanNakesService.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 skor tindakan oleh nakes lain", 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 skor tindakan oleh nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-all-skoring-tindakan-nakes", method = RequestMethod.GET) + public ResponseEntity>> getAllSkoringTindakanNakes(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = false) String namaProduk, + @RequestParam(value = "isVerif", required = false) Boolean isVerif, + @RequestParam(value = "profesiId", required = false) Integer idProfesi) throws ParseException { + try { + List> result = skoringTindakanNakesService.findAllEnabled(namaProduk, isVerif, + idProfesi); + 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 all skoring tindakan oleh nakes lain", 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 all skoring tindakan oleh nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-duplicate-skoring-tindakan-nakes", method = RequestMethod.GET) + public ResponseEntity>> getDuplikatSkoringTindakanNakes(HttpServletRequest request, + @RequestParam(value = "noRec", required = false) String noRec, + @RequestParam(value = "namaProduk", required = true) String namaProduk, + @RequestParam(value = "profesiId", required = true) Integer idProfesi, + @RequestParam(value = "skor", required = true) Double skor, + @RequestParam(value = "tglBerlaku", required = true) Long tglMulaiBerlaku) throws ParseException { + try { + List> result = skoringTindakanNakesService.findDuplicateSkoring(namaProduk, skor, + idProfesi, tglMulaiBerlaku, 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 get duplikat skoring tindakan oleh nakes lain", 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 duplikat skoring tindakan oleh nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-akses-skoring-tindakan-nakes", method = RequestMethod.GET) + public ResponseEntity> getAksesSkoringTindakanNakes(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + Map result = skoringTindakanNakesService.findAkses(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 akses skoring tindakan oleh nakes lain", 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 akses skoring tindakan oleh nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/save-pelayanan-pasien-nakes", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity savePelayananPasienNakes(HttpServletRequest request, + @Valid @RequestBody PelayananPasienNakesVO vo) { + try { + PelayananPasienNakesVO result = new PelayananPasienNakesVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = pelayananPasienNakesService.update(vo); + } else { + result = pelayananPasienNakesService.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 nakes lain", 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 nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/delete-pelayanan-pasien-nakes", method = RequestMethod.POST) + public ResponseEntity deletePelayananPasienNakes(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String norec) { + try { + Boolean result = pelayananPasienNakesService.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 oleh nakes lain", 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 oleh nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-pelayanan-pasien-nakes", method = RequestMethod.GET) + public ResponseEntity>> getPelayananPasienNakes(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String noRec, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + List> result = pelayananPasienNakesService.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 nakes lain", 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 nakes lain", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }