diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index f86b7e71..a9609be9 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -326,6 +326,7 @@ public final class Master { public static final Integer[] RAJAL = { 8, 9, 18 }; public static final Integer[] REHAB_MEDIK = { 2, 3, 4, 5 }; public static final Integer[] REKAM_MEDIK = { 15 }; + public static final Integer[] TERAPI = { 2, 3, 4 }; } public static final class Remunerasi { diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapJabatanProfesiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapJabatanProfesiDao.java index 1b6ac372..8f7f04b4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapJabatanProfesiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapJabatanProfesiDao.java @@ -1,22 +1,19 @@ package com.jasamedika.medifirst2000.dao; +import com.jasamedika.medifirst2000.entities.MapJabatanProfesi; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + import java.util.List; import java.util.Map; import java.util.Optional; -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.MapJabatanProfesi; - /** * @author salmanoe * @since Dec 31, 2021 */ -@Repository("mapProfesiJabatanDao") -public interface MapJabatanProfesiDao extends PagingAndSortingRepository { +public interface MapJabatanProfesiDao extends JpaRepository { @Query("select new Map(mjp.id as id," + "prf.id as profesiId,prf.namaProfesi as profesi," + "jb.id as jabatanId,(jb.id || ' - ' ||jb.namaJabatan) as jabatan) " + "from MapJabatanProfesi mjp " @@ -27,4 +24,11 @@ public interface MapJabatanProfesiDao extends PagingAndSortingRepository findByJabatan(@Param("jabatanId") Integer idJabatan); + @Query("select distinct mjj.pegawaiId " + + "from MapJabatanProfesi mjp, MapPegawaiJabatanToUnitKerja mjj " + + "where mjp.jabatanId = mjj.jabatanId " + + "and mjp.statusEnabled is true " + + "and mjj.statusEnabled is true " + + "and mjp.profesiId in (:listProfesiId)") + List findIdPegawaiByProfesiIn(@Param("listProfesiId") List listIdProfesi); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java index 7b54d9f9..0a7c738b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProfesiDao.java @@ -1,24 +1,21 @@ package com.jasamedika.medifirst2000.dao; +import com.jasamedika.medifirst2000.entities.Profesi; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + 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.Profesi; - /** * @author salmanoe * @since Oct 8, 2021 */ -@Repository("profesiDao") -public interface ProfesiDao extends PagingAndSortingRepository { +public interface ProfesiDao extends JpaRepository { @Query("select prf from Profesi prf where prf.statusEnabled is true order by prf.namaProfesi asc") - public List findAllActive(); + List findAllActive(); String strAllActive = "select new Map(prf.id as id,prf.namaProfesi as namaProfesi) from Profesi prf where prf.statusEnabled is true"; @@ -27,10 +24,10 @@ public interface ProfesiDao extends PagingAndSortingRepository String srtNama = " order by prf.namaProfesi"; @Query(strAllActive + srtNama) - public List> findByStatus(); + List> findByStatus(); @Query(strAllActive + whrJenis + srtNama) - public List> findByStatus(@Param("jenisId") Short idJenis); + List> findByStatus(@Param("jenisId") Short idJenis); String strAllJabatanActive = "select new Map(prf.id as id,prf.namaProfesi as namaProfesi) " + "from MapPegawaiJabatanToUnitKerja mj, MapJabatanProfesi mjp " + "inner join mjp.profesi prf " @@ -39,10 +36,9 @@ public interface ProfesiDao extends PagingAndSortingRepository String whrPegawai = " and mj.pegawaiId = :pegawaiId"; @Query(strAllJabatanActive + whrPegawai + srtNama) - public List> findByStatus(@Param("pegawaiId") Integer idPegawai); + List> findByStatus(@Param("pegawaiId") Integer idPegawai); @Query(strAllJabatanActive + whrPegawai + whrJenis + srtNama) - public List> findByStatus(@Param("pegawaiId") Integer idPegawai, - @Param("jenisId") Short idJenis); - + List> findByStatus(@Param("pegawaiId") Integer idPegawai, + @Param("jenisId") Short idJenis); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapJabatanProfesiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapJabatanProfesiService.java index ef77eb45..3c993819 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapJabatanProfesiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapJabatanProfesiService.java @@ -1,12 +1,11 @@ package com.jasamedika.medifirst2000.service; -import java.util.List; -import java.util.Map; - -import org.springframework.orm.jpa.JpaSystemException; - import com.jasamedika.medifirst2000.entities.MapJabatanProfesi; import com.jasamedika.medifirst2000.vo.MapJabatanProfesiVO; +import org.springframework.orm.jpa.JpaSystemException; + +import java.util.List; +import java.util.Map; /** * @author salmanoe @@ -14,6 +13,5 @@ import com.jasamedika.medifirst2000.vo.MapJabatanProfesiVO; */ public interface MapJabatanProfesiService extends BaseVoService { - public List> findMapping() throws JpaSystemException; - + List> findMapping() throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java index 3650e1a5..10093bbb 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java @@ -28,6 +28,8 @@ public interface PelayananPasienService { List> logbookFfsTarifDokter(Integer idPegawai, String bulan); + List> logbookFfsLuarTarifDokter(Integer idPegawai, String bulan); + List> logbookKlaimMppDokter(Integer idPegawai, String bulan); List> logbookFixedPayDokter(Integer idPegawai, String bulan); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java index 1673f7b3..d01867e0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProfesiService.java @@ -1,12 +1,11 @@ package com.jasamedika.medifirst2000.service; -import java.util.List; -import java.util.Map; - -import org.springframework.orm.jpa.JpaSystemException; - import com.jasamedika.medifirst2000.entities.Profesi; import com.jasamedika.medifirst2000.vo.ProfesiVO; +import org.springframework.orm.jpa.JpaSystemException; + +import java.util.List; +import java.util.Map; /** * @author salmanoe @@ -14,8 +13,7 @@ import com.jasamedika.medifirst2000.vo.ProfesiVO; */ public interface ProfesiService extends BaseVoService { - public List findAllActive() throws JpaSystemException; + List findAllActive() throws JpaSystemException; - public List> findByStatus(Integer idPegawai, Short idJenis) throws JpaSystemException; - + List> findByStatus(Integer idPegawai, Short idJenis) throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapJabatanProfesiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapJabatanProfesiServiceImpl.java index 87e2d72f..f32e15d9 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapJabatanProfesiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapJabatanProfesiServiceImpl.java @@ -1,14 +1,5 @@ package com.jasamedika.medifirst2000.service.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -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.MapJabatanProfesiDao; import com.jasamedika.medifirst2000.entities.Jabatan; @@ -20,6 +11,14 @@ import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.JabatanVO; import com.jasamedika.medifirst2000.vo.MapJabatanProfesiVO; import com.jasamedika.medifirst2000.vo.ProfesiVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; /** * @author salmanoe @@ -100,7 +99,7 @@ public class MapJabatanProfesiServiceImpl extends BaseVoServiceImpl implements M @Override public List findAll() throws JpaSystemException { - List result = new ArrayList(); + List result = new ArrayList<>(); Iterable models = mapJabatanProfesiDao.findAll(); if (CommonUtil.isNotNullOrEmpty(models)) { @@ -123,9 +122,7 @@ public class MapJabatanProfesiServiceImpl extends BaseVoServiceImpl implements M @Override public List> findMapping() throws JpaSystemException { - List> result = mapJabatanProfesiDao.findMapping(); - - return result; + return mapJabatanProfesiDao.findMapping(); } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 4684ebf4..095e16e4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -44,6 +44,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Kelas.NON_KELAS; import static com.jasamedika.medifirst2000.constants.Master.KelompokPasien.KELOMPOK_BPJS; import static com.jasamedika.medifirst2000.constants.Master.KelompokUser.TATA_REKENING; import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*; +import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI; import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*; import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*; import static com.jasamedika.medifirst2000.constants.Master.TipePegawai.PURNA_WAKTU; @@ -150,6 +151,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private PasienDao pasienDao; + @Autowired + private MapJabatanProfesiDao mapJabatanProfesiDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -520,6 +524,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel double persenRemunDokterPA = Double.parseDouble(GetSettingDataFixed("persenRemunDokterPA")); double persenRemunDokterUmumHD = Double.parseDouble(GetSettingDataFixed("persenRemunDokterUmumHD")); double persenRemunLabGenetika = Double.parseDouble(GetSettingDataFixed("persenRemunLabGenetika")); + double persenRemunTerapis = Double.parseDouble(GetSettingDataFixed("persenRemunTerapis")); /* * Persiapan filter logic remunerasi */ @@ -533,6 +538,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); List drKkRadiologi = pegawaiDao.getDokterByKelompokKerja(KK_RADIOLOGI); List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); List idsRegDJPAdminNonPK = splitDataSettingDatafixed("admin_nonpk"); List idsRegDJPMedisUtama = splitDataSettingDatafixed("medis_utama"); List idsRegDJPPenunjangPA = splitDataSettingDatafixed("penunjang_pa"); @@ -675,6 +681,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); + } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) + && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunTerapis / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); + if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) + d.put("isTermasukProporsi", false); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, false); d.put("hargaJasa", hargaJasa.getNilai()); @@ -1078,6 +1090,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel if (tglPelayanan.isEqual(tglMasuk) && (tglJamMasuk.isBefore(tglJamPelayanan) || tglJamMasuk.isEqual(tglJamPelayanan)) && (tglJamPelayanan.isEqual(tglJamPulang) || tglJamPelayanan.isBefore(tglJamPulang))) { + d.put("isJamKerja", true); listDataJamKerja.add(d); break; } @@ -1104,6 +1117,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .contains(Integer.parseInt(d.get("idKelompokPasien").toString())))) if (CommonUtil.isNullOrEmpty(j.get("jamMasuk"))) { if (tglPelayanan.isEqual(tglMasuk)) { + d.put("isJamKerja", false); + if ("Reguler".equals(d.get("jenisRuangan").toString())) + d.put("isJamKerja", true); listDataLuarJamKerja.add(d); break; } @@ -1114,6 +1130,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel LocalDateTime tglJamPulang = LocalDateTime.of(tglMasuk, jamPulang); if ((tglPelayanan.isEqual(tglMasuk) && tglJamPelayanan.isBefore(tglJamMasuk)) || (tglPelayanan.isEqual(tglMasuk) && tglJamPelayanan.isAfter(tglJamPulang))) { + d.put("isJamKerja", false); + if ("Reguler".equals(d.get("jenisRuangan").toString())) + d.put("isJamKerja", true); listDataLuarJamKerja.add(d); break; } @@ -1123,6 +1142,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Tanggal pelayanan null akan dianggap sebagai luar jam kerja */ + d.put("isJamKerja", false); + if ("Reguler".equals(d.get("jenisRuangan").toString())) + d.put("isJamKerja", true); listDataLuarJamKerja.add(d); } } @@ -1138,6 +1160,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel */ List> listPelayananRemun = new ArrayList<>(); List> listPelayananFfs = new ArrayList<>(); + List> listPelayananNonJknLuarJamKerja = new ArrayList<>(); double capaianRemun = 0.0; if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(DOKTER_LUAR)).contains(idPegawai)) { /* @@ -1151,11 +1174,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * dokter-dokter tertentu yang hanya dapat pasien bpjs */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) && !Arrays.asList(NONLOGBOOK) .contains(Integer.parseInt(next.get("idJenisProduk").toString())))) { - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } } else { for (Map next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll()) @@ -1413,7 +1444,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Dibatasi oleh daftar tindakan tertentu */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if ((CommonUtil.isNotNullOrEmpty(next.get("idDepartemen")) && Arrays.asList(GRUP_RAWAT_JALAN_UTAMA) .contains(Integer.parseInt(next.get("idDepartemen").toString()))) @@ -1425,11 +1460,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Dibatasi hanya di rawat jalan atau visite saja */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } } else if (drKkRadiologi.contains(idPegawai) && (BEDAH_SENTRAL.equals(next.get("idDepartemen")) || CATHLAB.equals(next.get("idRuangan")))) { - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else { /* * Selain dokter-dokter kk pediatrik gawat darurat @@ -1447,12 +1490,20 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengecualian daftar tindakan penunjang yang * bebas klaim */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) && !Arrays.asList(NONLOGBOOK).contains( Integer.parseInt(next.get("idJenisProduk").toString())))) { - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } } else if ((CommonUtil.isNullOrEmpty(next.get("idDetailJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) @@ -1463,7 +1514,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel /* * Aturan dokter ksm umum di igd */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if ((CommonUtil.isNullOrEmpty(next.get("idDetailJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) && !listDetailJenisProduk.contains( @@ -1474,17 +1529,29 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Aturan dokter kk perinatologi dengan pembatasan * tindakan tertentu */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if (drAnastesiList.contains(idPegawai)) { if (idsPenunjangBukanAnestesi.contains(Integer.parseInt(next.get("idProduk").toString()))) { /* * Aturan dokter kk anestesi dengan pembatasan * tindakan tertentu */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if (RADIOLOGI.equals(next.get("idDepartemen")) && DOKTER_PEMERIKSA.equals(next.get("idJenisPelaksana"))) { - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) @@ -1501,12 +1568,20 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel * Pengecualian daftar tindakan penunjang yang * bebas klaim */ - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } else if (CommonUtil.isNullOrEmpty(next.get("idJenisProduk")) || (CommonUtil.isNotNullOrEmpty(next.get("idJenisProduk")) && !Arrays.asList(NONLOGBOOK).contains( Integer.parseInt(next.get("idJenisProduk").toString())))) { - listPelayananFfs.add(next); + if (Boolean.parseBoolean(next.get("isJamKerja").toString())) { + listPelayananFfs.add(next); + } else { + listPelayananNonJknLuarJamKerja.add(next); + } } } } @@ -1514,7 +1589,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } { /* - * Sorting data remun diurutkan + * Sorting data remun jkn diurutkan */ listPelayananRemun = listPelayananRemun.stream() .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"), @@ -1533,7 +1608,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } { /* - * Sorting data ffs diurutkan + * Sorting data remun non-jkn di dalam jam kerja diurutkan */ listPelayananFfs = listPelayananFfs.stream() .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"), @@ -1545,6 +1620,20 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList()); result.put("ffs", listPelayananFfs); } + { + /* + * Sorting data remun non-jkn di luar jam kerja diurutkan + */ + listPelayananNonJknLuarJamKerja = listPelayananNonJknLuarJamKerja.stream() + .sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelompokPasien").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o -> Integer.parseInt(o.get("sortIdKelas").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList()); + result.put("ffs-luar", listPelayananNonJknLuarJamKerja); + } { /* * Sorting data klaim mpp diurutkan @@ -1566,6 +1655,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel if (CommonUtil.isNotNullOrEmpty(listKecantikanFixedPay)) listPelayananFixedPay.addAll(setKecantikanFixedPay(listKecantikanFixedPay)); result.put("fixed-pay", listPelayananFixedPay); + if (terapisRehabMedik.contains(idPegawai)) + result.put("fixed-pay", new ArrayList<>()); } return result; } @@ -1932,6 +2023,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel double persenRemunDokterPA = Double.parseDouble(GetSettingDataFixed("persenRemunDokterPA")); double persenRemunDokterUmumHD = Double.parseDouble(GetSettingDataFixed("persenRemunDokterUmumHD")); double persenRemunLabGenetika = Double.parseDouble(GetSettingDataFixed("persenRemunLabGenetika")); + double persenRemunTerapis = Double.parseDouble(GetSettingDataFixed("persenRemunTerapis")); /* * Persiapan filter logic remunerasi */ @@ -1939,6 +2031,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(KK_UMUM); List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); /* * Set persen jasa dan harga jasa pasien bpjs di ibs, icu @@ -2059,6 +2152,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel d.put("persenJasa", persenRadiologi + "%"); d.put("keterangan", hargaJasa.getKeterangan()); d.put("hargaJasa", hargaJasa.getNilai()); + } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) + && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunTerapis / 100, hargaJual, d, true); + d.put("persenJasa", persenRemunTerapis + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); @@ -2313,6 +2412,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel double persenJasaDokterPA = Double.parseDouble(GetSettingDataFixed("persenJasaDokterPA")); double persenJasaDokterUmumHD = Double.parseDouble(GetSettingDataFixed("persenJasaDokterUmumHD")); double persenJasaLabGenetika = Double.parseDouble(GetSettingDataFixed("persenJasaLabGenetika")); + double persenJasaTerapis = Double.parseDouble(GetSettingDataFixed("persenJasaTerapis")); /* * Persiapan filter logic remunerasi */ @@ -2320,6 +2420,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(KK_UMUM); List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); /* * Mapping persentase jasa remunerasi @@ -2416,6 +2517,275 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel d.put("persenJasa", persenRadiologi + "%"); d.put("keterangan", hargaJasa.getKeterangan()); d.put("hargaJasa", hargaJasa.getNilai()); + } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) + && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaTerapis + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); + d.put("persenJasa", persenRehabMedik + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); + d.put("persenJasa", persenKonsultasi + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); + d.put("persenJasa", persenVisite + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); + d.put("persenJasa", persenTindakan + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); + d.put("persenJasa", persenAnestesi + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (drKkGenetika.contains(idPegawai) + && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) + && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaLabGenetika + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaLabGenetika + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaDokterPA + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); + d.put("persenJasa", persenLaboratorium + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); + d.put("persenJasa", persenTindakan + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } + } + /* + * Populate data filter + */ + listData.forEach(d -> { + if (!listIdProduk.contains(Integer.parseInt(d.get("idProduk").toString()))) + listIdProduk.add(Integer.valueOf(d.get("idProduk").toString())); + if (!listPersenJasa.contains(d.get("persenJasa").toString())) + listPersenJasa.add(d.get("persenJasa").toString()); + if (!listHargaJasa.contains(Double.parseDouble(d.get("hargaJasa").toString()))) + listHargaJasa.add(Double.valueOf(d.get("hargaJasa").toString())); + if (!listHargaJual.contains(Double.parseDouble(d.get("hargaJual").toString()))) + listHargaJual.add(Double.valueOf(d.get("hargaJual").toString())); + if (!listIdKelompokPasien.contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) + listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString())); + if (!listTanggal.contains(d.get("tanggal").toString())) + listTanggal.add(d.get("tanggal").toString()); + if (!listJenisRuangan.contains(d.get("jenisRuangan").toString())) + listJenisRuangan.add(d.get("jenisRuangan").toString()); + }); + /* + * Pengelompokkan tanggal pelayanan + */ + List> dataTanggal = groupingTanggalFfs(listData); + /* + * Pengelompokkan produk layanan + */ + List> result = groupingKategoriFfs(dataTanggal); + /* + * Final sorting + */ + result = result.stream() + .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())) + .sorted(Comparator.comparing(o5 -> o5.get("jenisRuangan").toString(), Comparator.reverseOrder())) + .collect(Collectors.toList()); + result.forEach(r -> { + /* + * Hapus informasi tidak perlu + */ + r.remove("idDPJP"); + r.remove("tglPelayanan"); + r.remove("tanggal"); + r.remove("idKelas"); + r.remove("namaKelas"); + r.remove("idPelayananPasienPetugas"); + r.remove("idPelayananPasien"); + r.remove("norecs"); + r.remove("idDepartemen"); + r.remove("idPasienDaftar"); + r.remove("idPegawai"); + r.remove("idAntrianPasienDiperiksa"); + }); + return result; + } + + @Override + public List> logbookFfsLuarTarifDokter(Integer idPegawai, String bulan) { + List listIdProduk = new ArrayList<>(); + List listPersenJasa = new ArrayList<>(); + List listHargaJasa = new ArrayList<>(); + List listHargaJual = new ArrayList<>(); + List listIdKelompokPasien = new ArrayList<>(); + List listTanggal = new ArrayList<>(); + List listJenisRuangan = new ArrayList<>(); + DateFormat df = new SimpleDateFormat("yyyy-MM"); + Date date; + try { + date = df.parse(bulan); + } catch (ParseException e) { + System.out.println(e.getMessage()); + return null; + } + Locale indonesia = new Locale("in", "ID"); + NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); + Map remunFfs = this.splitRemunFfs(idPegawai, bulan); + @SuppressWarnings("unchecked") + List> listData = (List>) remunFfs.get("ffs-luar"); + /* + * Mendapatkan persentase jasa + */ + double persenBPJS = Double.parseDouble(GetSettingDataFixed("persenJasaBPJS")); + double persenOperator = Double.parseDouble(GetSettingDataFixed("persenJasaOperatorIBS")); + double persenAsistenIBS = Double.parseDouble(GetSettingDataFixed("persenJasaAsistenIBS")); + double persenAnestesi = Double.parseDouble(GetSettingDataFixed("persenJasaAnestesiIBS")); + double persenRadiologi = Double.parseDouble(GetSettingDataFixed("persenJasaRadiologi")); + double persenLaboratorium = Double.parseDouble(GetSettingDataFixed("persenJasaLaboratorium")); + double persenRehabMedik = Double.parseDouble(GetSettingDataFixed("persenJasaRehabMedik")); + double persenKonsultasi = Double.parseDouble(GetSettingDataFixed("persenJasaKonsultasiDokter")); + double persenVisite = Double.parseDouble(GetSettingDataFixed("persenJasaVisiteDokter")); + double persenTindakan = Double.parseDouble(GetSettingDataFixed("persenJasaTindakanDokter")); + double persenJasaDokterPA = Double.parseDouble(GetSettingDataFixed("persenJasaDokterPA")); + double persenJasaDokterUmumHD = Double.parseDouble(GetSettingDataFixed("persenJasaDokterUmumHD")); + double persenJasaLabGenetika = Double.parseDouble(GetSettingDataFixed("persenJasaLabGenetika")); + double persenJasaTerapis = Double.parseDouble(GetSettingDataFixed("persenJasaLuarTerapis")); + /* + * Persiapan filter logic remunerasi + */ + List drKkPatologiAnatomiList = pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_ANATOMI); + List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(KK_UMUM); + List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); + List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); + List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); + /* + * Mapping persentase jasa remunerasi + */ + for (Map d : listData) { + double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); + String keteranganTambahan = ""; + if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { + hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); + keteranganTambahan = " dan selisih paket karena diskon " + + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); + } + if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) + && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); + /* + * Set persen jasa dokter luar yang klaim ffs dengan persen jasa + * dari tarif total + */ + d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + /* + * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter + * tertentu + */ + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaDokterUmumHD + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) + && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("persenJasa", persenOperator + "%"); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) + && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("persenJasa", persenAsistenIBS + "%"); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) + && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("persenJasa", persenAnestesi + "%"); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); + d.put("persenJasa", persenOperator + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); + d.put("persenJasa", persenAsistenIBS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) + || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) + && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); + d.put("persenJasa", persenAnestesi + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); + d.put("persenJasa", persenRadiologi + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); + } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) + && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaTerapis + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); @@ -2667,6 +3037,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel double persenJasaDokterPA = Double.parseDouble(GetSettingDataFixed("persenJasaDokterPA")); double persenJasaDokterUmumHD = Double.parseDouble(GetSettingDataFixed("persenJasaDokterUmumHD")); double persenJasaLabGenetika = Double.parseDouble(GetSettingDataFixed("persenJasaLabGenetika")); + double persenJasaTerapis = Double.parseDouble(GetSettingDataFixed("persenJasaTerapis")); /* * Persiapan filter logic remunerasi */ @@ -2674,7 +3045,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List drKsmUmumList = pegawaiDao.getDokterByKelompokKerja(KK_UMUM); List drKkGenetika = pegawaiDao.getDokterByKelompokKerja(KK_GENETIKA); List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(KK_ANESTESI); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); + if (terapisRehabMedik.contains(idPegawai)) + return new ArrayList<>(); /* * Mapping persentase jasa remunerasi */ @@ -2770,6 +3144,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel d.put("persenJasa", persenRadiologi + "%"); d.put("keterangan", hargaJasa.getKeterangan()); d.put("hargaJasa", hargaJasa.getNilai()); + } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) + && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); + d.put("persenJasa", persenJasaTerapis + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); @@ -3002,8 +3382,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel for (Map res : result) { Optional detail = detailPelayananPaketBukanFixedPay.stream() .filter(d -> d.getPelayananPasienId().equals(res.get("idPelayanan"))).findFirst(); - detail.ifPresent( - d -> res.put("hargaJual", CommonUtil.isNotNullOrEmpty(d.getHargaJual()) ? d.getHargaJual() : 0.00)); + detail.ifPresent(d -> res.put("hargaJual", + CommonUtil.isNotNullOrEmpty(d.getHargaJual()) ? d.getHargaJual() : 0.00)); } } return result; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java index 2bd8b613..ee87bd4f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProfesiServiceImpl.java @@ -1,13 +1,5 @@ package com.jasamedika.medifirst2000.service.impl; -import java.util.ArrayList; -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.ProfesiDao; import com.jasamedika.medifirst2000.entities.Profesi; @@ -15,6 +7,13 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.ProfesiService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.ProfesiVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * @author salmanoe @@ -76,7 +75,7 @@ public class ProfesiServiceImpl extends BaseVoServiceImpl implements ProfesiServ @Override public List findAll() throws JpaSystemException { - List result = new ArrayList(); + List result = new ArrayList<>(); Iterable models = profesiDao.findAll(); if (CommonUtil.isNotNullOrEmpty(models)) { @@ -99,7 +98,7 @@ public class ProfesiServiceImpl extends BaseVoServiceImpl implements ProfesiServ @Override public List findAllActive() throws JpaSystemException { - List result = new ArrayList(); + List result = new ArrayList<>(); Iterable models = profesiDao.findAllActive(); if (CommonUtil.isNotNullOrEmpty(models)) { @@ -115,7 +114,7 @@ public class ProfesiServiceImpl extends BaseVoServiceImpl implements ProfesiServ @Override public List> findByStatus(Integer idPegawai, Short idJenis) throws JpaSystemException { - List> result = new ArrayList<>(); + List> result; if (CommonUtil.isNotNullOrEmpty(idJenis)) { result = profesiDao.findByStatus(idPegawai, idJenis); @@ -131,5 +130,4 @@ public class ProfesiServiceImpl extends BaseVoServiceImpl implements ProfesiServ return result; } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapJabatanProfesi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapJabatanProfesi.java index e67eadc2..4ed3bf79 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapJabatanProfesi.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapJabatanProfesi.java @@ -1,19 +1,14 @@ package com.jasamedika.medifirst2000.entities; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - import com.jasamedika.medifirst2000.base.BaseActive; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +import static javax.persistence.GenerationType.SEQUENCE; /** * @author salmanoe @@ -21,6 +16,8 @@ import com.jasamedika.medifirst2000.helper.Caption; */ @Entity @Table(name = "sdm_mapjabatanprofesi_m") +@Getter +@Setter public class MapJabatanProfesi extends BaseActive { private static final long serialVersionUID = 3888545942252692215L; @@ -44,49 +41,8 @@ public class MapJabatanProfesi extends BaseActive { private Integer profesiId; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.sdm_mapjabatanprofesi_m_seq_gen") + @GeneratedValue(strategy = SEQUENCE, generator = "public.sdm_mapjabatanprofesi_m_seq_gen") @SequenceGenerator(name = "public.sdm_mapjabatanprofesi_m_seq_gen", sequenceName = "public.sdm_mapjabatanprofesi_m_id_seq", allocationSize = 1) @Column(name = "id") protected Integer id; - - public Jabatan getJabatan() { - return jabatan; - } - - public void setJabatan(Jabatan jabatan) { - this.jabatan = jabatan; - } - - public Integer getJabatanId() { - return jabatanId; - } - - public void setJabatanId(Integer jabatanId) { - this.jabatanId = jabatanId; - } - - public Profesi getProfesi() { - return profesi; - } - - public void setProfesi(Profesi profesi) { - this.profesi = profesi; - } - - public Integer getProfesiId() { - return profesiId; - } - - public void setProfesiId(Integer profesiId) { - this.profesiId = profesiId; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java index b35b7e81..3100aa75 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Profesi.java @@ -1,19 +1,19 @@ package com.jasamedika.medifirst2000.entities; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - import com.jasamedika.medifirst2000.base.BaseActive; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +import static javax.persistence.GenerationType.SEQUENCE; @Entity @Table(name = "sdm_profesi_m") +@Getter +@Setter public class Profesi extends BaseActive { @NotNull(message = "Nama Profesi tidak boleh kosong") @@ -21,38 +21,13 @@ public class Profesi extends BaseActive { @Caption(value = "Nama Profesi") private String namaProfesi; - @Column(name = "jenisprofesi", nullable = true) + @Column(name = "jenisprofesi") @Caption(value = "Jenis Profesi") private Short jenisProfesi; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.sdm_profesi_m_id_seq") + @GeneratedValue(strategy = SEQUENCE, generator = "public.sdm_profesi_m_id_seq") @SequenceGenerator(name = "public.sdm_profesi_m_id_seq", sequenceName = "public.sdm_profesi_m_id_seq", allocationSize = 1) @Column(name = "id") protected Integer id; - - public String getNamaProfesi() { - return namaProfesi; - } - - public void setNamaProfesi(String namaProfesi) { - this.namaProfesi = namaProfesi; - } - - public Short getJenisProfesi() { - return jenisProfesi; - } - - public void setJenisProfesi(Short jenisProfesi) { - this.jenisProfesi = jenisProfesi; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapJabatanProfesiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapJabatanProfesiVO.java index 353b5a1f..6605d43d 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapJabatanProfesiVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapJabatanProfesiVO.java @@ -2,11 +2,15 @@ package com.jasamedika.medifirst2000.vo; import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; /** * @author salmanoe * @since Dec 31, 2021 */ +@Getter +@Setter public class MapJabatanProfesiVO extends BaseActiveVO { @Caption(value = "Jabatan") @@ -20,45 +24,4 @@ public class MapJabatanProfesiVO extends BaseActiveVO { private Integer profesiId; protected Integer id; - - public JabatanVO getJabatan() { - return jabatan; - } - - public void setJabatan(JabatanVO jabatan) { - this.jabatan = jabatan; - } - - public Integer getJabatanId() { - return jabatanId; - } - - public void setJabatanId(Integer jabatanId) { - this.jabatanId = jabatanId; - } - - public ProfesiVO getProfesi() { - return profesi; - } - - public void setProfesi(ProfesiVO profesi) { - this.profesi = profesi; - } - - public Integer getProfesiId() { - return profesiId; - } - - public void setProfesiId(Integer profesiId) { - this.profesiId = profesiId; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java index a36b82db..9e470d9b 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProfesiVO.java @@ -2,7 +2,11 @@ package com.jasamedika.medifirst2000.vo; import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class ProfesiVO extends BaseActiveVO { @Caption(value = "Nama Profesi") @@ -12,29 +16,4 @@ public class ProfesiVO extends BaseActiveVO { private Short jenisProfesi; protected Integer id; - - public String getNamaProfesi() { - return namaProfesi; - } - - public void setNamaProfesi(String namaProfesi) { - this.namaProfesi = namaProfesi; - } - - public Short getJenisProfesi() { - return jenisProfesi; - } - - public void setJenisProfesi(Short jenisProfesi) { - this.jenisProfesi = jenisProfesi; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 725d8705..a2d11a14 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -2668,6 +2668,27 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookFfsLuarTarifDokter(HttpServletRequest request, + @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { + try { + List> result = pelayananPasienService.logbookFfsLuarTarifDokter(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 ServiceVOException {} when get logbook ffs luar jam kerja 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 JpaSystemException {} when get logbook ffs luar jam kerja tarif dokter", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/dokter/logbook-tarif/klaim-mpp/{idPegawai}/{bulan}", method = RequestMethod.GET) public ResponseEntity>> getLogbookKlaimMpp(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) {