Vista para editar visitas.

This commit is contained in:
Marcos Garcia Nuñez
2019-12-26 22:39:12 +01:00
parent a851f139f7
commit c3da3bdc95
2 changed files with 281 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
<?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">
<f:viewParam name="id" value="#{UpdateVisit.id}" required="true" />
<ui:composition template="../header.xhtml">
<ui:define name="content">
<h:form id="visitForm">
<p:messages id="mesgs" showDetail="true" closable="true" autoupdate="true" />
<p:panel id="panelVisit" header="Actualizar detalles de la visita">
<div class="ui-g ui-fluid">
<div class="ui-g-2">
<p:outputLabel for="paciente" value="Paciente:" />
</div>
<div class="ui-g-4">
<p:inputText id="paciente" value="#{UpdateVisit.patient.displayName}" readonly="true" />
</div>
<div class="ui-g-6">
<p:message for="paciente" display="text" />
</div>
<div class="ui-g-2">
<p:outputLabel for="medico" value="Médico de familia:" />
</div>
<div class="ui-g-4">
<p:inputText id="medico" value="#{UpdateVisit.familyDoctor.displayName}" readonly="true" />
</div>
<div class="ui-g-6">
<p:message for="medico" display="text" />
</div>
<div class="ui-g-2">
<p:outputLabel for="fecha" value="Fecha:" />
</div>
<div class="ui-g-2">
<div class="ui-inputgroup">
<p:datePicker id="fecha" value="#{UpdateVisit.date}" pattern="dd/MM/yyyy" showIcon="true" showButtonBar="true" autocomplete="true" required="true"
requiredMessage="Especifique la fecha de la visita." readonly="#{UpdateVisit.onlyResult}" />
</div>
</div>
<div class="ui-g-8">
<p:message for="fecha" display="text" />
</div>
<div class="ui-g-2">
<p:outputLabel for="hora" value="Hora:" />
</div>
<div class="ui-g-2">
<p:datePicker id="hora" value="#{UpdateVisit.time}" timeOnly="true" pattern="HH:mm" showIcon="true" showButtonBar="true" autocomplete="true" required="true"
requiredMessage="Especifique la hora de la visita." readonly="#{UpdateVisit.onlyResult}" />
<p:calendar id="time" value="#{UpdateVisit.time}" pattern="HH:mm" timeOnly="true" autocomplete="true" />
<p:datePicker id="hora2" value="#{UpdateVisit.time}" timeOnly="true" pattern="HH:mm" />
<p:datePicker id="hora3" timeOnly="true" pattern="HH:mm" />
</div>
<div class="ui-g-8">
<p:message for="hora" display="text" />
</div>
<div class="ui-g-2">
<p:outputLabel for="observaciones" value="Observaciones:" />
</div>
<div class="ui-g-8">
<p:inputTextarea id="observaciones" value="#{UpdateVisit.observations}" readonly="true" />
</div>
<div class="ui-g-2">
<p:message for="observaciones" display="text" />
</div>
<div class="ui-g-2">
<p:outputLabel for="resultado" value="Resultado:" />
</div>
<div class="ui-g-8">
<p:inputTextarea id="resultado" value="#{UpdateVisit.result}" readonly="#{not UpdateVisit.onlyResult}" />
</div>
<div class="ui-g-2">
<p:message for="resultado" display="text" />
</div>
<div class="ui-g-12 ui-g-nopad">
<div class="ui-g-4 ui-md-4" />
<div class="ui-g-2 ui-md-2 ">
<p:commandButton validateClient="true" value="Guardar" update="visitForm" action="#{UpdateVisit.saveData}" icon="pi pi-check" />
</div>
<div class="ui-g-2 ui-md-2">
<p:button value="Volver" outcome="#{UpdateVisit.fromPage}" icon="pi pi-home" />
</div>
<div class="ui-g-4 ui-md-4" />
</div>
</div>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</html>

View File

@@ -0,0 +1,184 @@
package managedbean.visit;
import java.io.Serializable;
import java.sql.Time;
import java.time.LocalTime;
import java.util.Date;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import TO.FamilyDoctorTO;
import TO.PatientTO;
import TO.VisitTO;
import common.UserType;
import managedbean.common.ManagedBeanBase;
import managedbean.common.SessionUtils;
@Named("UpdateVisit")
@ViewScoped
public class UpdateVisitMBean extends ManagedBeanBase implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Date date;
private Date time;
private String observations;
private String result;
private PatientTO patient;
private FamilyDoctorTO familyDoctor;
private boolean onlyResult;
private String fromPage;
public UpdateVisitMBean() {
}
@PostConstruct
public void init() {
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap();
VisitTO vi = null;
try {
this.fromPage = requestParams.get("fromPage");
// Parámetro con el "id" de la visita.
int parId = Integer.valueOf(requestParams.get("id"));
vi = this.getRemoteManagerVisit().getVisit(parId);
} catch (Exception e) {
this.manageException(e);
}
if (vi != null) {
this.id = vi.getId();
this.date = vi.getDate();
this.time = vi.getTime();
this.observations = vi.getObservations();
this.result = vi.getResult();
this.patient = vi.getPatient();
this.familyDoctor = vi.getFamilyDoctor();
} else {
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() {
// 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 la fecha y hora de la visita (excepto esl resultado)
// TODO: Implementar método en EJB
//this.getRemoteManagerVisit().updateVisit(this.id, this.date, this.time);
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Visita actualizada", "La fecha y hora de la visita se ha actualizado correctamente.");
break;
case FAMILY_DOCTOR:
// El médico de familia solo puede actualizar el resultado.
//TODO: implementar método EJB para actualizar el resultado.
//this.getRemoteManagerVisit().addResultToVisit(this.id, this.result);
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Resultado actualizado", "El resultado de la visita se ha actualizado correctamente.");
break;
case SPECIALIST_DOCTOR:
this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Acesso denegado", "Su perfil de usuario no está autorizado acceder a esta página.");
return;
}
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getObservations() {
return observations;
}
public void setObservations(String observations) {
this.observations = observations;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public PatientTO getPatient() {
return patient;
}
public void setPatient(PatientTO patient) {
this.patient = patient;
}
public FamilyDoctorTO getFamilyDoctor() {
return familyDoctor;
}
public void setFamilyDoctor(FamilyDoctorTO familyDoctor) {
this.familyDoctor = familyDoctor;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public boolean isOnlyResult() {
return onlyResult;
}
public void setOnlyResult(boolean onlyResult) {
this.onlyResult = onlyResult;
}
public String getFromPage() {
return fromPage;
}
public void setFromPage(String fromPage) {
this.fromPage = fromPage;
}
}