From 3b0640304ecdde8bf73f0732764039c3f7580506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Tue, 17 Dec 2019 20:10:36 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1adidos=20Comentarios=20a=20todos=20los?= =?UTF-8?q?=20m=C3=A9tdos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ejb/profile/ProfileFacadeBean.java | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java index 3b59839..a94aeda 100644 --- a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java @@ -35,16 +35,38 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { @EJB CommonFacadeLocal commonServices; + /** + * Método que genera un nuevo número de profesional, basando en la secuencia de base de datos. Los números de profesional son únicos y comunes para médicos de familia y médicos + * especialistas. + * + * Si un número de profesional no se utiliza no se vuelve a reutilizar, por lo que pueden existir huecos en la númeración. + * + * @return String con el número número de profesional generado. + */ private String getNextProfessionalNumber() { Query q = entman.createNativeQuery("select nextval('myhealth.profesionalnumber')"); return Constants.PROFESSIONAL_NUMBER_PREFIX.concat(String.valueOf(q.getSingleResult())); } + /** + * Método que genera un nuevo Código de Identificación de Paciente (CIP) basado en una secuencia de base de datos. Los códigos CIP son únicos, y si un CIP no se utiliza tras + * haber sido generado, no se vuelve a reutilizar. + * + * @return String con el CIP gnerado + */ private String getNextPersonalIdentificationCode() { Query q = entman.createNativeQuery("select nextval('myhealth.codigoidentificacionpaciente')"); return Constants.PERSONAL_IDENTIFICATION_CODE_PREFIX.concat(String.valueOf(q.getSingleResult())); } + /** + * Cambia el médico de familia asignado a un paciente. Recibe como parametros el identificador del paciente y el identificador del nuevo médico de familia + * + * Si el identificador de paciente no corresponde a ningún paciente registrado se lanza una excepción. Si el identificador del médico de familia no corresponde a ningún médico + * de familia se lanza una excepción. + * + * @return PatientTO (Transfer Object del paciente al que se la ha cambiado el médico de familia). + */ public PatientTO changeFamilyDoctor(int patientId, int newDoctor) throws Exception { PatientJPA pat = entman.find(PatientJPA.class, patientId); if (pat == null) { @@ -63,6 +85,16 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforPatientJPA(pat, 1); } + /** + * Registra un nuevo paciente en el sistema Recibe como parametros el nif del paciente, el nombre, los apellidos, la contraseña y la dirección de correo electronico. + * + * El método genera un nuevo CIP (código de identificación de paciente) y lo asigna al nuevo paciente. El médico se familia queda está establecido a null, y deberá ser + * seleccionado por el paciente una vez registrado en el sistema. + * + * La contraseña recibida se encrypta con el algoritmo MD5. + * + * @return PatientTO Transfer Object correspondiente al paciente registrado. + */ public PatientTO registerPatient(int id, String nif, String name, String surname, String password, String email) { PatientTO paTO = null; @@ -72,6 +104,20 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforPatientJPA(pat, 1); } + /** + * Registra un nuevo médico especialista en el sistema. + * + * Recibe como parametros el nif, el nombre, los apellidos, la contraseña, la dirección de correo electronico y la especialidad. + * + * El método genera un nuevo NIP (Número de Identificación de Profesional) y lo asigna al nuevo médico. + * + * La contraseña recibida se encrypta con el algoritmo MD5. + * + * El médoto comprueba que la especialidad médica recibida exista en el sistema en el momento de asignarla al nuevo médico, si la especialidad especificada no se encuentra se + * lanza una excepción. + * + * @return SpecialistDoctorTO Transfer Object correspondiente al médico especialista registrado. + */ public SpecialistDoctorTO registerSpecialistDoctor(int id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) throws Exception { MedicalSpecialtyJPA ms = entman.find(MedicalSpecialtyJPA.class, specialty.getId()); @@ -85,6 +131,19 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforSpecialistDoctorJPA(sd, 1); } + /** + * Registra un nuevo médico de familia en el sistema. + * + * Recibe como parametros el nif, el nombre, los apellidos, la contraseña, la dirección de correo electronico y el CAP (Centro Médico de Primaria). + * + * El método genera un nuevo NIP (Número de Identificación de Profesional) y lo asigna al nuevo médico. + * + * La contraseña recibida se encrypta con el algoritmo MD5. + * + * El médoto comprueba que el CAP recibido exista en el sistema en el momento de asignarlo al nuevo médico, si el CAP no se encuentra se lanza una excepción. + * + * @return FamilyDoctorTO Transfer Object correspondiente al médico de familia registrado. + */ public FamilyDoctorTO registerFamilyDoctor(int id, String nif, String name, String surname, String password, String email, PrimaryHealthCareCenterTO cap) throws Exception { FamilyDoctorTO fdTO = null; @@ -99,6 +158,18 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return commonServices.getPOJOforFamilyDoctorJPA(fd, 1); } + /** + * Actualiza los datos personales de un paciente + * + * Recibe como parametros el id del paciente a actualizar, el nif, el nombre, los apellidos, *la contraseña, la dirección de correo electronico (El medico de familia asignado + * no se modifica). + * + * El id de paciente recibido se busca en el sistema para realizar la actualización de datos, sino se encuentra se lanza una excepción. + * + * La contraseña recibida solo se actualiza si se recibe el parámetro (no es nulo ni cadena vacía). La contraseña recibida se encrypta con el algoritmo MD5 + * + * @return PatientTO Transfer Object correspondiente al paciente actualizado.. + */ public PatientTO updatePatientData(int id, String nif, String name, String surname, String password, String email) throws Exception { PatientJPA pat = entman.find(PatientJPA.class, id); @@ -119,6 +190,20 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforPatientJPA(pat, 1); } + /** + * Actualiza los datos personales de un médico especialista + * + * Recibe como parametros el id del médico a actualizar, nif, el nombre, los apellidos, *la contraseña, la dirección de correo electronico y la especialidad médcia que se debe + * asignar. + * + * El id del médico recibido se busca en el sistema para realizar la actualización de datos, sino se encuentra se lanza una excepción. + * + * La contraseña recibida solo se actualiza si se recibe el parámetro (no es nulo ni cadena vacía). La contraseña recibida se encrypta con el algoritmo MD5 + * + * El método comprueba que la especialidad recibida existe en el sistema, en caso contrario lanza una excepción. + * + * @return SpecialistDoctorTO Transfer Object correspondiente al médico especialista que se ha actualizado. + */ public SpecialistDoctorTO updateSpecialistDoctorData(int id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) throws Exception { SpecialistDoctorJPA sd = entman.find(SpecialistDoctorJPA.class, id); @@ -145,6 +230,20 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforSpecialistDoctorJPA(sd, 1); } + /** + * Actualiza los datos personales de un médico de familia + * + * Recibe como parametros el id del médico a actualizar, nif, el nombre, los apellidos, *la contraseña, la dirección de correo electronico, y el CAP al cual está asignado el + * médico de familia. + * + * El id del médico recibido se busca en el sistema para realizar la actualización de datos, sino se encuentra se lanza una excepción. + * + * La contraseña recibida solo se actualiza si se recibe el parámetro (no es nulo ni cadena vacía). La contraseña recibida se encrypta con el algoritmo MD5 + * + * El método comprueba que el CAP recibida existe en el sistema, en caso contrario lanza una excepción. + * + * @return FamilyDoctorTO Transfer Object correspondiente al médico de familia que se ha actualizado. + */ public FamilyDoctorTO updateFamilyDoctorData(int id, String nif, String name, String surname, String password, String email, PrimaryHealthCareCenterTO phcTO) throws Exception { FamilyDoctorJPA fd = entman.find(FamilyDoctorJPA.class, id); if (fd == null) { @@ -170,6 +269,17 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return this.commonServices.getPOJOforFamilyDoctorJPA(fd, 1); } + /*** + * Cambia el CAP (Centro de Atención Primaria) asignado a un médico de familia. + * + * Recibe como parametros el identificador del médico y el identificador del nuevo CAP a asginar. + * + * Si el identificador del médico no corresponde a ningún médico de familia registrado se lanza una excepción. + * + * Si el identificador del CAP no corresponde a ningún CAP registrado en el sistema se lanza una excpeción. + * + * @return FamilyDoctorTO (Transfer Object del médico de familia al que se la ha cambiado el CAP). + */ public FamilyDoctorTO changePrimaryHealthCareCenter(int professionalId, PrimaryHealthCareCenterTO newCenter) throws Exception { FamilyDoctorTO fdTO = null;