package info.ozkan.vipera.business.patient;
import info.ozkan.vipera.business.role.Role;
import info.ozkan.vipera.dao.patient.PatientDao;
import info.ozkan.vipera.entities.Doctor;
import info.ozkan.vipera.entities.Patient;
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.transaction.annotation.Transactional;
/**
* Hasta CRUD işlemleri işletme katmanı sınıfı
*
* @author Ömer Özkan
*
*/
@Named("patientManager")
public class PatientManagerImpl implements PatientManager {
/**
* Persistence katmanı nesnesi
*/
@Inject
private PatientDao patientDao;
/**
* Sisteme yeni bir hasta ekler
*/
@Transactional
@RolesAllowed(Role.ROLE_ADMIN)
public PatientManagerResult add(final Patient patient) {
return patientDao.add(patient);
}
@Transactional
@RolesAllowed(Role.ROLE_ADMIN)
public PatientManagerResult search(final PatientSearchFilter filter) {
return patientDao.find(filter);
}
@Transactional
@RolesAllowed(Role.ROLE_ADMIN)
public PatientManagerResult getById(final Long id) {
return patientDao.getById(id);
}
@Transactional
@RolesAllowed({ Role.ROLE_ADMIN, Role.ROLE_DOCTOR, Role.ROLE_PATIENT })
public PatientManagerResult update(final Patient patient) {
return patientDao.update(patient);
}
/**
* @return the patientDao
*/
public PatientDao getPatientDao() {
return patientDao;
}
/**
* @param patientDao
* the patientDao to set
*/
public void setPatientDao(final PatientDao patientDao) {
this.patientDao = patientDao;
}
@Transactional
@RolesAllowed(Role.ROLE_ADMIN)
public PatientManagerResult delete(final Patient patient) {
return patientDao.delete(patient);
}
@Transactional
@RolesAllowed(Role.ROLE_DOCTOR)
public PatientManagerResult search(final PatientSearchFilter filter,
final Doctor doctor) {
return patientDao.find(filter, doctor);
}
@Transactional
@RolesAllowed(Role.ROLE_DOCTOR)
public PatientManagerResult getById(final Long id, final Doctor doctor) {
return patientDao.getById(id, doctor);
}
}