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

/**
 * Repository class for Anamensis
 * 
 * @author Adik
 */
@Repository("AnamnesisDao")
public interface AnamnesisDao extends PagingAndSortingRepository<Anamnesis, String> {
	// custom query
	@Query("select anamnesis from Anamnesis anamnesis left join anamnesis.pasienDaftar antrian left join antrian.pasienDaftar pasienDaftar left join pasienDaftar.pasien pasien where pasien.noCm=:noCm and anamnesis.tglRegistrasi=:tanggalPendaftaran")
	public Anamnesis findAnamnesisByNoCmAndTglInput(@Param("noCm") String noCm,@Param("tanggalPendaftaran") Date tanggalPendaftaran);
	
	/*@Query("select a.anamnesisDokter, a.anamnesisSuster, b.riwayatPengobatan, b.riwayatPenyakit from Anamnesis a, RiwayatPenyakitPengobatan b where b.anamesisId = a.noRec and  a.pasien.noCm=:noCm")
	public List<Object[]> findByNoCm(@Param("noCm") String noCm);	*/
	
	@Query("select new Map (anamnesis.anamnesisDokter as anamnesisDokter, "+
			"anamnesis.anamnesisSuster as anamnesisSuster, "+
			"petugas.id as idPetugas,  "+
			"petugas.namaLengkap as petugas,  "+
			"ruangan.id as idRuangan,  "+
			"ruangan.namaRuangan as namaRuangan,  "+
			"to_char(anamnesis.tanggalInput, 'dd-mm-yyyy HH.mm') as tanggalInput, "+
			"pasienDaftar.noRec as noRecPasienDaftar, "+
			"pasienDaftar.noRegistrasi as noRegistrasi, "+
			"pasien.namaPasien as namaPasien, "+
			"pasien.id as idPasien) "+
			"from Anamnesis anamnesis  "+
			"left join anamnesis.petugas petugas  "+
			"left join anamnesis.ruangan ruangan  "+
			"left join anamnesis.pasienDaftar antrian  "+
			"left join antrian.pasienDaftar pasienDaftar  "+
			"left join pasienDaftar.pasien pasien  "+
			"where pasien.noCm =:noCm  "+
			"order by anamnesis.tanggalInput")
	public List<Map<String,Object>> findAnamnesis(@Param("noCm") String noCm);
	
}
