package managedbean.medicalTest; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import javax.faces.component.html.HtmlSelectOneMenu; import javax.faces.event.AjaxBehaviorEvent; import javax.faces.view.ViewScoped; import javax.inject.Named; import org.primefaces.event.SelectEvent; import TO.MedicalTestTO; import TO.PatientTO; import common.UserType; import managedbean.common.ManagedBeanBase; import managedbean.common.SessionUtils; @Named("mt") @ViewScoped public class MedicalTestMBean extends ManagedBeanBase implements Serializable { private static final long serialVersionUID = 1L; private int userID; private UserType userType; private List medicalTests; private MedicalTestTO selected; private PatientTO patSelected; private boolean addNewMode = false; public MedicalTestMBean() { } @PostConstruct public void init() { this.userType = SessionUtils.getUserType(); this.userID = Integer.valueOf(SessionUtils.getUserId()); this.selected = null; this.patSelected = null; this.loadMedicalTests(); this.getPatients(); } public void addMedicalTest() { getRemoteManagerMedicalTest().addMedicalTest(this.selected.getPatient().getId(), userID, this.selected.getDate(), this.selected.getTime(), this.selected.getType(), this.selected.getObservations()); } public void addImage() { getRemoteManagerMedicalTest().addImage(this.selected.getId(), this.selected.getHighresimage()); } public void updateImage() { getRemoteManagerMedicalTest().updateImage(this.selected.getId(), this.selected.getHighresimage()); } public void removeImage() { getRemoteManagerMedicalTest().removeImage(this.selected.getId()); } public MedicalTestTO getSelected() { return this.selected; } public void setSelected(MedicalTestTO selected) { this.selected = selected; } public PatientTO getPatSelected() { return this.patSelected; } public void setPatSelected(PatientTO s) { this.patSelected = s; } public void loadMedicalTests() { if (userType == UserType.PATIENT) { // Cargar las pruebas para el paciente en sesión this.medicalTests = getRemoteManagerMedicalTest().loadMedicalTestForPatient(userID); } else if (userType == UserType.SPECIALIST_DOCTOR) { // Cargar las pruebas que el doctor especialista ha creado this.medicalTests = getRemoteManagerMedicalTest().loadMedicalTestForSpecialistDoctor(userID); } else if (userType == UserType.FAMILY_DOCTOR) { // Cargar las pruebas para los pacientes del doctor de familia en sesión this.medicalTests = getRemoteManagerMedicalTest().loadMedicalTestForFamilyDoctor(userID); } else { // Nothing todo this.medicalTests = new ArrayList(); } System.out.println(this.medicalTests); } public List getPatients() { if (userType == UserType.SPECIALIST_DOCTOR) { // Cargar los pacientes a los que ha añadido pruebas médicas el médico // especialista return getRemoteManagerMedicalTest().loadPatientsForSpecialistDoctor(userID); } else if (userType == UserType.FAMILY_DOCTOR) { // Cargar los pacientes del médico de familia que tiene pruebas médicas hechas return getRemoteManagerMedicalTest().loadPatientsForFamilyDoctor(userID); } else { // Nothing todo return new ArrayList(); } } public List getMedicalTests() { return this.medicalTests; } public void setMedicalTests(List list) { // Nothing to do } /*************************************************** METODOS PARA LA VISTA */ private Integer patIdSelected = -1; public void setPatIdSelected(Integer value) { this.patIdSelected = value; this.addNewMode = false; } public Integer getPatIdSelected() { return this.patIdSelected; } public String getTitlePanel() { String res; if (userType == UserType.PATIENT) { // Cargar las pruebas para el paciente en sesión res = "Realizadas al paciente: " + SessionUtils.getloggedOnUser().getName(); } else if (userType == UserType.SPECIALIST_DOCTOR) { // Cargar las pruebas que el doctor especialista ha creado res = "Solicitadas por el médico especialista: " + SessionUtils.getloggedOnUser().getName(); } else if (userType == UserType.FAMILY_DOCTOR) { // Cargar las pruebas para los pacientes del doctor de familia en sesión res = "Pacientes del médico de familia: " + SessionUtils.getloggedOnUser().getName(); } else { // Nothing todo res = "Error"; } return res; } public boolean isPatSelector() { return !(userType == UserType.PATIENT); } public void onSelectPatient(AjaxBehaviorEvent event) { this.selected = null; if (userType == UserType.SPECIALIST_DOCTOR) { // Cargar las pruebas que el doctor especialista ha creado medicalTests = getRemoteManagerMedicalTest().loadMedicalTestForSpecialistDoctor(userID, this.patIdSelected); } else if (userType == UserType.FAMILY_DOCTOR) { // Cargar las pruebas para los pacientes del doctor de familia en sesión medicalTests = getRemoteManagerMedicalTest().loadMedicalTestForFamilyDoctor(userID, this.patIdSelected); } } public void onSelectMT(SelectEvent event) { this.selected = (MedicalTestTO) event.getObject(); this.addNewMode = false; } public void addMT() { if (this.patIdSelected != -1) { this.selected = new MedicalTestTO(); this.selected.setId(-1); this.selected.setObservations(""); this.addNewMode = true; } else { this.addFacesMessage(FacesMessage.SEVERITY_WARN, "Atención!", "Debe elegir un paciente al que añadir la prueba médica."); } } public boolean isAddNewMode() { return addNewMode; } public void setAddNewMode(boolean addNewMode) { this.addNewMode = addNewMode; } public boolean getViewCreate() { return addNewMode; } public boolean getViewEdit() { return !addNewMode && this.selected != null; } }