Update service pelayanan pasien

Pembuatan awal logbook dokter berbasis tarif
This commit is contained in:
Salman Manoe 2023-03-25 00:01:35 +07:00
parent 853647139d
commit 167f95dfcb
4 changed files with 86 additions and 2 deletions

View File

@ -197,4 +197,21 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "and pd.noRegistrasi = :noRegistrasi") + "and pd.noRegistrasi = :noRegistrasi")
List<PelayananPasien> findAll(@Param("noRegistrasi") String noRegistrasi); List<PelayananPasien> findAll(@Param("noRegistrasi") String noRegistrasi);
@Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk,pr.detailJenisProdukId as idDetailJenisProduk,"
+ "kp.id as idKelompokPasien,kp.kelompokPasien as kelompokPasien,"
+ "kls.id as idKelas,kls.namaKelas as namaKelas," + "ppp.noRec as idPelayananPasienPetugas,"
+ "pp.noRec as idPelayananPasien,pp.hargaJual as hargaJual,pp.tglPelayanan as tglPelayanan,"
+ "apd.noRec as idAntrianPasienDiperiksa," + "pd.noRec as idPasienDaftar) "
+ "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp "
+ "where (ppp.statusEnabled is true or ppp.statusEnabled is null) "
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) "
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and ppp.ObjectPegawaiId = :pegawaiId "
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir "
+ "order by case when kp.id = 2 then 1 when kp.id = 4 then 2 when kp.id = 8 then 3 when kp.id = 9 then 4 "
+ "when kp.id = 1 then 5 when kp.id = 5 then 6 when kp.id = 6 then 7 when kp.id = 3 then 8 when kp.id = 7 then 9 else 10 end asc, "
+ "pp.tglPelayanan")
List<Map<String, Object>> findPelayananPasienByPetugasAndTanggal(@Param("pegawaiId") Integer idPegawai,
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
} }

View File

@ -16,7 +16,8 @@ public interface PelayananPasienService {
List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir); List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir);
List<String> updateKlaimDiskon(String noRegistrasi, Double totalKlaim, Integer jenisDiskon); List<String> updateKlaimDiskon(String noRegistrasi, Double totalKlaim, Integer jenisDiskon);
String resetKlaimDiskon(String noRegistrasi); String resetKlaimDiskon(String noRegistrasi);
List<Map<String, Object>> logbookTarifDokter(Integer idPegawai, String bulan);
} }

View File

@ -5,12 +5,14 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayDeque;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Queue;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -30,6 +32,7 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
import com.jasamedika.medifirst2000.entities.Produk; import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.JenisObatVO; import com.jasamedika.medifirst2000.vo.JenisObatVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienVO; import com.jasamedika.medifirst2000.vo.PelayananPasienVO;
import com.jasamedika.medifirst2000.vo.ProdukVO; import com.jasamedika.medifirst2000.vo.ProdukVO;
@ -146,7 +149,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
public Double calculateRemunWithFfs(Integer idKelPasien, Integer idDepartemen, Integer idLayanan, public Double calculateRemunWithFfs(Integer idKelPasien, Integer idDepartemen, Integer idLayanan,
String namaLayanan, Integer tipePegawai, Double hargaJual, Double hargaDiskon, Double jumlahLayanan) { String namaLayanan, Integer tipePegawai, Double hargaJual, Double hargaDiskon, Double jumlahLayanan) {
Double result = 0.0; Double result = 0.0;
List<Integer> idsKonsultasiDokterJaga = splitDataSettingDatafixed("pr_konsultasi_dokter_jaga"); List<Integer> idsKonsultasiDokterJaga = splitDataSettingDatafixed("pr_konsultasi_dokter_jaga");
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(idKelPasien)) { if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(idKelPasien)) {
@ -389,4 +392,45 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
return result; return result;
} }
@Override
public List<Map<String, Object>> logbookTarifDokter(Integer idPegawai, String bulan) {
List<Map<String, Object>> result = new ArrayList<>();
Map<String, Object> remun = new HashMap<>();
Map<String, Object> ffs = new HashMap<>();
DateFormat df = new SimpleDateFormat("yyyy-MM");
Date date = new Date();
try {
date = df.parse(bulan);
} catch (ParseException e) {
e.printStackTrace();
}
Date tglAwal = DateUtil.startMonth(date);
Date tglAkhir = DateUtil.endMonth(date);
Double targetRemun = 5_000_000.00;
List<Map<String, Object>> listPelayanan = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai,
tglAwal, tglAkhir);
Queue<Map<String, Object>> queuePelayanan = new ArrayDeque<>();
listPelayanan.forEach(pelayanan -> {
queuePelayanan.offer(pelayanan);
});
List<Map<String, Object>> listPelayananRemun = new ArrayList<>();
List<Map<String, Object>> listPelayananFfs = new ArrayList<>();
Double capaianRemun = 0.0;
for (Map<String, Object> next = queuePelayanan.poll(); next != null; next = queuePelayanan.poll())
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(next.get("idKelompokPasien"))) {
listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJual").toString());
} else if (capaianRemun <= targetRemun) {
listPelayananRemun.add(next);
capaianRemun += Double.valueOf(next.get("hargaJual").toString());
} else {
listPelayananFfs.add(next);
}
remun.put("remun", listPelayananRemun);
ffs.put("ffs", listPelayananFfs);
result.add(remun);
result.add(ffs);
return result;
}
} }

View File

@ -43,6 +43,7 @@ import com.jasamedika.medifirst2000.service.PelayananFarmakologiService;
import com.jasamedika.medifirst2000.service.PelayananNakesService; import com.jasamedika.medifirst2000.service.PelayananNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService;
import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.PenilaianKinerjaService; import com.jasamedika.medifirst2000.service.PenilaianKinerjaService;
import com.jasamedika.medifirst2000.service.ProdukFarmakologiService; import com.jasamedika.medifirst2000.service.ProdukFarmakologiService;
import com.jasamedika.medifirst2000.service.ProdukNakesService; import com.jasamedika.medifirst2000.service.ProdukNakesService;
@ -112,6 +113,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired @Autowired
private IndikatorKinerjaJabatanService indikatorKinerjaJabatanService; private IndikatorKinerjaJabatanService indikatorKinerjaJabatanService;
@Autowired
private PelayananPasienService pelayananPasienService;
@Autowired @Autowired
private SkoringTindakanMedisService skoringTindakanMedisService; private SkoringTindakanMedisService skoringTindakanMedisService;
@ -2725,4 +2729,22 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
} }
} }
@RequestMapping(value = "/dokter/logbook-tarif/{idPegawai}/{bulan}", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> getDetailLogbookSkoringFarmakologi(HttpServletRequest request,
@PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) {
try {
List<Map<String, Object>> result = pelayananPasienService.logbookTarifDokter(idPegawai, bulan);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when get logbook tarif dokter", sve.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
} catch (JpaSystemException jse) {
LOGGER.error("Got exception {} when get logbook tarif dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
} }