Update service pelayanan pasien

Penyesuaian aturan produk pelayanan kecantikan pada logbook fixed-pay
This commit is contained in:
Salman Manoe 2024-03-08 22:33:32 +07:00
parent b9ca0f1722
commit 898d5a6345
2 changed files with 89 additions and 12 deletions

View File

@ -206,6 +206,9 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "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,pd.pasienId as pasienId,"
+ "sum(case when ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35 then ppd.hargaJual else 0.0 end) as hargaJasaD,"
+ "sum(case when ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22 then ppd.hargaJual else 0.0 end) as hargaJasaAs,"
+ "sum(case when ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21 then ppd.hargaJual else 0.0 end) as hargaJasaAn,"
+ "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 "

View File

@ -154,8 +154,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
Map<String, Object> 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<Integer> idsMonitoringHemodinamikGagalOrgan = splitDataSettingDatafixed(
"idMonitoringHemodinamikGagalOrgan");
List<Integer> idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan");
List<Integer> 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<Map<String, Object>> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai,
tglAwal, tglAkhir);
/*
* Pemisahan produk kecantikan untuk fixed pay
*/
List<Map<String, Object>> 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<Integer> allPaketId = mapProdukPaketDao.findProdukEntriId();
List<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> setPelayananPaket(Integer idPegawai, String bulan,
List<Map<String, Object>> listData) {
private List<Map<String, Object>> setKecantikanFixedPay(List<Map<String, Object>> listData) {
/*
* Transformasi data paket menggunakan mapprodukpaket dan
* mapprodukpakettoproduk
* Transformasi data produk kecantikan
*/
List<Map<String, Object>> listFixedPay = transformPelayananPaket(idPegawai, bulan, listData);
List<Map<String, Object>> listFixedPay = transformPelayananKecantikan(listData);
/*
* Populate data filter
*/
List<Map<String, Object>> dataTanggal = groupingTanggalPaket(listFixedPay);
List<Map<String, Object>> dataTanggal = distinctGroupFixedPay(listFixedPay);
/*
* Pengelompokkan produk layanan
*/
@ -1562,7 +1572,54 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
return result;
}
private List<Map<String, Object>> groupingTanggalPaket(List<Map<String, Object>> listFixedPay) {
private List<Map<String, Object>> setPelayananPaket(Integer idPegawai, List<Map<String, Object>> listData) {
/*
* Transformasi data paket menggunakan mapprodukpaket dan
* mapprodukpakettoproduk
*/
List<Map<String, Object>> listFixedPay = transformPelayananPaket(idPegawai, listData);
/*
* Populate data filter
*/
List<Map<String, Object>> dataTanggal = distinctGroupFixedPay(listFixedPay);
/*
* Pengelompokkan produk layanan
*/
List<Map<String, Object>> 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<Map<String, Object>> distinctGroupFixedPay(List<Map<String, Object>> listFixedPay) {
List<Integer> listIdProduk = new ArrayList<>();
List<Double> listHargaJasa = new ArrayList<>();
List<Double> listHargaJual = new ArrayList<>();
@ -1592,8 +1649,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
return groupingTanggalFixedPay(listFixedPay);
}
private List<Map<String, Object>> transformPelayananPaket(Integer idPegawai, String bulan,
List<Map<String, Object>> listData) {
private List<Map<String, Object>> transformPelayananPaket(Integer idPegawai, List<Map<String, Object>> listData) {
List<Integer> 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<Map<String, Object>> transformPelayananKecantikan(List<Map<String, Object>> 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<String, Object> logbookRemunTarifDokter(Integer idPegawai, String bulan) {
Map<String, Object> result = new HashMap<>();