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