Update pelayanan pasien

Penyesuaian logbook dokter untuk operasi pasien non-jkn lebih dari satu
This commit is contained in:
Salman Manoe 2023-09-08 22:26:08 +07:00
parent c8f0183c08
commit 44b3978e3b
2 changed files with 250 additions and 123 deletions

View File

@ -197,15 +197,16 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "else 8 end as sortIdKelas," + "kls.namaKelas as namaKelas," + "ppp.noRec as idPelayananPasienPetugas,"
+ "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,ppp.ObjectPegawaiId as idPegawai,"
+ "pp.noRec as idPelayananPasien,coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.jumlah,0) as jumlah,"
+ "pp.sayatanId as idSayatan,coalesce(sy.persen,0) as persenSayatan,coalesce(sy.nama,'') as keterangan,"
+ "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal,"
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "apd.ruanganId as idRuangan,"
+ "case when lower(ru.namaRuangan) like '%eksekutif%' then 'Eksekutif' else 'Reguler' end as jenisRuangan,"
+ "ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar, "
+ "ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar,"
+ "sum(case when ppd.komponenHargaId = 35 then ppd.hargaDiscount else 0.0 end) as totalDiskon) "
+ "from PelayananPasienDetail ppd, PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp " + "left join apd.ruangan ru "
+ "left join pr.detailJenisProduk djp "
+ "left join pr.detailJenisProduk djp left join pp.sayatan as sy "
+ "where ppd.pelayananPasienId = pp.noRec and (ppp.statusEnabled is true or ppp.statusEnabled is null) "
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) and pp.strukResepId is null "
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and ppp.ObjectPegawaiId = :pegawaiId "
@ -220,8 +221,9 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "when pp.kelasId = 3 then 4 " + "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 "
+ "when pp.kelasId = 21 then 7 " + "else 8 end," + "kls.namaKelas," + "ppp.noRec,"
+ "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0),"
+ "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd')," + "apd.noRec,apd.pegawaiId," + "apd.ruanganId,"
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0),pp.sayatanId,"
+ "coalesce(sy.persen,0),coalesce(sy.nama,'')," + "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd'),"
+ "apd.noRec,apd.pegawaiId," + "apd.ruanganId,"
+ "case when lower(ru.namaRuangan) like '%eksekutif%' then 'Eksekutif' else 'Reguler' end,"
+ "ru.departemenId," + "pd.noRec " + "order by case when pd.kelompokPasienId = 2 then 1 "
+ "when pd.kelompokPasienId = 4 then 2 " + "when pd.kelompokPasienId = 8 then 3 "
@ -236,15 +238,16 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
@Query("select new Map(jp.jenisPetugasPe as jenisPelaksana," + "pr.namaProduk as namaProduk,"
+ "coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.jumlah,0) as jumlah,"
+ "kp.kelompokPasien as kelompokPasien," + "kls.namaKelas as namaKelas,"
+ "to_char(pp.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tanggal," + "ru.namaRuangan as namaRuangan,"
+ "ps.namaPasien as namaPasien,ps.noCm as noCm," + "pd.noRegistrasi as noRegistrasi) "
+ "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
+ "inner join ppp.kdjenispetugaspe jp " + "inner join pp.pasienDaftar apd "
+ "inner join apd.pasienDaftar pd " + "left join pp.produk pr " + "left join pp.kelas kls "
+ "left join pd.kelompokPasien kp " + "left join pd.pasien ps " + "left join apd.ruangan ru "
+ "left join pr.detailJenisProduk djp " + "where (ppp.statusEnabled is true or ppp.statusEnabled is null) "
+ "coalesce(pp.hargaJual,0) as hargaJual," + "coalesce(pp.hargaDiscount,0) as diskon,"
+ "coalesce(pp.jumlah,0) as jumlah," + "kp.kelompokPasien as kelompokPasien,"
+ "kls.namaKelas as namaKelas," + "to_char(pp.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tanggal,"
+ "ru.namaRuangan as namaRuangan," + "ps.namaPasien as namaPasien,ps.noCm as noCm,"
+ "pd.noRegistrasi as noRegistrasi) " + "from PelayananPasienPetugas ppp "
+ "inner join ppp.pelayananPasien pp " + "inner join ppp.kdjenispetugaspe jp "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp " + "left join pd.pasien ps "
+ "left join apd.ruangan ru " + "left join pr.detailJenisProduk djp "
+ "where (ppp.statusEnabled is true or ppp.statusEnabled is null) "
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) "
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and ppp.ObjectPegawaiId = :pegawaiId "
+ "and ppp.noRec in (:norecs) "

View File

@ -561,7 +561,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
*/
for (Map<String, Object> d : listData)
if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("totalDiskon"))
&& Double.parseDouble(d.get("totalDiskon").toString()) > 0.0) {
&& Double.parseDouble(d.get("totalDiskon").toString()) > 0.0
&& CommonUtil.isNullOrEmpty(d.get("idSayatan"))) {
/*
* Untuk diskon jasa medis oleh dpjp
*/
@ -591,6 +592,28 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
&& DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
double persenJasa = persenAnestesi / 100;
d.put("hargaJasa", persenJasa * persenTarifIBS * Double.parseDouble(d.get("hargaJual").toString()));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("hargaJasa",
persenOperator / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("hargaJasa",
persenAsistenIBS / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("hargaJasa",
persenAnestesi / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("hargaJasa", persenOperator / 100 * Double.parseDouble(d.get("hargaJual").toString()));
@ -1531,6 +1554,34 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
d.put("persenJasa", persenTarifJasaBedah + "% + " + persenAnestesi + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa", persenJasa * persenTarifIBS * Double.parseDouble(d.get("hargaJual").toString()));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenOperator + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenOperator / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAsistenIBS + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAsistenIBS / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAnestesi + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAnestesi / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("persenJasa", persenOperator + "%");
@ -1665,18 +1716,62 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
}
private List<Map<String, Object>> groupingTanggalRemun(List<Map<String, Object>> listData) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, List<Map<String, Object>>>>>>>> collectTanggal = listData
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, Map<String, List<Map<String, Object>>>>>>>>> collectTanggal = listData
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(),
Collectors.groupingBy(o3 -> Double.parseDouble(o3.get("hargaJasa").toString()),
Collectors.groupingBy(o4 -> Double.parseDouble(o4.get("hargaJual").toString()),
Collectors.groupingBy(
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(), Collectors.groupingBy(
o3 -> Double.parseDouble(o3.get("hargaJasa").toString()), Collectors.groupingBy(
o4 -> Double.parseDouble(o4.get("hargaJual").toString()), Collectors
.groupingBy(
o5 -> Integer.parseInt(
o5.get("idKelompokPasien").toString()),
Collectors.groupingBy(o6 -> o6.get("keterangan").toString(),
Collectors.groupingBy(
o7 -> o7.get("tanggal").toString()))))))));
List<Map<String, Object>> result = new ArrayList<>();
collectTanggal.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3
.forEach((k4, v4) -> v4.forEach((k5, v5) -> v5.forEach((k6, v6) -> v6.forEach((k7, v7) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
map.put("persenJasa", k2);
map.put("hargaJasa", k3);
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("keterangan", k6);
map.put("tanggal", k7);
List<String> norecs = v7.stream().map(e -> e.get("idPelayananPasienPetugas").toString())
.collect(Collectors.toList());
map.put("norecs", norecs);
double jumlah = v7.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
Optional<Map<String, Object>> first = v7.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
map.put("keterangan", e.get("keterangan").toString());
map.put("tglPelayanan", e.get("tglPelayanan"));
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
});
result.add(map);
})))))));
return result;
}
private List<Map<String, Object>> groupingKategoriRemun(List<Map<String, Object>> data) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, List<Map<String, Object>>>>>>>> collected = data
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(), Collectors.groupingBy(
o3 -> Double.parseDouble(o3.get("hargaJasa").toString()), Collectors.groupingBy(
o4 -> Double.parseDouble(o4.get("hargaJual").toString()), Collectors
.groupingBy(
o5 -> Integer.parseInt(o5.get("idKelompokPasien")
.toString()),
Collectors.groupingBy(o6 -> o6.get("tanggal").toString())))))));
Collectors.groupingBy(
o6 -> o6.get("keterangan").toString())))))));
List<Map<String, Object>> result = new ArrayList<>();
collectTanggal.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2
collected.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2
.forEach((k3, v3) -> v3.forEach((k4, v4) -> v4.forEach((k5, v5) -> v5.forEach((k6, v6) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
@ -1684,44 +1779,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
map.put("hargaJasa", k3);
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("tanggal", k6);
List<String> norecs = v6.stream().map(e -> e.get("idPelayananPasienPetugas").toString())
.collect(Collectors.toList());
map.put("norecs", norecs);
double jumlah = v6.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
Optional<Map<String, Object>> first = v6.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
map.put("tglPelayanan", e.get("tglPelayanan"));
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
});
result.add(map);
}))))));
return result;
}
private List<Map<String, Object>> groupingKategoriRemun(List<Map<String, Object>> data) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, List<Map<String, Object>>>>>>> collected = data
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(), Collectors.groupingBy(
o3 -> Double.parseDouble(o3.get("hargaJasa").toString()), Collectors.groupingBy(
o4 -> Double.parseDouble(o4.get("hargaJual").toString()), Collectors.groupingBy(
o5 -> Integer.parseInt(o5.get("idKelompokPasien").toString())))))));
List<Map<String, Object>> result = new ArrayList<>();
collected.forEach((k1, v1) -> v1
.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3.forEach((k4, v4) -> v4.forEach((k5, v5) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
map.put("persenJasa", k2);
map.put("hargaJasa", k3);
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("keterangan", k6);
List<Map<String, Object>> detail = new ArrayList<>();
v5.forEach(d -> {
v6.forEach(d -> {
Map<String, Object> mapCount = new HashMap<>();
mapCount.put("jumlah", d.get("jumlah"));
mapCount.put("norecs", d.get("norecs"));
@ -1729,20 +1789,21 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
detail.add(mapCount);
});
map.put("detail", detail);
double jumlah = v5.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
double jumlah = v6.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
double jumlahHargaJasa = jumlah * Double.parseDouble(map.get("hargaJasa").toString());
map.put("jumlahHargaJasa", jumlahHargaJasa);
Optional<Map<String, Object>> first = v5.stream().findFirst();
Optional<Map<String, Object>> first = v6.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
map.put("keterangan", e.get("keterangan").toString());
map.put("tglPelayanan", e.get("tglPelayanan"));
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
});
result.add(map);
})))));
}))))));
return result;
}
@ -1812,6 +1873,34 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenJasaDokterUmumHD / 100 * Double.parseDouble(d.get("hargaJual").toString()));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenOperator + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenOperator / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAsistenIBS + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAsistenIBS / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAnestesi + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAnestesi / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("persenJasa", persenOperator + "%");
@ -1936,50 +2025,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
}
private List<Map<String, Object>> groupingTanggalFfs(List<Map<String, Object>> listData) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, Map<String, List<Map<String, Object>>>>>>>>> collectTanggal = listData
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(), Collectors.groupingBy(
o3 -> Double.parseDouble(o3.get("hargaJasa").toString()), Collectors.groupingBy(
o4 -> Double.parseDouble(o4.get("hargaJual").toString()), Collectors
.groupingBy(
o5 -> Integer.parseInt(
o5.get("idKelompokPasien").toString()),
Collectors.groupingBy(o6 -> o6.get("jenisRuangan").toString(),
Collectors.groupingBy(
o7 -> o7.get("tanggal").toString()))))))));
List<Map<String, Object>> result = new ArrayList<>();
collectTanggal.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3
.forEach((k4, v4) -> v4.forEach((k5, v5) -> v5.forEach((k6, v6) -> v6.forEach((k7, v7) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
map.put("persenJasa", k2);
map.put("hargaJasa", k3);
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("jenisRuangan", k6);
map.put("tanggal", k7);
List<String> norecs = v7.stream().map(e -> e.get("idPelayananPasienPetugas").toString())
.collect(Collectors.toList());
map.put("norecs", norecs);
double jumlah = v7.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
Optional<Map<String, Object>> first = v7.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
map.put("tglPelayanan", e.get("tglPelayanan"));
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
map.put("jenisRuangan", e.get("jenisRuangan").toString());
});
result.add(map);
})))))));
return result;
}
private List<Map<String, Object>> groupingKategoriFfs(List<Map<String, Object>> data) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, List<Map<String, Object>>>>>>>> collected = data
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, Map<String, Map<String, List<Map<String, Object>>>>>>>>>> collectTanggal = listData
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(), Collectors.groupingBy(
@ -1988,11 +2034,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.groupingBy(
o5 -> Integer.parseInt(o5.get("idKelompokPasien")
.toString()),
Collectors.groupingBy(
o6 -> o6.get("jenisRuangan").toString())))))));
Collectors.groupingBy(o6 -> o6.get("jenisRuangan").toString(),
Collectors.groupingBy(
o7 -> o7.get("keterangan").toString(),
Collectors.groupingBy(o7 -> o7.get("tanggal")
.toString())))))))));
List<Map<String, Object>> result = new ArrayList<>();
collected.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2
.forEach((k3, v3) -> v3.forEach((k4, v4) -> v4.forEach((k5, v5) -> v5.forEach((k6, v6) -> {
collectTanggal.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3.forEach((k4, v4) -> v4
.forEach((k5, v5) -> v5.forEach((k6, v6) -> v6.forEach((k7, v7) -> v7.forEach((k8, v8) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
map.put("persenJasa", k2);
@ -2000,20 +2049,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("jenisRuangan", k6);
List<Map<String, Object>> detail = new ArrayList<>();
v6.forEach(d -> {
Map<String, Object> mapCount = new HashMap<>();
mapCount.put("jumlah", d.get("jumlah"));
mapCount.put("norecs", d.get("norecs"));
mapCount.put("tanggal", d.get("tanggal"));
detail.add(mapCount);
});
map.put("detail", detail);
double jumlah = v6.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("keterangan", k7);
map.put("tanggal", k8);
List<String> norecs = v8.stream().map(e -> e.get("idPelayananPasienPetugas").toString())
.collect(Collectors.toList());
map.put("norecs", norecs);
double jumlah = v8.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
double jumlahHargaJasa = jumlah * Double.parseDouble(map.get("hargaJasa").toString());
map.put("jumlahHargaJasa", jumlahHargaJasa);
Optional<Map<String, Object>> first = v6.stream().findFirst();
Optional<Map<String, Object>> first = v8.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
@ -2021,9 +2064,62 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
map.put("jenisRuangan", e.get("jenisRuangan").toString());
map.put("keterangan", e.get("keterangan").toString());
});
result.add(map);
}))))));
}))))))));
return result;
}
private List<Map<String, Object>> groupingKategoriFfs(List<Map<String, Object>> data) {
Map<Integer, Map<String, Map<Double, Map<Double, Map<Integer, Map<String, Map<String, List<Map<String, Object>>>>>>>>> collected = data
.stream()
.collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()),
Collectors.groupingBy(o2 -> o2.get("persenJasa").toString(),
Collectors.groupingBy(o3 -> Double.parseDouble(o3.get("hargaJasa").toString()),
Collectors.groupingBy(o4 -> Double.parseDouble(o4.get("hargaJual").toString()),
Collectors.groupingBy(
o5 -> Integer.parseInt(
o5.get("idKelompokPasien").toString()),
Collectors.groupingBy(o6 -> o6.get("jenisRuangan").toString(),
Collectors.groupingBy(
o7 -> o7.get("keterangan").toString()))))))));
List<Map<String, Object>> result = new ArrayList<>();
collected.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3
.forEach((k4, v4) -> v4.forEach((k5, v5) -> v5.forEach((k6, v6) -> v6.forEach((k7, v7) -> {
HashMap<String, Object> map = new HashMap<>();
map.put("idProduk", k1);
map.put("persenJasa", k2);
map.put("hargaJasa", k3);
map.put("hargaJual", k4);
map.put("idKelompokPasien", k5);
map.put("jenisRuangan", k6);
map.put("keterangan", k7);
List<Map<String, Object>> detail = new ArrayList<>();
v7.forEach(d -> {
Map<String, Object> mapCount = new HashMap<>();
mapCount.put("jumlah", d.get("jumlah"));
mapCount.put("norecs", d.get("norecs"));
mapCount.put("tanggal", d.get("tanggal"));
detail.add(mapCount);
});
map.put("detail", detail);
double jumlah = v7.stream().mapToDouble(e -> Double.parseDouble(e.get("jumlah").toString())).sum();
map.put("jumlah", jumlah);
double jumlahHargaJasa = jumlah * Double.parseDouble(map.get("hargaJasa").toString());
map.put("jumlahHargaJasa", jumlahHargaJasa);
Optional<Map<String, Object>> first = v7.stream().findFirst();
first.ifPresent(e -> {
map.put("namaProduk", e.get("namaProduk").toString());
map.put("kelompokPasien", e.get("kelompokPasien").toString());
map.put("tglPelayanan", e.get("tglPelayanan"));
map.put("sortIdKelompokPasien", Integer.parseInt(e.get("sortIdKelompokPasien").toString()));
map.put("sortIdKelas", Integer.parseInt(e.get("sortIdKelas").toString()));
map.put("jenisRuangan", e.get("jenisRuangan").toString());
map.put("keterangan", e.get("keterangan").toString());
});
result.add(map);
})))))));
return result;
}
@ -2093,6 +2189,34 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenJasaDokterUmumHD / 100 * Double.parseDouble(d.get("hargaJual").toString()));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenOperatorIBS + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenOperatorIBS / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAsistenIBS + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAsistenIBS / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen")) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
d.put("persenJasa", persenAnestesi + "%");
if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0)
d.put("hargaJasa",
persenAnestesi / 100
* (Double.parseDouble(d.get("hargaJual").toString())
- (Double.parseDouble(d.get("persenSayatan").toString()) / 100
* Double.parseDouble(d.get("hargaJual").toString()))));
} else if (BEDAH_SENTRAL.equals(d.get("idDepartemen"))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
d.put("persenJasa", persenOperatorIBS + "%");