persiapan service update pelayanan pasien detail saat entri klaim verifikasi tagihan untuk diskon karyawan

This commit is contained in:
salmanoe 2021-02-15 13:36:56 +07:00
parent 3c74ae5f63
commit 74b3ac482f
3 changed files with 126 additions and 21 deletions

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -17,7 +18,15 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
@Repository("PelayananPasienDetailDao")
public interface PelayananPasienDetailDao extends PagingAndSortingRepository<PelayananPasienDetail, String> {
@Query("select model from PelayananPasienDetail model left join model.pelayananPasien a where a.noRec=:noRec")
List<PelayananPasienDetail> getPelayananPasienDetail(@Param("noRec") String noRec);
@Query("select new Map(" + "ppd.hargaDiscount as hargaDiscount," + "ppd.hargaJual as hargaJual,"
+ "ppd.hargaNetto as hargaNetto," + "ppd.hargaSatuan as hargaSatuan," + "ppd.jasa as jasa,"
+ "ppd.jumlah as jumlah," + "ppd.komponenHargaId as idKomponenHarga,"
+ "pd.dokterPenanggungJawabId as dpjpUtama," + "apd.pegawaiId as dpjp," + "pp.produkId as idLayanan"
+ ") from PelayananPasienDetail ppd " + "inner join ppd.pelayananPasien pp "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "where pp.strukFk is null "
+ "and pd.noRegistrasi = :noRegistrasi " + "order by ppd.komponenHargaId")
List<Map<String, Object>> findDetailTagihan(@Param("noRegistrasi") String noRegistrasi);
}

View File

@ -18,4 +18,6 @@ public interface PelayananPasienService {
List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir);
void updateKlaimDiskonRSAB(String noRegistrasi, Double totalKlaim);
}

View File

@ -22,6 +22,7 @@ import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.LogAccDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienDao;
import com.jasamedika.medifirst2000.dao.PelayananPasienDetailDao;
import com.jasamedika.medifirst2000.dao.StrukPelayananDao;
import com.jasamedika.medifirst2000.entities.JenisObat;
import com.jasamedika.medifirst2000.entities.LogAcc;
@ -41,6 +42,7 @@ import com.jasamedika.medifirst2000.vo.ProdukVO;
*/
@Service("pelayananPasienService")
public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements PelayananPasienService {
@Autowired
private BaseConverterImpl<PelayananPasienVO, PelayananPasien> pelayananPasienConverter;
@ -53,6 +55,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
@Autowired
private PelayananPasienDao pelayananPasienDao;
@Autowired
private PelayananPasienDetailDao pelayananPasienDetailDao;
@Autowired
private LogAccDao logAccDao;
@ -231,7 +236,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
return result;
}
public Double calculateRemunWithFfs(Integer idKelPasien, Integer idDepartemen, Integer idLayanan, String namaLayanan, Integer tipePegawai, Double hargaJual, Double hargaDiskon, Double jumlahLayanan) {
public Double calculateRemunWithFfs(Integer idKelPasien, Integer idDepartemen, Integer idLayanan,
String namaLayanan, Integer tipePegawai, Double hargaJual, Double hargaDiskon, Double jumlahLayanan) {
Double result = 0.0;
if (Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS).contains(idKelPasien)) {
@ -239,11 +245,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
if (idLayanan.equals(Master.Produk.KONSULTASI_DOKTER_JAGA)) {
result = 30000.0;
} else {
result = (hargaJual - hargaDiskon) * jumlahLayanan * Master.FeeForService.HK_02_04_III_558_2015_5_B_C_D;
result = (hargaJual - hargaDiskon) * jumlahLayanan
* Master.FeeForService.HK_02_04_III_558_2015_5_B_C_D;
}
} else if (idDepartemen.equals(Master.Departemen.RAWAT_INAP)) {
if (tipePegawai.equals(Master.TipePegawai.PURNA_WAKTU)) {
result = (hargaJual - hargaDiskon) * jumlahLayanan * Master.FeeForService.HK_02_04_III_558_2015_5_B_C_D;
result = (hargaJual - hargaDiskon) * jumlahLayanan
* Master.FeeForService.HK_02_04_III_558_2015_5_B_C_D;
} else {
result = 0.0;
}
@ -303,10 +311,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
e.printStackTrace();
}
List<Map<String, Object>> data = pelayananPasienDao.getDataPendapatan(Master.JenisPegawai.DOKTER, dateAwal, dateAkhir);
List<Map<String, Object>> data = pelayananPasienDao.getDataPendapatan(Master.JenisPegawai.DOKTER, dateAwal,
dateAkhir);
for (Map<String, Object> map : data) {
if (!listIdPegawai.contains(Integer.parseInt(map.get("idPegawai").toString())) && !map.get("namaPegawai").equals("-")) {
if (!listIdPegawai.contains(Integer.parseInt(map.get("idPegawai").toString()))
&& !map.get("namaPegawai").equals("-")) {
listIdPegawai.add(Integer.parseInt(map.get("idPegawai").toString()));
}
}
@ -326,7 +336,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
Double jumlahLayanan = Double.parseDouble(map.get("jumlahLayanan").toString());
if (!map.get("idJenisProduk").equals(Master.JenisProduk.OBAT_ALKES)) {
remun += calculateRemunWithFfs(idKelPasien, idDepartemen, idLayanan, namaLayanan, tipePegawai, hargaJual, hargaDiskon, jumlahLayanan);
remun += calculateRemunWithFfs(idKelPasien, idDepartemen, idLayanan, namaLayanan, tipePegawai,
hargaJual, hargaDiskon, jumlahLayanan);
}
mapRes.put("namaPegawai", map.get("namaPegawai"));
@ -341,4 +352,87 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
return result;
}
@Override
public void updateKlaimDiskonRSAB(String noRegistrasi, Double totalKlaim) {
List<Map<String, Object>> detailSarana = new ArrayList<>();
List<Map<String, Object>> detailUmum = new ArrayList<>();
List<Map<String, Object>> detailParamedis = new ArrayList<>();
List<Map<String, Object>> detailMedis = new ArrayList<>();
List<Map<String, Object>> detailLainlain = new ArrayList<>();
double totalDetailSarana = 0.0;
double totalDetailUmum = 0.0;
double totalDetailParamedis = 0.0;
double totalDetailMedis = 0.0;
double totalDetailFarmasi = 0.0;
double sisaTotalKlaim = totalKlaim;
double fracTotalKlaim = 0.0;
List<Map<String, Object>> detail = pelayananPasienDetailDao.findDetailTagihan(noRegistrasi);
for (Map<String, Object> map : detail) {
if (Arrays.asList(Master.KomponenHarga.JASA_SARANA).contains(map.get("idKomponenHarga"))) {
detailSarana.add(map);
totalDetailSarana += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (map.get("idKomponenHarga").equals(Master.KomponenHarga.JASA_UMUM)) {
detailUmum.add(map);
totalDetailUmum += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (Arrays.asList(Master.KomponenHarga.JASA_PARAMEDIS).contains(map.get("idKomponenHarga"))) {
detailParamedis.add(map);
totalDetailParamedis += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else if (Arrays.asList(Master.KomponenHarga.JASA_MEDIS).contains(map.get("idKomponenHarga"))) {
detailMedis.add(map);
totalDetailMedis += ((double) map.get("hargaJual") - (double) map.get("hargaDiscount"))
* (double) map.get("jumlah");
totalDetailFarmasi += (double) map.get("jasa");
} else {
detailLainlain.add(map);
}
}
if (sisaTotalKlaim <= totalDetailSarana) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:50:43 AM] : diskonkan detail sarana!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:51:36 AM] : nolkan detail sarana!
sisaTotalKlaim -= totalDetailSarana;
if (sisaTotalKlaim <= totalDetailUmum) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:52:10 AM] : diskonkan detail umum!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:52:39 AM] : nolkan detail umum!
sisaTotalKlaim -= totalDetailUmum;
if (sisaTotalKlaim <= totalDetailParamedis) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:53:20 AM] : diskonkan detail paramedis!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:54:40 AM] : nolkan detail paramedis!
sisaTotalKlaim -= totalDetailParamedis;
if (sisaTotalKlaim <= totalDetailMedis) {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:55:18 AM] : diskonkan detail medis!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 11:55:49 AM] : nolkan detail medis!
sisaTotalKlaim -= totalDetailMedis;
if (sisaTotalKlaim <= totalDetailFarmasi) {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:08:16 PM] : diskonkan detail jasa!
sisaTotalKlaim = 0.0;
} else {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:08:38 PM] : nolkan detail jasa!
sisaTotalKlaim -= totalDetailFarmasi;
if (sisaTotalKlaim > 0.0) {
// TODO inserted by ITI-14 [Feb 15, 2021, 1:09:42 PM] : error!
}
}
}
}
}
}
}
}