Update LogbookKinerjaServiceImpl.java

Perbaikan daftar detail pasien di logbook skor dokter anestesi
This commit is contained in:
salmanoe 2022-09-05 12:18:28 +07:00
parent 906b24f460
commit 944e63f040
2 changed files with 162 additions and 6 deletions

View File

@ -271,6 +271,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
// Detail_logbook_kinerja_jam_kerja_dokter
@Query("select distinct new Map(jpp.id as jenisPetugasId,jpp.jenisPetugasPe as jenisPetugas,"
+ "pr.id as produkId,pr.namaProduk as namaProduk,"
+ "coalesce(ppp.asaId,2) as asaId,"
+ "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted,pp.jumlah as jumlah,"
+ "coalesce(pp.hargaDiscount,0) as hargaDiskon,"
+ "ru.departemenId as departemenId,ru.id as ruanganId,ru.namaRuangan as namaRuangan,"

View File

@ -1183,11 +1183,13 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
}
}
}
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapLayananAnestesi : dataLayananAnestesi) {
if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) {
mapLayanan.putAll(mapLayananAnestesi);
break;
if (CommonUtil.isNotNullOrEmpty(dataLayananAnestesi)) {
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapLayananAnestesi : dataLayananAnestesi) {
if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) {
mapLayanan.putAll(mapLayananAnestesi);
break;
}
}
}
}
@ -1199,7 +1201,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
// SCORE
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapSkor : dataSkor) {
if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec"))
if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) && !mapLayanan.containsKey("skor")
&& mapLayanan.get("produkId").equals(mapSkor.get("produkId"))
&& (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku"))
|| ((Date) mapLayanan.get("tglPelayanan"))
@ -1720,6 +1722,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant());
Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant());
String[] blnComp = tglPelayanan.split("-");
String bulan = blnComp[0] + "-" + blnComp[1];
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
@ -1752,7 +1757,157 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
/**
* Menghitung skor asa dokter anestesi
*/
List<String> listIdPelayananAnestesi = new ArrayList<>();
{
List<Map<String, Object>> dataLayananAnestesi = new ArrayList<>();
for (Map<String, Object> map : dataLayanan) {
if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_ANASTESI)) {
listIdPelayananAnestesi.add(map.get("noRec").toString());
dataLayananAnestesi.add(map);
}
}
List<Map<String, Object>> listCountReferensiSkor = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listIdPelayananAnestesi)) {
listCountReferensiSkor = pelayananPasienPetugasDao
.countReferensiSkorPelayananAnestesi(listIdPelayananAnestesi);
}
List<String> listIdRefSkor = new ArrayList<>();
for (Map<String, Object> map : listCountReferensiSkor) {
listIdRefSkor.add(map.get("pelayananId").toString());
}
List<Map<String, Object>> listDataReferensiSkor = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listIdRefSkor)) {
listDataReferensiSkor = pelayananPasienPetugasDao.findReferensiSkorPelayananAnestesi(listIdRefSkor,
Arrays.asList(Master.UnitKerja.KSM));
}
List<ReferensiSkorAnestesiVO> listRefSkor = new ArrayList<>();
for (String idRefSkor : listIdRefSkor) {
ReferensiSkorAnestesiVO ref = new ReferensiSkorAnestesiVO();
for (Map<String, Object> map : listDataReferensiSkor) {
if (idRefSkor.equals(map.get("pelayananId"))) {
ref.setPelayananId(map.get("pelayananId").toString());
ref.setProdukId(Integer.valueOf(map.get("produkId").toString()));
if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA)) {
ref.setDokterPemeriksaId(Integer.valueOf(map.get("petugasId").toString()));
ref.setKelompokKerjaId(Integer.valueOf(map.get("kkId").toString()));
} else if (map.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.DOKTER_ANASTESI)
&& idPegawai.equals(map.get("petugasId"))) {
ref.setDokterAnestesiId(Integer.valueOf(map.get("petugasId").toString()));
ref.setAsaId(Byte.valueOf(map.get("asaId").toString()));
}
}
}
listRefSkor.add(ref);
}
List<Map<String, Object>> dataSkorAnestesi = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listRefSkor)) {
dataSkorAnestesi = skoringTindakanMedisDaoCustom.findSkoringLogbookDokter(bulan, listRefSkor);
}
/**
* Skor dokter anestesi (bukan tindakan mandiri)
*/
for (ReferensiSkorAnestesiVO refSkor : listRefSkor) {
for (Map<String, Object> mapLayanan : dataLayananAnestesi) {
for (Map<String, Object> mapSkor : dataSkorAnestesi) {
if (CommonUtil.isNotNullOrEmpty(refSkor.getPelayananId())
&& CommonUtil.isNotNullOrEmpty(mapLayanan.get("noRec"))
&& CommonUtil.isNotNullOrEmpty(refSkor.getAsaId())
&& CommonUtil.isNotNullOrEmpty(mapLayanan.get("asaId"))
&& CommonUtil.isNotNullOrEmpty(refSkor.getProdukId())
&& CommonUtil.isNotNullOrEmpty(mapLayanan.get("produkId"))
&& CommonUtil.isNotNullOrEmpty(mapSkor.get("produkId"))
&& CommonUtil.isNotNullOrEmpty(refSkor.getDokterAnestesiId())
&& CommonUtil.isNotNullOrEmpty(idPegawai)
&& CommonUtil.isNotNullOrEmpty(refSkor.getDokterPemeriksaId())
&& CommonUtil.isNotNullOrEmpty(mapSkor.get("pegawaiId"))
&& CommonUtil.isNotNullOrEmpty(refSkor.getKelompokKerjaId())
&& CommonUtil.isNotNullOrEmpty(mapSkor.get("kelompokKerjaId"))
&& CommonUtil.isNotNullOrEmpty(mapLayanan.get("tglPelayanan"))
&& CommonUtil.isNotNullOrEmpty(mapSkor.get("tglMulaiBerlaku"))
&& refSkor.getPelayananId().equals(mapLayanan.get("noRec").toString())
&& refSkor.getAsaId().equals(Byte.valueOf(mapLayanan.get("asaId").toString()))
&& refSkor.getProdukId().equals(Integer.valueOf(mapLayanan.get("produkId").toString()))
&& refSkor.getProdukId().equals(Integer.valueOf(mapSkor.get("produkId").toString()))
&& Integer.valueOf(mapLayanan.get("produkId").toString())
.equals(Integer.valueOf(mapSkor.get("produkId").toString()))
&& idPegawai.equals(refSkor.getDokterAnestesiId())
&& refSkor.getDokterPemeriksaId()
.equals(Integer.valueOf(mapSkor.get("pegawaiId").toString()))
&& refSkor.getKelompokKerjaId()
.equals(Integer.valueOf(mapSkor.get("kelompokKerjaId").toString()))
&& (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku"))
|| ((Date) mapLayanan.get("tglPelayanan"))
.equals((Date) mapSkor.get("tglMulaiBerlaku")))) {
if (!mapLayanan.containsKey("skor")) {
if (refSkor.getAsaId() >= 3) {
double calcSkor = 0.8 * Double.valueOf(mapSkor.get("skor").toString());
mapLayanan.put("skor", calcSkor);
break;
} else if (refSkor.getAsaId() == 2) {
double calcSkor = 0.5 * Double.valueOf(mapSkor.get("skor").toString());
mapLayanan.put("skor", calcSkor);
break;
} else if (refSkor.getAsaId() == 1) {
double calcSkor = 0.4 * Double.valueOf(mapSkor.get("skor").toString());
mapLayanan.put("skor", calcSkor);
break;
}
}
}
}
}
}
if (CommonUtil.isNotNullOrEmpty(dataLayananAnestesi)) {
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapLayananAnestesi : dataLayananAnestesi) {
if (mapLayanan.get("noRec").toString().equals(mapLayananAnestesi.get("noRec"))) {
mapLayanan.putAll(mapLayananAnestesi);
break;
}
}
}
}
}
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter(bulan,
Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM));
// SCORE
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapSkor : dataSkor) {
if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec")) && !mapLayanan.containsKey("skor")
&& mapLayanan.get("produkId").equals(mapSkor.get("produkId"))
&& (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku"))
|| ((Date) mapLayanan.get("tglPelayanan"))
.equals((Date) mapSkor.get("tglMulaiBerlaku")))) {
mapLayanan.put("skor", mapSkor.get("skor"));
break;
}
}
if (!mapLayanan.containsKey("skor")) {
mapLayanan.put("skor", 1.0);
}
}
// FILTERING
List<Map<String, Object>> dataLayananFiltered = new ArrayList<>();
for (Map<String, Object> map : dataLayanan) {
if (skor.equals(map.get("skor"))) {
dataLayananFiltered.add(map);
}
}
// RULES
for (Map<String, Object> mapLayanan : dataLayananFiltered) {
if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE)
&& (listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
|| mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT))) {