- perbaikan query logbook skor dan target pelayanan medis untuk psbb di rawat jalan

- pembuatan service daftar pegawai untuk pencarian rekapitulasi penilaian kinerja individu
This commit is contained in:
Salman Manoe 2021-08-02 14:37:58 +07:00
parent e468a79a9a
commit 9ecb6ece84
6 changed files with 73 additions and 14 deletions

View File

@ -118,9 +118,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "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) then '14:00:00' else '15:30:00' end)) "
+ "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)) "
+ "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) then '15:30:00' else '16:00:00' end))) "
+ "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 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 "
@ -150,10 +150,10 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "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 ('fri') "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "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 "
@ -180,9 +180,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and sk.statusEnabled is true " + "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) then '14:00:00' else '15:30:00' end)) "
+ "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)) "
+ "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) then '15:30:00' else '16:00:00' end))) "
+ "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 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 "
@ -209,10 +209,10 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and sk.statusEnabled is true " + "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "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 ('fri') "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "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 "
@ -242,9 +242,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "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) then '14:00:00' else '15:30:00' end)) "
+ "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)) "
+ "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) then '15:30:00' else '16:00:00' end))) "
+ "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 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 "
@ -274,10 +274,10 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:01' else '15:30:01' end) and '23:59:59' "
+ "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 ('fri') "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:01' else '16:00:01'end) and '23:59:59' "
+ "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 "

View File

@ -391,6 +391,20 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
List<Map<String, Object>> getPegawaiByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja,
@Param("idSubunitKerja") Integer idSubunitKerja);
@Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg "
+ "where mp.unitKerjaPegawaiId = :unitKerjaId " + "and pg.kategoryPegawaiId in (:listKategoriId) "
+ "and mp.statusEnabled is true " + "and pg.statusEnabled is true " + "order by pg.namaLengkap")
List<Map<String, Object>> getPegawaiByUnitKerja(@Param("unitKerjaId") Integer idUnitKerja,
@Param("listKategoriId") List<Integer> listIdKategori);
@Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg "
+ "where pg.kategoryPegawaiId in (:listKategoriId) " + "and mp.subUnitKerjaPegawaiId = :idSubunitKerja "
+ "and mp.statusEnabled is true " + "and pg.statusEnabled is true " + "order by pg.namaLengkap")
List<Map<String, Object>> getPegawaiByUnitKerja(@Param("listKategoriId") List<Integer> listIdKategori,
@Param("idSubunitKerja") Integer idSubunitKerja);
@Query("select new Map(ej.tglHitung as tglHitung,ej.bulan as bulan,ej.tahun as tahun,"
+ "nj.id as idDetailKelompokJabatan,nj.gradeDesc as grade,nj.detailKelompokJabatan as detailKelompokJabatan,"
+ "j.id as idJabatan,j.namaJabatan as namaJabatan," + "ej.totalNilai as nilaiJabatan) "

View File

@ -1062,8 +1062,9 @@ public interface PegawaiDao extends PagingAndSortingRepository<Pegawai, Integer>
@Query("select new Map(pg.id as id,pg.shiftKerjaId as shiftKerjaId) from Pegawai pg where pg.statusEnabled is true and pg.id in (:listIdPegawai)")
public List<Map<String, Object>> getListKelompokShiftKerja(@Param("listIdPegawai") List<Integer> listIdPegawai);
@Query("select new Map (pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) " + "from Pegawai pg "
+ "where pg.statusEnabled is true " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId)")
@Query("select distinct new Map (pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from Pegawai pg " + "where pg.statusEnabled is true "
+ "and pg.kategoryPegawaiId in (:listKategoryPegawaiId) " + "order by pg.namaLengkap")
public List<Map<String, Object>> findPegawaiByListKategori(
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai);

View File

@ -60,4 +60,6 @@ public interface MapPegawaiJabatanToUnitKerjaService {
Map<String, Object> getEvaluasiJabatanByPegawai(Integer idPegawai);
List<Map<String, Object>> findPegawaiByUnitKerja(Integer idUnitKerja, Integer idSubunitKerja);
}

View File

@ -1762,4 +1762,21 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl implements MapPegawaiJabata
return result;
}
@Override
public List<Map<String, Object>> findPegawaiByUnitKerja(Integer idUnitKerja, Integer idSubunitKerja) {
List<Map<String, Object>> result = new ArrayList<>();
if (CommonUtil.isNullOrEmpty(idUnitKerja) && CommonUtil.isNullOrEmpty(idSubunitKerja)) {
result = pegawaiDao.findPegawaiByListKategori(Arrays.asList(Master.KategoryPegawai.REMUN));
} else if (CommonUtil.isNotNullOrEmpty(idUnitKerja) && CommonUtil.isNullOrEmpty(idSubunitKerja)) {
result = mapPegawaiJabatanToUnitKerjaDao.getPegawaiByUnitKerja(idUnitKerja,
Arrays.asList(Master.KategoryPegawai.REMUN));
} else if (CommonUtil.isNotNullOrEmpty(idUnitKerja) && CommonUtil.isNotNullOrEmpty(idSubunitKerja)) {
result = mapPegawaiJabatanToUnitKerjaDao.getPegawaiByUnitKerja(Arrays.asList(Master.KategoryPegawai.REMUN),
idSubunitKerja);
}
return result;
}
}

View File

@ -35,6 +35,7 @@ import com.jasamedika.medifirst2000.service.IndikatorKinerjaService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDokterService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaService;
import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService;
import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService;
import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService;
import com.jasamedika.medifirst2000.util.CommonUtil;
@ -93,6 +94,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired
private BobotJenisIndikatorService bobotJenisIndikatorService;
@Autowired
private MapPegawaiJabatanToUnitKerjaService mapPegawaiJabatanToUnitKerjaService;
@RequestMapping(value = "/get-load-data", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getLoadData(HttpServletRequest request) {
try {
@ -1370,4 +1374,25 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/pegawai-remun-unit-kerja", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getPegawaiRemunByUnitKerja(HttpServletRequest request,
@RequestParam(value = "unitKerjaId", required = false) Integer idUnitKerja,
@RequestParam(value = "subunitKerjaId", required = false) Integer idSubunitKerja) throws ParseException {
try {
List<Map<String, Object>> result = mapPegawaiJabatanToUnitKerjaService.findPegawaiByUnitKerja(idUnitKerja,
idSubunitKerja);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when get akses pegawai verifikasi logbook dokter", sve.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
} catch (JpaSystemException jse) {
LOGGER.error("Got exception {} when get akses pegawai verifikasi logbook dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}