Update LogbookKinerjaService

Pembuatan service logbook skor kinerja dokter farmakologi
This commit is contained in:
salmanoe 2022-06-20 14:42:42 +07:00
parent 911e070e62
commit 0b9aaf29b8
3 changed files with 205 additions and 0 deletions

View File

@ -70,4 +70,9 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
public List<Map<String, Object>> findDetailLogbookNakes(Integer idPegawai, Integer idProduk, String tglPelayanan);
public List<Map<String, Object>> findLogbookFarmakologi(Integer idPegawai, Long bulan);
public List<Map<String, Object>> findDetailLogbookFarmakologi(Integer idPegawai, Integer idProduk,
String tglPelayanan);
}

View File

@ -42,6 +42,7 @@ import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.PelayananFarmakologiDao;
import com.jasamedika.medifirst2000.dao.PelayananNakesDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienNakesDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienPerawatDao;
@ -161,6 +162,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
@Autowired
private PelayananPasienPerawatDao pelayananPasienPerawatDao;
@Autowired
private PelayananFarmakologiDao pelayananFarmakologiDao;
@Override
public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
@ -3216,4 +3220,104 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
return result;
}
@Override
public List<Map<String, Object>> findLogbookFarmakologi(Integer idPegawai, Long bulan) {
List<Map<String, Object>> result = new ArrayList<>();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat mf = new SimpleDateFormat("yyyy-MM");
DecimalFormat decf = new DecimalFormat("###.###");
decf.setRoundingMode(RoundingMode.HALF_UP);
List<Map<String, Object>> pelayananFarmakologi = pelayananFarmakologiDao
.findPelayananFarmakologi(mf.format(new Date(bulan)), idPegawai);
List<Integer> listIdProduk = new ArrayList<>();
List<Double> listSkor = new ArrayList<>();
List<String> listTglPelayanan = new ArrayList<>();
for (Map<String, Object> map : pelayananFarmakologi) {
if (!listIdProduk.contains(map.get("produkId"))) {
listIdProduk.add(Integer.parseInt(map.get("produkId").toString()));
}
if (!listSkor.contains(map.get("skor"))) {
listSkor.add(Double.parseDouble(map.get("skor").toString()));
}
if (!listTglPelayanan.contains(df.format((Date) map.get("tglPelayanan")))) {
listTglPelayanan.add(df.format((Date) map.get("tglPelayanan")));
}
}
listTglPelayanan = listTglPelayanan.stream().sorted().collect(Collectors.toList());
// GROUPING_TANGGAL_PELAYANAN
List<Map<String, Object>> dataTglPelayanan = new ArrayList<>();
for (Integer idProduk : listIdProduk) {
for (Double skor : listSkor) {
for (String tglPelayanan : listTglPelayanan) {
Map<String, Object> data = new HashMap<>();
double jumlahTindakan = 0.0;
double jumlahSkor = 0.0;
for (Map<String, Object> mapLayanan : pelayananFarmakologi) {
if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))
&& tglPelayanan.equals(df.format((Date) mapLayanan.get("tglPelayanan")))) {
jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString());
jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString());
data.putAll(mapLayanan);
data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan"))));
}
}
if (CommonUtil.isNotNullOrEmpty(data)) {
data.put("jumlah", jumlahTindakan);
data.put("tSkor", jumlahSkor);
dataTglPelayanan.add(data);
}
}
}
}
// GROUPING_HEADER
for (Integer idProduk : listIdProduk) {
for (Double skor : listSkor) {
Map<String, Object> data = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
double jumlahTindakan = 0.0;
double jumlahSkor = 0.0;
for (Map<String, Object> mapLayanan : dataTglPelayanan) {
if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) {
jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString());
jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString());
Map<String, Object> mapDetail = new HashMap<>();
mapDetail.put("jumlah", mapLayanan.get("jumlah"));
mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan"));
detail.add(mapDetail);
mapLayanan.remove("noRec");
mapLayanan.remove("tglPelayanan");
data.putAll(mapLayanan);
}
}
if (CommonUtil.isNotNullOrEmpty(data)) {
data.put("detail", detail);
data.put("jumlah", jumlahTindakan);
data.put("tSkor", Double.parseDouble(decf.format(jumlahSkor)));
result.add(data);
}
}
}
return result;
}
@Override
public List<Map<String, Object>> findDetailLogbookFarmakologi(Integer idPegawai, Integer idProduk,
String tglPelayanan) {
List<Map<String, Object>> result = pelayananFarmakologiDao.findPelayananFarmakologiDetail(idPegawai, idProduk,
tglPelayanan);
return result;
}
}

View File

@ -38,6 +38,7 @@ import com.jasamedika.medifirst2000.service.LogbookKinerjaDokterService;
import com.jasamedika.medifirst2000.service.LogbookKinerjaService;
import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService;
import com.jasamedika.medifirst2000.service.MapProdukKelompokKerjaService;
import com.jasamedika.medifirst2000.service.PelayananFarmakologiService;
import com.jasamedika.medifirst2000.service.PelayananNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService;
@ -64,6 +65,7 @@ import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDokterVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
import com.jasamedika.medifirst2000.vo.MapProdukKelompokKerjaVO;
import com.jasamedika.medifirst2000.vo.PelayananFarmakologiVO;
import com.jasamedika.medifirst2000.vo.PelayananNakesVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO;
@ -164,6 +166,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired
private SkoringTindakanFarmakologiService skoringTindakanFarmakologiService;
@Autowired
private PelayananFarmakologiService pelayananFarmakologiService;
@RequestMapping(value = "/get-load-data", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getLoadData(HttpServletRequest request) {
try {
@ -2580,4 +2585,95 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/save-pelayanan-farmakologi", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<PelayananFarmakologiVO> savePelayananFarmakologi(HttpServletRequest request,
@Valid @RequestBody PelayananFarmakologiVO vo) {
try {
PelayananFarmakologiVO result = new PelayananFarmakologiVO();
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
result = pelayananFarmakologiService.update(vo);
} else {
result = pelayananFarmakologiService.add(vo);
}
if (CommonUtil.isNotNullOrEmpty(result)) {
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage);
} else {
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_ERROR,
getMessage(MessageResource.LABEL_ERROR, request));
return RestUtil.getJsonHttptatus(HttpStatus.BAD_REQUEST, mapHeaderMessage);
}
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when add/update pelayanan oleh dokter farmakologi", 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 add/update pelayanan oleh dokter farmakologi", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/delete-pelayanan-farmakologi", method = RequestMethod.POST)
public ResponseEntity<Boolean> deletePelayananFarmakologi(HttpServletRequest request,
@RequestParam(value = "noRec", required = true) String norec) {
try {
Boolean result = pelayananFarmakologiService.delete(norec);
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 delete pelayanan oleh dokter farmakologi", 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 delete pelayanan oleh dokter farmakologi", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-logbook-skoring-farmakologi", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getLogbookSkoringFarmakologi(HttpServletRequest request,
@RequestParam(value = "bulan", required = true) Long bulan,
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai) {
try {
List<Map<String, Object>> result = logbookKinerjaService.findLogbookFarmakologi(idPegawai, bulan);
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 logbook skoring dokter farmakologi", 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 logbook skoring dokter farmakologi", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-detail-logbook-skoring-farmakologi", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getDetailLogbookSkoringFarmakologi(HttpServletRequest request,
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
@RequestParam(value = "produkId", required = true) Integer idProduk,
@RequestParam(value = "tglPelayanan", required = true) String tglPelayanan) {
try {
List<Map<String, Object>> result = logbookKinerjaService.findDetailLogbookFarmakologi(idPegawai, idProduk,
tglPelayanan);
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 detail logbook skoring dokter farmakologi", 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 detail logbook skoring dokter farmakologi", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}