diff --git a/1.sources/MyHealth/docroot/visit/UpdateVisit.xhtml b/1.sources/MyHealth/docroot/visit/UpdateVisit.xhtml
index 11a9201..7b99049 100644
--- a/1.sources/MyHealth/docroot/visit/UpdateVisit.xhtml
+++ b/1.sources/MyHealth/docroot/visit/UpdateVisit.xhtml
@@ -37,8 +37,8 @@
diff --git a/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java b/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java
index 2cd5bf1..7c3cca0 100644
--- a/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java
+++ b/1.sources/MyHealth/src/managedbean/visit/PatientVisitListMBean.java
@@ -95,8 +95,11 @@ public class PatientVisitListMBean extends ManagedBeanBase implements Serializab
}
public void removeVisit(Integer visitId) throws IOException {
- this.getRemoteManagerVisit().removeVisit(visitId);
- this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Visita eliminada", String.format("La visita con Id: %d se ha eliminado correctamente", visitId));
+ if (SessionUtils.getUserType() == UserType.PATIENT) {
+ this.getRemoteManagerVisit().removeVisit(visitId);
+ this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Visita eliminada", String.format("La visita con Id: %d se ha eliminado correctamente", visitId));
+ } else
+ this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error de autorización", "Su perfil de usuario no tiene permisos para eliminar una visita.");
}
public void editVisit(Integer visitId) throws IOException {
diff --git a/1.sources/MyHealth/src/managedbean/visit/UpdateVisitMBean.java b/1.sources/MyHealth/src/managedbean/visit/UpdateVisitMBean.java
index 28bab11..b79086e 100644
--- a/1.sources/MyHealth/src/managedbean/visit/UpdateVisitMBean.java
+++ b/1.sources/MyHealth/src/managedbean/visit/UpdateVisitMBean.java
@@ -14,6 +14,7 @@ import javax.inject.Named;
import TO.FamilyDoctorTO;
import TO.PatientTO;
import TO.VisitTO;
+import common.UserType;
import managedbean.common.ManagedBeanBase;
import managedbean.common.SessionUtils;
@@ -30,7 +31,9 @@ public class UpdateVisitMBean extends ManagedBeanBase implements Serializable {
private String result;
private PatientTO patient;
private FamilyDoctorTO familyDoctor;
- private boolean onlyResult;
+ private boolean resultReadOnly;
+ private boolean readOnly;
+ private UserType userType;
private String fromPage;
public UpdateVisitMBean() {
@@ -38,6 +41,12 @@ public class UpdateVisitMBean extends ManagedBeanBase implements Serializable {
@PostConstruct
public void init() {
+ this.userType = SessionUtils.getUserType();
+ if (this.userType == UserType.SPECIALIST_DOCTOR) {
+ this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Acesso denegado", "Su perfil de usuario no está autorizado acceder a esta página.");
+ return;
+ }
+
FacesContext context = FacesContext.getCurrentInstance();
Map
requestParams = context.getExternalContext().getRequestParameterMap();
VisitTO vi = null;
@@ -65,29 +74,11 @@ public class UpdateVisitMBean extends ManagedBeanBase implements Serializable {
this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Identificador de visita no válido",
"No se ha podido recuperar el identificador de visita especificado. Por favor, vuelva a intentarlo seleccionando de nuevo la visita.");
}
-
- // Si el usuario es un paciente listamos las visitas de ese paciente, si es
- // admnistrador listamos todas.
- switch (SessionUtils.getUserType()) {
- case ADMINISTRATOR:
- case PATIENT:
- // Administrador y paciente pueden actualizar cualquier dato de la visita
- // (excepto esl resultado)
- this.onlyResult = false;
- break;
- case FAMILY_DOCTOR:
- // El médico de familia solo puede actualizar el resultado.
- this.onlyResult = true;
- break;
- case SPECIALIST_DOCTOR:
- this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Acesso denegado", "Su perfil de usuario no está autorizado acceder a esta página.");
- return;
- }
}
public void saveData() {
try {
- switch (SessionUtils.getUserType()) {
+ switch (this.userType) {
case ADMINISTRATOR:
case PATIENT:
// Administrador y paciente pueden actualizar la fecha y hora de la visita (excepto el resultado)
@@ -179,12 +170,30 @@ public class UpdateVisitMBean extends ManagedBeanBase implements Serializable {
this.id = id;
}
- public boolean isOnlyResult() {
- return onlyResult;
+ public boolean isReadOnly() {
+ switch (this.userType) {
+ case ADMINISTRATOR:
+ case PATIENT:
+ // Si no tiene resultado entonces es editable.
+ return (this.result != null && this.result.trim().equals("") == false);
+ case FAMILY_DOCTOR:
+ case SPECIALIST_DOCTOR:
+ default:
+ // Para los medicos siempres es de solo lectura (el especialista no pdrá ni ver la página, se incluye pro completitud.
+ return true;
+ }
}
- public void setOnlyResult(boolean onlyResult) {
- this.onlyResult = onlyResult;
+ // Un médico de familia siempre puede editar el resultado de una visita si la visita sucedió en el pasado, o está programada para el día de hoy
+ public boolean isResultReadOnly() {
+ if (this.userType == UserType.FAMILY_DOCTOR)
+ // Si la visita sucede en el futuro (a partir de mañana) el resultado no es editable.
+ if (this.date.isAfter(LocalDate.now()))
+ return true;
+ else
+ return false;
+ else
+ return true;
}
public String getFromPage() {