Update service pelayanan pasien
Penyesuaian proporsi dokter untuk pelayanan di IBS, radiologi, dan laboratorium
This commit is contained in:
parent
f0d4c37195
commit
f5c80a233b
@ -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;
|
||||
|
||||
@ -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) "
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user