Update service pelayanan pasien

Penambahan pengelompokan jenis ruangan untuk membedakan reguler dan eksekutif di logbook dokter remun baru
This commit is contained in:
Salman Manoe 2023-05-23 09:07:16 +07:00
parent b1cf562a3b
commit c43e6fb74a
2 changed files with 67 additions and 54 deletions

View File

@ -212,8 +212,9 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "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.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal,"
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP,"
+ "apd.ruanganId as idRuangan,ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar, "
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "apd.ruanganId as idRuangan,"
+ "case when lower(ru.namaRuangan) like '%eksekutif%' then 'Eksekutif' else 'Reguler' end as jenisRuangan,"
+ "ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar, "
+ "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 "
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "left join pp.produk pr "
@ -235,6 +236,7 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0),"
+ "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd')," + "apd.noRec,apd.pegawaiId," + "apd.ruanganId,"
+ "case when lower(ru.namaRuangan) like '%eksekutif%' then 'Eksekutif' else 'Reguler' end,"
+ "ru.departemenId," + "pd.noRec " + "order by case when pd.kelompokPasienId = 2 then 1 "
+ "when pd.kelompokPasienId = 4 then 2 " + "when pd.kelompokPasienId = 8 then 3 "
+ "when pd.kelompokPasienId = 9 then 4 " + "when pd.kelompokPasienId = 1 then 5 "

View File

@ -1240,6 +1240,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<Double> listHargaJual = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> listTanggal = new ArrayList<>();
List<String> listJenisRuangan = new ArrayList<>();
Map<String, Object> remunFfs = this.splitRemunFfs(idPegawai, bulan);
@SuppressWarnings("unchecked")
List<Map<String, Object>> listData = (List<Map<String, Object>>) remunFfs.get("ffs");
@ -1327,6 +1328,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
listIdKelompokPasien.add(Integer.valueOf(d.get("idKelompokPasien").toString()));
if (!listTanggal.contains(d.get("tanggal")))
listTanggal.add(d.get("tanggal").toString());
if (!listJenisRuangan.contains(d.get("jenisRuangan")))
listJenisRuangan.add(d.get("jenisRuangan").toString());
});
/*
* Pengelompokkan tanggal pelayanan
@ -1335,27 +1338,30 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
for (String persenJasa : listPersenJasa) {
for (Double hargaJual : listHargaJual) {
for (Integer idKelompokPasien : listIdKelompokPasien) {
for (String tanggal : listTanggal) {
Map<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> map : listData) {
if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& hargaJual.equals(map.get("hargaJual"))
&& idKelompokPasien.equals(map.get("idKelompokPasien"))
&& tanggal.equals(map.get("tanggal"))) {
jumlah += Double.parseDouble(map.get("jumlah").toString());
norecs.add(map.get("idPelayananPasien").toString());
dataHitungKe++;
if (dataHitungKe == 1)
mapData.putAll(map);
for (String jenisRuangan : listJenisRuangan) {
for (String tanggal : listTanggal) {
Map<String, Object> mapData = new HashMap<>();
double jumlah = 0.0;
List<String> norecs = new ArrayList<>();
int dataHitungKe = 0;
for (Map<String, Object> map : listData) {
if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& hargaJual.equals(map.get("hargaJual"))
&& idKelompokPasien.equals(map.get("idKelompokPasien"))
&& jenisRuangan.equals(map.get("jenisRuangan"))
&& tanggal.equals(map.get("tanggal"))) {
jumlah += Double.parseDouble(map.get("jumlah").toString());
norecs.add(map.get("idPelayananPasien").toString());
dataHitungKe++;
if (dataHitungKe == 1)
mapData.putAll(map);
}
}
if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) {
mapData.put("jumlah", jumlah);
mapData.put("norecs", norecs);
dataTanggal.add(mapData);
}
}
if (CommonUtil.isNotNullOrEmpty(mapData.get("jumlah"))) {
mapData.put("jumlah", jumlah);
mapData.put("norecs", norecs);
dataTanggal.add(mapData);
}
}
}
@ -1369,38 +1375,41 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
for (String persenJasa : listPersenJasa) {
for (Double hargaJual : listHargaJual) {
for (Integer idKelompokPasien : listIdKelompokPasien) {
Map<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> mapCount = new HashMap<>();
if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& hargaJual.equals(map.get("hargaJual"))
&& idKelompokPasien.equals(map.get("idKelompokPasien"))) {
mapCount.put("jumlah", map.get("jumlah"));
mapCount.put("norecs", map.get("norecs"));
mapCount.put("tanggal", map.get("tanggal"));
detail.add(mapCount);
counter++;
jumlah += Double.parseDouble(map.get("jumlah").toString());
if (counter == 1)
mapResult.putAll(map);
for (String jenisRuangan : listJenisRuangan) {
Map<String, Object> mapResult = new HashMap<>();
List<Map<String, Object>> detail = new ArrayList<>();
int counter = 0;
double jumlah = 0.0;
double jumlahHargaJasa = 0.0;
for (Map<String, Object> map : dataTanggal) {
Map<String, Object> mapCount = new HashMap<>();
if (idProduk.equals(map.get("idProduk")) && persenJasa.equals(map.get("persenJasa"))
&& hargaJual.equals(map.get("hargaJual"))
&& idKelompokPasien.equals(map.get("idKelompokPasien"))
&& jenisRuangan.equals(map.get("jenisRuangan"))) {
mapCount.put("jumlah", map.get("jumlah"));
mapCount.put("norecs", map.get("norecs"));
mapCount.put("tanggal", map.get("tanggal"));
detail.add(mapCount);
counter++;
jumlah += Double.parseDouble(map.get("jumlah").toString());
if (counter == 1)
mapResult.putAll(map);
}
}
if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) {
/*
* Tambahkan data total
*/
jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString());
mapResult.put("jumlah", jumlah);
mapResult.put("jumlahHargaJasa", jumlahHargaJasa);
/*
* Tambahkan data detail
*/
mapResult.put("detail", detail);
result.add(mapResult);
}
}
if (CommonUtil.isNotNullOrEmpty(mapResult.get("jumlah"))) {
/*
* Tambahkan data total
*/
jumlahHargaJasa = jumlah * Double.parseDouble(mapResult.get("hargaJasa").toString());
mapResult.put("jumlah", jumlah);
mapResult.put("jumlahHargaJasa", jumlahHargaJasa);
/*
* Tambahkan data detail
*/
mapResult.put("detail", detail);
result.add(mapResult);
}
}
}
@ -1416,7 +1425,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()),
Comparator.nullsLast(Comparator.naturalOrder())))
.sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())).collect(Collectors.toList());
.sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString()))
.sorted(Comparator.comparing(o5 -> o5.get("jenisRuangan").toString(), Comparator.reverseOrder()))
.collect(Collectors.toList());
result.forEach(r -> {
/*
* Hapus informasi tidak perlu