Update PelayananPasienServiceImpl.java

Perbaikan logbook dokter remun baru untuk pencegahan semua data bernilai null
This commit is contained in:
Salman Manoe 2023-05-14 11:28:31 +07:00
parent cec06a965a
commit 9bf3c3ae09

View File

@ -474,14 +474,20 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
listData = listData.stream().filter(d -> !Master.JenisProduk.OBAT_ALKES.equals(d.get("idJenisProduk"))) listData = listData.stream().filter(d -> !Master.JenisProduk.OBAT_ALKES.equals(d.get("idJenisProduk")))
.collect(Collectors.toList()); .collect(Collectors.toList());
/* /*
* Mapping persentase jasa remunerasi dan harga jasa remunerasi * Mapping set awal persentase jasa remunerasi dan harga jasa remunerasi
*/ */
for (Map<String, Object> d : listData) for (Map<String, Object> d : listData)
if (CommonUtil.isNotNullOrEmpty(d.get("totalDiskon")) if (CommonUtil.isNotNullOrEmpty(d.get("totalDiskon"))
&& Double.parseDouble(d.get("totalDiskon").toString()) > 0.0) { && Double.parseDouble(d.get("totalDiskon").toString()) > 0.0) {
/*
* Untuk diskon jasa medis oleh dpjp
*/
d.put("hargaJasa", 0.0); d.put("hargaJasa", 0.0);
} else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) { && Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) {
/*
* Set harga jasa pasien bpjs di ibs
*/
double persenTarif = persenTarifJasaBedah / 100; double persenTarif = persenTarifJasaBedah / 100;
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
double persenJasa = persenOperatorIBS / 100; double persenJasa = persenOperatorIBS / 100;
@ -494,6 +500,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
d.put("hargaJasa", persenJasa * persenTarif * Double.parseDouble(d.get("hargaJual").toString())); d.put("hargaJasa", persenJasa * persenTarif * Double.parseDouble(d.get("hargaJual").toString()));
} }
} else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) { } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) {
/*
* Set harga jasa di ibs selain pasien bpjs
*/
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("hargaJasa", persenOperatorIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); d.put("hargaJasa", persenOperatorIBS / 100 * Double.parseDouble(d.get("hargaJual").toString()));
} else if (Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { } else if (Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
@ -544,7 +553,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
for (Map<String, Object> d : rawDataBpjs0) for (Map<String, Object> d : rawDataBpjs0)
if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) { && listIdPelayananPasien.contains(d.get("idPelayananPasien"))) {
rawDataBpjs1.add(d); rawDataBpjs1.add(d);
} else if (!Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) { } else if (!Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) {
rawDataBpjs1.add(d); rawDataBpjs1.add(d);
@ -560,13 +569,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.filter(d -> !Master.Ruangan.ICU_PICU.equals(d.get("idRuangan")) .filter(d -> !Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
&& !Master.Ruangan.NICU.equals(d.get("idRuangan")) && !Master.Ruangan.NICU.equals(d.get("idRuangan"))
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) && Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk")))
.sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))).collect(Collectors.toList()); .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"),
Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.toList());
List<String> listIdPelayananPasien = new ArrayList<>(); List<String> listIdPelayananPasien = new ArrayList<>();
List<LocalDate> listLocalDate = new ArrayList<>(); List<LocalDate> listLocalDate = new ArrayList<>();
LocalDate startDate = tglAwal.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate startDate = tglAwal.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate endDate = tglAkhir.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate endDate = tglAkhir.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
for (LocalDate dateDay = startDate; dateDay.isBefore(endDate); dateDay = dateDay.plusDays(1)) for (LocalDate dateDay = startDate; dateDay.isBefore(endDate); dateDay = dateDay.plusDays(1))
for (Map<String, Object> b : visitBpjs) { for (Map<String, Object> b : visitBpjs) {
if (CommonUtil.isNotNullOrEmpty(b.get("tglPelayanan"))) {
LocalDate sDate = ((Date) b.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate sDate = ((Date) b.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
if (dateDay.equals(sDate) && !listLocalDate.contains(sDate)) { if (dateDay.equals(sDate) && !listLocalDate.contains(sDate)) {
@ -574,6 +586,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
listIdPelayananPasien.add(b.get("idPelayananPasien").toString()); listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
} }
} }
}
for (Map<String, Object> d : rawDataBpjs1) for (Map<String, Object> d : rawDataBpjs1)
if (!Master.Ruangan.ICU_PICU.equals(d.get("idRuangan")) if (!Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
&& !Master.Ruangan.NICU.equals(d.get("idRuangan")) && !Master.Ruangan.NICU.equals(d.get("idRuangan"))
@ -596,7 +609,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.filter(d -> (Master.Ruangan.ICU_PICU.equals(d.get("idRuangan")) .filter(d -> (Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|| Master.Ruangan.NICU.equals(d.get("idRuangan"))) || Master.Ruangan.NICU.equals(d.get("idRuangan")))
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) && Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk")))
.sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))).collect(Collectors.toList()); .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"),
Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.toList());
List<String> listIdPelayananPasien = new ArrayList<>(); List<String> listIdPelayananPasien = new ArrayList<>();
List<LocalDate> listLocalDate = new ArrayList<>(); List<LocalDate> listLocalDate = new ArrayList<>();
LocalDate startDate = tglAwal.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate startDate = tglAwal.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
@ -604,6 +619,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
for (LocalDate dateDay = startDate; dateDay.isBefore(endDate); dateDay = dateDay.plusDays(1)) { for (LocalDate dateDay = startDate; dateDay.isBefore(endDate); dateDay = dateDay.plusDays(1)) {
int count = 1; int count = 1;
for (Map<String, Object> b : visitBpjs) { for (Map<String, Object> b : visitBpjs) {
if (CommonUtil.isNotNullOrEmpty(b.get("tglPelayanan"))) {
LocalDate sDate = ((Date) b.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate sDate = ((Date) b.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
if (dateDay.equals(sDate) && !listLocalDate.contains(sDate) && count <= 2) { if (dateDay.equals(sDate) && !listLocalDate.contains(sDate) && count <= 2) {
@ -613,6 +629,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
} }
} }
}
for (Map<String, Object> d : rawDataBpjs2) for (Map<String, Object> d : rawDataBpjs2)
if ((Master.Ruangan.ICU_PICU.equals(d.get("idRuangan")) if ((Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|| Master.Ruangan.NICU.equals(d.get("idRuangan"))) || Master.Ruangan.NICU.equals(d.get("idRuangan")))
@ -631,10 +648,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
*/ */
List<Map<String, Object>> listDataJamKerja = new ArrayList<>(); List<Map<String, Object>> listDataJamKerja = new ArrayList<>();
for (Map<String, Object> d : listData) { for (Map<String, Object> d : listData) {
if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) {
LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
LocalDateTime tglJamPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDateTime tglJamPelayanan = ((Date) d.get("tglPelayanan")).toInstant()
.toLocalDateTime(); .atZone(ZoneId.systemDefault()).toLocalDateTime();
for (Map<String, Object> j : listJadwalKerja) { for (Map<String, Object> j : listJadwalKerja) {
if (!Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien")) if (!Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))
&& CommonUtil.isNotNullOrEmpty(j.get("jamMasuk"))) { && CommonUtil.isNotNullOrEmpty(j.get("jamMasuk"))) {
@ -653,18 +671,21 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
} }
} }
}
/* /*
* Setelah diurutkan jam kerja, alokasi urutan data di luar jam kerja. * Setelah diurutkan jam kerja, alokasi urutan data di luar jam kerja.
* Asumsi jam kerja dokter nonshift * Asumsi jam kerja dokter nonshift
*/ */
List<Map<String, Object>> listDataLuarJamKerja = new ArrayList<>(); List<Map<String, Object>> listDataLuarJamKerja = new ArrayList<>();
for (Map<String, Object> d : listData) { for (Map<String, Object> d : listData) {
if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) {
LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
LocalDateTime tglJamPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDateTime tglJamPelayanan = ((Date) d.get("tglPelayanan")).toInstant()
.toLocalDateTime(); .atZone(ZoneId.systemDefault()).toLocalDateTime();
for (Map<String, Object> j : listJadwalKerja) { for (Map<String, Object> j : listJadwalKerja) {
LocalDate tglMasuk = ((Date) j.get("tanggal")).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate tglMasuk = ((Date) j.get("tanggal")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate();
if (!Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) if (!Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien")))
if (CommonUtil.isNullOrEmpty(j.get("jamMasuk"))) { if (CommonUtil.isNullOrEmpty(j.get("jamMasuk"))) {
if (tglPelayanan.isEqual(tglMasuk)) { if (tglPelayanan.isEqual(tglMasuk)) {
@ -683,6 +704,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
} }
} }
} else {
/*
* Tanggal pelayanan null akan dianggap sebagai luar jam kerja
*/
listDataLuarJamKerja.add(d);
}
} }
/* /*
* Offer data yang sudah diurutkan dalam queue * Offer data yang sudah diurutkan dalam queue
@ -736,9 +763,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
Double capaianRemun = 0.0; Double capaianRemun = 0.0;
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR)) if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR))
.contains(idPegawai)) { .contains(idPegawai)) {
/*
* Dokter luar hanya mendapatkan ffs
*/
for (Map<String, Object> next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll()) { for (Map<String, Object> next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll()) {
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien")) if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien"))
&& idsDokterBPJSffs.contains(idPegawai)) { && idsDokterBPJSffs.contains(idPegawai)) {
/*
* dokter-dokter tertentu yang hanya dapat pasien bpjs
*/
listPelayananFfs.add(next); listPelayananFfs.add(next);
} else { } else {
listPelayananFfs.add(next); listPelayananFfs.add(next);
@ -747,8 +780,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else { } else {
for (Map<String, Object> next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll()) for (Map<String, Object> next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll())
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien"))) { if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien"))) {
/*
* Urutan alokasi bpjs sebagai urutan prioritas
*/
if (drKkPediatrikGDList.contains(idPegawai)) { if (drKkPediatrikGDList.contains(idPegawai)) {
/*
* Bpjs untuk dokter-dokter kk pediatrik gawat darurat
*/
if (idsDokterPediatrikGD.contains(next.get("idProduk"))) { if (idsDokterPediatrikGD.contains(next.get("idProduk"))) {
/*
* Dibatasi oleh daftar tindakan tertentu
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
@ -756,35 +798,54 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} }
} else if (!drKkPediatrikGDList.contains(idPegawai)) { } else if (!drKkPediatrikGDList.contains(idPegawai)) {
/*
* Selain dokter-dokter kk pediatrik gawat darurat
*/
if (listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))) { if (listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))) {
/*
* Dibatasi oleh daftar jenis tindakan tertentu
*/
if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk")) if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk"))
|| idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) { || idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) {
/*
* Pengecualian daftar tindakan penunjang yang
* bebas klaim
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} }
} else if (!listDetailJenisProduk } else if (!listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) && Master.Departemen.IGD.equals(next.get("idDepartemen"))
&& next.get("idDepartemen").equals(Master.Departemen.IGD)
&& drKsmUmumList.contains(idPegawai) && drKsmUmumList.contains(idPegawai)
&& idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString()))) { && idsDokterUmumIGD.contains(next.get("idProduk"))) {
/*
* Aturan dokter ksm umum di igd
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else if (!listDetailJenisProduk } else if (!listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))
&& drKkPerinatologiList.contains(idPegawai) && drKkPerinatologiList.contains(idPegawai)
&& idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString()))) { && idsDokterPerinatologi.contains(next.get("idProduk"))) {
/*
* Aturan dokter kk perinatologi dengan pembatasan
* tindakan tertentu
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException)
&& listDetailJenisProdukException && listDetailJenisProdukException.contains(next.get("idDetailJenisProduk"))) {
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { /*
if (idsRegDJPPenunjangPA * Diluar pembatasan jenis produk
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) */
|| idsRegDJPPenunjangPK if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { || idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) {
/*
* Pengecualian daftar tindakan penunjang yang
* bebas klaim
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
@ -794,8 +855,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
} }
} else if (capaianRemun < targetRemun && (date.equals(dateLine) || date.after(dateLine))) { } else if (capaianRemun < targetRemun && (date.equals(dateLine) || date.after(dateLine))) {
/*
* Alokasi bagian remunerasi berdasarkan target rupiah
* sesuai tanggal mulai berlaku
*/
if (drKkPediatrikGDList.contains(idPegawai)) { if (drKkPediatrikGDList.contains(idPegawai)) {
/*
* Bpjs untuk dokter-dokter kk pediatrik gawat darurat
*/
if (idsDokterPediatrikGD.contains(next.get("idProduk"))) { if (idsDokterPediatrikGD.contains(next.get("idProduk"))) {
/*
* Dibatasi oleh daftar tindakan tertentu
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
@ -803,35 +874,54 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} }
} else if (!drKkPediatrikGDList.contains(idPegawai)) { } else if (!drKkPediatrikGDList.contains(idPegawai)) {
/*
* Selain dokter-dokter kk pediatrik gawat darurat
*/
if (listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))) { if (listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))) {
/*
* Dibatasi oleh daftar jenis tindakan tertentu
*/
if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk")) if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk"))
|| idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) { || idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) {
/*
* Pengecualian daftar tindakan penunjang yang
* bebas klaim
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} }
} else if (!listDetailJenisProduk } else if (!listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) && Master.Departemen.IGD.equals(next.get("idDepartemen"))
&& next.get("idDepartemen").equals(Master.Departemen.IGD)
&& drKsmUmumList.contains(idPegawai) && drKsmUmumList.contains(idPegawai)
&& idsDokterUmumIGD.contains(Integer.parseInt(next.get("idProduk").toString()))) { && idsDokterUmumIGD.contains(next.get("idProduk"))) {
/*
* Aturan dokter ksm umum di igd
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else if (!listDetailJenisProduk } else if (!listDetailJenisProduk.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))
&& drKkPerinatologiList.contains(idPegawai) && drKkPerinatologiList.contains(idPegawai)
&& idsDokterPerinatologi.contains(Integer.parseInt(next.get("idProduk").toString()))) { && idsDokterPerinatologi.contains(next.get("idProduk"))) {
/*
* Aturan dokter kk perinatologi dengan pembatasan
* tindakan tertentu
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException)
&& listDetailJenisProdukException && listDetailJenisProdukException.contains(next.get("idDetailJenisProduk"))) {
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { /*
if (idsRegDJPPenunjangPA * Diluar pembatasan jenis produk
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString())) */
|| idsRegDJPPenunjangPK if (idsRegDJPPenunjangPA.contains(next.get("idDetailJenisProduk"))
.contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { || idsRegDJPPenunjangPK.contains(next.get("idDetailJenisProduk"))) {
/*
* Pengecualian daftar tindakan penunjang yang
* bebas klaim
*/
listPelayananRemun.add(next); listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); capaianRemun += Double.valueOf(next.get("hargaJasa").toString());
} else { } else {
@ -841,6 +931,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
} }
} else { } else {
/*
* Alokasi untuk bagian ffs
*/
listPelayananFfs.add(next); listPelayananFfs.add(next);
} }
} }
@ -848,9 +941,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Sorting data remun diurutkan * Sorting data remun diurutkan
*/ */
listPelayananRemun = listPelayananRemun.stream() listPelayananRemun = listPelayananRemun.stream()
.sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"))) .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"),
.sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()))) Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()))) .sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList()); .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList());
result.put("remun", listPelayananRemun); result.put("remun", listPelayananRemun);
/* /*
@ -861,9 +957,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
/* /*
* Sorting data ffs diurutkan * Sorting data ffs diurutkan
*/ */
listPelayananFfs = listPelayananFfs.stream().sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))) listPelayananFfs = listPelayananFfs.stream()
.sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelompokPasien").toString()))) .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"),
.sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelas").toString()))) Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelompokPasien").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelas").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList()); .sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList());
result.put("ffs", listPelayananFfs); result.put("ffs", listPelayananFfs);
return result; return result;
@ -903,6 +1003,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
for (Map<String, Object> d : listData) { for (Map<String, Object> d : listData) {
if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) { && Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) {
/*
* Set persen jasa dan harga jasa pasien bpjs di ibs
*/
double persenTarif = persenTarifJasaBedah / 100; double persenTarif = persenTarifJasaBedah / 100;
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
double persenJasa = persenOperatorIBS / 100; double persenJasa = persenOperatorIBS / 100;
@ -924,6 +1027,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
persenJasa * persenTarif * Double.parseDouble(d.get("hargaJual").toString())); persenJasa * persenTarif * Double.parseDouble(d.get("hargaJual").toString()));
} }
} else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) { } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) {
/*
* Set persen jasa dan harga jasa di ibs selain pasien bpjs
*/
if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { if (Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("persenJasa", persenOperatorIBS.toString() + "%"); d.put("persenJasa", persenOperatorIBS.toString() + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
@ -967,15 +1073,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Populate data filter * Populate data filter
*/ */
listData.forEach(d -> { listData.forEach(d -> {
if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) if (!listIdProduk.contains(d.get("idProduk")))
listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); listIdProduk.add(Integer.valueOf(d.get("idProduk").toString()));
if (!listPersenJasa.contains(d.get("persenJasa").toString())) if (!listPersenJasa.contains(d.get("persenJasa")))
listPersenJasa.add(d.get("persenJasa").toString()); listPersenJasa.add(d.get("persenJasa").toString());
if (!listHargaJual.contains(Double.valueOf(d.get("hargaJual").toString()))) if (!listHargaJual.contains(d.get("hargaJual")))
listHargaJual.add(Double.valueOf(d.get("hargaJual").toString())); listHargaJual.add(Double.valueOf(d.get("hargaJual").toString()));
if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) if (!listIdKelompokPasien.contains(d.get("idKelompokPasien")))
listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString())); listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString()));
if (!listTanggal.contains(d.get("tanggal").toString())) if (!listTanggal.contains(d.get("tanggal")))
listTanggal.add(d.get("tanggal").toString()); listTanggal.add(d.get("tanggal").toString());
}); });
/* /*
@ -991,11 +1097,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<String> norecs = new ArrayList<>(); List<String> norecs = new ArrayList<>();
int dataHitungKe = 0; int dataHitungKe = 0;
for (Map<String, Object> map : listData) { for (Map<String, Object> map : listData) {
if (Integer.parseInt(map.get("idProduk").toString()) == idProduk if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& persenJasa.equals(map.get("persenJasa")) && hargaJual.equals(map.get("hargaJual"))
&& Double.parseDouble(map.get("hargaJual").toString()) == hargaJual && idKelompokPasien.equals(map.get("idKelompokPasien"))
&& Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien && tanggal.equals(map.get("tanggal"))) {
&& map.get("tanggal").toString().equals(tanggal)) {
jumlah += Double.parseDouble(map.get("jumlah").toString()); jumlah += Double.parseDouble(map.get("jumlah").toString());
norecs.add(map.get("idPelayananPasien").toString()); norecs.add(map.get("idPelayananPasien").toString());
dataHitungKe++; dataHitungKe++;
@ -1027,10 +1132,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double jumlahHargaJasa = 0.0; double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) { for (Map<String, Object> map : dataTanggal) {
Map<String, Object> mapCount = new HashMap<>(); Map<String, Object> mapCount = new HashMap<>();
if (Integer.parseInt(map.get("idProduk").toString()) == idProduk if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& persenJasa.equals(map.get("persenJasa")) && hargaJual.equals(map.get("hargaJual"))
&& Double.parseDouble(map.get("hargaJual").toString()) == hargaJual && idKelompokPasien.equals(map.get("idKelompokPasien"))) {
&& Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) {
mapCount.put("jumlah", map.get("jumlah")); mapCount.put("jumlah", map.get("jumlah"));
mapCount.put("norecs", map.get("norecs")); mapCount.put("norecs", map.get("norecs"));
mapCount.put("tanggal", map.get("tanggal")); mapCount.put("tanggal", map.get("tanggal"));
@ -1062,9 +1166,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
/* /*
* Final sorting * Final sorting
*/ */
dataResult = dataResult.stream().sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"))) dataResult = dataResult.stream()
.sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()))) .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"),
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()))) Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList()); .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList());
dataResult.forEach(r -> { dataResult.forEach(r -> {
/* /*
@ -1123,10 +1231,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
for (Map<String, Object> d : listData) { for (Map<String, Object> d : listData) {
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) { if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(d.get("idKelompokPasien"))) {
/* /*
* Dokter luar yang klaim ffs dengan persen jasa dari tarif * Set persen jasa dokter luar yang klaim ffs dengan persen jasa
* total * dari tarif total
*/ */
d.put("persenJasa", persenBPJS.toString() + "%"); d.put("persenJasa", persenBPJS.toString() + "%");
/*
* Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter
* tertentu
*/
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa", persenBPJS / 100 * Double.parseDouble(d.get("hargaJual").toString())); d.put("hargaJasa", persenBPJS / 100 * Double.parseDouble(d.get("hargaJual").toString()));
} else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
@ -1174,15 +1286,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Populate data filter * Populate data filter
*/ */
listData.forEach(d -> { listData.forEach(d -> {
if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) if (!listIdProduk.contains(d.get("idProduk")))
listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); listIdProduk.add(Integer.valueOf(d.get("idProduk").toString()));
if (!listPersenJasa.contains(d.get("persenJasa").toString())) if (!listPersenJasa.contains(d.get("persenJasa")))
listPersenJasa.add(d.get("persenJasa").toString()); listPersenJasa.add(d.get("persenJasa").toString());
if (!listHargaJual.contains(Double.valueOf(d.get("hargaJual").toString()))) if (!listHargaJual.contains(d.get("hargaJual")))
listHargaJual.add(Double.valueOf(d.get("hargaJual").toString())); listHargaJual.add(Double.valueOf(d.get("hargaJual").toString()));
if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) if (!listIdKelompokPasien.contains(d.get("idKelompokPasien")))
listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString())); listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString()));
if (!listTanggal.contains(d.get("tanggal").toString())) if (!listTanggal.contains(d.get("tanggal")))
listTanggal.add(d.get("tanggal").toString()); listTanggal.add(d.get("tanggal").toString());
}); });
/* /*
@ -1198,11 +1310,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<String> norecs = new ArrayList<>(); List<String> norecs = new ArrayList<>();
int dataHitungKe = 0; int dataHitungKe = 0;
for (Map<String, Object> map : listData) { for (Map<String, Object> map : listData) {
if (Integer.parseInt(map.get("idProduk").toString()) == idProduk if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& persenJasa.equals(map.get("persenJasa")) && hargaJual.equals(map.get("hargaJual"))
&& Double.parseDouble(map.get("hargaJual").toString()) == hargaJual && idKelompokPasien.equals(map.get("idKelompokPasien"))
&& Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien && tanggal.equals(map.get("tanggal"))) {
&& map.get("tanggal").toString().equals(tanggal)) {
jumlah += Double.parseDouble(map.get("jumlah").toString()); jumlah += Double.parseDouble(map.get("jumlah").toString());
norecs.add(map.get("idPelayananPasien").toString()); norecs.add(map.get("idPelayananPasien").toString());
dataHitungKe++; dataHitungKe++;
@ -1234,10 +1345,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double jumlahHargaJasa = 0.0; double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) { for (Map<String, Object> map : dataTanggal) {
Map<String, Object> mapCount = new HashMap<>(); Map<String, Object> mapCount = new HashMap<>();
if (Integer.parseInt(map.get("idProduk").toString()) == idProduk if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& persenJasa.equals(map.get("persenJasa")) && hargaJual.equals(map.get("hargaJual"))
&& Double.parseDouble(map.get("hargaJual").toString()) == hargaJual && idKelompokPasien.equals(map.get("idKelompokPasien"))) {
&& Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) {
mapCount.put("jumlah", map.get("jumlah")); mapCount.put("jumlah", map.get("jumlah"));
mapCount.put("norecs", map.get("norecs")); mapCount.put("norecs", map.get("norecs"));
mapCount.put("tanggal", map.get("tanggal")); mapCount.put("tanggal", map.get("tanggal"));
@ -1268,9 +1378,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
/* /*
* Final sorting * Final sorting
*/ */
result = result.stream().sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"))) result = result.stream()
.sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()))) .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"),
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()))) Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList()); .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList());
result.forEach(r -> { result.forEach(r -> {
/* /*