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 9b3815d0..4a7b45b6 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 @@ -221,7 +221,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository 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)) { + 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(mf.format(new Date(bulan)), + listRefSkor); + } + + /** + * Skor dokter anestesi (bukan tindakan mandiri) + */ + for (ReferensiSkorAnestesiVO refSkor : listRefSkor) { + for (Map mapLayanan : dataLayananAnestesi) { + for (Map mapSkor : dataSkorAnestesi) { + if (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())) + && refSkor.getDokterAnestesiId() + .equals(Integer.valueOf(mapLayanan.get("pegawaiId").toString())) + && 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")))) { + double skor = 0.0; + if (refSkor.getAsaId() >= 3) { + skor = 0.8 * Double.valueOf(mapSkor.get("skor").toString()); + } else if (refSkor.getAsaId() == 2) { + skor = 0.5 * Double.valueOf(mapSkor.get("skor").toString()); + } else { + skor = 0.4 * Double.valueOf(mapSkor.get("skor").toString()); + } + mapLayanan.put("skor", skor); + break; + } + } + } + } + } + List> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter( mf.format(new Date(bulan)), Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM)); // SCORE for (Map mapLayanan : dataLayanan) { for (Map mapSkor : dataSkor) { - if (mapLayanan.get("produkId").equals(mapSkor.get("produkId")) + if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) + && 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")))) { @@ -1216,7 +1309,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb // RULES for (Map mapLayanan : dataLayanan) { - if (Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + if (Integer.valueOf(mapLayanan.get("jenisPetugasId").toString()) + .equals(Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA) + && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) || Integer.valueOf(mapLayanan.get("statusDiskon").toString()).equals(0))) { // tidak_dapat_skor_untuk_diskon_dpjp