- 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:
parent
cb6c075d3c
commit
b50c762870
@ -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') "
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user