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(); }