From ec3b1dc1cd9edb6802b9b5d475c231f2a5d57d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Fri, 27 Dec 2019 01:41:17 +0100 Subject: [PATCH] =?UTF-8?q?Filtro=20por=20paciente=20para=20la=20consulta?= =?UTF-8?q?=20y=20modificaci=C3=B3n=20de=20visitas=20por=20parte=20de=20un?= =?UTF-8?q?=20administrador.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docroot/visit/PatientVisitList.xhtml | 32 ++++++++++---- .../MyHealth/docroot/visit/VisitList.xhtml | 6 ++- .../src/ejb/visit/VisitFacadeBean.java | 8 ++-- .../visit/PatientVisitListMBean.java | 44 +++++++++++++++---- 4 files changed, 68 insertions(+), 22 deletions(-) diff --git a/1.sources/MyHealth/docroot/visit/PatientVisitList.xhtml b/1.sources/MyHealth/docroot/visit/PatientVisitList.xhtml index a84bdf8..2b35aaf 100644 --- a/1.sources/MyHealth/docroot/visit/PatientVisitList.xhtml +++ b/1.sources/MyHealth/docroot/visit/PatientVisitList.xhtml @@ -2,7 +2,7 @@ + xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"> @@ -16,15 +16,31 @@
- - + + + +
-
-
- Paciente: - +
+
Paciente:
+
+ + + + + + + + + + + + + +
+ requiredMessage="Especifique una fecha para realizar la consulta."> + +
@@ -62,7 +64,7 @@ - + diff --git a/1.sources/MyHealth/src/ejb/visit/VisitFacadeBean.java b/1.sources/MyHealth/src/ejb/visit/VisitFacadeBean.java index 3a004c9..21f6e9d 100644 --- a/1.sources/MyHealth/src/ejb/visit/VisitFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/visit/VisitFacadeBean.java @@ -74,8 +74,9 @@ public class VisitFacadeBean implements VisitFacadeRemote { strFilter += " and v.date=:date "; if (strFilter.length() > 0) { - strQuery = String.format(strQuery, "WHERE 1=1 " + strFilter); + strFilter = "WHERE 1=1 " + strFilter; } + strQuery = String.format(strQuery, strFilter); TypedQuery query = entman.createQuery(strQuery, Long.class); @@ -96,9 +97,10 @@ public class VisitFacadeBean implements VisitFacadeRemote { strFilter += " and v.date=:date "; if (strFilter.length() > 0) { - strQuery = String.format(strQuery, "WHERE 1=1 " + strFilter); + strFilter = "WHERE 1=1 " + strFilter; } - + strQuery = String.format(strQuery, strFilter); + TypedQuery query = entman.createQuery(strQuery, VisitJPA.class); if (patientId != null) diff --git a/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java b/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java index fe4c01f..0d414cf 100644 --- a/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java +++ b/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java @@ -15,9 +15,9 @@ import javax.inject.Named; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; -import TO.FamilyDoctorTO; import TO.PatientTO; import TO.VisitTO; +import common.Constants; import common.UserType; import managedbean.common.ManagedBeanBase; import managedbean.common.SessionUtils; @@ -33,23 +33,28 @@ public class PatientVisitListMBean extends ManagedBeanBase implements Serializab private Integer patientId; private LazyDataModel lazyDataModelVisitList; private Date selectedDate; + private String lastUIQuery; + private List patientList; public PatientVisitListMBean() { } @PostConstruct public void init() { + this.lastUIQuery = ""; + // Si el usuario es un paciente listamos las visitas de ese paciente, si es admnistrador listamos todas. - switch (SessionUtils.getUserType()) - { + switch (SessionUtils.getUserType()) { case ADMINISTRATOR: this.patientId = null; - this.setPatient(null); + this.patient = null; this.selectedDate = new Date(); + + this.patientList = this.getRemoteManagerCommon().listPatientsPaged(0, Constants.MAX_ITEMS_AUTOCOMPLETE_SEARCH); break; case PATIENT: this.patientId = Integer.valueOf(SessionUtils.getUserId()); - this.setPatient(this.getRemoteManagerCommon().findPatientById(patientId)); + this.patient = this.getRemoteManagerCommon().findPatientById(patientId); this.selectedDate = null; break; case FAMILY_DOCTOR: @@ -57,12 +62,17 @@ public class PatientVisitListMBean extends ManagedBeanBase implements Serializab this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Acesso denegado", "Su perfil de usuario no está autorizado acceder a esta página."); return; } - + this.lazyDataModelVisitList = new LazyDataModel() { private static final long serialVersionUID = 1L; @Override public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { + if (patient != null) + patientId = patient.getId(); + else + patientId = null; + Long totalRowCount = getRemoteManagerVisit().getVisitsCount(patientId, selectedDate); this.setRowCount(totalRowCount.intValue()); @@ -71,16 +81,29 @@ public class PatientVisitListMBean extends ManagedBeanBase implements Serializab }; } + public List completePatient(String query) { + if (query != null && query.equals(this.lastUIQuery) == false) { + this.lastUIQuery = query; + // Recuperamos las 200 primeras coincidencias + this.patientList = this.getRemoteManagerCommon().listPatientsFiltered(query, 0, Constants.MAX_ITEMS_AUTOCOMPLETE_SEARCH); + } + return this.patientList; + } + + public List getPatientList() { + return patientList; + } + public void removeVisit(Integer visitId) throws IOException { // TODO: Eliminar visita de la BBDD this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Visita eliminada", String.format("La visita con Id: %d se ha eliminado correctamente", visitId)); } - + public void editVisit(Integer visitId) throws IOException { FacesContext ctx = FacesContext.getCurrentInstance(); - ctx.getExternalContext().redirect(String.format("UpdateVisit.xhtml?id=%d&fromPage=%s", visitId, ctx.getViewRoot().getViewId())); + ctx.getExternalContext().redirect(String.format("UpdateVisit.xhtml?id=%d&fromPage=%s", visitId, ctx.getViewRoot().getViewId())); } - + public LazyDataModel getLazyDataModelVisitList() { return lazyDataModelVisitList; } @@ -104,4 +127,7 @@ public class PatientVisitListMBean extends ManagedBeanBase implements Serializab this.patient = patient; } + public boolean isAdmin() { + return SessionUtils.getUserType() == UserType.ADMINISTRATOR; + } }