Update service pelayanan pasien

Penyesuaian proporsi dokter untuk pelayanan di IBS, radiologi, dan laboratorium
This commit is contained in:
Salman Manoe 2023-05-09 14:19:35 +07:00
parent f0d4c37195
commit f5c80a233b
3 changed files with 240 additions and 138 deletions

View File

@ -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;

View File

@ -197,12 +197,14 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "and pd.noRegistrasi = :noRegistrasi")
List<PelayananPasien> 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<Pelayanan
List<Map<String, Object>> 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) "

View File

@ -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<String, Object> 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<Map<String, Object>> dataResult = new ArrayList<>();
List<Map<String, Object>> dataTanggal = new ArrayList<>();
List<Integer> listIdProduk = new ArrayList<>();
List<String> listPersenJasa = new ArrayList<>();
List<Double> listHargaJual = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> 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<String, Object> 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<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> 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<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> 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<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> 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<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> 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<Map<String, Object>> result = new ArrayList<>();
List<Map<String, Object>> dataTanggal = new ArrayList<>();
List<Integer> listIdProduk = new ArrayList<>();
List<String> listPersenJasa = new ArrayList<>();
List<Double> listHargaJual = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> 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<String, Object> 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<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> 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<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> 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<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> 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<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> 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);
}
}
}