- pembuatan service presensi visite dokter

- pembuatan daftar dokter untuk pencarian monitoring presensi visite dokter
This commit is contained in:
salmanoe 2021-11-15 19:51:20 +07:00
parent 5564538cee
commit 73d361468b
7 changed files with 227 additions and 20 deletions

View File

@ -5,23 +5,26 @@ import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.CatatanPerkembanganPasienTerintegrasi;
import com.jasamedika.medifirst2000.vo.CpptHarianPertamaVO;
/**
* @author ITI-14
* @since Oct 21, 2021
*/
@Repository("cpptDao")
public interface CatatanPerkembanganPasienTerintegrasiDao
extends PagingAndSortingRepository<CatatanPerkembanganPasienTerintegrasi, String> {
@Query(nativeQuery = true, value = "select distinct on (cp.pegawaifk) cp.pegawaifk, cp.tglinput "
+ "from cppt_t cp " + "inner join pegawai_m pg on cp.pegawaifk = pg.id " + "where cp.statusenabled is true "
+ "and cp.isverifikasi is true " + "and pg.kategorypegawai in (:listKategoryId) "
+ "and pg.objectjenispegawaifk = :jenisPegawaiId " + "and to_char(cp.tglinput, 'yyyy-MM-dd') = :tglInput "
+ "order by cp.pegawaifk, cp.tglinput asc")
List<CpptHarianPertamaVO> findCpptHarianPertama(@Param("listKategoryId") List<Integer> listIdKategoryPegawai,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("tglInput") String tglInput);
@Query(nativeQuery = true, value = "select distinct on (cppt.pegawaifk,to_char(cppt.tglinput,'yyyy-MM-dd')) cppt.* "
+ "from (select cp.* from cppt_t cp "
+ "inner join antrianpasiendiperiksa_t apd on cp.noregistrasifk = apd.norec "
+ "where cp.statusenabled is true " + "and cp.flag_ in (1,3) "
+ "and to_char(cp.tglinput,'yyyy-MM-dd') between :startDate and :endDate "
+ "and cp.pegawaifk in (:listPegawaiId) " + "order by cp.pegawaifk, cp.tglinput) as cppt "
+ "order by cppt.pegawaifk, to_char(cppt.tglinput,'yyyy-MM-dd')")
List<CatatanPerkembanganPasienTerintegrasi> findPresensiCPPT(@Param("listPegawaiId") List<Integer> listIdPegawai,
@Param("startDate") String startDate, @Param("endDate") String endDate);
}

View File

@ -14,8 +14,8 @@ import com.jasamedika.medifirst2000.entities.Kalender;
@Repository("KalenderDao")
public interface KalenderDao extends PagingAndSortingRepository<Kalender, Integer> {
@Query("select k.tanggal from Kalender k where to_char(k.tanggal,'yyyy-MM-dd') between :tglAwal and :tglAkhir")
List<Date> getDateFromPeriodicParameter(@Param("tglAwal") String tglAwal, @Param("tglAkhir") String tglAkhir);
@Query("select k.tanggal from Kalender k where to_char(k.tanggal,'yyyy-MM-dd') between :startDate and :endDate")
List<Date> getDateFromPeriodicParameter(@Param("startDate") String tglAwal, @Param("endDate") String tglAkhir);
@Query("select new Map(k.id as kalendarId," + "k.tanggal as date," + "to_char(k.tanggal,'yyyy-MM-dd') as strDate,"
+ "concat(k.hariKeDlmBulan,' ',k.namaBulan,' ',k.tahunKalender) as tanggal) "

View File

@ -493,4 +493,33 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
+ "and pg.jenisPegawaiId = 1 " + "and jb.levelJabatan = 5")
List<Integer> findAllDokterKelompokStafMedik(@Param("listKsmId") List<Integer> listIdKsm);
String strDokter = "select distinct new Map(pg.id as pegawaiId,pg.nama as nama,pg.namaLengkap as namaLengkap) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb "
+ "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and pg.jenisPegawaiId = 1 "
+ "and jb.levelJabatan = 5 ";
String ksm = "and mj.unitKerjaPegawaiId = :ksmId ";
String kk = "and mj.subUnitKerjaPegawaiId = :kkId ";
String dr = "and mj.pegawaiId = :drId ";
String sortDr = "order by pg.nama";
@Query(strDokter + sortDr)
List<Map<String, Object>> findDokter();
@Query(strDokter + ksm + sortDr)
List<Map<String, Object>> findDokterByKsm(@Param("ksmId") Integer idKsm);
@Query(strDokter + ksm + kk + sortDr)
List<Map<String, Object>> findDokterByKk(@Param("ksmId") Integer idKsm, @Param("kkId") Integer idKk);
@Query(strDokter + ksm + kk + dr + sortDr)
List<Map<String, Object>> findDokterById(@Param("ksmId") Integer idKsm, @Param("kkId") Integer idKk,
@Param("drId") Integer idDr);
@Query(strDokter + dr + sortDr)
List<Map<String, Object>> findDokterById(@Param("drId") Integer idDr);
}

View File

@ -1,5 +1,8 @@
package com.jasamedika.medifirst2000.service;
import java.util.List;
import java.util.Map;
import org.springframework.orm.jpa.JpaSystemException;
import com.jasamedika.medifirst2000.entities.CatatanPerkembanganPasienTerintegrasi;
@ -12,6 +15,9 @@ import com.jasamedika.medifirst2000.vo.CatatanPerkembanganPasienTerintegrasiVO;
public interface CatatanPerkembanganPasienTerintegrasiService
extends BaseVoService<CatatanPerkembanganPasienTerintegrasi, CatatanPerkembanganPasienTerintegrasiVO, String> {
void hitungKepatuhanCpptHarianPertama(Long tglInput) throws JpaSystemException;
List<Map<String, Object>> findPresensiVisiteDokter(Integer idKsm, Integer idKk, Integer idDr, Long startDate,
Long endDate) throws JpaSystemException;
List<Map<String, Object>> findDokter(Integer idKsm, Integer idKk, Integer idDr) throws JpaSystemException;
}

View File

@ -3,19 +3,19 @@ package com.jasamedika.medifirst2000.service.impl;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
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 org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.CatatanPerkembanganPasienTerintegrasiDao;
import com.jasamedika.medifirst2000.dao.KalenderDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.CatatanPerkembanganPasienTerintegrasi;
import com.jasamedika.medifirst2000.entities.Pasien;
@ -26,7 +26,6 @@ import com.jasamedika.medifirst2000.service.CatatanPerkembanganPasienTerintegras
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.AntrianPasienDiPeriksaVO;
import com.jasamedika.medifirst2000.vo.CatatanPerkembanganPasienTerintegrasiVO;
import com.jasamedika.medifirst2000.vo.CpptHarianPertamaVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;
@ -57,6 +56,12 @@ public class CatatanPerkembanganPasienTerintegrasiServiceImpl extends BaseVoServ
@Autowired
private CatatanPerkembanganPasienTerintegrasiDao cpptDao;
@Autowired
private KalenderDao kalenderDao;
@Autowired
private MapPegawaiJabatanToUnitKerjaDao mapJabatanDao;
@Override
public CatatanPerkembanganPasienTerintegrasiVO add(CatatanPerkembanganPasienTerintegrasiVO vo)
throws JpaSystemException, ServiceVOException {
@ -154,13 +159,124 @@ public class CatatanPerkembanganPasienTerintegrasiServiceImpl extends BaseVoServ
return null;
}
/**
* @author ITI-14
* @since Nov 15, 2021
* @param idKsm
* id kelompok staf medik
* @param idKk
* id kelompok kerja
* @param idDr
* id pegawai dokter
* @return daftar dokter
*/
@Override
@Transactional
public void hitungKepatuhanCpptHarianPertama(Long tglInput) throws JpaSystemException {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
public List<Map<String, Object>> findDokter(Integer idKsm, Integer idKk, Integer idDr) throws JpaSystemException {
List<Map<String, Object>> result = new ArrayList<>();
List<CpptHarianPertamaVO> listCppt = cpptDao.findCpptHarianPertama(Arrays.asList(Master.KategoryPegawai.REMUN),
Master.JenisPegawai.DOKTER, df.format(new Date(tglInput)));
if (CommonUtil.isNotNullOrEmpty(idKsm) && CommonUtil.isNotNullOrEmpty(idKk)
&& CommonUtil.isNotNullOrEmpty(idDr)) {
result = mapJabatanDao.findDokterById(idKsm, idKk, idDr);
} else if (CommonUtil.isNullOrEmpty(idKsm) && CommonUtil.isNullOrEmpty(idKk)
&& CommonUtil.isNotNullOrEmpty(idDr)) {
result = mapJabatanDao.findDokterById(idDr);
} else if (CommonUtil.isNotNullOrEmpty(idKk) && CommonUtil.isNullOrEmpty(idDr)) {
result = mapJabatanDao.findDokterByKk(idKsm, idKk);
} else if (CommonUtil.isNotNullOrEmpty(idKsm) && CommonUtil.isNullOrEmpty(idKk)) {
result = mapJabatanDao.findDokterByKsm(idKsm);
} else {
result = mapJabatanDao.findDokter();
}
return result;
}
/**
* @author ITI-14
* @since Nov 12, 2021
* @param idKsm
* id kelompok staf medik
* @param idKk
* id kelompok kerja
* @param idDr
* id pegawai dokter
* @param startDate
* tanggal awal pengambilan data
* @param endDate
* tanggal akhir pengambilan data
* @return presensi visite dokter
*/
@Override
public List<Map<String, Object>> findPresensiVisiteDokter(Integer idKsm, Integer idKk, Integer idDr, Long startDate,
Long endDate) throws JpaSystemException {
List<Map<String, Object>> result = new ArrayList<>();
List<Map<String, Object>> dataInit = new ArrayList<>();
List<Integer> listIdDokter = new ArrayList<>();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df_ina = new SimpleDateFormat("dd-MM-yyyy");
DateFormat sf_ina = new SimpleDateFormat("HH:mm:ss");
String strStartDate = df.format(new Date(startDate));
String strEndDate = df.format(new Date(endDate));
List<Map<String, Object>> listDokter = this.findDokter(idKsm, idKk, idDr);
for (Map<String, Object> map : listDokter) {
listIdDokter.add(Integer.valueOf(map.get("pegawaiId").toString()));
}
List<Date> listTgl = kalenderDao.getDateFromPeriodicParameter(strStartDate, strEndDate);
for (Map<String, Object> dokter : listDokter) {
for (Date tgl : listTgl) {
Map<String, Object> mapDate = new HashMap<>();
mapDate.putAll(dokter);
mapDate.put("tgl", tgl);
dataInit.add(mapDate);
}
}
if (CommonUtil.isNotNullOrEmpty(listIdDokter)) {
List<CatatanPerkembanganPasienTerintegrasi> rawData = cpptDao.findPresensiCPPT(listIdDokter, strStartDate,
strEndDate);
for (Map<String, Object> map : dataInit) {
Map<String, Object> mapRs = new HashMap<>();
mapRs.put("cpptId", null);
mapRs.put("tglInput", null);
mapRs.put("strTgl", df_ina.format(map.get("tgl")));
mapRs.put("strJamInput", null);
mapRs.put("antrianId", null);
mapRs.put("namaRuangan", null);
mapRs.put("isDpjp", null);
for (CatatanPerkembanganPasienTerintegrasi cppt : rawData) {
if (df.format(map.get("tgl")).equals(df.format(cppt.getTglInput()))
&& map.get("pegawaiId").equals(cppt.getPegawaiId())) {
Boolean isDpjp = false;
if (CommonUtil.isNotNullOrEmpty(cppt.getAntrianPasienDiperiksa())
&& CommonUtil.isNotNullOrEmpty(cppt.getAntrianPasienDiperiksa().getPegawai())) {
isDpjp = cppt.getAntrianPasienDiperiksa().getPegawai().getId().equals(map.get("pegawaiId"))
? true : false;
}
mapRs.put("cpptId", cppt.getNoRec());
mapRs.put("tglInput", cppt.getTglInput());
mapRs.put("strTgl", df_ina.format(map.get("tgl")));
mapRs.put("strJamInput", sf_ina.format(cppt.getTglInput()));
mapRs.put("antrianId", cppt.getAntrianPasienDiperiksaId());
mapRs.put("namaRuangan", cppt.getRuangan().getNamaRuangan());
mapRs.put("isDpjp", isDpjp);
break;
}
}
mapRs.putAll(map);
result.add(mapRs);
}
}
return result;
}
}

View File

@ -101,6 +101,7 @@ import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.CatatanPerkembanganPasienTerintegrasiService;
import com.jasamedika.medifirst2000.service.CssdSterilisasiService;
import com.jasamedika.medifirst2000.service.HasilPemeriksaanSwaPantauLimbahCairService;
import com.jasamedika.medifirst2000.service.IndekKinerjaService;
@ -328,6 +329,9 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
@Autowired
private PasienService pasienService;
@Autowired
private CatatanPerkembanganPasienTerintegrasiService cpptService;
@RequestMapping("/instalasiRawatInap")
public ModelAndView generateInstalasiRawatInap(ModelAndView m,
@RequestParam(value = "format", required = false) String format,
@ -7691,4 +7695,28 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
}
}
@RequestMapping(value = "/presensi-visite-dokter", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> presensiVisiteDokter(HttpServletRequest request,
@RequestParam(value = "startDate", required = true) Long startDate,
@RequestParam(value = "endDate", required = true) Long endDate,
@RequestParam(value = "ksmId", required = false) Integer idKsm,
@RequestParam(value = "kkId", required = false) Integer idKk,
@RequestParam(value = "drId", required = false) Integer idDr) {
try {
List<Map<String, Object>> result = cpptService.findPresensiVisiteDokter(idKsm, idKk, idDr, startDate,
endDate);
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 data presensi visite 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 data presensi visite dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}

View File

@ -46,6 +46,7 @@ import com.jasamedika.medifirst2000.service.AsuransiNakerService;
import com.jasamedika.medifirst2000.service.AturanPeminjamanService;
import com.jasamedika.medifirst2000.service.BerkasLamaranService;
import com.jasamedika.medifirst2000.service.BibliographyService;
import com.jasamedika.medifirst2000.service.CatatanPerkembanganPasienTerintegrasiService;
import com.jasamedika.medifirst2000.service.CustomIndexKerjaService;
import com.jasamedika.medifirst2000.service.DaftarKeanggotaanService;
import com.jasamedika.medifirst2000.service.DataKeluargaService;
@ -415,6 +416,9 @@ public class SdmController extends LocaleController<AkunVO> {
@Autowired
private RemunerasiOperasionalService remunerasiOperasionalService;
@Autowired
private CatatanPerkembanganPasienTerintegrasiService cpptService;
@RequestMapping(value = "/save-custom-uraian-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo,
HttpServletRequest request) throws ParseException {
@ -5907,4 +5911,25 @@ public class SdmController extends LocaleController<AkunVO> {
}
}
@RequestMapping(value = "/daftar-dokter", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getDaftarDokter(HttpServletRequest request,
@RequestParam(value = "ksmId", required = false) Integer idKsm,
@RequestParam(value = "kkId", required = false) Integer idKk,
@RequestParam(value = "drId", required = false) Integer idDr) {
try {
List<Map<String, Object>> result = cpptService.findDokter(idKsm, idKk, idDr);
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 daftar 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 daftar dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}