Merge branch 'dev/remun/logbook-tarif' into dev/no-cron
This commit is contained in:
commit
5181636e98
@ -134,6 +134,7 @@ public final class Master {
|
|||||||
public static final Integer DOKTER_ANASTESI = 6;
|
public static final Integer DOKTER_ANASTESI = 6;
|
||||||
public static final Integer[] DOKTER_ANASTESI_OR_ASISTEN_SPESIALIS = { 6, 13 };
|
public static final Integer[] DOKTER_ANASTESI_OR_ASISTEN_SPESIALIS = { 6, 13 };
|
||||||
public static final Integer DOKTER_PEMERIKSA = 4;
|
public static final Integer DOKTER_PEMERIKSA = 4;
|
||||||
|
public static final Integer[] DOKTER_PEMERIKSA_AND_ASISTEN = { 4, 13 };
|
||||||
public static final Integer PETUGAS_PELAKSANA = 2;
|
public static final Integer PETUGAS_PELAKSANA = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.jasamedika.medifirst2000.dao;
|
package com.jasamedika.medifirst2000.dao;
|
||||||
|
|
||||||
|
import com.jasamedika.medifirst2000.dto.PelayananDokterBedahDto;
|
||||||
import com.jasamedika.medifirst2000.entities.PelayananPasien;
|
import com.jasamedika.medifirst2000.entities.PelayananPasien;
|
||||||
import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
|
import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
|
||||||
import com.jasamedika.medifirst2000.entities.StrukPelayanan;
|
import com.jasamedika.medifirst2000.entities.StrukPelayanan;
|
||||||
@ -327,4 +328,40 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
|
|||||||
Set<Map<String, Object>> findPasienPaketDiRanapByDokter(@Param("listIdSpog") List<Integer> listIdSpog,
|
Set<Map<String, Object>> findPasienPaketDiRanapByDokter(@Param("listIdSpog") List<Integer> listIdSpog,
|
||||||
@Param("listProdukEntriId") List<Integer> listProdukEntriId,
|
@Param("listProdukEntriId") List<Integer> listProdukEntriId,
|
||||||
@Param("listRanapId") List<Integer> listRanapId);
|
@Param("listRanapId") List<Integer> listRanapId);
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "select distinct pp.norec " + "from pelayananpasien_t pp "
|
||||||
|
+ "inner join pelayananpasienpetugas_t ppp on pp.norec = ppp.pelayananpasien "
|
||||||
|
+ "inner join mappegawaijabatantounitkerja_m mj on ppp.objectpegawaifk = mj.objectpegawaifk "
|
||||||
|
+ "where ppp.objectpegawaifk = :pegawaiId " + "and pp.tglpelayanan between :tglAwal and :tglAkhir "
|
||||||
|
+ "and mj.statusenabled = true " + "and ppp.objectjenispetugaspefk in (:listJenisPetugasPelaksanaId)")
|
||||||
|
List<String> findIdPelayananByDokter(@Param("pegawaiId") Integer idPegawai, @Param("tglAwal") Date tglAwal,
|
||||||
|
@Param("tglAkhir") Date tglAkhir,
|
||||||
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana);
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "select pp.norec " + "from pelayananpasien_t pp "
|
||||||
|
+ "inner join pelayananpasienpetugas_t ppp on pp.norec = ppp.pelayananpasien "
|
||||||
|
+ "inner join mappegawaijabatantounitkerja_m mj on ppp.objectpegawaifk = mj.objectpegawaifk "
|
||||||
|
+ "where pp.tglpelayanan between :tglAwal and :tglAkhir " + "and mj.statusenabled = true "
|
||||||
|
+ "and mj.objectunitkerjapegawaifk in (:listKsmId) "
|
||||||
|
+ "and ppp.objectjenispetugaspefk in (:listJenisPetugasPelaksanaId) "
|
||||||
|
+ "group by pp.norec having count(pp.norec) > 1")
|
||||||
|
List<String> findIdPelayananByKsm(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
||||||
|
@Param("listKsmId") List<Integer> listIdKsm,
|
||||||
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana);
|
||||||
|
|
||||||
|
@Query("select distinct new com.jasamedika.medifirst2000.dto.PelayananDokterBedahDto("
|
||||||
|
+ "pp.noRec as noRec,pp.produkId as idProduk,"
|
||||||
|
+ "ppp.ObjectPegawaiId as idPegawai,ppp.ObjectJenisPetugasPeId as idJenisPetugasPelaksana) "
|
||||||
|
+ "from PelayananPasienPetugas ppp, MapPegawaiJabatanToUnitKerja mj " + "inner join ppp.pelayananPasien pp "
|
||||||
|
+ "inner join mj.pegawai pg " + "where mj.statusEnabled is true "
|
||||||
|
+ "and ppp.ObjectPegawaiId = mj.pegawaiId " + "and ppp.ObjectPegawaiId = pg.id "
|
||||||
|
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir " + "and mj.unitKerjaPegawaiId in (:listKsmId) "
|
||||||
|
+ "and ppp.ObjectJenisPetugasPeId in (:listJenisPetugasPelaksanaId) "
|
||||||
|
+ "and pp.noRec in (:listPelayananIdByDokter) " + "and pp.noRec in (:listPelayananIdByKsm)")
|
||||||
|
List<PelayananDokterBedahDto> findPelayananBedah(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
||||||
|
@Param("listKsmId") List<Integer> listIdKsm,
|
||||||
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana,
|
||||||
|
@Param("listPelayananIdByDokter") List<String> listIdPelayananByDokter,
|
||||||
|
@Param("listPelayananIdByKsm") List<String> listIdPelayananByKsm);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,10 @@ package com.jasamedika.medifirst2000.service.impl;
|
|||||||
import com.jasamedika.medifirst2000.constants.Master;
|
import com.jasamedika.medifirst2000.constants.Master;
|
||||||
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
|
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
|
||||||
import com.jasamedika.medifirst2000.dao.*;
|
import com.jasamedika.medifirst2000.dao.*;
|
||||||
|
import com.jasamedika.medifirst2000.dto.PelayananDokterBedahDto;
|
||||||
import com.jasamedika.medifirst2000.dto.RemunHargaJasa;
|
import com.jasamedika.medifirst2000.dto.RemunHargaJasa;
|
||||||
import com.jasamedika.medifirst2000.entities.*;
|
import com.jasamedika.medifirst2000.entities.*;
|
||||||
|
import com.jasamedika.medifirst2000.entities.constant.StatusPersenBedah;
|
||||||
import com.jasamedika.medifirst2000.exception.ServiceVOException;
|
import com.jasamedika.medifirst2000.exception.ServiceVOException;
|
||||||
import com.jasamedika.medifirst2000.service.RemunerasiService;
|
import com.jasamedika.medifirst2000.service.RemunerasiService;
|
||||||
import com.jasamedika.medifirst2000.util.CommonUtil;
|
import com.jasamedika.medifirst2000.util.CommonUtil;
|
||||||
@ -37,7 +39,9 @@ import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*;
|
|||||||
import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI;
|
import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI;
|
||||||
import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*;
|
import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*;
|
||||||
import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*;
|
import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*;
|
||||||
|
import static com.jasamedika.medifirst2000.constants.Master.UnitKerja.KSM;
|
||||||
import static com.jasamedika.medifirst2000.constants.Master.UnitKerja.KSM_OBGYN;
|
import static com.jasamedika.medifirst2000.constants.Master.UnitKerja.KSM_OBGYN;
|
||||||
|
import static com.jasamedika.medifirst2000.entities.constant.StatusPersenBedah.*;
|
||||||
import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.PERAWAT;
|
import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.PERAWAT;
|
||||||
import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.TINDAKAN_UTAMA;
|
import static com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket.TINDAKAN_UTAMA;
|
||||||
|
|
||||||
@ -307,7 +311,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
* Mendapatkan persentase jasa
|
* Mendapatkan persentase jasa
|
||||||
*/
|
*/
|
||||||
double persenOperator = toDoubleSettingFix("persenRemunOperatorIBS", tglAkhir);
|
double persenOperator = toDoubleSettingFix("persenRemunOperatorIBS", tglAkhir);
|
||||||
double persenAsistenIBS = toDoubleSettingFix("persenRemunAsistenIBS", tglAkhir);
|
double persenAsisten = toDoubleSettingFix("persenRemunAsistenIBS", tglAkhir);
|
||||||
double persenAnestesi = toDoubleSettingFix("persenRemunAnestesiIBS", tglAkhir);
|
double persenAnestesi = toDoubleSettingFix("persenRemunAnestesiIBS", tglAkhir);
|
||||||
double persenRadiologi = toDoubleSettingFix("persenRemunRadiologi", tglAkhir);
|
double persenRadiologi = toDoubleSettingFix("persenRemunRadiologi", tglAkhir);
|
||||||
double persenLaboratorium = toDoubleSettingFix("persenRemunLaboratorium", tglAkhir);
|
double persenLaboratorium = toDoubleSettingFix("persenRemunLaboratorium", tglAkhir);
|
||||||
@ -324,6 +328,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
||||||
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
||||||
long millisTarif2024 = Long.parseLong(getSettingDataFixed("tmtTarif2024"));
|
long millisTarif2024 = Long.parseLong(getSettingDataFixed("tmtTarif2024"));
|
||||||
|
long millisPersenJasa2024 = Long.parseLong(getSettingDataFixed("tmtPersenJasa2024"));
|
||||||
/*
|
/*
|
||||||
* Persiapan filter logic remunerasi
|
* Persiapan filter logic remunerasi
|
||||||
*/
|
*/
|
||||||
@ -372,11 +377,26 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
* TMT Tarif baru tahun 2024
|
* TMT Tarif baru tahun 2024
|
||||||
*/
|
*/
|
||||||
Date tmtTarif2024 = new Date(millisTarif2024);
|
Date tmtTarif2024 = new Date(millisTarif2024);
|
||||||
|
/*
|
||||||
|
* TMT persentase jasa tahun 2024
|
||||||
|
*/
|
||||||
|
Date tmtPersenJasa2024 = new Date(millisPersenJasa2024);
|
||||||
/*
|
/*
|
||||||
* Mendapatkan data mentah pelayanan pasien
|
* Mendapatkan data mentah pelayanan pasien
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai,
|
List<Map<String, Object>> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai,
|
||||||
tglAwal, tglAkhir, idsKarcis);
|
tglAwal, tglAkhir, idsKarcis);
|
||||||
|
/*
|
||||||
|
* Filtering tools: pelayanan bedah
|
||||||
|
*/
|
||||||
|
List<Integer> dokterAndAsisten = Arrays.asList(DOKTER_PEMERIKSA_AND_ASISTEN);
|
||||||
|
List<Integer> listKsm = Arrays.asList(KSM);
|
||||||
|
List<String> idPelayananByDokter = pelayananPasienDao.findIdPelayananByDokter(idPegawai, tglAwal, tglAkhir,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<String> idPelayananByKsm = pelayananPasienDao.findIdPelayananByKsm(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<PelayananDokterBedahDto> pelayananBedah = pelayananPasienDao.findPelayananBedah(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten, idPelayananByDokter, idPelayananByKsm);
|
||||||
/*
|
/*
|
||||||
* Pemisahan produk kepala paket untuk fixed pay
|
* Pemisahan produk kepala paket untuk fixed pay
|
||||||
*/
|
*/
|
||||||
@ -410,6 +430,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(DOKTER_LUAR)).contains(idPegawai))
|
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(DOKTER_LUAR)).contains(idPegawai))
|
||||||
persenVisite = persenRemunVisiteDokterKelompokBudiRahmat;
|
persenVisite = persenRemunVisiteDokterKelompokBudiRahmat;
|
||||||
for (Map<String, Object> d : listRatedPay) {
|
for (Map<String, Object> d : listRatedPay) {
|
||||||
|
double persenOperatorAkumulatif = persenOperator;
|
||||||
|
StatusPersenBedah statusPersenBedah = decidePercentBedah(pelayananBedah, d);
|
||||||
|
if (CommonUtil.isNotNullOrEmpty(statusPersenBedah) && FULL_OPERATOR.equals(statusPersenBedah)
|
||||||
|
&& (tglAwal.equals(tmtPersenJasa2024) || tglAwal.after(tmtPersenJasa2024)))
|
||||||
|
persenOperatorAkumulatif += persenAsisten;
|
||||||
if (paketBukanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString())))
|
if (paketBukanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString())))
|
||||||
d.put("hargaJual", d.get("komponenTotalTarif"));
|
d.put("hargaJual", d.get("komponenTotalTarif"));
|
||||||
d.put("isTermasukProporsi", true);
|
d.put("isTermasukProporsi", true);
|
||||||
@ -427,7 +452,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
||||||
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
||||||
double persenJasa = persenOperator / 100;
|
double persenJasa = persenOperatorAkumulatif / 100;
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -435,7 +460,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
||||||
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
double persenJasa = persenAsistenIBS / 100;
|
double persenJasa = persenAsisten / 100;
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -450,14 +475,14 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -470,12 +495,12 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100, hargaJual, d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100, hargaJual, d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
@ -2190,9 +2215,10 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
/*
|
/*
|
||||||
* Mendapatkan persentase jasa
|
* Mendapatkan persentase jasa
|
||||||
*/
|
*/
|
||||||
Date tglAkhir = DateUtil.endMonth(bulan);
|
Date tglAwal = DateUtil.startMonth(date);
|
||||||
|
Date tglAkhir = DateUtil.endMonth(date);
|
||||||
double persenOperator = toDoubleSettingFix("persenRemunOperatorIBS", tglAkhir);
|
double persenOperator = toDoubleSettingFix("persenRemunOperatorIBS", tglAkhir);
|
||||||
double persenAsistenIBS = toDoubleSettingFix("persenRemunAsistenIBS", tglAkhir);
|
double persenAsisten = toDoubleSettingFix("persenRemunAsistenIBS", tglAkhir);
|
||||||
double persenAnestesi = toDoubleSettingFix("persenRemunAnestesiIBS", tglAkhir);
|
double persenAnestesi = toDoubleSettingFix("persenRemunAnestesiIBS", tglAkhir);
|
||||||
double persenRadiologi = toDoubleSettingFix("persenRemunRadiologi", tglAkhir);
|
double persenRadiologi = toDoubleSettingFix("persenRemunRadiologi", tglAkhir);
|
||||||
double persenLaboratorium = toDoubleSettingFix("persenRemunLaboratorium", tglAkhir);
|
double persenLaboratorium = toDoubleSettingFix("persenRemunLaboratorium", tglAkhir);
|
||||||
@ -2208,6 +2234,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
||||||
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
||||||
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
||||||
|
long millisPersenJasa2024 = Long.parseLong(getSettingDataFixed("tmtPersenJasa2024"));
|
||||||
|
/*
|
||||||
|
* TMT persentase jasa tahun 2024
|
||||||
|
*/
|
||||||
|
Date tmtPersenJasa2024 = new Date(millisPersenJasa2024);
|
||||||
/*
|
/*
|
||||||
* Persiapan filter logic remunerasi
|
* Persiapan filter logic remunerasi
|
||||||
*/
|
*/
|
||||||
@ -2219,6 +2250,17 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
List<Integer> idsLabGenetikaLuarRuangan = toListIntegerSettingFix("idProdukLabGenetikaLuarRuangan", tglAkhir);
|
List<Integer> idsLabGenetikaLuarRuangan = toListIntegerSettingFix("idProdukLabGenetikaLuarRuangan", tglAkhir);
|
||||||
List<Integer> listIdPegawaiRemunKelompokBudiRahmat = splitDataSettingDatafixed(
|
List<Integer> listIdPegawaiRemunKelompokBudiRahmat = splitDataSettingDatafixed(
|
||||||
"listIdPegawaiRemunKelompokBudiRahmat");
|
"listIdPegawaiRemunKelompokBudiRahmat");
|
||||||
|
/*
|
||||||
|
* Filtering tools: pelayanan bedah
|
||||||
|
*/
|
||||||
|
List<Integer> dokterAndAsisten = Arrays.asList(DOKTER_PEMERIKSA_AND_ASISTEN);
|
||||||
|
List<Integer> listKsm = Arrays.asList(KSM);
|
||||||
|
List<String> idPelayananByDokter = pelayananPasienDao.findIdPelayananByDokter(idPegawai, tglAwal, tglAkhir,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<String> idPelayananByKsm = pelayananPasienDao.findIdPelayananByKsm(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<PelayananDokterBedahDto> pelayananBedah = pelayananPasienDao.findPelayananBedah(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten, idPelayananByDokter, idPelayananByKsm);
|
||||||
/*
|
/*
|
||||||
* Set persen jasa dan harga jasa pasien bpjs di ibs, icu
|
* Set persen jasa dan harga jasa pasien bpjs di ibs, icu
|
||||||
*/
|
*/
|
||||||
@ -2231,6 +2273,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
&& listIdPegawaiRemunKelompokBudiRahmat.contains(idPegawai))
|
&& listIdPegawaiRemunKelompokBudiRahmat.contains(idPegawai))
|
||||||
persenVisite = persenRemunVisiteDokterKelompokBudiRahmat;
|
persenVisite = persenRemunVisiteDokterKelompokBudiRahmat;
|
||||||
for (Map<String, Object> d : listData) {
|
for (Map<String, Object> d : listData) {
|
||||||
|
double persenOperatorAkumulatif = persenOperator;
|
||||||
|
StatusPersenBedah statusPersenBedah = decidePercentBedah(pelayananBedah, d);
|
||||||
|
if (CommonUtil.isNotNullOrEmpty(statusPersenBedah) && FULL_OPERATOR.equals(statusPersenBedah)
|
||||||
|
&& (tglAwal.equals(tmtPersenJasa2024) || tglAwal.after(tmtPersenJasa2024)))
|
||||||
|
persenOperatorAkumulatif += persenAsisten;
|
||||||
double hargaJual = Double.parseDouble(d.get("hargaJual").toString());
|
double hargaJual = Double.parseDouble(d.get("hargaJual").toString());
|
||||||
if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d);
|
||||||
@ -2247,9 +2294,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
||||||
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
||||||
double persenJasa = persenOperator / 100;
|
double persenJasa = persenOperatorAkumulatif / 100;
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("persenJasa", persenOperator + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -2257,9 +2304,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
&& CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
||||||
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
double persenJasa = persenAsistenIBS / 100;
|
double persenJasa = persenAsisten / 100;
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("persenJasa", persenAsistenIBS + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -2276,18 +2323,18 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("persenJasa", persenOperator + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("persenJasa", persenAsistenIBS + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -2302,15 +2349,15 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100, hargaJual, d);
|
||||||
d.put("persenJasa", persenOperator + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100, hargaJual, d);
|
||||||
d.put("persenJasa", persenAsistenIBS + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -2568,10 +2615,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
/*
|
/*
|
||||||
* Mendapatkan persentase jasa
|
* Mendapatkan persentase jasa
|
||||||
*/
|
*/
|
||||||
Date tglAkhir = DateUtil.endMonth(bulan);
|
Date tglAwal = DateUtil.startMonth(date);
|
||||||
|
Date tglAkhir = DateUtil.endMonth(date);
|
||||||
double persenBPJS = toDoubleSettingFix("persenJasaBPJS", tglAkhir);
|
double persenBPJS = toDoubleSettingFix("persenJasaBPJS", tglAkhir);
|
||||||
double persenOperator = toDoubleSettingFix("persenJasaOperatorIBS", tglAkhir);
|
double persenOperator = toDoubleSettingFix("persenJasaOperatorIBS", tglAkhir);
|
||||||
double persenAsistenIBS = toDoubleSettingFix("persenJasaAsistenIBS", tglAkhir);
|
double persenAsisten = toDoubleSettingFix("persenJasaAsistenIBS", tglAkhir);
|
||||||
double persenAnestesi = toDoubleSettingFix("persenJasaAnestesiIBS", tglAkhir);
|
double persenAnestesi = toDoubleSettingFix("persenJasaAnestesiIBS", tglAkhir);
|
||||||
double persenRadiologi = toDoubleSettingFix("persenJasaRadiologi", tglAkhir);
|
double persenRadiologi = toDoubleSettingFix("persenJasaRadiologi", tglAkhir);
|
||||||
double persenLaboratorium = toDoubleSettingFix("persenJasaLaboratorium", tglAkhir);
|
double persenLaboratorium = toDoubleSettingFix("persenJasaLaboratorium", tglAkhir);
|
||||||
@ -2595,10 +2643,31 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
List<Integer> drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI);
|
List<Integer> drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI);
|
||||||
List<Integer> terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI));
|
List<Integer> terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI));
|
||||||
List<Integer> idsLabGenetikaLuarRuangan = toListIntegerSettingFix("idProdukLabGenetikaLuarRuangan", tglAkhir);
|
List<Integer> idsLabGenetikaLuarRuangan = toListIntegerSettingFix("idProdukLabGenetikaLuarRuangan", tglAkhir);
|
||||||
|
/*
|
||||||
|
* TMT persentase jasa tahun 2024
|
||||||
|
*/
|
||||||
|
long millisPersenJasa2024 = Long.parseLong(getSettingDataFixed("tmtPersenJasa2024"));
|
||||||
|
Date tmtPersenJasa2024 = new Date(millisPersenJasa2024);
|
||||||
|
/*
|
||||||
|
* Filtering tools: pelayanan bedah
|
||||||
|
*/
|
||||||
|
List<Integer> dokterAndAsisten = Arrays.asList(DOKTER_PEMERIKSA_AND_ASISTEN);
|
||||||
|
List<Integer> listKsm = Arrays.asList(KSM);
|
||||||
|
List<String> idPelayananByDokter = pelayananPasienDao.findIdPelayananByDokter(idPegawai, tglAwal, tglAkhir,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<String> idPelayananByKsm = pelayananPasienDao.findIdPelayananByKsm(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten);
|
||||||
|
List<PelayananDokterBedahDto> pelayananBedah = pelayananPasienDao.findPelayananBedah(tglAwal, tglAkhir, listKsm,
|
||||||
|
dokterAndAsisten, idPelayananByDokter, idPelayananByKsm);
|
||||||
/*
|
/*
|
||||||
* Mapping persentase jasa remunerasi
|
* Mapping persentase jasa remunerasi
|
||||||
*/
|
*/
|
||||||
for (Map<String, Object> d : listData) {
|
for (Map<String, Object> d : listData) {
|
||||||
|
double persenOperatorAkumulatif = persenOperator;
|
||||||
|
StatusPersenBedah statusPersenBedah = decidePercentBedah(pelayananBedah, d);
|
||||||
|
if (CommonUtil.isNotNullOrEmpty(statusPersenBedah) && FULL_OPERATOR.equals(statusPersenBedah)
|
||||||
|
&& (tglAwal.equals(tmtPersenJasa2024) || tglAwal.after(tmtPersenJasa2024)))
|
||||||
|
persenOperatorAkumulatif += persenAsisten;
|
||||||
double hargaJual = Double.parseDouble(d.get("hargaJual").toString());
|
double hargaJual = Double.parseDouble(d.get("hargaJual").toString());
|
||||||
if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
|
||||||
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) {
|
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) {
|
||||||
@ -2636,18 +2705,18 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("persenJasa", persenOperator + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
|
||||||
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
&& CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100,
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100,
|
||||||
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d);
|
||||||
d.put("persenJasa", persenAsistenIBS + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -2662,15 +2731,15 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenOperatorAkumulatif / 100, hargaJual, d);
|
||||||
d.put("persenJasa", persenOperator + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
|
||||||
RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d);
|
RemunHargaJasa hargaJasa = hargaJasa(persenAsisten / 100, hargaJual, d);
|
||||||
d.put("persenJasa", persenAsistenIBS + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", hargaJasa.getKeterangan());
|
d.put("keterangan", hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
@ -3635,4 +3704,29 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private StatusPersenBedah decidePercentBedah(List<PelayananDokterBedahDto> dtoList, Map<String, Object> data) {
|
||||||
|
String noRec = data.get("idPelayananPasien").toString();
|
||||||
|
int idJenisPetugasPelaksana = Integer.parseInt(data.get("idJenisPelaksana").toString());
|
||||||
|
if (DOKTER_PEMERIKSA.equals(idJenisPetugasPelaksana)) {
|
||||||
|
Optional<PelayananDokterBedahDto> first = dtoList.stream().filter(
|
||||||
|
dto -> noRec.equals(dto.getNoRec()) && ASISTEN_SPESIALIS.equals(dto.getIdJenisPetugasPelaksana()))
|
||||||
|
.findFirst();
|
||||||
|
if (first.isPresent()) {
|
||||||
|
return OPERATOR_ONLY;
|
||||||
|
} else {
|
||||||
|
return FULL_OPERATOR;
|
||||||
|
}
|
||||||
|
} else if (ASISTEN_SPESIALIS.equals(idJenisPetugasPelaksana)) {
|
||||||
|
Optional<PelayananDokterBedahDto> first = dtoList.stream().filter(
|
||||||
|
dto -> noRec.equals(dto.getNoRec()) && DOKTER_PEMERIKSA.equals(dto.getIdJenisPetugasPelaksana()))
|
||||||
|
.findFirst();
|
||||||
|
if (first.isPresent()) {
|
||||||
|
return ASISTEN_ONLY;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.jasamedika.medifirst2000.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Salman
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 3/6/2025
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PelayananDokterBedahDto {
|
||||||
|
|
||||||
|
private String noRec;
|
||||||
|
|
||||||
|
private Integer idProduk;
|
||||||
|
|
||||||
|
private Integer idPegawai;
|
||||||
|
|
||||||
|
private Integer idJenisPetugasPelaksana;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
package com.jasamedika.medifirst2000.entities.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Salman
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 3/6/2025
|
||||||
|
*/
|
||||||
|
public enum StatusPersenBedah {
|
||||||
|
|
||||||
|
FULL_OPERATOR, OPERATOR_ONLY, ASISTEN_ONLY
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user