380 lines
31 KiB
Java
380 lines
31 KiB
Java
package com.jasamedika.medifirst2000.dao;
|
|
|
|
import com.jasamedika.medifirst2000.dto.PelayananDokterBedahDto;
|
|
import com.jasamedika.medifirst2000.entities.PelayananPasien;
|
|
import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
|
|
import com.jasamedika.medifirst2000.entities.StrukPelayanan;
|
|
import com.jasamedika.medifirst2000.entities.StrukResep;
|
|
import org.springframework.data.jpa.repository.JpaRepository;
|
|
import org.springframework.data.jpa.repository.Query;
|
|
import org.springframework.data.repository.query.Param;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
/**
|
|
* Repository class for PelayananPasien
|
|
*
|
|
* @author Generator
|
|
*/
|
|
@Repository("PelayananPasienDao")
|
|
public interface PelayananPasienDao extends JpaRepository<PelayananPasien, String> {
|
|
|
|
@Query("select p from PelayananPasien p where p.noRec=:noRec ")
|
|
PelayananPasien findByNoRec(@Param("noRec") String noRec);
|
|
|
|
@Query("select distinct p from StrukResep s , PelayananPasienDetail p where p.pasienDaftar.pasienDaftar.noRegistrasi=:noRegistrasi")
|
|
List<PelayananPasienDetail> findByNoPendaftaran(@Param("noRegistrasi") String noRegistrasi);
|
|
|
|
@Query("select distinct p from StrukResep s , PelayananPasien p where p.strukOrder.noOrder=:noOrder")
|
|
List<PelayananPasien> findByNoOrder(@Param("noOrder") String noOrder);
|
|
|
|
@Query("select NEW Map(" + "a.noRec as noRec," + "d.namaProduk as namaProduk," + "d.id as produkId,"
|
|
+ "a.jumlah as jumlah," + "a.hargaSatuan as hargaSatuan," + "a.hargaNetto as hargaNetto,"
|
|
+ "e.detailJenisProduk as detailJenisProduk," + "f.namaRuangan as namaRuangan,"
|
|
+ "a.tglPelayanan as tglPelayanan," + "d.nilaiNormal as nilaiNormal," + "g.noRec as noRecStruk) "
|
|
+ "from PelayananPasien a " + "left join a.pasienDaftar b " + "left join b.pasienDaftar c "
|
|
+ "left join a.produk d " + "left join d.detailJenisProduk e " + "left join b.ruangan f "
|
|
+ "left join a.strukPelayanan g " + "where c.noRec=:noRec and (a.statusEnabled is null "
|
|
+ "or a.statusEnabled is true )")
|
|
List<Map<String, Object>> getPelayanan(@Param("noRec") String noRec);
|
|
|
|
@Query("select distinct p from PelayananPasienPetugas p where p.kdpegawai.id =:idPegawai")
|
|
List<PelayananPasien> findByPelayanan(@Param("idPegawai") Integer idPegawai);
|
|
|
|
List<PelayananPasien> findByStrukOrderNoOrderAndKelompokTransaksiId(String noOrder, int parseInt);
|
|
|
|
@Query("select sum(p.hargaSatuan) from PelayananPasien p where p.pasienDaftar.pasienDaftar.noRec=:noRec and p.produk.id=402611")
|
|
Object getDeposite(@Param("noRec") String noRec);
|
|
|
|
@Query("select s from StrukResep s where s.ruanganTujuan.id = :ruanganId and s.tglResep >= :dateStart and s.tglResep <= :dateEnd and s.strukOrder.noCm.namaPasien like :noCm"
|
|
+ " and s.pasien is not null")
|
|
List<StrukResep> findByStrukOrder(@Param("dateStart") Date dateStart, @Param("dateEnd") Date dateEnd,
|
|
@Param("noCm") String noCm, @Param("ruanganId") Integer ruanganId);
|
|
|
|
@Query("select batch.volumen,batch.nokantongkemasan,ruangan.namaRuangan,strukPelayananDetail.noSelang, to_char(strukPelayanan.tglstruk,'yyyy-MM-dd'), pasien.namaPasien, pasien.noCm,to_char(pasien.tglLahir,'yyyy-MM-dd'),strukOrder.noOrder, produk.namaProduk from PelayananPasien pelayanan left join pelayanan.strukOrder strukOrder left join pelayanan.noBatch batch left join batch.kdruangan ruangan left join batch.nostruk strukPelayananDetail left join strukPelayananDetail.nostruk strukPelayanan left join pelayanan.produk produk left join pelayanan.pasienDaftar antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien where strukOrder.noOrder =:noOrder")
|
|
List<Object[]> getByStrukOrderNoOrder(@Param("noOrder") String noOrder);
|
|
|
|
@Query("select NEW Map (" + "a.noRec as noRec, " + "a.tglPelayanan as tglPelayanan, "
|
|
+ "d.namaPasien as namaPasien, " + "d.noCm as noCm, " + "e.namaKelas as namaKelas, " + "e.id as kelasId, "
|
|
+ "f.namaProduk as namaProduk, " + "f.id as produkId) " + "from PelayananPasien a "
|
|
+ "left join a.pasienDaftar b " + "left join b.pasienDaftar c " + "left join c.pasien d "
|
|
+ "left join a.kelas e " + "left join a.produk f ")
|
|
List<Map<String, Object>> getPelayananPasien();
|
|
|
|
@Query("select NEW Map (" + "a.hargaSatuan as hargaSatuan, " + "a.hargaJual as hargaJual, "
|
|
+ "a.hargaNetto as hargaNetto, " + "a.piutangPenjamin as piutangPenjamin, "
|
|
+ "a.piutangRumahSakit as piutangRumahSakit, " + "a.jumlah as jumlah,"
|
|
+ "a.keteranganLain as keteranganLain, " + "a.aturanPakai as aturanPakai, " + "a.stock as stock, "
|
|
+ "b.komponenHarga as komponenHarga) " + "from PelayananPasienDetail a " + "left join a.komponenHarga b "
|
|
+ "left join a.pelayananPasien c " + "where c.noRec=:noRec")
|
|
List<Map<String, Object>> getPelayananPasienDetail(@Param("noRec") String noRec);
|
|
|
|
@Query("select NEW Map (" + "b.jenisPetugasPe as petugas, " + "c.namaLengkap as namaLengkap, "
|
|
+ "e.namaRuangan as namaRuangan, " + "f.asalProduk as asalProduk)" + "from PelayananPasienPetugas a "
|
|
+ "left join a.kdjenispetugaspe b " + "left join a.kdpegawai c " + "left join a.kdruangan e "
|
|
+ "left join a.kdasalproduk f " + "left join a.pelayananPasien g " + "where g.noRec=:noRec")
|
|
List<Map<String, Object>> getPelayananPasienPetugas(@Param("noRec") String noRec);
|
|
|
|
@Query("select p from PelayananPasien p where p.pasienDaftar.noRec=:noRec and date(p.tglPelayanan)=date(:currentDate) and p.produk.id=:produkId and p.statusEnabled is null")
|
|
List<PelayananPasien> findPelayananPasien(@Param("noRec") String noRec, @Param("produkId") Integer produkId,
|
|
@Param("currentDate") String currentDate);
|
|
|
|
@Query("select model.nilaiField from SettingDataFixed model where model.namaField=:prefix")
|
|
String getSettingDataFixed(@Param("prefix") String prefix);
|
|
|
|
@Query("select a " + "from StrukPelayanan a " + "left join a.nocm b " + "left join a.nosbmlast c "
|
|
+ "where b.id=:id and c.noRec is null and a.totalharusdibayar >0 "
|
|
+ "and (a.statusEnabled is true or a.statusEnabled is null) ")
|
|
List<StrukPelayanan> strukPelayanan(@Param("id") Integer id);
|
|
|
|
@Query("select NEW Map(" + "a.noRec as noRec, " + "d.id as ruanganId, " + "dokter.id as dokterId) "
|
|
+ "from AntrianPasienDiPeriksa a " + "left join a.pasienDaftar b " + "left join b.pasien c "
|
|
+ "left join a.ruangan d " + "left join a.pegawai dokter " + "where c.id=:id and "
|
|
+ "date(a.tglRegistrasi)=date(:dateNow)")
|
|
List<Map<String, Object>> tglDaftarInToDay(@Param("id") Integer id, @Param("dateNow") Date dateNow);
|
|
|
|
@Query("select NEW Map(" + "a.noRec as noRec, " + "d.id as ruanganId) " + "from AntrianPasienDiPeriksa a "
|
|
+ "left join a.pasienDaftar b " + "left join b.pasien c " + "left join a.ruangan d "
|
|
+ "where c.id=:id and b.tglPulang is null " + "and (b.statusEnabled is null or b.statusEnabled is true)")
|
|
List<Map<String, Object>> PasienbelumPulang(@Param("id") Integer id);
|
|
|
|
@Query("select new Map(produk.id as idProduk, " + "produk.namaProduk as namaProduk, "
|
|
+ "detailProduk.id as idDetailProduk, " + "detailProduk.detailJenisProduk as namaDetailProduk, "
|
|
+ "pelayananPasien.hargaSatuan as harga) " + "from PelayananPasien pelayananPasien "
|
|
+ "left join pelayananPasien.produk produk " + "left join pelayananPasien.pasienDaftar antrian "
|
|
+ "left join produk.detailJenisProduk detailProduk " + "left join antrian.pasienDaftar daftar "
|
|
+ "left join daftar.pasien pasien " + "where detailProduk.id in (:listId) "
|
|
+ "and pasien.tanggalMeninggal is not null " + "and pasien.id = :noCm")
|
|
List<Map<String, Object>> getTindakanPasienMeninggal(@Param("noCm") Integer noCm,
|
|
@Param("listId") List<Integer> listId);
|
|
|
|
@Query("select sum(pelayananPasien.hargaSatuan) " + "from PelayananPasien pelayananPasien "
|
|
+ "left join pelayananPasien.produk produk " + "left join pelayananPasien.pasienDaftar antrian "
|
|
+ "left join produk.detailJenisProduk detailProduk " + "left join antrian.pasienDaftar daftar "
|
|
+ "left join daftar.pasien pasien " + "where detailProduk.id in (:listId) "
|
|
+ "and pasien.tanggalMeninggal is not null " + "and pasien.id = :noCm")
|
|
Double getTotalHargaTindakanPasienMeninggal(@Param("noCm") Integer noCm, @Param("listId") List<Integer> listId);
|
|
|
|
@Query("select new Map(pasien.namaPasien as namaPasien, " + "alamat.alamatLengkap as alamat) "
|
|
+ "from Pasien pasien " + "left join pasien.alamats alamat " + "where pasien.id = :noCm")
|
|
Map<String, Object> getDataPasienMeninggal(@Param("noCm") Integer noCm);
|
|
|
|
@Query("select new Map(" + "pg.id as idPegawai, " + "pg.namaLengkap as namaPegawai, "
|
|
+ "pg.typePegawaiId as tipePegawai, " + "kp.id as idKelPasien, " + "pr.id as idLayanan, "
|
|
+ "pr.namaProduk as namaLayanan, " + "ru.departemenId as idDepartemen, "
|
|
+ "djp.jenisProdukId as idJenisProduk, " + "ppd.hargaJual as hargaJual, "
|
|
+ "coalesce(ppd.hargaDiscount,0) as hargaDiskon, " + "pp.jumlah as jumlahLayanan"
|
|
+ ") from PelayananPasienPetugas ppp, PelayananPasienDetail ppd " + "left join ppp.pelayananPasien pp "
|
|
+ "left join ppp.kdpegawai pg " + "left join ppd.produk pr " + "left join pp.pasienDaftar apd "
|
|
+ "left join apd.pasienDaftar pd " + "left join apd.ruangan ru " + "left join apd.kelas kls "
|
|
+ "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pr.detailJenisProduk djp "
|
|
+ "where ppd.pelayananPasienId = pp.noRec " + "and ppp.pelayananPasienId = ppd.pelayananPasienId "
|
|
+ "and ((ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35) "
|
|
+ "or (ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21) "
|
|
+ "or (ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22)) "
|
|
+ "and pg.jenisPegawaiId = :idJenisPegawai " + "and pg.typePegawaiId is not null "
|
|
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir " + "order by pg.namaLengkap")
|
|
List<Map<String, Object>> getDataPendapatan(@Param("idJenisPegawai") int idJenisPegawai,
|
|
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
|
|
|
|
@Query("select new Map(pp.noRec as noRec,(case "
|
|
+ "when :jenisDiskon = 1 and ru.id = :klinik and pr.id in (:produkKlinik) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :klinik and pr.id in (:produkKlinik) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id = :tht and pr.id in (:produkTht) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :tht and pr.id in (:produkTht) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id = :mata and pr.id in (:produkMata) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :mata and pr.id in (:produkMata) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id = :gizi and pr.id in (:produkGizi) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :gizi and pr.id in (:produkGizi) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id = :klinik and lower(pr.namaProduk) like '%konsul%dokter%' and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :klinik and lower(pr.namaProduk) like '%konsul%dokter%' and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id in (:labRadiologi) and pr.id in (:produkLabRadiologi) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id in (:labRadiologi) and pr.id in (:produkLabRadiologi) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and ru.id = :gigi and pr.id in (:produkGigi) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and ru.id = :gigi and pr.id in (:produkGigi) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon = 1 and pp.strukResepId is not null and pr.id in (:produkFarmasi) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon = 1 and pp.strukResepId is not null and pr.id in (:produkFarmasi) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "when :jenisDiskon in (3,4) and pr.id in (:produkMpp) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
|
|
+ "when :jenisDiskon in (3,4) and pr.id in (:produkMpp) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
|
|
+ "else coalesce(pp.hargaDiscount,0) end) as hargaDiskon,"
|
|
+ "(case when :jenisDiskon = 1 and pp.strukResepId is not null and pr.id in (:produkFarmasi) then 0.0 else pp.jasa end) as jasa) "
|
|
+ "from PelayananPasien pp " + "left join pp.pasienDaftar apd " + "left join apd.pasienDaftar pd "
|
|
+ "left join pp.produk pr " + "left join apd.ruangan ru " + "where pp.strukFk is null "
|
|
+ "and pd.noRegistrasi = :noRegistrasi " + "order by pp.produkId")
|
|
List<Map<String, Object>> findLayananTagihan(@Param("noRegistrasi") String noRegistrasi,
|
|
@Param("jenisDiskon") Integer jenisDiskon, @Param("klinik") Integer klinik,
|
|
@Param("produkKlinik") List<Integer> produkKlinik, @Param("tht") Integer tht,
|
|
@Param("produkTht") List<Integer> produkTht, @Param("mata") Integer mata,
|
|
@Param("produkMata") List<Integer> produkMata, @Param("gigi") Integer gigi,
|
|
@Param("produkGigi") List<Integer> produkGigi, @Param("labRadiologi") List<Integer> labRadiologi,
|
|
@Param("produkLabRadiologi") List<Integer> produkLabRadiologi,
|
|
@Param("produkFarmasi") List<Integer> produkFarmasi, @Param("produkMpp") List<Integer> produkMpp, @Param("gizi") Integer gizi, @Param("produkGizi") List<Integer> produkGizi);
|
|
|
|
@Query("select ppd from PelayananPasienDetail ppd " + "inner join ppd.pelayananPasien pp "
|
|
+ "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "where apd.statusEnabled is true "
|
|
+ "and pd.statusEnabled is true " + "and pd.noRegistrasi = :noRegistrasi")
|
|
List<PelayananPasienDetail> findDetail(@Param("noRegistrasi") String noRegistrasi);
|
|
|
|
@Query("select pp from PelayananPasien pp " + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd "
|
|
+ "where apd.statusEnabled is true " + "and pd.statusEnabled is true "
|
|
+ "and pd.noRegistrasi = :noRegistrasi")
|
|
List<PelayananPasien> findAll(@Param("noRegistrasi") String noRegistrasi);
|
|
|
|
@Query("select pp from PelayananPasien pp where pp.noRec in (:listNoRec)")
|
|
List<PelayananPasien> findAll(@Param("listNoRec") List<String> listNoRec);
|
|
|
|
String LOGBOOK_DOKTER = "select new Map(pr.id as idProduk,pr.kptl as kptl,"
|
|
+ "concat(case when pr.kptl is not null then concat(pr.kptl,' - ') else '' end) || pr.namaProduk as namaProduk,"
|
|
+ "pr.detailJenisProdukId as idDetailJenisProduk,pr.golonganProdukId as idGolonganProduk,"
|
|
+ "djp.jenisProdukId as idJenisProduk," + "pd.voucherPaketId as idVoucherDaftar,"
|
|
+ "pd.kelompokPasienId as idKelompokPasien," + "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 "
|
|
+ "when pd.kelompokPasienId = 5 then 6 " + "when pd.kelompokPasienId = 6 then 7 "
|
|
+ "when pd.kelompokPasienId = 3 then 8 " + "when pd.kelompokPasienId = 7 then 9 "
|
|
+ "else 10 end as sortIdKelompokPasien," + "kp.kelompokPasien as kelompokPasien," + "pp.kelasId as idKelas,"
|
|
+ "case when pp.kelasId = 6 then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
|
|
+ "when pp.kelasId = 3 then 4 " + "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 "
|
|
+ "when pp.kelasId = 21 then 7 " + "else 8 end as sortIdKelas," + "kls.namaKelas as namaKelas,"
|
|
+ "ppp.noRec as idPelayananPasienPetugas," + "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,"
|
|
+ "ppp.ObjectPegawaiId as idPegawai," + "pp.noRec as idPelayananPasien,coalesce(pp.jumlah,0) as jumlah,"
|
|
+ "coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.hargaDiscount,0) as hargaDiskon,"
|
|
+ "pp.voucherPaketId as idVoucherLayanan,coalesce(pp.isPaket,false) as isPaket,coalesce(pp.isSelisihPaket,false) as isSelisihPaket,"
|
|
+ "coalesce(pp.persenDiskonPegawai,0.0) as persenDiskonPegawai," + "coalesce(pp.isCito,false) as isCito," + "coalesce(pp.isHoliday,false) as isHoliday,"
|
|
+ "coalesce(pp.persenCito,0.0) as persenCito," + "coalesce(pp.persenHoliday,0.0) as persenHoliday,"
|
|
+ "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd') as tanggal,"
|
|
+ "pp.sayatanId as idSayatan,sy.urutan as urutanSayatan,"
|
|
+ "coalesce(sy.persen,0) as persenSayatan,coalesce(sy.nama,'') as keterangan,"
|
|
+ "apd.noRec as idAntrianPasienDiperiksa,apd.pegawaiId as idDPJP," + "apd.ruanganId as idRuangan,"
|
|
+ "case when ru.kelompokRuangan = 'EKSEKUTIF' then 'Eksekutif' else 'Reguler' end as jenisRuangan,"
|
|
+ "ru.departemenId as idDepartemen," + "pd.noRec as idPasienDaftar,pd.pasienId as pasienId,"
|
|
+ "sum(case when ppd.komponenHargaId = 210 then ppd.hargaJual else 0.0 end) as komponenTotalTarif,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35 then ppd.hargaJual else 0.0 end) as hargaJasaD,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22 then ppd.hargaJual else 0.0 end) as hargaJasaAs,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21 then ppd.hargaJual else 0.0 end) as hargaJasaAn,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35 then ppd.hargaDiscount else 0.0 end) as diskonD,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35 then ppd.persenDiskon else 0.0 end) as persenDiskonD,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 4 and ppd.komponenHargaId = 35 then ppd.persenDiskonSayatan else 0.0 end) as persenDiskonSayatanD,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22 then ppd.hargaDiscount else 0.0 end) as diskonAs,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22 then ppd.persenDiskon else 0.0 end) as persenDiskonAs,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 13 and ppd.komponenHargaId = 22 then ppd.persenDiskonSayatan else 0.0 end) as persenDiskonSayatanAs,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21 then ppd.hargaDiscount else 0.0 end) as diskonAn,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21 then ppd.persenDiskon else 0.0 end) as persenDiskonAn,"
|
|
+ "sum(case when ppp.ObjectJenisPetugasPeId = 6 and ppd.komponenHargaId = 21 then ppd.persenDiskonSayatan else 0.0 end) as persenDiskonSayatanAn,"
|
|
+ "sum(case when ppd.komponenHargaId = 35 then ppd.hargaDiscount else 0.0 end) as totalDiskonD,"
|
|
+ "sum(case when ppd.komponenHargaId = 35 then ppd.hargaJual else 0.0 end) as totalHargaD,"
|
|
+ "sum(case when ppd.komponenHargaId = 35 then ppd.persenDiskon else 0.0 end) as totalPersenDiskonD,"
|
|
+ "sum(case when ppd.komponenHargaId = 35 then ppd.persenDiskonSayatan else 0.0 end) as totalPersenDiskonSayatanD,"
|
|
+ "sum(case when ppd.komponenHargaId = 22 then ppd.hargaDiscount else 0.0 end) as totalDiskonAs,"
|
|
+ "sum(case when ppd.komponenHargaId = 22 then ppd.hargaJual else 0.0 end) as totalHargaAs,"
|
|
+ "sum(case when ppd.komponenHargaId = 22 then ppd.persenDiskon else 0.0 end) as totalPersenDiskonAs,"
|
|
+ "sum(case when ppd.komponenHargaId = 22 then ppd.persenDiskonSayatan else 0.0 end) as totalPersenDiskonSayatanAs,"
|
|
+ "sum(case when ppd.komponenHargaId = 21 then ppd.hargaDiscount else 0.0 end) as totalDiskonAn,"
|
|
+ "sum(case when ppd.komponenHargaId = 21 then ppd.hargaJual else 0.0 end) as totalHargaAn,"
|
|
+ "sum(case when ppd.komponenHargaId = 21 then ppd.persenDiskon else 0.0 end) as totalPersenDiskonAn,"
|
|
+ "sum(case when ppd.komponenHargaId = 21 then ppd.persenDiskonSayatan else 0.0 end) as totalPersenDiskonSayatanAn) "
|
|
+ "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 "
|
|
+ "left join pp.kelas kls " + "left join pd.kelompokPasien kp " + "left join apd.ruangan ru "
|
|
+ "left join pr.detailJenisProduk djp " + "left join pp.sayatan sy ";
|
|
|
|
String WHERE_LOGBOOK_DOKTER = "where pr.id not in (:listIdKarcis) "
|
|
+ "and ppd.pelayananPasienId = pp.noRec and (ppp.statusEnabled is true or ppp.statusEnabled is null) "
|
|
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) and pp.strukResepId is null "
|
|
+ "and apd.ruanganId not in (777) "
|
|
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) ";
|
|
|
|
String PARAMATER_LOGBOOK_DOKTER = "and ppp.ObjectPegawaiId = :pegawaiId "
|
|
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir ";
|
|
|
|
String GROUP_LOGBOOK_DOKTER = "group by pr.id,pr.namaProduk," + "pr.detailJenisProdukId,pr.golonganProdukId,"
|
|
+ "djp.jenisProdukId," + "pd.voucherPaketId," + "pd.kelompokPasienId,"
|
|
+ "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 " + "when pd.kelompokPasienId = 5 then 6 "
|
|
+ "when pd.kelompokPasienId = 6 then 7 " + "when pd.kelompokPasienId = 3 then 8 "
|
|
+ "when pd.kelompokPasienId = 7 then 9 " + "else 10 end," + "kp.kelompokPasien," + "pp.kelasId,"
|
|
+ "case when pp.kelasId = 6 then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
|
|
+ "when pp.kelasId = 3 then 4 " + "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 "
|
|
+ "when pp.kelasId = 21 then 7 " + "else 8 end," + "kls.namaKelas," + "ppp.noRec,"
|
|
+ "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
|
|
+ "pp.noRec,coalesce(pp.hargaJual,0),coalesce(pp.jumlah,0)," + "coalesce(pp.isPaket,false),"
|
|
+ "coalesce(pp.persenDiskonPegawai,0.0)," + "pp.tglPelayanan,to_char(pp.tglPelayanan,'yyyy-MM-dd'),"
|
|
+ "pp.sayatanId,sy.urutan," + "coalesce(sy.persen,0),coalesce(sy.nama,'')," + "apd.noRec,apd.pegawaiId,"
|
|
+ "apd.ruanganId," + "case when ru.kelompokRuangan = 'EKSEKUTIF' then 'Eksekutif' else 'Reguler' end,"
|
|
+ "ru.departemenId," + "pd.noRec ";
|
|
|
|
String ORDER_LOGBOOK_DOKTER = "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 "
|
|
+ "when pd.kelompokPasienId = 5 then 6 " + "when pd.kelompokPasienId = 6 then 7 "
|
|
+ "when pd.kelompokPasienId = 3 then 8 " + "when pd.kelompokPasienId = 7 then 9 " + "else 10 end asc, "
|
|
+ "pp.tglPelayanan, " + "pp.hargaJual, " + "case when pp.kelasId = 6 then 1 "
|
|
+ "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 " + "when pp.kelasId = 3 then 4 "
|
|
+ "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 " + "when pp.kelasId = 21 then 7 "
|
|
+ "else 8 end asc," + "pr.namaProduk";
|
|
|
|
@Query(LOGBOOK_DOKTER + WHERE_LOGBOOK_DOKTER + PARAMATER_LOGBOOK_DOKTER + GROUP_LOGBOOK_DOKTER
|
|
+ ORDER_LOGBOOK_DOKTER)
|
|
List<Map<String, Object>> findPelayananPasienByPetugasAndTanggal(@Param("pegawaiId") Integer idPegawai,
|
|
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
|
@Param("listIdKarcis") List<Integer> listIdKarcis);
|
|
|
|
@Query("select new Map(jp.jenisPetugasPe as jenisPelaksana," + "pr.id as idProduk, pr.namaProduk as namaProduk,"
|
|
+ "pp.noRec as idPelayanan," + "coalesce(pp.hargaJual,0) as hargaJual,"
|
|
+ "coalesce(pp.hargaDiscount,0) as diskon," + "coalesce(pp.jumlah,0) as jumlah,"
|
|
+ "kp.kelompokPasien as kelompokPasien," + "kls.namaKelas as namaKelas,"
|
|
+ "to_char(pp.tglPelayanan,'yyyy-MM-dd HH24:MI:ss') as tanggal," + "ru.namaRuangan as namaRuangan,"
|
|
+ "ps.namaPasien as namaPasien,ps.noCm as noCm," + "pd.noRegistrasi as noRegistrasi) "
|
|
+ "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
|
+ "inner join ppp.kdjenispetugaspe jp " + "inner join pp.pasienDaftar apd "
|
|
+ "inner join apd.pasienDaftar pd " + "left join pp.produk pr " + "left join pp.kelas kls "
|
|
+ "left join pd.kelompokPasien kp " + "left join pd.pasien ps " + "left join apd.ruangan ru "
|
|
+ "left join pr.detailJenisProduk djp " + "where (ppp.statusEnabled is true or ppp.statusEnabled is null) "
|
|
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) "
|
|
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) " + "and ppp.ObjectPegawaiId = :pegawaiId "
|
|
+ "and ppp.noRec in (:norecs) "
|
|
+ "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, "
|
|
+ "pp.tglPelayanan, " + "pp.hargaJual, "
|
|
+ "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 asc,"
|
|
+ "pr.namaProduk")
|
|
List<Map<String, Object>> findPelayananPasienByPetugasAndPelayananPasien(@Param("pegawaiId") Integer idPegawai,
|
|
@Param("norecs") List<String> norecs);
|
|
|
|
@Query("select new Map(pp.noRec as noRec," + "ru.id as idRuangan," + "ru.namaRuangan as namaRuangan,"
|
|
+ "pp.tglPelayanan as tglPelayanan," + "to_char(pp.tglPelayanan,'dd/MM/yyyy') as tglPelayananStr,"
|
|
+ "pr.id as idProduk," + "pr.namaProduk as namaProduk," + "kls.id as idKelas,"
|
|
+ "kls.namaKelas as namaKelas," + "coalesce(pp.jumlah,0) as jumlah,"
|
|
+ "coalesce(pp.hargaJual,0) as hargaJual," + "coalesce(pp.hargaDiscount,0) as hargaDiskon,"
|
|
+ "coalesce(pp.jasa,0) as hargaJasa,"
|
|
+ "((coalesce(pp.hargaJual,0)-coalesce(pp.hargaDiscount,0))*coalesce(pp.jumlah,0)+coalesce(pp.jasa,0)) as totalHargaJual,"
|
|
+ "coalesce(pp.isPaket, false) as isPaket,coalesce(pp.isSelisihPaket, false) as isSelisihPaket) "
|
|
+ "from PelayananPasien pp " + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd "
|
|
+ "inner join apd.ruangan ru " + "inner join pp.produk pr " + "inner join pp.kelas kls "
|
|
+ "where pd.noRegistrasi = :noRegistrasi")
|
|
List<Map<String, Object>> findPelayananPasienByTagihanPendaftaran(@Param("noRegistrasi") String noRegistrasi);
|
|
|
|
List<PelayananPasien> findByPasienDaftarPasienDaftarNoRecIn(List<String> idDaftarList);
|
|
|
|
@Query("select distinct new Map(vp.pasienId as pasienId," + "vp.paketId as paketId," + "vp.isBatal as isBatal,"
|
|
+ "apd.tglKeluar as tglKeluar) " + "from PelayananPasienPetugas ppp, " + "Ruangan ru, " + "VoucherPaket vp "
|
|
+ "inner join ppp.pelayananPasien pp " + "inner join pp.pasienDaftar apd "
|
|
+ "inner join apd.pasienDaftar pd " + "where apd.ruanganId = ru.id " + "and pd.pasienId = vp.pasienId "
|
|
+ "and ppp.ObjectPegawaiId in (:listIdSpog) " + "and pp.produkId in (:listProdukEntriId) "
|
|
+ "and ru.departemenId in (:listRanapId) " + "order by vp.pasienId, " + "vp.paketId, "
|
|
+ "apd.tglKeluar desc")
|
|
Set<Map<String, Object>> findPasienPaketDiRanapByDokter(@Param("listIdSpog") List<Integer> listIdSpog,
|
|
@Param("listProdukEntriId") List<Integer> listProdukEntriId,
|
|
@Param("listRanapId") List<Integer> listRanapId);
|
|
|
|
@Query(nativeQuery = true, value = "select distinct pp.norec " + "from pelayananpasien_t pp "
|
|
+ "inner join pelayananpasienpetugas_t ppp on pp.norec = ppp.pelayananpasien "
|
|
+ "inner join mappegawaijabatantounitkerja_m mj on ppp.objectpegawaifk = mj.objectpegawaifk "
|
|
+ "where ppp.objectpegawaifk = :pegawaiId " + "and pp.tglpelayanan between :tglAwal and :tglAkhir "
|
|
+ "and mj.statusenabled = true " + "and pp.statusenabled = true " + "and ppp.objectjenispetugaspefk in (:listJenisPetugasPelaksanaId)")
|
|
List<String> findIdPelayananByDokter(@Param("pegawaiId") Integer idPegawai, @Param("tglAwal") Date tglAwal,
|
|
@Param("tglAkhir") Date tglAkhir,
|
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana);
|
|
|
|
@Query(nativeQuery = true, value = "select pp.norec " + "from pelayananpasien_t pp "
|
|
+ "inner join pelayananpasienpetugas_t ppp on pp.norec = ppp.pelayananpasien "
|
|
+ "inner join mappegawaijabatantounitkerja_m mj on ppp.objectpegawaifk = mj.objectpegawaifk "
|
|
+ "where pp.tglpelayanan between :tglAwal and :tglAkhir " + "and mj.statusenabled = true " + "and pp.statusenabled = true "
|
|
+ "and mj.objectunitkerjapegawaifk in (:listKsmId) "
|
|
+ "and ppp.objectjenispetugaspefk in (:listJenisPetugasPelaksanaId) "
|
|
+ "group by pp.norec having count(pp.norec) > 1")
|
|
List<String> findIdPelayananByKsm(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
|
@Param("listKsmId") List<Integer> listIdKsm,
|
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana);
|
|
|
|
@Query("select distinct new com.jasamedika.medifirst2000.dto.PelayananDokterBedahDto("
|
|
+ "pp.noRec as noRec,pp.produkId as idProduk,"
|
|
+ "ppp.ObjectPegawaiId as idPegawai,ppp.ObjectJenisPetugasPeId as idJenisPetugasPelaksana) "
|
|
+ "from PelayananPasienPetugas ppp, MapPegawaiJabatanToUnitKerja mj " + "inner join ppp.pelayananPasien pp "
|
|
+ "inner join mj.pegawai pg " + "where mj.statusEnabled is true "
|
|
+ "and ppp.ObjectPegawaiId = mj.pegawaiId " + "and ppp.ObjectPegawaiId = pg.id "
|
|
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir " + "and mj.unitKerjaPegawaiId in (:listKsmId) "
|
|
+ "and ppp.ObjectJenisPetugasPeId in (:listJenisPetugasPelaksanaId) "
|
|
+ "and pp.statusEnabled is true "
|
|
+ "and pp.noRec in (:listPelayananIdByDokter) " + "and pp.noRec in (:listPelayananIdByKsm)")
|
|
List<PelayananDokterBedahDto> findPelayananBedah(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
|
@Param("listKsmId") List<Integer> listIdKsm,
|
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana,
|
|
@Param("listPelayananIdByDokter") List<String> listIdPelayananByDokter,
|
|
@Param("listPelayananIdByKsm") List<String> listIdPelayananByKsm);
|
|
|
|
@Query(nativeQuery = true, value = "select distinct pp.noRec as noRec, pp.produkfk as idProduk, ppp.objectpegawaifk as idPegawai, ppp.objectjenispetugaspefk as idJenisPetugasPelaksana from pelayananpasienpetugas_t ppp inner join mappegawaijabatantounitkerja_m mj on mj.objectpegawaifk = ppp.objectpegawaifk inner join pelayananpasien_t pp on pp.norec = ppp.pelayananpasien inner join pegawai_m pg on mj.objectpegawaifk = pg.id where mj.statusEnabled is true and ppp.objectpegawaifk = mj.objectpegawaifk and ppp.objectpegawaifk = pg.id and pp.tglPelayanan between :tglAwal and :tglAkhir and mj.objectunitkerjapegawaifk in (:listKsmId) and ppp.objectjenispetugaspefk in (:listJenisPetugasPelaksanaId) and pp.statusEnabled is true and pp.noRec in (:listPelayananIdByDokter) and pp.noRec in (:listPelayananIdByKsm)")
|
|
|
|
List<PelayananDokterBedahDto> findPelayananBedahOriginal(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir,
|
|
@Param("listKsmId") List<Integer> listIdKsm,
|
|
@Param("listJenisPetugasPelaksanaId") List<Integer> listIdJenisPetugasPelaksana,
|
|
@Param("listPelayananIdByDokter") List<String> listIdPelayananByDokter,
|
|
@Param("listPelayananIdByKsm") List<String> listIdPelayananByKsm);
|
|
|
|
}
|