persiapan service update pelayanan pasien detail saat entri klaim verifikasi tagihan untuk diskon karyawan
This commit is contained in:
parent
3c74ae5f63
commit
74b3ac482f
@ -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;
|
||||
@ -16,8 +17,16 @@ 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);
|
||||
}
|
||||
|
||||
@ -15,7 +15,9 @@ public interface PelayananPasienService {
|
||||
Map<String, Object> findTindakanPasienMeninggal(Integer noCm);
|
||||
|
||||
List<Map<String, Object>> getRekapPendapatanAllRuangan(String tglAwal, String tglAkhir) throws ParseException;
|
||||
|
||||
|
||||
List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir);
|
||||
|
||||
void updateKlaimDiskonRSAB(String noRegistrasi, Double totalKlaim);
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -230,20 +235,23 @@ 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)) {
|
||||
if (idDepartemen.equals(Master.Departemen.IGD)) {
|
||||
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;
|
||||
}
|
||||
@ -275,7 +283,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
result = (hargaJual - hargaDiskon) * jumlahLayanan;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -283,7 +291,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
public List<Map<String, Object>> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<Integer> listIdPegawai = new ArrayList<>();
|
||||
|
||||
|
||||
DecimalFormatSymbols formatRp = new DecimalFormatSymbols();
|
||||
formatRp.setCurrencySymbol("Rp");
|
||||
formatRp.setMonetaryDecimalSeparator(',');
|
||||
@ -291,9 +299,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
|
||||
DecimalFormat kursINA = (DecimalFormat) DecimalFormat.getCurrencyInstance();
|
||||
kursINA.setDecimalFormatSymbols(formatRp);
|
||||
|
||||
|
||||
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
|
||||
Date dateAwal = new Date();
|
||||
Date dateAkhir = new Date();
|
||||
try {
|
||||
@ -302,15 +310,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
} catch (ParseException e) {
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (Integer idPegawai : listIdPegawai) {
|
||||
Double remun = 0.0;
|
||||
Map<String, Object> mapRes = new HashMap<>();
|
||||
@ -324,11 +334,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
Double hargaJual = Double.parseDouble(map.get("hargaJual").toString());
|
||||
Double hargaDiskon = Double.parseDouble(map.get("hargaDiskon").toString());
|
||||
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"));
|
||||
}
|
||||
}
|
||||
@ -338,7 +349,90 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
result.add(mapRes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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!
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user