- pembuatan query validasi mapping harga layanan medis ke kelas pelayanan pasien

- penerapan detail jenis produk terhadap filter data tampil saat hitung target layanan otomatis
- penerapan detail jenis produk terhadap filter data tampil saat otomatis verifikasi hasil kinerja layanan medis dokter
- penerapan detail jenis produk terhadap filter data tampil logbook skor kinerja dokter dan dashboard logbook skor
- perbaikan query jika tidak ada harga satuan transaksi pelayanan pasien
- penerapan pembulatan 3 desimal pada tampilan skor di logbook kinerja dokter dan logbook skor
This commit is contained in:
Salman Manoe 2021-08-09 05:50:59 +07:00
parent a543a0f894
commit 1544a00330
5 changed files with 267 additions and 67 deletions

View File

@ -12,7 +12,7 @@ import com.jasamedika.medifirst2000.entities.HargaNettoProdukByKelas;
@Repository("HargaNettoProdukByKelasDao")
public interface HargaNettoProdukByKelasDao extends PagingAndSortingRepository<HargaNettoProdukByKelas, Integer> {
@Query("select model from HargaNettoProdukByKelas model where model.produk.id=:produkId and model.kelas.id=:kelasId "
+ "and model.asalProduk.id=:asalProdukId and model.jenisTarif.id=:jenisTarifId")
public List<HargaNettoProdukByKelas> findProdByKelas(@Param("produkId") Integer produkId,
@ -30,4 +30,9 @@ public interface HargaNettoProdukByKelasDao extends PagingAndSortingRepository<H
+ " join hargaNetto.produk produk " + " left join hargaNetto.kelas kelas " + " order by produk.id")
public List<Map<String, Object>> getListprodukInMapping();
@Query("select new Map(hnk.produkId as produkId,hnk.kelasId as kelasId) " + "from HargaNettoProdukByKelas hnk "
+ "where hnk.produkId = :produkId " + "and hnk.kelasId = :kelasId " + "and hnk.statusEnabled is true")
public List<Map<String, Object>> checkExisting(@Param("kelasId") Integer kelasId,
@Param("produkId") Integer produkId);
}

View File

@ -117,18 +117,27 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and sk.statusEnabled is true " + "and pp.tglPelayanan between :tglAwal and :tglAkhir "
+ "and cast(pp.tglPelayanan as date) = cast(kl.tanggal as date) "
+ "and (((((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "or (to_char(pp.tglPelayanan,'dy') in ('fri') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not in (:listNonjadwalId)) and pd.kelompokPasienId not in (:listBpjsId)) "
+ "or pd.kelompokPasienId in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and (djp.id in (case when pg.id in (cast(:listDokterLabPAId as integer)) then (cast(:listDJPLabPAId as integer[])) "
+ "when pg.id in (cast(:listDokterLabPKId as integer[])) then (cast(:listDJPLabPKId as integer[])) "
+ "when pg.id in (cast(:listDokterRadId as integer[])) then (cast(:listDJPRadId as integer[])) else (cast(:listDJPUtamaId as integer[])) end) "
+ "or djp.id in (case when pg.id in (cast(:listLabRadId as integer[])) then (cast(:listDJPAdmPKId as integer[])) else (-1) end)) "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "order by su.name, pr.id")
public List<Map<String, Object>> getDataLayananJamKerja(@Param("tglAwal") Date tglAwal,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listKsmId") List<Integer> listIdKsm, @Param("listNontindakanId") List<Integer> listIdNontindakan,
@Param("listBpjsId") List<Integer> listIdBpjs, @Param("karcisId") Integer idKarcis);
@Param("listKsmId") List<Integer> listIdKsm, @Param("listDokterLabPAId") Integer[] listIdDokterLabPA,
@Param("listDJPLabPAId") Integer[] listIdDJPLabPA, @Param("listDokterLabPKId") Integer[] listIdDokterLabPK,
@Param("listDJPLabPKId") Integer[] listIdDJPLabPK, @Param("listDokterRadId") Integer[] listIdDokterRad,
@Param("listDJPRadId") Integer[] listIdDJPRad, @Param("listDJPUtamaId") Integer[] listIdDJPUtama,
@Param("listLabRadId") Integer[] listIdLabRad, @Param("listDJPAdmPKId") Integer[] listIdDJPAdmPK,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
// Target_pelayanan_luar_jam_kerja
@Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId,"
@ -155,17 +164,27 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) "
+ "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') " + "or sk.id in (:listNonjadwalId)) "
+ "and pd.kelompokPasienId not in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and jb.kelompokJabatanId in (3,4) " + "and djp.jenisProdukId not in (:listNontindakanId) "
+ "and pr.id <> :karcisId " + "order by pg.namaLengkap, pr.id")
+ "and jb.kelompokJabatanId in (3,4) "
+ "and (djp.id in (case when pg.id in (cast(:listDokterLabPAId as integer[])) then (cast(:listDJPLabPAId as integer[])) "
+ "when pg.id in (cast(:listDokterLabPKId as integer[])) then (cast(:listDJPLabPKId as integer[])) "
+ "when pg.id in (cast(:listDokterRadId as integer[])) then (cast(:listDJPRadId as integer[])) else cast(:listDJPUtamaId as integer[]) end) "
+ "or djp.id in (case when pg.id in (cast(:listLabRadId as integer[])) then (cast(:listDJPAdmPKId as integer[])) else (-1) end)) "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "order by pg.namaLengkap, pr.id")
public List<Map<String, Object>> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listKsmId") List<Integer> listIdKsm, @Param("listNontindakanId") List<Integer> listIdNontindakan,
@Param("listBpjsId") List<Integer> listIdBpjs, @Param("karcisId") Integer idKarcis);
@Param("listKsmId") List<Integer> listIdKsm, @Param("listDokterLabPAId") Integer[] listIdDokterLabPA,
@Param("listDJPLabPAId") Integer[] listIdDJPLabPA, @Param("listDokterLabPKId") Integer[] listIdDokterLabPK,
@Param("listDJPLabPKId") Integer[] listIdDJPLabPK, @Param("listDokterRadId") Integer[] listIdDokterRad,
@Param("listDJPRadId") Integer[] listIdDJPRad, @Param("listDJPUtamaId") Integer[] listIdDJPUtama,
@Param("listLabRadId") Integer[] listIdLabRad, @Param("listDJPAdmPKId") Integer[] listIdDJPAdmPK,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
// Logbook_kinerja_jam_kerja_dokter
@Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + "pg.id as pegawaiId,"
+ "pr.id as produkId,pr.namaProduk as namaProduk,"
// Kinerja_jam_kerja_dokter
String KinerjaJamKerjaDokter = "select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId,"
+ "pg.id as pegawaiId," + "pr.id as produkId,pr.namaProduk as namaProduk, djp.id as detailJenisProdukId,"
+ "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon,"
+ "ru.departemenId as departemenId,ru.id as ruanganId," + "pd.isDiskonPegawai as statusDiskon) "
+ "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk "
@ -178,13 +197,28 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and to_char(pp.tglPelayanan,'yyyy-MM') = :bulan "
+ "and cast(pp.tglPelayanan as date) = cast(kl.tanggal as date) "
+ "and (((((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "or (to_char(pp.tglPelayanan,'dy') in ('fri') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not in (:listNonjadwalId)) and pd.kelompokPasienId not in (:listBpjsId)) "
+ "or pd.kelompokPasienId in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "and pg.id in (:listPegawaiId) " + "order by pr.namaProduk, pp.tglPelayanan")
+ "and pg.id in (:listPegawaiId) ";
String paramListDetailJenisProdukId = "and djp.id in (:listDetailJenisProdukId) ";
String sortingKinerjaJamKerjaDokter = "order by pr.namaProduk, pp.tglPelayanan";
@Query(KinerjaJamKerjaDokter + paramListDetailJenisProdukId + sortingKinerjaJamKerjaDokter)
public List<Map<String, Object>> getDataLogbookJamKerjaDokter(@Param("bulan") String bulan,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listPegawaiId") List<Integer> listIdPegawai,
@Param("listDetailJenisProdukId") List<Integer> listIdDetailJenisProduk,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
@Query(KinerjaJamKerjaDokter + sortingKinerjaJamKerjaDokter)
public List<Map<String, Object>> getDataLogbookJamKerjaDokter(@Param("bulan") String bulan,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@ -214,59 +248,62 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) "
+ "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') or sk.id in (:listNonjadwalId)) "
+ "and pd.kelompokPasienId not in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan")
+ "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) "
+ "and pr.id <> :karcisId " + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan")
public List<Map<String, Object>> getDataLogbookLuarJamKerjaDokter(@Param("bulan") String bulan,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("pegawaiId") Integer idPegawai, @Param("listNontindakanId") List<Integer> listIdNontindakan,
@Param("listBpjsId") List<Integer> listIdBpjs, @Param("karcisId") Integer idKarcis);
@Param("pegawaiId") Integer idPegawai,
@Param("listDetailJenisProdukId") List<Integer> listIdDetailJenisProduk,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
// 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,"
+ "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,"
+ "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted,pp.jumlah as jumlah,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) "
+ "ps.namaPasien as namaPasien, ps.noCm as noCm, " + "kp.kelompokPasien as kelompokPasien) "
+ "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk "
+ "left join ppp.pelayananPasien pp " + "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 " + "left join pjk.shift sk " + "left join pjk.tanggal kl "
+ "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId "
+ "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pjk.shift sk "
+ "left join pjk.tanggal kl " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId "
+ "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id "
+ "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pr.id = :produkId "
+ "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan "
+ "and cast(pp.tglPelayanan as date) = cast(kl.tanggal as date) "
+ "and (((((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) "
+ "or (to_char(pp.tglPelayanan,'dy') in ('fri') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not in (:listNonjadwalId)) and pd.kelompokPasienId not in (:listBpjsId)) "
+ "or pd.kelompokPasienId in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "and pg.id = :pegawaiId" + " order by pr.namaProduk, pp.tglPelayanan")
+ "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) "
+ "and pr.id <> :karcisId " + "and pg.id = :pegawaiId" + " order by pr.namaProduk, pp.tglPelayanan")
public List<Map<String, Object>> findDetailPasienLogbookJamKerjaDokter(@Param("produkId") Integer idProduk,
@Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal,
@Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai,
@Param("listDetailJenisProdukId") List<Integer> listIdDetailJenisProduk,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
// Detail_logbook_kinerja_luar_jam_kerja_dokter
@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,"
+ "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted,pp.jumlah as jumlah,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) "
+ "ps.namaPasien as namaPasien, ps.noCm as noCm, kp.kelompokPasien as kelompokPasien) "
+ "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk "
+ "left join ppp.pelayananPasien pp " + "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 " + "left join pjk.shift sk " + "left join pjk.tanggal kl "
+ "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId "
+ "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pjk.shift sk "
+ "left join pjk.tanggal kl " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId "
+ "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id "
+ "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pr.id = :produkId "
+ "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan "
@ -279,12 +316,13 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) "
+ "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') or sk.id in (:listNonjadwalId)) "
+ "and pd.kelompokPasienId not in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan")
+ "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) "
+ "and pr.id <> :karcisId " + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan")
public List<Map<String, Object>> findDetailPasienLogbookLuarJamKerjaDokter(@Param("produkId") Integer idProduk,
@Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal,
@Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai,
@Param("listDetailJenisProdukId") List<Integer> listIdDetailJenisProduk,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("karcisId") Integer idKarcis);
}

View File

@ -126,7 +126,7 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository<IndekKine
+ "produk.namaProduk as namaProduk, " + "kelas.id as idKelas, " + "kelas.namaKelas as namaKelas, "
+ "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga "
+ "where harga.produkId = produk.id and harga.statusEnabled is true and harga.kelasId = :idKelasSatu) as hargaKelas1, "
+ "pelayananPasien.hargaSatuan as harga, " + "pelayananPasien.hargaDiscount as diskon, "
+ "coalesce(pelayananPasien.hargaSatuan, 0) as harga, " + "pelayananPasien.hargaDiscount as diskon, "
+ "pelayananPasien.jumlah as count, " + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, "
+ "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, "
+ "pasienDaftar.kelompokPasienId as kelompokPasienId, " + "pasienDaftar.isDiskonPegawai as statusDiskon, "

View File

@ -28,6 +28,7 @@ import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao;
import com.jasamedika.medifirst2000.dao.JabatanDao;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao;
import com.jasamedika.medifirst2000.dao.MonitoringAbsenDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.RunningNumberDao;
@ -151,6 +152,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
@Autowired
private JabatanDao jabatanDao;
@Autowired
private MapPegawaiLaboratRadiologiDao mapPegawaiLaboratRadiologiDao;
@Override
public Map<String, Object> loadData() {
Map<String, Object> result = new HashMap<>();
@ -520,10 +524,28 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi();
Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI;
List<Integer> listIdDokterLabPK = pegawaiDao.getDokterLabKlinik();
Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK;
List<Integer> listIdDokterRad = pegawaiDao.getDokterRadiologi();
Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI;
Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA;
List<Integer> listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION;
List<Map<String, Object>> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(),
bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER,
Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
Arrays.asList(Master.UnitKerja.KSM), listIdDokterLabPA.stream().toArray(Integer[]::new), listIdDJPLabPA,
listIdDokterLabPK.stream().toArray(Integer[]::new), listIdDJPLabPK,
listIdDokterRad.stream().toArray(Integer[]::new), listIdDJPRad, listIdDJPUtama,
listIdLaboranRadiolog.stream().toArray(Integer[]::new), listIdDJPAdmPK,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
// get_kategori_bulan
List<String> listBulanPelayanan = new ArrayList<>();
@ -946,10 +968,28 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi();
Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI;
List<Integer> listIdDokterLabPK = pegawaiDao.getDokterLabKlinik();
Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK;
List<Integer> listIdDokterRad = pegawaiDao.getDokterRadiologi();
Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI;
Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA;
List<Integer> listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION;
List<Map<String, Object>> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(),
bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER,
Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
Arrays.asList(Master.UnitKerja.KSM), listIdDokterLabPA.stream().toArray(Integer[]::new), listIdDJPLabPA,
listIdDokterLabPK.stream().toArray(Integer[]::new), listIdDJPLabPK,
listIdDokterRad.stream().toArray(Integer[]::new), listIdDJPRad, listIdDJPUtama,
listIdLaboranRadiolog.stream().toArray(Integer[]::new), listIdDJPAdmPK,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
// get_kategori_bulan
List<String> listBulanPelayanan = new ArrayList<>();

View File

@ -32,6 +32,7 @@ import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDao;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.ShiftKerjaDao;
import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao;
@ -101,6 +102,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
@Autowired
private ShiftKerjaDao shiftKerjaDao;
@Autowired
private MapPegawaiLaboratRadiologiDao mapPegawaiLaboratRadiologiDao;
@Override
public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
@ -637,13 +641,15 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listIdIndikator = new ArrayList<>();
List<Integer> listIdProduk = new ArrayList<>();
List<Double> listSkor = new ArrayList<>();
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
DateFormat mf = new SimpleDateFormat("yyyy-MM");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DecimalFormat decf = new DecimalFormat("0.00");
DecimalFormat decf = new DecimalFormat("###.###");
decf.setRoundingMode(RoundingMode.HALF_UP);
LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0);
@ -656,10 +662,28 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
} else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
} else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
} else {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
}
if (laboranRadiologList.contains(idPegawai)) {
listDetailJenisProdukException = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
listDetailJenisProduk.addAll(listDetailJenisProdukException);
}
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookJamKerjaDokter(
mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER,
Arrays.asList(idPegawai), Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(idPegawai), listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter(
@ -687,21 +711,23 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
// tidak_dapat_skor_untuk_diskon_dpjp
mapLayanan.put("skor", 0.0);
mapLayanan.put("tSkor", 0.0);
mapLayanan.put("skor", 0.000);
mapLayanan.put("tSkor", 0.000);
} else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("skor",
Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF);
mapLayanan.put("skor", Double.parseDouble(decf.format(
Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS);
mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else {
mapLayanan.put("skor",
Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()))));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
}
@ -843,6 +869,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<String> listTglPelayanan = new ArrayList<>();
List<Integer> listIdIndikator = new ArrayList<>();
List<Integer> listIdProduk = new ArrayList<>();
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
List<Double> listSkor = new ArrayList<>();
DateFormat mf = new SimpleDateFormat("yyyy-MM");
@ -850,7 +878,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DecimalFormat decf = new DecimalFormat("0.00");
DecimalFormat decf = new DecimalFormat("###.###");
decf.setRoundingMode(RoundingMode.HALF_UP);
LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0);
@ -863,11 +891,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
} else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
} else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
} else {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
}
if (laboranRadiologList.contains(idPegawai)) {
listDetailJenisProdukException = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
listDetailJenisProduk.addAll(listDetailJenisProdukException);
}
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookLuarJamKerjaDokter(
mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter(
mf.format(new Date(bulan)), Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM));
@ -894,24 +940,25 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
&& (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon"))
|| !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) {
// tidak_dapat_skor_untuk_diskon_dpjp
mapLayanan.put("skor", 0.0);
mapLayanan.put("tSkor", 0.0);
mapLayanan.put("skor", 0.000);
mapLayanan.put("tSkor", 0.000);
} else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA);
mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
mapLayanan.put("skor",
Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS);
Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else {
mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA);
mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
}
@ -1052,6 +1099,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) {
List<Map<String, Object>> result = new ArrayList<>();
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0);
@ -1064,11 +1114,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
} else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
} else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
} else {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
}
if (laboranRadiologList.contains(idPegawai)) {
listDetailJenisProdukException = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
listDetailJenisProduk.addAll(listDetailJenisProdukException);
}
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookJamKerjaDokter(idProduk,
tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
for (Map<String, Object> mapLayanan : dataLayanan) {
if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE)
@ -1418,6 +1486,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) {
List<Map<String, Object>> result = new ArrayList<>();
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0);
@ -1430,11 +1501,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
} else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
} else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
} else {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
}
if (laboranRadiologList.contains(idPegawai)) {
listDetailJenisProdukException = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
listDetailJenisProduk.addAll(listDetailJenisProdukException);
}
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookLuarJamKerjaDokter(idProduk,
tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.Produk.KARCIS);
listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS);
for (Map<String, Object> mapLayanan : dataLayanan) {
if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.VISITE)
@ -2010,11 +2099,14 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
@Override
public void autoVerifLogbookJamKerjaDokter(Date bulan) {
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
DateFormat mf = new SimpleDateFormat("yyyy-MM");
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DecimalFormat decf = new DecimalFormat("0.00");
DecimalFormat decf = new DecimalFormat("###.###");
decf.setRoundingMode(RoundingMode.HALF_UP);
LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0);
@ -2066,25 +2158,50 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
} else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("skor",
Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF);
mapLayanan.put("skor", Double.parseDouble(decf.format(
Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS);
mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS)));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
} else {
mapLayanan.put("skor",
Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()))));
mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())
* Double.valueOf(mapLayanan.get("jumlah").toString()))));
}
}
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
for (Integer idPegawai : listIdPegawai) {
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
} else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
} else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
} else {
listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
}
if (laboranRadiologList.contains(idPegawai)) {
listDetailJenisProdukException = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
listDetailJenisProduk.addAll(listDetailJenisProdukException);
}
double capaian = 0.0;
for (Map<String, Object> mapLayanan : dataLayanan) {
if (mapLayanan.get("pegawaiId").equals(idPegawai)) {
if (mapLayanan.get("pegawaiId").equals(idPegawai)
&& listDetailJenisProduk.contains(mapLayanan.get("detailJenisProdukId"))) {
capaian += Double.valueOf(mapLayanan.get("tSkor").toString());
}
}