- pembuatan service pencarian target pelayanan medis di luar jam kerja masing-masing dokter

- perbaikan logbook skor dokter di luar jam kerja
This commit is contained in:
Salman Manoe 2021-07-22 18:37:44 +07:00
parent 0e887f93ee
commit 4a8cc67240
6 changed files with 178 additions and 33 deletions

View File

@ -33,4 +33,10 @@ public interface LogbookKinerjaDokterDao extends PagingAndSortingRepository<Logb
public List<Map<String, Object>> getLastTargetLayananLuarJamKerja(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir, @Param("listIndikatorId") List<Integer> listIdIndikator);
@Query("select lkd from LogbookKinerjaDokter lkd " + "where lkd.statusEnabled is true "
+ "and to_char(lkd.bulan,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "order by lkd.pegawaiId, lkd.jabatanId, lkd.indikatorDetailId, lkd.bulan, lkd.tglHitung desc")
public List<LogbookKinerjaDokter> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir);
}

View File

@ -44,7 +44,7 @@ public interface TargetLayananDao extends PagingAndSortingRepository<TargetLayan
@Query("select tl from TargetLayanan tl " + "where tl.statusEnabled is true "
+ "and to_char(tl.periode,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "and tl.subUnitKerjaPegawaiId = :kelompokKerjaId "
+ "order by tl.subUnitKerjaPegawaiId, indikatorDetailId, tl.periode, tl.tglHitung desc")
+ "order by tl.subUnitKerjaPegawaiId, tl.indikatorDetailId, tl.periode, tl.tglHitung desc")
public List<TargetLayanan> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir, @Param("kelompokKerjaId") Integer idKelompokKerja);

View File

@ -43,7 +43,10 @@ public interface IkiDanRemunerasiService {
public void saveTargetCapaianLayananPegawai(TargetLayananLuarJamKerjaVO vo, Date periodeHitung)
throws ParseException;
public List<TargetLayananJamKerjaVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
public List<TargetLayananJamKerjaVO> findAllTargetCapaianLayananJamKerja(String strPeriode, Integer idKsm)
throws ParseException;
public List<TargetLayananLuarJamKerjaVO> findAllTargetCapaianLayananLuarJamKerja(String strPeriode)
throws ParseException;
}

View File

@ -1330,7 +1330,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
}
@Override
public List<TargetLayananJamKerjaVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
public List<TargetLayananJamKerjaVO> findAllTargetCapaianLayananJamKerja(String strPeriode, Integer idKsm)
throws ParseException {
List<TargetLayananJamKerjaVO> result = new ArrayList<>();
List<TargetLayanan> data = new ArrayList<>();
@ -1432,4 +1432,114 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
return result;
}
@Override
public List<TargetLayananLuarJamKerjaVO> findAllTargetCapaianLayananLuarJamKerja(String strPeriode)
throws ParseException {
List<TargetLayananLuarJamKerjaVO> result = new ArrayList<>();
List<Map<String, Object>> listPegawai = new ArrayList<>();
List<Integer> listIdPegawai = new ArrayList<>();
List<Map<String, Object>> listJabatan = new ArrayList<>();
List<Integer> listIdJabatan = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID"));
Date periode = sdf.parse(strPeriode);
// get_few_months_earlier
Calendar calTglAwal = Calendar.getInstance();
calTglAwal.setTime(periode);
calTglAwal.set(Calendar.HOUR_OF_DAY, 0);
calTglAwal.set(Calendar.MINUTE, 0);
calTglAwal.set(Calendar.SECOND, 0);
calTglAwal.set(Calendar.DAY_OF_MONTH, 1);
calTglAwal.add(Calendar.MONTH, -Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis")));
// get_this_period
Calendar bulan = Calendar.getInstance();
bulan.setTime(periode);
bulan.set(Calendar.HOUR_OF_DAY, 23);
bulan.set(Calendar.MINUTE, 59);
bulan.set(Calendar.SECOND, 0);
bulan.set(Calendar.DAY_OF_MONTH, bulan.getActualMaximum(Calendar.DAY_OF_MONTH));
List<LogbookKinerjaDokter> data = logbookKinerjaDokterDao.findAllTargetLayanan(sdf.format(calTglAwal.getTime()),
sdf.format(bulan.getTime()));
for (LogbookKinerjaDokter map : data) {
if (!listIdPegawai.contains(map.getPegawai().getId())) {
listIdPegawai.add(map.getPegawai().getId());
}
if (!listIdJabatan.contains(map.getJabatan().getId())) {
listIdJabatan.add(map.getJabatan().getId());
}
}
if (CommonUtil.isNotNullOrEmpty(listIdPegawai)) {
listPegawai = pegawaiDao.findPegawaiByListId(listIdPegawai);
}
if (CommonUtil.isNotNullOrEmpty(listIdJabatan)) {
listJabatan = jabatanDao.findJabatanByListId(listIdJabatan);
}
List<Map<String, Object>> listIndikatorPelayanan = indikatorKinerjaDetailDao
.findByListId(Arrays.asList(Master.IndikatorKinerjaLuarJamKerja.INDIKATOR_PELAYANAN_MEDIS));
for (Map<String, Object> pegawai : listPegawai) {
for (Map<String, Object> jabatan : listJabatan) {
for (Map<String, Object> indikator : listIndikatorPelayanan) {
List<String> paramPeriode = new ArrayList<>();
TargetLayananLuarJamKerjaVO resultVo = new TargetLayananLuarJamKerjaVO();
List<TargetLayananLuarJamKerjaDetailVO> listDetail = new ArrayList<>();
for (LogbookKinerjaDokter targetLayanan : data) {
if (pegawai.get("pegawaiId").equals(targetLayanan.getPegawai().getId())
&& jabatan.get("jabatanId").equals(targetLayanan.getJabatan().getId())
&& indikator.get("id").equals(targetLayanan.getIndikatorDetail().getId())) {
TargetLayananLuarJamKerjaDetailVO detail = new TargetLayananLuarJamKerjaDetailVO();
detail.setDate(sdf.format(targetLayanan.getBulan()));
detail.setBulan(sdfINA.format(targetLayanan.getBulan()));
detail.setTarget(targetLayanan.getDetailTarget());
detail.setCapaian(targetLayanan.getDetailCapaian());
detail.setTglHitung(formatter.format(targetLayanan.getTglHitung()));
if (!paramPeriode.contains(sdf.format(targetLayanan.getBulan()))) {
listDetail.add(detail);
if (!paramPeriode.contains(sdf.format(targetLayanan.getBulan()))) {
paramPeriode.add(sdf.format(targetLayanan.getBulan()));
}
}
}
}
if (listDetail.size() == 4 && listDetail.get(listDetail.size() - 1).getTarget() > 0.0) {
resultVo.setDetail(listDetail);
PegawaiVO pegawaiVO = new PegawaiVO();
pegawaiVO.setId(Integer.valueOf(pegawai.get("pegawaiId").toString()));
pegawaiVO.setNamaLengkap(pegawai.get("namaLengkap").toString());
JabatanVO jabatanVO = new JabatanVO();
jabatanVO.setId(Integer.valueOf(jabatan.get("jabatanId").toString()));
jabatanVO.setNamaJabatan(jabatan.get("namaJabatan").toString());
resultVo.setJabatan(jabatanVO);
IndikatorKinerjaDetailVO indikatorVO = new IndikatorKinerjaDetailVO();
indikatorVO.setId(Integer.valueOf(indikator.get("id").toString()));
indikatorVO.setDetailIndikator(indikator.get("detailIndikator").toString());
resultVo.setIndikator(indikatorVO);
result.add(resultVo);
}
}
}
}
return result;
}
}

View File

@ -869,39 +869,39 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
for (Map<String, Object> mapLayanan : dataLayanan) {
if (listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
|| mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.VISITE);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.VISITE);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.VISITE));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.VISITE));
} else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_EKS);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.KONSUL_EKS);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_EKS));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.KONSUL_EKS));
} else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_GADAR);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.KONSUL_GADAR);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_GADAR));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.KONSUL_GADAR));
} else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.KONSUL_REG);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.KONSUL_REG);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.KONSUL_REG));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.KONSUL_REG));
} else if (listRuangEks.contains(mapLayanan.get("ruanganId"))) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_EKS);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_EKS));
} else if (mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR));
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_GADAR);
mapLayanan.put("namaIndikator", indikatorKinerjaDetailDao
.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_GADAR));
} else if (mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_OPS);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_OPS));
} else {
mapLayanan.put("indikatorId", Master.IndikatorKinerjaJamKerja.TINDAKAN_REG);
mapLayanan.put("indikatorId", Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_REG);
mapLayanan.put("namaIndikator",
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaJamKerja.TINDAKAN_REG));
indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_REG));
}
}
@ -1377,7 +1377,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS);
for (Map<String, Object> mapLayanan : dataLayanan) {
if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE)
if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.VISITE)
&& (listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
|| mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
@ -1419,7 +1419,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_EKS)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.KONSUL_EKS)
&& mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
@ -1461,7 +1461,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_GADAR)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.KONSUL_GADAR)
&& mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
@ -1503,7 +1503,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.KONSUL_REG)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.KONSUL_REG)
&& mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
@ -1544,7 +1544,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_EKS)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_EKS)
&& listRuangEks.contains(mapLayanan.get("ruanganId"))) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
@ -1585,7 +1585,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_GADAR)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_GADAR)
&& mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
@ -1626,7 +1626,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_OPS)
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_OPS)
&& mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) {
if (idJenisPetugas.equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)
&& mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) {
@ -1667,7 +1667,13 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
result.add(mapLayanan);
}
}
} else if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.TINDAKAN_REG)) {
} else if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.TINDAKAN_REG)
&& !listKonsulTapiVisit.contains(mapLayanan.get("produkId"))
&& !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)
&& !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)
&& !listRuangEks.contains(mapLayanan.get("ruanganId"))
&& !mapLayanan.get("departemenId").equals(Master.Departemen.IGD)
&& !mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) {
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

View File

@ -51,6 +51,7 @@ import com.jasamedika.medifirst2000.vo.SettingPirSdmVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO;
import com.jasamedika.medifirst2000.vo.StrukHistoriVO;
import com.jasamedika.medifirst2000.vo.custom.TargetLayananJamKerjaVO;
import com.jasamedika.medifirst2000.vo.custom.TargetLayananLuarJamKerjaVO;
@RestController
@RequestMapping("/iki-remunerasi")
@ -244,21 +245,40 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
@RequestMapping(value = "/get-all-target-dan-capaian-layanan", method = RequestMethod.GET)
public ResponseEntity<List<TargetLayananJamKerjaVO>> getAllTargetLayanan(HttpServletRequest request,
@RequestMapping(value = "/get-all-target-dan-capaian-layanan-jam-kerja", method = RequestMethod.GET)
public ResponseEntity<List<TargetLayananJamKerjaVO>> getAllTargetLayananJamKerja(HttpServletRequest request,
@RequestParam(value = "periode", required = true) String periode,
@RequestParam(value = "ksmId", required = false) Integer idKsm) throws ParseException {
try {
List<TargetLayananJamKerjaVO> result = service.findAllTargetCapaianLayanan(periode, idKsm);
List<TargetLayananJamKerjaVO> result = service.findAllTargetCapaianLayananJamKerja(periode, idKsm);
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 all target dan capaian layanan", sve.getMessage());
LOGGER.error("Got exception {} when get all target dan capaian layanan jam kerja", 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 all target dan capaian layanan", jse.getMessage());
LOGGER.error("Got exception {} when get all target dan capaian layanan jam kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-all-target-dan-capaian-layanan-luar-jam-kerja", method = RequestMethod.GET)
public ResponseEntity<List<TargetLayananLuarJamKerjaVO>> getAllTargetLayananLuarJamKerja(HttpServletRequest request,
@RequestParam(value = "periode", required = true) String periode) throws ParseException {
try {
List<TargetLayananLuarJamKerjaVO> result = service.findAllTargetCapaianLayananLuarJamKerja(periode);
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 all target dan capaian layanan luar jam kerja", 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 all target dan capaian layanan luar jam kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}