package info.ozkan.vipera.business.patient;
import info.ozkan.vipera.entities.Doctor;
import info.ozkan.vipera.entities.Patient;
/**
* Hastalar üzerinde CRUD işlemi yapan business arayüzü
*
* @author Ömer Özkan
*
*/
public interface PatientManager {
/**
* Sisteme hasta ekler
*
* @param patient
* Yeni hasta
* @return ekleme sonucu
*/
PatientManagerResult add(Patient patient);
/**
* Filtreye göre bilgi bankasından hasta arama işlemi yapar
*
* @param filter
* @return
*/
PatientManagerResult search(PatientSearchFilter filter);
/**
* Sistemde kayıtlı Id'e ait hastayı dönderir
*
* @param id
* Hasta id
* @return
*/
PatientManagerResult getById(Long id);
/**
* Hasta ile ilgili değişiklikleri sisteme kaydeder
*
* @param patient
* hasta
* @return
*/
PatientManagerResult update(Patient patient);
/**
* Hastayı sistemden siler
*
* @param patient
* hasta
* @return
*/
PatientManagerResult delete(Patient patient);
/**
* Hekime ait hastaları arar
*
* @param filter
* @param doctor
* @return
*/
PatientManagerResult search(PatientSearchFilter filter, Doctor doctor);
/**
* hekim ve id ye göre hasta sorgular
*
* @param id
* @param doctor
* @return
*/
PatientManagerResult getById(Long id, Doctor doctor);
}