diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JumlahDiskonDokterDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JumlahDiskonDokterDao.java new file mode 100644 index 00000000..f97ad0a3 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JumlahDiskonDokterDao.java @@ -0,0 +1,12 @@ +package com.jasamedika.medifirst2000.dao; + +import com.jasamedika.medifirst2000.entities.JumlahDiskonDokter; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 07/02/2024 + */ +public interface JumlahDiskonDokterDao extends JpaRepository { +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java index 7d46ec91..174bcdd2 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java @@ -209,7 +209,27 @@ public interface PelayananPasienDao extends JpaRepository dtos); +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JumlahDiskonDokterServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JumlahDiskonDokterServiceImpl.java new file mode 100644 index 00000000..d44124af --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JumlahDiskonDokterServiceImpl.java @@ -0,0 +1,35 @@ +package com.jasamedika.medifirst2000.service.impl; + +import com.jasamedika.medifirst2000.dao.JumlahDiskonDokterDao; +import com.jasamedika.medifirst2000.dto.JumlahDiskonDokterDto; +import com.jasamedika.medifirst2000.entities.JumlahDiskonDokter; +import com.jasamedika.medifirst2000.service.JumlahDiskonDokterService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 07/02/2024 + */ +@Service +@Transactional +public class JumlahDiskonDokterServiceImpl implements JumlahDiskonDokterService { + + @Autowired + private JumlahDiskonDokterDao jumlahDiskonDokterDao; + + @Override + public void save(List dtos) { + List entities = new ArrayList<>(); + dtos.forEach( + dto -> entities.add(JumlahDiskonDokter.builder().persenDiskon(new BigDecimal(dto.getPersenDiskon())) + .statusEnabled(dto.getStatusEnabled()).kdProfile((short) 0).build())); + jumlahDiskonDokterDao.save(entities); + } +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 4843b136..c2e4bd82 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dto.BatalPaketProdukDto; +import com.jasamedika.medifirst2000.dto.RemunHargaJasa; import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.exception.ServiceVOException; @@ -598,115 +599,131 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); - if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("totalDiskon")) - && Double.parseDouble(d.get("totalDiskon").toString()) > 0.0 - && CommonUtil.isNullOrEmpty(d.get("idSayatan"))) { - /* - * Untuk diskon jasa medis oleh dpjp - */ - d.put("hargaJasa", 0.0); - } else if (KLINIK_KARYAWAN.equals(d.get("idRuangan")) || KLINIK_GIGI_KARYAWAN.equals(d.get("idRuangan"))) { - /* - * Untuk semua klaim di ruangan klinik karyawan - */ - d.put("hargaJasa", 0.0); - } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenRemunDokterUmumHD / 100 * hargaJual); + if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenOperator / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAsistenIBS / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAnestesi / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenOperator / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (VISIT.equals(d.get("idGolonganProduk"))) { - d.put("hargaJasa", persenVisite / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + /* + * A rule for claimed <= Jul 31th 2023 + */ + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { - d.put("hargaJasa", persenRemunDokterPA / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan")) && Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) { double persenJasa = persenTindakan / 100; - d.put("hargaJasa", persenJasa * persenTarifICU * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else { - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -1935,140 +1952,168 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); } if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenRemunDokterUmumHD + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRemunDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenOperator / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", + "Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAsistenIBS / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", + "Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAnestesi / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", + "Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); d.put("persenJasa", persenOperator + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperator / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenRemunLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenRemunLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenRemunDokterPA + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRemunDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan")) && Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) { double persenJasa = persenTindakan / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d, false); d.put("persenJasa", persenTindakan + "%"); - d.put("keterangan", "Dari " + persenTarifJasaICU + "% tarif" + keteranganTambahan); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasa * persenTarifICU * hargaJual); + d.put("keterangan", + "Dari " + persenTarifJasaICU + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -2284,115 +2329,140 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); /* * Set persen jasa dokter luar yang klaim ffs dengan persen jasa * dari tarif total */ d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); /* * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter * tertentu */ - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenBPJS / 100 * hargaJual); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterUmumHD + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); d.put("persenJasa", persenOperator + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperator / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterPA + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -2613,115 +2683,140 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); /* * Set persen jasa dokter luar yang klaim ffs dengan persen jasa * dari tarif total */ d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); /* * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter * tertentu */ - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenBPJS / 100 * hargaJual); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterUmumHD + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperatorIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperatorIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperatorIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", + "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif" + + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString() + + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperatorIBS / 100, hargaJual, d, true); d.put("persenJasa", persenOperatorIBS + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenOperatorIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterPA + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenJasaDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - if (Double.parseDouble(d.get("hargaJasa").toString()) != 0.0) - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -3617,4 +3712,223 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); return duplicateMapPetugasPegawai; } + + private RemunHargaJasa hargaJasa(double persenRemunerasi, double hargaJual, Map d, + boolean isFrontNote) { + Locale indonesia = new Locale("in", "ID"); + NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); + RemunHargaJasa.RemunHargaJasaBuilder builder = RemunHargaJasa.builder(); + if (KLINIK_KARYAWAN.equals(d.get("idRuangan")) || KLINIK_GIGI_KARYAWAN.equals(d.get("idRuangan"))) { + builder.nilai(0.0); + if (isFrontNote) { + builder.keterangan("Dari diskon klinik karyawan/klinik gigi karyawan"); + } else { + builder.keterangan(" dan dari diskon klinik karyawan/klinik gigi karyawan"); + } + return builder.build(); + } + double totalDiskonD = Double.parseDouble(d.get("totalDiskonD").toString()); + double totalPersenDiskonSayatanD = Double.parseDouble(d.get("totalPersenDiskonSayatanD").toString()); + double totalHargaD = Double.parseDouble(d.get("totalHargaD").toString()); + double totalDiskonAs = Double.parseDouble(d.get("totalDiskonAs").toString()); + double totalPersenDiskonSayatanAs = Double.parseDouble(d.get("totalPersenDiskonSayatanAs").toString()); + double totalHargaAs = Double.parseDouble(d.get("totalHargaAs").toString()); + double totalDiskonAn = Double.parseDouble(d.get("totalDiskonAn").toString()); + double totalPersenDiskonSayatanAn = Double.parseDouble(d.get("totalPersenDiskonSayatanAn").toString()); + double totalHargaAn = Double.parseDouble(d.get("totalHargaAn").toString()); + double totalDiskon = 0.0; + if (Double.parseDouble(d.get("totalPersenDiskonD").toString()) > 0) + totalDiskon += totalDiskonD - (totalPersenDiskonSayatanD * totalHargaD / 100); + if (Double.parseDouble(d.get("totalPersenDiskonAs").toString()) > 0) + totalDiskon += totalDiskonAs - (totalPersenDiskonSayatanAs * totalHargaAs / 100); + if (Double.parseDouble(d.get("totalPersenDiskonAn").toString()) > 0) + totalDiskon += totalDiskonAn - (totalPersenDiskonSayatanAn * totalHargaAn / 100); + double hargaJualSetelahDiskon = hargaJual - totalDiskon; + double hargaJasa = persenRemunerasi * hargaJualSetelahDiskon; + if (Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0 + && Double.parseDouble(d.get("diskonD").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) >= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanD").toString()) >= 0 && Double + .parseDouble(d.get("persenDiskonSayatanAs").toString()) >= 0 + && Double.parseDouble(d.get("persenDiskonSayatanAn").toString()) >= 0))) { + double persenRemunOperator = 100.00 - Double.parseDouble(d.get("persenDiskonD").toString()); + double persenRemunAsisten = 100.00 - Double.parseDouble(d.get("persenDiskonAs").toString()); + double persenRemunAnestesi = 100.00 - Double.parseDouble(d.get("persenDiskonAn").toString()); + double hargaJasaOperator = persenRemunOperator * hargaJasa / 100; + double hargaJasaAsisten = persenRemunAsisten * hargaJasa / 100; + double hargaJasaAnestesi = persenRemunAnestesi * hargaJasa / 100; + double hargaJasaRemun = hargaJasaOperator + hargaJasaAsisten + hargaJasaAnestesi; + builder.nilai(hargaJasaRemun); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAsisten + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen operator, asisten, dan anestesi berturut-turut " + + d.get("persenDiskonD").toString() + "%, " + d.get("persenDiskonAs").toString() + "%, dan " + + d.get("persenDiskonAn").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAsisten + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen operator, asisten, dan anestesi berturut-turut " + + d.get("persenDiskonD").toString() + "%, " + d.get("persenDiskonAs").toString() + "%, dan " + + d.get("persenDiskonAn").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0 + && Double.parseDouble(d.get("diskonD").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanD").toString()) >= 0 && Double + .parseDouble(d.get("persenDiskonSayatanAs").toString()) >= 0))) { + double persenRemunOperator = 100.00 - Double.parseDouble(d.get("persenDiskonD").toString()); + double persenRemunAsisten = 100.00 - Double.parseDouble(d.get("persenDiskonAs").toString()); + double hargaJasaOperator = persenRemunOperator * hargaJasa / 100; + double hargaJasaAsisten = persenRemunAsisten * hargaJasa / 100; + double hargaJasaRemun = hargaJasaOperator + hargaJasaAsisten; + builder.nilai(hargaJasaRemun); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAsisten + + "% karena diskon komponen operator dan asisten berturut-turut " + + d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAs").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAsisten + + "% karena diskon komponen operator dan asisten berturut-turut " + + d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAs").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0 + && Double.parseDouble(d.get("diskonD").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAs").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanD").toString()) >= 0 && Double + .parseDouble(d.get("persenDiskonSayatanAn").toString()) >= 0))) { + double persenRemunOperator = 100.00 - Double.parseDouble(d.get("persenDiskonD").toString()); + double persenRemunAnestesi = 100.00 - Double.parseDouble(d.get("persenDiskonAn").toString()); + double hargaJasaOperator = persenRemunOperator * hargaJasa / 100; + double hargaJasaAnestesi = persenRemunAnestesi * hargaJasa / 100; + double hargaJasaRemun = hargaJasaOperator + hargaJasaAnestesi; + builder.nilai(hargaJasaRemun); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen operator dan anestesi berturut-turut " + + d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen operator dan anestesi berturut-turut " + + d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonD").toString()) == 0.0 + && Double.parseDouble(d.get("diskonD").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanAs").toString()) >= 0 && Double + .parseDouble(d.get("persenDiskonSayatanAn").toString()) >= 0))) { + double persenRemunAsisten = 100.00 - Double.parseDouble(d.get("persenDiskonAs").toString()); + double persenRemunAnestesi = 100.00 - Double.parseDouble(d.get("persenDiskonAn").toString()); + double hargaJasaAsisten = persenRemunAsisten * hargaJasa / 100; + double hargaJasaAnestesi = persenRemunAnestesi * hargaJasa / 100; + double hargaJasaRemun = hargaJasaAsisten + hargaJasaAnestesi; + builder.nilai(hargaJasaRemun); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten + + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen asisten dan anestesi berturut-turut " + + d.get("persenDiskonAs").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten + + "% ditambah pengalian " + persenRemunAnestesi + + "% karena diskon komponen asisten dan anestesi berturut-turut " + + d.get("persenDiskonAs").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0 + && Double.parseDouble(d.get("diskonD").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonAs").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) <= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanD").toString()) >= 0))) { + double persenRemunOperator = 100.00 - Double.parseDouble(d.get("persenDiskonD").toString()); + builder.nilai(persenRemunOperator * hargaJasa / 100); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% karena diskon komponen operator " + d.get("persenDiskonD").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator + + "% karena diskon komponen operator " + d.get("persenDiskonD").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonD").toString()) == 0.0 + && Double.parseDouble(d.get("diskonD").toString()) <= 0.0 + && Double.parseDouble(d.get("persenDiskonAn").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanAs").toString()) >= 0))) { + double persenRemunAsisten = 100.00 - Double.parseDouble(d.get("persenDiskonAs").toString()); + builder.nilai(persenRemunAsisten * hargaJasa / 100); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten + + "% karena diskon komponen asisten " + d.get("persenDiskonAs").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten + + "% karena diskon komponen asisten " + d.get("persenDiskonAs").toString() + "%"); + } + } else if (Double.parseDouble(d.get("persenDiskonAn").toString()) > 0.0 + && Double.parseDouble(d.get("diskonAn").toString()) >= 0.0 + && Double.parseDouble(d.get("persenDiskonD").toString()) == 0.0 + && Double.parseDouble(d.get("diskonD").toString()) <= 0.0 + && Double.parseDouble(d.get("persenDiskonAs").toString()) == 0.0 + && Double.parseDouble(d.get("diskonAs").toString()) <= 0.0 + && (CommonUtil.isNullOrEmpty(d.get("idSayatan")) || (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) + && Double.parseDouble(d.get("persenDiskonSayatanAn").toString()) >= 0))) { + double persenRemunAnestesi = 100.00 - Double.parseDouble(d.get("persenDiskonAn").toString()); + builder.nilai(persenRemunAnestesi * hargaJasa / 100); + if (isFrontNote) { + builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAnestesi + + "% karena diskon komponen anestesi " + d.get("persenDiskonAn").toString() + "%"); + } else { + builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + + " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAnestesi + + "% karena diskon komponen anestesi " + d.get("persenDiskonAn").toString() + "%"); + } + } else { + builder.nilai(persenRemunerasi * hargaJualSetelahDiskon); + if (totalDiskon > 0.0) { + builder.keterangan( + " dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + " terlebih dahulu"); + } else { + builder.keterangan(""); + } + + } + return builder.build(); + } } \ No newline at end of file diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JumlahDiskonDokterDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JumlahDiskonDokterDto.java new file mode 100644 index 00000000..1eb724df --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JumlahDiskonDokterDto.java @@ -0,0 +1,25 @@ +package com.jasamedika.medifirst2000.dto; + +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 07/02/2024 + */ +@Getter +@Setter +public class JumlahDiskonDokterDto { + protected Long id; + + private Boolean statusEnabled; + + private Short kdProfile; + + @NotBlank + @Caption("Persen Diskon") + private String persenDiskon; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/RemunHargaJasa.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/RemunHargaJasa.java new file mode 100644 index 00000000..a3fee212 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/RemunHargaJasa.java @@ -0,0 +1,18 @@ +package com.jasamedika.medifirst2000.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 26/02/2024 + */ +@Getter +@Setter +@Builder +public class RemunHargaJasa { + private Double nilai; + private String keterangan; +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JumlahDiskonDokter.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JumlahDiskonDokter.java new file mode 100644 index 00000000..fa4c7732 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JumlahDiskonDokter.java @@ -0,0 +1,42 @@ +package com.jasamedika.medifirst2000.entities; + +import com.jasamedika.medifirst2000.helper.Caption; +import lombok.*; +import org.hibernate.validator.constraints.NotBlank; + +import javax.persistence.*; +import java.io.Serializable; +import java.math.BigDecimal; + +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 07/02/2024 + */ +@Entity +@Table(name = "jumlah_diskon_dokter_m") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class JumlahDiskonDokter implements Serializable { + private static final long serialVersionUID = 7600189956745393785L; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "sg_jumlah_diskon_dokter_m") + @SequenceGenerator(name = "sg_jumlah_diskon_dokter_m", sequenceName = "jumlah_diskon_dokter_m_seq", allocationSize = 1) + @Column(name = "id") + protected Long id; + + private Boolean statusEnabled; + + private Short kdProfile; + + @Column(nullable = false, unique = true, columnDefinition = "numeric(6,2)") + @NotBlank(message = "Persen diskon tidak boleh kosong") + @Caption("Persen Diskon") + private BigDecimal persenDiskon; +} diff --git a/jasamedika-web/src/main/java/com/jasamedika/medifirst2000/controller/JumlahDiskonDokterController.java b/jasamedika-web/src/main/java/com/jasamedika/medifirst2000/controller/JumlahDiskonDokterController.java new file mode 100644 index 00000000..758d1825 --- /dev/null +++ b/jasamedika-web/src/main/java/com/jasamedika/medifirst2000/controller/JumlahDiskonDokterController.java @@ -0,0 +1,49 @@ +package com.jasamedika.medifirst2000.controller; + +import com.jasamedika.medifirst2000.dto.JumlahDiskonDokterDto; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.JumlahDiskonDokterService; +import com.jasamedika.medifirst2000.util.rest.RestUtil; +import org.apache.commons.collections4.map.SingletonMap; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.util.List; + +import static org.slf4j.LoggerFactory.getLogger; +import static org.springframework.http.HttpStatus.CREATED; +import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; +import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; +import static org.springframework.web.bind.annotation.RequestMethod.POST; + +/** + * @author salmanoe + * @version 1.0.0 + * @since 07/02/2024 + */ +@RestController +@RequestMapping("/master/dokter/jumlah-diskon") +public class JumlahDiskonDokterController { + private static final Logger LOGGER = getLogger(JumlahDiskonDokterController.class); + + @Autowired + private JumlahDiskonDokterService jumlahDiskonDokterService; + + @RequestMapping(method = POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE) + public ResponseEntity> save(HttpServletRequest request, + @Valid @RequestBody List dtos) { + try { + jumlahDiskonDokterService.save(dtos); + return RestUtil.getJsonResponse(dtos, CREATED, new SingletonMap<>("status", CREATED.getReasonPhrase())); + } catch (ServiceVOException e) { + LOGGER.error("Got exception {} when add jumlah diskon dokter", e.getMessage()); + return RestUtil.getJsonHttptatus(INTERNAL_SERVER_ERROR); + } + } +}