Update IndikatorKinerja
Penyesuaian logbook poin dengan tarif baru dan perbaikan aturan remunerasi
This commit is contained in:
parent
a731aab9ea
commit
48bc3c7e4d
@ -233,6 +233,11 @@ public class Master {
|
|||||||
public static final class LogbookDokter {
|
public static final class LogbookDokter {
|
||||||
public static final boolean IS_TARIF_SATU_HARGA = true;
|
public static final boolean IS_TARIF_SATU_HARGA = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Komponen operator dari tarif konsultasi dokter spesialis
|
||||||
|
*/
|
||||||
|
public static final Double KOMPONEN_DASAR = 120000.0;
|
||||||
|
|
||||||
public static final Double PERSENTASE_TINDAKAN_ASISTEN_SPESIALIS = 15.0;
|
public static final Double PERSENTASE_TINDAKAN_ASISTEN_SPESIALIS = 15.0;
|
||||||
public static final Double PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA = 30.0;
|
public static final Double PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA = 30.0;
|
||||||
public static final Double PERSENTASE_TINDAKAN_DOKTER_ANASTESI = 15.0;
|
public static final Double PERSENTASE_TINDAKAN_DOKTER_ANASTESI = 15.0;
|
||||||
|
|||||||
@ -126,6 +126,11 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository<IndekKine
|
|||||||
+ "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga "
|
+ "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga "
|
||||||
+ "where harga.produkId = produk.id and harga.statusEnabled is false and harga.kelasId = :idKelasSatu) as hargaKelas1, "
|
+ "where harga.produkId = produk.id and harga.statusEnabled is false and harga.kelasId = :idKelasSatu) as hargaKelas1, "
|
||||||
+ "pelayananPasien.noRec as noRec, " + "coalesce(pelayananPasien.hargaSatuan, 0) as harga, "
|
+ "pelayananPasien.noRec as noRec, " + "coalesce(pelayananPasien.hargaSatuan, 0) as harga, "
|
||||||
|
+ "(select coalesce(ppd.hargaJual,0) from PelayananPasienDetail ppd "
|
||||||
|
+ "where ppd.pelayananPasienId = pelayananPasien.noRec "
|
||||||
|
+ "and ((ppd.komponenHargaId = 35 and jenisPetugas.id = 4) "
|
||||||
|
+ "or (ppd.komponenHargaId = 22 and jenisPetugas.id = 13) "
|
||||||
|
+ "or (ppd.komponenHargaId = 21 and jenisPetugas.id = 6))) as hargaKomponen, "
|
||||||
+ "coalesce(pelayananPasien.hargaDiscount,0) as diskon, " + "pelayananPasien.jumlah as count, "
|
+ "coalesce(pelayananPasien.hargaDiscount,0) as diskon, " + "pelayananPasien.jumlah as count, "
|
||||||
+ "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, "
|
+ "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, "
|
||||||
+ "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, "
|
+ "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, "
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.jasamedika.medifirst2000.service.impl;
|
package com.jasamedika.medifirst2000.service.impl;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -455,6 +456,14 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Double getPoinLogbookDokter(Double hargaKomponen, Boolean isDiskonJasamedis) {
|
||||||
|
if (isDiskonJasamedis) {
|
||||||
|
return 0.0;
|
||||||
|
} else {
|
||||||
|
return hargaKomponen / Master.LogbookDokter.KOMPONEN_DASAR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> findUraianTugas() {
|
public List<Map<String, Object>> findUraianTugas() {
|
||||||
Pegawai pegawai = this.getPegawaiByUserLogin();
|
Pegawai pegawai = this.getPegawaiByUserLogin();
|
||||||
@ -2646,6 +2655,17 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Date batasAkhirTarifLama() {
|
||||||
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
|
||||||
|
try {
|
||||||
|
return dateFormat.parse(GetSettingDataFixed("psbbperiod"));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> getAllTindakanByDokterReview(String periode, Integer idPegawai) {
|
public List<Map<String, Object>> getAllTindakanByDokterReview(String periode, Integer idPegawai) {
|
||||||
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR))
|
if (pegawaiDao.getPegawaiByKategoryPegawai(Arrays.asList(Master.KategoryPegawai.DOKTER_LUAR))
|
||||||
@ -2671,6 +2691,19 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
Double formatRpKontribusi = 0.0;
|
Double formatRpKontribusi = 0.0;
|
||||||
Double percentage = 0.0;
|
Double percentage = 0.0;
|
||||||
|
|
||||||
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
|
||||||
|
Date datePeriode = new Date();
|
||||||
|
Date dateAkhirTarifLama = batasAkhirTarifLama();
|
||||||
|
boolean isSatuTarif = true;
|
||||||
|
try {
|
||||||
|
datePeriode = dateFormat.parse(periode);
|
||||||
|
if (dateAkhirTarifLama != null && datePeriode.after(dateAkhirTarifLama)) {
|
||||||
|
isSatuTarif = false;
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
DecimalFormat df = new DecimalFormat("#.##");
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
@ -3083,7 +3116,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
&& (CommonUtil.isNullOrEmpty(map.get("statusDiskon")) || Integer
|
&& (CommonUtil.isNullOrEmpty(map.get("statusDiskon")) || Integer
|
||||||
.valueOf(map.get("statusDiskon").toString()).equals(0)))) {
|
.valueOf(map.get("statusDiskon").toString()).equals(0)))) {
|
||||||
countMap.put("count", map.get("count"));
|
countMap.put("count", map.get("count"));
|
||||||
if (CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
if (isSatuTarif && CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
||||||
countMap.put("harga", map.get("hargaKelas1"));
|
countMap.put("harga", map.get("hargaKelas1"));
|
||||||
} else {
|
} else {
|
||||||
countMap.put("harga", map.get("harga"));
|
countMap.put("harga", map.get("harga"));
|
||||||
@ -3106,7 +3139,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
&& Integer.parseInt(map.get("idKelas").toString()) == idKelas
|
&& Integer.parseInt(map.get("idKelas").toString()) == idKelas
|
||||||
&& Integer.parseInt(map.get("idJenisPelaksana").toString()) == idPelaksana) {
|
&& Integer.parseInt(map.get("idJenisPelaksana").toString()) == idPelaksana) {
|
||||||
countMap.put("count", map.get("count"));
|
countMap.put("count", map.get("count"));
|
||||||
if (CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
if (isSatuTarif && CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
||||||
countMap.put("harga", map.get("hargaKelas1"));
|
countMap.put("harga", map.get("hargaKelas1"));
|
||||||
} else {
|
} else {
|
||||||
countMap.put("harga", map.get("harga"));
|
countMap.put("harga", map.get("harga"));
|
||||||
@ -3129,7 +3162,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("count"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("count"))) {
|
||||||
if (Master.LogbookDokter.IS_TARIF_SATU_HARGA) {
|
if (Master.LogbookDokter.IS_TARIF_SATU_HARGA) {
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("hargaKelas1"))) {
|
if (isSatuTarif && CommonUtil.isNotNullOrEmpty(mapResult1.get("hargaKelas1"))) {
|
||||||
harga = Double.parseDouble(mapResult1.get("hargaKelas1").toString());
|
harga = Double.parseDouble(mapResult1.get("hargaKelas1").toString());
|
||||||
} else {
|
} else {
|
||||||
harga = Double.parseDouble(mapResult1.get("harga").toString());
|
harga = Double.parseDouble(mapResult1.get("harga").toString());
|
||||||
@ -3177,9 +3210,16 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
percentage = percentage / 100;
|
if (datePeriode.after(dateAkhirTarifLama)) {
|
||||||
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
point = getPoinLogbookDokter(
|
||||||
isDiskonJasamedis1);
|
Double.parseDouble(mapResult1.get("hargaKomponen").toString()),
|
||||||
|
isDiskonJasamedis1);
|
||||||
|
} else {
|
||||||
|
percentage = percentage / 100;
|
||||||
|
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
||||||
|
isDiskonJasamedis1);
|
||||||
|
}
|
||||||
|
|
||||||
pointQty = point * totalProduk1.doubleValue();
|
pointQty = point * totalProduk1.doubleValue();
|
||||||
formatPointQty = Double.parseDouble(df.format(pointQty));
|
formatPointQty = Double.parseDouble(df.format(pointQty));
|
||||||
|
|
||||||
@ -3221,7 +3261,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
result.add(mapResult1);
|
result.add(mapResult1);
|
||||||
}
|
}
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("count"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("count"))) {
|
||||||
if (Master.LogbookDokter.IS_TARIF_SATU_HARGA) {
|
if (isSatuTarif) {
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("hargaKelas1"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("hargaKelas1"))) {
|
||||||
harga = Double.parseDouble(mapResult2.get("hargaKelas1").toString());
|
harga = Double.parseDouble(mapResult2.get("hargaKelas1").toString());
|
||||||
} else {
|
} else {
|
||||||
@ -3270,9 +3310,16 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
percentage = percentage / 100;
|
if (datePeriode.after(dateAkhirTarifLama)) {
|
||||||
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
point = getPoinLogbookDokter(
|
||||||
isDiskonJasamedis2);
|
Double.parseDouble(mapResult2.get("hargaKomponen").toString()),
|
||||||
|
isDiskonJasamedis2);
|
||||||
|
} else {
|
||||||
|
percentage = percentage / 100;
|
||||||
|
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
||||||
|
isDiskonJasamedis2);
|
||||||
|
}
|
||||||
|
|
||||||
pointQty = point * totalProduk2.doubleValue();
|
pointQty = point * totalProduk2.doubleValue();
|
||||||
formatPointQty = Double.parseDouble(df.format(pointQty));
|
formatPointQty = Double.parseDouble(df.format(pointQty));
|
||||||
|
|
||||||
@ -3816,6 +3863,19 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
Double totalPoint = 0.0;
|
Double totalPoint = 0.0;
|
||||||
Long tindakanTotal = 0L;
|
Long tindakanTotal = 0L;
|
||||||
|
|
||||||
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
|
||||||
|
Date datePeriode = new Date();
|
||||||
|
Date dateAkhirTarifLama = batasAkhirTarifLama();
|
||||||
|
boolean isSatuTarif = true;
|
||||||
|
try {
|
||||||
|
datePeriode = dateFormat.parse(periode);
|
||||||
|
if (dateAkhirTarifLama != null && datePeriode.after(dateAkhirTarifLama)) {
|
||||||
|
isSatuTarif = false;
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
int maxday = monitoringAbsenService.iterateDate(periode + "-01");
|
int maxday = monitoringAbsenService.iterateDate(periode + "-01");
|
||||||
|
|
||||||
List<Integer> drAnastesiList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_ANESTESI);
|
List<Integer> drAnastesiList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_ANESTESI);
|
||||||
@ -4218,7 +4278,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
&& (CommonUtil.isNullOrEmpty(map.get("statusDiskon")) || Integer
|
&& (CommonUtil.isNullOrEmpty(map.get("statusDiskon")) || Integer
|
||||||
.valueOf(map.get("statusDiskon").toString()).equals(0)))) {
|
.valueOf(map.get("statusDiskon").toString()).equals(0)))) {
|
||||||
countMap.put("count", map.get("count"));
|
countMap.put("count", map.get("count"));
|
||||||
if (CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
if (isSatuTarif && CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
||||||
countMap.put("harga", map.get("hargaKelas1"));
|
countMap.put("harga", map.get("hargaKelas1"));
|
||||||
} else {
|
} else {
|
||||||
countMap.put("harga", map.get("harga"));
|
countMap.put("harga", map.get("harga"));
|
||||||
@ -4239,7 +4299,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
&& Integer.parseInt(map.get("idKelas").toString()) == idKelas
|
&& Integer.parseInt(map.get("idKelas").toString()) == idKelas
|
||||||
&& Integer.parseInt(map.get("idJenisPelaksana").toString()) == idPelaksana) {
|
&& Integer.parseInt(map.get("idJenisPelaksana").toString()) == idPelaksana) {
|
||||||
countMap.put("count", map.get("count"));
|
countMap.put("count", map.get("count"));
|
||||||
if (CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
if (isSatuTarif && CommonUtil.isNotNullOrEmpty(map.get("hargaKelas1"))) {
|
||||||
countMap.put("harga", map.get("hargaKelas1"));
|
countMap.put("harga", map.get("hargaKelas1"));
|
||||||
} else {
|
} else {
|
||||||
countMap.put("harga", map.get("harga"));
|
countMap.put("harga", map.get("harga"));
|
||||||
@ -4259,7 +4319,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("count"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("count"))) {
|
||||||
if (Master.LogbookDokter.IS_TARIF_SATU_HARGA) {
|
if (isSatuTarif) {
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("hargaKelas1"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult1.get("hargaKelas1"))) {
|
||||||
harga = Double.parseDouble(mapResult1.get("hargaKelas1").toString());
|
harga = Double.parseDouble(mapResult1.get("hargaKelas1").toString());
|
||||||
} else {
|
} else {
|
||||||
@ -4308,9 +4368,16 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
percentage = percentage / 100;
|
if (datePeriode.after(dateAkhirTarifLama)) {
|
||||||
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
point = getPoinLogbookDokter(
|
||||||
isDiskonJasamedis1);
|
Double.parseDouble(mapResult1.get("hargaKomponen").toString()),
|
||||||
|
isDiskonJasamedis1);
|
||||||
|
} else {
|
||||||
|
percentage = percentage / 100;
|
||||||
|
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
||||||
|
isDiskonJasamedis1);
|
||||||
|
}
|
||||||
|
|
||||||
pointQty = point * totalTindakan1.doubleValue();
|
pointQty = point * totalTindakan1.doubleValue();
|
||||||
|
|
||||||
tindakanTotal += totalTindakan1.longValue();
|
tindakanTotal += totalTindakan1.longValue();
|
||||||
@ -4331,7 +4398,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
result.add(mapResult1);
|
result.add(mapResult1);
|
||||||
}
|
}
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("count"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("count"))) {
|
||||||
if (Master.LogbookDokter.IS_TARIF_SATU_HARGA) {
|
if (isSatuTarif) {
|
||||||
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("hargaKelas1"))) {
|
if (CommonUtil.isNotNullOrEmpty(mapResult2.get("hargaKelas1"))) {
|
||||||
harga = Double.parseDouble(mapResult2.get("hargaKelas1").toString());
|
harga = Double.parseDouble(mapResult2.get("hargaKelas1").toString());
|
||||||
} else {
|
} else {
|
||||||
@ -4380,9 +4447,16 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
percentage = percentage / 100;
|
if (datePeriode.after(dateAkhirTarifLama)) {
|
||||||
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
point = getPoinLogbookDokter(
|
||||||
isDiskonJasamedis2);
|
Double.parseDouble(mapResult2.get("hargaKomponen").toString()),
|
||||||
|
isDiskonJasamedis2);
|
||||||
|
} else {
|
||||||
|
percentage = percentage / 100;
|
||||||
|
point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI,
|
||||||
|
isDiskonJasamedis2);
|
||||||
|
}
|
||||||
|
|
||||||
pointQty = point * totalTindakan2.doubleValue();
|
pointQty = point * totalTindakan2.doubleValue();
|
||||||
|
|
||||||
tindakanTotal += totalTindakan2.longValue();
|
tindakanTotal += totalTindakan2.longValue();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user