Update IkiDanRemunerasiController

- Penerapan aturan akses skor kelompok kerja pada daftar tindakan belum ada skor
- Perbaikan service daftar tindakan belum ada skor melibatkan daftar mapping skor kelompok kerja
- Pembuatan service simpan all data mapping produk kelompok kerja
- pembuatan service simpan dan delete single data mapping produk kelompok kerja
- Pembuatan service tampilan daftar tindakan belum ada skor di skoring tindakan medis
- Pembuatan service tampilan daftar kelompok kerja berdasarkan tindakan yang belum ada skor
- Perbaikan service deskripsi tindakan belum ada skor melibatkan dokter kelompok kerja dan penerapan multi thread
This commit is contained in:
Salman Manoe 2022-03-16 11:40:35 +07:00
parent 39351386c1
commit 228d57994d
9 changed files with 563 additions and 113 deletions

View File

@ -0,0 +1,49 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
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.MapProdukKelompokKerja;
/**
* @author salmanoe
* @since Mar 9, 2022
*/
@Repository("mapProdukKelompokKerjaDao")
public interface MapProdukKelompokKerjaDao extends PagingAndSortingRepository<MapProdukKelompokKerja, String> {
String strAllMapping = "select new Map(mpk.noRec as noRec," + "skj.id as kelompokKerjaId,skj.name as kelompokKerja,"
+ "prd.id as produkId,prd.namaProduk as produk) " + "from MapProdukKelompokKerja mpk "
+ "inner join mpk.kelompokKerja skj " + "inner join mpk.produk prd " + "where mpk.statusEnabled is true ";
String whrKelompokKerja = "and mpk.kelompokKerjaId in (:listKelompokKerjaId) ";
String srtKkProduk = "order by mpk.kelompokKerjaId, mpk.produkId";
/**
* @return Daftar Mapping Produk - Kelompok Kerja
*/
@Query(strAllMapping + srtKkProduk)
List<Map<String, Object>> findAllMapping();
/**
* @param listIdKelompokKerja Daftar ID Kelompok Kerja
* @return Daftar Mapping Produk - Kelompok Kerja
*/
@Query(strAllMapping + whrKelompokKerja + srtKkProduk)
List<Map<String, Object>> findAllMapping(@Param("listKelompokKerjaId") List<Integer> listIdKelompokKerja);
@Query("select distinct new Map(prd.id as id,prd.namaProduk as namaProduk) " + "from MapProdukKelompokKerja mpk "
+ "inner join mpk.produk prd " + "order by prd.namaProduk")
List<Map<String, Object>> findProdukMapping();
@Query("select new Map(mpk.kelompokKerjaId as kelompokKerjaId,mpk.noRec as noRec) "
+ "from MapProdukKelompokKerja mpk " + "where mpk.produkId = :produkId " + "order by mpk.kelompokKerjaId")
List<Map<String, Object>> findMappingByProduk(@Param("produkId") Integer idProduk);
}

View File

@ -39,10 +39,13 @@ public interface PelayananPasienPetugasDao extends PagingAndSortingRepository<Pe
List<Map<String, Object>> findReferensiSkorPelayananAnestesi(@Param("listPelayananId") List<String> listPelayananId,
@Param("listKsmId") List<Integer> listKsmId);
@Query("select new Map(pgw.id as id,pgw.namaLengkap as namaLengkap) " + "from PelayananPasienPetugas ppp "
@Query("select new Map(pgw.id as id,pgw.namaLengkap as namaLengkap) "
+ "from PelayananPasienPetugas ppp, MapPegawaiJabatanToUnitKerja mpj "
+ "inner join ppp.pelayananPasien plp " + "inner join ppp.kdpegawai pgw "
+ "where ppp.ObjectJenisPetugasPeId = 4 " + "and plp.statusEnabled is true "
+ "and plp.produkId = :produkId " + "order by plp.tglPelayanan desc")
List<Map<String, Object>> findDokterPemeriksaByTindakan(@Param("produkId") Integer idProduk, Pageable pageable);
+ "where ppp.ObjectPegawaiId = mpj.pegawaiId " + "and mpj.pegawaiId = pgw.id "
+ "and ppp.statusEnabled is true " + "and plp.statusEnabled is true " + "and plp.produkId = :produkId "
+ "and mpj.subUnitKerjaPegawaiId = :kelompokKerjaId " + "order by plp.tglPelayanan desc")
List<Map<String, Object>> findDokterByTindakan(@Param("produkId") Integer idProduk,
@Param("kelompokKerjaId") Integer idKelompokKerja, Pageable pageable);
}

View File

@ -169,10 +169,25 @@ public interface SkoringTindakanMedisDao extends PagingAndSortingRepository<Skor
List<Map<String, Object>> findSkoringLogbookDokter(@Param("bulan") String bulan,
@Param("listPegawaiId") List<Integer> listIdPegawai, @Param("listKsmId") List<Integer> listIdKsm);
String strProdukScored = "select distinct new Map(stm.kelompokKerjaId as kelompokKerjaId, stm.produkId as produkId) "
+ "from SkoringTindakanMedis stm " + "where stm.statusEnabled is true ";
String whrKelompokKerja = "and stm.kelompokKerjaId in (:listKelompokKerjaId) ";
String srtKkProduk = "order by stm.kelompokKerjaId, stm.produkId";
/**
* @return Daftar id produk sudah dilakukan skor remunerasi
*/
@Query("select distinct stm.produkId from SkoringTindakanMedis stm where stm.statusEnabled is true order by stm.produkId")
List<Integer> findProdukScored();
@Query(strProdukScored + srtKkProduk)
List<Map<String, Object>> findProdukScored();
/**
* @param listIdKelompokKerja
* Daftar ID Kelompok Kerja
* @return Daftar id produk sudah dilakukan skor remunerasi
*/
@Query(strProdukScored + whrKelompokKerja + srtKkProduk)
List<Map<String, Object>> findProdukScored(@Param("listKelompokKerjaId") List<Integer> listIdKelompokKerja);
}

View File

@ -52,8 +52,10 @@ public interface SubUnitKerjaDao extends PagingAndSortingRepository<SubUnitKerja
List<Integer> getSubunitKerjaByUnitKerja(@Param("listUnitKerjaId") List<Integer> listIdUnitKerja);
/**
* @param listIdUnitKerja Kelompok unit kerja tertentu
* @return Daftar unit kerja dan subunit kerja dari kelompok unit kerja tertentu
* @param listIdUnitKerja
* Kelompok unit kerja tertentu
* @return Daftar unit kerja dan subunit kerja dari kelompok unit kerja
* tertentu
*/
@Query("select new Map(skr.id as subunitKerjaId, skr.name as subunitKerja, "
+ "ukr.id as unitKerjaId, ukr.name as unitKerja) " + "from SubUnitKerjaPegawai skr "
@ -70,4 +72,8 @@ public interface SubUnitKerjaDao extends PagingAndSortingRepository<SubUnitKerja
+ "and subunit.unitKerjaId = :idUnitKerja " + "order by subunit.name")
List<Map<String, Object>> getSubUnitKerjaCustomByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja);
@Query("select new Map(skj.id as id,skj.name as subunitKerja) " + "from SubUnitKerjaPegawai skj "
+ "where skj.statusEnabled is true " + "and lower(skj.name) like 'kk%' " + "order by skj.id")
List<Map<String, Object>> findAllKelompokKerjaMedis();
}

View File

@ -0,0 +1,25 @@
package com.jasamedika.medifirst2000.service;
import java.util.List;
import java.util.Map;
import org.springframework.orm.jpa.JpaSystemException;
import com.jasamedika.medifirst2000.entities.MapProdukKelompokKerja;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.vo.MapProdukKelompokKerjaVO;
/**
* @author salmanoe
* @since Mar 9, 2022
*/
public interface MapProdukKelompokKerjaService
extends BaseVoService<MapProdukKelompokKerja, MapProdukKelompokKerjaVO, String> {
public List<String> addAll(List<MapProdukKelompokKerjaVO> vos) throws JpaSystemException, ServiceVOException;
public List<Map<String, Object>> getAllProduk() throws JpaSystemException;
public List<Map<String, Object>> getAllKelompokKerja(Integer idProduk) throws JpaSystemException;
}

View File

@ -22,17 +22,22 @@ public interface SkoringTindakanMedisService
Map<String, Object> findAkses(Integer idPegawai) throws JpaSystemException;
/**
*
* @param listIdKelompokKerja
* Daftar ID Kelompok Kerja
* @return Daftar tindakan belum ada skor
*/
public List<Map<String, Object>> findTindakanBelumAdaSkor();
public List<Map<String, Object>> findTindakanBelumAdaSkor(List<Integer> listIdKelompokKerja);
/**
* @param idProduk
* ID tindakan medis
* @param idKelompokKerja
* ID kelompok kerja
* @return Deskripsi Tindakan medis : tarif, ruangan pemeriksaan, dan dokter
* pemeriksa terakhir
*/
public Map<String, String> findDeskripsiSkoringTindakanMedis(Integer idProduk);
public Map<String, String> findDeskripsiSkoringTindakanMedis(Integer idProduk, Integer idKelompokKerja);
/**
* @return Daftar tindakan logbook skor dokter

View File

@ -0,0 +1,204 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
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.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.MapProdukKelompokKerjaDao;
import com.jasamedika.medifirst2000.dao.SubUnitKerjaDao;
import com.jasamedika.medifirst2000.entities.MapProdukKelompokKerja;
import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.MapProdukKelompokKerjaService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.MapProdukKelompokKerjaVO;
import com.jasamedika.medifirst2000.vo.ProdukVO;
import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO;
/**
* @author salmanoe
* @since Mar 9, 2022
*/
@Service("mapProdukKelompokKerjaService")
public class MapProdukKelompokKerjaServiceImpl extends BaseVoServiceImpl implements MapProdukKelompokKerjaService {
@Autowired
private BaseConverterImpl<MapProdukKelompokKerjaVO, MapProdukKelompokKerja> mappingConverter;
@Autowired
private BaseConverterImpl<ProdukVO, Produk> produkConverter;
@Autowired
private BaseConverterImpl<SubUnitKerjaPegawaiVO, SubUnitKerjaPegawai> subunitKerjaConverter;
@Autowired
private MapProdukKelompokKerjaDao mapProdukKelompokKerjaDao;
@Autowired
private SubUnitKerjaDao subUnitKerjaDao;
@Override
public MapProdukKelompokKerjaVO add(MapProdukKelompokKerjaVO vo) throws JpaSystemException, ServiceVOException {
Produk produk = produkConverter.transferVOToModel(vo.getProduk(), new Produk());
SubUnitKerjaPegawai kelompokKerja = subunitKerjaConverter.transferVOToModel(vo.getKelompokKerja(),
new SubUnitKerjaPegawai());
MapProdukKelompokKerja mapping = mappingConverter.transferVOToModel(vo, new MapProdukKelompokKerja());
mapping.setProduk(produk);
mapping.setKelompokKerja(kelompokKerja);
MapProdukKelompokKerja resultModel = mapProdukKelompokKerjaDao.save(mapping);
MapProdukKelompokKerjaVO resultVO = new MapProdukKelompokKerjaVO();
resultVO = mappingConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public List<String> addAll(List<MapProdukKelompokKerjaVO> vos) throws JpaSystemException, ServiceVOException {
List<String> result = new ArrayList<>();
List<MapProdukKelompokKerja> mappings = new ArrayList<>();
for (MapProdukKelompokKerjaVO vo : vos) {
Produk produk = produkConverter.transferVOToModel(vo.getProduk(), new Produk());
SubUnitKerjaPegawai kelompokKerja = subunitKerjaConverter.transferVOToModel(vo.getKelompokKerja(),
new SubUnitKerjaPegawai());
MapProdukKelompokKerja mapping = mappingConverter.transferVOToModel(vo, new MapProdukKelompokKerja());
mapping.setProduk(produk);
mapping.setKelompokKerja(kelompokKerja);
mappings.add(mapping);
}
List<MapProdukKelompokKerja> addAll = new ArrayList<>();
List<MapProdukKelompokKerja> removeAll = new ArrayList<>();
for (MapProdukKelompokKerja mapping : mappings) {
if (mapping.getStatusEnabled()) {
addAll.add(mapping);
} else {
removeAll.add(mapping);
}
}
// save all mapping
Iterable<MapProdukKelompokKerja> models = mapProdukKelompokKerjaDao.save(addAll);
for (MapProdukKelompokKerja model : models) {
MapProdukKelompokKerjaVO vo = new MapProdukKelompokKerjaVO();
vo = mappingConverter.transferModelToVO(model, vo);
result.add("MapProdukKelompokKerja(" + vo.getNoRec() + ") added");
}
// delete all mapping
mapProdukKelompokKerjaDao.delete(removeAll);
for (MapProdukKelompokKerja model : removeAll) {
result.add("Produk(" + model.getProduk().getId() + ") - SubUnitKerjaPegawai("
+ model.getKelompokKerja().getId() + ") removed");
}
return result;
}
@Override
public MapProdukKelompokKerjaVO update(MapProdukKelompokKerjaVO vo) throws JpaSystemException, ServiceVOException {
MapProdukKelompokKerja mappingLama = mapProdukKelompokKerjaDao.findOne(vo.getNoRec());
Produk produk = produkConverter.transferVOToModel(vo.getProduk(), new Produk());
SubUnitKerjaPegawai kelompokKerja = subunitKerjaConverter.transferVOToModel(vo.getKelompokKerja(),
new SubUnitKerjaPegawai());
MapProdukKelompokKerja mappingBaru = mappingConverter.transferVOToModel(vo, mappingLama);
mappingBaru.setProduk(produk);
mappingBaru.setKelompokKerja(kelompokKerja);
MapProdukKelompokKerja resultModel = mapProdukKelompokKerjaDao.save(mappingBaru);
MapProdukKelompokKerjaVO resultVO = new MapProdukKelompokKerjaVO();
resultVO = mappingConverter.transferModelToVO(resultModel, resultVO);
return resultVO;
}
@Override
public Boolean delete(String key) throws JpaSystemException {
mapProdukKelompokKerjaDao.delete(key);
return true;
}
@Override
public MapProdukKelompokKerjaVO findById(String key) throws JpaSystemException {
MapProdukKelompokKerjaVO result = new MapProdukKelompokKerjaVO();
MapProdukKelompokKerja mapping = mapProdukKelompokKerjaDao.findOne(key);
if (CommonUtil.isNotNullOrEmpty(mapping)) {
result = mappingConverter.transferModelToVO(mapping, result);
}
return result;
}
@Override
public List<MapProdukKelompokKerjaVO> findAll() throws JpaSystemException {
List<MapProdukKelompokKerjaVO> result = new ArrayList<MapProdukKelompokKerjaVO>();
Iterable<MapProdukKelompokKerja> models = mapProdukKelompokKerjaDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
for (MapProdukKelompokKerja model : models) {
MapProdukKelompokKerjaVO vo = new MapProdukKelompokKerjaVO();
vo = mappingConverter.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>> getAllProduk() throws JpaSystemException {
List<Map<String, Object>> result = mapProdukKelompokKerjaDao.findProdukMapping();
return result;
}
@Override
public List<Map<String, Object>> getAllKelompokKerja(Integer idProduk) throws JpaSystemException {
List<Map<String, Object>> result = new ArrayList<>();
List<Map<String, Object>> kelompokKerja = subUnitKerjaDao.findAllKelompokKerjaMedis();
List<Map<String, Object>> mapping = mapProdukKelompokKerjaDao.findMappingByProduk(idProduk);
for (Map<String, Object> mapRs : kelompokKerja) {
mapRs.put("noRec", null);
mapRs.put("statusMapping", false);
for (Map<String, Object> map : mapping) {
if (mapRs.get("id").equals(map.get("kelompokKerjaId"))
&& CommonUtil.isNotNullOrEmpty(map.get("noRec"))) {
mapRs.put("noRec", map.get("noRec").toString());
mapRs.put("statusMapping", true);
}
}
result.add(mapRs);
}
result.sort(Comparator.comparing(m -> (String) m.get("subunitKerja")));
return result;
}
}

View File

@ -12,6 +12,9 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@ -27,6 +30,7 @@ import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.HargaNettoProdukByKelasDao;
import com.jasamedika.medifirst2000.dao.LoggingUserDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.MapProdukKelompokKerjaDao;
import com.jasamedika.medifirst2000.dao.MapRuanganToProdukDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienPetugasDao;
import com.jasamedika.medifirst2000.dao.ProdukDao;
@ -84,6 +88,9 @@ public class SkoringTindakanMedisServiceImpl extends BaseVoServiceImpl implement
@Autowired
private PelayananPasienPetugasDao pelayananPasienPetugasDao;
@Autowired
private MapProdukKelompokKerjaDao mapProdukKelompokKerjaDao;
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
@ -435,122 +442,143 @@ public class SkoringTindakanMedisServiceImpl extends BaseVoServiceImpl implement
}
@Override
public List<Map<String, Object>> findTindakanBelumAdaSkor() {
List<Integer> tempList = new ArrayList<>();
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION));
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA));
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK));
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI));
tempList.addAll(Arrays.asList(Master.DetailJenisProduk.LABORATORIUM));
public List<Map<String, Object>> findTindakanBelumAdaSkor(List<Integer> listIdKelompokKerja) {
List<Map<String, Object>> result = new ArrayList<>();
List<Integer> listIdDetailJenisProdukLogbookSkor = tempList.stream().sorted().distinct()
.collect(Collectors.toList());
List<Map<String, Object>> listProdukMapping = new ArrayList<>();
List<Map<String, Object>> listProdukScored = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(listIdKelompokKerja)) {
listProdukMapping = mapProdukKelompokKerjaDao.findAllMapping(listIdKelompokKerja);
listProdukScored = skoringTindakanMedisDao.findProdukScored(listIdKelompokKerja);
} else {
listProdukMapping = mapProdukKelompokKerjaDao.findAllMapping();
listProdukScored = skoringTindakanMedisDao.findProdukScored();
}
List<Integer> listIdProdukScored = skoringTindakanMedisDao.findProdukScored();
List<String> listNorecScored = new ArrayList<>();
for (Map<String, Object> map : listProdukMapping) {
for (Map<String, Object> skor : listProdukScored) {
if (map.get("kelompokKerjaId").equals(skor.get("kelompokKerjaId"))
&& map.get("produkId").equals(skor.get("produkId"))) {
listNorecScored.add(map.get("noRec").toString());
}
}
}
List<Map<String, Object>> result = produkDao.findTindakanBelumAdaSkor(listIdDetailJenisProdukLogbookSkor,
listIdProdukScored);
for (Map<String, Object> map : listProdukMapping) {
if (!listNorecScored.contains(map.get("noRec"))) {
result.add(map);
}
}
return result;
}
@Override
public Map<String, String> findDeskripsiSkoringTindakanMedis(Integer idProduk) {
Map<String, String> result = new HashMap<>();
public Map<String, String> findDeskripsiSkoringTindakanMedis(Integer idProduk, Integer idKelompokKerja) {
final Map<String, String> result = new ConcurrentHashMap<String, String>();
final CountDownLatch countDown = new CountDownLatch(4);
final ExecutorService executor = Executors.newFixedThreadPool(4);
{
String deskripsiDiri = "";
Map<String, Object> produk = produkDao.findProdukById(idProduk);
if (CommonUtil.isNotNullOrEmpty(produk)) {
deskripsiDiri += produk.get("id").toString() + " - " + produk.get("namaProduk").toString();
}
if (CommonUtil.isNotNullOrEmpty(deskripsiDiri)) {
result.put("produk", deskripsiDiri);
} else {
result.put("produk", "-");
}
}
{
String deskripsiTarif = "";
List<Double> listBesarTarif = new ArrayList<>();
NumberFormat rupiah = NumberFormat.getCurrencyInstance(new Locale("in", "ID"));
List<Map<String, Object>> daftarTarif = hargaNettoProdukByKelasDao.findTarifTindakan(idProduk,
Arrays.asList(Master.Kelas.REF_KELAS_KAMAR));
for (Map<String, Object> tarif : daftarTarif) {
if (!listBesarTarif.contains(tarif.get("tarif"))) {
listBesarTarif.add(Double.parseDouble(tarif.get("tarif").toString()));
}
}
if (listBesarTarif.size() == 1) {
deskripsiTarif += rupiah.format(listBesarTarif.get(0));
} else {
for (Map<String, Object> tarif : daftarTarif) {
if (deskripsiTarif == "") {
deskripsiTarif += rupiah.format(Double.parseDouble(tarif.get("tarif").toString())) + " ("
+ tarif.get("kelas").toString() + ")";
} else {
deskripsiTarif += ", " + rupiah.format(Double.parseDouble(tarif.get("tarif").toString())) + " ("
+ tarif.get("kelas").toString() + ")";
for (int i = 0; i < 4; i++) {
final int index = i;
executor.execute(() -> {
try {
if (index == 0) {
// Deskripsi Diri
String deskripsiDiri = "";
Map<String, Object> produk = produkDao.findProdukById(idProduk);
if (CommonUtil.isNotNullOrEmpty(produk)) {
deskripsiDiri += produk.get("id").toString() + " - " + produk.get("namaProduk").toString();
}
if (CommonUtil.isNotNullOrEmpty(deskripsiDiri)) {
result.put("produk", deskripsiDiri);
} else {
result.put("produk", "-");
}
} else if (index == 1) {
// Deskripsi Tarif
String deskripsiTarif = "";
List<Double> listBesarTarif = new ArrayList<>();
NumberFormat rupiah = NumberFormat.getCurrencyInstance(new Locale("in", "ID"));
List<Map<String, Object>> daftarTarif = hargaNettoProdukByKelasDao.findTarifTindakan(idProduk,
Arrays.asList(Master.Kelas.REF_KELAS_KAMAR));
for (Map<String, Object> tarif : daftarTarif) {
if (!listBesarTarif.contains(tarif.get("tarif"))) {
listBesarTarif.add(Double.parseDouble(tarif.get("tarif").toString()));
}
}
if (listBesarTarif.size() == 1) {
deskripsiTarif += rupiah.format(listBesarTarif.get(0));
} else {
for (Map<String, Object> tarif : daftarTarif) {
if (deskripsiTarif == "") {
deskripsiTarif += rupiah.format(Double.parseDouble(tarif.get("tarif").toString()))
+ " (" + tarif.get("kelas").toString() + ")";
} else {
deskripsiTarif += ", "
+ rupiah.format(Double.parseDouble(tarif.get("tarif").toString())) + " ("
+ tarif.get("kelas").toString() + ")";
}
}
}
if (CommonUtil.isNotNullOrEmpty(deskripsiTarif)) {
result.put("tarif", deskripsiTarif);
} else {
result.put("tarif", "-");
}
} else if (index == 2) {
// Deskripsi Ruangan Pemeriksaan
String deskripsiRuanganPemeriksaan = "";
List<String> daftarRuangan = mapRuanganToProdukDao.findRuanganByTindakan(idProduk);
for (String ruangan : daftarRuangan) {
if (deskripsiRuanganPemeriksaan == "") {
deskripsiRuanganPemeriksaan += ruangan;
} else {
deskripsiRuanganPemeriksaan += ", " + ruangan;
}
}
if (CommonUtil.isNotNullOrEmpty(deskripsiRuanganPemeriksaan)) {
result.put("ruanganPemeriksaan", deskripsiRuanganPemeriksaan);
} else {
result.put("ruanganPemeriksaan", "-");
}
} else if (index == 3) {
// Deskripsi Dokter Pelayanan
String deskripsiDokterPelayanan = "";
Pageable pageable = new PageRequest(0, 3);
List<Map<String, Object>> tempList = pelayananPasienPetugasDao.findDokterByTindakan(idProduk,
idKelompokKerja, pageable);
List<Map<String, Object>> daftarDokter = tempList.stream()
.filter(distinctByKey(p -> Integer.parseInt(p.get("id").toString())))
.collect(Collectors.toList());
for (Map<String, Object> dokter : daftarDokter) {
if (deskripsiDokterPelayanan == "") {
deskripsiDokterPelayanan += dokter.get("namaLengkap").toString();
} else {
deskripsiDokterPelayanan += ", " + dokter.get("namaLengkap").toString();
}
}
if (CommonUtil.isNotNullOrEmpty(deskripsiDokterPelayanan)) {
result.put("dokterPemeriksaTerakhir", deskripsiDokterPelayanan);
} else {
result.put("dokterPemeriksaTerakhir", "-");
}
}
} finally {
countDown.countDown();
}
}
if (CommonUtil.isNotNullOrEmpty(deskripsiTarif)) {
result.put("tarif", deskripsiTarif);
} else {
result.put("tarif", "-");
}
});
}
try {
countDown.await();
{
String deskripsiRuanganPemeriksaan = "";
List<String> daftarRuangan = mapRuanganToProdukDao.findRuanganByTindakan(idProduk);
for (String ruangan : daftarRuangan) {
if (deskripsiRuanganPemeriksaan == "") {
deskripsiRuanganPemeriksaan += ruangan;
} else {
deskripsiRuanganPemeriksaan += ", " + ruangan;
}
}
return result;
} catch (InterruptedException e) {
e.printStackTrace();
if (CommonUtil.isNotNullOrEmpty(deskripsiRuanganPemeriksaan)) {
result.put("ruanganPemeriksaan", deskripsiRuanganPemeriksaan);
} else {
result.put("ruanganPemeriksaan", "-");
}
return result;
}
{
String deskripsiDokterPemeriksaTerakhir = "";
Pageable pageable = new PageRequest(0, 3);
List<Map<String, Object>> tempList = pelayananPasienPetugasDao.findDokterPemeriksaByTindakan(idProduk,
pageable);
List<Map<String, Object>> daftarDokter = tempList.stream()
.filter(distinctByKey(p -> Integer.parseInt(p.get("id").toString()))).collect(Collectors.toList());
for (Map<String, Object> dokter : daftarDokter) {
if (deskripsiDokterPemeriksaTerakhir == "") {
deskripsiDokterPemeriksaTerakhir += dokter.get("namaLengkap").toString();
} else {
deskripsiDokterPemeriksaTerakhir += ", " + dokter.get("namaLengkap").toString();
}
}
if (CommonUtil.isNotNullOrEmpty(deskripsiDokterPemeriksaTerakhir)) {
result.put("dokterPemeriksaTerakhir", deskripsiDokterPemeriksaTerakhir);
} else {
result.put("dokterPemeriksaTerakhir", "-");
}
}
return result;
}
@Override

View File

@ -37,6 +37,7 @@ 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.MapProdukKelompokKerjaService;
import com.jasamedika.medifirst2000.service.PelayananNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService;
@ -60,6 +61,7 @@ import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
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.PelayananNakesVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO;
@ -149,6 +151,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired
private TargetSkorDokterService targetSkorDokterService;
@Autowired
private MapProdukKelompokKerjaService mapProdukKelompokKerjaService;
@RequestMapping(value = "/get-load-data", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getLoadData(HttpServletRequest request) {
try {
@ -2186,9 +2191,11 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
@RequestMapping(value = "/get-tindakan-belum-ada-skor", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getTindakanBelumAdaSkor(HttpServletRequest request) {
public ResponseEntity<List<Map<String, Object>>> getTindakanBelumAdaSkor(HttpServletRequest request,
@RequestParam(value = "listKelompokKerjaId", required = false) List<Integer> listIdKelompokKerja) {
try {
List<Map<String, Object>> result = skoringTindakanMedisService.findTindakanBelumAdaSkor();
List<Map<String, Object>> result = skoringTindakanMedisService
.findTindakanBelumAdaSkor(listIdKelompokKerja);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
@ -2285,4 +2292,112 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/save-all-map-produk-kelompok-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<String>> saveAllMapProdukKelompokKerja(HttpServletRequest request,
@Valid @RequestBody List<MapProdukKelompokKerjaVO> vos) {
try {
List<String> result = mapProdukKelompokKerjaService.addAll(vos);
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 add all mapping produk - kelompok 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 add all mapping produk - kelompok kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/save-map-produk-kelompok-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MapProdukKelompokKerjaVO> saveMapProdukKelompokKerja(HttpServletRequest request,
@Valid @RequestBody MapProdukKelompokKerjaVO vo) {
try {
MapProdukKelompokKerjaVO result = new MapProdukKelompokKerjaVO();
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
result = mapProdukKelompokKerjaService.update(vo);
} else {
result = mapProdukKelompokKerjaService.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 {
return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE);
}
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when add/update mapping produk - kelompok 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 add/update mapping produk - kelompok kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/delete-map-produk-kelompok-kerja", method = RequestMethod.POST)
public ResponseEntity<Boolean> deleteMapProdukKelompokKerja(HttpServletRequest request,
@RequestParam(value = "noRec", required = true) String norec) {
try {
Boolean result = mapProdukKelompokKerjaService.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 mapping produk - kelompok 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 delete mapping produk - kelompok kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-subject-map-produk-kelompok-kerja", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getSubjectMapProdukKelompokKerja(HttpServletRequest request) {
try {
List<Map<String, Object>> result = mapProdukKelompokKerjaService.getAllProduk();
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 subject map produk - kelompok 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 subject map produk - kelompok kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-object-map-produk-kelompok-kerja", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getObjectMapProdukKelompokKerja(HttpServletRequest request,
@RequestParam(value = "produkId", required = true) Integer idProduk) {
try {
List<Map<String, Object>> result = mapProdukKelompokKerjaService.getAllKelompokKerja(idProduk);
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 object map produk - kelompok 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 object map produk - kelompok kerja", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}