Merge branch 'rorden' into 'master'

Merge request desde Rorden a master

See merge request pds19-grupo2/myhealth!3
This commit is contained in:
Marcos Garcia Nuñez
2019-12-26 21:52:38 +01:00
9 changed files with 313 additions and 186 deletions

View File

@@ -1,55 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui">
<ui:composition template="../header.xhtml">
<ui:define name="content">
<h:form id="frmQuestions">
<p:growl id="msgs" showDetail="true" closable="true"
autoupdate="true" />
<p:growl id="mesgs" showDetail="true" closable="true" autoupdate="true" />
<p:panel id="panelQuestions" header="Preguntas">
<div class="ui-g ui-fluid">
<div class="ui-g-3 ui-md-3">
<p:commandButton rendered="#{Questions.showCreate}" action="#{Questions.create}" value="Nuevo" update="panelDetail"></p:commandButton>
<p:orderList value="#{Questions.pendingQuestions}" var="pq"
controlsLocation="none" itemValue="#{pq}">
<o:converter converterId="omnifaces.ListConverter"
list="#{Questions.pendingQuestions}" />
<p:ajax event="select" listener="#{Questions.onSelect}"
update="panelDetail"></p:ajax >
<p:ajax event="unselect" listener="#{Questions.onUnSelect}"
update="panelDetail"></p:ajax>
<p:column>
<h:graphicImage name="images/#{pq.status}.png"
alt="#{pq.status}" styleClass="ui-theme" />
</p:column>
<p:column>
<h:outputText value="#{pq.title}" />
</p:column>
</p:orderList>
<div class="ui-g-4">
<p:panel id="panelQuestionList" header="Lista de preguntas">
<f:facet name="actions">
<h:commandLink action="#{Questions.init}" update="frmQuestions" styleClass="ui-panel-titlebar-icon ui-corner-all ui-state-default"><h:outputText styleClass="ui-icon pi pi-refresh" /></h:commandLink>
<h:commandLink rendered="#{Questions.patient}" action="#{Questions.create}" update="frmQuestions" styleClass="ui-panel-titlebar-icon ui-corner-all ui-state-default"><h:outputText styleClass="ui-icon pi pi-plus" /></h:commandLink>
</f:facet>
<p:orderList value="#{Questions.pendingQuestions}" var="pq" controlsLocation="none" itemValue="#{pq}" responsive="true">
<o:converter converterId="omnifaces.ListConverter" list="#{Questions.pendingQuestions}" />
<p:ajax event="select" listener="#{Questions.onSelect}" update="frmQuestions"></p:ajax>
<p:ajax event="unselect" listener="#{Questions.onUnSelect}" update="frmQuestions"></p:ajax>
<p:column>
<h:graphicImage name="images/#{pq.status}.png" alt="#{pq.status}" styleClass="ui-theme" />
</p:column>
<p:column headerText="Título">
<h:outputText value="#{pq.title}" />
</p:column>
</p:orderList>
</p:panel>
</div>
<div class="ui-g-1 ui-md-1"></div>
<div class="ui-g-8 ui-md-8">
<p:panel id="panelDetail" visible="#{Questions.showPanelDetail}" header="Pregunta de #{Questions.selected.patient.name} #{Questions.selected.patient.surname} ">
<!-- Creación de pregunta -->
<p:inputText rendered="#{Questions.selected.status == 'NEW'}" value="#{Questions.selected.title}"></p:inputText>
<p:textEditor rendered="#{Questions.selected.status == 'NEW'}" value="#{Questions.selected.message}" ></p:textEditor>
<!-- Respuesta a una pregunta -->
<h:outputText rendered="#{Questions.selected.status != 'NEW'}">#{Questions.selected.title}</h:outputText>
<h:outputText rendered="#{Questions.selected.status != 'NEW'}" value="#{Questions.selected.message}" escape="false"></h:outputText>
<p:panel rendered="#{Questions.selected.status != 'NEW'}" style="border: 0px !important;">
<h3>Respuesta:</h3>
<p:textEditor rendered="#{Questions.selected.status == 'PENDING'}" value="#{Questions.selected.response}"></p:textEditor>
<h:outputText rendered="#{Questions.selected.status == 'ANSWERED'}" value="#{Questions.selected.response}" escape="false"></h:outputText>
</p:panel>
<br/>
<p:commandButton rendered="#{Questions.selected.status != 'ANSWERED'}" value="#{Questions.selected.status == 'NEW' ? 'Preguntar' : 'Responder'}" action="#{Questions.save}" update="frmQuestions" icon="pi pi-save" ></p:commandButton>
<div class="ui-g-8">
<p:panel id="panelAddQuestion" rendered="#{Questions.addNewMode}" header="Añadir nueva pregunta">
<div class="ui-g ui-fluid">
<div class="ui-g-12">
<h3>Título:</h3>
</div>
<div class="ui-g-12">
<p:inputText value="#{Questions.selected.title}" required="true" requiredMessage="Es necesario especificar el título de la pregunta" />
</div>
<div class="ui-g-12">
<h3>Pregunta:</h3>
</div>
<div class="ui-g-12">
<p:textEditor value="#{Questions.selected.message}" required="true" requiredMessage="Es necesario especificar el texto de la pregunta" />
</div>
<div class="ui-g-4" />
<div class="ui-g-4">
<p:commandButton value="Preguntar" action="#{Questions.addNewQuestion}" update="frmQuestions" icon="pi pi-save" />
</div>
<div class="ui-g-4" />
</div>
</p:panel>
<p:panel id="panelDetail" rendered="#{Questions.showPanelDetail}" header="Pregunta de #{Questions.selected.patient.displayName}">
<!-- Responder pregunta -->
<div class="ui-g ui-fluid">
<div class="ui-g-12">
<h3>Título:</h3>
</div>
<div class="ui-g-12">
<p:inputText value="#{Questions.selected.title}" readonly="true" />
</div>
<div class="ui-g-12">
<h3>Pregunta:</h3>
</div>
<div class="ui-g-12">
<p:textEditor value="#{Questions.selected.message}" toolbarVisible="false" readonly="true" />
</div>
<div class="ui-g-12">
<h3>Respuesta:</h3>
</div>
<div class="ui-g-12">
<p:textEditor value="#{Questions.selected.response}" toolbarVisible="#{Questions.respuestaEditable}" readonly="#{not Questions.respuestaEditable}" required="true" requiredMessage="Es necesario especificar una respuesta." />
</div>
<div class="ui-g-4" />
<div class="ui-g-4">
<p:commandButton value="Responder" rendered="#{Questions.respuestaEditable}" action="#{Questions.save}" update="frmQuestions" icon="pi pi-save" />
</div>
<div class="ui-g-4" />
</div>
</p:panel>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui">
<ui:composition template="../header.xhtml">
<ui:define name="content">
<h:form id="TestForm">
<p:messages id="mesgs" showDetail="true" closable="true"
autoupdate="true" />
<p:panel id="frmSSbD"
header="Búsqueda de médicos especialista por especialidad">
<div class="ui-g ui-fluid">
<div class="ui-g-4 ui-md-4">
<p:outputLabel for="selMS" value="Especialidad:" />
</div>
<div class="ui-g-4 ui-md-4">
<p:autoComplete id="selMS" dropdown="true" required="true"
value="#{sspec.medicalSpeciality}"
completeMethod="#{sspec.completeMedicalSpeciality}" var="ms"
itemLabel="#{ms.displayName}" itemValue="#{ms}"
forceSelection="true"
requiredMessage="Por favor, selecciona una especialidad médica"
placeholder="Seleccione una especialidad médica o teclee para buscar...">
<o:converter converterId="omnifaces.ListConverter"
list="#{RegisterUser.medicalSpecialtiesList}" />
<p:ajax event="itemSelect" listener="#{sspec.onSelect}"
update="frmSSbD" />
<p:column headerText="Nombre">
<h:outputText value="#{ms.name}" />
</p:column>
<p:column headerText="Localización">
<h:outputText value="#{ms.description}" />
</p:column>
</p:autoComplete>
</div>
<div class="ui-g-4 ui-md-4"></div>
<div class="ui-g-4 ui-md-4"></div>
<div class="ui-g-8 ui-md-8">
<p:dataList value="#{sspec.listDoctors}" var="dd" type="ordered" emptyMessage="Ningún especialista para la especialidad seleccionada">
#{dd.name} #{dd.surname} &lt;#{dd.email}&gt;
</p:dataList>
</div>
</div>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</html>

View File

@@ -3,7 +3,11 @@
"name": "ANT",
"script": "start.sh",
"cwd": "./",
"ignore_watch": ["*.ear", "*.jar", "*.war", "./build/*", "./dist/*"],
"ignore_watch": ["*.ear", "*.jar", "*.war", "./build/*", "./dist/*", "ecosystem.json"],
"watch": true
},{
"name": "Widlfly",
"script": "standalone.sh",
"cwd": "/opt/wildfly/bin/"
}]
}

View File

@@ -13,6 +13,7 @@ import javax.persistence.TypedQuery;
import TO.LoggedUserTO;
import TO.MedicalSpecialtyTO;
import TO.QuestionTO;
import TO.SpecialistDoctorTO;
import common.MedicalTestType;
import common.QuestionStatus;
import common.UserType;
@@ -20,6 +21,7 @@ import ejb.common.CommonFacadeLocal;
import jpa.FamilyDoctorJPA;
import jpa.PatientJPA;
import jpa.QuestionJPA;
import jpa.SpecialistDoctorJPA;
import managedbean.common.SessionUtils;
/**
@@ -53,16 +55,18 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
* @param message
*/
@Override
public void askQuestion(int professionalNumber, String title, String message) {
LoggedUserTO user = SessionUtils.getloggedOnUser();
// 0. Conseguir el paciente en sesión
PatientJPA patient = entman.find(PatientJPA.class, user.getId());
// 1. Buscar el médico de familia con ese professionalNumber
FamilyDoctorJPA fdoctor = entman.find(FamilyDoctorJPA.class, professionalNumber);
// 2. Crear un objeto de Question para ese médico desde el paciente en sesión
QuestionJPA question = new QuestionJPA(0, title, message, QuestionStatus.PENDING, patient, fdoctor, null);
// 3. Guardar
entman.persist(question);
public void askQuestion(int userId, String title, String message) {
QuestionJPA qjpa = new QuestionJPA();
qjpa.setId(0);
qjpa.setTitle(title);
qjpa.setMessage(message);
qjpa.setStatus(QuestionStatus.PENDING);
PatientJPA pat = entman.find(PatientJPA.class, userId);
qjpa.setPatient(pat);
qjpa.setFamilyDoctor(pat.getFamilyDoctor());
entman.persist(qjpa);
}
/**
@@ -72,23 +76,11 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
* @param response
*/
@Override
public void answerQuestion(QuestionTO q) {
public void answerQuestion(int questionId, String response) {
QuestionJPA qjpa;
if(q.getId() >= 0) {
qjpa = entman.find(QuestionJPA.class, q.getId());
qjpa.setResponse(q.getResponse());
qjpa.setStatus(QuestionStatus.ANSWERED);
} else {
qjpa = new QuestionJPA();
qjpa.setId(0);
qjpa.setTitle(q.getTitle());
qjpa.setMessage(q.getMessage());
qjpa.setStatus(QuestionStatus.PENDING);
}
PatientJPA pat = entman.find(PatientJPA.class, q.getPatient().getId());
qjpa.setPatient(pat);
qjpa.setFamilyDoctor(pat.getFamilyDoctor());
qjpa = entman.find(QuestionJPA.class, questionId);
qjpa.setResponse(response);
qjpa.setStatus(QuestionStatus.ANSWERED);
entman.persist(qjpa);
}
@@ -134,44 +126,24 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
return pendingQuestions;
}
public Long getPendingQuestionsCount(int familyDoctorId) {
TypedQuery<Long> query = entman.createQuery(
"SELECT count(1) from QuestionJPA q where q.status=:status and q.familyDoctor.id=:docId", Long.class);
query.setParameter("status", QuestionStatus.PENDING);
query.setParameter("docId", familyDoctorId);
return query.getSingleResult();
}
public List<QuestionTO> listPendingQuestionsPaged(int familyDoctorId, int pageNumber, int pageSize) {
TypedQuery<QuestionJPA> query = entman.createQuery(
"SELECT q from QuestionJPA q where q.status=:status and q.familyDoctor.id=:docId order by q.title",
QuestionJPA.class);
query.setParameter("status", QuestionStatus.PENDING);
query.setParameter("docId", familyDoctorId);
if (pageSize > 0) {
query.setFirstResult(pageNumber * pageSize);
query.setMaxResults(pageSize);
}
List<QuestionJPA> allJPA = query.getResultList();
List<QuestionTO> pendingQuestions = new ArrayList<QuestionTO>();
for (QuestionJPA item : allJPA) {
pendingQuestions.add(commonServices.getPOJOforQuestionJPA(item, 1));
}
return pendingQuestions;
}
/**
* Recuperar una pregunta por su String
* Recuperar una pregunta por su identificador
*
* @param question
*/
@Override
public void getQuestion(String question) {
public QuestionTO getQuestion(int idQuestion) {
QuestionTO resp = new QuestionTO();
TypedQuery<QuestionJPA> query = entman.createQuery(
"SELECT q from QuestionJPA q where q.id=:idquestion",
QuestionJPA.class);
query.setParameter("idquestion", idQuestion);
resp = commonServices.getPOJOforQuestionJPA(query.getSingleResult(),1);
return resp;
}
// *********************************************************************
@@ -239,7 +211,21 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
* @param speciality
*/
@Override
public void findSpecialistDoctorByMedicalSpeciality(MedicalSpecialtyTO speciality) {
public List<SpecialistDoctorTO> findSpecialistDoctorByMedicalSpeciality(MedicalSpecialtyTO speciality) {
List<SpecialistDoctorTO> pendingQuestions = new ArrayList<SpecialistDoctorTO>();
TypedQuery<SpecialistDoctorJPA> query = entman.createQuery(
"SELECT q from SpecialistDoctorJPA q where q.medicalSpecialty.name=:spec order by q.medicalSpecialty.name asc, q.surname asc",
SpecialistDoctorJPA.class);
query.setParameter("spec", speciality.getName());
List<SpecialistDoctorJPA> allJPA = query.getResultList();
for (SpecialistDoctorJPA item : allJPA) {
pendingQuestions.add(commonServices.getPOJOforSpecialistDoctorJPA(item, 1));
}
return pendingQuestions;
}
}

View File

@@ -7,6 +7,7 @@ import javax.ejb.Remote;
import TO.MedicalSpecialtyTO;
import TO.QuestionTO;
import TO.SpecialistDoctorTO;
import common.MedicalTestType;
/**
@@ -29,7 +30,7 @@ public interface MedicalTestFacadeRemote {
* @param title
* @param message
*/
public void askQuestion(int professionalNumber, String title, String message);
public void askQuestion(int userID, String title, String message);
/**
* El médico responde a una pregunta
@@ -37,7 +38,7 @@ public interface MedicalTestFacadeRemote {
* @param question
* @param response
*/
public void answerQuestion(QuestionTO question);
public void answerQuestion(int questionId, String response);
/**
* Recuperar las preguntas sin respuesta para un médico
@@ -53,16 +54,12 @@ public interface MedicalTestFacadeRemote {
*/
public List<QuestionTO> listAllMyQuestions(int userId);
public Long getPendingQuestionsCount(int familyDoctorId);
public List<QuestionTO> listPendingQuestionsPaged(int familyDoctorId, int pageNumber, int pageSize);
/**
* Recuperar una pregunta por su String
*
* @param question
*/
public void getQuestion(String question);
public QuestionTO getQuestion(int idQuestion);
// ********************************************************************* MEDICAL
// TEST
@@ -114,5 +111,5 @@ public interface MedicalTestFacadeRemote {
*
* @param speciality
*/
public void findSpecialistDoctorByMedicalSpeciality(MedicalSpecialtyTO speciality);
public List<SpecialistDoctorTO> findSpecialistDoctorByMedicalSpeciality(MedicalSpecialtyTO speciality);
}

View File

@@ -125,7 +125,7 @@ public class AuthorizationFilter implements Filter {
authorized = true;
if (reqURI.indexOf("/medicaltest/MedicalTests") > 0)
authorized = true;
if (reqURI.indexOf("/medicaltest/SearchSpecialistBySpecialty") > 0)
if (reqURI.indexOf("/medicaltest/SearchSpecialist") > 0)
authorized = true;
if (reqURI.indexOf("/profile/UpdateProfile") > 0)
authorized = true;

View File

@@ -86,7 +86,7 @@ public class MenuMBean implements Serializable {
}
if (tipoUsuario == UserType.PATIENT)
subMenu.addElement(createMenuItem("Buscar especialista...", "fa fa-heartbeat", "/medicaltest/MedicalTests", null));
subMenu.addElement(createMenuItem("Buscar especialista...", "fa fa-heartbeat", "/medicaltest/SearchSpecialist", null));
model.addElement(subMenu);
}

View File

@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@@ -24,10 +25,9 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
private int userID;
private UserType userType;
private List<QuestionTO> pendingQuestions;
protected String title;
protected String message;
protected String response;
protected QuestionTO selected;
private Integer id;
private QuestionTO selected;
private boolean addNewMode;
public QuestionsMBean() {
}
@@ -37,15 +37,11 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
// Inicialización de variables y propiedades van aquí.
this.userType = SessionUtils.getUserType();
this.userID = Integer.valueOf(SessionUtils.getUserId());
this.addNewMode = false;
this.selected = null;
this.loadQuestions();
this.printSelected();
}
private void printSelected() {
System.out.println("Selected: ");
System.out.println(this.selected);
}
public List<QuestionTO> getPendingQuestions() {
@@ -60,12 +56,11 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
* en función del tipo de usuario en sesión
*/
private void loadQuestions() {
this.printSelected();
if (userType == UserType.FAMILY_DOCTOR) {
if (this.userType == UserType.FAMILY_DOCTOR) {
// Listar las preguntas destinadas a él
// El método disponible del API básico es referente al doctor
this.pendingQuestions = getRemoteManagerMedicalTest().listAllPendingQuestions(userID);
} else if (userType == UserType.PATIENT) {
} else if (this.userType == UserType.PATIENT) {
// Listar las preguntas realiadas por él
// Para reutilizar la misma view, necesitaremos nuevos métodos para el API de
// cara a recoger sus preguntas realizadas.
@@ -73,37 +68,9 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
}
}
public boolean getShowCreate() {
return userType == UserType.PATIENT;
}
public boolean isShowCreate() {
return this.getShowCreate();
}
public void setShowCreate() {
//
}
public boolean getDisabledMessage() {
if(this.selected != null) {
return this.selected.getStatus() != QuestionStatus.NEW;
}
return false;
}
public boolean isDisabledMessage() {
return this.getDisabledMessage();
}
public void setDisabledMessage(boolean bval) {
// Nothing to do
}
public void onSelect(SelectEvent event) {
this.printSelected();
this.addNewMode = false;
this.selected = (QuestionTO) event.getObject();
this.printSelected();
}
public void onUnSelect(SelectEvent event) {
@@ -111,7 +78,6 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
}
public void setSelected(QuestionTO selected) {
this.printSelected();
this.selected = selected;
}
@@ -119,48 +85,48 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
return this.selected;
}
public void setTitle(String title) {
this.title = title;
}
public void setMessage(String message) {
this.message = message;
}
public void setResponse(String response) {
this.response = response;
}
public void save() {
this.printSelected();
getRemoteManagerMedicalTest().answerQuestion(this.selected);
this.init();
getRemoteManagerMedicalTest().answerQuestion(this.selected.getId(), this.selected.getResponse());
this.loadQuestions();
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Datos guardados", "La respuesta se registrado correctamente en el sistema.");
this.selected = null;
}
public void create() {
this.printSelected();
String template = "";
this.addNewMode = true;
this.selected = new QuestionTO();
this.selected.setId(-1);
this.selected.setTitle(template);
this.selected.setMessage(template);
this.selected.setResponse(template);
this.selected.setStatus(QuestionStatus.NEW);
this.selected.getPatient().setId(Integer.parseInt(SessionUtils.getloggedOnUser().getId()));
this.selected.getPatient().setName(SessionUtils.getloggedOnUser().getName());
this.printSelected();
this.selected.setTitle("");
this.selected.setMessage("");
}
public boolean getShowPanelDetail() {
return this.selected != null;
public void addNewQuestion() {
getRemoteManagerMedicalTest().askQuestion(userID, this.selected.getTitle(), this.selected.getMessage());
this.loadQuestions();
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Datos guardados", "La pregunta se registrado correctamente en el sistema.");
}
public boolean isShowPanelDetail() {
return this.getShowPanelDetail();
return this.selected != null && this.addNewMode == false;
}
public void setShowPanelDetail() {
//
public boolean isPatient() {
return (this.userType == UserType.PATIENT);
}
public boolean isFamilyDoctor() {
return (this.userType == UserType.FAMILY_DOCTOR);
}
public boolean isAddNewMode() {
return addNewMode;
}
public boolean isRespuestaEditable() {
return (this.userType == UserType.FAMILY_DOCTOR && this.selected != null && this.selected.getStatus() == QuestionStatus.PENDING);
}
public void setAddNewMode(boolean addNewMode) {
this.addNewMode = addNewMode;
}
}

View File

@@ -0,0 +1,90 @@
package managedbean.medicalTest;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.primefaces.event.SelectEvent;
import TO.MedicalSpecialtyTO;
import TO.SpecialistDoctorTO;
import common.Constants;
import common.UserType;
import managedbean.common.ManagedBeanBase;
import managedbean.common.SessionUtils;
@Named("sspec")
@ViewScoped
public class SearchSpecialistMBean extends ManagedBeanBase implements Serializable {
private static final long serialVersionUID = 1L;
private int userID;
private UserType userType;
private List<SpecialistDoctorTO> listDoctors;
private List<MedicalSpecialtyTO> medicalSpecialitiesList;
private MedicalSpecialtyTO medicalSpeciality;
private String lastUIQueryMS;
public SearchSpecialistMBean() {
}
@PostConstruct
public void init() {
// Inicialización de variables y propiedades van aquí.
this.userType = SessionUtils.getUserType();
this.userID = Integer.valueOf(SessionUtils.getUserId());
this.medicalSpecialitiesList = this.getRemoteManagerCommon().listMedicalSpecialitiesPaged(0,
Constants.MAX_ITEMS_AUTOCOMPLETE_SEARCH);
this.medicalSpeciality = null;
this.lastUIQueryMS = "";
this.listDoctors = new ArrayList<SpecialistDoctorTO>();
}
public void onSelect(SelectEvent event) {
System.out.println("onSelect");
this.medicalSpeciality = (MedicalSpecialtyTO) event.getObject();
System.out.println(this.medicalSpeciality);
this.listDoctors = getRemoteManagerMedicalTest()
.findSpecialistDoctorByMedicalSpeciality(this.medicalSpeciality);
}
public List<MedicalSpecialtyTO> completeMedicalSpeciality(String query) {
if (query != null && query.equals(this.lastUIQueryMS) == false) {
this.lastUIQueryMS = query;
// Recuperamos las 200 primeras coincidencias
this.medicalSpecialitiesList = this.getRemoteManagerCommon().listMedicalSpecialitiesFiltered(query, 0,
Constants.MAX_ITEMS_AUTOCOMPLETE_SEARCH);
}
return this.medicalSpecialitiesList;
}
public List<TO.SpecialistDoctorTO> getListDoctors() {
return listDoctors;
}
public void setListDoctors(List<TO.SpecialistDoctorTO> listDoctors) {
this.listDoctors = listDoctors;
}
public List<MedicalSpecialtyTO> getMedicalSpecialitiesList() {
return medicalSpecialitiesList;
}
public void setMedicalSpecialitiesList(List<MedicalSpecialtyTO> medicalSpecialitiesList) {
this.medicalSpecialitiesList = medicalSpecialitiesList;
}
public MedicalSpecialtyTO getMedicalSpeciality() {
return medicalSpeciality;
}
public void setMedicalSpeciality(MedicalSpecialtyTO medicalSpecialty) {
this.medicalSpeciality = medicalSpecialty;
}
}