From 898d5a63456349524083148aedd9e426cc3811b3 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 8 Mar 2024 22:33:32 +0700 Subject: [PATCH] Update service pelayanan pasien Penyesuaian aturan produk pelayanan kecantikan pada logbook fixed-pay --- .../medifirst2000/dao/PelayananPasienDao.java | 3 + .../impl/PelayananPasienServiceImpl.java | 98 ++++++++++++++++--- 2 files changed, 89 insertions(+), 12 deletions(-) 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 45e721e0..7d46ec91 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 @@ -206,6 +206,9 @@ public interface PelayananPasienDao extends JpaRepository result = new HashMap<>(); PelayananPasien model = new PelayananPasien(); model = pelayananPasienConverter.transferVOToModel(vo, model); - model.setPasien(antrianPasienDiPeriksaDao.finByNoIdAndTglRegistrasi(Short.parseShort("0"), - vo.getPasien().getId(), vo.getTglRegistrasi())); + model.setPasien(antrianPasienDiPeriksaDao.finByNoIdAndTglRegistrasi((short) 0, vo.getPasien().getId(), + vo.getTglRegistrasi())); if (CommonUtil.isNotNullOrEmpty(vo.getJenisObat())) { model.setJenisObat(jenisObatConverter.transferVOToModel(vo.getJenisObat(), new JenisObat())); } @@ -546,6 +546,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List idsMonitoringHemodinamikGagalOrgan = splitDataSettingDatafixed( "idMonitoringHemodinamikGagalOrgan"); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); + List idProdukKecantikanFixedPay = splitDataSettingDatafixed("idProdukKecantikanFixedPay"); if (drKkPatologiAnatomiList.contains(idPegawai)) { listDetailJenisProduk = idsRegDJPPenunjangPA; } else if (pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_KLINIK).contains(idPegawai)) { @@ -564,6 +565,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel */ List> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai, tglAwal, tglAkhir); + /* + * Pemisahan produk kecantikan untuk fixed pay + */ + List> listKecantikanFixedPay = listRatedPay.stream() + .filter(d -> idProdukKecantikanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); + listRatedPay = listRatedPay.stream() + .filter(d -> !idProdukKecantikanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); List allPaketId = mapProdukPaketDao.findProdukEntriId(); List> listFixedPay = listRatedPay.stream() .filter(d -> allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) @@ -1508,23 +1518,23 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel { List> listPelayananFixedPay = new ArrayList<>(); if (CommonUtil.isNotNullOrEmpty(listFixedPay)) - listPelayananFixedPay = setPelayananPaket(idPegawai, bulan, listFixedPay); + listPelayananFixedPay = setPelayananPaket(idPegawai, listFixedPay); + if (CommonUtil.isNotNullOrEmpty(listKecantikanFixedPay)) + listPelayananFixedPay.addAll(setKecantikanFixedPay(listKecantikanFixedPay)); result.put("fixed-pay", listPelayananFixedPay); } return result; } - private List> setPelayananPaket(Integer idPegawai, String bulan, - List> listData) { + private List> setKecantikanFixedPay(List> listData) { /* - * Transformasi data paket menggunakan mapprodukpaket dan - * mapprodukpakettoproduk + * Transformasi data produk kecantikan */ - List> listFixedPay = transformPelayananPaket(idPegawai, bulan, listData); + List> listFixedPay = transformPelayananKecantikan(listData); /* * Populate data filter */ - List> dataTanggal = groupingTanggalPaket(listFixedPay); + List> dataTanggal = distinctGroupFixedPay(listFixedPay); /* * Pengelompokkan produk layanan */ @@ -1562,7 +1572,54 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return result; } - private List> groupingTanggalPaket(List> listFixedPay) { + private List> setPelayananPaket(Integer idPegawai, List> listData) { + /* + * Transformasi data paket menggunakan mapprodukpaket dan + * mapprodukpakettoproduk + */ + List> listFixedPay = transformPelayananPaket(idPegawai, listData); + /* + * Populate data filter + */ + List> dataTanggal = distinctGroupFixedPay(listFixedPay); + /* + * Pengelompokkan produk layanan + */ + List> result = groupingKategoriFixedPay(dataTanggal); + /* + * Final sorting + */ + 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())) + .sorted(Comparator.comparing(o5 -> o5.get("jenisRuangan").toString(), Comparator.reverseOrder())) + .sorted(Comparator.comparing(o4 -> o4.get("bulanPulangIbu").toString())).collect(Collectors.toList()); + result.forEach(r -> { + /* + * Hapus informasi tidak perlu + */ + r.remove("idDPJP"); + r.remove("tglPelayanan"); + r.remove("tanggal"); + r.remove("idKelas"); + r.remove("namaKelas"); + r.remove("idPelayananPasienPetugas"); + r.remove("idPelayananPasien"); + r.remove("norecs"); + r.remove("idDepartemen"); + r.remove("idPasienDaftar"); + r.remove("idPegawai"); + r.remove("idAntrianPasienDiperiksa"); + }); + return result; + } + + private List> distinctGroupFixedPay(List> listFixedPay) { List listIdProduk = new ArrayList<>(); List listHargaJasa = new ArrayList<>(); List listHargaJual = new ArrayList<>(); @@ -1592,8 +1649,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return groupingTanggalFixedPay(listFixedPay); } - private List> transformPelayananPaket(Integer idPegawai, String bulan, - List> listData) { + private List> transformPelayananPaket(Integer idPegawai, List> listData) { List drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN); SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); listData.forEach(d -> { @@ -1773,6 +1829,24 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return listData; } + private List> transformPelayananKecantikan(List> listData) { + 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()); + }); + listData.forEach(d -> { + double hargaJasa = Double.parseDouble(d.get("hargaJasaD").toString()) + + Double.parseDouble(d.get("hargaJasaAs").toString()) + + Double.parseDouble(d.get("hargaJasaAn").toString()); + d.put("tglPulangIbu", null); + d.put("bulanPulangIbu", ""); + d.put("hargaJasa", hargaJasa); + d.put("isBatalPaket", false); + }); + return listData; + } + @Override public Map logbookRemunTarifDokter(Integer idPegawai, String bulan) { Map result = new HashMap<>();