package ejb.common;

import java.util.List;

import javax.ejb.Local;

import TO.FamilyDoctorTO;
import TO.MedicalSpecialtyTO;
import TO.MedicalTestTO;
import TO.PatientTO;
import TO.PrimaryHealthCareCenterTO;
import TO.QuestionTO;
import TO.SpecialistDoctorTO;
import TO.SystemAdminTO;
import TO.VisitTO;
import jpa.SystemAdminJPA;
import jpa.FamilyDoctorJPA;
import jpa.MedicalSpecialtyJPA;
import jpa.MedicalTestJPA;
import jpa.PatientJPA;
import jpa.PrimaryHealthCareCenterJPA;
import jpa.QuestionJPA;
import jpa.SpecialistDoctorJPA;
import jpa.VisitJPA;

/**
 * 
 * @author Marcos García Núñez (mgarcianun@uoc.edu)
 *
 */
@Local
public interface CommonFacadeLocal {

	public List<MedicalSpecialtyTO> listAllMedicalSpecialties();

	public List<MedicalSpecialtyTO> listMedicalSpecialtiesPaged(int pageNumber, int pageSize);

	public List<MedicalSpecialtyTO> listMedicalSpecialtiesFiltered(String searchTerm, int pageNumber, int pageSize);

	public List<PrimaryHealthCareCenterTO> listAllCAPs();

	public List<PrimaryHealthCareCenterTO> listCAPsPaged(int pageNumber, int pageSize);

	public List<PrimaryHealthCareCenterTO> listCAPsFiltered(String searchTerm, int pageNumber, int pageSize);

	public List<FamilyDoctorTO> listAllFamilyDoctors();

	public List<FamilyDoctorTO> listFamilyDoctorsPaged(int pageNumber, int pageSize);

	public List<FamilyDoctorTO> listFamilyDoctorsFiltered(String searchTerm, int pageNumber, int pageSize);

	public List<PatientTO> listPatientsPaged(int pageNumber, int pageSize);

	public List<PatientTO> listPatientsFiltered(String searchTerm, int pageNumber, int pageSize);

	public PatientTO findPatientById(int patientId);

	public PatientTO findPatientByCode(String code);

	public PatientTO findPatientByNif(String searchValue);

	public FamilyDoctorTO findFamilyDoctorById(int ProfessionalNumberId);

	public FamilyDoctorTO findFamilyDoctorByCode(String code);

	public FamilyDoctorTO findFamilyDoctorByNif(String searchValue);

	public SpecialistDoctorTO findSpecialistDoctorById(int ProfessionalNumberId);

	public SpecialistDoctorTO findSpecialistDoctorByCode(String code);

	public SpecialistDoctorTO findSpecialistDoctorByNif(String searchValue);

	public MedicalSpecialtyTO getPOJOforMedicalSpecialtyJPA(MedicalSpecialtyJPA ms);

	public SpecialistDoctorTO getPOJOforSpecialistDoctorJPA(SpecialistDoctorJPA sd, int nestedProps);

	public PrimaryHealthCareCenterTO getPOJOforPrimaryHealthCareCenterJPA(PrimaryHealthCareCenterJPA phc);

	public FamilyDoctorTO getPOJOforFamilyDoctorJPA(FamilyDoctorJPA fd, int nestedProps);

	public PatientTO getPOJOforPatientJPA(PatientJPA pat, int nestedProps);

	public QuestionTO getPOJOforQuestionJPA(QuestionJPA qs, int nestedProps);
	
	public MedicalTestTO getPOJOforMedicalTestJPA(MedicalTestJPA mt, int nestedProps);

	public VisitTO getPOJOforVisitJPA(VisitJPA qs, int nestedProps);
	
	public SystemAdminTO getPOJOforSystemAdminJPA(SystemAdminJPA admin);
}
