penerapan skoring anestesi menggunakan klasifikasi asa di logbook kinerja dokter di luar jam kerja

This commit is contained in:
salmanoe 2021-11-30 19:43:56 +07:00
parent 00c6773b9b
commit f4d2503e9b
2 changed files with 98 additions and 3 deletions

View File

@ -221,7 +221,7 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
@Param("karcisId") Integer idKarcis);
// Logbook_kinerja_luar_jam_kerja_dokter
@Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId,"
@Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId,,coalesce(ppp.asaId,1) as asaId,"
+ "pr.id as produkId,pr.namaProduk as namaProduk,"
+ "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,pp.jumlah as jumlah,coalesce(pp.hargaDiscount,0) as hargaDiskon,"
+ "ru.departemenId as departemenId,ru.id as ruanganId," + "pd.diskonPegawai as statusDiskon) "

View File

@ -1195,13 +1195,106 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.KelompokPasien.ASURANSI_LAIN, Master.Rekanan.JAMINAN_KEMENKES, 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)) {
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(mf.format(new Date(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 (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()))
&& refSkor.getDokterAnestesiId()
.equals(Integer.valueOf(mapLayanan.get("pegawaiId").toString()))
&& 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")))) {
double skor = 0.0;
if (refSkor.getAsaId() >= 3) {
skor = 0.8 * Double.valueOf(mapSkor.get("skor").toString());
} else if (refSkor.getAsaId() == 2) {
skor = 0.5 * Double.valueOf(mapSkor.get("skor").toString());
} else {
skor = 0.4 * Double.valueOf(mapSkor.get("skor").toString());
}
mapLayanan.put("skor", skor);
break;
}
}
}
}
}
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter(
mf.format(new Date(bulan)), Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM));
// SCORE
for (Map<String, Object> mapLayanan : dataLayanan) {
for (Map<String, Object> mapSkor : dataSkor) {
if (mapLayanan.get("produkId").equals(mapSkor.get("produkId"))
if (!listIdPelayananAnestesi.contains(mapLayanan.get("noRec"))
&& 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")))) {
@ -1216,7 +1309,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
// RULES
for (Map<String, Object> mapLayanan : dataLayanan) {
if (Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
if (Integer.valueOf(mapLayanan.get("jenisPetugasId").toString())
.equals(Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA)
&& Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| Integer.valueOf(mapLayanan.get("statusDiskon").toString()).equals(0))) {
// tidak_dapat_skor_untuk_diskon_dpjp