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 1f7af511..a46ae0d0 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 @@ -201,7 +201,8 @@ public interface PelayananPasienDao extends PagingAndSortingRepository produkConverter; - @Autowired - private PegawaiDao pegawaiDao; - - @Autowired - private MapPegawaiLaboratRadiologiDao mapPegawaiLaboratRadiologiDao; - @Autowired private PasienDaftarDao pasienDaftarDao; @@ -544,180 +536,134 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Override public List> logbookRemunTarifDokter(Integer idPegawai, String bulan) { - + List> result = new ArrayList<>(); + List> dataTanggal = new ArrayList<>(); + List listIdProduk = new ArrayList<>(); + List listIdKelompokPasien = new ArrayList<>(); + List listTanggal = new ArrayList<>(); Map>> remunFfs = this.splitRemunFfs(idPegawai, bulan); List> listData = remunFfs.get("remun"); - /* - * Dokter luar tidak mendapatkan hak remunerasi - */ - if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR)) - .contains(idPegawai)) { - return new ArrayList<>(); - } - List> rawResult = new ArrayList<>(); - - List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_UMUM); - List drKkPediatrikGDList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PEDIATRIK_GD); - List drKkPerinatologiList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PERINATOLOGI); - List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); - - List idsDokterUmumIGD = splitDataSettingDatafixed("pr_dokter_umum_igd"); - List idsDokterPediatrikGD = splitDataSettingDatafixed("pr_dokter_pediatrik_gd"); - List idsDokterPerinatologi = splitDataSettingDatafixed("pr_dokter_perinatologi"); - - List listDetailJenisProduk = new ArrayList<>(); - List idsRegDJPMedisUtama = splitDataSettingDatafixed("medis_utama"); - List idsRegDJPPenunjangPA = splitDataSettingDatafixed("penunjang_pa"); - List idsRegDJPPenunjangPK = splitDataSettingDatafixed("penunjang_pk"); - List idsRegDJPPenunjangRad = splitDataSettingDatafixed("penunjang_radiologi"); - List idsRegDJPAdminNonPK = splitDataSettingDatafixed("admin_nonpk"); - { - /* - * Daftar detail jenis produk yang boleh masuk remunerasi - */ - if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PATOLOGI_ANATOMI).contains(idPegawai)) { - listDetailJenisProduk = idsRegDJPPenunjangPA; - } else if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PATOLOGI_KLINIK) - .contains(idPegawai)) { - listDetailJenisProduk = idsRegDJPPenunjangPK; - } else if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_RADIOLOGI).contains(idPegawai)) { - listDetailJenisProduk = idsRegDJPPenunjangRad; - } else { - listDetailJenisProduk = idsRegDJPMedisUtama; - } - } - List listDetailJenisProdukException = new ArrayList<>(); - if (laboranRadiologList.contains(idPegawai)) { - listDetailJenisProdukException = idsRegDJPAdminNonPK; - listDetailJenisProdukException.removeAll(listDetailJenisProduk); - } - if (CommonUtil.isNotNullOrEmpty(listData)) { - for (Map map : listData) { - if (drKkPediatrikGDList.contains(map.get("idPegawai"))) { - if (idsDokterPediatrikGD.contains(map.get("idProduk"))) { - /* - * Layanan dokter pediatrik gawat darurat tertentu - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan rawat jalan pediatrik gawat darurat - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - if (map.get("namaProduk").toString().toLowerCase().contains(Master.VISIT) - && map.get("idPegawai").toString().equals(map.get("idDPJP"))) { - /* - * Layanan rawat inap pediatrik gawat darurat hanya - * untuk visit - */ - rawResult.add(map); + listData.forEach(d -> { + if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) + listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); + if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) + listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString())); + if (!listTanggal.contains(d.get("tanggal").toString())) + listTanggal.add(d.get("tanggal").toString()); + }); + for (Integer idProduk : listIdProduk) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + for (String tanggal : listTanggal) { + Map mapData = new HashMap<>(); + double jumlah = 0.0; + int dataHitungKe = 0; + for (Map map : listData) { + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien + && map.get("tanggal").toString().equals(tanggal)) { + jumlah += Double.parseDouble(map.get("jumlah").toString()); + dataHitungKe++; + if (dataHitungKe == 1) + mapData.putAll(map); } } - } else if (!drKkPediatrikGDList.contains(map.get("idPegawai"))) { - if (listDetailJenisProduk.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) { - if (idsRegDJPPenunjangPA.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString())) - || idsRegDJPPenunjangPK - .contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) { - /* - * Layanan detail jenis tertentu untuk di patologi - * anatomi dan patologi klinik - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu di rawat - * inap - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu di rawat - * jalan - */ - rawResult.add(map); - } - } else if (!listDetailJenisProduk - .contains(Integer.parseInt(map.get("idDetailJenisProduk").toString())) - && map.get("idDepartemen").equals(Master.Departemen.IGD) - && drKsmUmumList.contains(idPegawai) - && idsDokterUmumIGD.contains(Integer.parseInt(map.get("idProduk").toString()))) { - if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu dokter umum - * di rawat inap - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu dokter umum - * di rawat jalan - */ - rawResult.add(map); - } - } else if (!listDetailJenisProduk - .contains(Integer.parseInt(map.get("idDetailJenisProduk").toString())) - && drKkPerinatologiList.contains(idPegawai) - && idsDokterPerinatologi.contains(Integer.parseInt(map.get("idProduk").toString()))) { - if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu dokter - * perinatologi di rawat inap - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu dokter - * perinatologi di rawat jalan - */ - rawResult.add(map); - } - } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) - && listDetailJenisProdukException - .contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) { - if (idsRegDJPPenunjangPA.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString())) - || idsRegDJPPenunjangPK - .contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) { - /* - * Layanan detail jenis tertentu untuk laboran - * radiolog di patologi anatomi dan patologi klinik - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu laboran - * radiolog di rawat inap - */ - rawResult.add(map); - } else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN) - .contains(Integer.parseInt(map.get("idDepartemen").toString()))) { - /* - * Layanan detail jenis produk tertentu laboran - * radiolog di rawat jalan - */ - rawResult.add(map); - } + if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { + mapData.put("jumlah", jumlah); + dataTanggal.add(mapData); } } } } - return listData; + for (Integer idProduk : listIdProduk) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + Map mapResult = new HashMap<>(); + List> detail = new ArrayList<>(); + int counter = 0; + for (Map map : dataTanggal) { + Map mapCount = new HashMap<>(); + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { + mapCount.put("jumlah", map.get("jumlah")); + mapCount.put("tanggal", map.get("tanggal")); + detail.add(mapCount); + counter++; + if (counter == 1) + mapResult.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { + mapResult.put("detail", detail); + result.add(mapResult); + } + } + } + return result; } @Override public List> logbookFfsTarifDokter(Integer idPegawai, String bulan) { + List> result = new ArrayList<>(); + List> dataTanggal = new ArrayList<>(); + List listIdProduk = new ArrayList<>(); + List listIdKelompokPasien = new ArrayList<>(); + List listTanggal = new ArrayList<>(); Map>> remunFfs = this.splitRemunFfs(idPegawai, bulan); List> listData = remunFfs.get("ffs"); - return listData; + listData.forEach(d -> { + if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) + listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); + if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) + listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString())); + if (!listTanggal.contains(d.get("tanggal").toString())) + listTanggal.add(d.get("tanggal").toString()); + }); + for (Integer idProduk : listIdProduk) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + for (String tanggal : listTanggal) { + Map mapData = new HashMap<>(); + double jumlah = 0.0; + int dataHitungKe = 0; + for (Map map : listData) { + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien + && map.get("tanggal").toString().equals(tanggal)) { + jumlah += Double.parseDouble(map.get("jumlah").toString()); + dataHitungKe++; + if (dataHitungKe == 1) + mapData.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { + mapData.put("jumlah", jumlah); + dataTanggal.add(mapData); + } + } + } + } + for (Integer idProduk : listIdProduk) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + Map mapResult = new HashMap<>(); + List> detail = new ArrayList<>(); + int counter = 0; + for (Map map : dataTanggal) { + Map mapCount = new HashMap<>(); + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { + mapCount.put("jumlah", map.get("jumlah")); + mapCount.put("tanggal", map.get("tanggal")); + detail.add(mapCount); + counter++; + if (counter == 1) + mapResult.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { + mapResult.put("detail", detail); + result.add(mapResult); + } + } + } + return result; } } \ No newline at end of file