- penambahan informasi ruangan, nocm, dan jenis petugas pelaksana di detail pasien logbook skoring dokter

- penerapan aturan konsultasi tapi visite di logbook kinerja dokter, informasi detail pasien, dan hitung target layanan bulanan
This commit is contained in:
salmanoe 2021-06-25 15:08:50 +07:00
parent cb6c075d3c
commit b50c762870
3 changed files with 82 additions and 73 deletions

View File

@ -145,18 +145,21 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("karcisId") Integer idKarcis);
@Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId,"
@Query("select distinct new Map(jpp.id as jenisPetugasId, jpp.jenisPetugasPe as jenisPetugas,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "pp.noRec as noRec,"
+ "pp.tglPelayanan as tglPelayanan,"
+ "to_char(pp.tglPelayanan,'dd-MM-yyyy HH:mi:ss') as tglPelayananFormatted," + "pp.jumlah as jumlah,"
+ "pp.hargaDiscount as hargaDiskon," + "ru.departemenId as departemenId,ru.id as ruanganId,"
+ "pd.noRegistrasi as noRegistrasi,pd.isDiskonPegawai as statusDiskon," + "ps.namaPasien as namaPasien) "
+ "pp.hargaDiscount as hargaDiskon,"
+ "ru.departemenId as departemenId,ru.id as ruanganId,ru.namaRuangan as namaRuangan,"
+ "pd.noRegistrasi as noRegistrasi,pd.isDiskonPegawai as statusDiskon,"
+ "ps.namaPasien as namaPasien, ps.noCm as noCm) "
+ "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp " + "left join ppp.pelayananPasien pp "
+ "left join ppp.kdpegawai pg " + "left join pp.produk pr " + "left join pp.pasienDaftar apd "
+ "left join pr.detailJenisProduk djp " + "left join apd.pasienDaftar pd " + "left join apd.ruangan ru "
+ "left join pd.pasien ps " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId "
+ "and mrtp.statusEnabled is true " + "and pg.statusEnabled is true " + "and pd.statusEnabled is true "
+ "and pr.id = :produkId " + "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan "
+ "left join ppp.kdpegawai pg " + "left join ppp.kdjenispetugaspe jpp " + "left join pp.produk pr "
+ "left join pp.pasienDaftar apd " + "left join pr.detailJenisProduk djp "
+ "left join apd.pasienDaftar pd " + "left join apd.ruangan ru " + "left join pd.pasien ps "
+ "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + "and mrtp.statusEnabled is true "
+ "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pr.id = :produkId "
+ "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan "
+ "and ((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and '15:30:00') "
+ "or (to_char(pp.tglPelayanan,'dy') in ('fri') "

View File

@ -488,6 +488,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
bulan.set(Calendar.DAY_OF_MONTH, bulan.getActualMaximum(Calendar.DAY_OF_MONTH));
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIndikatorPelayanan = Arrays.asList(Master.IndikatorKinerjaDetail.INDIKATOR_PELAYANAN_MEDIS);
@ -652,7 +653,25 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
for (Map<String, Object> data : dataLayananScored) {
if (kelompokKerja.get("subunitKerjaId").equals(data.get("idKelompokKerja"))
&& datePelayanan.equals(sdf.format(data.get("tglPelayanan")))) {
if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_EKS)
if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE)
&& (listKonsulTapiVisit.contains(data.get("idTindakan")) || data.get("namaTindakan")
.toString().toLowerCase().contains(Master.VISIT))) {
capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString());
if (i < listBulanPelayananSorted.size()) {
capaianTriwulanVI += Double.valueOf(data.get("jumlahTindakan").toString());
for (Map<String, Object> target : dataTargetFiltered) {
if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId"))
&& idIndikator.equals(target.get("indikatorId"))
&& datePelayanan.equals(target.get("periode"))) {
targetBulanan = Double.valueOf(target.get("target").toString());
break;
}
}
} else if (i == listBulanPelayananSorted.size()) {
targetBulanan = Math
.floor(capaianTriwulanVI / (listBulanPelayananSorted.size() - 1));
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_EKS)
&& data.get("namaTindakan").toString().toLowerCase().contains(Master.KONSUL)
&& listRuangEks.contains(data.get("idRuangan"))) {
capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString());
@ -705,23 +724,6 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
targetBulanan = Math
.floor(capaianTriwulanKR / (listBulanPelayananSorted.size() - 1));
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE)
&& data.get("namaTindakan").toString().toLowerCase().contains(Master.VISIT)) {
capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString());
if (i < listBulanPelayananSorted.size()) {
capaianTriwulanVI += Double.valueOf(data.get("jumlahTindakan").toString());
for (Map<String, Object> target : dataTargetFiltered) {
if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId"))
&& idIndikator.equals(target.get("indikatorId"))
&& datePelayanan.equals(target.get("periode"))) {
targetBulanan = Double.valueOf(target.get("target").toString());
break;
}
}
} else if (i == listBulanPelayananSorted.size()) {
targetBulanan = Math
.floor(capaianTriwulanVI / (listBulanPelayananSorted.size() - 1));
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_EKS)
&& listRuangEks.contains(data.get("idRuangan"))) {
capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString());

View File

@ -568,6 +568,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)),
Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
@ -620,7 +621,12 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
// GROUPING_INDIKATOR
for (Map<String, Object> mapLayanan : dataLayanan) {
if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
if (listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
|| mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.VISITE);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.VISITE));
} else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_EKS);
mapLayanan.put("namaIndikator",
@ -634,10 +640,6 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_REG);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_REG));
} else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.VISITE);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.VISITE));
} else if (listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_EKS);
mapLayanan.put("namaIndikator",
@ -753,13 +755,56 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Map<String, Object>> result = new ArrayList<>();
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbook(idProduk, tglPelayanan,
Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Master.Produk.KARCIS);
for (Map<String, Object> mapLayanan : dataLayanan) {
if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_EKS)
if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE)
&& (listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
|| mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
} else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
}
} else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
} else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_EKS)
&& mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
@ -884,47 +929,6 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE)
&& mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
} else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
}
} else if (!idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& !mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
if (skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
} else if (!skor.equals(0.0) && Double.valueOf(mapLayanan.get("hargaDiskon").toString()) == 0.0) {
mapLayanan.remove("noRec");
mapLayanan.remove("statusDiskon");
mapLayanan.remove("departemenId");
mapLayanan.remove("ruanganId");
mapLayanan.remove("hargaDiskon");
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_EKS)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)