package com.jasamedika.medifirst2000.dao;

import java.util.List;

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.PapInformasiIbu;

@Repository("PengkajianAwalNeonatusDao")
public interface PengkajianAwalNeonatusDao extends PagingAndSortingRepository<PapInformasiIbu, String> {
	
	@Query("select ibu.namaPasien,informasiIbu.ibuDirawat,ibu.noCm, ruangan.namaRuangan, to_char(ibu.tglLahir,'yyyy-MM-dd'), kebangsaan.name,agama.agama, statusPerkawinan.statusPerkawinan,informasiIbu.ditolongOleh, to_char(pasienDaftar.tglRegistrasi,'yyyy-MM-dd') from PapInformasiIbu informasiIbu left join informasiIbu.ibu ibu left join informasiIbu.pasienDaftar antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien left join ibu.agama agama left join ibu.kebangsaan kebangsaan left join ibu.statusPerkawinan statusPerkawinan left join  informasiIbu.ruangan ruangan where pasien.noCm = :noCm")
	public List<Object[]> findInformasiIbu(@Param("noCm") String noCm);	
	
	@Query("select to_char(riwayatyangLalu.tglTahunKelahiran,'yyyy-MM-dd'), jenisKelamin.jenisKelamin,riwayatyangLalu.beratBadanLahir, keadaanLahirBayi.keadaanLahirBayi, kuantitasLahirBayi.kuantitasLahirBayi, komplikasiKehamilan.name,penyakit.name, jenisPersalinan.name, riwayatyangLalu.keteranganLain from PapRiwayatYangLalu riwayatyangLalu left join riwayatyangLalu.jenisKelamin jenisKelamin left join riwayatyangLalu.keadaanLahirBayi keadaanLahirBayi left join keadaanLahirBayi.kuantitasLahirBayi kuantitasLahirBayi left join riwayatyangLalu.komplikasiKehamilan komplikasiKehamilan left join riwayatyangLalu.penyakit penyakit left join riwayatyangLalu.jenisPersalinan jenisPersalinan left join riwayatyangLalu.antrianPasienDiPeriksa antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien where pasien.noCm= :noCm and to_char(riwayatyangLalu.tglInput,'yyyy-MM-dd')=:tglInput")
	public List<Object[]> findByRiwayatKelahiranYangLalu(@Param("noCm") String noCm,@Param("tglInput") String tglInput);
	
	@Query("select kehamilanSekarang.gpa,antenatal.name, pemeriksaan.name,kelainanKehamilan.name,fh.name, fhr1.name, fhr2.name,lilitanTaliPusat.name,proplapsUmbicilus.name,partus.name, to_char(kehamilanSekarang.tglPartus,'yyyy-MM-dd'), kehamilanSekarang.letakPartus,lilitanTaliPusat.name,pembuluhDarah.name, kelainanKehamilan.name,antenatal.name,kehamilanSekarang.beratPlacenta,kehamilanSekarang.keadaanPlacenta,kehamilanSekarang.kelainanTaliPusat from KehamilanSekarang kehamilanSekarang left join kehamilanSekarang.pemeriksaanAntenatal antenatal left join kehamilanSekarang.pemeriksaan pemeriksaan left join kehamilanSekarang.kelainanDetailSet kelainanSet left join kelainanSet.kelainanKehamilan kelainanKehamilan left join kehamilanSekarang.fh fh left join kehamilanSekarang.fhr1 fhr1 left join kehamilanSekarang.fhr2 fhr2 left join kehamilanSekarang.lilitanTaliPusat lilitanTaliPusat left join kehamilanSekarang.pembuluhDarah pembuluhDarah left join kehamilanSekarang.proplapsUmbicilus proplapsUmbicilus left join kehamilanSekarang.statusPartus partus left join kehamilanSekarang.antrianPasienDiPeriksa antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien where pasien.noCm=:noCm")
	public List<Object[]> findByRiwayatKehamilanYangSekarang(@Param("noCm") String noCm);
	
	@Query("select penilaian.name, status.name, detail.keterangan from PerencanaanPulang pulang left join pulang.komponenPenilaianDetailSet detail left join detail.komponenPenilaian penilaian left join detail.statusYaTidak status left join pulang.antrianPasienDiPeriksa antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien where pasien.noCm=:noCm")
	public List<Object[]> findPerencanaanPulang(@Param("noCm") String noCm);

}
