- pembuatan service validasi hak akses verifikasi logbook dokter

- pembuatan service simpan verifikasi logbook dokter sebagai capaian remunerasi indikator pelayanan medis
This commit is contained in:
Salman Manoe 2021-07-29 19:40:31 +07:00
parent ad0a4d98c4
commit 8171f35e8b
7 changed files with 328 additions and 0 deletions

View File

@ -178,4 +178,11 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository<LogbookKin
@Param("unitKerjaId") Integer idUnitKerja, @Param("subunitKerjaId") Integer idSubunitKerja,
@Param("pegawaiId") Integer idPegawai);
@Query("select new Map(lkt.noRec as noRec,lkt.jabatanId as jabatanId) " + "from LogbookKinerja lkt "
+ "where to_char(lkt.bulan,'yyyy-MM') = :bulan " + "and lkt.pegawaiId = :pegawaiId "
+ "and lkt.indikatorKinerjaId = :indikatorId " + "and lkt.statusEnabled is true "
+ "and lkt.statusVerifikasi is true")
Map<String, Object> findKontrakByLogbook(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai,
@Param("indikatorId") Integer idIndikator);
}

View File

@ -39,4 +39,43 @@ public interface LogbookKinerjaDokterDao extends PagingAndSortingRepository<Logb
public List<LogbookKinerjaDokter> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir);
@Query("select new Map (pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb "
+ "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true "
+ "and pg.kategoryPegawaiId in (:listKategoryPegawaiId) " + "and jb.kelompokJabatanId in (3,4)")
public List<Map<String, Object>> findPegawaiByListKategori(
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai);
@Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb "
+ "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true "
+ "and pg.id = :pegawaiId " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId) "
+ "and jb.unitKerjaId in (:listKsmId)")
List<Map<String, Object>> findAksesPegawaiByStaf(@Param("pegawaiId") Integer idPegawai,
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai,
@Param("listKsmId") List<Integer> listIdKsm);
@Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap,pgb.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mja " + "inner join mjp.pegawai pgb "
+ "inner join mjp.atasanLangsung pg " + "inner join mja.jabatan jb "
+ "where mjp.atasanLangsungId = mja.pegawaiId " + "and mja.pegawaiId = pg.id "
+ "and mjp.statusEnabled is true " + "and mja.statusEnabled is true " + "and pgb.statusEnabled is true "
+ "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId "
+ "and pgb.kategoryPegawaiId in (:listKategoryPegawaiId) " + "and pgb.jenisPegawaiId = 1 "
+ "and jb.unitKerjaId in (:listKsmId)")
List<Map<String, Object>> findAksesPegawaiByAtasan(@Param("pegawaiId") Integer idPegawai,
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai,
@Param("listKsmId") List<Integer> listIdKsm);
@Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap,pgb.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mjn " + "inner join mjp.pegawai pgb "
+ "inner join mjp.pejabatPenilai pg " + "inner join mjn.jabatan jb "
+ "where mjp.pejabatPenilaiId = mjn.pegawaiId " + "and mjn.pegawaiId = pg.id "
+ "and mjp.statusEnabled is true " + "and mjn.statusEnabled is true " + "and pgb.statusEnabled is true "
+ "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId "
+ "and pgb.kategoryPegawaiId in (:listKategoryPegawaiId) " + "and pgb.jenisPegawaiId = 1 "
+ "and jb.unitKerjaId = :direksiId")
List<Map<String, Object>> findAksesPegawaiByPenilai(@Param("pegawaiId") Integer idPegawai,
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai, @Param("direksiId") Integer idDireksi);
}

View File

@ -0,0 +1,16 @@
package com.jasamedika.medifirst2000.service;
import java.util.List;
import java.util.Map;
import org.springframework.orm.jpa.JpaSystemException;
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDokterVO;
public interface LogbookKinerjaDokterService
extends BaseVoService<LogbookKinerjaDokter, LogbookKinerjaDokterVO, String> {
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai) throws JpaSystemException;
}

View File

@ -11,6 +11,8 @@ import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, LogbookKinerjaVO, String> {
public LogbookKinerjaVO verify(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException;
public LogbookKinerjaVO addPengajuanKontrakKinerja(LogbookKinerjaVO vo)
throws JpaSystemException, ServiceVOException;

View File

@ -0,0 +1,192 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.LogbookKinerjaDokterService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.JabatanVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDokterVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
@Service("LogbookKinerjaDokterService")
public class LogbookKinerjaDokterServiceImpl extends BaseVoServiceImpl implements LogbookKinerjaDokterService {
@Autowired
private BaseConverterImpl<LogbookKinerjaDokterVO, LogbookKinerjaDokter> logbookDokterConverter;
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
@Autowired
private BaseConverterImpl<JabatanVO, Jabatan> jabatanConverter;
@Autowired
private BaseConverterImpl<IndikatorKinerjaDetailVO, IndikatorKinerjaDetail> indikatorDetailConverter;
@Autowired
private LogbookKinerjaDokterDao logbookDokterDao;
@Autowired
private PegawaiDao pegawaiDao;
@Override
public LogbookKinerjaDokterVO add(LogbookKinerjaDokterVO vo) throws JpaSystemException, ServiceVOException {
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan());
IndikatorKinerjaDetail indikatorDetail = indikatorDetailConverter.transferVOToModel(vo.getIndikatorDetail(),
new IndikatorKinerjaDetail());
LogbookKinerjaDokter logbookDokter = logbookDokterConverter.transferVOToModel(vo, new LogbookKinerjaDokter());
logbookDokter.setPegawai(pegawai);
logbookDokter.setJabatan(jabatan);
logbookDokter.setIndikatorDetail(indikatorDetail);
LogbookKinerjaDokter resultModel = logbookDokterDao.save(logbookDokter);
LogbookKinerjaDokterVO resultVO = new LogbookKinerjaDokterVO();
resultVO = logbookDokterConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public LogbookKinerjaDokterVO update(LogbookKinerjaDokterVO vo) throws JpaSystemException, ServiceVOException {
LogbookKinerjaDokter logbookLamaDokter = logbookDokterDao.findOne(vo.getNoRec());
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan());
IndikatorKinerjaDetail indikatorDetail = indikatorDetailConverter.transferVOToModel(vo.getIndikatorDetail(),
new IndikatorKinerjaDetail());
LogbookKinerjaDokter logbookBaruDokter = logbookDokterConverter.transferVOToModel(vo, logbookLamaDokter);
logbookBaruDokter.setPegawai(pegawai);
logbookBaruDokter.setJabatan(jabatan);
logbookBaruDokter.setIndikatorDetail(indikatorDetail);
LogbookKinerjaDokter resultModel = logbookDokterDao.save(logbookBaruDokter);
LogbookKinerjaDokterVO resultVO = new LogbookKinerjaDokterVO();
resultVO = logbookDokterConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(String key) throws JpaSystemException {
logbookDokterDao.delete(key);
return true;
}
@Override
public LogbookKinerjaDokterVO findById(String key) throws JpaSystemException {
LogbookKinerjaDokterVO result = new LogbookKinerjaDokterVO();
LogbookKinerjaDokter logbookDokter = logbookDokterDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(logbookDokter)) {
result = logbookDokterConverter.transferModelToVO(logbookDokter, result);
}
return result;
}
@Override
public List<LogbookKinerjaDokterVO> findAll() throws JpaSystemException {
List<LogbookKinerjaDokterVO> result = new ArrayList<>();
Iterable<LogbookKinerjaDokter> models = logbookDokterDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (LogbookKinerjaDokter model : models) {
LogbookKinerjaDokterVO vo = new LogbookKinerjaDokterVO();
vo = logbookDokterConverter.transferModelToVO(model, vo);
result.add(vo);
}
}
return result;
}
@Override
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
@Override
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai) throws JpaSystemException {
List<Map<String, Object>> result = new ArrayList<>();
List<Map<String, Object>> rsAll = new ArrayList<>();
List<Integer> listPurnaWaktu = Arrays.asList(Master.KategoryPegawai.PURNA_WAKTU);
List<Integer> listIdSDM = pegawaiDao.getPegawaiSDMforCred(Master.UnitKerja.BAG_SDM,
Master.SubUnitKerja.SUBBAG_KESEJAHTERAAN);
if (listIdSDM.contains(idPegawai)) {
rsAll = logbookDokterDao.findPegawaiByListKategori(listPurnaWaktu);
result.addAll(rsAll);
for (Map<String, Object> map : result) {
map.put("isVerifAkses", false);
}
}
List<Map<String, Object>> aksesByStaf = logbookDokterDao.findAksesPegawaiByStaf(idPegawai, listPurnaWaktu,
Arrays.asList(Master.UnitKerja.KSM));
List<Map<String, Object>> aksesByAtasan = logbookDokterDao.findAksesPegawaiByAtasan(idPegawai, listPurnaWaktu,
Arrays.asList(Master.UnitKerja.KSM));
List<Map<String, Object>> aksesByPenilai = logbookDokterDao.findAksesPegawaiByPenilai(idPegawai, listPurnaWaktu,
Master.UnitKerja.DIREKSI);
if (CommonUtil.isNotNullOrEmpty(aksesByStaf) && CommonUtil.isNullOrEmpty(rsAll)) {
for (Map<String, Object> map : aksesByStaf) {
map.put("isVerifAkses", false);
}
result.addAll(aksesByStaf);
}
if (CommonUtil.isNotNullOrEmpty(aksesByAtasan)) {
if (CommonUtil.isNullOrEmpty(rsAll)) {
for (Map<String, Object> map : aksesByAtasan) {
map.put("isVerifAkses", true);
}
result.addAll(aksesByAtasan);
} else {
for (Map<String, Object> res : result) {
for (Map<String, Object> map : aksesByAtasan) {
if (res.get("id").equals(map.get("id"))) {
res.put("isVerifAkses", true);
break;
}
}
}
}
}
if (CommonUtil.isNotNullOrEmpty(aksesByPenilai) && CommonUtil.isNullOrEmpty(rsAll)) {
for (Map<String, Object> map : aksesByPenilai) {
map.put("isVerifAkses", false);
}
result.addAll(aksesByPenilai);
}
if (CommonUtil.isNotNullOrEmpty(result)) {
result.sort(Comparator.comparing(m -> (String) m.get("namaLengkap"), String.CASE_INSENSITIVE_ORDER));
}
return result;
}
}

View File

@ -191,6 +191,32 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
return null;
}
@Override
public LogbookKinerjaVO verify(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
DateFormat df = new SimpleDateFormat("yyyy-MM");
Map<String, Object> kontrak = logbookKinerjaDao.findKontrakByLogbook(df.format(vo.getBulan()),
vo.getPegawai().getId(), vo.getIndikatorKinerja().getId());
LogbookKinerja logbookKinerjaLama = logbookKinerjaDao.findOne(kontrak.get("noRec").toString());
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
Jabatan jabatan = new Jabatan();
jabatan.setId(Integer.valueOf(kontrak.get("jabatanId").toString()));
IndikatorKinerja indikatorKinerja = indikatorKinerjaConverter.transferVOToModel(vo.getIndikatorKinerja(),
new IndikatorKinerja());
LogbookKinerja logbookKinerjaBaru = logbookKinerjaConverter.transferVOToModel(vo, logbookKinerjaLama);
logbookKinerjaBaru.setPegawai(pegawai);
logbookKinerjaBaru.setJabatan(jabatan);
logbookKinerjaBaru.setIndikatorKinerja(indikatorKinerja);
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
LogbookKinerjaVO resultVO = new LogbookKinerjaVO();
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public LogbookKinerjaVO addPengajuanKontrakKinerja(LogbookKinerjaVO vo)
throws JpaSystemException, ServiceVOException {

View File

@ -33,6 +33,7 @@ import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService;
import com.jasamedika.medifirst2000.service.IndikatorKinerjaJabatanService;
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.RemunerasiOperasionalService;
import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService;
@ -83,6 +84,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired
private LogbookKinerjaService logbookKinerjaService;
@Autowired
private LogbookKinerjaDokterService logbookKinerjaDokterService;
@Autowired
private LogbookKinerjaDetailService logbookKinerjaDetailService;
@ -1324,4 +1328,46 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-akses-pegawai-verifikasi-logbook-dokter", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getAksesPegawaiVerifikasiLogbookDokter(HttpServletRequest request,
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException {
try {
List<Map<String, Object>> result = logbookKinerjaDokterService.findAksesPegawai(idPegawai);
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);
}
}
@RequestMapping(value = "/verifikasi-logbook-dokter", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<LogbookKinerjaVO> verifikasiLogbookDokter(HttpServletRequest request,
@Valid @RequestBody LogbookKinerjaVO vo) {
try {
LogbookKinerjaVO result = logbookKinerjaService.verify(vo);
if (CommonUtil.isNotNullOrEmpty(result)) {
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage);
} else {
return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE);
}
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when 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 verifikasi logbook dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}