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 806ceeb4..1c7d8c59 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 @@ -559,26 +559,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Mendapatkan data mentah pelayanan pasien */ - List> listData = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai, + List> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai, tglAwal, tglAkhir); - List> listRatedPay = new ArrayList<>(listData); - List> listFixedPay = new ArrayList<>(); - Set listIdVoucher = listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idVoucherDaftar"))) + Set listIdVoucher = listRatedPay.stream() + .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idVoucherDaftar"))) .map(d -> d.get("idVoucherDaftar").toString()).collect(Collectors.toSet()); + List> listFixedPay = new ArrayList<>(); if (CommonUtil.isNotNullOrEmpty(listIdVoucher)) { List listVoucher = voucherPaketDao.findAllByNoRecIn(listIdVoucher); Set listIdPaket = listVoucher.stream().map(VoucherPaket::getPaketId).collect(Collectors.toSet()); - /* - * Filtering selain logbook fixed pay - */ - listRatedPay = listData.stream() - .filter(d -> !Boolean.parseBoolean(d.get("isPaket").toString()) - && !listIdPaket.contains(Integer.parseInt(d.get("idProduk").toString()))) - .collect(Collectors.toList()); /* * Set awal logbook fixed pay */ - listFixedPay = listData.stream() + listFixedPay = listRatedPay.stream() .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idVoucherDaftar")) && (!Boolean.parseBoolean(d.get("isPaket").toString()) && listIdPaket.contains(Integer.parseInt(d.get("idProduk").toString()))) @@ -586,6 +579,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel && Boolean.parseBoolean(d.get("isPaket").toString()) && !listIdPaket .contains(Integer.parseInt(d.get("idProduk").toString())))) .collect(Collectors.toList()); + /* + * Filtering selain logbook fixed pay + */ + listRatedPay = listRatedPay.stream() + .filter(d -> !Boolean.parseBoolean(d.get("isPaket").toString()) + && !listIdPaket.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); } /* * Set persen jasa dan harga jasa pasien bpjs di ibs, icu @@ -1500,8 +1500,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList()); result.put("klaim-mpp", listPelayananKlaimMpp); } - if (CommonUtil.isNotNullOrEmpty(listFixedPay)) { - List> listPelayananFixedPay = setPelayananPaket(listFixedPay); + { + List> listPelayananFixedPay = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(listFixedPay)) + listPelayananFixedPay = setPelayananPaket(listFixedPay); result.put("fixed-pay", listPelayananFixedPay); } return result; @@ -1649,144 +1651,151 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } Set setIdVoucherExcludeUndone = dataExcludeUndone.stream().map(d -> d.get("idVoucherDaftar").toString()) .collect(Collectors.toSet()); - List listVoucherExcludeUndone = voucherPaketDao.findAllByNoRecIn(setIdVoucherExcludeUndone); - List listIdPaketExcludeUndone = listVoucherExcludeUndone.stream().map(VoucherPaket::getPaketId) - .collect(Collectors.toList()); List> result = new ArrayList<>(); - { - /* - * Transformasi data tindakan utama dan reduce visite utama - */ - List> layananKepalaPaket = pelayananPasienDao - .findPelayananPasienByPaket(setIdVoucherExcludeUndone, listIdPaketExcludeUndone); - List concatIdProdukKelas = layananKepalaPaket.stream() - .map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()).collect(Collectors.toList()); - List listTarif = hargaNettoProdukByKelasDao - .findByConcateProdukKelas(concatIdProdukKelas); - layananKepalaPaket.forEach(l -> { - Optional first = listTarif.stream().filter( - t -> t.getProdukId().equals(l.get("idProduk")) && t.getKelasId().equals(l.get("idKelas"))) - .findFirst(); - if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1()) - && first.get().getHargaNetto1() > 0.0) { - l.put("hargaJual", first.get().getHargaNetto1()); - } else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan()) - && first.get().getHargaSatuan() > 0.0) { - l.put("hargaJual", first.get().getHargaSatuan()); - } - }); - List listDetailTarif = hargaNettoProdukByKelasDDao - .findByConcateProdukKelas(concatIdProdukKelas); - layananKepalaPaket.forEach(l -> { - Optional first = listDetailTarif.stream() - .filter(t -> t.getProdukId().equals(l.get("idProduk")) - && t.getKelasId().equals(l.get("idKelas")) - && JASA_DOKTER_OBGYN.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); - } - }); - result.addAll(layananKepalaPaket); - } - { - /* - * Transformasi data tindakan lain-lain - */ - List listPaketUtama = listMapPaket.stream() - .filter(mpaket -> listIdPaketExcludeUndone.contains(mpaket.getPaketId()) - && (TINDAKAN_UTAMA.equals(mpaket.getJenisMapping()) - || VISITE_UTAMA.equals(mpaket.getJenisMapping()))) + if (CommonUtil.isNotNullOrEmpty(setIdVoucherExcludeUndone)) { + List listVoucherExcludeUndone = voucherPaketDao.findAllByNoRecIn(setIdVoucherExcludeUndone); + List listIdPaketExcludeUndone = listVoucherExcludeUndone.stream().map(VoucherPaket::getPaketId) .collect(Collectors.toList()); - List listIdMapPaket = listPaketUtama.stream().map(MapProdukPaket::getNoRec) - .collect(Collectors.toList()); - List listIdEntri = listMapProduk.stream() - .filter(mproduk -> listIdMapPaket.contains(mproduk.getMapProdukPaketId())) - .map(MapProdukPaketToProduk::getProdukId).collect(Collectors.toList()); - List> listDataUtama = dataExcludeUndone.stream() - .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idVoucherDaftar")) - && setIdVoucherExcludeUndone.contains(d.get("idVoucherDaftar").toString()) - && listIdEntri.contains(Integer.parseInt(d.get("idProduk").toString()))) - .collect(Collectors.toList()); - Set setIdPelayananUtama = listDataUtama.stream().map(d -> d.get("idPelayananPasien").toString()) - .collect(Collectors.toSet()); - List> layananBadanPaket = dataExcludeUndone.stream() - .filter(d -> !setIdPelayananUtama.contains(d.get("idPelayananPasien").toString())) - .collect(Collectors.toList()); - List concatIdProdukKelas = layananBadanPaket.stream() - .map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()).collect(Collectors.toList()); - List listDetailTarif = hargaNettoProdukByKelasDDao - .findByConcateProdukKelas(concatIdProdukKelas); - Set setNorecs = layananBadanPaket.stream().map(l -> l.get("idPelayananPasien").toString()) - .collect(Collectors.toSet()); - if (CommonUtil.isNotNullOrEmpty(setNorecs)) { - List> mappingBadanPaket = pelayananPasienDao.findByNorecs(setNorecs); - layananBadanPaket.forEach(l -> { - Optional> 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 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 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 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); - } + if (CommonUtil.isNotNullOrEmpty(listIdPaketExcludeUndone)) { + { + /* + * Transformasi data tindakan utama dan reduce visite utama + */ + List> layananKepalaPaket = pelayananPasienDao + .findPelayananPasienByPaket(setIdVoucherExcludeUndone, listIdPaketExcludeUndone); + List concatIdProdukKelas = layananKepalaPaket.stream() + .map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()) + .collect(Collectors.toList()); + List listTarif = hargaNettoProdukByKelasDao + .findByConcateProdukKelas(concatIdProdukKelas); + layananKepalaPaket.forEach(l -> { + Optional first = listTarif.stream() + .filter(t -> t.getProdukId().equals(l.get("idProduk")) + && t.getKelasId().equals(l.get("idKelas"))) + .findFirst(); + if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1()) + && first.get().getHargaNetto1() > 0.0) { + l.put("hargaJual", first.get().getHargaNetto1()); + } else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan()) + && first.get().getHargaSatuan() > 0.0) { + l.put("hargaJual", first.get().getHargaSatuan()); } - } else { - l.put("hargaJasa", 0.0); + }); + List listDetailTarif = hargaNettoProdukByKelasDDao + .findByConcateProdukKelas(concatIdProdukKelas); + layananKepalaPaket.forEach(l -> { + Optional first = listDetailTarif.stream() + .filter(t -> t.getProdukId().equals(l.get("idProduk")) + && t.getKelasId().equals(l.get("idKelas")) + && JASA_DOKTER_OBGYN.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); + } + }); + result.addAll(layananKepalaPaket); + } + { + /* + * Transformasi data tindakan lain-lain + */ + List listPaketUtama = listMapPaket.stream() + .filter(mpaket -> listIdPaketExcludeUndone.contains(mpaket.getPaketId()) + && (TINDAKAN_UTAMA.equals(mpaket.getJenisMapping()) + || VISITE_UTAMA.equals(mpaket.getJenisMapping()))) + .collect(Collectors.toList()); + List listIdMapPaket = listPaketUtama.stream().map(MapProdukPaket::getNoRec) + .collect(Collectors.toList()); + List listIdEntri = listMapProduk.stream() + .filter(mproduk -> listIdMapPaket.contains(mproduk.getMapProdukPaketId())) + .map(MapProdukPaketToProduk::getProdukId).collect(Collectors.toList()); + List> listDataUtama = dataExcludeUndone.stream() + .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idVoucherDaftar")) + && setIdVoucherExcludeUndone.contains(d.get("idVoucherDaftar").toString()) + && listIdEntri.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); + Set setIdPelayananUtama = listDataUtama.stream() + .map(d -> d.get("idPelayananPasien").toString()).collect(Collectors.toSet()); + List> layananBadanPaket = dataExcludeUndone.stream() + .filter(d -> !setIdPelayananUtama.contains(d.get("idPelayananPasien").toString())) + .collect(Collectors.toList()); + List concatIdProdukKelas = layananBadanPaket.stream() + .map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()) + .collect(Collectors.toList()); + if (CommonUtil.isNotNullOrEmpty(concatIdProdukKelas)) { + List listDetailTarif = hargaNettoProdukByKelasDDao + .findByConcateProdukKelas(concatIdProdukKelas); + Set setNorecs = layananBadanPaket.stream() + .map(l -> l.get("idPelayananPasien").toString()).collect(Collectors.toSet()); + List> mappingBadanPaket = pelayananPasienDao.findByNorecs(setNorecs); + layananBadanPaket.forEach(l -> { + Optional> 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 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 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 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); + } } - result.addAll(layananBadanPaket); } return result; } @@ -2686,9 +2695,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Override public List> logbookFixedPayDokter(Integer idPegawai, String bulan) { - Map remunFfs = this.splitRemunFfs(idPegawai, bulan); + Map remunFixedPay = this.splitRemunFfs(idPegawai, bulan); @SuppressWarnings("unchecked") - List> listData = (List>) remunFfs.get("klaim-mpp"); + List> listData = (List>) remunFixedPay.get("fixed-pay"); return listData; }