package com.jasamedika.medifirst2000.dao; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.JadwalDokter; @Repository("JadwalDokterDao") public interface JadwalDokterDao extends PagingAndSortingRepository { @Query("select model from JadwalDokter model where date(model.tanggalJadwal)=date(:tanggalJadwal)") public List findJadwalByTanggal(@Param("tanggalJadwal") Date tanggalJadwal); @Query("select model from JadwalDokter model where model.ruangan.id=:id and to_char(model.tanggalJadwal,'yyyy-MM-dd') >= :date") public List findJadwalByRuangan(@Param("id") Integer id,@Param("date") String date); @Query("select model from JadwalDokter model where model.ruangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal)") public List findJadwalByTanggalRuangan(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal); @Query("select count(model) from JadwalDokter model where model.dokter.id=:id and date(model.tanggalJadwal)=date(:date)") public Integer CheckJadwalDokter(@Param("date") Date date, @Param("id") Integer id); @Query("select model from JadwalDokter model where model.ruangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal) and model.dokter.qPegawai=:kdPegawai") public JadwalDokter findJadwalByTanggalRuanganAndKdPegawai(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal, @Param("kdPegawai") short kdPegawai); @Query("select model from JadwalDokter model order by model.tanggalJadwal desc,model.dokter.namaLengkap desc,model.ruangan.namaRuangan") public List findJadwalAll(); @Query("select model from JadwalDokter model where model.ruangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal) and model.dokter.qPegawai=:kdPegawai") public List findJadwalByTanggalRuanganAndKdPegawaiList(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal, @Param("kdPegawai") short kdPegawai); @Query("select model from JadwalDokter model where model.ruangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal)") public List findJadwalByTanggalRuanganList(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal); @Query("select p from JadwalDokter p where p.dokter.id=:idDokter ") public List getJadwalDokterByIdDokter(@Param("idDokter") Integer idDokter); @Query("select p from JadwalDokter p where p.dokter.id=:idDokter and p.tanggalJadwal between :now and :nextWeek") public List getJadwalDokterMingguanByIdDokter(@Param("idDokter") Integer idDokter, @Param("now") Date now, @Param("nextWeek") Date nextWeek); @Query("select Distinct NEW com.jasamedika.medifirst2000.entities.JadwalDokter(p.ruangan,p.tanggalJadwal,p.dokter,p.jadwalPraktek) from JadwalDokter p where p.dokter.id=:idDokter and p.tanggalJadwal between :now and :nextWeek") public List getJadwalDokterMingguanByIdDokter2(@Param("idDokter") Integer idDokter, @Param("now") Date now, @Param("nextWeek") Date nextWeek); @Query("select NEW Map(pg.id as id,pg.namaLengkap as namaLengkap) from Pegawai pg left join pg.jabatanFungsional jf " + "where jf.id in (24,58)") public List> getSupirAmbulances(); @Query("select distinct NEW Map(dkt.id as id,dkt.namaLengkap as namaLengkap,jd.tanggalJadwal as tglJadwal,jp.id as jadwalPraktekId," + "jp.reportDisplay as reportDisplay) from JadwalDokter jd left join jd.jadwalPraktek jp left join jd.dokter dkt " + "where jd.dokter.id=:id and month(jd.tanggalJadwal)=:bulan and year(jd.tanggalJadwal)=:tahun order by jd.tanggalJadwal") public List> getJadwalSupirAmbulanceByIdPegawaiAndPeriode(@Param("id") Integer id, @Param("bulan") Integer bulan, @Param("tahun") Integer tahun); @Query("select p from JadwalDokter p where p.tanggalJadwal between :dateFrom and :dateTo and ( p.dokter.jabatanFungsional.id in (24,58) or p.dokter.jabatanStruktural.id in (24,58) ) ") public List getJadwalSupirAmbulanceByDate(@Param("dateFrom") Date dateFrom, @Param("dateTo") Date dateTo); @Query("select model from JadwalDokter model where model.ruangan.id=:ruangan and month(model.tanggalJadwal)=:bulan and year(model.tanggalJadwal) = :tahun and model.dokter.id = (:pegawai)") public List findJadwalByTanggalRuangan(@Param("ruangan") Integer ruangan, @Param("tahun") Integer tahun, @Param("bulan") Integer bulan, @Param("pegawai") Integer pegawai); @Query("select model from JadwalDokter model, MapPegawaiJabatanToUnitKerja mapPegawai inner join model.dokter dokter " + "where mapPegawai.pegawaiId = dokter.id and mapPegawai.isPrimary is true and mapPegawai.statusEnabled is true and mapPegawai.unitKerjaPegawaiId = :unitKerja " + "and month(model.tanggalJadwal) = :bulan and year(model.tanggalJadwal) = :tahun and dokter.id = (:pegawai)") public List findJadwalByTanggalUnitKerja(@Param("unitKerja") Integer unitKerja, @Param("tahun") Integer tahun, @Param("bulan") Integer bulan, @Param("pegawai") Integer pegawai); @Query("select model from JadwalDokter model where model.ruangan.headRuangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal)") public List findJadwalByTanggalRuanganBilik(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal); @Query("select model from JadwalDokter model where model.ruangan.id=:idRuangan and date(model.tanggalJadwal)=date(:tanggalJadwal)") public List findJadwalByTanggalRuanganBilik3(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal); @Query("select model from JadwalDokter model where model.dokter.id=:pegawai and date(model.tanggalJadwal)=date(:jamMasuk)") public JadwalDokter findByTanggalAndPegawai(@Param("jamMasuk") Date jamMasuk, @Param("pegawai") Integer pegawai); @Query("select model from JadwalDokter model where model.ruangan.headRuangan.id=:idRuangan and to_char(date(model.tanggalJadwal),'yyyy-mm-dd')=to_char(date(:tanggalJadwal),'yyyy-mm-dd')") public List findJadwalByTanggalRuanganBilik2(@Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal); //add by iwankasan 210417 @Query("select distinct new map(j.dokter.id as idDokter, " + " j.dokter.namaLengkap as nmDokter, j.ruangan.id as idRuangan, " + " j.ruangan.namaRuangan as namaRuangan, to_char(j.tanggalJadwal,'yyyy-mm-dd') as tglJadwal, " + " j.jadwalPraktek.id as idPraktek, j.jadwalPraktek.jamPraktek as jamPraktek) from " + " JadwalDokter j where j.dokter.id=:idDokter and j.ruangan.id=:idRuangan and to_char(date(j.tanggalJadwal),'yyyy-mm-dd') between to_char(date(:from),'yyyy-mm-dd') and to_char(date(:to),'yyyy-mm-dd')") public List findJadwalDokterByKisaranTglRuangan( @Param("idDokter") int idDokter, @Param("idRuangan") int idRuangan, @Param("from") Date from, @Param("to") Date to); @Query("select distinct new map(j.dokter.id as idDokter, " + " j.dokter.namaLengkap as nmDokter, j.ruangan.id as idRuangan, " + " j.ruangan.namaRuangan as namaRuangan, to_char(j.tanggalJadwal,'yyyy-mm-dd') as tglJadwal, " + " j.jadwalPraktek.id as idPraktek, j.jadwalPraktek.jamPraktek as jamPraktek) from " + " JadwalDokter j where j.dokter.id=:idDokter and to_char(date(j.tanggalJadwal),'yyyy-mm-dd') between to_char(date(:from),'yyyy-mm-dd') and to_char(date(:to),'yyyy-mm-dd')") public List findJadwalDokterByKisaranTglRuanganAll( @Param("idDokter") int idDokter, @Param("from") Date from, @Param("to") Date to); /*@Query("select NEW Map (" + "a.quota as quota, " + "b.id as ruanganId, " + "b.namaRuangan as namaRuangan, " + "c.id as kamarId, " + "c.namaKamar as namaKamar) " + "from JadwalDokter a " + "left join a.ruangan b " + "left join b.kamarSet c " + "where b.id=:idRuangan and " + "date(a.tanggalJadwal)=date(:tanggalJadwal)") public List> findJadwalByTanggalRuangan( @Param("idRuangan") Integer idRuangan, @Param("tanggalJadwal") Date tanggalJadwal);*/ }