Update service pelayanan pasien

Penerapan detail tarif untuk transformasi data entri list paket
This commit is contained in:
Salman Manoe 2023-09-26 20:22:36 +07:00
parent fae39a5c03
commit 41c2ef5974
2 changed files with 75 additions and 2 deletions

View File

@ -300,4 +300,11 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and pp.strukResepId is null "
+ "and pd.voucherPaketId in (:listIdVoucher)")
List<Map<String, Object>> findJumlahLayananByVoucherIn(@Param("listIdVoucher") Set<String> listIdVoucher);
@Query("select new Map(pp.noRec as noRec," + "vp.paketId as paketId," + "mpaket.produkPaketId as produkPaketId,"
+ "mproduk.produkId as produkId) " + "from PelayananPasien pp, " + "MapProdukPaketToProduk mproduk "
+ "inner join pp.pasienDaftar apd " + "inner join pp.voucherPaket vp " + "inner join apd.pasienDaftar pd "
+ "inner join mproduk.mapProdukPaket mpaket " + "where vp.paketId = mpaket.paketId "
+ "and pp.produkId = mproduk.produkId " + "and pp.noRec in (:listNorec)")
List<Map<String, Object>> findByNorecs(@Param("listNorec") Set<String> listNorec);
}

View File

@ -41,7 +41,7 @@ import static com.jasamedika.medifirst2000.constants.Master.KONSUL_VISIT;
import static com.jasamedika.medifirst2000.constants.Master.KategoryPegawai.DOKTER_LUAR;
import static com.jasamedika.medifirst2000.constants.Master.KelompokPasien.KELOMPOK_BPJS;
import static com.jasamedika.medifirst2000.constants.Master.KelompokUser.TATA_REKENING;
import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.JASA_DOKTER_OBGYN;
import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*;
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;
@ -1719,7 +1719,73 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<Map<String, Object>> layananBadanPaket = dataExcludeUndone.stream()
.filter(d -> !setIdPelayananUtama.contains(d.get("idPelayananPasien").toString()))
.collect(Collectors.toList());
layananBadanPaket.forEach(l -> l.put("hargaJasa", 0.0));
List<String> concatIdProdukKelas = layananBadanPaket.stream()
.map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()).collect(Collectors.toList());
List<HargaNettoProdukByKelasD> listDetailTarif = hargaNettoProdukByKelasDDao
.findByConcateProdukKelas(concatIdProdukKelas);
Set<String> setNorecs = layananBadanPaket.stream().map(l -> l.get("idPelayananPasien").toString())
.collect(Collectors.toSet());
if (CommonUtil.isNotNullOrEmpty(setNorecs)) {
List<Map<String, Object>> mappingBadanPaket = pelayananPasienDao.findByNorecs(setNorecs);
layananBadanPaket.forEach(l -> {
Optional<Map<String, Object>> firstMap = mappingBadanPaket.stream()
.filter(m -> l.get("idPelayananPasien").toString().equals(m.get("norec"))).findFirst();
if (firstMap.isPresent()) {
if (DOKTER_PEMERIKSA.equals(l.get("idJenisPelaksana"))) {
Optional<HargaNettoProdukByKelasD> first = listDetailTarif.stream()
.filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId"))
&& t.getKelasId().equals(l.get("idKelas"))
&& JASA_DOKTER.equals(t.getKomponenHargaId()))
.findFirst();
if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1())
&& first.get().getHargaNetto1() > 0.0) {
l.put("hargaJasa", first.get().getHargaNetto1());
} else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan())
&& first.get().getHargaSatuan() > 0.0) {
l.put("hargaJasa", first.get().getHargaSatuan());
} else {
l.put("hargaJasa", 0.0);
}
} else if (ASISTEN_SPESIALIS.equals(l.get("idJenisPelaksana"))) {
Optional<HargaNettoProdukByKelasD> first = listDetailTarif.stream()
.filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId"))
&& t.getKelasId().equals(l.get("idKelas"))
&& JASA_ASISTEN_SPESIALIS.equals(t.getKomponenHargaId()))
.findFirst();
if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1())
&& first.get().getHargaNetto1() > 0.0) {
l.put("hargaJasa", first.get().getHargaNetto1());
} else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan())
&& first.get().getHargaSatuan() > 0.0) {
l.put("hargaJasa", first.get().getHargaSatuan());
} else {
l.put("hargaJasa", 0.0);
}
} else if (DOKTER_ANASTESI.equals(l.get("idJenisPelaksana"))) {
Optional<HargaNettoProdukByKelasD> first = listDetailTarif.stream()
.filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId"))
&& t.getKelasId().equals(l.get("idKelas"))
&& JASA_DOKTER_ANASTESI.equals(t.getKomponenHargaId()))
.findFirst();
if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1())
&& first.get().getHargaNetto1() > 0.0) {
l.put("hargaJasa", first.get().getHargaNetto1());
} else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan())
&& first.get().getHargaSatuan() > 0.0) {
l.put("hargaJasa", first.get().getHargaSatuan());
} else {
l.put("hargaJasa", 0.0);
}
}
} else {
l.put("hargaJasa", 0.0);
}
});
} else {
layananBadanPaket.forEach(l -> {
l.put("hargaJasa", 0.0);
});
}
result.addAll(layananBadanPaket);
}
return result;