diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 4f1bb3e2..39b9e5f4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -246,6 +246,7 @@ public final class Master { public static final Integer[] JASA_SARANA = { 6, 38 }; public static final Integer SPOG_ASISTEN = 206; public static final Integer SPOG_OPERATOR = 201; + public static final Integer TOTAL_TARIF = 210; } public static final class KomponenIndex { 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 174bcdd2..a4d0cbce 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,7 @@ public interface PelayananPasienDao extends JpaRepository> findPelayananPasienByPetugasAndTanggal(@Param("pegawaiId") Integer idPegawai, @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.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) " + @Query("select new Map(jp.jenisPetugasPe as jenisPelaksana," + "pr.id as idProduk, pr.namaProduk as namaProduk," + + "pp.noRec as idPelayanan," + "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) " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDetailDao.java index a831dcf8..16ceaaeb 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDetailDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDetailDao.java @@ -1,10 +1,9 @@ package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; import java.util.List; @@ -13,12 +12,16 @@ import java.util.List; * * @author Generator */ -@Repository("PelayananPasienDetailDao") -public interface PelayananPasienDetailDao extends PagingAndSortingRepository { +public interface PelayananPasienDetailDao extends JpaRepository { @Query("select model from PelayananPasienDetail model left join model.pelayananPasien a where a.noRec=:noRec") List findByPelayananPasien(@Param("noRec") String noRec); @Query("select sum(ppd.hargaDiscount) " + "from PelayananPasienDetail ppd " + "where ppd.pelayananPasienId = :noRec " + "and ppd.komponenHargaId = 35") Double totalDiskonJasamedis(@Param("noRec") String noRec); + + @Query("select ppd " + "from PelayananPasienDetail ppd " + "where ppd.pelayananPasienId in (:listIdPelayanan) " + + "and ppd.komponenHargaId = :idKomponenHarga") + List findByPelayananAndKomponenHarga(@Param("listIdPelayanan") List listIdPelayanan, + @Param("idKomponenHarga") Integer idKomponenHarga); } 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 c2e4bd82..06d368f8 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 @@ -548,6 +548,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel "idMonitoringHemodinamikGagalOrgan"); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); List idProdukKecantikanFixedPay = splitDataSettingDatafixed("idProdukKecantikanFixedPay"); + List paketBukanFixedPay = splitDataSettingDatafixed("produkPaketBukanFixedPay"); if (drKkPatologiAnatomiList.contains(idPegawai)) { listDetailJenisProduk = idsRegDJPPenunjangPA; } else if (pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_KLINIK).contains(idPegawai)) { @@ -576,15 +577,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .filter(d -> !idProdukKecantikanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); List allPaketId = mapProdukPaketDao.findProdukEntriId(); + List revisedPaketId = allPaketId.stream().filter(p -> !paketBukanFixedPay.contains(p)) + .collect(Collectors.toList()); List> listFixedPay = listRatedPay.stream() - .filter(d -> allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) + .filter(d -> revisedPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); /* * Filtering selain logbook fixed pay */ - allPaketId.addAll(mapProdukPaketDao.findPaketId()); + revisedPaketId.addAll(mapProdukPaketDao.findPaketId()); listRatedPay = listRatedPay.stream() - .filter(d -> !allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) + .filter(d -> !revisedPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) .collect(Collectors.toList()); /* * Set persen jasa dan harga jasa pasien bpjs di ibs, icu @@ -595,6 +598,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Mapping set awal persentase jasa remunerasi dan harga jasa remunerasi */ for (Map d : listRatedPay) { + if (paketBukanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + d.put("hargaJual", d.get("komponenTotalTarif")); d.put("isTermasukProporsi", true); double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) @@ -2985,7 +2990,21 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Override public List> detailLogbookTarifDokter(Integer idPegawai, List norecs) { - return pelayananPasienDao.findPelayananPasienByPetugasAndPelayananPasien(idPegawai, norecs); + List paketBukanFixedPay = splitDataSettingDatafixed("produkPaketBukanFixedPay"); + List> result = pelayananPasienDao.findPelayananPasienByPetugasAndPelayananPasien(idPegawai, + norecs); + List listIdPelayananPaketBukanFixedPay = result.stream() + .filter(r -> paketBukanFixedPay.contains(Integer.parseInt(r.get("idProduk").toString()))) + .map(r -> r.get("idPelayanan").toString()).collect(Collectors.toList()); + List detailPelayananPaketBukanFixedPay = pelayananPasienDetailDao + .findByPelayananAndKomponenHarga(listIdPelayananPaketBukanFixedPay, TOTAL_TARIF); + for (Map res : result) { + Optional detail = detailPelayananPaketBukanFixedPay.stream() + .filter(d -> d.getPelayananPasienId().equals(res.get("idPelayanan"))).findFirst(); + detail.ifPresent( + d -> res.put("hargaJual", CommonUtil.isNotNullOrEmpty(d.getHargaJual()) ? d.getHargaJual() : 0.00)); + } + return result; } @Override