Update service pelayanan pasien
Penerapan aturan maksimal visit bpjs 1 kali per hari di logbook dokter remun baru
This commit is contained in:
parent
699f713778
commit
9b118ea556
@ -371,7 +371,9 @@ public class Master {
|
|||||||
public static final Integer[] PERISTI = { 45, 75, 76, 463, 464 };
|
public static final Integer[] PERISTI = { 45, 75, 76, 463, 464 };
|
||||||
public static final Integer[] TANJUNG = { 72, 551 };
|
public static final Integer[] TANJUNG = { 72, 551 };
|
||||||
|
|
||||||
public static final Integer ICU = 328;
|
public static final Integer ICU_PICU = 328;
|
||||||
|
public static final Integer MICU = 464;
|
||||||
|
public static final Integer NICU = 75;
|
||||||
|
|
||||||
public static final int KLINIK_FALSE_EMERGENCY = 309;
|
public static final int KLINIK_FALSE_EMERGENCY = 309;
|
||||||
public static final int KLINIK_GIGI_KARYAWAN = 702;
|
public static final int KLINIK_GIGI_KARYAWAN = 702;
|
||||||
|
|||||||
@ -207,8 +207,8 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
|
|||||||
+ "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,ppp.ObjectPegawaiId as idPegawai,"
|
+ "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,ppp.ObjectPegawaiId as idPegawai,"
|
||||||
+ "pp.noRec as idPelayananPasien,coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.jumlah,0) as jumlah,"
|
+ "pp.noRec as idPelayananPasien,coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.jumlah,0) as jumlah,"
|
||||||
+ "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal,"
|
+ "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal,"
|
||||||
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "ru.departemenId as idDepartemen,"
|
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP,"
|
||||||
+ "pd.noRec as idPasienDaftar, "
|
+ "ru.id as idRuangan,ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar, "
|
||||||
+ "sum(case when ppd.komponenHargaId = 35 then ppd.hargaDiscount else 0.0 end) as totalDiskon) "
|
+ "sum(case when ppd.komponenHargaId = 35 then ppd.hargaDiscount else 0.0 end) as totalDiskon) "
|
||||||
+ "from PelayananPasienDetail ppd, PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
+ "from PelayananPasienDetail ppd, PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
||||||
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
|
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
|
||||||
@ -224,8 +224,8 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
|
|||||||
+ "case when kls.id = 6 then 1 when kls.id = 1 then 2 when kls.id = 2 then 3 when kls.id =3 then 4 when kls.id = 8 then 5 when kls.id = 5 then 6 when kls.id = 21 then 7 else 8 end,"
|
+ "case when kls.id = 6 then 1 when kls.id = 1 then 2 when kls.id = 2 then 3 when kls.id =3 then 4 when kls.id = 8 then 5 when kls.id = 5 then 6 when kls.id = 21 then 7 else 8 end,"
|
||||||
+ "kls.namaKelas," + "ppp.noRec," + "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
|
+ "kls.namaKelas," + "ppp.noRec," + "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
|
||||||
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0),"
|
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0),"
|
||||||
+ "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd')," + "apd.noRec,apd.pegawaiId," + "ru.departemenId,"
|
+ "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd')," + "apd.noRec,apd.pegawaiId,"
|
||||||
+ "pd.noRec "
|
+ "ru.id,ru.departemenId," + "pd.noRec "
|
||||||
+ "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 "
|
+ "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, "
|
+ "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, " + "pp.hargaJual, "
|
+ "pp.tglPelayanan, " + "pp.hargaJual, "
|
||||||
|
|||||||
@ -526,38 +526,66 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
* Filter tindakan operasi untuk pasien BPJS hanya diambil tarif
|
* Filter tindakan operasi untuk pasien BPJS hanya diambil tarif
|
||||||
* tertinggi saja dalam satu siklus pelayanan
|
* tertinggi saja dalam satu siklus pelayanan
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> pRawDataBpjs0 = rawDataBpjs0.stream()
|
|
||||||
.filter(d -> Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")))
|
|
||||||
.sorted(Comparator.comparing(o -> Double.parseDouble(o.get("jumlah").toString()),
|
|
||||||
Comparator.reverseOrder()))
|
|
||||||
.sorted(Comparator.comparing(o -> Double.parseDouble(o.get("hargaJual").toString()),
|
|
||||||
Comparator.reverseOrder()))
|
|
||||||
.sorted(Comparator.comparing(o -> o.get("idPasienDaftar").toString())).collect(Collectors.toList());
|
|
||||||
List<String> listIdPelayananPasien = new ArrayList<>();
|
|
||||||
List<String> listIdPasienDaftar = new ArrayList<>();
|
|
||||||
for (Map<String, Object> b : pRawDataBpjs0)
|
|
||||||
if (!listIdPasienDaftar.contains(b.get("idPasienDaftar"))) {
|
|
||||||
listIdPasienDaftar.add(b.get("idPasienDaftar").toString());
|
|
||||||
listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
|
|
||||||
}
|
|
||||||
List<Map<String, Object>> rawDataBpjs1 = new ArrayList<>();
|
List<Map<String, Object>> rawDataBpjs1 = new ArrayList<>();
|
||||||
for (Map<String, Object> d : rawDataBpjs0) {
|
{
|
||||||
if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
List<Map<String, Object>> bpjsBedahSentral = rawDataBpjs0.stream()
|
||||||
&& listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) {
|
.filter(d -> Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen")))
|
||||||
rawDataBpjs1.add(d);
|
.sorted(Comparator.comparing(o -> Double.parseDouble(o.get("jumlah").toString()),
|
||||||
} else if (!Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) {
|
Comparator.reverseOrder()))
|
||||||
rawDataBpjs1.add(d);
|
.sorted(Comparator.comparing(o -> Double.parseDouble(o.get("hargaJual").toString()),
|
||||||
}
|
Comparator.reverseOrder()))
|
||||||
|
.sorted(Comparator.comparing(o -> o.get("idPasienDaftar").toString())).collect(Collectors.toList());
|
||||||
|
List<String> listIdPelayananPasien = new ArrayList<>();
|
||||||
|
List<String> listIdPasienDaftar = new ArrayList<>();
|
||||||
|
for (Map<String, Object> b : bpjsBedahSentral)
|
||||||
|
if (!listIdPasienDaftar.contains(b.get("idPasienDaftar"))) {
|
||||||
|
listIdPasienDaftar.add(b.get("idPasienDaftar").toString());
|
||||||
|
listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
|
||||||
|
}
|
||||||
|
for (Map<String, Object> d : rawDataBpjs0)
|
||||||
|
if (Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|
&& listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) {
|
||||||
|
rawDataBpjs1.add(d);
|
||||||
|
} else if (!Master.Departemen.BEDAH_SENTRAL.equals(d.get("idDepartemen"))) {
|
||||||
|
rawDataBpjs1.add(d);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Filter visite untuk pasien BPJS hanya diambil 1 kali di luar ICU dan
|
* Filter visite untuk pasien BPJS hanya diambil 1 kali di luar ICU dan
|
||||||
* NICU per hari per dokter
|
* NICU per hari per dokter
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> pRawDataBpjs1 = rawDataBpjs1.stream()
|
List<Map<String, Object>> rawDataBpjs2 = new ArrayList<>();
|
||||||
.filter(d -> !Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|
{
|
||||||
|
List<Map<String, Object>> visitBpjs = rawDataBpjs1.stream()
|
||||||
|
.filter(d -> !Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|
||||||
|
&& !Master.Ruangan.NICU.equals(d.get("idRuangan"))
|
||||||
|
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk")))
|
||||||
|
.sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))).collect(Collectors.toList());
|
||||||
|
List<String> listIdPelayananPasien = new ArrayList<>();
|
||||||
|
List<LocalDate> listLocalDate = new ArrayList<>();
|
||||||
|
LocalDate startDate = tglAwal.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
LocalDate endDate = tglAkhir.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
for (LocalDate dateDay = startDate; dateDay.isBefore(endDate); dateDay = dateDay.plusDays(1))
|
||||||
|
for (Map<String, Object> b : visitBpjs) {
|
||||||
|
LocalDate sDate = ((Date) b.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDate();
|
||||||
|
if (dateDay.equals(sDate) && !listLocalDate.contains(sDate)) {
|
||||||
|
listLocalDate.add(sDate);
|
||||||
|
listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Map<String, Object> d : rawDataBpjs1)
|
||||||
|
if (!Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|
||||||
&& !Master.Ruangan.NICU.equals(d.get("idRuangan"))
|
&& !Master.Ruangan.NICU.equals(d.get("idRuangan"))
|
||||||
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk")))
|
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))
|
||||||
.sorted(Comparator.comparing(o -> (Date) o.get("tglPelayanan"))).collect(Collectors.toList());
|
&& listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) {
|
||||||
|
rawDataBpjs2.add(d);
|
||||||
|
} else if (Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|
||||||
|
|| Master.Ruangan.NICU.equals(d.get("idRuangan"))
|
||||||
|
|| !Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))) {
|
||||||
|
rawDataBpjs2.add(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Alokasi data diurutkan dulu untuk jam kerja. Asumsi jam kerja dokter
|
* Alokasi data diurutkan dulu untuk jam kerja. Asumsi jam kerja dokter
|
||||||
* nonshift
|
* nonshift
|
||||||
@ -621,7 +649,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
* Offer data yang sudah diurutkan dalam queue
|
* Offer data yang sudah diurutkan dalam queue
|
||||||
*/
|
*/
|
||||||
Queue<Map<String, Object>> queuePelayanan = new ArrayDeque<>();
|
Queue<Map<String, Object>> queuePelayanan = new ArrayDeque<>();
|
||||||
rawDataBpjs1.forEach(pelayanan -> {
|
rawDataBpjs2.forEach(pelayanan -> {
|
||||||
queuePelayanan.offer(pelayanan);
|
queuePelayanan.offer(pelayanan);
|
||||||
});
|
});
|
||||||
listDataJamKerja.forEach(pelayanan -> {
|
listDataJamKerja.forEach(pelayanan -> {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user