From 9859f833262713038c2b40d2d412e1067ee64208 Mon Sep 17 00:00:00 2001 From: mgarcianun Date: Wed, 27 Nov 2019 00:11:21 +0100 Subject: [PATCH] =?UTF-8?q?Avances=20en=20la=20pantalla=20de=20registro=20?= =?UTF-8?q?de=20usuarios=20nuevos=20(pacientes).=20*=20Actualizaci=C3=B3n?= =?UTF-8?q?=20de=20script=20para=20crear=20tablas=20(Todo=20a=20minusculas?= =?UTF-8?q?,=20no=20case=20sensitive)=20*=20Script=20de=20datos=20de=20pru?= =?UTF-8?q?ebas=20de=20especialides=20m=C3=A9dicas.=20*=20Nuevo=20bean=20p?= =?UTF-8?q?ara=20registro=20de=20usuarios=20(Quidato=20de=20filtro=20de=20?= =?UTF-8?q?seguridad=20de=20login,=20acceso=20sin=20login).=20*=20Actualiz?= =?UTF-8?q?aci=C3=B3n=20de=20entidades=20JPA=20con=20campos=20Identity.=20?= =?UTF-8?q?*=20Enumerado=20para=20gestionar=20tipos=20de=20usuarios=20(Pac?= =?UTF-8?q?iente,=20Medico=20Familia,=20Especialista=20y=20Administrador)?= =?UTF-8?q?=20*=20Clase=20com=C3=BAn=20para=20realizar=20validaciones=20(f?= =?UTF-8?q?unci=C3=B3n=20para=20validar=20nif).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyHealth/docroot/WEB-INF/faces-config.xml | 6 +- 1.sources/MyHealth/docroot/header.xhtml | 9 +- .../MyHealth/docroot/profile/AddPatient.xhtml | 71 ++++-- .../docroot/profile/RegisterUser.xhtml | 89 +++++++ .../MyHealth/src/META-INF/persistence.xml | 12 +- 1.sources/MyHealth/src/TO/FamilyDoctorTO.java | 8 +- 1.sources/MyHealth/src/TO/PatientTO.java | 8 +- .../src/TO/PrimaryHealthCareCenterTO.java | 23 ++ .../MyHealth/src/TO/SpecialistDoctorTO.java | 8 +- .../src/ejb/profile/ProfileFacadeBean.java | 16 +- .../src/ejb/profile/ProfileFacadeRemote.java | 16 +- .../systemAdmin/SystemAdminFacadeBean.java | 40 ++- .../systemAdmin/SystemAdminFacadeRemote.java | 6 +- .../MyHealth/src/jpa/FamilyDoctorJPA.java | 11 +- 1.sources/MyHealth/src/jpa/PatientJPA.java | 16 +- .../src/jpa/PrimaryHealthCareCenterJPA.java | 1 - .../MyHealth/src/jpa/SpecialistDoctorJPA.java | 11 +- .../common/AuthorizationFilter.java | 2 +- .../src/managedbean/common/UserType.java | 18 ++ .../managedbean/common/ValidationUtils.java | 50 ++++ .../managedbean/profile/AddPatientMBean.java | 98 ++++++-- .../managedbean/profile/ProfileMBeanBase.java | 10 + .../profile/RegisterUserMBean.java | 228 ++++++++++++++++++ .../managedbean/systemAdmin/LoginMBean.java | 1 + 2.database/01.CreateTables.sql | 202 +++++++++------- 2.database/02. Datos_prueba.sql | 30 +-- 26 files changed, 788 insertions(+), 202 deletions(-) create mode 100644 1.sources/MyHealth/docroot/profile/RegisterUser.xhtml create mode 100644 1.sources/MyHealth/src/managedbean/common/UserType.java create mode 100644 1.sources/MyHealth/src/managedbean/common/ValidationUtils.java create mode 100644 1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java diff --git a/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml b/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml index b8b9092..f8b8e6a 100644 --- a/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml +++ b/1.sources/MyHealth/docroot/WEB-INF/faces-config.xml @@ -7,11 +7,15 @@ home /home.xhtml + + RegisterUser + /profile/RegisterUser.xhtml + AddPatient /profile/AddPatient.xhtml - + AddFamilyDoctor /profile/AddFamilyDoctor.xhtml diff --git a/1.sources/MyHealth/docroot/header.xhtml b/1.sources/MyHealth/docroot/header.xhtml index a764b67..a06025e 100644 --- a/1.sources/MyHealth/docroot/header.xhtml +++ b/1.sources/MyHealth/docroot/header.xhtml @@ -19,7 +19,7 @@ $('#loginLink').fadeOut(); } } - +
@@ -68,11 +68,12 @@ - + - + + @@ -83,7 +84,7 @@ - + diff --git a/1.sources/MyHealth/docroot/profile/AddPatient.xhtml b/1.sources/MyHealth/docroot/profile/AddPatient.xhtml index 9dfff79..25fb910 100644 --- a/1.sources/MyHealth/docroot/profile/AddPatient.xhtml +++ b/1.sources/MyHealth/docroot/profile/AddPatient.xhtml @@ -1,24 +1,61 @@ - + - + + function handleActionMessage(xhr, status, args) { + if(args.validationFailed || !args.loggedIn) { + PF('dlgLogin').jq.effect("shake", {times:5}, 100); + } + else { + PF('dlgLogin').hide(); + $('#loginLink').fadeOut(); + } + } + + - -
-

AddPaciente Page

-
-
AddPaciente:
-
- AddPaciente content -
-
-

- -

-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
+
diff --git a/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml b/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml new file mode 100644 index 0000000..5e6bbcd --- /dev/null +++ b/1.sources/MyHealth/docroot/profile/RegisterUser.xhtml @@ -0,0 +1,89 @@ + + + + + + + + function handleRequest(xhr, status, args) { + if(args.specs) { + PF('caps').hide(); + $('#caps').fadeOut(); + PF('especialidades').show() + $('#especialidades').fadeIn(); + } + else if (args.caps) { + PF('especialidades').hide(); + $('#especialidades').fadeOut(); + PF('caps').show() + $('#caps').fadeIn(); + } + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/1.sources/MyHealth/src/META-INF/persistence.xml b/1.sources/MyHealth/src/META-INF/persistence.xml index c34d46a..5a5a16f 100644 --- a/1.sources/MyHealth/src/META-INF/persistence.xml +++ b/1.sources/MyHealth/src/META-INF/persistence.xml @@ -1,15 +1,15 @@ - + http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> org.hibernate.ejb.HibernatePersistence java:jboss/postgresDS - + + + + \ No newline at end of file diff --git a/1.sources/MyHealth/src/TO/FamilyDoctorTO.java b/1.sources/MyHealth/src/TO/FamilyDoctorTO.java index 965392c..6d50357 100644 --- a/1.sources/MyHealth/src/TO/FamilyDoctorTO.java +++ b/1.sources/MyHealth/src/TO/FamilyDoctorTO.java @@ -13,7 +13,7 @@ import javax.xml.bind.annotation.XmlRootElement; public class FamilyDoctorTO implements Serializable { private static final long serialVersionUID = 1L; - private String id; + private Integer id; private String nif; private String name; private String surname; @@ -24,7 +24,7 @@ public class FamilyDoctorTO implements Serializable { super(); } - public FamilyDoctorTO(String id, String nif, String name, String surname, String password, String email) { + public FamilyDoctorTO(Integer id, String nif, String name, String surname, String password, String email) { this.setId(id); this.setNif(nif); this.setName(name); @@ -73,11 +73,11 @@ public class FamilyDoctorTO implements Serializable { this.nif = nif; } - public String getId() { + public Integer getId() { return id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } diff --git a/1.sources/MyHealth/src/TO/PatientTO.java b/1.sources/MyHealth/src/TO/PatientTO.java index cca8509..144e532 100644 --- a/1.sources/MyHealth/src/TO/PatientTO.java +++ b/1.sources/MyHealth/src/TO/PatientTO.java @@ -15,7 +15,7 @@ import jpa.FamilyDoctorJPA; public class PatientTO implements Serializable { private static final long serialVersionUID = 1L; - private String id; + private Integer id; private String nif; private String name; private String surname; @@ -30,7 +30,7 @@ public class PatientTO implements Serializable { super(); } - public PatientTO(String id, String nif, String name, String surname, String password, String email) { + public PatientTO(Integer id, String nif, String name, String surname, String password, String email) { this.setId(id); this.setNif(nif); this.setName(name); @@ -79,11 +79,11 @@ public class PatientTO implements Serializable { this.nif = nif; } - public String getId() { + public Integer getId() { return id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } diff --git a/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java b/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java index b890698..886da76 100644 --- a/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java +++ b/1.sources/MyHealth/src/TO/PrimaryHealthCareCenterTO.java @@ -14,10 +14,33 @@ public class PrimaryHealthCareCenterTO implements Serializable { private static final long serialVersionUID = 1L; + private String name; + private String description; + public PrimaryHealthCareCenterTO() { super(); } + public PrimaryHealthCareCenterTO(String name, String description) { + this.name = name; + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } } diff --git a/1.sources/MyHealth/src/TO/SpecialistDoctorTO.java b/1.sources/MyHealth/src/TO/SpecialistDoctorTO.java index fe2bd22..944eec1 100644 --- a/1.sources/MyHealth/src/TO/SpecialistDoctorTO.java +++ b/1.sources/MyHealth/src/TO/SpecialistDoctorTO.java @@ -13,7 +13,7 @@ import javax.xml.bind.annotation.XmlRootElement; public class SpecialistDoctorTO implements Serializable { private static final long serialVersionUID = 1L; - private String id; + private Integer id; private String nif; private String name; private String surname; @@ -24,7 +24,7 @@ public class SpecialistDoctorTO implements Serializable { super(); } - public SpecialistDoctorTO(String id, String nif, String name, String surname, String password, String email) { + public SpecialistDoctorTO(Integer id, String nif, String name, String surname, String password, String email) { this.setId(id); this.setNif(nif); this.setName(name); @@ -73,11 +73,11 @@ public class SpecialistDoctorTO implements Serializable { this.nif = nif; } - public String getId() { + public Integer getId() { return id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } diff --git a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java index 2a18d8b..fede361 100644 --- a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeBean.java @@ -27,7 +27,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { @PersistenceContext(unitName = "MyHealth") private EntityManager entman; - public PatientTO changeFamilyDoctor(String id, String ProfessionalNumberId) { + public PatientTO changeFamilyDoctor(Integer id, Integer ProfessionalNumberId) { PatientTO paTO = null; FamilyDoctorJPA fd = entman.find(FamilyDoctorJPA.class, ProfessionalNumberId); @@ -42,7 +42,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return paTO; } - public PatientTO registerPacient(String id, String nif, String name, String surname, String password, String email) { + public PatientTO registerPatient(Integer id, String nif, String name, String surname, String password, String email) { PatientTO paTO = null; PatientJPA ms = new PatientJPA(id, nif, name, surname, password, email); @@ -52,7 +52,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return paTO; } - public SpecialistDoctorTO registerSpecialistDoctor(String id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) { + public SpecialistDoctorTO registerSpecialistDoctor(Integer id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) { SpecialistDoctorTO sdTO = null; MedicalSpecialtyJPA ms = entman.find(MedicalSpecialtyJPA.class, specialty.getName()); @@ -67,7 +67,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return sdTO; } - public FamilyDoctorTO registerFamilyDoctor1(String id, String nif, String name, String surname, String password, String email, String cap) { + public FamilyDoctorTO registerFamilyDoctor1(Integer id, String nif, String name, String surname, String password, String email, String cap) { FamilyDoctorTO fdTO = null; PrimaryHealthCareCenterJPA phcC = entman.find(PrimaryHealthCareCenterJPA.class, cap); @@ -86,7 +86,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return fdTO; } - public PatientTO updatePacientData(String id, String nif, String name, String surname, String password, String email) { + public PatientTO updatePacientData(Integer id, String nif, String name, String surname, String password, String email) { PatientJPA fd = entman.find(PatientJPA.class, id); PatientTO ptTO = null; @@ -105,7 +105,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return ptTO; } - public SpecialistDoctorTO updateSpecialistDoctorData(String id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) { + public SpecialistDoctorTO updateSpecialistDoctorData(Integer id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty) { SpecialistDoctorTO sdTO = null; SpecialistDoctorJPA sd = entman.find(SpecialistDoctorJPA.class, id); @@ -129,7 +129,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return sdTO; } - public FamilyDoctorTO updateFamilyDoctorData(String id, String nif, String name, String surname, String password, String email, String cap) { + public FamilyDoctorTO updateFamilyDoctorData(Integer id, String nif, String name, String surname, String password, String email, String cap) { FamilyDoctorJPA fd = entman.find(FamilyDoctorJPA.class, id); FamilyDoctorTO fdTO = null; @@ -153,7 +153,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote { return fdTO; } - public FamilyDoctorTO changePrimaryHealthCareCenter(String FamilyDoctorId, PrimaryHealthCareCenterTO newCenter) { + public FamilyDoctorTO changePrimaryHealthCareCenter(Integer FamilyDoctorId, PrimaryHealthCareCenterTO newCenter) { FamilyDoctorTO fdTO = null; PrimaryHealthCareCenterJPA phcC = entman.find(PrimaryHealthCareCenterJPA.class, newCenter); diff --git a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeRemote.java b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeRemote.java index 087f7e8..debceb4 100644 --- a/1.sources/MyHealth/src/ejb/profile/ProfileFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/profile/ProfileFacadeRemote.java @@ -16,21 +16,21 @@ import TO.SpecialistDoctorTO; @Remote public interface ProfileFacadeRemote { - public PatientTO changeFamilyDoctor(String id, String ProfessionalNumberId); + public PatientTO changeFamilyDoctor(Integer id, Integer ProfessionalNumberId); - public PatientTO registerPacient(String id, String nif, String name, String surname, String password, String email); + public PatientTO registerPatient(Integer id, String nif, String name, String surname, String password, String email); - public SpecialistDoctorTO registerSpecialistDoctor(String id, String nif, String name, String surname, String password, String email, + public SpecialistDoctorTO registerSpecialistDoctor(Integer id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty); - public FamilyDoctorTO registerFamilyDoctor1(String id, String nif, String name, String surname, String password, String email, String cap); + public FamilyDoctorTO registerFamilyDoctor1(Integer id, String nif, String name, String surname, String password, String email, String cap); - public PatientTO updatePacientData(String id, String nif, String name, String surname, String password, String email); + public PatientTO updatePacientData(Integer id, String nif, String name, String surname, String password, String email); - public SpecialistDoctorTO updateSpecialistDoctorData(String id, String nif, String name, String surname, String password, String email, + public SpecialistDoctorTO updateSpecialistDoctorData(Integer id, String nif, String name, String surname, String password, String email, MedicalSpecialtyTO specialty); - public FamilyDoctorTO updateFamilyDoctorData(String id, String nif, String name, String surname, String password, String email, String cap); + public FamilyDoctorTO updateFamilyDoctorData(Integer id, String nif, String name, String surname, String password, String email, String cap); - public FamilyDoctorTO changePrimaryHealthCareCenter(String id, PrimaryHealthCareCenterTO newCenter); + public FamilyDoctorTO changePrimaryHealthCareCenter(Integer id, PrimaryHealthCareCenterTO newCenter); } \ No newline at end of file diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java index e5bffd6..3c93f03 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeBean.java @@ -1,9 +1,15 @@ package ejb.systemAdmin; +import java.util.ArrayList; +import java.util.Collection; + import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import TO.MedicalSpecialtyTO; +import jpa.MedicalSpecialtyJPA; /** * EJB Session Bean Class para la Practica 2, Ejercicio 1 (ISCSD) Implementa los @@ -20,9 +26,37 @@ public class SystemAdminFacadeBean implements SystemAdminFacadeRemote { @PersistenceContext(unitName = "MyHealth") private EntityManager entman; - public void ejbMethod(String parameter) - { - + /** + * Metodo que devuelve todas las especialidades medicas + */ + public Collection listAllMedicalSpecialities() { + return this.listPagedMedicalSpecialities(0, 0); + } + + /** + * Metodo que devuelve las especialidades médicas de forma paginada + * + * Acepta como parametro la página (comenzando en 0) y el número de elementos de + * cada página + * + */ + public Collection listPagedMedicalSpecialities(int pageNumber, int pageSize) { + Query query = entman.createQuery("from MedicalSpecialtyJPA order by name"); + + if (pageSize > 0) { + query.setFirstResult(pageNumber * pageSize); + query.setMaxResults(pageSize); + } + + @SuppressWarnings("unchecked") + Collection allJPA = query.getResultList(); + Collection allSpecialities = new ArrayList(); + + for (MedicalSpecialtyJPA ms : allJPA) { + allSpecialities.add(new MedicalSpecialtyTO(ms.getName(), ms.getDescription())); + } + + return allSpecialities; } } diff --git a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java index 189afce..94a8e49 100644 --- a/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/systemAdmin/SystemAdminFacadeRemote.java @@ -1,7 +1,11 @@ package ejb.systemAdmin; +import java.util.Collection; + import javax.ejb.Remote; +import TO.MedicalSpecialtyTO; + /** * Interfaz remota del EJB Definimos los métodos que estarán disponibles para * los clientes del EJB @@ -14,5 +18,5 @@ public interface SystemAdminFacadeRemote { /** * Definimos la interfaz remota */ - public void ejbMethod(String parameter); + public Collection listAllMedicalSpecialities(); } \ No newline at end of file diff --git a/1.sources/MyHealth/src/jpa/FamilyDoctorJPA.java b/1.sources/MyHealth/src/jpa/FamilyDoctorJPA.java index fffe263..d9621e0 100644 --- a/1.sources/MyHealth/src/jpa/FamilyDoctorJPA.java +++ b/1.sources/MyHealth/src/jpa/FamilyDoctorJPA.java @@ -6,6 +6,8 @@ import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @@ -24,7 +26,7 @@ public class FamilyDoctorJPA implements Serializable { private static final long serialVersionUID = 1L; @Id - private String id; + private Integer id; private String nif; private String name; private String surname; @@ -40,7 +42,7 @@ public class FamilyDoctorJPA implements Serializable { super(); } - public FamilyDoctorJPA(String id, String nif, String name, String surname, String password, String email) { + public FamilyDoctorJPA(Integer id, String nif, String name, String surname, String password, String email) { this.id = id; this.nif = nif; this.name = name; @@ -50,11 +52,12 @@ public class FamilyDoctorJPA implements Serializable { } @Id - public String getId() { + @GeneratedValue(strategy=GenerationType.IDENTITY) + public Integer getId() { return id; } - public void setId(String value) { + public void setId(Integer value) { this.id = value; } diff --git a/1.sources/MyHealth/src/jpa/PatientJPA.java b/1.sources/MyHealth/src/jpa/PatientJPA.java index 59a6969..53eb2ad 100644 --- a/1.sources/MyHealth/src/jpa/PatientJPA.java +++ b/1.sources/MyHealth/src/jpa/PatientJPA.java @@ -3,6 +3,8 @@ package jpa; import java.io.Serializable; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @@ -20,12 +22,15 @@ public class PatientJPA implements Serializable { private static final long serialVersionUID = 1L; @Id - private String id; + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Integer id; private String nif; private String name; private String surname; private String password; private String email; + @ManyToOne + @JoinColumn (name="FamilyDoctorId") private FamilyDoctorJPA familyDoctor; /** @@ -35,7 +40,7 @@ public class PatientJPA implements Serializable { super(); } - public PatientJPA(String id, String nif, String name, String surname, String password, String email) { + public PatientJPA(Integer id, String nif, String name, String surname, String password, String email) { this.id = id; this.nif = nif; this.name = name; @@ -44,12 +49,11 @@ public class PatientJPA implements Serializable { this.email = email; } - @Id - public String getId() { + public Integer getId() { return id; } - public void setId(String value) { + public void setId(Integer value) { this.id = value; } @@ -96,8 +100,6 @@ public class PatientJPA implements Serializable { /** * Methods get/set persistent relationships */ - @ManyToOne - @JoinColumn (name="FamilyDoctorId") public FamilyDoctorJPA getFamilyDoctor() { return familyDoctor; } diff --git a/1.sources/MyHealth/src/jpa/PrimaryHealthCareCenterJPA.java b/1.sources/MyHealth/src/jpa/PrimaryHealthCareCenterJPA.java index 4e2e12f..c549e70 100644 --- a/1.sources/MyHealth/src/jpa/PrimaryHealthCareCenterJPA.java +++ b/1.sources/MyHealth/src/jpa/PrimaryHealthCareCenterJPA.java @@ -33,7 +33,6 @@ public class PrimaryHealthCareCenterJPA implements Serializable { this.description = description; } - @Id public String getName() { return name; } diff --git a/1.sources/MyHealth/src/jpa/SpecialistDoctorJPA.java b/1.sources/MyHealth/src/jpa/SpecialistDoctorJPA.java index c929163..6785241 100644 --- a/1.sources/MyHealth/src/jpa/SpecialistDoctorJPA.java +++ b/1.sources/MyHealth/src/jpa/SpecialistDoctorJPA.java @@ -3,6 +3,8 @@ package jpa; import java.io.Serializable; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @@ -20,7 +22,7 @@ public class SpecialistDoctorJPA implements Serializable { private static final long serialVersionUID = 1L; @Id - private String id; + private Integer id; private String nif; private String name; private String surname; @@ -35,7 +37,7 @@ public class SpecialistDoctorJPA implements Serializable { super(); } - public SpecialistDoctorJPA(String id, String nif, String name, String surname, String password, String email) { + public SpecialistDoctorJPA(Integer id, String nif, String name, String surname, String password, String email) { this.id = id; this.nif = nif; this.name = name; @@ -45,11 +47,12 @@ public class SpecialistDoctorJPA implements Serializable { } @Id - public String getId() { + @GeneratedValue(strategy=GenerationType.IDENTITY) + public Integer getId() { return id; } - public void setId(String value) { + public void setId(Integer value) { this.id = value; } diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index fde294e..9c4c348 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -35,7 +35,7 @@ public class AuthorizationFilter implements Filter { HttpSession ses = reqt.getSession(false); String reqURI = reqt.getRequestURI(); - if (reqURI.indexOf("/login.xhtml") >= 0 || (ses != null && ses.getAttribute("username") != null) + if (reqURI.indexOf("/login.xhtml") >= 0 || reqURI.indexOf("/RegisterUser.xhtml") >= 0 || (ses != null && ses.getAttribute("username") != null) || reqURI.indexOf("/public/") >= 0 || reqURI.indexOf("/home.xhtml") >= 0 || reqURI.contains("javax.faces.resource")) chain.doFilter(request, response); else diff --git a/1.sources/MyHealth/src/managedbean/common/UserType.java b/1.sources/MyHealth/src/managedbean/common/UserType.java new file mode 100644 index 0000000..b747673 --- /dev/null +++ b/1.sources/MyHealth/src/managedbean/common/UserType.java @@ -0,0 +1,18 @@ +package managedbean.common; + +public enum UserType { + PATIENT("Paciente"), + FAMILY_DOCTOR("Médico de familia"), + SPECIALIST_DOCTOR("Médico especialista"), + ADMINISTRADOR("Administrador"); + + private String userTypename; + + private UserType (String userTypename){ + this.userTypename = userTypename; + } + + public String getUserTypename() { + return userTypename; + } + } diff --git a/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java b/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java new file mode 100644 index 0000000..f011bc3 --- /dev/null +++ b/1.sources/MyHealth/src/managedbean/common/ValidationUtils.java @@ -0,0 +1,50 @@ +package managedbean.common; + +/*** + * + * @author Marcos García Núñez (mgarcianun@uoc.edu) + * + */ +public class ValidationUtils { + static final String NIF_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE"; + static final String NIE_LETTERS = "XYZ"; + + /** + * + * @param nif NIF a validar + * @return true si es válido, false en otro caso + */ + public static boolean isValid(String nif) { + if (nif == null) + return false; + + nif = nif.toUpperCase().replace("-", "").replace(".", ""); + + if (nif.length() < 2 || nif.length() > 9) + return false; + + if (nif.startsWith("X")) { + nif = nif.replace('X', '0'); + } else if (nif.startsWith("Y")) { + nif = nif.replace('Y', '1'); + } else if (nif.startsWith("Z")) { + nif = nif.replace('Z', '2'); + } + + char letra = nif.charAt(nif.length() - 1); + if (NIF_LETTERS.indexOf(letra) < 0) + return false; + + String numbers = nif.substring(0, nif.length() - 1); + + try { + if (NIF_LETTERS.charAt(Integer.parseInt(numbers) % 23) == letra) + return true; + } catch (Exception ex) { + return false; + } + + return false; + } + +} diff --git a/1.sources/MyHealth/src/managedbean/profile/AddPatientMBean.java b/1.sources/MyHealth/src/managedbean/profile/AddPatientMBean.java index cf3e4bb..466dfca 100644 --- a/1.sources/MyHealth/src/managedbean/profile/AddPatientMBean.java +++ b/1.sources/MyHealth/src/managedbean/profile/AddPatientMBean.java @@ -1,14 +1,11 @@ package managedbean.profile; import java.io.Serializable; -import java.util.Properties; import javax.enterprise.context.RequestScoped; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; import javax.inject.Named; -import javax.naming.Context; -import javax.naming.InitialContext; - -import ejb.profile.ProfileFacadeRemote; /** * ManagedBEan que gestiona la edición y actualización de una especialidad @@ -17,31 +14,98 @@ import ejb.profile.ProfileFacadeRemote; * @author mark * */ -@Named( "AddPatientMBean") +@Named("addPatientMBean") @RequestScoped public class AddPatientMBean extends ProfileMBeanBase implements Serializable { private static final long serialVersionUID = 1L; + private String id; + private String nif; + private String name; + private String surname; + private String password; + private String passwordRepeat; + private String email; + private String primaryHealthCareCenter; + private String medicalSpecialty; + /** * Constructor. Inicializa la conexión con el EJB Remoto * * @throws Exception */ public AddPatientMBean() throws Exception { - initializeAdminFacadeRemote(); + super.initializeProfileFacadeRemote(); } - /** - * Inicializa la conexión con el EJB Remoto - * - * @throws Exception - */ - private void initializeAdminFacadeRemote() throws Exception { - Properties props = System.getProperties(); - Context ctx = new InitialContext(props); - remoteManager = (ProfileFacadeRemote) ctx - .lookup("java:app/myHealth.jar/ProfileFacadeBean!ejb.component.ProfileFacadeRemote"); + public String getEmail() { + return email; } + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNif() { + return nif; + } + + public void setNif(String nif) { + this.nif = nif; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public void save() { + FacesMessage msg; + + try { + + + msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Alta realizada", "El usuario " + name + " " + surname + " se ha registrado correctamente."); + } catch (Exception e) { + msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Se ha producido un error inesperado: " + e.getLocalizedMessage()); + } + + FacesContext.getCurrentInstance().addMessage(null, msg); + } + + public String getPasswordRepeat() { + return passwordRepeat; + } + + public void setPasswordRepeat(String passwordRepeat) { + this.passwordRepeat = passwordRepeat; + } } diff --git a/1.sources/MyHealth/src/managedbean/profile/ProfileMBeanBase.java b/1.sources/MyHealth/src/managedbean/profile/ProfileMBeanBase.java index 5bb3dc2..73b55dd 100644 --- a/1.sources/MyHealth/src/managedbean/profile/ProfileMBeanBase.java +++ b/1.sources/MyHealth/src/managedbean/profile/ProfileMBeanBase.java @@ -9,11 +9,21 @@ import javax.naming.InitialContext; import ejb.profile.ProfileFacadeRemote; +/*** + * + * @author Marcos García Núñez (mgarcianun@uoc.edu) + * + */ @Named("profileMBean") public class ProfileMBeanBase { @EJB protected ProfileFacadeRemote remoteManager; + /** + * Inicializa la conexión con el EJB Remoto + * + * @throws Exception + */ protected void initializeProfileFacadeRemote() throws Exception { Properties props = System.getProperties(); Context ctx = new InitialContext(props); diff --git a/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java new file mode 100644 index 0000000..ab0b11c --- /dev/null +++ b/1.sources/MyHealth/src/managedbean/profile/RegisterUserMBean.java @@ -0,0 +1,228 @@ +package managedbean.profile; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Properties; + +import javax.annotation.PostConstruct; +import javax.enterprise.context.RequestScoped; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import javax.inject.Named; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.resource.NotSupportedException; + +import org.primefaces.PrimeFaces; + +import TO.FamilyDoctorTO; +import TO.MedicalSpecialtyTO; +import TO.PatientTO; +import TO.PrimaryHealthCareCenterTO; +import TO.SpecialistDoctorTO; +import ejb.systemAdmin.SystemAdminFacadeRemote; +import managedbean.common.UserType; +import managedbean.common.ValidationUtils; + +/** + * ManagedBEan que gestiona la edición y actualización de una especialidad + * médica. + * + * @author mark + * + */ +@Named("registerUser") +@RequestScoped +public class RegisterUserMBean extends ProfileMBeanBase implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String nif; + private String name; + private String surname; + private String password; + private String passwordRepeat; + private String email; + private HashMap userTypes; + private String userType; + private String primaryHealthCareCenter; + private String medicalSpecialty; + private Collection medicalSpecialities; + private Collection healthcareCenters; + + /** + * Constructor. Inicializa la conexión con el EJB Remoto + * + * @throws Exception + */ + public RegisterUserMBean() throws Exception { + super.initializeProfileFacadeRemote(); + } + + @PostConstruct + public void init() { + this.userTypes = new HashMap(); + this.userTypes.put(UserType.PATIENT.getUserTypename(), UserType.PATIENT.name()); + this.userTypes.put(UserType.FAMILY_DOCTOR.getUserTypename(), UserType.FAMILY_DOCTOR.name()); + this.userTypes.put(UserType.SPECIALIST_DOCTOR.getUserTypename(), UserType.SPECIALIST_DOCTOR.name()); + this.userType = "patient"; + + } + + public HashMap getUserTypes() { + return userTypes; + } + + public void onUserTypeChange() { + switch (UserType.valueOf(this.userType)) { + case SPECIALIST_DOCTOR: + try { + Properties props = System.getProperties(); + Context ctx = new InitialContext(props); + SystemAdminFacadeRemote rman = (SystemAdminFacadeRemote) ctx.lookup("java:app/MyHealth.jar/SystemAdminFacadeBean!ejb.systemAdmin.SystemAdminFacadeRemote"); + + this.medicalSpecialities = rman.listAllMedicalSpecialities(); + + PrimeFaces.current().ajax().addCallbackParam("specs", true); + } catch (Exception e) { + this.manageException(e); + } + break; + case FAMILY_DOCTOR: + try { + // TODO: Load Primary Healthcare Centers from remote EJB + this.healthcareCenters = new ArrayList(); + this.healthcareCenters.add(new PrimaryHealthCareCenterTO("Prueba", "Descripción prueba")); + this.healthcareCenters.add(new PrimaryHealthCareCenterTO("Centro 2", "Centro 2")); + + PrimeFaces.current().ajax().addCallbackParam("caps", true); + } catch (Exception e) { + this.manageException(e); + } + break; + case ADMINISTRADOR: + case PATIENT: + break; + } + } + + public Collection getMedicalSpecialties() { + return medicalSpecialities; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNif() { + return nif; + } + + public void setNif(String nif) { + this.nif = nif; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public void addNewUser() { + if (ValidationUtils.isValid(nif) == false) { + this.addFacesMessage(FacesMessage.SEVERITY_WARN, "El NIF indicado no es válido", "Por favor, especifique un NIF válido."); + } else { + try { + switch (UserType.valueOf(this.userType)) { + case PATIENT: + PatientTO pat = this.remoteManager.registerPatient(id, nif, name, surname, password, email); + + break; + case FAMILY_DOCTOR: + FamilyDoctorTO fd = this.remoteManager.registerFamilyDoctor1(id, nif, name, surname, password, email, null); + + break; + case SPECIALIST_DOCTOR: + SpecialistDoctorTO sd = this.remoteManager.registerSpecialistDoctor(id, nif, name, surname, password, email, null); + + break; + case ADMINISTRADOR: + throw new NotSupportedException("No se soporta el registro directo de administradores."); + } + + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Alta realizada", + "El usuario " + name + " " + surname + " se ha registrado correctamente. Por favor, comprueba su correo electrónico para verificar su cuenta."); + } catch (Exception e) { + this.manageException(e); + } + } + + // FacesContext.getCurrentInstance().addMessage(null, msg); + } + + private void addFacesMessage(FacesMessage.Severity severity, String summary, String detail) { + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, summary, detail)); + } + + private void manageException(Exception ex) { + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Se ha producido un error inesperado", "Descripción del error: " + ex.getLocalizedMessage()); + } + + public String getPasswordRepeat() { + return passwordRepeat; + } + + public void setPasswordRepeat(String passwordRepeat) { + this.passwordRepeat = passwordRepeat; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + public String getmedicalSpecialty() { + return medicalSpecialty; + } + + public void setmedicalSpecialty(String medicalSpecialty) { + this.medicalSpecialty = medicalSpecialty; + } + +} diff --git a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java index ee31099..b660b17 100644 --- a/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java +++ b/1.sources/MyHealth/src/managedbean/systemAdmin/LoginMBean.java @@ -3,6 +3,7 @@ package managedbean.systemAdmin; import javax.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; +import javax.inject.Inject; import javax.inject.Named; import javax.servlet.http.HttpSession; diff --git a/2.database/01.CreateTables.sql b/2.database/01.CreateTables.sql index a31df0b..459b522 100644 --- a/2.database/01.CreateTables.sql +++ b/2.database/01.CreateTables.sql @@ -1,207 +1,223 @@ --- Table: "MyHealth"."Administrator" +/* +DROP TABLE myhealth.Administrator; +DROP TABLE myhealth.FamilyDoctor; +DROP TABLE myhealth.MedicalSpecialty; +DROP TABLE myhealth.MedicalTest; +DROP TABLE myhealth.Patient; +DROP TABLE myhealth.PrimaryHealthCareCenter; +DROP TABLE myhealth.Question; +DROP TABLE myhealth.Response; +DROP TABLE myhealth.SpecialistDoctor; +DROP TABLE myhealth.Visit; +*/ --- DROP TABLE "MyHealth"."Administrator"; +-- Table: MyHealth.Administrator -CREATE TABLE "MyHealth"."Administrator" +-- DROP TABLE MyHealth.Administrator; + +CREATE TABLE MyHealth.Administrator ( - email character varying(50) COLLATE pg_catalog."default" NOT NULL, - password character varying(100) COLLATE pg_catalog."default", - CONSTRAINT "Administrator_pkey" PRIMARY KEY (email) + email character varying(50) COLLATE pg_catalog.default NOT NULL, + password character varying(100) COLLATE pg_catalog.default, + CONSTRAINT Administrator_pkey PRIMARY KEY (email) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."Administrator" +ALTER TABLE MyHealth.Administrator OWNER to "USER"; --- Table: "MyHealth"."FamilyDoctor" +-- Table: MyHealth.FamilyDoctor --- DROP TABLE "MyHealth"."FamilyDoctor"; +-- DROP TABLE MyHealth.FamilyDoctor; -CREATE TABLE "MyHealth"."FamilyDoctor" +CREATE TABLE MyHealth.FamilyDoctor ( - id character varying(50) COLLATE pg_catalog."default" NOT NULL, - nif character(50) COLLATE pg_catalog."default", - surname character varying(100) COLLATE pg_catalog."default", - email character varying(120) COLLATE pg_catalog."default", - name character varying(100) COLLATE pg_catalog."default", - "PrimaryHealthCareCenterId" character varying(50) COLLATE pg_catalog."default", - CONSTRAINT "FamilyDoctor_pkey" PRIMARY KEY (id) + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, + password character(50) COLLATE pg_catalog.default, + nif character(50) COLLATE pg_catalog.default, + surname character varying(100) COLLATE pg_catalog.default, + email character varying(120) COLLATE pg_catalog.default, + name character varying(100) COLLATE pg_catalog.default, + PrimaryHealthCareCenterId character varying(50) COLLATE pg_catalog.default, + CONSTRAINT FamilyDoctor_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."FamilyDoctor" +ALTER TABLE MyHealth.FamilyDoctor OWNER to "USER"; --- Table: "MyHealth"."MedicalSpeciality" +-- Table: MyHealth.MedicalSpecialty --- DROP TABLE "MyHealth"."MedicalSpeciality"; +-- DROP TABLE MyHealth.MedicalSpecialty; -CREATE TABLE "MyHealth"."MedicalSpeciality" +CREATE TABLE MyHealth.MedicalSpecialty ( - name text COLLATE pg_catalog."default" NOT NULL, - description text COLLATE pg_catalog."default", - CONSTRAINT "MedicalSpeciality_pkey" PRIMARY KEY (name) + name text COLLATE pg_catalog.default NOT NULL, + description text COLLATE pg_catalog.default, + CONSTRAINT MedicalSpecialty_pkey PRIMARY KEY (name) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."MedicalSpeciality" +ALTER TABLE MyHealth.MedicalSpecialty OWNER to "USER"; --- Table: "MyHealth"."MedicalTest" +-- Table: MyHealth.MedicalTest --- DROP TABLE "MyHealth"."MedicalTest"; +-- DROP TABLE MyHealth.MedicalTest; -CREATE TABLE "MyHealth"."MedicalTest" +CREATE TABLE MyHealth.MedicalTest ( - id integer NOT NULL, + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, date date, - "time" abstime, - result text COLLATE pg_catalog."default", - "highResImage" bytea, + time abstime, + result text COLLATE pg_catalog.default, + highResImage bytea, type integer, - "PatientId" character varying(50) COLLATE pg_catalog."default" NOT NULL, - "SpecialistDoctorId" character varying(50) COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT "MedicalTest_pkey" PRIMARY KEY (id) + PatientId character varying(50) COLLATE pg_catalog.default NOT NULL, + SpecialistDoctorId character varying(50) COLLATE pg_catalog.default NOT NULL, + CONSTRAINT MedicalTest_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."MedicalTest" +ALTER TABLE MyHealth.MedicalTest OWNER to "USER"; --- Table: "MyHealth"."Patient" +-- Table: MyHealth.Patient --- DROP TABLE "MyHealth"."Patient"; +-- DROP TABLE MyHealth.Patient; -CREATE TABLE "MyHealth"."Patient" +CREATE TABLE MyHealth.Patient ( - id character varying(50) COLLATE pg_catalog."default" NOT NULL, - nif character(50) COLLATE pg_catalog."default", - surname character varying(100) COLLATE pg_catalog."default", - email character varying(120) COLLATE pg_catalog."default", - name character varying(100) COLLATE pg_catalog."default", - "FamilyDoctorId" character varying(50) COLLATE pg_catalog."default", - CONSTRAINT "Patient_pkey" PRIMARY KEY (id) + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, + password character(50) COLLATE pg_catalog.default, + nif character(50) COLLATE pg_catalog.default, + surname character varying(100) COLLATE pg_catalog.default, + email character varying(120) COLLATE pg_catalog.default, + name character varying(100) COLLATE pg_catalog.default, + FamilyDoctorId character varying(50) COLLATE pg_catalog.default, + CONSTRAINT Patient_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."Patient" +ALTER TABLE MyHealth.Patient OWNER to "USER"; --- Table: "MyHealth"."PrimaryHealthCareCenter" +-- Table: MyHealth.PrimaryHealthCareCenter --- DROP TABLE "MyHealth"."PrimaryHealthCareCenter"; +-- DROP TABLE MyHealth.PrimaryHealthCareCenter; -CREATE TABLE "MyHealth"."PrimaryHealthCareCenter" +CREATE TABLE MyHealth.PrimaryHealthCareCenter ( - name character varying(50) COLLATE pg_catalog."default" NOT NULL, - location character varying(256) COLLATE pg_catalog."default", - CONSTRAINT "PrimaryHealthCareCenter_pkey" PRIMARY KEY (name) + name character varying(50) COLLATE pg_catalog.default NOT NULL, + location character varying(256) COLLATE pg_catalog.default, + CONSTRAINT PrimaryHealthCareCenter_pkey PRIMARY KEY (name) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."PrimaryHealthCareCenter" +ALTER TABLE MyHealth.PrimaryHealthCareCenter OWNER to "USER"; --- Table: "MyHealth"."Question" +-- Table: MyHealth.Question --- DROP TABLE "MyHealth"."Question"; +-- DROP TABLE MyHealth.Question; -CREATE TABLE "MyHealth"."Question" +CREATE TABLE MyHealth.Question ( - id integer NOT NULL, - title character varying(512) COLLATE pg_catalog."default" NOT NULL, - message character varying(8000) COLLATE pg_catalog."default" NOT NULL, + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, + title character varying(512) COLLATE pg_catalog.default NOT NULL, + message character varying(8000) COLLATE pg_catalog.default NOT NULL, status integer, - "PatientId" character varying(50) COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT "Question_pkey" PRIMARY KEY (id) + PatientId character varying(50) COLLATE pg_catalog.default NOT NULL, + CONSTRAINT Question_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."Question" +ALTER TABLE MyHealth.Question OWNER to "USER"; --- Table: "MyHealth"."Response" +-- Table: MyHealth.Response --- DROP TABLE "MyHealth"."Response"; +-- DROP TABLE MyHealth.Response; -CREATE TABLE "MyHealth"."Response" +CREATE TABLE MyHealth.Response ( - id integer NOT NULL, - response character varying(8000) COLLATE pg_catalog."default", - "QuestionId" integer NOT NULL, - CONSTRAINT "Response_pkey" PRIMARY KEY (id) + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, + response character varying(8000) COLLATE pg_catalog.default, + QuestionId integer NOT NULL, + CONSTRAINT Response_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."Response" +ALTER TABLE MyHealth.Response OWNER to "USER"; --- Table: "MyHealth"."SpecialistDoctor" +-- Table: MyHealth.SpecialistDoctor --- DROP TABLE "MyHealth"."SpecialistDoctor"; +-- DROP TABLE MyHealth.SpecialistDoctor; -CREATE TABLE "MyHealth"."SpecialistDoctor" +CREATE TABLE MyHealth.SpecialistDoctor ( - id character varying(50) COLLATE pg_catalog."default" NOT NULL, - nif character(50) COLLATE pg_catalog."default", - surname character varying(100) COLLATE pg_catalog."default", - email character varying(120) COLLATE pg_catalog."default", - name character varying(100) COLLATE pg_catalog."default", - "MedicalSpecialtyId" character varying(50) COLLATE pg_catalog."default", - CONSTRAINT "SpecialistDoctor_pkey" PRIMARY KEY (id) + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, + password character(50) COLLATE pg_catalog.default, + nif character(50) COLLATE pg_catalog.default, + surname character varying(100) COLLATE pg_catalog.default, + email character varying(120) COLLATE pg_catalog.default, + name character varying(100) COLLATE pg_catalog.default, + MedicalSpecialtyId character varying(50) COLLATE pg_catalog.default, + CONSTRAINT SpecialistDoctor_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."SpecialistDoctor" +ALTER TABLE MyHealth.SpecialistDoctor OWNER to "USER"; --- Table: "MyHealth"."Visit" +-- Table: MyHealth.Visit --- DROP TABLE "MyHealth"."Visit"; +-- DROP TABLE MyHealth.Visit; -CREATE TABLE "MyHealth"."Visit" +CREATE TABLE MyHealth.Visit ( - id integer NOT NULL, + id integer NOT NULL GENERATED ALWAYS AS IDENTITY, date date NOT NULL, - "time" abstime NOT NULL, - observations character varying(4000) COLLATE pg_catalog."default", - result text COLLATE pg_catalog."default", - "PatientId" character varying(50) COLLATE pg_catalog."default" NOT NULL, - "FamilyDoctorId" character varying(50) COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT "Visit_pkey" PRIMARY KEY (id) + time abstime NOT NULL, + observations character varying(4000) COLLATE pg_catalog.default, + result text COLLATE pg_catalog.default, + PatientId character varying(50) COLLATE pg_catalog.default NOT NULL, + FamilyDoctorId character varying(50) COLLATE pg_catalog.default NOT NULL, + CONSTRAINT Visit_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; -ALTER TABLE "MyHealth"."Visit" +ALTER TABLE MyHealth.Visit OWNER to "USER"; diff --git a/2.database/02. Datos_prueba.sql b/2.database/02. Datos_prueba.sql index 9bfd2be..a500890 100644 --- a/2.database/02. Datos_prueba.sql +++ b/2.database/02. Datos_prueba.sql @@ -1,32 +1,32 @@ -- Inserta Especialidades médicas -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Alergologia','Especialidad médica de Alergologia'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía cardiaca','Especialidad médica de Cirugía cardiaca'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía general','Especialidad médica de Cirugía general'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía plastica','Especialidad médica de Cirugía plastica'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía de mama','Especialidad médica de Cirugía de mama'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía maxilofacial','Especialidad médica de Cirugía maxilofacial'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Cirugía vascular','Especialidad médica de Cirugía vascular'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Dermatología','Especialidad médica de Dermatología'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Endocrinología y nutrición','Especialidad médica de Endocrinología y nutrición'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Gastroenterología- digestivo','Especialidad médica de Gastroenterología- digestivo'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Neurocirugía','Especialidad médica de Neurocirugía'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Oftalmología','Especialidad médica de Oftalmología'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Otorrinolaringologia','Especialidad médica de Otorrinolaringologia'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Oncología','Especialidad médica de Oncología'); -insert into "MyHealth"."MedicalSpeciality"(name, description) +insert into MyHealth.MedicalSpecialty(name, description) values ('Pediatría','Especialidad médica de Pediatría');