Update PelayananPasienServiceImpl.java
Penerapan aturan icu dan nicu pasien bpjs visite maksimal 2 kali sehari di logbook dokter remun baru
This commit is contained in:
parent
03faba36de
commit
cec06a965a
@ -551,8 +551,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Filter visite untuk pasien BPJS hanya diambil 1 kali di luar ICU dan
|
* Filter visite untuk pasien BPJS hanya diambil maksimal 1 kali di luar
|
||||||
* NICU per hari per dokter
|
* ICU dan NICU per hari per dokter
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> rawDataBpjs2 = new ArrayList<>();
|
List<Map<String, Object>> rawDataBpjs2 = new ArrayList<>();
|
||||||
{
|
{
|
||||||
@ -586,6 +586,45 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
rawDataBpjs2.add(d);
|
rawDataBpjs2.add(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Filter visite untuk pasien BPJS hanya diambil maksimal 2 kali di ICU
|
||||||
|
* dan NICU per hari per dokter
|
||||||
|
*/
|
||||||
|
List<Map<String, Object>> rawDataBpjs3 = new ArrayList<>();
|
||||||
|
{
|
||||||
|
List<Map<String, Object>> visitBpjs = rawDataBpjs2.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)) {
|
||||||
|
int count = 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) && count <= 2) {
|
||||||
|
listLocalDate.add(sDate);
|
||||||
|
listIdPelayananPasien.add(b.get("idPelayananPasien").toString());
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Map<String, Object> d : rawDataBpjs2)
|
||||||
|
if ((Master.Ruangan.ICU_PICU.equals(d.get("idRuangan"))
|
||||||
|
|| Master.Ruangan.NICU.equals(d.get("idRuangan")))
|
||||||
|
&& Master.GolonganProduk.VISIT.equals(d.get("idGolonganProduk"))
|
||||||
|
&& listIdPelayananPasien.contains(d.get("idPelayananPasien").toString())) {
|
||||||
|
rawDataBpjs3.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"))) {
|
||||||
|
rawDataBpjs3.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
|
||||||
@ -649,7 +688,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<>();
|
||||||
rawDataBpjs2.forEach(pelayanan -> {
|
rawDataBpjs3.forEach(pelayanan -> {
|
||||||
queuePelayanan.offer(pelayanan);
|
queuePelayanan.offer(pelayanan);
|
||||||
});
|
});
|
||||||
listDataJamKerja.forEach(pelayanan -> {
|
listDataJamKerja.forEach(pelayanan -> {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user