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 0acac41e..5bd3cb76 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 @@ -415,8 +415,10 @@ public final class Master { public static final class SubUnitKerja { public static final Integer KK_ANESTESI = 223; + public static final Integer KK_EMERGIC = 218; public static final Integer KK_FARMAKOLOGI = 205; public static final Integer KK_GENETIKA = 198; + public static final Integer KK_HEMATO_ONKO = 216; public static final Integer KK_PATOLOGI_ANATOMI = 197; public static final Integer KK_PATOLOGI_KLINIK = 199; public static final Integer KK_PEDIATRIK_GD = 244; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 9f58ab2d..a0fc2213 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -497,4 +497,8 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository findDokterByUnitKerja(@Param("listUnitKerjaId") List listIdUnitKerja); + @Query("select skj.id from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.subUnitKerjaPegawai skj " + + "where mj.statusEnabled is true " + "and skj.statusEnabled is true " + "and lower(skj.name) like 'kk%' " + + "and mj.pegawaiId = :pegawaiId") + List findKelompokKerjaByDokter(@Param("pegawaiId") Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index 210b5dc6..42431138 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -110,6 +110,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera @Autowired private MapJabatanProfesiDao mapJabatanProfesiDao; + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao; + @Override public Map saveProgramKegiatan(ProgramKegiatanVO vo) { Map result = new HashMap<>(); @@ -275,6 +278,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera } catch (ParseException e) { return null; } + /* + * Mendapatkan kelompok kerja dokter + */ + List kelompokKerjaByDokter = mapPegawaiJabatanToUnitKerjaDao.findKelompokKerjaByDokter(idPegawai); + Integer idKKDokter = kelompokKerjaByDokter.stream().findFirst().orElse(-1); /* * Mendapatkan daftar jadwal kerja, tanggal dan jam kerja */ @@ -320,13 +328,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ List listDetailJenisProduk; List listDetailJenisProdukException = new ArrayList<>(); - List drKkPediatrikGDList = pegawaiDao.getDokterByKelompokKerja(KK_PEDIATRIK_GD); - List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI); - List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(KK_UMUM); - List drKkPerinatologiList = pegawaiDao.getDokterByKelompokKerja(KK_PERINATOLOGI); - List drKkPatologiAnatomiList = pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_ANATOMI); - List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); - List drKkRadiologi = pegawaiDao.getDokterByKelompokKerja(KK_RADIOLOGI); List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); List idsJenisProdukNonLogbook = getNilaiDataFixByTMT("listJenisProdukNonLogbook", tglAkhir); @@ -341,6 +342,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera List idsPenunjangBukanAnestesi = getNilaiDataFixByTMT("pr_penunjang_nonanestesi", tglAkhir); List idsDokterBPJSffs = splitDataSettingDatafixed("dokterBPJSffs"); List idsDokterPediatrikGD = getNilaiDataFixByTMT("pr_dokter_pediatrik_gd", tglAkhir); + List idsDokterHematoOnko = getNilaiDataFixByTMT("pr_dokter_hematoonko_anak", tglAkhir); + List idsDokterEmergic = getNilaiDataFixByTMT("pr_produk_emergic_anak", tglAkhir); + List idsPerawat = getNilaiDataFixByTMT("pr_produk_perawat", tglAkhir); List listIdPegawaiRemunKelompokBudiRahmat = splitDataSettingDatafixed( "listIdPegawaiRemunKelompokBudiRahmat"); List idsMonitoringIntervensi = getNilaiDataFixByTMT("idMonitoringIntervensi", tglAkhir); @@ -350,11 +354,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera List idsKepalaPaketFixedPay = getNilaiDataFixByTMT("idProdukKepalaPaketFixedPay", tglAkhir); List paketBukanFixedPay = getNilaiDataFixByTMT("produkPaketBukanFixedPay", tglAkhir); List idsKarcis = getNilaiDataFixByTMT("listKarcisIdProduk", tglAkhir); - if (drKkPatologiAnatomiList.contains(idPegawai)) { + if (KK_PATOLOGI_ANATOMI.equals(idKKDokter)) { listDetailJenisProduk = idsRegDJPPenunjangPA; - } else if (pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_KLINIK).contains(idPegawai)) { + } else if (KK_PATOLOGI_KLINIK.equals(idKKDokter)) { listDetailJenisProduk = idsRegDJPPenunjangPK; - } else if (drKkRadiologi.contains(idPegawai)) { + } else if (KK_RADIOLOGI.equals(idKKDokter)) { listDetailJenisProduk = idsRegDJPPenunjangRad; } else { listDetailJenisProduk = idsRegDJPMedisUtama; @@ -364,9 +368,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera listDetailJenisProdukException.removeAll(listDetailJenisProduk); } /* - * TMT KSM Umum mulai menggunakan pembatasan tindakan + * TMT Tarif baru tahun 2024 */ - Date tmtTindakanKSMUmum = new Date(1738342800000L); + Date tmtTarif2024 = new Date(1738342800000L); /* * Mendapatkan data mentah pelayanan pasien */ @@ -380,6 +384,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera .collect(Collectors.toList()); listRatedPay = listRatedPay.stream() .filter(d -> !idsKepalaPaketFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + .filter(d -> !idsPerawat.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); List allPaketId = mapProdukPaketDao.findProdukEntriId(); List revisedPaketId = allPaketId.stream().filter(p -> !paketBukanFixedPay.contains(p)) @@ -409,7 +414,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera d.put("hargaJual", d.get("komponenTotalTarif")); d.put("isTermasukProporsi", true); double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + if (KK_UMUM.equals(idKKDokter) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d); d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai)) { @@ -497,13 +502,13 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); - } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + } else if (KK_ANESTESI.equals(idKKDokter) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d); d.put("hargaJasa", hargaJasa.getNilai()); - } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + } else if (KK_ANESTESI.equals(idKKDokter) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d); d.put("hargaJasa", hargaJasa.getNilai()); - } else if (drKkGenetika.contains(idPegawai) + } else if (KK_GENETIKA.equals(idKKDokter) && idsLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { /* @@ -518,7 +523,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); - } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + } else if (KK_PATOLOGI_ANATOMI.equals(idKKDokter)) { RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d); d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) @@ -590,7 +595,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera * pasien di luar dokter-dokter kk eria */ List> rawDataBpjs2 = new ArrayList<>(); - if (!drKkPediatrikGDList.contains(idPegawai)) { + if (!KK_PEDIATRIK_GD.equals(idKKDokter)) { /* * Dapatkan semua pendaftaran BPJS untuk visite di luar * dokter-dokter kk eria @@ -651,7 +656,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera * hari per dokter per pasien kk eria */ List> rawDataBpjs3 = new ArrayList<>(); - if (drKkPediatrikGDList.contains(idPegawai)) { + if (KK_PEDIATRIK_GD.equals(idKKDokter)) { /* * Dapatkan semua pendaftaran BPJS untuk visite dokter-dokter kk * eria @@ -718,7 +723,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera * diambil maksimal 2 kali per hari per pasien per dokter kk eria */ List> rawDataBpjs4 = new ArrayList<>(); - if (drKkPediatrikGDList.contains(idPegawai)) { + if (KK_PEDIATRIK_GD.equals(idKKDokter)) { /* * Dapatkan semua pendaftaran BPJS untuk monitoring hemodinamik * gagal organ dokter-dokter kk eria @@ -795,7 +800,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera * 2 kali per hari per pasien per dokter kk perinatologi */ List> rawDataBpjs5 = new ArrayList<>(); - if (drKkPerinatologiList.contains(idPegawai)) { + if (KK_PERINATOLOGI.equals(idKKDokter)) { /* * Dapatkan semua pendaftaran BPJS untuk monitoring intervensi * dokter-dokter kk perinatologi @@ -989,7 +994,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera /* * Urutan alokasi bpjs sebagai urutan prioritas */ - if (drKkPediatrikGDList.contains(idPegawai)) { + if (KK_PEDIATRIK_GD.equals(idKKDokter)) { if (CommonUtil.isNotNullOrEmpty(next.get("kptl"))) { if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) @@ -1028,15 +1033,41 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); } } - } else if (drKkRadiologi.contains(idPegawai) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) + } else if (KK_RADIOLOGI.equals(idKKDokter) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) || CATHLAB.equals(next.get("idRuangan")))) { listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); - } else if (drKsmUmumList.contains(idPegawai) + } else if (KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && (tglAwal.equals(tmtTindakanKSMUmum) || tglAwal.after(tmtTindakanKSMUmum))) { + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { /* - * Aturan dokter ksm umum + * Aturan dokter ksm umum tarif 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk perinatologi tarif 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_HEMATO_ONKO.equals(idKKDokter) + && idsDokterHematoOnko.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk hematologi dan onkologi anak tarif + * 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_EMERGIC.equals(idKKDokter) + && idsDokterEmergic.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk emergensi rawat intensif anak tarif + * 2024 */ listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); @@ -1046,9 +1077,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && listDetailJenisProduk .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { /* * Dibatasi oleh daftar jenis tindakan tertentu */ @@ -1075,9 +1106,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && IGD.equals(next.get("idDepartemen")) && drKsmUmumList.contains(idPegawai) + && IGD.equals(next.get("idDepartemen")) && KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum)) { + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter ksm umum di igd */ @@ -1087,15 +1118,16 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && drKkPerinatologiList.contains(idPegawai) - && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString()))) { + && KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter kk perinatologi dengan pembatasan * tindakan tertentu */ listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); - } else if (drAnastesiList.contains(idPegawai)) { + } else if (KK_ANESTESI.equals(idKKDokter)) { if (idsPenunjangBukanAnestesi.contains(Integer.parseInt(next.get("idProduk").toString()))) { /* * Aturan dokter kk anestesi dengan pembatasan @@ -1116,9 +1148,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera /* * Diluar pembatasan jenis produk */ - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && (idsRegDJPPenunjangPA .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) @@ -1145,7 +1177,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera * Alokasi bagian remunerasi berdasarkan target rupiah * sesuai tanggal mulai berlaku */ - if (drKkPediatrikGDList.contains(idPegawai)) { + if (KK_PEDIATRIK_GD.equals(idKKDokter)) { if (CommonUtil.isNotNullOrEmpty(next.get("kptl"))) { if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) @@ -1184,15 +1216,41 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); } } - } else if (drKkRadiologi.contains(idPegawai) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) + } else if (KK_RADIOLOGI.equals(idKKDokter) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) || CATHLAB.equals(next.get("idRuangan")))) { listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); - } else if (drKsmUmumList.contains(idPegawai) + } else if (KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && (tglAwal.equals(tmtTindakanKSMUmum) || tglAwal.after(tmtTindakanKSMUmum))) { + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { /* - * Aturan dokter ksm umum + * Aturan dokter ksm umum tarif 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk perinatologi tarif 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_HEMATO_ONKO.equals(idKKDokter) + && idsDokterHematoOnko.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk hematologi dan onkologi anak tarif + * 2024 + */ + listPelayananRemun.add(next); + capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); + } else if (KK_EMERGIC.equals(idKKDokter) + && idsDokterEmergic.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk emergensi rawat intensif anak tarif + * 2024 */ listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); @@ -1202,9 +1260,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && listDetailJenisProduk .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { /* * Dibatasi oleh daftar jenis tindakan tertentu */ @@ -1231,9 +1289,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && IGD.equals(next.get("idDepartemen")) && drKsmUmumList.contains(idPegawai) + && IGD.equals(next.get("idDepartemen")) && KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum)) { + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter ksm umum di igd */ @@ -1243,15 +1301,16 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && drKkPerinatologiList.contains(idPegawai) - && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString()))) { + && KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter kk perinatologi dengan pembatasan * tindakan tertentu */ listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); - } else if (drAnastesiList.contains(idPegawai)) { + } else if (KK_ANESTESI.equals(idKKDokter)) { if (idsPenunjangBukanAnestesi.contains(Integer.parseInt(next.get("idProduk").toString()))) { /* * Aturan dokter kk anestesi dengan pembatasan @@ -1272,9 +1331,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera /* * Diluar pembatasan jenis produk */ - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && (idsRegDJPPenunjangPA .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) @@ -1300,7 +1359,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera /* * Alokasi untuk bagian ffs */ - if (drKkPediatrikGDList.contains(idPegawai)) { + if (KK_PEDIATRIK_GD.equals(idKKDokter)) { if (CommonUtil.isNotNullOrEmpty(next.get("kptl"))) { if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) @@ -1348,18 +1407,52 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera } } } - } else if (drKkRadiologi.contains(idPegawai) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) + } else if (KK_RADIOLOGI.equals(idKKDokter) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) || CATHLAB.equals(next.get("idRuangan")))) { if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { listPelayananFfs.add(next); } else { listPelayananNonJknLuarJamKerja.add(next); } - } else if (drKsmUmumList.contains(idPegawai) + } else if (KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && (tglAwal.equals(tmtTindakanKSMUmum) || tglAwal.after(tmtTindakanKSMUmum))) { + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { /* - * Aturan dokter ksm umum + * Aturan dokter ksm umum tarif 2024 + */ + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } + } else if (KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk perinatologi tarif 2024 + */ + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } + } else if (KK_HEMATO_ONKO.equals(idKKDokter) + && idsDokterHematoOnko.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk hematologi dan onkologi tarif 2024 + */ + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } + } else if (KK_EMERGIC.equals(idKKDokter) + && idsDokterEmergic.contains(Integer.parseInt(next.get("idProduk").toString())) + && (tglAwal.equals(tmtTarif2024) || tglAwal.after(tmtTarif2024))) { + /* + * Aturan dokter kk emergensi rawat intensif anak tarif + * 2024 */ if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { listPelayananFfs.add(next); @@ -1372,9 +1465,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && listDetailJenisProduk .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { /* * Dibatasi oleh daftar jenis tindakan tertentu */ @@ -1407,9 +1500,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && IGD.equals(next.get("idDepartemen")) && drKsmUmumList.contains(idPegawai) + && IGD.equals(next.get("idDepartemen")) && KK_UMUM.equals(idKKDokter) && idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum)) { + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter ksm umum di igd */ @@ -1422,8 +1515,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( Integer.parseInt(next.get("idDetailJenisProduk").toString())))) - && drKkPerinatologiList.contains(idPegawai) - && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString()))) { + && KK_PERINATOLOGI.equals(idKKDokter) + && idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString())) + && tglAwal.before(tmtTarif2024)) { /* * Aturan dokter kk perinatologi dengan pembatasan * tindakan tertentu @@ -1433,7 +1527,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera } else { listPelayananNonJknLuarJamKerja.add(next); } - } else if (drAnastesiList.contains(idPegawai)) { + } else if (KK_ANESTESI.equals(idKKDokter)) { if (idsPenunjangBukanAnestesi.contains(Integer.parseInt(next.get("idProduk").toString()))) { /* * Aturan dokter kk anestesi dengan pembatasan @@ -1460,9 +1554,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera /* * Diluar pembatasan jenis produk */ - if (!drKsmUmumList.contains(idPegawai) || (!idsDokterUmumExclude + if (!KK_UMUM.equals(idKKDokter) || (!idsDokterUmumExclude .contains(Integer.parseInt(next.get("idProduk").toString())) - && tglAwal.before(tmtTindakanKSMUmum))) { + && tglAwal.before(tmtTarif2024))) { if (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && (idsRegDJPPenunjangPA .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))