package info.ozkan.vipera.doctorviews.healthdata;
import info.ozkan.vipera.business.healthdata.HealthDataFacade;
import info.ozkan.vipera.business.healthdata.HealthDataResult;
import info.ozkan.vipera.business.healthdata.HealthDataSearchFilter;
import info.ozkan.vipera.business.patient.PatientFacade;
import info.ozkan.vipera.business.patient.PatientManagerResult;
import info.ozkan.vipera.doctorviews.DoctorSessionBean;
import info.ozkan.vipera.entities.Doctor;
import info.ozkan.vipera.entities.HealthData;
import info.ozkan.vipera.entities.Patient;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
/**
* Sağlık verilerini görüntüleyen arama yapan ekran
*
* @author Ömer Özkan
*
*/
@Named("healthDataBrowse")
@Scope("session")
public class HealthDataBrowseBean {
/**
* LOGGER
*/
private static final Logger LOGGER = LoggerFactory
.getLogger(HealthDataBrowseBean.class);
/**
* boş string
*/
private static final String EMPTY = "";
/**
* veri bulunamadı
*/
private static final String MSG_DATA_NOT_FOUND =
"Kayıtlı veri bulunmamaktadır!";
/**
* hasta seçiniz mesajı
*/
private static final String MSG_SELECT_PATIENT = "Lütfen hasta seçiniz!";
/**
* Hasta id
*/
private Long id;
/**
* Hasta
*/
private Patient patient;
/**
* Başlangıç tarihi
*/
private Date startDate;
/**
* Bitiş tarihi
*/
private Date endDate;
/**
* Sağlık alanı listesi
*/
private List<HealthData> healthDataList;
/**
* healthData
*/
@Inject
private HealthDataFacade healthDataFacade;
/**
* patient
*/
@Inject
private PatientFacade patientFacade;
/**
* hasta önceden tanımlanmışsa yükleme işlemini gerçekleştirir
*/
public void loadPatient() {
if (id != null) {
final Doctor doctor = DoctorSessionBean.getDoctor();
final PatientManagerResult result =
patientFacade.getById(id, doctor);
if (result.isSuccess()) {
patient = result.getPatient();
}
}
}
/**
* hasta seçme işlemini gerçekleştirir
*
* @param patient
*/
public void selectPatient(final Patient patient) {
this.patient = patient;
}
/**
* arama işlemini gerçekleştirir
*/
public void search() {
final HealthDataSearchFilter filter = new HealthDataSearchFilter();
final FacesContext context = FacesContext.getCurrentInstance();
if (patient == null) {
context.addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_ERROR, MSG_SELECT_PATIENT, EMPTY));
} else {
filter.setPatient(patient);
filter.setStartDate(startDate);
filter.setEndDate(endDate);
final HealthDataResult result = healthDataFacade.find(filter);
healthDataList = result.getHealthDataList();
checkEmptySearch(context);
LOGGER.info("Found {} health data.", healthDataList.size());
}
}
/**
* arama sonucu boş olursa mesaj gösterir
*
* @param context
*/
private void checkEmptySearch(final FacesContext context) {
if (healthDataList.isEmpty()) {
context.addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_INFO, MSG_DATA_NOT_FOUND, EMPTY));
}
}
/**
* @return the patient
*/
public Patient getPatient() {
return patient;
}
/**
* @param patient
* the patient to set
*/
public void setPatient(final Patient patient) {
this.patient = patient;
}
/**
* @return the startDate
*/
public Date getStartDate() {
return startDate;
}
/**
* @param startDate
* the startDate to set
*/
public void setStartDate(final Date startDate) {
this.startDate = startDate;
}
/**
* @return the endDate
*/
public Date getEndDate() {
return endDate;
}
/**
* @param endDate
* the endDate to set
*/
public void setEndDate(final Date endDate) {
this.endDate = endDate;
}
/**
* @return the healthDataList
*/
public List<HealthData> getHealthDataList() {
return healthDataList;
}
/**
* @param healthDataList
* the healthDataList to set
*/
public void setHealthDataList(final List<HealthData> healthDataList) {
this.healthDataList = healthDataList;
}
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id
* the id to set
*/
public void setId(final Long id) {
this.id = id;
}
}