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 887f9d90..d3fec516 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 @@ -271,6 +271,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository mapLayanan : dataLayanan) { - for (Map mapLayananAnestesi : dataLayananAnestesi) { - if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) { - mapLayanan.putAll(mapLayananAnestesi); - break; + if (CommonUtil.isNotNullOrEmpty(dataLayananAnestesi)) { + for (Map mapLayanan : dataLayanan) { + for (Map mapLayananAnestesi : dataLayananAnestesi) { + if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) { + mapLayanan.putAll(mapLayananAnestesi); + break; + } } } } @@ -1199,7 +1201,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb // SCORE for (Map mapLayanan : dataLayanan) { for (Map mapSkor : dataSkor) { - if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) + if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) && !mapLayanan.containsKey("skor") && mapLayanan.get("produkId").equals(mapSkor.get("produkId")) && (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku")) || ((Date) mapLayanan.get("tglPelayanan")) @@ -1720,6 +1722,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + String[] blnComp = tglPelayanan.split("-"); + String bulan = blnComp[0] + "-" + blnComp[1]; + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); @@ -1752,7 +1757,157 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); + /** + * Menghitung skor asa dokter anestesi + */ + List listIdPelayananAnestesi = new ArrayList<>(); + { + List> dataLayananAnestesi = new ArrayList<>(); + for (Map map : dataLayanan) { + if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_ANASTESI)) { + listIdPelayananAnestesi.add(map.get("noRec").toString()); + dataLayananAnestesi.add(map); + } + } + + List> listCountReferensiSkor = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(listIdPelayananAnestesi)) { + listCountReferensiSkor = pelayananPasienPetugasDao + .countReferensiSkorPelayananAnestesi(listIdPelayananAnestesi); + } + + List listIdRefSkor = new ArrayList<>(); + for (Map map : listCountReferensiSkor) { + listIdRefSkor.add(map.get("pelayananId").toString()); + } + + List> listDataReferensiSkor = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(listIdRefSkor)) { + listDataReferensiSkor = pelayananPasienPetugasDao.findReferensiSkorPelayananAnestesi(listIdRefSkor, + Arrays.asList(Master.UnitKerja.KSM)); + } + + List listRefSkor = new ArrayList<>(); + for (String idRefSkor : listIdRefSkor) { + ReferensiSkorAnestesiVO ref = new ReferensiSkorAnestesiVO(); + for (Map map : listDataReferensiSkor) { + if (idRefSkor.equals(map.get("pelayananId"))) { + ref.setPelayananId(map.get("pelayananId").toString()); + ref.setProdukId(Integer.valueOf(map.get("produkId").toString())); + if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA)) { + ref.setDokterPemeriksaId(Integer.valueOf(map.get("petugasId").toString())); + ref.setKelompokKerjaId(Integer.valueOf(map.get("kkId").toString())); + } else if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_ANASTESI) + && idPegawai.equals(map.get("petugasId"))) { + ref.setDokterAnestesiId(Integer.valueOf(map.get("petugasId").toString())); + ref.setAsaId(Byte.valueOf(map.get("asaId").toString())); + } + } + } + listRefSkor.add(ref); + } + + List> dataSkorAnestesi = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(listRefSkor)) { + dataSkorAnestesi = skoringTindakanMedisDaoCustom.findSkoringLogbookDokter(bulan, listRefSkor); + } + + /** + * Skor dokter anestesi (bukan tindakan mandiri) + */ + for (ReferensiSkorAnestesiVO refSkor : listRefSkor) { + for (Map mapLayanan : dataLayananAnestesi) { + for (Map mapSkor : dataSkorAnestesi) { + if (CommonUtil.isNotNullOrEmpty(refSkor.getPelayananId()) + && CommonUtil.isNotNullOrEmpty(mapLayanan.get("noRec")) + && CommonUtil.isNotNullOrEmpty(refSkor.getAsaId()) + && CommonUtil.isNotNullOrEmpty(mapLayanan.get("asaId")) + && CommonUtil.isNotNullOrEmpty(refSkor.getProdukId()) + && CommonUtil.isNotNullOrEmpty(mapLayanan.get("produkId")) + && CommonUtil.isNotNullOrEmpty(mapSkor.get("produkId")) + && CommonUtil.isNotNullOrEmpty(refSkor.getDokterAnestesiId()) + && CommonUtil.isNotNullOrEmpty(idPegawai) + && CommonUtil.isNotNullOrEmpty(refSkor.getDokterPemeriksaId()) + && CommonUtil.isNotNullOrEmpty(mapSkor.get("pegawaiId")) + && CommonUtil.isNotNullOrEmpty(refSkor.getKelompokKerjaId()) + && CommonUtil.isNotNullOrEmpty(mapSkor.get("kelompokKerjaId")) + && CommonUtil.isNotNullOrEmpty(mapLayanan.get("tglPelayanan")) + && CommonUtil.isNotNullOrEmpty(mapSkor.get("tglMulaiBerlaku")) + && refSkor.getPelayananId().equals(mapLayanan.get("noRec").toString()) + && refSkor.getAsaId().equals(Byte.valueOf(mapLayanan.get("asaId").toString())) + && refSkor.getProdukId().equals(Integer.valueOf(mapLayanan.get("produkId").toString())) + && refSkor.getProdukId().equals(Integer.valueOf(mapSkor.get("produkId").toString())) + && Integer.valueOf(mapLayanan.get("produkId").toString()) + .equals(Integer.valueOf(mapSkor.get("produkId").toString())) + && idPegawai.equals(refSkor.getDokterAnestesiId()) + && refSkor.getDokterPemeriksaId() + .equals(Integer.valueOf(mapSkor.get("pegawaiId").toString())) + && refSkor.getKelompokKerjaId() + .equals(Integer.valueOf(mapSkor.get("kelompokKerjaId").toString())) + && (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku")) + || ((Date) mapLayanan.get("tglPelayanan")) + .equals((Date) mapSkor.get("tglMulaiBerlaku")))) { + if (!mapLayanan.containsKey("skor")) { + if (refSkor.getAsaId() >= 3) { + double calcSkor = 0.8 * Double.valueOf(mapSkor.get("skor").toString()); + mapLayanan.put("skor", calcSkor); + break; + } else if (refSkor.getAsaId() == 2) { + double calcSkor = 0.5 * Double.valueOf(mapSkor.get("skor").toString()); + mapLayanan.put("skor", calcSkor); + break; + } else if (refSkor.getAsaId() == 1) { + double calcSkor = 0.4 * Double.valueOf(mapSkor.get("skor").toString()); + mapLayanan.put("skor", calcSkor); + break; + } + } + } + } + } + } + if (CommonUtil.isNotNullOrEmpty(dataLayananAnestesi)) { + for (Map mapLayanan : dataLayanan) { + for (Map mapLayananAnestesi : dataLayananAnestesi) { + if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) { + mapLayanan.putAll(mapLayananAnestesi); + break; + } + } + } + } + } + + List> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter(bulan, + Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM)); + + // SCORE for (Map mapLayanan : dataLayanan) { + for (Map mapSkor : dataSkor) { + if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) && !mapLayanan.containsKey("skor") + && 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); + } + } + + // FILTERING + List> dataLayananFiltered = new ArrayList<>(); + for (Map map : dataLayanan) { + if (skor.equals(map.get("skor"))) { + dataLayananFiltered.add(map); + } + } + + // RULES + for (Map mapLayanan : dataLayananFiltered) { if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE) && (listKonsulTapiVisit.contains(mapLayanan.get("produkId")) || mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT))) {