From 699f7137785bc86dfdcc6fc622f2ea7f69f14450 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 11 May 2023 14:46:50 +0700 Subject: [PATCH] Update PelayananPasienServiceImpl.java Perbaikan filter pembatasan kinerja operasi bpjs --- .../impl/PelayananPasienServiceImpl.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 1c58e5bb..41d38737 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -518,35 +518,46 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Alokasi data diambil terlebih dahulu untuk kelompok BPJS, Jaminan * Kemenkes */ - List> listDataBpjs = new ArrayList<>(); + List> rawDataBpjs0 = new ArrayList<>(); for (Map d : listData) if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) - listDataBpjs.add(d); + rawDataBpjs0.add(d); /* * Filter tindakan operasi untuk pasien BPJS hanya diambil tarif * tertinggi saja dalam satu siklus pelayanan */ - List> listRawDataBpjs = listDataBpjs.stream() + List> pRawDataBpjs0 = rawDataBpjs0.stream() .filter(d -> Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) + .sorted(Comparator.comparing(o -> Double.parseDouble(o.get("jumlah").toString()), + Comparator.reverseOrder())) .sorted(Comparator.comparing(o -> Double.parseDouble(o.get("hargaJual").toString()), Comparator.reverseOrder())) .sorted(Comparator.comparing(o -> o.get("idPasienDaftar").toString())).collect(Collectors.toList()); List listIdPelayananPasien = new ArrayList<>(); List listIdPasienDaftar = new ArrayList<>(); - for (Map b : listRawDataBpjs) + for (Map b : pRawDataBpjs0) if (!listIdPasienDaftar.contains(b.get("idPasienDaftar"))) { listIdPasienDaftar.add(b.get("idPasienDaftar").toString()); listIdPelayananPasien.add(b.get("idPelayananPasien").toString()); } - List> listDataBpjsNew = new ArrayList<>(); - for (Map d : listDataBpjs) { + List> rawDataBpjs1 = new ArrayList<>(); + for (Map d : rawDataBpjs0) { if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) && listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) { - listDataBpjsNew.add(d); - } else { - listDataBpjsNew.add(d); + rawDataBpjs1.add(d); + } else if (!Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) { + rawDataBpjs1.add(d); } } + /* + * Filter visite untuk pasien BPJS hanya diambil 1 kali di luar ICU dan + * NICU per hari per dokter + */ + List> pRawDataBpjs1 = rawDataBpjs1.stream() + .filter(d -> !Master.Ruangan.ICU_PICU.equals(d.get("idRuangan")) + && !Master.Ruangan.NICU.equals(d.get("idRuangan")) + && Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) + .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))).collect(Collectors.toList()); /* * Alokasi data diurutkan dulu untuk jam kerja. Asumsi jam kerja dokter * nonshift @@ -610,7 +621,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Offer data yang sudah diurutkan dalam queue */ Queue> queuePelayanan = new ArrayDeque<>(); - listDataBpjsNew.forEach(pelayanan -> { + rawDataBpjs1.forEach(pelayanan -> { queuePelayanan.offer(pelayanan); }); listDataJamKerja.forEach(pelayanan -> { @@ -1045,7 +1056,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel for (Map d : listData) { if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) { /* - * Dokter luar yang klaim ffs dengan persen jasa dari tarif total + * Dokter luar yang klaim ffs dengan persen jasa dari tarif + * total */ d.put("persenJasa", persenBPJS.toString() + "%"); if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)