From b0ad2cbe00da6e3651b32d62fd1c01f30d35a021 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 21 Jan 2025 09:34:55 +0700 Subject: [PATCH 1/4] Update service logbook remunerasi Perubahan filter dokter rekap logbook menggunakan unit kerja ksm --- .../dao/MapPegawaiJabatanToUnitKerjaDao.java | 17 ++++---- .../medifirst2000/service/BaseVoService.java | 41 ++++++------------- .../service/impl/LogbookRemunServiceImpl.java | 20 ++++----- 3 files changed, 30 insertions(+), 48 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 6f3b6497..19bbc315 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -262,11 +262,11 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository> getMapSubunitKerjaMonitoringByKelompokJabatan(@Param("idUnitKerja") Integer idUnitKerja, - @Param("kelompokJabatanId") Integer IdKelompokJabatan); + @Param("kelompokJabatanId") Integer IdKelompokJabatan); @Query("select distinct mapp.pegawaiId from MapPegawaiJabatanToUnitKerja mapp " + "where mapp.statusEnabled is true and mapp.pegawaiId is not null and mapp.unitKerjaPegawaiId = :idUnitKerja") @@ -517,13 +517,14 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository findPegawaiIdByUnitKerjaIdAndJabatanId(@Param("unitKerjaId") List unitKerjaId, @Param("jabatanId") List jabatanId); - @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true " - + "and mj.subUnitKerjaPegawaiId in (:subUnitKerjaIdIn)") - Set findPegawaiIdBySubUnitKerjaIn(@Param("subUnitKerjaIdIn") List subUnitKerjaIdIn); - @Query(value = "select exists(select 1 from mappegawaijabatantounitkerja_m mj " + "where mj.statusenabled is true and mj.objectpegawaifk = :pegawaiId " + "and mj.objectjabatanfk in (:listJabatanId))", nativeQuery = true) boolean existsByPegawaiIdAndJabatanIdIn(@Param("pegawaiId") Integer idPegawai, @Param("listJabatanId") List idJabatanList); + + @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + + "and mj.unitKerjaPegawaiId in (:listUnitKerjaId) " + "and pg.jenisPegawaiId = 1") + Set findDokterByUnitKerja(@Param("listUnitKerjaId") List listIdUnitKerja); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java index ef25bef0..a3da7e05 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BaseVoService.java @@ -1,12 +1,11 @@ package com.jasamedika.medifirst2000.service; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import org.springframework.orm.jpa.JpaSystemException; + import java.util.List; import java.util.Map; -import org.springframework.orm.jpa.JpaSystemException; - -import com.jasamedika.medifirst2000.exception.ServiceVOException; - /** * View Object service * @@ -19,53 +18,39 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; * @author Roberto */ public interface BaseVoService { - + /** * Add model from VO - * - * @param vo - * @return */ - public V add(V vo) throws JpaSystemException, ServiceVOException; + V add(V vo) throws JpaSystemException, ServiceVOException; /** * Update model from vo - * - * @param vo - * @return */ - public V update(V vo) throws JpaSystemException, ServiceVOException; + V update(V vo) throws JpaSystemException, ServiceVOException; /** * Delete model by primary key - * - * @param key - * @return */ - public Boolean delete(K key) throws JpaSystemException; + Boolean delete(K key) throws JpaSystemException; /** - * Find by Id - * + * Find by ID + * * @param key * primary key - * @return */ - public V findById(K key) throws JpaSystemException; + V findById(K key) throws JpaSystemException; /** * Find all model to vo - * - * @return */ - public List findAll() throws JpaSystemException; + List findAll() throws JpaSystemException; /** * Find all model to vo by page and limit and sort and dir parameter - * - * @return */ - public Map findAllWithPageAndLimitAndSortByAndDirectionParameter( - Integer page, Integer limit, String sort, String dir); + Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java index aa4ffa70..8df01962 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java @@ -36,7 +36,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI; */ @Service @Transactional -public class LogbookRemunServiceImpl implements LogbookRemunService { +public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements LogbookRemunService { private static final Logger LOGGER = LoggerFactory.getLogger(LogbookRemunServiceImpl.class); @@ -58,9 +58,6 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { @Autowired private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao; - @Autowired - private SubUnitKerjaDao subUnitKerjaDao; - @Autowired private MapJabatanProfesiDao mapJabatanProfesiDao; @@ -72,16 +69,15 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Date tglAwal = DateUtil.startMonth(date); Date tglAkhir = DateUtil.endMonth(date); - List subUnitKerjaIn = subUnitKerjaDao.findAllKelompokKerjaMedisId(); - Set idPegawaiKelompokKerja = mapPegawaiJabatanToUnitKerjaDao - .findPegawaiIdBySubUnitKerjaIn(subUnitKerjaIn); - List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); - idPegawaiKelompokKerja.addAll(terapisRehabMedik); - if (!idPegawaiKelompokKerja.isEmpty()) { + Set listIdDokter = mapPegawaiJabatanToUnitKerjaDao + .findDokterByUnitKerja(splitDataSettingDatafixed("listIdUnitKerjaKsm")); + List listTerapis = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); + listIdDokter.addAll(listTerapis); + if (!listIdDokter.isEmpty()) { // Delete untuk pembaharuan data - deleteByPeriod(idPegawaiKelompokKerja, tglAwal, tglAkhir); + deleteByPeriod(listIdDokter, tglAwal, tglAkhir); } - saveRekapDetailLogbookDokter(idPegawaiKelompokKerja, date); + saveRekapDetailLogbookDokter(listIdDokter, date); } public void deleteByPeriod(Set idPegawai, Date tglAwal, Date tglAkhir) { From 518e26cc800add231e8cac2cfdcb8d8feee5d445 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 21 Jan 2025 13:13:03 +0700 Subject: [PATCH 2/4] Update LogbookRemunServiceImpl.java Perubahan jenis logbook jam kerja tidak mengecek lagi pasien non-jkn --- .../medifirst2000/service/impl/LogbookRemunServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java index 8df01962..50825d60 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java @@ -194,7 +194,7 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo LogbookDokter logbookDokter = new LogbookDokter(); logbookDokter.setKdProfile((short) 0); logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("NON_JKN_DALAM_JAM_KERJA"); + logbookDokter.setJenisLogbook("DALAM_JAM_KERJA"); logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); logbookDokter.setKelompokPasien( getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); @@ -258,7 +258,7 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo LogbookDokter logbookDokter = new LogbookDokter(); logbookDokter.setKdProfile((short) 0); logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("NON_JKN_LUAR_JAM_KERJA"); + logbookDokter.setJenisLogbook("LUAR_JAM_KERJA"); logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); logbookDokter.setKelompokPasien( getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); From 42dc402040e871628f13f1f72b20bfe95f15370e Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 24 Jan 2025 16:06:34 +0700 Subject: [PATCH 3/4] Update service remunerasi Penyesuaian logbook terapis sebagai dokter pemeriksa akan mengambil komponen harga jasa paramedis --- .../jasamedika/medifirst2000/constants/Master.java | 1 + .../service/impl/RemunerasiServiceImpl.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) 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 9f661fd5..f4cbbdc1 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 @@ -241,6 +241,7 @@ public final class Master { public static final Integer[] JASA_MEDIS = { 21, 22, 35 }; public static final Integer[] JASA_PARAMEDIS = { 25, 26, 27 }; public static final Integer[] JASA_SARANA = { 6, 38 }; + public static final Integer JASA_TERAPIS = 25; public static final Integer SPOG_ASISTEN = 206; public static final Integer SPOG_OPERATOR = 201; public static final Integer TOTAL_TARIF = 210; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index 72de145f..7a162ad8 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -1604,6 +1604,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera private List> transformPelayananPaket(Integer idPegawai, List> listData) { List drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); List paketList = mapProdukPaketDao.findAll(); List allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId) @@ -1774,6 +1775,17 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera : byDetailTarifNonKelas.get().getHargaSatuan())); } } + } else if (terapisRehabMedik.contains(idPegawai) + && !Arrays.asList(GRUP_RAWAT_INAP).contains(Integer.parseInt(d.get("idDepartemen").toString())) + && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() + .filter(dt -> dt.getProdukId().equals(d.get("idProduk"))) + .filter(dt -> dt.getKelasId().equals(d.get("idKelas"))) + .filter(dt -> dt.getKomponenHargaId().equals(JASA_TERAPIS)).findFirst(); + byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa", + CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1()) + ? byDetailTarifNonKelas.get().getHargaNetto1() + : byDetailTarifNonKelas.get().getHargaSatuan())); } else if (!Arrays.asList(GRUP_RAWAT_INAP).contains(Integer.parseInt(d.get("idDepartemen").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { Optional byDetailTarifNonKelas = tarifDetailNonKelas.stream() From d7b469e420fe4df87796720e7b40e98ce26ec92c Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 31 Jan 2025 10:01:24 +0700 Subject: [PATCH 4/4] Update service mapping jabatan pegawai Pembuatan endpoint jenis logbook berdasarkan pegawai yang dipilih --- .../medifirst2000/constants/Master.java | 6 +++ .../MapPegawaiJabatanToUnitKerjaService.java | 2 + ...pPegawaiJabatanToUnitKerjaServiceImpl.java | 21 +++++++++ .../resources/jdbc.development.properties | 4 +- ...apPegawaiJabatanToUnitKerjaController.java | 45 +++++++++---------- 5 files changed, 53 insertions(+), 25 deletions(-) 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 f4cbbdc1..90d21290 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 @@ -272,6 +272,12 @@ public final class Master { public static final Long BATAS_TERLAMBAT = 15L; // 15_Menit } + public static final class NilaiKelompokJabatan { + public static final Integer[] MEDIK = { 3, 4, 5, 6, 10, 11, 12 }; + public static final Integer[] PENUNJANG_MEDIK = { 22, 23, 24, 25, 26 }; + public static final Integer[] NURSE = { 17, 18, 19, 20, 21 }; + } + public static final class Pegawai { public static final Integer[] ADMINISTRATOR = { 0, 320272 }; public static final Integer[] LOGIN_ADMIN = { 320263, 320264 }; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapPegawaiJabatanToUnitKerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapPegawaiJabatanToUnitKerjaService.java index 4095f462..1c1dd9a3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapPegawaiJabatanToUnitKerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MapPegawaiJabatanToUnitKerjaService.java @@ -67,4 +67,6 @@ public interface MapPegawaiJabatanToUnitKerjaService { List> getlistPegawaiByUnitKerja(Integer unitKerjaPegawaiId); AuthorizationDto get(EmailDto dto); + + String getJenisLogbook(Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapPegawaiJabatanToUnitKerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapPegawaiJabatanToUnitKerjaServiceImpl.java index b65afc29..ba063183 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapPegawaiJabatanToUnitKerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MapPegawaiJabatanToUnitKerjaServiceImpl.java @@ -1748,4 +1748,25 @@ public class MapPegawaiJabatanToUnitKerjaServiceImpl extends BaseVoServiceImpl return byEmailOrEmailAlternatif.map(pegawai -> AuthorizationDto.builder().pegawaiId(pegawai.getId()) .email(pegawai.getEmail()).emailAlternatif(pegawai.getEmailAlternatif()).build()).orElse(null); } + + @Override + public String getJenisLogbook(Integer idPegawai) { + List byPegawaiId = mapPegawaiJabatanToUnitKerjaDao.findByPegawaiId(idPegawai); + Optional anyMedik = byPegawaiId.stream() + .filter(m -> Arrays.asList(Master.NilaiKelompokJabatan.MEDIK).contains(m.getGradeId())).findAny(); + Optional anyPenunjangMedik = byPegawaiId.stream() + .filter(m -> Arrays.asList(Master.NilaiKelompokJabatan.PENUNJANG_MEDIK).contains(m.getGradeId())) + .findAny(); + Optional anyNurse = byPegawaiId.stream() + .filter(m -> Arrays.asList(Master.NilaiKelompokJabatan.NURSE).contains(m.getGradeId())).findAny(); + if (anyMedik.isPresent()) { + return "Logbook-Tarif Dokter"; + } else if (anyPenunjangMedik.isPresent()) { + return "Logbook-Tarif Paramedis"; + } else if (anyNurse.isPresent()) { + return "Logbook-Tarif Perawat"; + } else { + return "Logbook Tarif"; + } + } } diff --git a/jasamedika-config/src/main/resources/jdbc.development.properties b/jasamedika-config/src/main/resources/jdbc.development.properties index 5db229ff..57bb2f0b 100644 --- a/jasamedika-config/src/main/resources/jdbc.development.properties +++ b/jasamedika-config/src/main/resources/jdbc.development.properties @@ -8,11 +8,11 @@ hibernate.show_sql = true hikari.config.maximum.pool.size = 5 # DB Development -jdbc.url = jdbc:postgresql://192.168.12.3:5432/rsab_hk_24_08_20 +jdbc.url = jdbc:postgresql://192.168.12.3:5432/rsab_hk_25_01_14 jdbc.username = smart_user jdbc.password = 1miwhir3yr jdbc.serverName = 192.168.12.3 -jdbc.databaseName = rsab_hk_24_08_20 +jdbc.databaseName = rsab_hk_25_01_14 jdbc.portNumber = 5432 corePoolSizeAsyncConfigurer = 5 diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/MapPegawaiJabatanToUnitKerjaController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/MapPegawaiJabatanToUnitKerjaController.java index bf2ea5a1..181f2bc3 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/MapPegawaiJabatanToUnitKerjaController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/MapPegawaiJabatanToUnitKerjaController.java @@ -1,28 +1,5 @@ package com.jasamedika.medifirst2000.controller; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import com.jasamedika.medifirst2000.constants.Constants; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.constants.MessageResource; @@ -32,6 +9,22 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService; import com.jasamedika.medifirst2000.util.rest.RestUtil; import com.jasamedika.medifirst2000.vo.MapPegawaiJabatanToUnitKerjaVO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @RestController @RequestMapping("/map-pegawai-jabatan-unitkerja") @@ -369,4 +362,10 @@ public class MapPegawaiJabatanToUnitKerjaController extends LocaleController logbookTitle(@PathVariable("idPegawai") Integer idPegawai) { + String jenisLogbook = mapPegawaiJabatanToUnitKerjaService.getJenisLogbook(idPegawai); + return RestUtil.getJsonResponse(jenisLogbook, HttpStatus.OK); + } }