Update service pelayanan pasien
Penerapan aturan remun dan pemisahan API remun dan fee for service
This commit is contained in:
parent
09e5767a48
commit
e19c4f9f2f
@ -199,12 +199,13 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
|
||||
|
||||
@Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk,pr.detailJenisProdukId as idDetailJenisProduk,"
|
||||
+ "kp.id as idKelompokPasien,kp.kelompokPasien as kelompokPasien,"
|
||||
+ "kls.id as idKelas,kls.namaKelas as namaKelas," + "ppp.noRec as idPelayananPasienPetugas,"
|
||||
+ "kls.id as idKelas,kls.namaKelas as namaKelas,"
|
||||
+ "ppp.noRec as idPelayananPasienPetugas,ppp.ObjectPegawaiId as idPegawai,"
|
||||
+ "pp.noRec as idPelayananPasien,pp.hargaJual as hargaJual,pp.tglPelayanan as tglPelayanan,"
|
||||
+ "apd.noRec as idAntrianPasienDiperiksa," + "pd.noRec as idPasienDaftar) "
|
||||
+ "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
||||
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "ru.departemenId as idDepartemen,"
|
||||
+ "pd.noRec as idPasienDaftar) " + "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
||||
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
|
||||
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp "
|
||||
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp " + "left join apd.ruangan ru "
|
||||
+ "where (ppp.statusEnabled is true or ppp.statusEnabled is null) "
|
||||
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) "
|
||||
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and ppp.ObjectPegawaiId = :pegawaiId "
|
||||
|
||||
@ -19,5 +19,9 @@ public interface PelayananPasienService {
|
||||
|
||||
String resetKlaimDiskon(String noRegistrasi);
|
||||
|
||||
List<Map<String, Object>> logbookTarifDokter(Integer idPegawai, String bulan);
|
||||
Map<String, List<Map<String, Object>>> splitRemunFfs(Integer idPegawai, String bulan);
|
||||
|
||||
List<Map<String, Object>> logbookRemunTarifDokter(Integer idPegawai, String bulan);
|
||||
|
||||
List<Map<String, Object>> logbookFfsTarifDokter(Integer idPegawai, String bulan);
|
||||
}
|
||||
|
||||
@ -28,7 +28,9 @@ import com.jasamedika.medifirst2000.constants.Master;
|
||||
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
|
||||
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
|
||||
import com.jasamedika.medifirst2000.dao.LogAccDao;
|
||||
import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao;
|
||||
import com.jasamedika.medifirst2000.dao.PasienDaftarDao;
|
||||
import com.jasamedika.medifirst2000.dao.PegawaiDao;
|
||||
import com.jasamedika.medifirst2000.dao.PegawaiJadwalKerjaDao;
|
||||
import com.jasamedika.medifirst2000.dao.PelayananPasienDao;
|
||||
import com.jasamedika.medifirst2000.dao.StrukPelayananDao;
|
||||
@ -63,6 +65,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
@Autowired
|
||||
private BaseConverterImpl<ProdukVO, Produk> produkConverter;
|
||||
|
||||
@Autowired
|
||||
private PegawaiDao pegawaiDao;
|
||||
|
||||
@Autowired
|
||||
private MapPegawaiLaboratRadiologiDao mapPegawaiLaboratRadiologiDao;
|
||||
|
||||
@Autowired
|
||||
private PasienDaftarDao pasienDaftarDao;
|
||||
|
||||
@ -404,10 +412,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> logbookTarifDokter(Integer idPegawai, String bulan) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
Map<String, Object> remun = new HashMap<>();
|
||||
Map<String, Object> ffs = new HashMap<>();
|
||||
public Map<String, List<Map<String, Object>>> splitRemunFfs(Integer idPegawai, String bulan) {
|
||||
Map<String, List<Map<String, Object>>> result = new HashMap<>();
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM");
|
||||
DateTimeFormatter jamFormat = DateTimeFormatter.ofPattern("HH.mm");
|
||||
Date date = new Date();
|
||||
@ -415,7 +421,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
date = df.parse(bulan);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
return result;
|
||||
return null;
|
||||
}
|
||||
/*
|
||||
* Mendapatkan daftar jadwal kerja, tanggal dan jam kerja
|
||||
@ -524,7 +530,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
.sorted(Comparator.comparing(o1 -> o1.get("namaProduk").toString()))
|
||||
.sorted(Comparator.comparing(o2 -> o2.get("namaKelas").toString()))
|
||||
.sorted(Comparator.comparing(o3 -> (Date) o3.get("tglPelayanan"))).collect(Collectors.toList());
|
||||
remun.put("remun", remunSorted);
|
||||
result.put("remun", remunSorted);
|
||||
/*
|
||||
* Sorting data ffs diurutkan
|
||||
*/
|
||||
@ -532,10 +538,186 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
.sorted(Comparator.comparing(o1 -> o1.get("namaProduk").toString()))
|
||||
.sorted(Comparator.comparing(o2 -> o2.get("namaKelas").toString()))
|
||||
.sorted(Comparator.comparing(o3 -> (Date) o3.get("tglPelayanan"))).collect(Collectors.toList());
|
||||
ffs.put("ffs", ffsSorted);
|
||||
result.add(remun);
|
||||
result.add(ffs);
|
||||
result.put("ffs", ffsSorted);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> logbookRemunTarifDokter(Integer idPegawai, String bulan) {
|
||||
|
||||
Map<String, List<Map<String, Object>>> remunFfs = this.splitRemunFfs(idPegawai, bulan);
|
||||
List<Map<String, Object>> listData = remunFfs.get("remun");
|
||||
/*
|
||||
* Dokter luar tidak mendapatkan hak remunerasi
|
||||
*/
|
||||
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR))
|
||||
.contains(idPegawai)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<Map<String, Object>> rawResult = new ArrayList<>();
|
||||
|
||||
List<Integer> drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_UMUM);
|
||||
List<Integer> drKkPediatrikGDList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PEDIATRIK_GD);
|
||||
List<Integer> drKkPerinatologiList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PERINATOLOGI);
|
||||
List<Integer> laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog();
|
||||
|
||||
List<Integer> idsDokterUmumIGD = splitDataSettingDatafixed("pr_dokter_umum_igd");
|
||||
List<Integer> idsDokterPediatrikGD = splitDataSettingDatafixed("pr_dokter_pediatrik_gd");
|
||||
List<Integer> idsDokterPerinatologi = splitDataSettingDatafixed("pr_dokter_perinatologi");
|
||||
|
||||
List<Integer> listDetailJenisProduk = new ArrayList<>();
|
||||
List<Integer> idsRegDJPMedisUtama = splitDataSettingDatafixed("medis_utama");
|
||||
List<Integer> idsRegDJPPenunjangPA = splitDataSettingDatafixed("penunjang_pa");
|
||||
List<Integer> idsRegDJPPenunjangPK = splitDataSettingDatafixed("penunjang_pk");
|
||||
List<Integer> idsRegDJPPenunjangRad = splitDataSettingDatafixed("penunjang_radiologi");
|
||||
List<Integer> idsRegDJPAdminNonPK = splitDataSettingDatafixed("admin_nonpk");
|
||||
{
|
||||
/*
|
||||
* Daftar detail jenis produk yang boleh masuk remunerasi
|
||||
*/
|
||||
if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PATOLOGI_ANATOMI).contains(idPegawai)) {
|
||||
listDetailJenisProduk = idsRegDJPPenunjangPA;
|
||||
} else if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_PATOLOGI_KLINIK)
|
||||
.contains(idPegawai)) {
|
||||
listDetailJenisProduk = idsRegDJPPenunjangPK;
|
||||
} else if (pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_RADIOLOGI).contains(idPegawai)) {
|
||||
listDetailJenisProduk = idsRegDJPPenunjangRad;
|
||||
} else {
|
||||
listDetailJenisProduk = idsRegDJPMedisUtama;
|
||||
}
|
||||
}
|
||||
List<Integer> listDetailJenisProdukException = new ArrayList<>();
|
||||
if (laboranRadiologList.contains(idPegawai)) {
|
||||
listDetailJenisProdukException = idsRegDJPAdminNonPK;
|
||||
listDetailJenisProdukException.removeAll(listDetailJenisProduk);
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(listData)) {
|
||||
for (Map<String, Object> map : listData) {
|
||||
if (drKkPediatrikGDList.contains(map.get("idPegawai"))) {
|
||||
if (idsDokterPediatrikGD.contains(map.get("idProduk"))) {
|
||||
/*
|
||||
* Layanan dokter pediatrik gawat darurat tertentu
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan rawat jalan pediatrik gawat darurat
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
if (map.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)
|
||||
&& map.get("idPegawai").toString().equals(map.get("idDPJP"))) {
|
||||
/*
|
||||
* Layanan rawat inap pediatrik gawat darurat hanya
|
||||
* untuk visit
|
||||
*/
|
||||
rawResult.add(map);
|
||||
}
|
||||
}
|
||||
} else if (!drKkPediatrikGDList.contains(map.get("idPegawai"))) {
|
||||
if (listDetailJenisProduk.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) {
|
||||
if (idsRegDJPPenunjangPA.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))
|
||||
|| idsRegDJPPenunjangPK
|
||||
.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis tertentu untuk di patologi
|
||||
* anatomi dan patologi klinik
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu di rawat
|
||||
* inap
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu di rawat
|
||||
* jalan
|
||||
*/
|
||||
rawResult.add(map);
|
||||
}
|
||||
} else if (!listDetailJenisProduk
|
||||
.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))
|
||||
&& map.get("idDepartemen").equals(Master.Departemen.IGD)
|
||||
&& drKsmUmumList.contains(idPegawai)
|
||||
&& idsDokterUmumIGD.contains(Integer.parseInt(map.get("idProduk").toString()))) {
|
||||
if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu dokter umum
|
||||
* di rawat inap
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu dokter umum
|
||||
* di rawat jalan
|
||||
*/
|
||||
rawResult.add(map);
|
||||
}
|
||||
} else if (!listDetailJenisProduk
|
||||
.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))
|
||||
&& drKkPerinatologiList.contains(idPegawai)
|
||||
&& idsDokterPerinatologi.contains(Integer.parseInt(map.get("idProduk").toString()))) {
|
||||
if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu dokter
|
||||
* perinatologi di rawat inap
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu dokter
|
||||
* perinatologi di rawat jalan
|
||||
*/
|
||||
rawResult.add(map);
|
||||
}
|
||||
} else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException)
|
||||
&& listDetailJenisProdukException
|
||||
.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) {
|
||||
if (idsRegDJPPenunjangPA.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))
|
||||
|| idsRegDJPPenunjangPK
|
||||
.contains(Integer.parseInt(map.get("idDetailJenisProduk").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis tertentu untuk laboran
|
||||
* radiolog di patologi anatomi dan patologi klinik
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_INAP)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu laboran
|
||||
* radiolog di rawat inap
|
||||
*/
|
||||
rawResult.add(map);
|
||||
} else if (Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN)
|
||||
.contains(Integer.parseInt(map.get("idDepartemen").toString()))) {
|
||||
/*
|
||||
* Layanan detail jenis produk tertentu laboran
|
||||
* radiolog di rawat jalan
|
||||
*/
|
||||
rawResult.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return listData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> logbookFfsTarifDokter(Integer idPegawai, String bulan) {
|
||||
Map<String, List<Map<String, Object>>> remunFfs = this.splitRemunFfs(idPegawai, bulan);
|
||||
List<Map<String, Object>> listData = remunFfs.get("ffs");
|
||||
return listData;
|
||||
}
|
||||
|
||||
}
|
||||
@ -2729,20 +2729,39 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/dokter/logbook-tarif/{idPegawai}/{bulan}", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getDetailLogbookSkoringFarmakologi(HttpServletRequest request,
|
||||
@RequestMapping(value = "/dokter/logbook-tarif/remun/{idPegawai}/{bulan}", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getLogbookRemunTarifDokter(HttpServletRequest request,
|
||||
@PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) {
|
||||
try {
|
||||
List<Map<String, Object>> result = pelayananPasienService.logbookTarifDokter(idPegawai, bulan);
|
||||
List<Map<String, Object>> result = pelayananPasienService.logbookRemunTarifDokter(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 tarif dokter", sve.getMessage());
|
||||
LOGGER.error("Got exception {} when get logbook remun tarif 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 logbook tarif dokter", jse.getMessage());
|
||||
LOGGER.error("Got exception {} when get logbook remun tarif dokter", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/dokter/logbook-tarif/ffs/{idPegawai}/{bulan}", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getLogbookFfsTarifDokter(HttpServletRequest request,
|
||||
@PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) {
|
||||
try {
|
||||
List<Map<String, Object>> result = pelayananPasienService.logbookFfsTarifDokter(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 ffs tarif 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 logbook ffs tarif dokter", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user