Update PelayananPasienServiceImpl.java

Perbaikan filter pembatasan kinerja operasi bpjs
This commit is contained in:
Salman Manoe 2023-05-11 14:46:50 +07:00
parent aba960b0ca
commit 699f713778

View File

@ -518,35 +518,46 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Alokasi data diambil terlebih dahulu untuk kelompok BPJS, Jaminan
* Kemenkes
*/
List<Map<String, Object>> listDataBpjs = new ArrayList<>();
List<Map<String, Object>> rawDataBpjs0 = new ArrayList<>();
for (Map<String, Object> 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<Map<String, Object>> listRawDataBpjs = listDataBpjs.stream()
List<Map<String, Object>> 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<String> listIdPelayananPasien = new ArrayList<>();
List<String> listIdPasienDaftar = new ArrayList<>();
for (Map<String, Object> b : listRawDataBpjs)
for (Map<String, Object> b : pRawDataBpjs0)
if (!listIdPasienDaftar.contains(b.get("idPasienDaftar"))) {
listIdPasienDaftar.add(b.get("idPasienDaftar").toString());
listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
}
List<Map<String, Object>> listDataBpjsNew = new ArrayList<>();
for (Map<String, Object> d : listDataBpjs) {
List<Map<String, Object>> rawDataBpjs1 = new ArrayList<>();
for (Map<String, Object> 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<Map<String, Object>> 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<Map<String, Object>> 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<String, Object> 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)