diff --git a/1.sources/MyHealth/docroot/medicaltest/Questions.xhtml b/1.sources/MyHealth/docroot/medicaltest/Questions.xhtml
index b6774f2..f5bbd65 100644
--- a/1.sources/MyHealth/docroot/medicaltest/Questions.xhtml
+++ b/1.sources/MyHealth/docroot/medicaltest/Questions.xhtml
@@ -36,9 +36,12 @@
- #{Questions.selected.title}
-
+
+
+
+
+ #{Questions.selected.title}
Respuesta:
@@ -47,30 +50,7 @@
-
-
-
+
diff --git a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java
index c796b9d..53ad005 100644
--- a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java
+++ b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java
@@ -54,17 +54,15 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
*/
@Override
public void askQuestion(int professionalNumber, String title, String message) {
- if (SessionUtils.getUserType() == UserType.PATIENT) {
- 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);
- }
+ 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);
}
/**
@@ -75,23 +73,34 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
*/
@Override
public void answerQuestion(QuestionTO q) {
- QuestionJPA qjpa = entman.find(QuestionJPA.class, q.getId());
- qjpa.setResponse(q.getResponse());
- qjpa.setStatus(QuestionStatus.ANSWERED);
-
- PatientJPA patient = entman.find(PatientJPA.class, q.getPatient().getId());
- // 1. Buscar el médico de familia con ese professionalNumber
- FamilyDoctorJPA fdoctor = entman.find(FamilyDoctorJPA.class, q.getDoctor().getId());
-
- qjpa.setPatient(patient);
- qjpa.setFamilyDoctor(fdoctor);
+ 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());
+
entman.persist(qjpa);
}
+ @Override
public List listAllPendingQuestions(int familyDoctorId) {
- // TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.status=:status and q.familyDoctor.id=:docId order by q.title", QuestionJPA.class);
- TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.familyDoctor.id=:docId order by q.status desc, q.title asc", QuestionJPA.class);
+ // TypedQuery query = entman.createQuery("SELECT q from QuestionJPA
+ // q where q.status=:status and q.familyDoctor.id=:docId order by q.title",
+ // QuestionJPA.class);
+ TypedQuery query = entman.createQuery(
+ "SELECT q from QuestionJPA q where q.familyDoctor.id=:docId order by q.status desc, q.title asc",
+ QuestionJPA.class);
// query.setParameter("status", QuestionStatus.PENDING);
query.setParameter("docId", familyDoctorId);
@@ -105,16 +114,39 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote {
return pendingQuestions;
}
+ public List listAllMyQuestions(int userId) {
+ List pendingQuestions = new ArrayList();
+ // TypedQuery query = entman.createQuery("SELECT q from QuestionJPA
+ // q where q.status=:status and q.familyDoctor.id=:docId order by q.title",
+ // QuestionJPA.class);
+ TypedQuery query = entman.createQuery(
+ "SELECT q from QuestionJPA q where q.patient.id=:patientId order by q.status desc, q.title asc",
+ QuestionJPA.class);
+ // query.setParameter("status", QuestionStatus.PENDING);
+ query.setParameter("patientId", userId);
+
+ List allJPA = query.getResultList();
+
+ for (QuestionJPA item : allJPA) {
+ pendingQuestions.add(commonServices.getPOJOforQuestionJPA(item, 1));
+ }
+
+ return pendingQuestions;
+ }
+
public Long getPendingQuestionsCount(int familyDoctorId) {
- TypedQuery query = entman.createQuery("SELECT count(1) from QuestionJPA q where q.status=:status and q.familyDoctor.id=:docId", Long.class);
+ TypedQuery 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 listPendingQuestionsPaged(int familyDoctorId, int pageNumber, int pageSize) {
- TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.status=:status and q.familyDoctor.id=:docId order by q.title", QuestionJPA.class);
+ TypedQuery 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);
diff --git a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java
index 8382cc2..ac7b219 100644
--- a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java
+++ b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java
@@ -48,6 +48,11 @@ public interface MedicalTestFacadeRemote {
*/
public List listAllPendingQuestions(int familyDoctorId);
+ /**
+ * Recuperar las preguntas hechas por un paciente
+ */
+ public List listAllMyQuestions(int userId);
+
public Long getPendingQuestionsCount(int familyDoctorId);
public List listPendingQuestionsPaged(int familyDoctorId, int pageNumber, int pageSize);
diff --git a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java
index f36cc00..944de73 100644
--- a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java
+++ b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java
@@ -92,7 +92,7 @@ public class ManagedBeanBase {
remoteManagerMedicalTest = this.getContext("java:app/MyHealth.jar/MedicalTestFacadeBean!ejb.medicalTest.MedicalTestFacadeRemote", MedicalTestFacadeRemote.class);
}
- return remoteManagerMedicalTest;
+ return remoteManagerMedicalTest;
}
protected void addFacesMessageKeep(FacesMessage.Severity severity, String summary, String detail) {
diff --git a/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java b/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java
index d335145..b8d4f4e 100644
--- a/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java
+++ b/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java
@@ -38,6 +38,7 @@ 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.selected = null;
this.loadQuestions();
this.printSelected();
@@ -69,6 +70,7 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
// 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.
+ this.pendingQuestions = getRemoteManagerMedicalTest().listAllMyQuestions(userID);
}
}
@@ -98,36 +100,6 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
public void setDisabledMessage(boolean bval) {
// Nothing to do
}
-
- public boolean getEnableResponseEditor() {
- if(this.selected != null) {
- return this.selected.getStatus() == QuestionStatus.PENDING;
- }
- return false;
- }
-
- public boolean isEnableResponseEditor() {
- return this.getEnableResponseEditor();
- }
-
- public void setEnableResponseEditor(boolean bval) {
- // Nothing to do
- }
-
- public boolean getEnableResponseOutput() {
- if(this.selected != null) {
- return this.selected.getStatus() == QuestionStatus.ANSWERED;
- }
- return false;
- }
-
- public boolean isEnableResponseOutput() {
- return this.getEnableResponseEditor();
- }
-
- public void setEnableResponseOutput(boolean bval) {
- // Nothing to do
- }
public void onSelect(SelectEvent event) {
this.printSelected();
@@ -140,6 +112,7 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
}
public void setSelected(QuestionTO selected) {
+ this.printSelected();
this.selected = selected;
}
@@ -160,19 +133,22 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable {
}
public void save() {
+ this.printSelected();
getRemoteManagerMedicalTest().answerQuestion(this.selected);
+ this.init();
}
public void create() {
this.printSelected();
- String template = "-";
+ String template = "";
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().setName(template);
- this.selected.getPatient().setSurname(template);
+ this.selected.getPatient().setId(Integer.parseInt(SessionUtils.getloggedOnUser().getId()));
+ this.selected.getPatient().setName(SessionUtils.getloggedOnUser().getName());
this.printSelected();
}