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")
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<String> updateKlaimDiskon(String noRegistrasi, Double totalKlaim, Integer jenisDiskon);
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.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import org.springframework.beans.factory.annotation.Autowired;
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.service.PelayananPasienService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.JenisObatVO;
import com.jasamedika.medifirst2000.vo.PelayananPasienVO;
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,
String namaLayanan, Integer tipePegawai, Double hargaJual, Double hargaDiskon, Double jumlahLayanan) {
Double result = 0.0;
List<Integer> idsKonsultasiDokterJaga = splitDataSettingDatafixed("pr_konsultasi_dokter_jaga");
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(idKelPasien)) {
@ -389,4 +392,45 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
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.PelayananPasienNakesService;
import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService;
import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.PenilaianKinerjaService;
import com.jasamedika.medifirst2000.service.ProdukFarmakologiService;
import com.jasamedika.medifirst2000.service.ProdukNakesService;
@ -112,6 +113,9 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@Autowired
private IndikatorKinerjaJabatanService indikatorKinerjaJabatanService;
@Autowired
private PelayananPasienService pelayananPasienService;
@Autowired
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);
}
}
}