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 5f586754..93d40c2c 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 @@ -37,10 +37,13 @@ public class Master { public static final Integer[] GRUP_RAWAT_JALAN = { 3, 18, 24, 27, 28 }; public static final Integer[] KARCIS = { 18, 24, 28 }; + public static final Integer BEDAH_SENTRAL = 25; public static final Integer IGD = 24; public static final Integer LABORATORIUM = 3; + public static final Integer RADIOLOGI = 27; public static final Integer RAWAT_INAP = 16; public static final Integer RAWAT_JALAN = 18; + public static final Integer REHAB_MEDIK = 28; } public static final class DetailJenisProduk { @@ -73,6 +76,11 @@ public class Master { public static final Integer[] JF_AHLI_UTAMA = { 1, 2, 3 }; } + public static final class GolonganProduk { + public static final Integer KONSULTASI = 5; + public static final Integer VISIT = 29; + } + public static final class IndikatorKinerja { public static final Integer KEPATUHAN_PELAYANAN_MEDIS = 674; public static final Integer KETEPATAN_KEHADIRAN = 357; @@ -125,7 +133,7 @@ public class Master { public static final Integer[] DIRUT = { 137, 896, 1172 }; public static final Integer[] LEVEL_KEPALA = { 3, 4 }; } - + public static final class JenisKomponenGaji { public static final Integer PENERIMAAN = 1; public static final Integer PEMOTONGAN = 2; @@ -216,7 +224,7 @@ public class Master { public static final class KelompokUser { public static final Integer DEFAULT = 0; } - + public static final class KomponenGaji { public static final Integer GAJI = 1; public static final Integer REMUNERASI_KINERJA = 2; 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 749ef3a3..41b7ba15 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 @@ -197,12 +197,14 @@ public interface PelayananPasienDao extends PagingAndSortingRepository findAll(@Param("noRegistrasi") String noRegistrasi); - @Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk,pr.detailJenisProdukId as idDetailJenisProduk," + @Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk," + + "pr.detailJenisProdukId as idDetailJenisProduk,pr.golonganProdukId as idGolonganProduk," + "djp.jenisProdukId as idJenisProduk," + "kp.id as idKelompokPasien," + "case when kp.id = 2 then 1 when kp.id = 4 then 2 when kp.id = 8 then 3 when kp.id = 9 then 4 when kp.id = 1 then 5 when kp.id = 5 then 6 when kp.id = 6 then 7 when kp.id = 3 then 8 when kp.id = 7 then 9 else 10 end as sortIdKelompokPasien," + "kp.kelompokPasien as kelompokPasien," + "kls.id as idKelas," + "case when kls.id = 6 then 1 when kls.id = 1 then 2 when kls.id = 2 then 3 when kls.id =3 then 4 when kls.id = 8 then 5 when kls.id = 5 then 6 when kls.id = 21 then 7 else 8 end as sortIdKelas," - + "kls.namaKelas as namaKelas," + "ppp.noRec as idPelayananPasienPetugas,ppp.ObjectPegawaiId as idPegawai," + + "kls.namaKelas as namaKelas," + "ppp.noRec as idPelayananPasienPetugas," + + "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,ppp.ObjectPegawaiId as idPegawai," + "pp.noRec as idPelayananPasien,coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.jumlah,0) as jumlah," + "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal," + "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "ru.departemenId as idDepartemen," @@ -221,16 +223,16 @@ public interface PelayananPasienDao extends PagingAndSortingRepository> findPelayananPasienByPetugasAndTanggal(@Param("pegawaiId") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); - @Query("select new Map(pr.namaProduk as namaProduk," + @Query("select new Map(jp.jenisPetugasPe as jenisPelaksana," + "pr.namaProduk as namaProduk," + "coalesce(pp.hargaJual,0) as hargaJual,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 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) " + + "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 pp.noRec in (:norecs) " 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 b8ab3e7c..2ee95cb1 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 @@ -414,8 +414,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel DateFormat df = new SimpleDateFormat("yyyy-MM"); DateTimeFormatter jamFormat = DateTimeFormatter.ofPattern("HH.mm"); Date date = new Date(); + Date dateLine = new Date(); try { date = df.parse(bulan); + dateLine = df.parse(GetSettingDataFixed("berlakuTargetJasaRemunDokter").toString()); } catch (ParseException e) { e.printStackTrace(); return null; @@ -443,6 +445,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Mendapatkan persentase jasa */ + Double persenOperatorIBS = Double.parseDouble(GetSettingDataFixed("persenRemunOperatorIBS").toString()); + Double persenAsistenIBS = Double.parseDouble(GetSettingDataFixed("persenRemunAsistenIBS").toString()); + Double persenAnestesiIBS = Double.parseDouble(GetSettingDataFixed("persenRemunAnestesiIBS").toString()); + Double persenRadiologi = Double.parseDouble(GetSettingDataFixed("persenRemunRadiologi").toString()); + Double persenLaboratorium = Double.parseDouble(GetSettingDataFixed("persenRemunLaboratorium").toString()); + Double persenRehabMedik = Double.parseDouble(GetSettingDataFixed("persenRemunRehabMedik").toString()); Double persenKonsultasi = Double.parseDouble(GetSettingDataFixed("persenRemunKonsultasiDokter").toString()); Double persenVisite = Double.parseDouble(GetSettingDataFixed("persenRemunVisiteDokter").toString()); Double persenTindakan = Double.parseDouble(GetSettingDataFixed("persenRemunTindakanDokter").toString()); @@ -457,13 +465,27 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel listData = listData.stream().filter(d -> !Master.JenisProduk.OBAT_ALKES.equals(d.get("idJenisProduk"))) .collect(Collectors.toList()); /* - * Mapping persentase jasa remunerasi - Konsultasi 15% - Visite 20% - - * Tindakan 15% + * Mapping persentase jasa remunerasi */ for (Map d : listData) - if (d.get("namaProduk").toString().toLowerCase().contains("konsul")) { + if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + d.put("hargaJasa", persenOperatorIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + d.put("hargaJasa", persenAsistenIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + d.put("hargaJasa", persenAnestesiIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.RADIOLOGI.equals(d.get("idDepartemen"))) { + d.put("hargaJasa", persenRadiologi / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.LABORATORIUM.equals(d.get("idDepartemen"))) { + d.put("hargaJasa", persenLaboratorium / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.REHAB_MEDIK.equals(d.get("idDepartemen"))) { + d.put("hargaJasa", persenRehabMedik / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.GolonganProduk.KONSULTASI.equals(d.get("idGolonganProduk"))) { d.put("hargaJasa", persenKonsultasi / 100 * Double.parseDouble(d.get("hargaJual").toString())); - } else if (d.get("namaProduk").toString().toLowerCase().contains("visit")) { + } else if (Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) { d.put("hargaJasa", persenVisite / 100 * Double.parseDouble(d.get("hargaJual").toString())); } else { d.put("hargaJasa", persenTindakan / 100 * Double.parseDouble(d.get("hargaJual").toString())); @@ -558,7 +580,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien"))) { listPelayananRemun.add(next); capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); - } else if (capaianRemun < targetRemun) { + } else if (capaianRemun < targetRemun && (date.equals(dateLine) || date.after(dateLine))) { listPelayananRemun.add(next); capaianRemun += Double.valueOf(next.get("hargaJasa").toString()); } else { @@ -595,6 +617,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List> dataResult = new ArrayList<>(); List> dataTanggal = new ArrayList<>(); List listIdProduk = new ArrayList<>(); + List listPersenJasa = new ArrayList<>(); List listHargaJual = new ArrayList<>(); List listIdKelompokPasien = new ArrayList<>(); List listTanggal = new ArrayList<>(); @@ -606,22 +629,48 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Mendapatkan persentase jasa */ + Double persenOperatorIBS = Double.parseDouble(GetSettingDataFixed("persenRemunOperatorIBS").toString()); + Double persenAsistenIBS = Double.parseDouble(GetSettingDataFixed("persenRemunAsistenIBS").toString()); + Double persenAnestesiIBS = Double.parseDouble(GetSettingDataFixed("persenRemunAnestesiIBS").toString()); + Double persenRadiologi = Double.parseDouble(GetSettingDataFixed("persenRemunRadiologi").toString()); + Double persenLaboratorium = Double.parseDouble(GetSettingDataFixed("persenRemunLaboratorium").toString()); + Double persenRehabMedik = Double.parseDouble(GetSettingDataFixed("persenRemunRehabMedik").toString()); Double persenKonsultasi = Double.parseDouble(GetSettingDataFixed("persenRemunKonsultasiDokter").toString()); Double persenVisite = Double.parseDouble(GetSettingDataFixed("persenRemunVisiteDokter").toString()); Double persenTindakan = Double.parseDouble(GetSettingDataFixed("persenRemunTindakanDokter").toString()); /* - * Mapping persentase jasa remunerasi - Konsultasi 15% - Visite 20% - - * Tindakan 15% + * Mapping persentase jasa remunerasi */ for (Map d : listData) { - if (d.get("namaProduk").toString().toLowerCase().contains("konsul")) { - d.put("persenJasa", "15%"); + if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenOperatorIBS.toString() + "%"); + d.put("hargaJasa", persenOperatorIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenAsistenIBS.toString() + "%"); + d.put("hargaJasa", persenAsistenIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenAnestesiIBS.toString() + "%"); + d.put("hargaJasa", persenAnestesiIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.RADIOLOGI.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenRadiologi.toString() + "%"); + d.put("hargaJasa", persenRadiologi / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.LABORATORIUM.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenLaboratorium.toString() + "%"); + d.put("hargaJasa", persenLaboratorium / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.REHAB_MEDIK.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenRehabMedik.toString() + "%"); + d.put("hargaJasa", persenRehabMedik / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.GolonganProduk.KONSULTASI.equals(d.get("idGolonganProduk"))) { + d.put("persenJasa", persenKonsultasi.toString() + "%"); d.put("hargaJasa", persenKonsultasi / 100 * Double.parseDouble(d.get("hargaJual").toString())); - } else if (d.get("namaProduk").toString().toLowerCase().contains("visit")) { - d.put("persenJasa", "20%"); + } else if (Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) { + d.put("persenJasa", persenVisite.toString() + "%"); d.put("hargaJasa", persenVisite / 100 * Double.parseDouble(d.get("hargaJual").toString())); } else { - d.put("persenJasa", "15%"); + d.put("persenJasa", persenTindakan.toString() + "%"); d.put("hargaJasa", persenTindakan / 100 * Double.parseDouble(d.get("hargaJual").toString())); } } @@ -631,6 +680,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel listData.forEach(d -> { if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); + if (!listPersenJasa.contains(d.get("persenJasa").toString())) + listPersenJasa.add(d.get("persenJasa").toString()); if (!listHargaJual.contains(Double.valueOf(d.get("hargaJual").toString()))) listHargaJual.add(Double.valueOf(d.get("hargaJual").toString())); if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) @@ -642,29 +693,32 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengelompokkan tanggal pelayanan */ for (Integer idProduk : listIdProduk) { - for (Double hargaJual : listHargaJual) { - for (Integer idKelompokPasien : listIdKelompokPasien) { - for (String tanggal : listTanggal) { - Map mapData = new HashMap<>(); - double jumlah = 0.0; - List norecs = new ArrayList<>(); - int dataHitungKe = 0; - for (Map map : listData) { - if (Integer.parseInt(map.get("idProduk").toString()) == idProduk - && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual - && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien - && map.get("tanggal").toString().equals(tanggal)) { - jumlah += Double.parseDouble(map.get("jumlah").toString()); - norecs.add(map.get("idPelayananPasien").toString()); - dataHitungKe++; - if (dataHitungKe == 1) - mapData.putAll(map); + for (String persenJasa : listPersenJasa) { + for (Double hargaJual : listHargaJual) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + for (String tanggal : listTanggal) { + Map mapData = new HashMap<>(); + double jumlah = 0.0; + List norecs = new ArrayList<>(); + int dataHitungKe = 0; + for (Map map : listData) { + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && persenJasa.equals(map.get("persenJasa")) + && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien + && map.get("tanggal").toString().equals(tanggal)) { + jumlah += Double.parseDouble(map.get("jumlah").toString()); + norecs.add(map.get("idPelayananPasien").toString()); + dataHitungKe++; + if (dataHitungKe == 1) + mapData.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { + mapData.put("jumlah", jumlah); + mapData.put("norecs", norecs); + dataTanggal.add(mapData); } - } - if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { - mapData.put("jumlah", jumlah); - mapData.put("norecs", norecs); - dataTanggal.add(mapData); } } } @@ -674,41 +728,44 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengelompokkan produk layanan */ for (Integer idProduk : listIdProduk) { - for (Double hargaJual : listHargaJual) { - for (Integer idKelompokPasien : listIdKelompokPasien) { - Map mapResult = new HashMap<>(); - List> detail = new ArrayList<>(); - int counter = 0; - double jumlah = 0.0; - double jumlahHargaJasa = 0.0; - for (Map map : dataTanggal) { - Map mapCount = new HashMap<>(); - if (Integer.parseInt(map.get("idProduk").toString()) == idProduk - && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual - && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { - mapCount.put("jumlah", map.get("jumlah")); - mapCount.put("norecs", map.get("norecs")); - mapCount.put("tanggal", map.get("tanggal")); - detail.add(mapCount); - counter++; - jumlah += Double.parseDouble(map.get("jumlah").toString()); - if (counter == 1) - mapResult.putAll(map); + for (String persenJasa : listPersenJasa) { + for (Double hargaJual : listHargaJual) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + Map mapResult = new HashMap<>(); + List> detail = new ArrayList<>(); + int counter = 0; + double jumlah = 0.0; + double jumlahHargaJasa = 0.0; + for (Map map : dataTanggal) { + Map mapCount = new HashMap<>(); + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && persenJasa.equals(map.get("persenJasa")) + && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { + mapCount.put("jumlah", map.get("jumlah")); + mapCount.put("norecs", map.get("norecs")); + mapCount.put("tanggal", map.get("tanggal")); + detail.add(mapCount); + counter++; + jumlah += Double.parseDouble(map.get("jumlah").toString()); + if (counter == 1) + mapResult.putAll(map); + } } - } - if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { - /* - * Tambahkan data total - */ - jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString()); - mapResult.put("jumlah", jumlah); - mapResult.put("jumlahHargaJasa", jumlahHargaJasa); - /* - * Tambahkan data detail - */ - mapResult.put("detail", detail); + if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { + /* + * Tambahkan data total + */ + jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString()); + mapResult.put("jumlah", jumlah); + mapResult.put("jumlahHargaJasa", jumlahHargaJasa); + /* + * Tambahkan data detail + */ + mapResult.put("detail", detail); - dataResult.add(mapResult); + dataResult.add(mapResult); + } } } } @@ -751,6 +808,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List> result = new ArrayList<>(); List> dataTanggal = new ArrayList<>(); List listIdProduk = new ArrayList<>(); + List listPersenJasa = new ArrayList<>(); List listHargaJual = new ArrayList<>(); List listIdKelompokPasien = new ArrayList<>(); List listTanggal = new ArrayList<>(); @@ -760,22 +818,48 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Mendapatkan persentase jasa */ + Double persenOperatorIBS = Double.parseDouble(GetSettingDataFixed("persenJasaOperatorIBS").toString()); + Double persenAsistenIBS = Double.parseDouble(GetSettingDataFixed("persenJasaAsistenIBS").toString()); + Double persenAnestesiIBS = Double.parseDouble(GetSettingDataFixed("persenJasaAnestesiIBS").toString()); + Double persenRadiologi = Double.parseDouble(GetSettingDataFixed("persenJasaRadiologi").toString()); + Double persenLaboratorium = Double.parseDouble(GetSettingDataFixed("persenJasaLaboratorium").toString()); + Double persenRehabMedik = Double.parseDouble(GetSettingDataFixed("persenJasaRehabMedik").toString()); Double persenKonsultasi = Double.parseDouble(GetSettingDataFixed("persenJasaKonsultasiDokter").toString()); Double persenVisite = Double.parseDouble(GetSettingDataFixed("persenJasaVisiteDokter").toString()); Double persenTindakan = Double.parseDouble(GetSettingDataFixed("persenJasaTindakanDokter").toString()); /* - * Mapping persentase jasa remunerasi - Konsultasi 60% - Visite 60% - - * Tindakan 30% + * Mapping persentase jasa remunerasi */ for (Map d : listData) { - if (d.get("namaProduk").toString().toLowerCase().contains("konsul")) { - d.put("persenJasa", "60%"); + if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenOperatorIBS.toString() + "%"); + d.put("hargaJasa", persenOperatorIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenAsistenIBS.toString() + "%"); + d.put("hargaJasa", persenAsistenIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")) + && Master.JenisPetugasPelaksana.DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + d.put("persenJasa", persenAnestesiIBS.toString() + "%"); + d.put("hargaJasa", persenAnestesiIBS / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.RADIOLOGI.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenRadiologi.toString() + "%"); + d.put("hargaJasa", persenRadiologi / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.LABORATORIUM.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenLaboratorium.toString() + "%"); + d.put("hargaJasa", persenLaboratorium / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.Departemen.REHAB_MEDIK.equals(d.get("idDepartemen"))) { + d.put("persenJasa", persenRehabMedik.toString() + "%"); + d.put("hargaJasa", persenRehabMedik / 100 * Double.parseDouble(d.get("hargaJual").toString())); + } else if (Master.GolonganProduk.KONSULTASI.equals(d.get("idGolonganProduk"))) { + d.put("persenJasa", persenKonsultasi.toString() + "%"); d.put("hargaJasa", persenKonsultasi / 100 * Double.parseDouble(d.get("hargaJual").toString())); - } else if (d.get("namaProduk").toString().toLowerCase().contains("visit")) { - d.put("persenJasa", "60%"); + } else if (Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) { + d.put("persenJasa", persenVisite.toString() + "%"); d.put("hargaJasa", persenVisite / 100 * Double.parseDouble(d.get("hargaJual").toString())); } else { - d.put("persenJasa", "30%"); + d.put("persenJasa", persenTindakan.toString() + "%"); d.put("hargaJasa", persenTindakan / 100 * Double.parseDouble(d.get("hargaJual").toString())); } } @@ -785,6 +869,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel listData.forEach(d -> { if (!listIdProduk.contains(Integer.valueOf(d.get("idProduk").toString()))) listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); + if (!listPersenJasa.contains(d.get("persenJasa").toString())) + listPersenJasa.add(d.get("persenJasa").toString()); if (!listHargaJual.contains(Double.valueOf(d.get("hargaJual").toString()))) listHargaJual.add(Double.valueOf(d.get("hargaJual").toString())); if (!listIdKelompokPasien.contains(Integer.valueOf(d.get("idKelompokPasien").toString()))) @@ -796,29 +882,32 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengelompokkan tanggal pelayanan */ for (Integer idProduk : listIdProduk) { - for (Double hargaJual : listHargaJual) { - for (Integer idKelompokPasien : listIdKelompokPasien) { - for (String tanggal : listTanggal) { - Map mapData = new HashMap<>(); - double jumlah = 0.0; - List norecs = new ArrayList<>(); - int dataHitungKe = 0; - for (Map map : listData) { - if (Integer.parseInt(map.get("idProduk").toString()) == idProduk - && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual - && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien - && map.get("tanggal").toString().equals(tanggal)) { - jumlah += Double.parseDouble(map.get("jumlah").toString()); - norecs.add(map.get("idPelayananPasien").toString()); - dataHitungKe++; - if (dataHitungKe == 1) - mapData.putAll(map); + for (String persenJasa : listPersenJasa) { + for (Double hargaJual : listHargaJual) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + for (String tanggal : listTanggal) { + Map mapData = new HashMap<>(); + double jumlah = 0.0; + List norecs = new ArrayList<>(); + int dataHitungKe = 0; + for (Map map : listData) { + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && persenJasa.equals(map.get("persenJasa")) + && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien + && map.get("tanggal").toString().equals(tanggal)) { + jumlah += Double.parseDouble(map.get("jumlah").toString()); + norecs.add(map.get("idPelayananPasien").toString()); + dataHitungKe++; + if (dataHitungKe == 1) + mapData.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { + mapData.put("jumlah", jumlah); + mapData.put("norecs", norecs); + dataTanggal.add(mapData); } - } - if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) { - mapData.put("jumlah", jumlah); - mapData.put("norecs", norecs); - dataTanggal.add(mapData); } } } @@ -828,40 +917,43 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengelompokkan produk layanan */ for (Integer idProduk : listIdProduk) { - for (Double hargaJual : listHargaJual) { - for (Integer idKelompokPasien : listIdKelompokPasien) { - Map mapResult = new HashMap<>(); - List> detail = new ArrayList<>(); - int counter = 0; - double jumlah = 0.0; - double jumlahHargaJasa = 0.0; - for (Map map : dataTanggal) { - Map mapCount = new HashMap<>(); - if (Integer.parseInt(map.get("idProduk").toString()) == idProduk - && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual - && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { - mapCount.put("jumlah", map.get("jumlah")); - mapCount.put("norecs", map.get("norecs")); - mapCount.put("tanggal", map.get("tanggal")); - detail.add(mapCount); - counter++; - jumlah += Double.parseDouble(map.get("jumlah").toString()); - if (counter == 1) - mapResult.putAll(map); + for (String persenJasa : listPersenJasa) { + for (Double hargaJual : listHargaJual) { + for (Integer idKelompokPasien : listIdKelompokPasien) { + Map mapResult = new HashMap<>(); + List> detail = new ArrayList<>(); + int counter = 0; + double jumlah = 0.0; + double jumlahHargaJasa = 0.0; + for (Map map : dataTanggal) { + Map mapCount = new HashMap<>(); + if (Integer.parseInt(map.get("idProduk").toString()) == idProduk + && persenJasa.equals(map.get("persenJasa")) + && Double.parseDouble(map.get("hargaJual").toString()) == hargaJual + && Integer.parseInt(map.get("idKelompokPasien").toString()) == idKelompokPasien) { + mapCount.put("jumlah", map.get("jumlah")); + mapCount.put("norecs", map.get("norecs")); + mapCount.put("tanggal", map.get("tanggal")); + detail.add(mapCount); + counter++; + jumlah += Double.parseDouble(map.get("jumlah").toString()); + if (counter == 1) + mapResult.putAll(map); + } + } + if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { + /* + * Tambahkan data total + */ + jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString()); + mapResult.put("jumlah", jumlah); + mapResult.put("jumlahHargaJasa", jumlahHargaJasa); + /* + * Tambahkan data detail + */ + mapResult.put("detail", detail); + result.add(mapResult); } - } - if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) { - /* - * Tambahkan data total - */ - jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString()); - mapResult.put("jumlah", jumlah); - mapResult.put("jumlahHargaJasa", jumlahHargaJasa); - /* - * Tambahkan data detail - */ - mapResult.put("detail", detail); - result.add(mapResult); } } }