From 0e887f93ee89b3d6f7aa9affe83efc88141c855d Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 19 Jul 2021 20:39:54 +0700 Subject: [PATCH] - perbaikan perhitungan target layanan medis di luar jam kerja melibatkan kelompok jabatan medis dan medis spesialis saja - pembuatan service logbook kinerja dokter di luar jam kerja - pembuatan service detail logbook kinerja dokter di luar jam kerja --- .../medifirst2000/constants/Master.java | 2 + .../dao/IkiDanRemunerasiDao.java | 5 +- .../medifirst2000/dao/JabatanDao.java | 3 +- .../impl/IkiDanRemunerasiServiceImpl.java | 9 +- .../impl/LogbookKinerjaServiceImpl.java | 563 +++++++++++++++++- .../IkiDanRemunerasiController.java | 69 ++- 6 files changed, 631 insertions(+), 20 deletions(-) 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 f033ddae..338943d5 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 @@ -289,6 +289,8 @@ public class Master { public static final Double PERSEN_P1 = 0.3; public static final Double PERSEN_P2 = 0.7; + + public static final Double PERSEN_SKOR_LUAR_JAM_KERJA = 1.15; public static final Double PERSEN_SKOR_ASISTEN_SPESIALIS = 0.3; public static final Double PERSEN_SKOR_EKSEKUTIF = 1.15; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java index 775330b8..29d65be9 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java @@ -155,8 +155,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by pg.namaLengkap, pr.id") + + "and pg.jenisPegawaiId = :jenisPegawaiId " + "and jb.kelompokJabatanId in (3,4) " + + "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId " + + "order by pg.namaLengkap, pr.id") public List> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java index 35fdb878..3c2509ef 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JabatanDao.java @@ -141,7 +141,8 @@ public interface JabatanDao extends PagingAndSortingRepository List> findPeringkatJabatan(@Param("listKelompokJabatanId") List listIdKelompokJabatan); @Query("select new Map(jb.id as jabatanId,jb.namaJabatan as namaJabatan) " + "from Jabatan jb " - + "where id in (:listJabatanId) " + "and jb.statusEnabled is true " + "order by jb.namaJabatan") + + "where id in (:listJabatanId) " + "and jb.kelompokJabatanId in (3,4) " + "and jb.statusEnabled is true " + + "order by jb.namaJabatan") List> findJabatanByListId(@Param("listJabatanId") List listIdJabatan); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java index 39ceeeb2..0270a2a2 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java @@ -1076,15 +1076,18 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik layanan.put("jumlahTindakan", Double.valueOf(layanan.get("jumlahTindakan").toString()) * Double.valueOf(skoring.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF); + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); } else if (layanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { layanan.put("jumlahTindakan", Double.valueOf(layanan.get("jumlahTindakan").toString()) * Double.valueOf(skoring.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); } else { - layanan.put("jumlahTindakan", Double.valueOf(layanan.get("jumlahTindakan").toString()) - * Double.valueOf(skoring.get("skor").toString())); + layanan.put("jumlahTindakan", + Double.valueOf(layanan.get("jumlahTindakan").toString()) + * Double.valueOf(skoring.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); } break; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java index bcdef61c..db6f3952 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java @@ -788,8 +788,211 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Override public List> findLogbookLuarJamKerjaDokter(Integer idPegawai, Long bulan) { - // TODO Auto-generated method stub - return null; + List> result = new ArrayList<>(); + List listTglPelayanan = new ArrayList<>(); + List listIdIndikator = new ArrayList<>(); + List listIdProduk = new ArrayList<>(); + List listSkor = new ArrayList<>(); + + DateFormat mf = new SimpleDateFormat("yyyy-MM"); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + DecimalFormat decf = new DecimalFormat("0.00"); + decf.setRoundingMode(RoundingMode.HALF_UP); + + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); + List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); + + List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + + List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookLuarJamKerjaDokter( + mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); + + List> dataSkor = skoringTindakanMedisDao + .findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM)); + + // SCORE + for (Map mapLayanan : dataLayanan) { + for (Map mapSkor : dataSkor) { + if (mapLayanan.get("produkId").equals(mapSkor.get("produkId")) + && (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku")) + || ((Date) mapLayanan.get("tglPelayanan")) + .equals((Date) mapSkor.get("tglMulaiBerlaku")))) { + mapLayanan.put("skor", mapSkor.get("skor")); + break; + } + } + if (!mapLayanan.containsKey("skor")) { + mapLayanan.put("skor", 1.0); + } + } + + // RULES + for (Map mapLayanan : dataLayanan) { + if (Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + // tidak_dapat_skor_untuk_diskon_dpjp + mapLayanan.put("skor", 0.0); + mapLayanan.put("tSkor", 0.0); + } else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT) + && listRuangEks.contains(mapLayanan.get("ruanganId"))) { + mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); + mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Double.valueOf(mapLayanan.get("jumlah").toString())))); + } else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + mapLayanan.put("skor", + Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); + mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Double.valueOf(mapLayanan.get("jumlah").toString())))); + } else { + mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); + mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Double.valueOf(mapLayanan.get("jumlah").toString())))); + } + } + + // GROUPING_INDIKATOR + for (Map mapLayanan : dataLayanan) { + if (listKonsulTapiVisit.contains(mapLayanan.get("produkId")) + || mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.VISITE); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.VISITE)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && listRuangEks.contains(mapLayanan.get("ruanganId"))) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_EKS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_EKS)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_GADAR); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_GADAR)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_REG); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_REG)); + } else if (listRuangEks.contains(mapLayanan.get("ruanganId"))) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS)); + } else if (mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR)); + } else if (mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS)); + } else { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_REG); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_REG)); + } + } + + for (Map mapLayanan : dataLayanan) { + if (!listIdIndikator.contains(mapLayanan.get("indikatorId"))) { + listIdIndikator.add(Integer.valueOf(mapLayanan.get("indikatorId").toString())); + } + if (!listIdProduk.contains(mapLayanan.get("produkId"))) { + listIdProduk.add(Integer.valueOf(mapLayanan.get("produkId").toString())); + } + if (!listSkor.contains(mapLayanan.get("skor"))) { + listSkor.add(Double.valueOf(mapLayanan.get("skor").toString())); + } + if (!listTglPelayanan.contains(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { + listTglPelayanan.add(df.format(((Date) mapLayanan.get("tglPelayanan")))); + } + } + + List listTglPelayananSorted = listTglPelayanan.stream().sorted().collect(Collectors.toList()); + + // GROUPING_TANGGAL_PELAYANAN + List> dataTglPelayanan = new ArrayList<>(); + for (Integer idIndikator : listIdIndikator) { + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + for (String tglPelayanan : listTglPelayananSorted) { + Map data = new HashMap<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : dataLayanan) { + if (idIndikator.equals(mapLayanan.get("indikatorId")) + && idProduk.equals(mapLayanan.get("produkId")) + && skor.equals(mapLayanan.get("skor")) + && tglPelayanan.equals(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + data.putAll(mapLayanan); + data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan")))); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("jumlah", jumlahTindakan); + data.put("tSkor", jumlahSkor); + + dataTglPelayanan.add(data); + } + } + } + } + } + + // GROUPING_HEADER + for (Integer idIndikator : listIdIndikator) { + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + Map data = new HashMap<>(); + List> detail = new ArrayList<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : dataTglPelayanan) { + if (idIndikator.equals(mapLayanan.get("indikatorId")) + && idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + + Map mapDetail = new HashMap<>(); + mapDetail.put("jumlah", mapLayanan.get("jumlah")); + mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan")); + detail.add(mapDetail); + + mapLayanan.remove("noRec"); + mapLayanan.remove("tglPelayanan"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("hargaDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + data.putAll(mapLayanan); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("detail", detail); + data.put("jumlah", jumlahTindakan); + data.put("tSkor", Double.parseDouble(decf.format(jumlahSkor))); + + result.add(data); + } + } + } + } + + return result; } @Override @@ -1154,8 +1357,360 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Override public List> findDetailLogbookLuarJamKerjaDokter(Integer idPegawai, Integer idIndikator, Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) { - // TODO Auto-generated method stub - return null; + List> result = new ArrayList<>(); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); + List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); + + List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + + List> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookLuarJamKerjaDokter(idProduk, + tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); + + for (Map mapLayanan : dataLayanan) { + if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE) + && (listKonsulTapiVisit.contains(mapLayanan.get("produkId")) + || mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT))) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_EKS) + && mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && listRuangEks.contains(mapLayanan.get("ruanganId"))) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_GADAR) + && mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_REG) + && mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS) + && listRuangEks.contains(mapLayanan.get("ruanganId"))) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR) + && mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS) + && mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_REG)) { + if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS) + && !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) { + mapLayanan.remove("noRec"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + mapLayanan.remove("hargaDiskon"); + result.add(mapLayanan); + } + } + } + } + + return result; } @Override 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 f6673665..7d6bf503 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 @@ -1167,8 +1167,8 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookSkoringDokter(HttpServletRequest request, + @RequestMapping(value = "/get-logbook-skoring-dokter-jam-kerja", method = RequestMethod.GET) + public ResponseEntity>> getLogbookSkoringDokterJamKerja(HttpServletRequest request, @RequestParam(value = "bulan", required = true) Long bulan, @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { try { @@ -1177,18 +1177,18 @@ public class IkiDanRemunerasiController extends LocaleController>> getDetailPasienDetail(HttpServletRequest request, + @RequestMapping(value = "/get-detail-pasien-dokter-jam-kerja", method = RequestMethod.GET) + public ResponseEntity>> getDetailPasienDetailJamKerja(HttpServletRequest request, @RequestParam(value = "pegawaiId", required = true) Integer idPegawai, @RequestParam(value = "indikatorId", required = true) Integer idIndikator, @RequestParam(value = "produkId", required = true) Integer idProduk, @@ -1196,17 +1196,66 @@ public class IkiDanRemunerasiController extends LocaleController> result = logbookKinerjaService.findDetailLogbookJamKerjaDokter(idPegawai, idIndikator, - idProduk, tglPelayanan, idJenisPetugas, skor); + List> result = logbookKinerjaService.findDetailLogbookJamKerjaDokter(idPegawai, + idIndikator, idProduk, tglPelayanan, idJenisPetugas, skor); 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 detail pasien logbook skoring dokter", sve.getMessage()); + LOGGER.error("Got exception {} when get detail pasien logbook skoring dokter di jam kerja", + 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 detail pasien logbook skoring dokter", jse.getMessage()); + LOGGER.error("Got exception {} when get detail pasien logbook skoring dokter di jam kerja", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-logbook-skoring-dokter-luar-jam-kerja", method = RequestMethod.GET) + public ResponseEntity>> getLogbookSkoringDokterLuarJamKerja(HttpServletRequest request, + @RequestParam(value = "bulan", required = true) Long bulan, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + List> result = logbookKinerjaService.findLogbookLuarJamKerjaDokter(idPegawai, bulan); + 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 logbook skoring dokter di luar jam kerja", 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 logbook skoring dokter di luar jam kerja", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-detail-pasien-dokter-luar-jam-kerja", method = RequestMethod.GET) + public ResponseEntity>> getDetailPasienDetailLuarJamKerja(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai, + @RequestParam(value = "indikatorId", required = true) Integer idIndikator, + @RequestParam(value = "produkId", required = true) Integer idProduk, + @RequestParam(value = "tglPelayanan", required = true) String tglPelayanan, + @RequestParam(value = "jenisPetugasId", required = true) Integer idJenisPetugas, + @RequestParam(value = "skor", required = true) Double skor) throws ParseException { + try { + List> result = logbookKinerjaService.findDetailLogbookLuarJamKerjaDokter(idPegawai, + idIndikator, idProduk, tglPelayanan, idJenisPetugas, skor); + 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 detail pasien logbook skoring dokter di luar jam kerja", + 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 detail pasien logbook skoring dokter di luar jam kerja", + jse.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); }