From 735d02ab7fd17a6fc55df4b6719493b9d8573f61 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Thu, 18 Mar 2021 09:02:45 +0700 Subject: [PATCH] penerapan diskon jasamedis 100% di logbook dokter --- .../medifirst2000/dao/PendapatanDao.java | 100 ++---- .../medifirst2000/dao/RevIndekKinerjaDao.java | 331 +++++++----------- .../service/IndekKinerjaService.java | 151 ++++---- .../service/impl/IndekKinerjaServiceImpl.java | 53 ++- 4 files changed, 290 insertions(+), 345 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PendapatanDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PendapatanDao.java index a9594b66..afab9b78 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PendapatanDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PendapatanDao.java @@ -17,78 +17,50 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; @Repository("pendapatanDao") public interface PendapatanDao extends PagingAndSortingRepository { - String pendapatanDokterStr = "select new Map(dokter.id as idPegawai, " - + "dokter.namaLengkap as nama, " - + "jenisPetugas.id as idJenisPelaksana, " - + "detail.id as detailId, " - + "detail.detailJenisProduk as detailJenisProduk, " - + "produk.id as idProduk, " - + "produk.namaProduk as namaProduk, " - + "kelas.id as idKelas, " - + "kelas.namaKelas as namaKelas, " + String pendapatanDokterStr = "select new Map(dokter.id as idPegawai, " + "dokter.namaLengkap as nama, " + + "jenisPetugas.id as idJenisPelaksana, " + "detail.id as detailId, " + + "detail.detailJenisProduk as detailJenisProduk, " + "produk.id as idProduk, " + + "produk.namaProduk as namaProduk, " + "kelas.id as idKelas, " + "kelas.namaKelas as namaKelas, " + "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga " + "where harga.produkId = produk.id and harga.statusEnabled is true and harga.kelasId = kelas.id " + "and harga.kelasId = pelayananPasien.kelasId) as hargaKelas, " + "(select distinct coalesce(hargaD.hargaNetto1, 0) from HargaNettoProdukByKelasD hargaD " - + "left join hargaD.komponenHarga komponenHarga " - + "where hargaD.statusEnabled is true " + + "left join hargaD.komponenHarga komponenHarga " + "where hargaD.statusEnabled is true " + "and hargaD.produkId = produk.id and hargaD.produkId = pelayananPasien.produkId " + "and hargaD.kelasId = kelas.id and hargaD.kelasId = pelayananPasien.kelasId " + "and komponenHarga.id = pelayananPasienDetail.komponenHargaId) as tarifJasa, " - + "pelayananPasien.hargaSatuan as harga, " - + "pelayananPasien.jumlah as count, " - + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, " + + "pelayananPasien.hargaSatuan as harga, " + "pelayananPasien.hargaDiscount as diskon, " + + "pelayananPasien.jumlah as count, " + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, " + "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, " + "coalesce(pelayananPasienDetail.hargaJual, 0) as hargaJual," + "coalesce(pelayananPasienDetail.hargaDiscount, 0) as hargaDiskon," - + "pelayananPasienDetail.komponenHargaId as idJasa," - + "pasienDaftar.kelompokPasienId as kelompokPasienId, " - + "kategoryPegawai.id as kategoryPegawaiId, " - + "departemen.id as departemenId, " - + "ruangan.id as ruanganId, " - + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " - + "shift.jamMasuk as jamMasuk, " - + "shift.jamPulang as jamPulang, " - + "shift.namaShift as namaShift) " - + "from PelayananPasienPetugas pelayananPasienPetugas, " - + "PelayananPasienDetail pelayananPasienDetail, " - + "PegawaiJadwalKerja jadwalKerja, " - + "Kalender kalender, " - + "ShiftKerja shift " + + "pelayananPasienDetail.komponenHargaId as idJasa," + "pasienDaftar.kelompokPasienId as kelompokPasienId, " + + "pasienDaftar.isDiskonPegawai as statusDiskon, " + "kategoryPegawai.id as kategoryPegawaiId, " + + "departemen.id as departemenId, " + "ruangan.id as ruanganId, " + + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " + "shift.jamMasuk as jamMasuk, " + + "shift.jamPulang as jamPulang, " + "shift.namaShift as namaShift) " + + "from PelayananPasienPetugas pelayananPasienPetugas, " + "PelayananPasienDetail pelayananPasienDetail, " + + "PegawaiJadwalKerja jadwalKerja, " + "Kalender kalender, " + "ShiftKerja shift " + "left join pelayananPasienPetugas.pelayananPasien pelayananPasien " + "left join pelayananPasienPetugas.kdjenispetugaspe jenisPetugas " - + "left join pelayananPasienPetugas.kdpegawai dokter " - + "left join pelayananPasien.produk produk " - + "left join pelayananPasien.kelas kelas " - + "left join pelayananPasien.pasienDaftar antrian " - + "left join dokter.kategoryPegawai kategoryPegawai " - + "left join produk.detailJenisProduk detail " - + "left join antrian.ruangan ruangan " - + "left join antrian.pasienDaftar pasienDaftar " - + "left join detail.jenisProduk jenisProduk " - + "left join ruangan.departemen departemen " + + "left join pelayananPasienPetugas.kdpegawai dokter " + "left join pelayananPasien.produk produk " + + "left join pelayananPasien.kelas kelas " + "left join pelayananPasien.pasienDaftar antrian " + + "left join dokter.kategoryPegawai kategoryPegawai " + "left join produk.detailJenisProduk detail " + + "left join antrian.ruangan ruangan " + "left join antrian.pasienDaftar pasienDaftar " + + "left join detail.jenisProduk jenisProduk " + "left join ruangan.departemen departemen " + "where pelayananPasien.noRec = pelayananPasienDetail.pelayananPasienId " + "and pelayananPasienDetail.pasienDaftarId = antrian.noRec " - + "and pelayananPasienDetail.produkId = produk.id " - + "and dokter.id = jadwalKerja.pegawaiId " - + "and kalender.id = jadwalKerja.tanggalId " - + "and shift.id = jadwalKerja.shiftId " + + "and pelayananPasienDetail.produkId = produk.id " + "and dokter.id = jadwalKerja.pegawaiId " + + "and kalender.id = jadwalKerja.tanggalId " + "and shift.id = jadwalKerja.shiftId " + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + "and pelayananPasienPetugas.statusEnabled is not false " - + "and pelayananPasien.statusEnabled is not false " - + "and antrian.statusEnabled is not false " - + "and pasienDaftar.statusEnabled is not false " - + "and pelayananPasienDetail.statusEnabled is true " - + "and jenisPetugas.statusEnabled is true " - + "and dokter.statusEnabled is true " - + "and produk.statusEnabled is true " - + "and detail.statusEnabled is true " - + "and kelas.statusEnabled is true " - + "and kategoryPegawai.statusEnabled is true " - + "and ruangan.statusEnabled is true " - + "and departemen.statusEnabled is true " - + "and jenisProduk.statusEnabled is true " - + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + + "and pelayananPasien.statusEnabled is not false " + "and antrian.statusEnabled is not false " + + "and pasienDaftar.statusEnabled is not false " + "and pelayananPasienDetail.statusEnabled is true " + + "and jenisPetugas.statusEnabled is true " + "and dokter.statusEnabled is true " + + "and produk.statusEnabled is true " + "and detail.statusEnabled is true " + + "and kelas.statusEnabled is true " + "and kategoryPegawai.statusEnabled is true " + + "and ruangan.statusEnabled is true " + "and departemen.statusEnabled is true " + + "and jenisProduk.statusEnabled is true " + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + "and jenisPetugas.id <> :idPetugasPelaksana " + "and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :month "; @@ -101,10 +73,11 @@ public interface PendapatanDao extends PagingAndSortingRepository> findByIdUser(@Param("id") Integer id, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("listIdJenisProduk") List listIdJenisProduk); - + @Query(" select new Map( pelayananPasien.tglPelayanan as tglPelayanan,jenisProduk.id as idJenisProduk," + " produk.namaProduk as namaProduk, produk.id as idProduk, kelas.namaKelas as namaKelas)" + " from PelayananPasienPetugas pelayananPasienPetugas" @@ -37,13 +37,12 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository> findTindakanByIdUser(@Param("id") Integer id, @Param("startDate") String startDate, - @Param("endDate") String endDate, @Param("idProduk") Integer idProduk, + @Param("endDate") String endDate, @Param("idProduk") Integer idProduk, @Param("listIdJenisProduk") List listIdJenisProduk); - + @Query(" select new Map( pelayananPasien.tglPelayanan as tglPelayanan,jenisProduk.id as idJenisProduk," + " produk.namaProduk as namaProduk, produk.id as idProduk, kelas.namaKelas as namaKelas)" + " from PelayananPasienPetugas pelayananPasienPetugas" @@ -55,7 +54,7 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository> findTindakanByIdUser(@Param("id") Integer id, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("listIdJenisProduk") List listIdJenisProduk); - + @Query(" select distinct new Map(produk.id as id, produk.namaProduk as namaProduk)" + " from PelayananPasienPetugas pelayananPasienPetugas" + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" @@ -64,8 +63,9 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository> getAllTindakanByPeriod(@Param("id") Integer id, @Param("startDate") String startDate, - @Param("endDate") String endDate, @Param("listIdJenisProduk") List listIdJenisProduk); + public List> getAllTindakanByPeriod(@Param("id") Integer id, + @Param("startDate") String startDate, @Param("endDate") String endDate, + @Param("listIdJenisProduk") List listIdJenisProduk); String QueryList = "select new map(case when pelayananPasienPetugas.kdjenispetugaspe.id in (6,13) then pelayananPasienPetugas.kdjenispetugaspe.id else 4 end as idJenisPelaksana, " + "detail.id as detailId,detail.detailJenisProduk as detailJenisProduk" @@ -75,32 +75,29 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository 2 " + " and pelayananPasienPetugas.ObjectPegawaiId =:id " -// + " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :month " + // + " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :month + // " + " and detail.id in (:listIdJenisProduk) "; String orderList = " group by case when pelayananPasienPetugas.kdjenispetugaspe.id in (6,13) then pelayananPasienPetugas.kdjenispetugaspe.id else 4 end, detail.id ,detail.detailJenisProduk ,produk.namaProduk , produk.id , kelas.namaKelas , " - + " kelas.id,pelayananPasien.hargaSatuan " - + " order by produk.namaProduk, kelas.namaKelas asc "; - + + " kelas.id,pelayananPasien.hargaSatuan " + " order by produk.namaProduk, kelas.namaKelas asc "; + String monthPelayanan = " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :month "; - + String tanggalPelayanan = " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') = :tanggal "; @Query(QueryList + monthPelayanan + orderList) public List> findIdProdukByIdUser(@Param("id") Integer id, @Param("month") String month, @Param("listIdJenisProduk") List listIdJenisProduk); - + @Query(QueryList + tanggalPelayanan + orderList) - public List> findIdProdukHarianByIdUser(@Param("id") Integer id, @Param("tanggal") String tanggal, - @Param("listIdJenisProduk") List listIdJenisProduk); + public List> findIdProdukHarianByIdUser(@Param("id") Integer id, + @Param("tanggal") String tanggal, @Param("listIdJenisProduk") List listIdJenisProduk); @Query(" select distinct new Map (jenisProduk.id as idJenisProduk, CAST(sum(pelayananPasien.jumlah) as long) as count ," + " produk.namaProduk as namaProduk, produk.id as idProduk)" @@ -113,246 +110,170 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository> findCountTindakanByIdUser(@Param("id") Integer id, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("listIdJenisProduk") List listIdJenisProduk); - - - @Query(" select distinct CAST(sum(pelayananPasien.jumlah) as long) as capaian " + + @Query(" select distinct CAST(sum(pelayananPasien.jumlah) as long) as capaian " + " from PelayananPasienPetugas pelayananPasienPetugas " + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" + " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail" + " left join pelayananPasien.kelas kelas " + " left join detail.jenisProduk jenisProduk " + " where pelayananPasienPetugas.ObjectPegawaiId=:id and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + " between :startDate and :endDate and detail.id in :listIdJenisProduk") - public Long findTotalTindakan(@Param("id") Integer id, - @Param("startDate") String startDate,@Param("endDate") String endDate, - @Param("listIdJenisProduk") List listIdJenisProduk ); - - String tindakanDokterQuery = "select new Map(dokter.id as idPegawai, " - + "jenisPetugas.id as idJenisPelaksana, " - + "detail.id as detailId, " - + "detail.detailJenisProduk as detailJenisProduk, " - + "produk.id as idProduk, " - + "produk.namaProduk as namaProduk, " - + "kelas.id as idKelas, " - + "kelas.namaKelas as namaKelas, " + public Long findTotalTindakan(@Param("id") Integer id, @Param("startDate") String startDate, + @Param("endDate") String endDate, @Param("listIdJenisProduk") List listIdJenisProduk); + + String tindakanDokterQuery = "select new Map(dokter.id as idPegawai, " + "jenisPetugas.id as idJenisPelaksana, " + + "detail.id as detailId, " + "detail.detailJenisProduk as detailJenisProduk, " + "produk.id as idProduk, " + + "produk.namaProduk as namaProduk, " + "kelas.id as idKelas, " + "kelas.namaKelas as namaKelas, " + "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga " + "where harga.produkId = produk.id and harga.statusEnabled is true and harga.kelasId = :idKelasSatu) as hargaKelas1, " - + "pelayananPasien.hargaSatuan as harga, " - + "pelayananPasien.jumlah as count, " - + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, " + + "pelayananPasien.hargaSatuan as harga, " + "pelayananPasien.hargaDiscount as diskon, " + + "pelayananPasien.jumlah as count, " + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tanggal, " + "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, " - + "pasienDaftar.kelompokPasienId as kelompokPasienId, " - + "kategoryPegawai.id as kategoryPegawaiId, " - + "departemen.id as departemenId, " - + "ruangan.id as ruanganId, " - + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " - + "shift.jamMasuk as jamMasuk, " - + "shift.jamPulang as jamPulang, " - + "shift.namaShift as namaShift) " - + "from PelayananPasienPetugas pelayananPasienPetugas, " - + "PegawaiJadwalKerja jadwalKerja, " - + "Kalender kalender, " - + "ShiftKerja shift " + + "pasienDaftar.kelompokPasienId as kelompokPasienId, " + "pasienDaftar.isDiskonPegawai as statusDiskon, " + + "kategoryPegawai.id as kategoryPegawaiId, " + "departemen.id as departemenId, " + + "ruangan.id as ruanganId, " + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " + + "shift.jamMasuk as jamMasuk, " + "shift.jamPulang as jamPulang, " + "shift.namaShift as namaShift) " + + "from PelayananPasienPetugas pelayananPasienPetugas, " + "PegawaiJadwalKerja jadwalKerja, " + + "Kalender kalender, " + "ShiftKerja shift " + "left join pelayananPasienPetugas.pelayananPasien pelayananPasien " + "left join pelayananPasienPetugas.kdjenispetugaspe jenisPetugas " - + "left join pelayananPasienPetugas.kdpegawai dokter " - + "left join pelayananPasien.produk produk " - + "left join pelayananPasien.kelas kelas " - + "left join pelayananPasien.pasienDaftar antrian " - + "left join dokter.kategoryPegawai kategoryPegawai " - + "left join produk.detailJenisProduk detail " - + "left join antrian.ruangan ruangan " - + "left join antrian.pasienDaftar pasienDaftar " - + "left join detail.jenisProduk jenisProduk " - + "left join ruangan.departemen departemen " - + "where dokter.id = jadwalKerja.pegawaiId " - + "and kalender.id = jadwalKerja.tanggalId " + + "left join pelayananPasienPetugas.kdpegawai dokter " + "left join pelayananPasien.produk produk " + + "left join pelayananPasien.kelas kelas " + "left join pelayananPasien.pasienDaftar antrian " + + "left join dokter.kategoryPegawai kategoryPegawai " + "left join produk.detailJenisProduk detail " + + "left join antrian.ruangan ruangan " + "left join antrian.pasienDaftar pasienDaftar " + + "left join detail.jenisProduk jenisProduk " + "left join ruangan.departemen departemen " + + "where dokter.id = jadwalKerja.pegawaiId " + "and kalender.id = jadwalKerja.tanggalId " + "and shift.id = jadwalKerja.shiftId " + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + "and (pelayananPasienPetugas.statusEnabled is null or pelayananPasienPetugas.statusEnabled is true) " + "and (pelayananPasien.statusEnabled is null or pelayananPasien.statusEnabled is true) " + "and (antrian.statusEnabled is null or antrian.statusEnabled is true) " + "and (pasienDaftar.statusEnabled is null or pasienDaftar.statusEnabled is true) " - + "and jenisPetugas.statusEnabled is true " - + "and dokter.statusEnabled is true " - + "and produk.statusEnabled is true " - + "and detail.statusEnabled is true " - + "and kelas.statusEnabled is true " - + "and kategoryPegawai.statusEnabled is true " - + "and ruangan.statusEnabled is true " - + "and departemen.statusEnabled is true " - + "and jenisProduk.statusEnabled is true " - + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + + "and jenisPetugas.statusEnabled is true " + "and dokter.statusEnabled is true " + + "and produk.statusEnabled is true " + "and detail.statusEnabled is true " + + "and kelas.statusEnabled is true " + "and kategoryPegawai.statusEnabled is true " + + "and ruangan.statusEnabled is true " + "and departemen.statusEnabled is true " + + "and jenisProduk.statusEnabled is true " + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + "and jenisPetugas.id <> :idPetugasPelaksana " + "and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :month "; - + String orderGrid = "order by produk.namaProduk, kelas.namaKelas, to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')"; - + String orderCetak = "order by to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd'), produk.namaProduk, kelas.namaKelas"; - + @Query(tindakanDokterQuery + orderGrid) - public List> getAllTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, @Param("idPegawai") Integer idPegawai, - @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("month") String month); - + public List> getAllTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idPegawai") Integer idPegawai, @Param("idPetugasPelaksana") int idPetugasPelaksana, + @Param("month") String month); + @Query(tindakanDokterQuery + orderCetak) - public List> getAllTindakanDokterCetak(@Param("idKelasSatu") Integer idKelasSatu, @Param("idPegawai") Integer idPegawai, - @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("month") String month); - + public List> getAllTindakanDokterCetak(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idPegawai") Integer idPegawai, @Param("idPetugasPelaksana") int idPetugasPelaksana, + @Param("month") String month); + String detailPasienQuery = "select new Map(pelayananPasienPetugas.noRec as norecPetugas," - + "ruangan.namaRuangan as ruangan," - + "pelayananPasien.noRec as noRecPelayananPasien," - + "detail.id as detailId, " - + "produk.namaProduk as namaProduk," - + "pasien.namaPasien as namapasien," - + "pasien.noCm as noCm," - + "pasien.tglLahir as tglLahir," - + "pasienDaftar.noRegistrasi as noRegistrasi," - + "pasienDaftar.tglRegistrasi as tglRegistrasi," - + "pelayananPasien.hargaSatuan as harga," + + "ruangan.namaRuangan as ruangan," + "pelayananPasien.noRec as noRecPelayananPasien," + + "detail.id as detailId, " + "produk.namaProduk as namaProduk," + "pasien.namaPasien as namapasien," + + "pasien.noCm as noCm," + "pasien.tglLahir as tglLahir," + "pasienDaftar.noRegistrasi as noRegistrasi," + + "pasienDaftar.tglRegistrasi as tglRegistrasi," + "pelayananPasien.hargaSatuan as harga," + "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga " + "where harga.produkId = produk.id and harga.statusEnabled is true and harga.kelasId = :idKelasSatu) as hargaKelas1," - + "pelayananPasien.tglPelayanan as tglpelayanan," - + "kelas.namaKelas as namaKelas," - + "pasienDaftar.tglPulang as tglPulang," - + "produk.id as idProduk," - + "dokter.id as idPegawai," + + "pelayananPasien.tglPelayanan as tglpelayanan," + "kelas.namaKelas as namaKelas," + + "pasienDaftar.tglPulang as tglPulang," + "produk.id as idProduk," + "dokter.id as idPegawai," + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglpel," + "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, " - + "pasienDaftar.kelompokPasienId as kelompokPasienId, " - + "kategoryPegawai.id as kategoryPegawaiId, " - + "kelas.id as idKelas," - + "jenisPetugas.jenisPetugasPe as jenisPetugas, " - + "departemen.id as departemenId, " - + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " - + "shift.jamMasuk as jamMasuk, " - + "shift.jamPulang as jamPulang, " - + "shift.namaShift as namaShift) " - + "from PelayananPasienPetugas pelayananPasienPetugas, " - + "PegawaiJadwalKerja jadwalKerja, " - + "Kalender kalender, " - + "ShiftKerja shift " + + "pasienDaftar.kelompokPasienId as kelompokPasienId, " + "kategoryPegawai.id as kategoryPegawaiId, " + + "kelas.id as idKelas," + "jenisPetugas.jenisPetugasPe as jenisPetugas, " + + "departemen.id as departemenId, " + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " + + "shift.jamMasuk as jamMasuk, " + "shift.jamPulang as jamPulang, " + "shift.namaShift as namaShift) " + + "from PelayananPasienPetugas pelayananPasienPetugas, " + "PegawaiJadwalKerja jadwalKerja, " + + "Kalender kalender, " + "ShiftKerja shift " + "left join pelayananPasienPetugas.pelayananPasien pelayananPasien " + "left join pelayananPasienPetugas.kdjenispetugaspe jenisPetugas " - + "left join pelayananPasienPetugas.kdpegawai dokter " - + "left join pelayananPasien.produk produk " - + "left join pelayananPasien.kelas kelas " - + "left join pelayananPasien.pasienDaftar antrian " - + "left join dokter.kategoryPegawai kategoryPegawai " - + "left join produk.detailJenisProduk detail " - + "left join antrian.ruangan ruangan " - + "left join antrian.pasienDaftar pasienDaftar " - + "left join detail.jenisProduk jenisProduk " - + "left join ruangan.departemen departemen " - + "left join pasienDaftar.pasien pasien " - + "where dokter.id = jadwalKerja.pegawaiId " - + "and kalender.id = jadwalKerja.tanggalId " - + "and shift.id = jadwalKerja.shiftId " + + "left join pelayananPasienPetugas.kdpegawai dokter " + "left join pelayananPasien.produk produk " + + "left join pelayananPasien.kelas kelas " + "left join pelayananPasien.pasienDaftar antrian " + + "left join dokter.kategoryPegawai kategoryPegawai " + "left join produk.detailJenisProduk detail " + + "left join antrian.ruangan ruangan " + "left join antrian.pasienDaftar pasienDaftar " + + "left join detail.jenisProduk jenisProduk " + "left join ruangan.departemen departemen " + + "left join pasienDaftar.pasien pasien " + "where dokter.id = jadwalKerja.pegawaiId " + + "and kalender.id = jadwalKerja.tanggalId " + "and shift.id = jadwalKerja.shiftId " + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + "and (pelayananPasienPetugas.statusEnabled is null or pelayananPasienPetugas.statusEnabled is true) " + "and (pelayananPasien.statusEnabled is null or pelayananPasien.statusEnabled is true) " + "and (antrian.statusEnabled is null or antrian.statusEnabled is true) " + "and (pasienDaftar.statusEnabled is null or pasienDaftar.statusEnabled is true) " - + "and jenisPetugas.statusEnabled is true " - + "and dokter.statusEnabled is true " - + "and produk.statusEnabled is true " - + "and detail.statusEnabled is true " - + "and kelas.statusEnabled is true " - + "and kategoryPegawai.statusEnabled is true " - + "and ruangan.statusEnabled is true " - + "and departemen.statusEnabled is true " - + "and jenisProduk.statusEnabled is true " - + "and antrian.kelasId = :idKelas " - + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " - + "and produk.id = :idProduk " + + "and jenisPetugas.statusEnabled is true " + "and dokter.statusEnabled is true " + + "and produk.statusEnabled is true " + "and detail.statusEnabled is true " + + "and kelas.statusEnabled is true " + "and kategoryPegawai.statusEnabled is true " + + "and ruangan.statusEnabled is true " + "and departemen.statusEnabled is true " + + "and jenisProduk.statusEnabled is true " + "and antrian.kelasId = :idKelas " + + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + "and produk.id = :idProduk " + "and jenisPetugas.id <> :idPetugasPelaksana "; - + String detailPasienQueryBundled = "select new Map(pelayananPasienPetugas.noRec as norecPetugas," - + "ruangan.namaRuangan as ruangan," - + "pelayananPasien.noRec as noRecPelayananPasien," - + "detail.id as detailId, " - + "produk.namaProduk as namaProduk," - + "pasien.namaPasien as namapasien," - + "pasien.noCm as noCm," - + "pasien.tglLahir as tglLahir," - + "pasienDaftar.noRegistrasi as noRegistrasi," - + "pasienDaftar.tglRegistrasi as tglRegistrasi," - + "pelayananPasien.hargaSatuan as harga," + + "ruangan.namaRuangan as ruangan," + "pelayananPasien.noRec as noRecPelayananPasien," + + "detail.id as detailId, " + "produk.namaProduk as namaProduk," + "pasien.namaPasien as namapasien," + + "pasien.noCm as noCm," + "pasien.tglLahir as tglLahir," + "pasienDaftar.noRegistrasi as noRegistrasi," + + "pasienDaftar.tglRegistrasi as tglRegistrasi," + "pelayananPasien.hargaSatuan as harga," + "(select distinct harga.hargaNetto1 from HargaNettoProdukByKelas harga " + "where harga.produkId = produk.id and harga.statusEnabled is true and harga.kelasId = :idKelasSatu) as hargaKelas1," - + "pelayananPasien.tglPelayanan as tglpelayanan," - + "kelas.namaKelas as namaKelas," - + "pasienDaftar.tglPulang as tglPulang," - + "produk.id as idProduk," - + "dokter.id as idPegawai," + + "pelayananPasien.tglPelayanan as tglpelayanan," + "kelas.namaKelas as namaKelas," + + "pasienDaftar.tglPulang as tglPulang," + "produk.id as idProduk," + "dokter.id as idPegawai," + "to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglpel," + "cast(pelayananPasien.tglPelayanan as timestamp) as tanggalPelayanan, " - + "pasienDaftar.kelompokPasienId as kelompokPasienId, " - + "kategoryPegawai.id as kategoryPegawaiId, " - + "kelas.id as idKelas," - + "jenisPetugas.jenisPetugasPe as jenisPetugas, " - + "departemen.id as departemenId, " - + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " - + "shift.jamMasuk as jamMasuk, " - + "shift.jamPulang as jamPulang, " - + "shift.namaShift as namaShift) " - + "from PelayananPasienPetugas pelayananPasienPetugas, " - + "PegawaiJadwalKerja jadwalKerja, " - + "Kalender kalender, " - + "ShiftKerja shift " + + "pasienDaftar.kelompokPasienId as kelompokPasienId, " + "kategoryPegawai.id as kategoryPegawaiId, " + + "kelas.id as idKelas," + "jenisPetugas.jenisPetugasPe as jenisPetugas, " + + "departemen.id as departemenId, " + "to_char(kalender.tanggal, 'yyyy-MM-dd') as tanggalKalender, " + + "shift.jamMasuk as jamMasuk, " + "shift.jamPulang as jamPulang, " + "shift.namaShift as namaShift) " + + "from PelayananPasienPetugas pelayananPasienPetugas, " + "PegawaiJadwalKerja jadwalKerja, " + + "Kalender kalender, " + "ShiftKerja shift " + "left join pelayananPasienPetugas.pelayananPasien pelayananPasien " + "left join pelayananPasienPetugas.kdjenispetugaspe jenisPetugas " - + "left join pelayananPasienPetugas.kdpegawai dokter " - + "left join pelayananPasien.produk produk " - + "left join pelayananPasien.kelas kelas " - + "left join pelayananPasien.pasienDaftar antrian " - + "left join dokter.kategoryPegawai kategoryPegawai " - + "left join produk.detailJenisProduk detail " - + "left join antrian.ruangan ruangan " - + "left join antrian.pasienDaftar pasienDaftar " - + "left join detail.jenisProduk jenisProduk " - + "left join ruangan.departemen departemen " - + "left join pasienDaftar.pasien pasien " - + "where dokter.id = jadwalKerja.pegawaiId " - + "and kalender.id = jadwalKerja.tanggalId " - + "and shift.id = jadwalKerja.shiftId " + + "left join pelayananPasienPetugas.kdpegawai dokter " + "left join pelayananPasien.produk produk " + + "left join pelayananPasien.kelas kelas " + "left join pelayananPasien.pasienDaftar antrian " + + "left join dokter.kategoryPegawai kategoryPegawai " + "left join produk.detailJenisProduk detail " + + "left join antrian.ruangan ruangan " + "left join antrian.pasienDaftar pasienDaftar " + + "left join detail.jenisProduk jenisProduk " + "left join ruangan.departemen departemen " + + "left join pasienDaftar.pasien pasien " + "where dokter.id = jadwalKerja.pegawaiId " + + "and kalender.id = jadwalKerja.tanggalId " + "and shift.id = jadwalKerja.shiftId " + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + "and (pelayananPasienPetugas.statusEnabled is null or pelayananPasienPetugas.statusEnabled is true) " + "and (pelayananPasien.statusEnabled is null or pelayananPasien.statusEnabled is true) " + "and (antrian.statusEnabled is null or antrian.statusEnabled is true) " + "and (pasienDaftar.statusEnabled is null or pasienDaftar.statusEnabled is true) " - + "and jenisPetugas.statusEnabled is true " - + "and dokter.statusEnabled is true " - + "and produk.statusEnabled is true " - + "and detail.statusEnabled is true " - + "and kelas.statusEnabled is true " - + "and kategoryPegawai.statusEnabled is true " - + "and ruangan.statusEnabled is true " - + "and departemen.statusEnabled is true " - + "and jenisProduk.statusEnabled is true " - + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + + "and jenisPetugas.statusEnabled is true " + "and dokter.statusEnabled is true " + + "and produk.statusEnabled is true " + "and detail.statusEnabled is true " + + "and kelas.statusEnabled is true " + "and kategoryPegawai.statusEnabled is true " + + "and ruangan.statusEnabled is true " + "and departemen.statusEnabled is true " + + "and jenisProduk.statusEnabled is true " + "and pelayananPasienPetugas.ObjectPegawaiId = :idPegawai " + "and jenisPetugas.id <> :idPetugasPelaksana "; - + String tanggal = "and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') = :tgl "; - + String bulan = "and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = :periode "; - + String orderTanggal = "order by pelayananPasien.tglPelayanan"; - + @Query(detailPasienQuery + tanggal + orderTanggal) - public List> getDetailPasienTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, @Param("idKelas") Integer idKelas, - @Param("idPegawai") Integer idPegawai, @Param("idProduk") Integer idProduk, @Param("idPetugasPelaksana") int idPetugasPelaksana, + public List> getDetailPasienTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idKelas") Integer idKelas, @Param("idPegawai") Integer idPegawai, + @Param("idProduk") Integer idProduk, @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("tgl") String tgl); - + @Query(detailPasienQuery + bulan + orderTanggal) - public List> getDetailPasienTindakanDokterPerPeriode(@Param("idKelasSatu") Integer idKelasSatu, @Param("idKelas") Integer idKelas, - @Param("idPegawai") Integer idPegawai, @Param("idProduk") Integer idProduk, @Param("idPetugasPelaksana") int idPetugasPelaksana, + public List> getDetailPasienTindakanDokterPerPeriode(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idKelas") Integer idKelas, @Param("idPegawai") Integer idPegawai, + @Param("idProduk") Integer idProduk, @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("periode") String periode); - + @Query(detailPasienQueryBundled + tanggal + orderTanggal) - public List> getDetailPasienTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, @Param("idPegawai") Integer idPegawai, - @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("tgl") String tgl); - + public List> getDetailPasienTindakanDokter(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idPegawai") Integer idPegawai, @Param("idPetugasPelaksana") int idPetugasPelaksana, + @Param("tgl") String tgl); + @Query(detailPasienQueryBundled + bulan + orderTanggal) - public List> getDetailPasienTindakanDokterPerPeriode(@Param("idKelasSatu") Integer idKelasSatu, @Param("idPegawai") Integer idPegawai, - @Param("idPetugasPelaksana") int idPetugasPelaksana, @Param("periode") String periode); + public List> getDetailPasienTindakanDokterPerPeriode(@Param("idKelasSatu") Integer idKelasSatu, + @Param("idPegawai") Integer idPegawai, @Param("idPetugasPelaksana") int idPetugasPelaksana, + @Param("periode") String periode); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndekKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndekKinerjaService.java index 76e2e7bf..3e87c73a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndekKinerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndekKinerjaService.java @@ -13,121 +13,122 @@ import com.jasamedika.medifirst2000.vo.TabelAcuanIndeksIKIVO; public interface IndekKinerjaService { - Map saveIndekKinerja(List vo); - + Map saveIndekKinerja(List vo); + Pegawai getPegawaiByUserLogin(); Map findPegawaiByRuangan(Integer tahun, Integer bulan, Integer pegawai); - + List> findByUserId(String startDate, String endDate); - - List> findTindakanByUserId(Integer idPegawai,String startDate, String endDate, Integer idProduk); - + + List> findTindakanByUserId(Integer idPegawai, String startDate, String endDate, + Integer idProduk); + List> findAllTindakanByPeriod(Integer idPegawai); - + List> findTindakanByIdUserAndPeriod(String date); - + List> findCountTindakanByIdUserAndPeriod(String startDate, String endDate); - + List> findCountTindakanByIdUserAndPeriod(Integer idPegawai, String startDate, String endDate); - + Double getPoin(Double jasaDokter, Double tarif, Double total); - - List> findUraianTugas(); - - Map detailPoin (String tgl, Integer idPegawai); - - Map getIndekKinerjaKuantitasData (String periode, Integer idPegawai, Boolean isNew); - - Map getRekapitulasiCapaianUraianTugas (String periode, Integer idPegawai); - - List> getIndekKinerjaKuantitasPerUnitKerja (String periode,Integer idUnitKerja); - - List> findUraianTugasByTanggal (String date); - - Map SaveTotalIndexKinerja (NilaiIndexKinerjaIndividuVO vo); - + + List> findUraianTugas(); + + Map detailPoin(String tgl, Integer idPegawai); + + Map getIndekKinerjaKuantitasData(String periode, Integer idPegawai, Boolean isNew); + + Map getRekapitulasiCapaianUraianTugas(String periode, Integer idPegawai); + + List> getIndekKinerjaKuantitasPerUnitKerja(String periode, Integer idUnitKerja); + + List> findUraianTugasByTanggal(String date); + + Map SaveTotalIndexKinerja(NilaiIndexKinerjaIndividuVO vo); + Map saveIndekKinerjaIndividu(IndeksKinerjaIndividuVO vo); - + Map saveAllIndekKinerja(IndeksKinerjaIndividuCustomVO vo); - - Map findKualitasAndInovasi( String periode, Integer idPegawai); - - Map findKehadiran( String periode,Integer idPegawai); - - Map rekapIKI( Integer ruanganId,String periode); - + + Map findKualitasAndInovasi(String periode, Integer idPegawai); + + Map findKehadiran(String periode, Integer idPegawai); + + Map rekapIKI(Integer ruanganId, String periode); + public List splitIdProdukAdministrasi(); - - Map rekapPoin (String periode, int idPegawai) ; - - Map saveTabelAcuanIndeksIKI (List vos) ; - + + Map rekapPoin(String periode, int idPegawai); + + Map saveTabelAcuanIndeksIKI(List vos); + List> findAcuanIndeksIKI(); - + Double getIndeksIKI(Double nilai); - - List> getAllTindakanByDokter (String periode, Integer idPegawai); - + + List> getAllTindakanByDokter(String periode, Integer idPegawai); + List> getAllTindakanByDokterReview(String periode, Integer idPegawai); - + List> getAllTindakanByDokterReviewForReport(String periode, Integer idPegawai); - - List> getAllTindakanByDokterForfeeForService (String periode, Integer idPegawai); - + + List> getAllTindakanByDokterForfeeForService(String periode, Integer idPegawai); + List> getAllTindakanByDokterForfeeForServiceReview(String periode, Integer idPegawai); - - List> getAllTindakanByDokterReport (String periode, Integer idPegawai); - + + List> getAllTindakanByDokterReport(String periode, Integer idPegawai); + List> getAllTindakanByDokterReportReview(String periode, Integer idPegawai); - - List> getAllTindakanDokter (String periode, Integer idPegawai); - - void generateAllTindakanDokter (); - - List> findPatientDetailForEveryTindakan(Integer idProduk, Integer idKelas, - Integer idPegawai, String tgl, Boolean ffs); - + + List> getAllTindakanDokter(String periode, Integer idPegawai); + + void generateAllTindakanDokter(); + + List> findPatientDetailForEveryTindakan(Integer idProduk, Integer idKelas, Integer idPegawai, + String tgl, Boolean ffs); + List> findPatientDetailForEveryTindakanReview(Integer idProduk, Integer idKelas, Integer idPegawai, String tgl, Boolean ffs); - + List> findPatientDetailForEveryTindakanReview(Integer idPegawai, String tgl, Boolean ffs); - - Map saveMapKalenderToHariLibur(MapKalenderToHariLiburVO vo); - - List> getAllMapKalenderToHariLibur (); - - Double getNilai(Double jumlah, Double target) ; - - Double getHasil(Double nilai, Double bobot); + + Map saveMapKalenderToHariLibur(MapKalenderToHariLiburVO vo); + + List> getAllMapKalenderToHariLibur(); + + Double getNilai(Double jumlah, Double target); + + Double getHasil(Double nilai, Double bobot); List> reportrekapitulasi(Integer idPegawai, String periode, Boolean isFFS); List> getAllTindakanByDokterReport2(String periode, Integer idPegawai); - + List> getAllTindakanByDokterReport2Review(String periode, Integer idPegawai); List> getAllTindakanByDokterForfeeForServiceReport(String periode, Integer idPegawai); - + List> getAllTindakanByDokterForfeeForServiceReportReview(String periode, Integer idPegawai); List> getAllTindakanRekapReport(String periode, Integer idPegawai); - + List> getAllTindakanRekapReportRev(String periode, Integer idPegawai); - + List> getAllTindakanRekapReportReview(String periode, Integer idPegawai); List> getAllTindakanRekapReportWithPasien(String periode, Integer idPegawai); List> findPatientDetailForEveryTindakanAll(Integer idProduk, Double harga, Integer idPegawai, String tgl); - + List> findPatientDetailForEveryTindakanAllV2(Integer idPegawai, String tgl); - List splitIdProdukAdministrasiAndLaborat(); + List splitIdProdukAdministrasiAndLaborat(); + + List getDetailProdukAdministrasi(Integer idPegawai); - List getDetailProdukAdministrasi(Integer idPegawai); - List getDetailProdukAdministrasi(Pegawai pgw); - + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java index 613a1072..6badd496 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java @@ -416,6 +416,31 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK return result; } + /** + * Formula menghitung poin logbook dokter dengan penyesuaian poin jika + * diskon jasamedis + * + * @param totalTarif + * : harga tindakan yang disepakati + * @param percentage + * : persentase bagian tertentu yang menjadi hak dokter + * @param tarif + * : konstanta pembagi + * @param isDiskonJasamedis + * : status diskon jasamedis yang dilakukan dokter + * @return poin logbook medis + */ + public Double getPoinLogbookDokter(Double totalTarif, Double percentage, Double tarif, Boolean isDiskonJasamedis) { + if (isDiskonJasamedis) { + return 0.0; + } else { + DecimalFormat df = new DecimalFormat("#.##"); + Double poin = (totalTarif * percentage) / tarif; + Double result = Double.parseDouble(df.format(poin)); + return result; + } + } + @Override public List> findUraianTugas() { Pegawai pegawai = this.getPegawaiByUserLogin(); @@ -2980,6 +3005,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK Double totalTindakan = 0.0; Double totalProduk = 0.0; int counter = 0; + boolean isDiskonJasamedis = false; for (Map map : countResult) { Map countMap = new HashMap<>(); if (Integer.parseInt(map.get("idProduk").toString()) == idProduk @@ -3025,6 +3051,11 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK } else if ((Integer) mapResult .get("idJenisPelaksana") == Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA) { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA; + if (Double.parseDouble(mapResult.get("diskon").toString()) > 0 + && (CommonUtil.isNullOrEmpty(mapResult.get("statusDiskon")) + || !Boolean.valueOf(mapResult.get("statusDiskon").toString()))) { + isDiskonJasamedis = true; + } } else { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_ANASTESI; } @@ -3034,11 +3065,17 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_ASISTEN_SPESIALIS; } else { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA; + if (Double.parseDouble(mapResult.get("diskon").toString()) > 0 + && (CommonUtil.isNullOrEmpty(mapResult.get("statusDiskon")) + || !Boolean.valueOf(mapResult.get("statusDiskon").toString()))) { + isDiskonJasamedis = true; + } } } percentage = percentage / 100; - point = getPoin(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI); + point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI, + isDiskonJasamedis); pointQty = point * totalProduk.doubleValue(); formatPointQty = Double.parseDouble(df.format(pointQty)); @@ -3899,6 +3936,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK List> datas = new ArrayList<>(); Double totalTindakan = 0.0; int counter = 0; + boolean isDiskonJasamedis = false; for (Map map : countResult) { Map countMap = new HashMap<>(); if (Integer.parseInt(map.get("idProduk").toString()) == idProduk @@ -3942,6 +3980,11 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK } else if ((Integer) mapResult .get("idJenisPelaksana") == Master.JenisPetugasPelaksana.DOKTER_PEMERIKSA) { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA; + if (Double.parseDouble(mapResult.get("diskon").toString()) > 0 + && (CommonUtil.isNullOrEmpty(mapResult.get("statusDiskon")) + || !Boolean.valueOf(mapResult.get("statusDiskon").toString()))) { + isDiskonJasamedis = true; + } } else { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_ANASTESI; } @@ -3951,11 +3994,17 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_ASISTEN_SPESIALIS; } else { percentage = Master.LogbookDokter.PERSENTASE_TINDAKAN_DOKTER_PEMERIKSA; + if (Double.parseDouble(mapResult.get("diskon").toString()) > 0 + && (CommonUtil.isNullOrEmpty(mapResult.get("statusDiskon")) + || !Boolean.valueOf(mapResult.get("statusDiskon").toString()))) { + isDiskonJasamedis = true; + } } } percentage = percentage / 100; - point = getPoin(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI); + point = getPoinLogbookDokter(harga, percentage, Master.LogbookDokter.TARIF_REMUNERASI, + isDiskonJasamedis); pointQty = point * totalTindakan.doubleValue(); tindakanTotal += totalTindakan.longValue();