diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java index 7fca9165..d77e4481 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDao.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository; import javax.persistence.LockModeType; import java.util.List; import java.util.Map; +import java.util.Set; /** * Repository class for Pasien @@ -115,4 +116,9 @@ public interface PasienDao extends JpaRepository { + "and ps.nobpjs ~ '[0-9]+' " + "and length(ps.nobpjs) = 13) " + "and (ps.noidentitas is null " + "or length(ps.noidentitas) <> 16) " + "order by ps.statusenabled, ps.tgldaftar desc", nativeQuery = true) List findByValidBpjs(); + + @Query("select new Map(ibu.id as idIbu,anak.id as idAnak) " + "from Pasien ibu, Pasien anak " + + "where ibu.noCm = anak.reportDisplay " + "and ibu.statusEnabled is true and anak.statusEnabled is true " + + "and ibu.id in (:listIdIbu)") + List> findIdByNoCmOfIbu(@Param("listIdIbu") Set listIdIbu); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java index 85e1f0a8..a5fda3a6 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java @@ -290,8 +290,8 @@ public interface PelayananPasienDao extends JpaRepository> findPasienPaketDiRanapByDokter(@Param("pegawaiId") Integer idPegawai, + List> findPasienPaketDiRanapByDokter(@Param("listIdSpog") List listIdSpog, @Param("listProdukEntriId") List listProdukEntriId); } 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 e9e67c6c..17fb1985 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 @@ -47,6 +47,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*; import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*; import static com.jasamedika.medifirst2000.constants.Master.TipePegawai.PURNA_WAKTU; import static com.jasamedika.medifirst2000.constants.Master.UnitKerja.KSM_OBGYN; +import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.PERAWAT; import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.TINDAKAN_UTAMA; /** @@ -563,13 +564,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai, tglAwal, tglAkhir); List allPaketId = mapProdukPaketDao.findProdukEntriId(); - allPaketId.addAll(mapProdukPaketDao.findPaketId()); List> listFixedPay = listRatedPay.stream() .filter(d -> allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); /* * Filtering selain logbook fixed pay */ + allPaketId.addAll(mapProdukPaketDao.findPaketId()); listRatedPay = listRatedPay.stream() .filter(d -> !allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); @@ -1522,7 +1523,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel Comparator.nullsLast(Comparator.naturalOrder()))) .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())) .sorted(Comparator.comparing(o5 -> o5.get("jenisRuangan").toString(), Comparator.reverseOrder())) - .collect(Collectors.toList()); + .sorted(Comparator.comparing(o4 -> o4.get("bulanPulangIbu").toString())).collect(Collectors.toList()); result.forEach(r -> { /* * Hapus informasi tidak perlu @@ -1550,6 +1551,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List listIdKelompokPasien = new ArrayList<>(); List listTanggal = new ArrayList<>(); List listJenisRuangan = new ArrayList<>(); + List listBulanPulangIbu = new ArrayList<>(); listFixedPay.forEach(d -> { if (!listIdProduk.contains(Integer.parseInt(d.get("idProduk").toString()))) listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); @@ -1563,6 +1565,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel listTanggal.add(d.get("tanggal").toString()); if (!listJenisRuangan.contains(d.get("jenisRuangan").toString())) listJenisRuangan.add(d.get("jenisRuangan").toString()); + if (!listBulanPulangIbu.contains(d.get("bulanPulangIbu").toString())) + listBulanPulangIbu.add(d.get("bulanPulangIbu").toString()); }); /* * Pengelompokkan tanggal pelayanan @@ -1574,16 +1578,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List> listData) { List drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN); DateFormat df = new SimpleDateFormat("yyyy-MM"); + SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); Date date; try { date = df.parse(bulan); } catch (ParseException e) { throw new ServiceVOException(e.getMessage()); } - /* - * Mendapatkan daftar jadwal kerja, tanggal dan jam kerja - */ Date tglAwal = DateUtil.startMonth(date); + listData.forEach(d -> { + if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) + d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + + "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString()); + }); List paketList = mapProdukPaketDao.findAll(); List allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId) .collect(Collectors.toList()); @@ -1596,7 +1603,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel idProduk.ifPresent(mapProdukPaket -> { d.put("mPaketId", mapProdukPaket.getNoRec()); d.put("paketId", mapProdukPaket.getPaketId()); - d.put("paketType", mapProdukPaket.getJenisMapping().name()); + if (CommonUtil.isNotNullOrEmpty(mapProdukPaket.getJenisMapping())) + d.put("paketType", mapProdukPaket.getJenisMapping().name()); }); }); List regulerList = mapProdukPaketToProdukDao.findAll(); @@ -1609,44 +1617,67 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List allConcatProdukKelas = listData.stream() .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId"))) .map(d -> d.get("regRefId").toString() + d.get("idKelas").toString()).collect(Collectors.toList()); + allConcatProdukKelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("paketId"))) + .map(d -> d.get("paketId").toString() + d.get("idKelas").toString()).collect(Collectors.toList())); + allConcatProdukKelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk"))) + .map(d -> d.get("idProduk").toString() + d.get("idKelas").toString()).collect(Collectors.toList())); List tarifDetailReguler = hargaNettoProdukByKelasDDao .findByConcateProdukKelas(allConcatProdukKelas); List allConcatProdukNonkelas = listData.stream() .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId"))) .map(d -> d.get("regRefId").toString() + NON_KELAS).collect(Collectors.toList()); + allConcatProdukNonkelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("paketId"))) + .map(d -> d.get("paketId").toString() + NON_KELAS).collect(Collectors.toList())); + allConcatProdukNonkelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk"))) + .map(d -> d.get("idProduk").toString() + NON_KELAS).collect(Collectors.toList())); List tarifDetailNonKelas = hargaNettoProdukByKelasDDao .findByConcateProdukKelas(allConcatProdukNonkelas); - List> ibuPaketDiRanapByDokter = pelayananPasienDao.findPasienPaketDiRanapByDokter(idPegawai, - allProdukEntriId); + List> ibuPaketDiRanapByDokter = pelayananPasienDao + .findPasienPaketDiRanapByDokter(drKsmObgyn, allProdukEntriId); + Set setIdIbu = ibuPaketDiRanapByDokter.stream() + .map(pasien -> Integer.parseInt(pasien.get("pasienId").toString())).collect(Collectors.toSet()); + List> ibuAnak = pasienDao.findIdByNoCmOfIbu(setIdIbu); listData.forEach(d -> { + List listIdAnak = ibuAnak.stream().filter(bn -> Integer + .parseInt(d.get("pasienId").toString()) == Integer.parseInt(bn.get("idIbu").toString()) + || Integer.parseInt(d.get("pasienId").toString()) == Integer.parseInt(bn.get("idAnak").toString())) + .map(bn -> Integer.parseInt(bn.get("idAnak").toString())).collect(Collectors.toList()); Optional> first = ibuPaketDiRanapByDokter.stream() .filter(paket -> Integer.parseInt(d.get("pasienId").toString()) == Integer - .parseInt(paket.get("pasienId").toString())) + .parseInt(paket.get("pasienId").toString()) + || listIdAnak.contains(Integer.parseInt(d.get("pasienId").toString()))) .filter(paket -> CommonUtil.isNotNullOrEmpty(d.get("paketId")) && Integer .parseInt(d.get("paketId").toString()) == Integer.parseInt(paket.get("paketId").toString())) .findFirst(); d.put("tglPulangIbu", null); + d.put("bulanPulangIbu", ""); d.put("hargaJasa", 0.0); - if (first.isPresent()) { + first.ifPresent(stringObjectMap -> d.put("bulanPulangIbu", month.format(stringObjectMap.get("tglKeluar")))); + if (first.isPresent() && drKsmObgyn.contains(idPegawai) && !PERAWAT.name().equals(d.get("paketType"))) { d.put("tglPulangIbu", first.get().get("tglKeluar")); - if (tglAwal.equals(first.get().get("tglKeluar")) && ((Date) first.get().get("tglKeluar")).after(tglAwal) - && drKsmObgyn.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) + if ((tglAwal.equals(first.get().get("tglKeluar")) + || ((Date) first.get().get("tglKeluar")).after(tglAwal)) + && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && TINDAKAN_UTAMA.name().equals(d.get("paketType"))) { Optional byDetailTarif = tarifDetailReguler.stream() .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) .filter(dt -> dt.getKomponenHargaId().equals(SPOG_OPERATOR)).findFirst(); if (byDetailTarif.isPresent()) { - d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); + d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) + ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); } else { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) .filter(dt -> dt.getKelasId().equals(NON_KELAS)) .filter(dt -> dt.getKomponenHargaId().equals(SPOG_OPERATOR)).findFirst(); - byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan())); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } - } else if (tglAwal.equals(first.get().get("tglKeluar")) - && ((Date) first.get().get("tglKeluar")).after(tglAwal) && drKsmObgyn.contains(idPegawai) + } else if ((tglAwal.equals(first.get().get("tglKeluar")) + || ((Date) first.get().get("tglKeluar")).after(tglAwal)) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && TINDAKAN_UTAMA.name().equals(d.get("paketType"))) { Optional byDetailTarif = tarifDetailReguler.stream() @@ -1654,57 +1685,73 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) .filter(dt -> dt.getKomponenHargaId().equals(SPOG_ASISTEN)).findFirst(); if (byDetailTarif.isPresent()) { - d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); + d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) + ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); } else { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) .filter(dt -> dt.getKelasId().equals(NON_KELAS)) .filter(dt -> dt.getKomponenHargaId().equals(SPOG_ASISTEN)).findFirst(); - byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan())); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } } - } else { + } else if (!drKsmObgyn.contains(idPegawai) && !PERAWAT.name().equals(d.get("paketType"))) { if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { Optional byDetailTarif = tarifDetailReguler.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) .filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER)).findFirst(); if (byDetailTarif.isPresent()) { - d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); + d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) + ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); } else { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(NON_KELAS)) .filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER)).findFirst(); - byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan())); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } } else if (ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { Optional byDetailTarif = tarifDetailReguler.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) .filter(dt -> dt.getKomponenHargaId().equals(JASA_ASISTEN_SPESIALIS)).findFirst(); if (byDetailTarif.isPresent()) { - d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); + d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) + ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); } else { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(NON_KELAS)) .filter(dt -> dt.getKomponenHargaId().equals(JASA_ASISTEN_SPESIALIS)).findFirst(); - byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan())); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } } else if (DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { Optional byDetailTarif = tarifDetailReguler.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) .filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER_ANASTESI)).findFirst(); if (byDetailTarif.isPresent()) { - d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); + d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) + ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan()); } else { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() - .filter(dt -> dt.getProdukId().equals(d.get("paketId"))) + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) .filter(dt -> dt.getKelasId().equals(NON_KELAS)) .filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER_ANASTESI)).findFirst(); - byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", CommonUtil.isNotNullOrEmpty(byDetailTarif.get().getHargaNetto1()) ? byDetailTarif.get().getHargaNetto1() : byDetailTarif.get().getHargaSatuan())); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } } } @@ -2614,17 +2661,63 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } private List> groupingTanggalFixedPay(List> listData) { - Map>>>>>>>> collectTanggal = listData + Map>>>>>>>>> collectTanggal = listData .stream() .collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()), Collectors .groupingBy(o2 -> Double.parseDouble(o2.get("hargaJasa").toString()), Collectors.groupingBy( o3 -> Double.parseDouble(o3.get("hargaJual").toString()), Collectors.groupingBy(o4 -> Integer.parseInt(o4.get("idKelompokPasien").toString()), Collectors.groupingBy(o5 -> o5.get("jenisRuangan").toString(), - Collectors.groupingBy(o6 -> o6.get("keterangan").toString(), Collectors - .groupingBy(o7 -> o7.get("tanggal").toString())))))))); + Collectors.groupingBy(o6 -> o6.get("bulanPulangIbu").toString(), + Collectors.groupingBy(o7 -> o7.get("keterangan").toString(), + Collectors.groupingBy( + o8 -> o8.get("tanggal").toString()))))))))); List> result = new ArrayList<>(); - collectTanggal.forEach((k1, v1) -> v1.forEach((k2, v2) -> v2.forEach((k3, v3) -> v3 + 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 map = new HashMap<>(); + map.put("idProduk", k1); + map.put("hargaJasa", k2); + map.put("hargaJual", k3); + map.put("idKelompokPasien", k4); + map.put("jenisRuangan", k5); + map.put("bulanPulangIbu", k6); + map.put("keterangan", k7); + map.put("tanggal", k8); + List 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); + Optional> first = v8.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("bulanPulangIbu", e.get("bulanPulangIbu").toString()); + map.put("keterangan", e.get("keterangan").toString()); + }); + result.add(map); + })))))))); + return result; + } + + private List> groupingKategoriFixedPay(List> data) { + Map>>>>>>>> collected = data + .stream() + .collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()), Collectors + .groupingBy(o2 -> Double.parseDouble(o2.get("hargaJasa").toString()), Collectors.groupingBy( + o3 -> Double.parseDouble(o3.get("hargaJual").toString()), + Collectors.groupingBy(o4 -> Integer.parseInt(o4.get("idKelompokPasien").toString()), + Collectors.groupingBy(o5 -> o5.get("jenisRuangan").toString(), + Collectors.groupingBy(o6 -> o6.get("bulanPulangIbu").toString(), + Collectors.groupingBy( + o7 -> o7.get("keterangan").toString())))))))); + List> 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 map = new HashMap<>(); map.put("idProduk", k1); @@ -2632,13 +2725,21 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel map.put("hargaJual", k3); map.put("idKelompokPasien", k4); map.put("jenisRuangan", k5); - map.put("keterangan", k6); - map.put("tanggal", k7); - List norecs = v7.stream().map(e -> e.get("idPelayananPasienPetugas").toString()) - .collect(Collectors.toList()); - map.put("norecs", norecs); + map.put("bulanPulangIbu", k6); + map.put("keterangan", k7); + List> detail = new ArrayList<>(); + v7.forEach(d -> { + Map 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> first = v7.stream().findFirst(); first.ifPresent(e -> { map.put("namaProduk", e.get("namaProduk").toString()); @@ -2647,6 +2748,7 @@ 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("bulanPulangIbu", e.get("bulanPulangIbu").toString()); map.put("keterangan", e.get("keterangan").toString()); }); result.add(map); @@ -2654,53 +2756,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return result; } - private List> groupingKategoriFixedPay(List> data) { - Map>>>>>>> collected = data - .stream() - .collect(Collectors.groupingBy(o1 -> Integer.parseInt(o1.get("idProduk").toString()), Collectors - .groupingBy(o2 -> Double.parseDouble(o2.get("hargaJasa").toString()), Collectors.groupingBy( - o3 -> Double.parseDouble(o3.get("hargaJual").toString()), - Collectors.groupingBy(o4 -> Integer.parseInt(o4.get("idKelompokPasien").toString()), - Collectors.groupingBy(o5 -> o5.get("jenisRuangan").toString(), - Collectors.groupingBy(o6 -> o6.get("keterangan").toString()))))))); - List> 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) -> { - HashMap map = new HashMap<>(); - map.put("idProduk", k1); - map.put("hargaJasa", k2); - map.put("hargaJual", k3); - map.put("idKelompokPasien", k4); - map.put("jenisRuangan", k5); - map.put("keterangan", k6); - List> detail = new ArrayList<>(); - v6.forEach(d -> { - Map 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("jumlah", jumlah); - double jumlahHargaJasa = jumlah * Double.parseDouble(map.get("hargaJasa").toString()); - map.put("jumlahHargaJasa", jumlahHargaJasa); - Optional> 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())); - map.put("jenisRuangan", e.get("jenisRuangan").toString()); - map.put("keterangan", e.get("keterangan").toString()); - }); - result.add(map); - })))))); - return result; - } - @Override public List> detailLogbookTarifDokter(Integer idPegawai, List norecs) { return pelayananPasienDao.findPelayananPasienByPetugasAndPelayananPasien(idPegawai, norecs); diff --git a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/enums/JenisMappingProdukPaket.java b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/enums/JenisMappingProdukPaket.java index c229c59e..1baa97c8 100644 --- a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/enums/JenisMappingProdukPaket.java +++ b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/enums/JenisMappingProdukPaket.java @@ -6,17 +6,19 @@ package com.jasamedika.medifirst2000.enums; * @since 18 Sep 2023 */ public enum JenisMappingProdukPaket { - /** * Produk ditandai sebagai tindakan utama di dalam sebuah paket layanan. * Digunakan untuk mengelompokkan hak remunerasi dokter yang bersangkutan */ TINDAKAN_UTAMA, - /** * Produk ditandai sebagai visite utama dalam sebuah paket layanan. * Digunakan untuk mengelompokkan hak remunerasi dokter yang bersangkutan */ - VISITE_UTAMA + VISITE_UTAMA, + /** + * Produk ditandai bukan untuk dikerjakan oleh dokter + */ + PERAWAT }