package com.jasamedika.medifirst2000.dao.custom;

import java.util.List;
import java.util.Map;

public interface RevIndeksKinerjaDaoCustom {
	
	Long countAllProdukPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukJalanNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukInapNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukBpjsRemunPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukFfsPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findAllProdukPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas,
			List<String> listFriday, List<String> listSK, List<String> listRanap);
	
	List<Map<String, Object>> findPatientDetailForEveryTindakan(Integer idProduk, Integer idPegawai, Integer idKelas,
			String tgl, List<String> listFriday, List<String> listSK, List<String> listRanap, Boolean FFS);
	
	//Hitung rekap logbook dan ffs
	Long countAllProdukPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<Integer> listKelas2Down, List<String> listAllDepartemen, List<String> listInapDepartemen, List<String> listJalanDepartemen, Integer idBPJS, 
			List<Integer> drPatologiAnatomiList);
	
	Long countAllProdukFfsPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<Integer> listKelas2Down, List<String> listAllDepartemen, List<String> listInapDepartemen, List<String> listJalanDepartemen, Integer idBPJS, 
			List<Integer> drPatologiAnatomiList);
	
	Long countAllProdukDokterLuarPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listAllDepartemen);
	
	Long countAllProdukJalanNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listJalanDepartemen, Integer idBPJS);
	
	Long countAllProdukInapNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listInapDepartemen, Integer idBPJS);
	
	Long countAllProdukBpjsRemunPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listAllDepartemen, Integer idBPJS);
	
	//Remunerasi Main Methods
	List<Map<String, Object>> findAllProdukPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<Integer> listKelas2Down, List<String> listAllDepartemen, List<String> listInapDepartemen, List<String> listJalanDepartemen, Integer idBPJS, 
			List<Integer> drPatologiAnatomiList);
	
	//FFS Main Methods
	List<Map<String, Object>> findAllProdukFfsPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<Integer> listKelas2Down, List<String> listAllDepartemen, List<String> listInapDepartemen, List<String> listJalanDepartemen, Integer idBPJS, 
			List<Integer> drPatologiAnatomiList);
	
	//Remun dan FFS detail methods
	List<Map<String, Object>> findAllProdukJalanNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listJalanDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findAllProdukInapNonbpjsPerPeriode(Integer id, String periode, Boolean isFFS, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listInapDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findAllProdukBpjsRemunPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listAllDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findAllProdukDokterLuarPerPeriode(Integer id, String periode, Integer idProduk, Integer idKelas, Integer idPelaksana,
			List<String> listAllDepartemen);
	
	//Pasien Data Methods	
	List<Map<String, Object>> findPatientDetailForEveryTindakan(Integer idProduk, Integer idPegawai, Integer idKelas, String tgl, List<Integer> listKelas2Down, 
			List<String> listAllDepartemen, List<String> listInapDepartemen, List<String> listJalanDepartemen, Integer idBPJS, List<Integer> drPatologiAnatomiList,
			Boolean FFS);
	
	//Detail pasien data methods
	List<Map<String, Object>> findPatientDetailJalanNonbpjsForEveryTindakan(Integer idPegawai, String tgl, Boolean isFFS, Integer idProduk, Integer idKelas, 
			List<String> listJalanDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findPatientDetailInapNonbpjsForEveryTindakan(Integer idPegawai, String tgl, Boolean isFFS, Integer idProduk, Integer idKelas, 
			List<String> listInapDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findPatientDetailBpjsRemunForEveryTindakan(Integer idPegawai, String tgl, Integer idProduk, Integer idKelas,
			List<String> listAllDepartemen, Integer idBPJS);
	
	List<Map<String, Object>> findPatientDetailDokterLuarForEveryTindakan(Integer idPegawai, String tgl, Integer idProduk, Integer idKelas, 
			List<String> listAllDepartemen);
	
}
