DESARROLLO DE UN SISTEMA DE AYUDA A LA GESTIÓN DE PACIENTES DE UN MÉDICO TRABAJO FIN DE GRADO CURSO 2022-2023 RODRIGO CASTAÑÓNMARTÍNEZ DIRECTOR ANTONIO SARASA CABEZUELO GRADO EN INGENIERÍA INFORMÁTICA FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DEMADRID JUNIO 2023 DEVELOPMENT OF A PATIENT MANAGEMENT ASSISTANCE SYSTEM FOR A DOCTOR FINAL DEGREE PROJECT REPORT IN COMPUTER SCIENCE RODRIGO CASTAÑÓNMARTÍNEZ DIRECTED BY ANTONIO SARASA CABEZUELO JUNE 2023 COMPUTER SCIENCE DEGREE COMPUTER SCIENCE FACULTY COMPLUTENSE UNIVERSITY OFMADRID DEDICATORIA Dedicado a mi abuela, que donde quiera que esté, espero que pueda ver como su nieto consiguió sacar la carrera. 1 AGRADECIMIENTOS Quiero agradecer a mi familia, amigos y compañeros por todo su apoyo a lo largo del desarrollo de este proyecto, así como de mi paso por el grado ayudándome en momentos difíciles y complicados, porque posiblemente sin ellos no me encontraría aquí en este momento. También quiero mencionar al profesor Antonio Sarasa Cabezuelo, director de este trabajo fin de grado, por su gran disposición y compromiso a la hora de seguir y ayudarme en el desarrollo de este proyecto, resolviendo cada una de mis dudas y problemas, permitiendo así alcanzar todos y cada uno de los objetivos planteados a lo largo de este trabajo. Por último agradecer a todos aquellos que me han prestado su ayuda de forma completamente voluntaria y desinteresada, a la hora de realizar una evaluación de la aplicación. 2 RESUMEN El objetivo de este proyecto es mejorar la calidad y eficiencia de la atención médica, ofrecida a través de una herramienta eficaz y segura para la gestión de datos médicos de pacientes, buscando así optimizar el manejo de esta información mediante un sistema de ayuda, facilitando al médico el tratamiento de sus pacientes. Se ha diseñado e implementado una aplicación intuitiva y de fácil uso la cual permite el registro de los datos médicos y la gestión de los mismos. Además, esta aplicación cuenta con la capacidad de generar informes personalizados y programar citas médicas, lo que permite una mayor organización y seguimiento de la atención médica de los pacientes PALABRAS CLAVE Médico, Paciente, Aplicación web, Registro, Cita, Síntoma, Enfermedad, Medicamento 3 ABSTRACT The aim of this project is to improve the quality and efficiency of the medical care provided through and secure and effective tool for managing patient data, looking to optimize the handling of this information through an assistance system facilitating the treatment of their patients for doctors. An intuitive and user-friendly system has been designed and implemented, which allows for the registration and management of patients' medical data. Additionally, this application has the ability to generate personalized reports and schedule medical appointments, allowing a better organization and follow-up of patient medical care. KEYWORDS Doctor, Patient, Web application, Record, Appointment, Symptom, Disease, Medicine 4 ÍNDICE Dedicatoria 1 Agradecimientos 2 Resumen 3 Abstract 4 Índice de figuras 11 Índice de tablas 17 1. Introducción 19 1.1. Motivación 19 1.2. Objetivos 20 1.3. Metodología 20 1.3.1. Fases del proyecto 21 1.3.2. Organización del trabajo 22 1. Introduction 23 1.1. Motivation 23 1.2. Goals 24 1.3. Methodology 24 1.3.1. Project phases 24 1.3.2. Work organization 25 2. Estado del arte 26 5 2.1. Vithas 26 2.2. Dricloud 27 2.3. Clinic Cloud 27 2.4. EsiClinic 28 3. Tecnología empleada 29 3.1. HTML5 29 3.2. CSS3 29 3.3. Bootstrap 30 3.4. Spring 30 3.5. Hibernate 30 3.6. React 31 3.7. Axios 31 3.8. Visual Studio Code 31 3.9. Github 31 3.10. MySQL Workbench 32 3.11. Trello 32 3.12. Lint 32 4. Especificación de requisitos 33 4.1. Actores 33 4.2. Módulos 33 4.2.1. Módulo Usuario 34 6 4.2.2. Módulo Paciente 41 4.2.3. Módulo Historial Clínico 47 4.2.4. Módulo Cita y Notificación 55 4.2.5. Módulo Información Médica 62 5. Arquitectura de la aplicación 74 5.1. Estructura de la aplicación 74 5.2. Patrones de diseño y arquitectónicos 75 5.2.1. Patrones arquitectónicos 75 5.2.2. Patrones de diseño 76 5.3. Modelo de datos 78 5.3.1. Implementación de la base de datos 78 5.3.1.1. Colección Usuarios 78 5.3.1.2. Colección Pacientes 79 5.3.1.3. Colección Notificaciones 79 5.3.1.4. Colección Registros 80 5.3.1.5. Colección Síntomas 80 5.3.1.6. Colección Medicamentos 80 5.3.1.7. Colección Enfermedades 81 5.3.1.8. Colección Citas 81 6. Implementación y diseño de la aplicación 82 6.1. Módulo Usuario 82 7 6.1.1. Registrar médico 82 6.1.2. Iniciar sesión 84 6.1.3. Cerrar sesión 86 6.1.4. Ver perfil de usuario 87 6.1.5. Modificar usuario 89 6.1.6. Eliminar usuario 90 6.2. Módulo Paciente 91 6.2.1. Dar de alta a un paciente 91 6.2.2. Dar de baja a un paciente 92 6.2.3. Ver el perfil de un paciente 93 6.2.4. Modificar el perfil de un paciente 95 6.2.5. Buscar un paciente 96 6.3. Módulo Historial Clínico 97 6.3.1. Ver historial clínico de un paciente 97 6.3.2. Ver un registro en el historial clínico 99 6.3.3. Añadir registro en el historial clínico 102 6.3.4. Modificar registro en el historial clínico 103 6.3.5. Eliminar registro en el historial clínico 104 6.3.6. Buscar un registro en el historial clínico 105 6.4. Módulo Cita y Notificación 106 6.4.1. Añadir una cita 106 8 6.4.2. Eliminar una cita 107 6.4.3. Buscar sobre las citas 108 6.4.4. Añadir notificación 109 6.4.5. Eliminar notificación 110 6.4.6. Buscar sobre las notificaciones 111 6.5. Módulo Información Médica 112 6.5.1. Añadir medicamento 112 6.5.2. Eliminar medicamento 113 6.5.3. Modificar medicamento 115 6.5.4. Ver medicamento 116 6.5.5. Añadir enfermedad 118 6.5.6. Eliminar enfermedad 119 6.5.7. Modificar enfermedad 120 6.5.8. Ver enfermedad 122 6.5.9. Añadir síntoma 124 6.5.10. Eliminar síntoma 125 6.5.11. Ver síntoma 126 7. Evaluación de la aplicación 128 7.1 Diseño de la evaluación 128 7.2 Resultados de la encuesta 128 8. Conclusiones y trabajo futuro 138 9 8.1 Conclusiones 138 8.2 Trabajo futuro 139 8. Conclusions and future work 141 8.1 Conclusions 141 8.2 Future work 142 Bibliografía 143 Anexos 145 A. Guía de uso 145 A.1 Inicio de la aplicación 145 A.2 Gestión de pacientes 148 A.3 Gestión de historiales clínicos 152 A.4 Administración de citas y notificaciones 154 A.5 Gestión de información médica 157 10 ÍNDICE DE FIGURAS Figura 1.1. Diagrama de Gantt de las etapas de desarrollo del proyecto 21 Figura 4.1. Diagrama de casos de uso del módulo usuario 34 Figura 4.2. Diagrama de casos de uso del módulo paciente 41 Figura 4.3: Diagrama de casos de uso del módulo historial clínico 47 Figura 4.4: Diagrama de casos de uso del módulo cita y notificación 55 Figura 4.5: Diagrama de casos de uso del módulo información médica 62 Figura 5.1: Arquitectura de la aplicación web 74 Figura 5.2: Patrón Cliente-Servidor utilizado en la aplicación 75 Figura 5.3: Patrón Modelo Vista-Controlador utilizado en la aplicación 76 Figura 5.4: Patrón Repository 76 Figura 5.5: Patrón Factory 77 Figura 5.6: Patrón DAO 77 Figura 6.1: Pantalla de inicio de sesión 83 Figura 6.2: Vista de registro de nuevo usuario 83 Figura 6.3: Fragmento de código - Registrar usuario 84 Figura 6.4: Pantalla de inicio de sesión 84 Figura 6.5: Vista principal del usuario 85 Figura 6.6: Fragmento de código - Iniciar sesión 86 Figura 6.7: Vista del usuario tras cerrar sesión 87 11 Figura 6.8: Fragmento de código - Cerrar sesión 87 Figura 6.9: Vista del perfil de un usuario 88 Figura 6.10. Fragmento de código - Ver perfil de usuario 88 Figura 6.11: Vista de modificar el usuario 89 Figura 6.12: Fragmento de código - Modificar usuario 90 Figura 6.13: Vista de eliminar usuario 91 Figura 6.14: Fragmento de código - Eliminar usuario 91 Figura 6.15: Vista de añadir un nuevo paciente 92 Figura 6.16: Fragmento de código - Dar de alta un nuevo paciente 92 Figura 6.17: Vista de eliminar un paciente 93 Figura 6.18: Fragmento de código - Dar de baja un paciente 93 Figura 6.19: Vista de perfil de un paciente 94 Figura 6.20: Fragmento de código - Ver el perfil de un paciente 95 Figura 6.21: Modificar el perfil de un paciente 96 Figura 6.22: Fragmento de código - Modificar el perfil de un paciente 96 Figura 6.23: Buscar un paciente 97 Figura 6.24: Fragmento de código - Buscar un paciente 97 Figura 6.25: Ver historial clínico de un paciente 98 Figura 6.26: Fragmento de código - Ver historial clínico de un paciente 99 Figura 6.27: Ver un registro en el historial clínico 100 Figura 6.28: Fragmento de código - Ver un registro en el historial clínico 101 12 Figura 6.29: Añadir registro en el historial clínico 102 Figura 6.30: Fragmento de código - Añadir registro en el historial clínico 102 Figura 6.31: Modificar registro en el historial clínico 103 Figura 6.32: Fragmento de código - Modificar registro en el historial clínico 104 Figura 6.33: Eliminar registro en el historial clínico 104 Figura 6.34: Fragmento de código - Eliminar registro en el historial clínico 105 Figura 6.35: Buscar un registro en el historial clínico 105 Figura 6.36: Fragmento de código - Buscar un registro en el historial clínico 106 Figura 6.37: Añadir una cita 107 Figura 6.38: Fragmento de código - Añadir una cita 107 Figura 6.39: Eliminar una cita 108 Figura 6.40: Fragmento de código - Eliminar una cita 108 Figura 6.41: Buscar sobre las citas 109 Figura 6.42: Fragmento de código - Buscar sobre las citas 109 Figura 6.43: Añadir notificación 110 Figura 6.44: Fragmento de código - Añadir notificación 110 Figura 6.45: Eliminar notificación 111 Figura 6.46: Fragmento de código - Eliminar notificación 111 Figura 6.47: Buscar sobre las notificaciones 112 Figura 6.48: Fragmento de código - Buscar sobre las notificaciones 112 Figura 6.49: Añadir medicamento 113 13 Figura 6.50: Fragmento de código - Añadir medicamento 113 Figura 6.51: Eliminar medicamento 114 Figura 6.52: Fragmento de código - Eliminar medicamento 114 Figura 6.53: Modificar medicamento 115 Figura 6.54: Fragmento de código - Modificar medicamento 116 Figura 6.55: Ver medicamento 116 Figura 6.56: Fragmento de código - Ver medicamento 117 Figura 6.57: Añadir enfermedad 118 Figura 6.58: Fragmento de código - Añadir enfermedad 119 Figura 6.59: Eliminar enfermedad 120 Figura 6.60: Fragmento de código - Eliminar enfermedad 120 Figura 6.61: Modificar enfermedad 121 Figura 6.62: Fragmento de código - Modificar enfermedad 121 Figura 6.63: Ver enfermedad 122 Figura 6.64: Fragmento de código - Ver enfermedad 123 Figura 6.65: Añadir síntoma 124 Figura 6.66: Fragmento de código - Añadir síntoma 125 Figura 6.67: Eliminar síntoma 126 Figura 6.68: Fragmento de código - Eliminar síntoma 126 Figura 6.69: Ver síntoma 127 Figura 6.70: Fragmento de código - Ver síntoma 127 14 Figura 7.1: Respuesta a la encuesta: Edad 129 Figura 7.2: Respuesta a la encuesta: ¿Cómo te identificas? 129 Figura 7.3: Respuesta a la encuesta: ¿Cuál es su lugar de trabajo? 130 Figura 7.4: Respuesta a la encuesta: Experiencia laboral 130 Figura 7.5: Respuesta a la encuesta: Satisfacción con la aplicación 131 Figura 7.6: Respuesta a la encuesta: Grado de dificultad de la aplicación 132 Figura 7.7: Respuesta a la encuesta: Cobertura de la gestión de pacientes 132 Figura 7.8: Respuesta a la encuesta: Finalización satisfactoria de las tareas 133 Figura 7.9: Respuesta a la encuesta: Finalización de tareas de forma rápida 133 Figura 7.10: Respuesta a la encuesta: Finalización de tareas de forma eficiente 134 Figura 7.11: Respuesta a la encuesta: Satisfacción con el algoritmo de recomendación 134 Figura 7.12: Respuesta a la encuesta: Satisfacción con los mensajes de error e información 135 Figura 7.13: Respuesta a la encuesta: Facilidad en el aprendizaje de la aplicación 135 Figura 7.14: Respuesta a la encuesta: Satisfacción con los elementos visuales 136 Figura 7.15: Respuesta a la encuesta: Suficiencia en la información de los pacientes 136 Figura 7.16: Respuesta a la encuesta: Suficiencia en la información de los registros 137 Figura 7.17: Respuesta a la encuesta: Productividad para gestionar pacientes 137 Figura A.1: Diagrama de flujo de Registrar usuario 146 Figura A.2: Diagrama de flujo de Iniciar sesión 147 Figura A.3: Diagrama de flujo de Vista datos usuario 148 Figura A.4: Diagrama de flujo de Añadir paciente 150 15 Figura A.5: Diagrama de flujo de Búsqueda y borrador de paciente 151 Figura A.6: Diagrama de flujo de Modificar paciente 151 Figura A.7: Diagrama de flujo de Añadir registro 152 Figura A.8: Diagrama de flujo de Borrado y búsqueda de registro 152 Figura A.9: Diagrama de flujo de Modificar registro 153 Figura A.10: Diagrama de flujo de Añadir cita 154 Figura A.11: Diagrama de flujo de Borrado y ordenado de citas 155 Figura A.12: Diagrama de flujo de Añadir notificación 156 Figura A.13: Diagrama de flujo de Borrado y ordenación de notificaciones 156 Figura A.14: Diagrama de flujo de Añadir enfermedad 158 Figura A.15 : Diagrama de flujo de Modificar enfermedad 159 Figura A.16 : Diagrama de flujo de Añadir Medicamento 160 Figura A.17 : Diagrama de flujo de Modificar medicamento 161 Figura A.18 : Diagrama de flujo de Añadir síntoma 162 16 ÍNDICE DE TABLAS Tabla 1.1. Fases de desarrollo del proyecto 21 Tabla 4.1 Registrar médico 35 Tabla 4.2 Iniciar sesión 36 Tabla 4.3 Cerrar sesión 37 Tabla 4.4 Ver perfil del usuario 38 Tabla 4.5 Modificar cuenta 39 Tabla 4.6 Darse de baja 40 Tabla 4.7 Dar de alta a un paciente 41 Tabla 4.8 Dar de baja a un paciente 43 Tabla 4.9 Ver perfil de un paciente 44 Tabla 4.10 Modificar el perfil de un paciente 45 Tabla 4.11 Buscar un paciente 46 Tabla 4.12 Ver historial clínico de un paciente 48 Tabla 4.13 Ver un registro en el historial clínico 49 Tabla 4.14 Añadir registro en el historial clínico 50 Tabla 4.15 Eliminar registro del historial clínico 51 Tabla 4.16 Modificar registro en el historial clínico 52 Tabla 4.17 Buscar un registro en el historial clínico de un paciente 53 Tabla 4.18 Añadir una cita 56 17 Tabla 4.19 Eliminar una cita 57 Tabla 4.20 Añadir notificación a un paciente 58 Tabla 4.21 Eliminar notificación de un paciente 59 Tabla 4.22 Buscar sobre las citas (por distintos criterios) 60 Tabla 4.23 Buscar sobre las notificaciones(por distintos criterios) 61 Tabla 4.24 Añadir medicamento 63 Tabla 4.25 Modificar medicamento 64 Tabla 4.26 Eliminar medicamento 65 Tabla 4.27 Ver medicamento 66 Tabla 4.28 Añadir enfermedad 67 Tabla 4.29 Modificar enfermedad 68 Tabla 4.30 Eliminar enfermedad 69 Tabla 4.31 Ver enfermedad 70 Tabla 4.32 Añadir síntoma 71 Tabla 4.33 Eliminar síntoma 72 Tabla 4.34 Ver síntoma 73 18 Capítulo 1 Introducción Este capítulo introduce a la aplicación creada y la motivación de la misma. Los objetivos que se han tenido en cuenta a la hora de diseñar la aplicación y la metodología usada para el desarrollo de la misma, junto con las diferentes fases que se han tenido que atravesar. 1.1 Motivación En Diciembre de 2019 se descubrió un brote epidémico de neumonía por causas desconocidas en la provincia de Wuhan (China), a lo largo de los siguientes días este brote se fue extendiendo por todo el mundo llegando hasta estar presente en 100 territorios a nivel mundial el día 11 de marzo. El día 13 de marzo se comunica en los boletines de noticias de todos los medios informativos, que los alumnos debían permanecer en sus casas durante los próximos días hasta nuevo aviso . Al día siguiente es el Gobierno de nuestro país quien nos comunica que se decretaba el estado de alarma, obligando a que todos los ciudadanos permaneciesen recluidos en sus domicilios hasta nueva orden. Esta y otras medidas no consiguieron que el brote del virus, para entonces ya conocido como COVID 19 se detuviese , por el contrario, con fecha 5 de abril se comunicaba que este virus estaba produciendo un colapso en los sistemas sanitarios de países desarrollados incluyendo el nuestro, donde las unidades de cuidados intensivos se estaban viendo sobrepasadas hasta un 291% por encima de sus capacidades, haciendo a su vez que las consultas en atención primaria y urgencias se multiplicarán de manera alarmante, acentuando un problema que en ocasiones anteriores se había podido observar, el colapso sanitario, donde la atención médica se vio sobrepasada por la avalancha de pacientes, para lo que el sistema sanitario no estaba lo 19 suficiente preparado. Se encontraban ante un virus desconocido para el que no había un tratamiento suficientemente eficaz . El motivo por el que se ha elegido escoger el desarrollo de esta aplicación es con el fin de poder ayudar a mejorar la gestión de pacientes para un médico y así agilizar todo este proceso tratando de evitar futuros colapsos por cualquier otro tipo de circunstancia como la que se ha vivido recientemente. De esta manera aunque no permita el desarrollo de una vacuna o cura para este virus, si ayudará a mejorar la gestión de pacientes a los profesionales de la medicina correspondientes, facilitandoles una atención adecuada, ágil y de calidad para sus pacientes. 1.2 Objetivos Los principales objetivos del desarrollo de este proyecto son: ● El desarrollo de una aplicación que permita a un médico poder gestionar todos los pacientes que tenga asignados. ● El desarrollo de un algoritmo para la detección de posibles enfermedades y los medicamentos adecuados a los síntomas presentados por un paciente ● Diseño de una serie de opciones de búsqueda a través de las cuales se puedan localizar: pacientes, registros, notificaciones o citas. ● Gestión de las distintas notificaciones y citas de los pacientes asignados a un médico ● Gestionar las enfermedades existentes dentro del sistema ● Gestionar los síntomas existentes dentro del sistema ● Gestión de los registros y síntomas presentados correspondientes a cada una de las citas realizadas de los pacientes 1.3 Metodología Para el desarrollo del proyecto se ha seguido una metodología, utilizando una organización unida a una división del proyecto en distintas fases, las cuales se comentan a continuación. 20 1.3.1 Fases del proyecto Para garantizar la correcta implementación del proyecto se ha dividido su desarrollo en distintas fases como pueden ser la especificación de requisitos, el desarrollo de la aplicación, la evaluación de la usabilidad y el desarrollo de esta memoria. A continuación en la figura 1.1 y en la tabla 1.1 se detallan y muestran las fechas de inicio y fin de cada una de estas fases en el siguiente diagrama de Gantt[1] . Figura 1.1: Diagrama de Gantt de las etapas de desarrollo del proyecto Fase Duración Especificación de requisitos Desarrollo de la aplicación Evaluación de la usabilidad Desarrollo de la memoria 7 Septiembre - 29 Septiembre 30 Septiembre - 23 Marzo 24 Marzo - 31 Marzo 1 abril - X Tabla 1.1 Fases de desarrollo del proyecto 21 Fase 1: Especificación de requisitos A lo largo de esta fase se plantearon todas las acciones que se querían realizar en la aplicación web tomando como base las diferentes necesidades que podía presentar un médico a la hora de interactuar con los distintos pacientes asignados a este. Fase 2: Desarrollo de la aplicación Esta fase consistía en el desarrollo de la propia aplicación web que es la encargada de gestionar todos los pacientes e informaciones correspondientes, almacenando cada uno de esos datos dentro de una base de datos. Fase 3: Evaluación de la usabilidad En esta fase se pudo comprobar el comportamiento de un grupo de usuarios ante la aplicación, gracias a esto se pudo conocer distintos aspectos a mejorar dentro de la misma. Fase 4: Desarrollo de la memoria En ella es donde se indican todos los detalles sobre el desarrollo de la aplicación web desde su comienzo incluyendo todo tipo de detalles técnicos. 1.3.2 Organización del trabajo En este caso el proyecto ha sido desarrollado por una única persona, por lo que no ha sido necesario dividir el trabajo. Se ha utilizado la plataforma Github[2] para tener un sistema de control de versiones y poder comprobar todas las fases y cambios dentro del desarrollo de la aplicación. Para el desarrollo de esta se ha usado un sistema basado en iteraciones incrementales donde cada iteración corresponde a diferentes módulos del proyecto que contienen distintos casos de uso de la aplicación. El código fuente de la aplicación tanto frontend como backend se puede encontrar en el siguiente repositorio. https://github.com/KastaTM/TFG 22 https://github.com/KastaTM/TFG Chapter 1 Introduction This chapter introduces the application created and its motivation behind it. The objectives that have been taken into account when designing the application and the methodology used for its development, together with the different phases that have had to be gone through. 1.1 Motivation In December 2019, an epidemic outbreak of pneumonia of unknown causes was discovered in the province of Wuhan (China). During the following days, this outbreak spread throughout the world, reaching 100 territories globally by March 11th. On March 13th, it was reported in the news bulletins of all the media outlets that students should stay at home for the next few days until further notice. The following day, our country's government declared a state of emergency, obligating all citizens to stay confined in their homes until further notice. This and other measures did not manage to stop the outbreak of the virus, which by then was already known as COVID-19. On the contrary, on April 5th, it was reported that this virus was causing a collapse in the healthcare systems of developed countries, including ours, where intensive care units were being overwhelmed up to 291% above their capacities, causing primary care consultations and emergencies to multiply alarmingly. This exacerbated a problem that had been observed in previous occasions, the healthcare collapse, where medical attention was overwhelmed by the influx of patients, for which the healthcare system was not sufficiently prepared. They were facing an unknown virus for which there was not an effective treatment. 23 The reason why we have chosen to develop this application is in order to help improve patient management for a doctor and thus streamline this process, trying to avoid future collapses due to any other type of circumstance like the one recently experienced. In this way, although it does not allow for the development of a vaccine or cure for this virus, it will help improve patient management for the corresponding medical professionals, providing adequate, efficient, and quality care for their patients. 1.2 Goals The main objectives of this project development are: ● To develop an application that allows a doctor to manage all assigned patients. ● To develop an algorithm for the detection of possible diseases and the appropriate medications based on the symptoms presented by a patient. ● Design a series of search options through which patients, records, notifications, or appointments can be located. ● Manage the different notifications and appointments of the patients assigned to a doctor. ● Manage existing diseases within the system. ● Manage existing symptoms within the system. ● Manage the records and symptoms presented corresponding to each of the appointments made by the patients. 1.3 Methodology For the development of the project, a methodology has been followed, using an organization combined with a division of the project into different phases, which are discussed below. 1.3.1 Project phases To ensure the correct implementation of the project, its development has been divided into different phases such as requirement specification, application development, usability evaluation, 24 and the development of this report. The start and end dates of each of these phases are detailed and shown in the Gantt chart[1] in the figure 1.1. Phase 1: Requirements Specification. Throughout this phase, all the actions to be performed in the web application were proposed based on the different needs that a doctor might have when interacting with the different patients assigned to them. Phase 2: Application Development This phase involved the development of the web application itself, which is responsible for managing all the patients and corresponding information, storing each of these data in a database. Phase 3: Usability evaluation In this phase, the behavior of a group of users towards the application was evaluated, and various aspects that needed improvement were identified as a result. Phase 4: Development of the report In this phase, all the details about the development of the web application from its beginning, including all technical details, are documented in the report. 1.3.2 Work organization In this case, the project has been developed by a single person, so it was not necessary to divide the work. The Github[2] platform was used to have a version control system and to check all the phases and changes in the development of the application. For its development, an incremental iteration system has been used, where each iteration corresponds to different modules of the project that contain different use cases of the application. The source code of both the frontend and backend of the application can be found in the following repository. https://github.com/KastaTM/TFG 25 https://github.com/KastaTM/TFG Capítulo 2 Estado del arte La aplicación web consiste en tratar de ayudar a un médico en la gestión de sus pacientes y su correspondiente información, viéndose sus registros en su historial clínico de enfermedades padecidas o síntomas presentados en las distintas citas. También dispone de un sistema de gestión de notificaciones y citas sobre los pacientes del médico. Y por último de un sistema de recomendación donde se sugieren posibles enfermedades que puede padecer el paciente en función de los síntomas presentados, y con ello la sugerencia de los medicamentos recomendados en función de esos síntomas, y que no presenten incompatibilidades si padece ciertas enfermedades. A continuación se listan algunas aplicaciones web que disponen de una funcionalidad parecida a este proyecto. 2.1 Vithas Se trata de la aplicación web ofrecida por la serie de hospitales Vithas[3] la cual ofrece un sistema de gestión de la información del paciente, donde éste dispone de la posibilidad de ver todos los resultados de sus informes realizados en alguno de estos hospitales y su historial clínico completo. También dispone de un sistema el cual permite pedir una cita con el médico deseado. Dispone de unos servicios similares a los de este proyecto pero tomado desde la perspectiva del paciente. Sus principales funcionalidades son: ● Sistema de petición de citas con el médico deseado 26 ● Sistema de gestión de recetas asignadas a un paciente ● Gestión de los informes de pruebas realizadas sobre un paciente ● Gestión del historial clínico del paciente con todas las visitas realizadas al centro médico 2.2 Dricloud Dricloud[4] se trata de una aplicación web cuya finalidad es la gestión de pacientes y sus respectivas citas usando un sistema de agenda. Dispone de un sistema de notificaciones de cara al paciente a través de la aplicación móvil. Sus principales funcionalidades son: ● Gestión de citas a través de una agenda ● Recordatorios de cita para los pacientes ● Supresión de esperas a través de un sistema de check-in 2.3 Clinic Cloud Clinic Cloud[5] es un software utilizado en clínicas para la gestión del historial clínico de cada uno de los pacientes del médico y a su vez permite gestionar todas las citas de sus pacientes que figuran en su agenda. También dispone de un sistema de receta online para indicar a los pacientes los medicamentos que deben consumir, así como notificaciones enviadas al teléfono móvil para los pacientes. Sus principales funcionalidades son: ● Gestión de historiales clínicos de pacientes ● Gestión de citas a través de un sistema de agenda ● Sistema de notificaciones a través de email y SMS 27 2.4 EsiClinic EsiClinic[6] se trata de un software creado para la gestión de una clínica o centro médico donde todos los datos se encuentran almacenados y cifrados en la nube. Este software permite al médico organizar todas sus citas con una agenda y dispone de historial clínico a medida para los pacientes, de esta manera y junto a muchas opciones que ofrece, dispone de un gran servicio de gestión de pacientes. Sus principales funcionalidades son: ● Sistema de gestión de mutuas ● Sistema de gestión de citas a través de una agenda ● Sistema de gestión de pacientes a través de un listado de historiales clínicos 28 Capítulo 3 Tecnología empleada En el presente capítulo se procede a mencionar las herramientas y tecnologías principales empleadas para llevar a cabo el desarrollo del proyecto, con el fin de poder dar una visión más completa y detallada de las mismas. 3.1 HTML5 HTML5[7] es la última versión del lenguaje de marcado de hipertexto (HTML[8]) usado a día de hoy principalmente para la creación y diseño de páginas web. Es un lenguaje de programación basado en etiquetas y atributos con los cuales podemos estructurar y dar formato al contenido de una página web sea con texto, imágenes, vídeos, formularios, etc. Esta última versión conlleva numerosas mejoras de rendimiento, estructuración y mayor semántica facilitando así una mejor optimización para algunos motores de búsqueda. Convirtiéndose así en la principal herramienta del desarrollo de aplicaciones web a día de hoy 3.2 CSS3 CSS3[9] es la última versión del lenguaje de hojas de estilo en cascada (CSS[10]) usado a día de hoy principalmente para la estilización y proporcionar formato a documentos de tipo HTML[8] y XML[11]. A través de este lenguaje podemos crear diferentes hojas de estilo en cascada las cuales en conjunto con el lenguaje HTML[8] generan los distintos estilos y aspectos que puede llegar a tener nuestra interfaz en la aplicación web. Todo esto hace que CSS3[9] sea un lenguaje muy versátil de cara al diseño de aplicaciones web, permitiendo así crear interfaces más sofisticadas y atractivas. 29 3.3 Bootstrap Bootstrap[12] es un framework de código abierto orientado al desarrollo de aplicaciones web y móviles cuyo objetivo es mejorar la interfaz gráfica a través de los distintos componentes que contiene como botones, menús, desplegables, formularios, etc. Haciendo así una experiencia al usuario mucho más agradable gracias a su diseño responsive y su combinación del uso de HTML[8], CSS[10] y JavaScript[13] convirtiéndose en uno de los framework más populares a día de hoy. 3.4 Spring Spring[14] es uno de los framework más populares de código abierto que da soporte para el desarrollo de aplicaciones y páginas web basadas en Java[15] con el fin de crear código de alto rendimiento, liviano y reutilizable. Permite trabajar con una gran flexibilidad con numerosos tipos de arquitecturas y distintas bibliotecas cuyo uso pueden alternar en función de las necesidades de cada aplicación. Ofrece una gran cantidad de herramientas como integración con bases de datos, soporte para aplicaciones APIREST[16] y seguridad de estas, lo cual hace que sea un framework muy completo para desarrollo de aplicaciones escalables. 3.5 Hibernate Hibernate[17] es una solución para el mapeo objeto-relacional (ORM[18]) para entornos Java[15]. Esto se refiere a una técnica de mapeo de una representación de un modelo a una base de datos relacional como MySQL[20], sin necesidad de escribir código SQL[19]. Esta herramienta está incluida dentro del framework Spring[14] 30 3.6 React React[21] es una biblioteca de código abierto de JavaScript[13] orientada a la creación de interfaces de usuario dinámicas y complejas para aplicaciones web y móviles. Esto lo obtiene a través de la creación de componentes reutilizables, interactivos e independientes con los cuales cada componente equivale a cada uno de los distintos elementos que se pueden llegar a encontrar en una interfaz, permitiendo a su vez manejar su estado propio haciendo que se rendericen de forma autónoma y dando lugar a que genere aplicaciones de una sola página. 3.7 Axios Axios[22] es una librería de JavaScript utilizada para realizar peticiones o llamadas al contenido de un enlace de tipo HTTP[23] desde el navegador y es compatible con React[21]. Sus solicitudes devuelven los datos en un formato JSON[24] lo cual hace que sea mucho más sencillo de trabajar con estos. 3.8 Visual Studio Code Visual Studio Code[25] es un editor de código fuente desarrollado por Microsoft[26]. Cuenta con herramientas para depurar y editar código, un control integrado de Git[27], resaltado de sintaxis, completado automático de código, fragmentos y la posibilidad de reorganizar y mejorar el código. Por ello es uno de los editores de código más populares para el uso de desarrollo de aplicaciones web también debido a que es de uso completamente gratuito. 3.9 Github Github[2] es una plataforma online orientada que utiliza Git[27] un sistema de control de versiones distribuido de código abierto utilizado en la mayoría de proyectos de software donde cada uno de los clones locales del proyecto es el equivalente a un repositorio de control de versiones completo. De esta manera se puede tener un registro de todas las modificaciones 31 realizadas en el código por distintos usuarios y las distintas ramas en las que se ha trabajado sin afectar a la versión principal. 3.10 MySQL Workbench MySQL Workbench[28] es un entorno gráfico dedicado a la administración y diseño de bases de datos MySQL[20]. Con el cual se pueden generar, modificar y gestionar bases de datos a través de su interfaz gráfica o de consultas SQL[19]. Se puede utilizar para crear tablas y conexiones entre ellas, añadirles campos así como definir relaciones entre tablas y ver los contenidos de las mismas. Además cuenta con la herramienta para generar diagramas entidad-relación. Permite la posibilidad de ejecutar scripts SQL[19] y realizar copias de seguridad. 3.11 Trello Trello[29] es una herramienta visual de administración y gestión de proyectos y actividades, el cual utiliza tarjetas virtuales donde cada tarjeta representa una tarea a realizar por una persona o grupo de personas específicas y cada una de estas tarjetas corresponde a una lista o varias listas de tarjetas que se refieren a los módulos de un proyecto. A través de este sistema se obtiene una monitorización flexible con la que se puede observar las distintas tareas asignadas a cada persona y aquellas que todavía permanecen pendientes. 3.12 Lint Lint[30] es una herramienta de software encargada de realizar mejoras del código analizando el código fuente y detectando posibles errores, código ineficiente y problemas de estilo. Utilizado en proyectos que utilizan el lenguaje JavaScript[13] y puede encontrarse como una extensión del propio Visual Studio Code[25]. 32 Capítulo 4 Especificación de requisitos En el presente capítulo, se procederá a la descripción de los casos de uso y los actores del sistema que han sido definidos para la implementación de la aplicación. 4.1 Actores En la aplicación se han definido los siguientes usuarios ● Médico (Usuario registrado). Es el usuario encargado de gestionar toda la información de los pacientes. Este podrá acceder a su correspondiente lista de pacientes, gestionar cada uno de los pacientes accediendo a su expediente y pudiendo modificarlo, consultar su historial médico donde podrá ver enfermedades sufridas y notificar las consultas u otros tipos de procedimientos a realizar en días próximos. ● Administrador. Es el usuario encargado de gestionar la información referente a fármacos, enfermedades, síntomas y otros tipos de información referentes al sistema. 4.2 Módulos Los casos de uso se han agrupado de acuerdo a los siguientes módulos funcionales: ● Usuario ● Paciente ● Historial clínico ● Cita y Notificación ● Información médica 33 A continuación se presenta la descripción individual de cada uno de los módulos. 4.2.1 Módulo Usuario En este módulo se encuentran todas las acciones relacionadas con las cuentas de usuario donde la gran mayoría de ellas son comunes al médico y al administrador como puede ser el inicio y cierre de sesión o ver el perfil de usuario y algunas específicas del médico como son el registro del mismo o la eliminación del usuario del sistema. La figura 4.1 que se puede ver a continuación muestra el diagrama de casos de uso del módulo usuario. Figura 4.1: Diagrama de casos de uso del módulo usuario A continuación, se presenta la descripción de cada caso de uso correspondiente a este módulo. 34 Requisito Registrar médico Identificador 1.1 Prioridad Alta Precondición NA Descripción Los médicos que van a utilizar esta aplicación deben crearse una cuenta. Entrada Número de colegiado, Nombre, Apellidos, Email, Ciudad, Especialidad, Lugar de trabajo, Contraseña, Foto Salida Mensaje indicando que el usuario se ha añadido correctamente Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla de inicio de sesión. 2 Realiza un click en la opción de “Regístrate”. 3 La aplicación mostrará una pantalla que el usuario debe rellenar con toda la información necesaria. 4 El usuario rellena toda la información y pulsa en botón “Registrar”. 5 El sistema comprueba la validez de la información introducida. 6 El sistema mostrará la pantalla de inicio de sesión para que se pueda registrar con el nuevo usuario. Postcondición El nuevo usuario ha sido registrado en el sistema Excepciones Paso Acción 4 Se notifica si algunos de los datos introducidos no cumplen con alguno de los requisitos. 4 Se notifica si el correo electrónico o el número de colegiado ya existen dentro de la aplicación. Comentarios NA Actores Médico Tabla 4.1 Registrar médico 35 Requisito Iniciar sesión Identificador 1.2 Prioridad Alta Precondición El usuario debe de estar registrado previamente. Descripción Los usuarios registrados pueden iniciar sesión Entrada Número de Colegiado, Contraseña Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla de inicio. 2 La aplicación mostrará una pantalla donde el usuario debe rellenar con toda la información necesaria. 3 El usuario rellena toda la información y pulsa en botón “Iniciar”. 4 El sistema comprueba la validez de la información introducida. 5 El sistema nos mostrará la pantalla principal. Postcondición El usuario ha iniciado sesión en la aplicación. Excepciones Paso Acción 4 No se ha podido realizar el inicio debido a un error en los datos introducidos Comentarios NA Actores Médico, Administrador Tabla 4.2 Iniciar sesión 36 Requisito Cerrar sesión Identificador 1.3 Prioridad Alta Precondición El usuario debe haberse registrado y tener una sesión iniciada previamente. Descripción Los usuarios que utilizan la aplicación van a finalizar su uso, cerrando sesión. Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario se encuentra en la pantalla principal tras haber iniciado sesión. 2 Realiza un click en la opción de “Cerrar sesión”. 3 El sistema cerrará la sesión y nos mostrará la pantalla de inicio de sesión. Postcondición Se ha cerrado la sesión del usuario. Excepciones Paso Acción 3 No se ha podido cerrar la sesión debido a un error. Comentarios NA Actores Médico, Administrador Tabla 4.3 Cerrar sesión 37 Requisito Ver perfil del usuario Identificador 1.4 Prioridad Alta Precondición El usuario debe haberse registrado y tener una sesión iniciada previamente. Descripción Permite la visualización del perfil de un usuario. Entrada NA Salida Perfil de usuario Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa en la imagen del usuario situada en la cabecera. 2 El sistema mostrará la pantalla donde se visualiza el perfil del usuario. Postcondición Se muestra el perfil del usuario. Excepciones NA Comentarios NA Actores Médico, Administrador Tabla 4.4 Ver perfil del usuario 38 Requisito Modificar cuenta Identificador 1.5 Prioridad Alta Precondición El usuario debe haberse registrado y tener una sesión iniciada previamente. Descripción El usuario podrá modificar datos sobre su perfil dentro de la aplicación. Entrada NA Salida Mensaje indicando la actualización de los datos Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa en la imagen del usuario. 2 El sistema mostrará la pantalla donde se visualiza el perfil del usuario y se pulsa el botón “Modificar datos”. 3 Tras pulsar este botón el usuario hará los cambios pertinentes y se pulsará el botón de “Confirmar”. 4 El sistema muestra un mensaje preguntando por la confirmación 5 El usuario responde de manera afirmativa la confirmación 6 El sistema mostrará el perfil del usuario modificado. Postcondición Se ha producido una modificación en el perfil del usuario. Excepciones 3 Se notifica si algunos de los datos introducidos no cumplen con alguno de los requisitos. 5 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico, Administrador Tabla 4.5 Modificar cuenta 39 Requisito Darse de baja Identificador 1.6 Prioridad Alta Precondición El usuario debe haberse registrado y tener una sesión iniciada previamente. Descripción El usuario podrá darse de baja de la aplicación y con ello borrar todos sus datos de esta. Entrada NA Salida Pantalla de inicio de sesión Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa en la imagen del usuario 2 El sistema mostrará la pantalla donde se visualiza el perfil del usuario y se pulsa el botón “Eliminar usuario”. 3 El sistema muestra un mensaje preguntando por la confirmación 4 El usuario responde de manera afirmativa la confirmación 7 El sistema mostrará la pantalla de inicio Postcondición Se ha dado de baja a un usuario y toda su correspondiente información de la aplicación. Excepciones 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico Tabla 4.6 Darse de baja 40 4.2.2 Módulo Paciente En este módulo se ubican todas las acciones que conciernen a la administración de pacientes, que se enfoca en la gestión de la información de los pacientes. La figura 4.2 que se puede ver a continuación muestra el diagrama de casos de uso del módulo paciente. Figura 4.2: Diagrama de casos de uso del módulo paciente A continuación, se presenta la descripción de cada caso de uso correspondiente a este módulo. Requisito Dar de alta a un paciente Identificador 2.1 Prioridad Alta Precondición El administrador debe haberse registrado y tener una sesión iniciada previamente. Descripción El administrador añadirá un nuevo paciente a la lista de pacientes de un médico. Entrada Nombre, Apellidos, DNI, Correo electrónico, Fecha de nacimiento Salida Lista actualizada de pacientes Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa en la opción de “Añadir paciente”. 2 La aplicación mostrará una pantalla donde el usuario debe rellenar con toda la información necesaria. 41 3 El usuario rellena toda la información y pulsa en botón “Añadir”. 4 El sistema comprueba la validez de la información introducida. 5 El sistema nos mostrará la pantalla principal. Postcondición Se ha añadido el nuevo paciente Excepciones Paso Acción 4 Se notifica si alguno de los datos introducidos no cumple con alguno de los requisitos 4 Se notifica si el DNI ya existe dentro de la aplicación. Comentarios NA Actores Médico Tabla 4.7 Dar de alta a un paciente 42 Requisito Dar de baja a un paciente Identificador 2.2 Prioridad Alta Precondición El administrador debe haberse registrado y tener una sesión iniciada previamente y debe de haber algún paciente registrado en la aplicación. Descripción El administrador dará de baja a un paciente de la aplicación. Entrada NA Salida Lista actualizada de pacientes Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Borrar” en la fila del paciente que se quiera que sea eliminado. 3 El sistema muestra un mensaje preguntando por la confirmación. 4 El usuario responde de manera afirmativa la confirmación 5 El sistema mostrará la pantalla principal con la lista de pacientes actualizada. Postcondición Se ha dado de baja a un paciente de la aplicación. Excepciones Paso Acción 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico Tabla 4.8 Dar de baja a un paciente 43 Requisito Ver el perfil de un paciente Identificador 2.3 Prioridad Alta Precondición El usuario debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente que se quiere ver. Descripción El usuario visualizará el perfil de un paciente. Entrada NA Salida Vista de perfil de un paciente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Ver perfil” en la fila del paciente que se quiera comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente Postcondición Se observa el perfil del paciente. Excepciones Paso Acción Comentarios NA Actores Médico Tabla 4.9 Ver perfil de un paciente 44 Requisito Modificar el perfil de un paciente Identificador 2.4 Prioridad Media Precondición El administrador debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El administrador modificará el perfil de un paciente Entrada Nombre, Apellidos, Email, Fecha de nacimiento Salida Lista actualizada de pacientes Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Modificar” en la fila del paciente que se quiera comprobar sus detalles. 3 El sistema mostrará la pantalla donde se deben insertar los nuevos datos. 4 El usuario insertará los nuevos datos. 5 El usuario pulsará en el botón “Guardar” 6 Tras pulsar este botón se mostrará la lista de pacientes con los datos nuevos modificados Postcondición Se han modificado los datos de un paciente. Excepciones Paso Acción 4 Se notifica si los datos introducidos no cumplen con alguno de los requisitos 5 Se pulsa el botón de “Cancelar” en vez del botón de guardar. Comentarios NA Actores Administrador Tabla 4.10 Modificar el perfil de un paciente 45 Requisito Buscar un paciente Identificador 2.5 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico podrá buscar a un paciente dentro de la lista de pacientes que tiene asignados Entrada DNI Salida Vista del perfil del paciente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Dentro de esta se encuentra un buscador donde se inserta el DNI del paciente a buscar 3 El usuario introduce el DNI del paciente. 4 El sistema mostrará resultados parecidos al DNI buscado. 5 El usuario selecciona un paciente de la lista de sugeridos 6 Se muestra la vista del perfil del paciente Postcondición El médico consigue encontrar al paciente deseado. Excepciones Paso Acción 3 Los datos insertados son erróneos Comentarios NA Actores Médico Tabla 4.11 Buscar un paciente 46 4.2.3 Módulo Historial Clínico En este módulo se encuentran todas las acciones correspondientes con la gestión de historiales clínicos, centrándose en la administración de información de los pacientes. La figura 4.3 que se puede ver a continuación nos muestra el diagrama de casos de uso del módulo historial clínico. Figura 4.3: Diagrama de casos de uso del módulo historial clínico A continuación, se presenta la descripción de cada caso de uso correspondiente a este módulo. 47 Requisito Ver historial clínico de un paciente Identificador 3.1 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico podrá observar el historial clínico de un paciente Entrada NA Salida Historial clínico de un paciente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Ver perfil” en la fila del paciente que se quiere comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente 4 El sistema mostrará la pantalla con el perfil del paciente y se pulsa el botón “Ver historial clínico” 5 El sistema mostrará el historial clínico del paciente. Postcondición El médico puede ver el historial clínico del paciente Excepciones Paso Acción Comentarios NA Actores Médico Tabla 4.12 Ver historial clínico de un paciente 48 Requisito Ver un registro en el historial clínico Identificador 3.2 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico podrá observar el historial clínico de un paciente Entrada NA Salida Historial clínico de un paciente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Ver perfil” en la fila del paciente que se quiere comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente 4 El sistema mostrará la pantalla con el perfil del paciente y se pulsa el botón “Ver historial clínico” 5 El sistema mostrará el historial clínico del paciente. 6 Se pulsa en el botón “Ver registro” en la fila de aquel registro que se quiera ver Postcondición El médico puede ver el historial clínico del paciente Excepciones Paso Acción Comentarios NA Actores Médico Tabla 4.13 Ver un registro en el historial clínico 49 Requisito Añadir registro en el historial clínico Identificador 3.3 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico generará un nuevo registro dentro de la lista de registros de un paciente. Entrada NA Salida Historial clínico actualizado Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Ver perfil” en la fila del paciente que se quiera comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente 4 Dentro del perfil del paciente se pulsa el botón “Ver Registros” 5 El sistema mostrará la pantalla con el perfil del paciente y se pulsa el botón “Ver historial clínico” 6 El sistema mostrará el historial clínico del paciente. 7 El usuario pulsará en el botón “Añadir registro”. 8 Se mostrará una pantalla donde el usuario debe rellenar los correspondientes datos necesarios. 9 El usuario rellena los datos necesarios y pulsa el botón de “Añadir”. 10 Se comprueba que todos los datos sean correctos 11 Se muestra el historial clínico completo del paciente con el nuevo registro añadido Postcondición Se ha añadido un nuevo registro a un paciente. Excepciones Paso Acción 50 10 Los datos introducidos son incorrectos Comentarios NA Actores Médico Tabla 4.14 Añadir registro en el historial clínico Requisito Eliminar registro del historial clínico Identificador 3.4 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico eliminará un registro dentro de la lista de registros de un paciente. Entrada NA Salida NA Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Pulsamos en la opción de “Ver perfil” en la fila del paciente que queramos comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente 4 Dentro del perfil del paciente se pulsa el botón “Ver Registros” 5 El sistema mostrará la pantalla con el perfil del paciente y se pulsa el botón “Ver historial clínico” 6 El sistema mostrará el historial clínico del paciente. 7 Se pulsa el botón de “Borrar” en la fila del registro que se quiere que sea borrado 8 El sistema muestra un mensaje de confirmación respecto al borrado del registro 9 El usuario confirma 51 10 El sistema muestra el historial clínico del paciente actualizado Postcondición Se ha eliminado un registro de un paciente. Excepciones Paso Acción 9 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico Tabla 4.15 Eliminar registro del historial clínico Requisito Modificar registro en el historial clínico Identificador 3.5 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico modificará un registro dentro de la lista de registros de un paciente. Entrada NA Salida NA Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se selecciona la opción de “Ver perfil” en la fila del paciente que se quiera comprobar sus detalles. 3 El sistema mostrará la pantalla con el perfil del paciente 4 Dentro del perfil del paciente se pulsa el botón “Ver Registros” 5 El sistema mostrará la pantalla con el perfil del paciente y se pulsa el botón “Ver historial clínico” 6 El sistema mostrará el historial clínico del paciente. 52 7 Se pulsa el botón de “Modificar” en la fila del registro que se quiere que sea borrado 8 El sistema muestra una pantalla donde se deben de rellenar los datos correspondientes 9 El usuario rellena los datos y pulsa el botón de “Guardar”. 10 El sistema comprueba que los datos introducidos son correctos 11 El sistema muestra el historial clínico del paciente actualizado Postcondición Se ha eliminado un registro de un paciente. Excepciones Paso Acción 10 Los datos introducidos por el usuario son incorrectos Comentarios NA Actores Médico Tabla 4.16 Modificar registro en el historial clínico Requisito Buscar un registro en el historial clínico de un paciente Identificador 3.6 Prioridad Media Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico podrá buscar un registro concreto dentro del historial clínico de un paciente. Entrada Fecha Salida NA Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se muestra la lista de pacientes. 2 Se pulsa en la opción de “Ver perfil” en la fila del paciente que se quiere comprobar sus detalles. 53 3 El sistema mostrará la pantalla con el perfil del paciente 4 Dentro del perfil del paciente se pulsa en el botón “Ver Registros” 5 El sistema mostrará la pantalla con el perfil del paciente y se pulsa en el botón “Ver historial clínico” 6 El sistema mostrará el historial clínico del paciente. 7 Se pulsa en la barra buscadora y se inserta la fecha que se busca correspondiente al registro 8 El sistema mostrará resultados parecidos a la fecha buscada. 9 El usuario selecciona una fecha de la lista de sugeridas 10 Se muestra la vista del registro del paciente correspondiente a esa fecha Postcondición Se ha eliminado un registro de un paciente. Excepciones Paso Acción 7 Los datos insertados son erróneos Comentarios NA Actores Médico Tabla 4.17 Buscar un registro en el historial clínico de un paciente 54 4.2.4 Módulo Cita y Notificación En este módulo se encuentran todas las acciones correspondientes con la gestión de citas y notificaciones de los pacientes y que se enfoca en el manejo de la información de las mismas. La figura 4.4 que se puede ver a continuación nos muestra el diagrama de casos de uso del módulo cita y notificación. Figura 4.4: Diagrama de casos de uso del módulo cita y notificación A continuación, se presenta la descripción de cada caso de uso correspondiente a este módulo. 55 Requisito Añadir una cita Identificador 4.1 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción Los médicos añadirán una cita con un paciente para un día. Entrada DNI, Fecha, Descripción Salida Lista de citas actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista citas”. 2 El sistema muestra todas las citas asignadas al médico y se pulsa en el botón de “Añadir cita”. 3 La aplicación mostrará una pantalla donde se deben de insertar datos como pueden ser el DNI del paciente, la fecha de la cita y una descripción de la misma. 4 El usuario introduce los datos para añadir una nueva cita 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Añadir”. 7 El sistema mostrará la lista de citas de ese médico con la nueva cita añadida. Postcondición Se ha añadido una nueva cita en la aplicación. Excepciones Paso Acción 4 Se notifica si los datos introducidos no cumplen con alguno de los requisitos Comentarios NA Actores Médico Tabla 4.18 Añadir una cita 56 Requisito Eliminar una cita Identificador 4.2 Prioridad Media Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente y debe existir la cita. Descripción El médico borrará una cita de un paciente. Entrada NA Salida Lista de citas actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista citas”. 2 El sistema muestra todas las citas asignadas al médico y se pulsa el botón de “Borrar” en la fila de la cita que se quiere eliminar. 3 El sistema muestra un mensaje de confirmación respecto a la eliminación de la cita. 4 El usuario responde afirmativamente a la confirmación 5 El sistema muestra la lista de citas actualizadas Postcondición Se ha eliminado una cita en la aplicación Excepciones Paso Acción 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico Tabla 4.19 Eliminar una cita 57 Requisito Añadir notificación a un paciente Identificador 4.3 Prioridad Alta Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente. Descripción El médico añadirá una notificación a un paciente. Entrada DNI, Fecha, Descripción Salida Lista de notificaciones actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista notificaciones”. 2 El sistema muestra todas las citas asignadas al médico y se pulsa en el botón de “Añadir notificación”. 3 La aplicación mostrará una pantalla donde se deben de insertar datos como pueden ser el DNI del paciente, la fecha de la notificación y una descripción de la misma. 4 El usuario introduce los datos para añadir una nueva notificación 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Añadir”. 7 El sistema mostrará la lista de notificaciones de ese médico con la nueva notificación añadida. Postcondición Se ha añadido un nueva notificación a un paciente. Excepciones Paso Acción 5 Se notifica si los datos introducidos no cumplen con alguno de los requisitos Comentarios NA Actores Médico Tabla 4.20 Añadir notificación a un paciente 58 Requisito Eliminar notificación de un paciente Identificador 4.4 Prioridad Media Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente y la notificación Descripción El médico eliminará una notificación de un paciente. Entrada NA Salida Lista de notificaciones actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista notificaciones”. 2 El sistema muestra todas las notificaciones asignadas al médico y se pulsa el botón de “Borrar” en la fila de la notificación que se quiere eliminar. 3 El sistema muestra un mensaje de confirmación respecto a la eliminación de la notificación . 4 El usuario responde afirmativamente a la confirmación 5 El sistema muestra la lista de notificaciones actualizadas Postcondición Se ha eliminado una notificación de un paciente. Excepciones Paso Acción 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Médico Tabla 4.21 Eliminar notificación de un paciente 59 Requisito Buscar sobre las citas (por distintos criterios) Identificador 4.5 Prioridad Media Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente y citas en el sistema. Descripción El médico podrá buscar una cita concreta basada en distintos criterios disponibles. Entrada NA Salida Lista de citas ordenadas Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista citas”. 2 La aplicación mostrará una pantalla donde se podrá ver una lista de citas, junto a un dropdown que permite ver los distintos criterios por los que se puede ordenar nuestra lista. 3 Se pulsa dentro del dropdown en el criterio que deseemos. 4 El sistema mostrará la lista de citas ordenada según el criterio seleccionado Postcondición Se muestran las citas correspondientes al criterio impuesto por el usuario. Excepciones Paso Acción Comentarios NA Actores Médico Tabla 4.22 Buscar sobre las citas (por distintos criterios) 60 Requisito Buscar sobre las notificaciones(por distintos criterios) Identificador 4.6 Prioridad Media Precondición El médico debe haberse registrado y tener una sesión iniciada previamente y debe existir el paciente y notificaciones en el sistema. Descripción El médico podrá buscar una notificación concreta basada en distintos criterios disponibles. Entrada NA Salida Lista de notificaciones ordenadas Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Notificaciones”. 2 La aplicación mostrará una pantalla donde se podrá ver una lista de notificaciones, junto a un dropdown que permite ver los distintos criterios por los que se puede ordenar la lista. 3 Se pulsa dentro del dropdown en el criterio que deseemos. 4 El sistema mostrará la lista de notificaciones ordenada según el criterio seleccionado Postcondición Se muestran las notificaciones correspondientes al criterio impuesto por el usuario. Excepciones Paso Acción Comentarios NA Actores Médico Tabla 4.23 Buscar sobre las notificaciones(por distintos criterios) 61 4.2.5 Módulo Información Médica En este módulo se encuentran todas las acciones correspondientes con la gestión de citas y notificaciones donde se enfoca en la administración de la información almacenada en el sistema como medicamentos, enfermedades y síntomas. La figura 4.5 que se puede ver a continuación muestra el diagrama de casos de uso del módulo información médica. Figura 4.5: Diagrama de casos de uso del módulo información médica A continuación, se presenta la descripción de cada caso de uso correspondiente a este módulo. 62 Requisito Añadir medicamento Identificador 5.1 Prioridad Alta Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema añadirá un nuevo medicamento a la base de datos de la aplicación Entrada NA Salida Lista de medicamentos actualizada y notificación indicando que el medicamento se ha añadido correctamente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Medicamentos”. 2 El sistema muestra todas los medicamentos registrados en el sistema y se pulsa el botón de “Añadir Medicamento”. 3 La aplicación mostrará una pantalla donde se deben insertar datos como pueden ser el nombre del medicamento, su descripción y una foto del mismo. 4 El usuario introduce los datos para añadir un nuevo medicamento 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Añadir”. 7 El sistema mostrará la lista de medicamentos registrados en el sistema con el nuevo medicamento añadido. Postcondición Se ha añadido un nuevo medicamento a la base de datos de la aplicación. Excepciones Paso Acción 5 Se notifica si los datos introducidos no cumplen con alguno de los requisitos Comentarios NA Actores Administrador Tabla 4.24 Añadir medicamento 63 Requisito Modificar medicamento Identificador 5.2 Prioridad Baja Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema modificará un medicamento de la base de datos de la aplicación Entrada NA Salida Lista de medicamentos actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Medicamentos”. 2 El sistema muestra todas los medicamentos registrados en el sistema y se pulsa el botón de “Modificar” en la fila del medicamento que desea modificar. 3 La aplicación mostrará una pantalla donde se deben insertar datos como pueden ser el nombre del medicamento, su descripción y podemos añadir y borrar síntomas asociados a este medicamento. 4 El usuario introduce los datos para modificar el medicamento 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Guardar”. 7 El sistema mostrará la lista de medicamentos registrados en el sistema con los nuevos datos del medicamento. Postcondición Se ha realizado una modificación en un medicamento de la aplicación. Excepciones Paso Acción 5 Se notifica si los datos introducidos no cumplen con alguno de los requisitos Comentarios NA Actores Administrador Tabla 4.25 Modificar medicamento 64 Requisito Eliminar medicamento Identificador 5.3 Prioridad Media Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema eliminará un medicamento de la base de datos de la aplicación Entrada NA Salida Lista de medicamentos actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista medicamentos”. 2 El sistema muestra todos los medicamentos registrados en el sistema y se pulsa el botón de “Borrar” en la fila del medicamento que se quiere eliminar. 3 El sistema muestra un mensaje de confirmación respecto a la eliminación del medicamento. 4 El usuario responde afirmativamente a la confirmación 5 El sistema muestra la lista de medicamentos actualizados Postcondición Se ha eliminado un medicamento de la base de datos de la aplicación. Excepciones Paso 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Administrador Tabla 4.26 Eliminar medicamento 65 Requisito Ver medicamento Identificador 5.4 Prioridad Media Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema podrá observar la información de un medicamento de la base de datos de la aplicación Entrada NA Salida Vista de un medicamento Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista medicamentos”. 2 El sistema muestra todos los medicamentos registrados en el sistema y se pulsa el botón de “Información” en la fila del medicamento que se quiere ver. 3 El sistema muestra la vista del medicamento deseado con toda su información Postcondición Se ha mostrado la información de un medicamento de la base de datos de la aplicación. Excepciones Paso Comentarios NA Actores Administrador Tabla 4.27 Ver medicamento 66 Requisito Añadir enfermedad Identificador 5.5 Prioridad Alta Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema añadirá un nuevo tipo de enfermedad a la base de datos de la aplicación Entrada Nombre, Descripción Salida Lista de enfermedades actualizada y notificación indicando que la enfermedad se ha añadido correctamente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Enfermedades”. 2 El sistema muestra todas los medicamentos registrados en el sistema y se pulsa el botón de “Añadir Enfermedad”. 3 La aplicación mostrará una pantalla donde se deben insertar datos como pueden ser el nombre de la enfermedad y su descripción. 4 El usuario introduce los datos para añadir una nueva enfermedad. 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Añadir”. 7 El sistema mostrará la lista de enfermedades registradas en el sistema con la nueva enfermedad añadida. Postcondición Se ha añadido un nuevo tipo de enfermedad a la base de datos de la aplicación. Excepciones Paso Acción 5 Se notifica si los datos introducidos son incorrectos. Comentarios NA Actores Administrador Tabla 4.28 Añadir enfermedad 67 Requisito Modificar enfermedad Identificador 5.6 Prioridad Media Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema modificará un tipo de enfermedad de la base de datos de la aplicación Entrada Nombre, Descripción, Síntomas Salida Lista de enfermedades actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Enfermedades”. 2 El sistema muestra todas las enfermedades registradas en el sistema y se pulsa el botón de “Modificar” en la fila de la enfermedad que se desea modificar. 3 La aplicación mostrará una pantalla donde se deben insertar datos como pueden ser el nombre de la enfermedad, su descripción y los síntomas que la producen. 4 El usuario introduce los datos para modificar la enfermedad 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Guardar”. 7 El sistema mostrará la lista de las enfermedades registradas en el sistema con los nuevos datos de la enfermedad. Postcondición Se ha realizado una modificación en un tipo de enfermedad de la aplicación. Excepciones Paso Acción 5 Se notifica si los datos introducidos no cumplen con alguno de los requisitos Comentarios NA Actores Administrador Tabla 4.29 Modificar enfermedad 68 Requisito Eliminar enfermedad Identificador 5.7 Prioridad Baja Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema eliminará un tipo de enfermedad de la base de datos de la aplicación. Entrada Nombre Salida NA Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Enfermedades”. 2 El sistema muestra todos las enfermedades registradas en el sistema y se pulsa el botón de “Borrar” en la fila de la enfermedad que se quiere eliminar. 3 El sistema muestra un mensaje de confirmación respecto a la eliminación de la enfermedad. 4 El usuario responde afirmativamente a la confirmación 5 El sistema muestra la lista de enfermedades actualizadas Postcondición Se ha eliminado un tipo de enfermedad de la base de datos de la aplicación. Excepciones Paso 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Administrador Tabla 4.30 Eliminar enfermedad 69 Requisito Ver enfermedad Identificador 5.8 Prioridad Media Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema podrá observar la información de una enfermedad de la base de datos de la aplicación Entrada NA Salida Vista de una enfermedad Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista enfermedades”. 2 El sistema muestra todas las enfermedades registradas en el sistema y se pulsa el botón de “Información” en la fila de la enfermedad que se quiere ver. 3 El sistema muestra la vista de la enfermedad deseada con toda su información Postcondición Se ha mostrado la información de una enfermedad en la base de datos de la aplicación. Excepciones Paso Comentarios NA Actores Administrador Tabla 4.31 Ver enfermedad 70 Requisito Añadir síntoma Identificador 5.9 Prioridad Alta Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema añadirá un nuevo tipo de síntoma la base de datos de la aplicación Entrada Nombre, Descripción Salida Lista de síntomas actualizada y notificación indicando que el síntoma se ha añadido correctamente Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Síntomas”. 2 El sistema muestra todas los síntomas registrados en el sistema y se pulsa el botón de “Añadir Síntoma”. 3 La aplicación mostrará una pantalla donde se deben insertar datos como pueden ser el nombre del síntoma y su descripción. 4 El usuario introduce los datos para añadir un nuevo síntoma. 5 El sistema comprueba que todos los datos introducidos son correctos. 6 El usuario pulsa el botón “Añadir”. 7 El sistema mostrará la lista de síntomas registrados en el sistema con el nuevo síntoma añadido. Postcondición Se ha añadido un nuevo tipo de síntoma en la base de datos de la aplicación. Excepciones Paso Acción 5 Se notifica si los datos introducidos son incorrectos. Comentarios NA Actores Administrador Tabla 4.32 Añadir síntoma 71 Requisito Eliminar síntoma Identificador 5.10 Prioridad Baja Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema eliminará un tipo de síntoma de la base de datos de la aplicación. Entrada NA Salida Lista de síntomas actualizada Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista Síntomas”. 2 El sistema muestra todos los síntomas registrados en el sistema y se pulsa el botón de “Borrar” en la fila del síntoma que se quiere eliminar. 3 El sistema muestra un mensaje de confirmación respecto a la eliminación del síntoma. 4 El usuario responde afirmativamente a la confirmación 5 El sistema muestra la lista de síntomas actualizada Postcondición Se ha eliminado un tipo de síntoma de la base de datos de la aplicación. Excepciones Paso 4 El usuario responde de manera negativa la confirmación Comentarios NA Actores Administrador Tabla 4.33 Eliminar síntoma 72 Requisito Ver síntoma Identificador 5.11 Prioridad Media Precondición El administrador debe tener una sesión iniciada previamente. Descripción El administrador del sistema podrá observar la información de un síntoma de la base de datos de la aplicación Entrada NA Salida Vista de un síntoma Secuencia normal Paso Acción 1 Tras haber iniciado sesión, se pulsa el botón “Lista síntomas”. 2 El sistema muestra todos los síntomas registrados en el sistema y se pulsa el botón de “Información” en la fila del síntoma que se quiere ver. 3 El sistema muestra la vista del síntoma deseada con toda su información Postcondición Se ha mostrado la información de un síntoma de la base de datos de la aplicación. Excepciones Paso Comentarios NA Actores Administrador Tabla 4.34 Ver síntoma 73 Capítulo 5 Arquitectura de la aplicación En el presente capítulo, se procederá a la descripción de la arquitectura de la aplicación desarrollada así como los patrones utilizados y su correspondiente modelo de datos. 5.1 Estructura de la aplicación La aplicación utiliza una arquitectura cliente-servidor como se puede observar en la figura 5.1 donde el cliente y el servidor se ven divididos en el front end y el backend respectivamente. En el caso del frontend los componentes situados en Components[31] serán encargados de llamar al Services[32] cuando sea necesario realizar una consulta a la base de datos, estos llamarán al Controller[41] dentro del backend el cual a través del Service[32] llamará al Repository[33] que será el encargado de realizar todas las consultas necesarias a la base de datos. Figura 5.1: Arquitectura de la aplicación web 74 5.2 Patrones de diseño y arquitectónicos A continuación se muestran los distintos patrones de diseño y patrones arquitectónicos utilizados en este proyecto. 5.2.1 Patrones arquitectónicos ❖ Cliente - Servidor En la aplicación web se ha utilizado el patrón Cliente-Servidor[34] codonde en nuestro caso el cliente será nuestro FrontEnd realizado en React[21] con JavaScript[13] y el cual hará peticiones a nuestro servidor Spring que funciona como una APIREST[16] en el backend. Gracias a esto el cliente podrá obtener los distintos datos necesarios a través de peticiones al servidor, y a su vez este devuelve estos datos según se ve en la figura 5.2. Esto permite una gran escalabilidad y reusabilidad del código. Figura 5.2: Patrón Cliente-Servidor utilizado en la aplicación ❖ MVC (Modelo-Vista-Controlador) En esta aplicación web también se ha utilizado un patrón MVC[35] donde en nuestra parte de frontend desarrollada en React[21] con JavaScript[13] hace la función de vista la cual se conecta con Spring[14] donde se sitúan los controladores que estos son los encargados de manejar las vistas recopilando y devolviendo los datos que deben de mostrarse en estas según se muestra en la figura 5.3. 75 Figura 5.3: Patrón Modelo Vista-Controlador utilizado en la aplicación 5.2.2 Patrones de diseño ❖ Repository El patrón Repository[36] ha sido aplicado en la creación de las clases Repository[33] para los distintos elementos de la base de datos, como se puede observar en la figura 5.4, esto nos permite separar la parte lógica con el acceso a los datos en una aplicación manteniendo así la centralización de la lógica del acceso de datos en un único lugar manteniendo así encapsular la lógica de acceso a los datos. Figura 5.4: Patrón Repository 76 ❖ Factory El patrón Factory[37] es utilizado para simplificar el acceso a algún recurso para la creación de un objeto, o si se conoce hasta la instanciación que tipo de objeto se va a instanciar, como se aprecia en la figura 5.5. En este proyecto se utiliza para la instanciación de los distintos atributos Repository[33] presentes en las clases Service[32]. Figura 5.5: Patrón Factory ❖ DAO El patrón Dao[38] se trata de un patrón similar al Repository[36] , como se puede apreciar en la figura 5.6, puesto que ambos están relacionados con el acceso y persistencia de datos. Este patrón es el encargado de todas las operaciones CRUD(Create Read Update Delete)[39] que son posibles a realizar a través de una capa intermedia entre la aplicación y la base de datos siendo en el caso de la aplicación las clases Repository[33]. Figura 5.6: Patrón DAO 77 5.3 Modelo de datos En este apartado, se mostrará en detalle todos los aspectos relacionados con el acceso y la gestión de la base de datos del proyecto. 5.3.1 Implementación de la base de datos La base de datos se ha implementado a través de una base de datos relacional de tipo MySQL[21]. A continuación se presentan las definiciones de las colecciones de documentos. 5.3.1.1 Colección Usuarios La colección Usuarios sirve para almacenar todos los datos correspondientes a los diferentes usuarios registrados en el sistema. Cada usuario está identificado con su respectivo número de colegiado, número único para cada médico. Otros campos que se pueden encontrar son: ● Número de colegiado (Long): Número de identificación dentro de la aplicación. Único para cada usuario ● Nombre (String): Nombre del usuario ● Apellidos (String): Apellidos del usuario ● Email (String): Email del usuario ● Ciudad (String): Ciudad donde ejerce su trabajo el usuario actualmente ● Especialidad (String): Especialidad en la que trabaja el usuario ● Lugar de trabajo (String): Centro médico u hospital en el que trabaja el usuario ● Contraseña (String): Contraseña del usuario ● Foto (String): Enlace URL a la foto del usuario. 78 5.3.1.2 Colección Pacientes Sirve para almacenar todos los datos correspondientes a los diferentes pacientes almacenados en el sistema. Cada paciente está identificado con el número de su DNI. Otros campos que se pueden encontrar son: ● IdPaciente (Long): DNI del paciente añadido al sistema. Único para cada paciente ● IdDoctor (Long): Identificador del doctor al cual está asignado el paciente ● Nombre (String): Nombre del paciente ● Apellidos (String): Apellidos del paciente ● Email (String): Email del paciente ● Cumpleaños (Date): Fecha de nacimiento del paciente ● Foto (String): Enlace URL a la foto del paciente ● Enfermedades (List): Lista de enfermedades o condiciones previas o actuales que tiene el paciente 5.3.1.3 Colección Notificaciones Sirve para almacenar todos las notificaciones asignadas a un paciente de un médico registrado en el sistema. Los campos pertenecientes a esta colección son: ● IdNotificacion (Long): Identificador de la notificación en el sistema. Único para cada notificación ● IdDoctor (Long): Identificador del doctor al cual está asignado el paciente que está asignada esta notificación ● IdPaciente (Long): Identificador del paciente al cual está asignado la notificación ● Fecha (Date): Fecha en el que se debe de realizar la notificación ● Descripción (String): Descripción indicando los motivos de la notificación. 79 5.3.1.4 Colección Registros Sirve para almacenar todos los registros asignados a un paciente de un médico registrado en el sistema. Los campos pertenecientes a esta colección son: ● IdRegistro (Long): Identificador del registro en el sistema. Único para cada registro ● IdPaciente (Long): Identificador del paciente al cual está asignado el registro ● Fecha (Date): Fecha en el que se creó el registro ● Síntomas (List): Lista de los síntomas que presentó el paciente a la hora de realizar el registro. ● Enfermedades (List): Lista de enfermedades que el sistema sugiere en función de los distintos síntomas presentados por el paciente en el registro ● Medicamentos (List): Lista de medicamentos que el sistema recomienda en función de los distintos síntomas presentados por el paciente en el registro y las enfermedades sugeridas. 5.3.1.5 Colección Síntomas Sirve para almacenar todos los síntomas almacenados dentro del sistema. Los campos pertenecientes a esta colección son: ● IdSintoma (Long): Identificador del síntoma en el sistema. Único para cada síntoma ● Nombre (String): Nombre del síntoma en el sistema ● Descripción (String): Descripción del síntoma 5.3.1.6 Colección Medicamentos Sirve para almacenar todos los medicamentos dentro del sistema. Los campos pertenecientes a esta colección son: ● IdMedicamento (Long): Identificador del medicamento en el sistema. Único para cada medicamento ● Nombre (String): Nombre del medicamento en el sistema 80 ● Descripción (String): Descripción del medicamento ● Imagen (String): Enlace a la imagen del medicamento. ● Enfermedades (List): Lista de enfermedades con las cuales no se puede recomendar el medicamento ● Síntomas (List): Lista de síntomas con los cuales se recomienda el consumo de este medicamento para su eliminación. 5.3.1.7 Colección Enfermedades Sirve para almacenar todos las enfermedades dentro del sistema. Los campos pertenecientes a esta colección son: ● IdEnfermedad (Long): Identificador de la enfermedad en el sistema. Único para cada enfermedad ● Nombre (String): Nombre de la enfermedad en el sistema ● Descripción (String): Descripción de la enfermedad ● Síntomas (List): Lista de síntomas que dan un indicio de que se puede padecer la enfermedad 5.3.1.8 Colección Citas Sirve para almacenar todos las citas asignadas a un paciente de un médico registrado en el sistema. Los campos pertenecientes a esta colección son: ● IdCitas (Long): Identificador de la cita en el sistema. Único para cada cita ● IdDoctor (Long): Identificador del doctor al cual está asignado el paciente que está asignada esta cita ● IdPaciente (Long): Identificador del paciente al cual está asignado la cita ● Fecha (Date): Fecha en el que se debe de realizar la cita ● Descripción (String): Descripción indicando los motivos de la cita . 81 Capítulo 6 Implementación y diseño de la aplicación En el presente capítulo, se explica la implementación y diseño de la aplicación. Se presenta cada uno de los diseños utilizados en cada caso de uso, dentro de cada módulo. Los módulos en los que se ha dividido el proyecto son: ● Usuario ● Paciente ● Historial clínico ● Cita y notificación ● Información médica 6.1 Módulo Usuario 6.1.1 Registrar médico El registro del usuario comienza en la pantalla principal de inicio de sesión (Figura 6.1) donde tras pulsar en el botón de “Regístrate” se mostrará un formulario con todos los datos (Figura 6.2) En caso de que alguno de los campos sea incorrecto o el número de colegiado esté repetido, se mostrará un mensaje indicandolo y pidiendo que se vuelvan a insertar los datos. Tras esto, si se pulsa en el botón de registrar los datos, se enviarán para agregar un nuevo usuario a la base de 82 datos y se redirigirá a la pantalla de inicio de sesión, notificando que el usuario se ha añadido correctamente. El fragmento de código que realiza esta acción se puede ver en la figura 6.3. Figura 6.1: Pantalla de inicio de sesión Figura 6.2: Vista de registro de nuevo usuario 83 Figura 6.3: Fragmento de código - Registrar usuario 6.1.2 Iniciar sesión El inicio de sesión comienza en su pantalla correspondiente (Figura 6.4) donde se debe de insertar el número de colegiado del médico y su respectiva contraseña, en caso de que los datos sean incorrectos se mostrará un mensaje indicandolo. En caso de éxito se guardarán las credenciales del usuario dentro del sistema a través de un token y se redirigirá a la página principal de la aplicación (Figura 6.5) donde figura donde la información correspondiente a ese usuario. El fragmento de código que se encarga de gestionar esta acción se puede ver en la figura 6.6 Figura 6.4: Pantalla de inicio de sesión 84 Figura 6.5: Vista principal del usuario 85 Figura 6.6: Fragmento de código - Iniciar sesión 6.1.3 Cerrar sesión Tras haber iniciado sesión en la cabecera de la aplicación, al lado de la foto de perfil del usuario se puede encontrar el botón de cerrar sesión y al pulsarlo, el token guardado del paciente se 86 borrará de la aplicación y se redirigirá a la pantalla de iniciar sesión (Figura 6.7). El fragmento de código que realiza esta acción se puede ver en la figura 6.8. Figura 6.7: Vista del usuario tras cerrar sesión Figura 6.8: Fragmento de código - Cerrar sesión 6.1.4 Ver perfil de usuario Tras haber iniciado sesión en la cabecera de la aplicación, se puede encontrar la correspondiente foto de perfil de usuario y si se pulsa en ella se nos redirigirá a la pantalla donde se pueden observar todos los datos del usuario (Figura 6.9). Además se encuentran una serie de botones con los cuales se puede modificar datos, cambiar la contraseña del usuario y eliminar al usuario. La figura 6.10 muestra el código que enseña el perfil del usuario por pantalla. El fragmento de código que realiza esta acción se puede ver en la figura 6.10. 87 Figura 6.9: Vista del perfil de un usuario Figura 6.10: Fragmento de código - Ver perfil de usuario 88 6.1.5 Modificar usuario Tras haber iniciado sesión en la cabecera de la aplicación, se encuentra la correspondiente foto de perfil del usuario, si se pulsa en ella se redirigirá a la pantalla donde se observan todos los datos del usuario, y se encontrará el botón de modificar datos. Si se pulsa este botón se mostrará un formulario similar al de creación de usuario pero con algunos campos menos (Figura 6.11), Si alguno de los datos insertados es incorrecto se notificará y se pedirá que se inserten correctamente, tras esto se enviarán la nueva información a la base de datos y se redirigirá a la pantalla del perfil de usuario donde se podrán ver los datos modificados. La figura 6.12 muestra el código correspondiente al guardado de la modificación del usuario. Figura 6.11: Vista de modificar el usuario 89 Figura 6.12: Fragmento de código - Modificar usuario 6.1.6 Eliminar usuario Tras haber iniciado sesión en la cabecera de la aplicación se encuentra la correspondiente foto de perfil de usuario y si se pulsa en ella se redirigirá a la pantalla donde se podrá observar todos los datos del usuario, también se encontrará el botón de eliminar usuario, tras pulsar este botón se mostrará un mensaje indicando si verdaderamente se desea eliminar al usuario del sistema (Figura 6.13), si se responde afirmativamente, se eliminará de la base de datos junto con todos sus contenidos relacionados como pueden ser pacientes, notificaciones, citas, etc. Por último se redirigirá a la pantalla de inicio de sesión. El fragmento de código que realiza esta acción se puede ver en la figura 6.14. 90 Figura 6.13: Vista de eliminar usuario Figura 6.14: Fragmento de código - Eliminar usuario 6.2 Módulo Paciente 6.2.1 Dar de alta a un paciente Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Añadir paciente”. Posteriormente se mostrará un formulario, el cual se tiene que rellenar con los distintos datos del paciente (Figura 6.15). En caso de que los datos introducidos sean incorrectos, se notificará y se pedirá que se inserten correctamente. Tras esto se enviará la información a la base de datos y se redirigirá a la página principal de la aplicación donde se podrá ver como el nuevo paciente ha sido agregado a la lista. La figura 6.16 muestra el código correspondiente al guardado del nuevo paciente. 91 Figura 6.15: Vista de añadir un nuevo paciente Figura 6.16: Fragmento de código - Dar de alta un nuevo paciente 6.2.2 Dar de baja un paciente Tras iniciar sesión con el médico al cual se le ha asignado el paciente, en la página principal se pulsará el botón “Borrar” en la fila de aquel paciente que se quiera eliminar, se mostrará un mensaje indicando si se desea eliminar ese paciente del sistema (Figura 6.17) y tras confirmar se eliminará el paciente de la base de datos junto con toda la información referida al mismo según hace el código de la figura 6.18, observándose cómo el paciente ha desaparecido de la lista. 92 Figura 6.17: Vista de eliminar un paciente Figura 6.18: Fragmento de código - Dar de baja un paciente 6.2.3 Ver el perfil de un paciente Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente del que se quiere comprobar su perfil, y se redirigirá a la página de los detalles del paciente donde se podrá ver más información sobre él (Figura 6.19), las enfermedades que ha padecido o padece y un botón que permite ver su historial clínico. El fragmento de código que gestiona esta acción se puede ver en la figura 6.20. 93 Figura 6.19: Vista de perfil de un paciente Figura 6.20: Fragmento de código - Ver el perfil de un paciente 94 6.2.4 Modificar el perfil de un paciente Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Modificar” en la fila de aquel paciente del que se quiere actualizar sus datos. Se redirigirá a la página de modificación del paciente donde se encuentra un formulario para modificar algunos campos (Figura 6.21), en caso de que alguno de los campos sea incorrecto se notificará y se pedirá que se rellenen correctamente, tras esto se redirigirá a la página de detalles del paciente donde se podrán ver sus datos actualizados. La figura 6.22 muestra el código correspondiente al guardado de la modificación del paciente. Figura 6.21: Modificar el perfil de un paciente 95 Figura 6.22: Fragmento de código - Modificar el perfil de un paciente 6.2.5 Buscar un paciente Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se debe de insertar el DNI del paciente que se está buscando en la barra buscadora implementada según la figura 6.24, a medida que se va escribiendo el DNI del paciente el sistema sugerirá distintas opciones posibles según el DNI que se esté escribiendo (Figura 6.23) Cuando se haya encontrado el DNI deseado en la lista sugerida al hacer clic en él se redirigirá a la página de información de ese paciente. Figura 6.23: Buscar un paciente 96 Figura 6.24: Fragmento de código - Buscar un paciente 6.3 Módulo Historial clínico 6.3.1 Ver historial clínico de un paciente Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente del que se quiere comprobar dicho perfil y se redirigirá a la página de los detalles del paciente donde se puede encontrar el botón “Ver historial clínico”. Si se pulsa se redirigirá a la página donde figuran la lista de todos los registros del paciente (Figura 6.25) que se lleva a cabo por el código de la figura 6.26. 97 Figura 6.25: Ver historial clínico de un paciente Figura 6.26: Fragmento de código - Ver historial clínico de un paciente 98 6.3.2 Ver un registro en el historial clínico Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente del que se quiere comprobar el perfil y se redirigirá a la página de los detalles del paciente donde se puede encontrar el botón “Ver historial clínico”. Pulsandolo se redirigirá a la página donde figuran la lista de todos los registros del paciente, para ver los detalles de uno se debe pulsar el botón “Ver registro” en la fila del registro que se quiere observar (Figura 6.27), después se redirigirá a la página de información de un registro donde se puede ver la fecha de este, los síntomas presentados por el paciente, una serie de sugerencias respecto a las posibles enfermedades que puede padecer en base a los síntomas presentados y una serie de medicamentos adecuados para tratar estos síntomas, sin que se vean afectados por las enfermedades que ya padece o ha padecido el paciente, esta vista se realiza gracias al código de la figura 6.28. 99 Figura 6.27: Ver un registro en el historial clínico 100 Figura 6.28: Fragmento de código - Ver un registro en el historial clínico 101 6.3.3 Añadir registro en el historial clínico Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente del que se quiere comprobar el perfil, se redirigirá a la página de los detalles del paciente donde se puede encontrar el botón “Ver historial clínico” y si se pulsa se redirigirá a la página donde figuran la lista de todos los registros del paciente y si se pulsa el botón “Añadir registro” se mostrará un pequeño formulario (Figura 6.29) donde aparecerá la fecha en la que ocurrió la cita médica. La figura 6.30 muestra el código correspondiente al guardado del registro en el historial clínico. Figura 6.29: Añadir registro en el historial clínico Figura 6.30: Fragmento de código - Añadir registro en el historial clínico 102 6.3.4 Modificar registro en el historial clínico Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente que se quiere comprobar su perfil, se redirigirá a la página de los detalles del paciente donde se puede encontrar el botón “Ver historial clínico” Si se pulsa se redirigirá a la página donde figuran la lista de todos los registros del paciente, para modificar uno se debe pulsar el botón “Modificar” en la fila del registro que se quiere modificar y tras esto se muestra un formulario con los cambios que se desean realizar como puede ser añadir o eliminar síntomas que ha presentado el paciente o modificar la fecha del registro (Figura 6.31). Tras pulsar el botón “Guardar” se redirigirá a la lista de registros del paciente donde podremos ver el registro actualizado. La figura 6.32 muestra el código correspondiente al guardado de la modificación del registro. Figura 6.31: Modificar registro en el historial clínico 103 Figura 6.32: Fragmento de código - Modificar registro en el historial clínico 6.3.5 Eliminar registro en el historial clínico Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila de aquel paciente del que se quiere comprobar el perfil. Se redirigirá a la página de los detalles del paciente donde se puede encontrar el botón “Ver historial clínico” y si se pulsa se redirigirá a la página donde figuran la lista de todos los registros del paciente, para eliminar uno se se debe pulsar el botón “Borrar” en la fila del registro que se quiere que sea eliminado, tras esto se mostrará un mensaje de confirmación indicando si verdaderamente se quiere borrar el registro (Figura 6.33). Tras responder de forma afirmativa se recargará la página actualizada con el registro que se ha querido borrar, esto es debido al código de la figura 6.34. Figura 6.33: Eliminar registro en el historial clínico 104 Figura 6.34: Fragmento de código - Eliminar registro en el historial clínico 6.3.6 Buscar un registro en el historial clínico Tras iniciar sesión con el médico al que se le ha asignado el paciente, en la página principal se pulsa el botón “Ver perfil” en la fila del paciente del que se quiere comprobar su perfil. Se redirigirá a la página de los detalles del mismo donde se puede encontrar el botón “Ver historial clínico”, si se pulsa se redirigirá a la página donde figuran la lista de todos los registros del paciente y, si se desea buscar un registro concreto se debe utilizar el buscador de registros insertando la fecha del registro que se quiere buscar (preferiblemente con el formato YYYY-MM-DD). Cuando en la lista de sugerencias se encuentre la fecha del registro deseada se pulsa sobre ella y nos redirigirá a la página de información de ese registro (Figura 6.35). El funcionamiento de la barra de búsqueda se puede apreciar en la figura 6.36. Figura 6.35: Buscar un registro en el historial clínico 105 Figura 6.36: Fragmento de código - Buscar un registro en el historial clínico 6.4 Módulo Cita y Notificación 6.4.1 Añadir una cita Tras iniciar sesión, en la página principal se pulsa el botón “Lista citas”, esto hará que se redirija a la página que contiene todas las citas correspondientes a ese médico, para añadir una cita se pulsará en el botón de “Añadir cita” eso hará que se muestre un formulario con distintos datos a 106 rellenar, entre ellos el DNI del paciente al que se le asigna la cita, fecha y descripción de la misma (Figura 6.37), se notificará si algunos de los datos insertados son incorrectos y se pedirá que se inserten correctamente, tras esto se redirigirá a la lista de citas donde podremos ver la nueva cita agregada. La figura 6.38 muestra el código correspondiente al guardado de la nueva cita. Figura 6.37: Añadir una cita Figura 6.38: Fragmento de código - Añadir una cita 6.4.2 Eliminar una cita Tras iniciar sesión, en la página principal se pulsa el botón “Lista citas”, esto hará que se redirija a la página que contiene todas las citas correspondientes a ese médico y para eliminar una cita, se 107 pulsará en el botón de “Borrar” en la fila de la cita que se quiere eliminar y se mostrará un mensaje indicando si verdaderamente se quiere eliminar esa cita (Figura 6.39), tras responder afirmativamente se recargará la página mostrando la lista de citas actualizada. El fragmento de código que gestiona esta acción se puede ver en la figura 6.40. Figura 6.39: Eliminar una cita Figura 6.40: Fragmento de código - Eliminar una cita 6.4.3 Buscar sobre las citas Tras iniciar sesión, en la página principal se pulsa el botón “Lista citas”, esto hará que se redirija a la página que contiene todas las citas correspondientes a ese médico. En ese momento se 108 pueden seleccionar los distintos criterios en la barra de búsqueda, estos ordenarán la lista según se desee, puede ser por orden de DNI del paciente (creciente o decreciente) o por fecha de la cita (creciente o decreciente) de esta manera se recargará la página mostrando la lista en el orden deseado (Figura 6.41). El funcionamiento de la barra de búsqueda se puede apreciar en la figura 6.42. Figura 6.41: Buscar sobre las citas Figura 6.42: Fragmento de código - Buscar sobre las citas 6.4.4 Añadir notificación Tras iniciar sesión, en la página principal se pulsa el botón “Lista notificaciones”, esto hará que se redirija a la página que contiene todas las notificaciones correspondientes a ese médico y, para añadir una notificación, se pulsará en el botón de “Añadir notificación”, lo que hará que se 109 muestre un formulario con distintos datos a rellenar entre ellos el DNI del paciente al que se le asigna la notificación, fecha y descripción de la misma (Figura 6.43). Se notificará si algunos de los datos insertados son incorrectos y se pedirá que se inserten correctamente, tras esto se redirigirá a la lista de notificaciones donde podremos ver la nueva notificación agregada. El fragmento de código que gestiona esta acción se puede ver en la figura 6.44. Figura 6.43: Añadir notificación Figura 6.44: Fragmento de código - Añadir notificación 6.4.5 Eliminar notificación Tras iniciar sesión, en la página principal se pulsa el botón “Lista notificaciones”, esto hará que se redirija a la página que contiene todas las notificaciones correspondientes a ese médico y para eliminar una notificación, se pulsará en el botón “Borrar” en la fila de la notificación que se quiere eliminar. Se mostrará un mensaje indicando si verdaderamente se quiere eliminar esa notificación (Figura 6.45) y tras responder afirmativamente se recargará la página mostrando la 110 lista de notificaciones actualizada. La eliminación de la notificación se lleva a cabo por el fragmento de código de la figura 6.46. Figura 6.45: Eliminar notificación Figura 6.46: Fragmento de código - Eliminar notificación 6.4.6 Buscar sobre las notificaciones Tras iniciar sesión, en la página principal se pulsa el botón “Lista notificaciones”, esto hará que se redirija a la página que contiene todas las notificaciones correspondientes a ese médico donde se pueden seleccionar los distintos criterios en la barra de búsqueda, estos ordenarán la lista según se desee como puede ser por orden de DNI del paciente (creciente o decreciente) o por fecha de la notificación (creciente o decreciente) de esta manera se recargará la página mostrando la lista en el orden deseado (Figura 6.47). El funcionamiento de la barra de búsqueda se puede apreciar en la figura 6.48. 111 Figura 6.47: Buscar sobre las notificaciones Figura 6.48: Fragmento de código - Buscar sobre las notificaciones 6.5 Módulo Información Médica 6.5.1 Añadir medicamento Tras iniciar sesión como administrador se muestra la pantalla principal del mismo y dentro de está se selecciona el botón “Lista Medicamentos”, donde se mostrará la lista de todos los medicamentos registrados en el sistema. Para añadir un medicamento se pulsa en el botón “Añadir Medicamento”, tras esto se mostrará un formulario a rellenar con todos los datos del medicamento (Figura 6.49) y en caso de que algún dato sea incorrecto se notificará y se indicará 112 para que se inscriba correctamente. Tras esto al pulsar el botón “Guardar” se redirigirá a la página de la lista de medicamentos donde se podrá observar la lista con el nuevo medicamento añadido. El fragmento de código que gestiona esta acción se puede ver en la figura 6.50. Figura 6.49: Añadir medicamento Figura 6.50: Fragmento de código - Añadir medicamento 6.5.2 Eliminar medicamento Tras iniciar sesión como administrador se muestra la pantalla principal y en ella se selecciona el botón “Lista Medicamentos”, donde se mostrará la lista de todos los medicamentos registrados 113 en el sistema, para eliminar un medicamento se pulsa en el botón “Borrar” en la fila del medicamento que se desee eliminar, tras esto se mostrará un mensaje de confirmación indicando si verdaderamente se desea eliminar el medicamento (Figura 6.51) y después de responder afirmativamente se recargará la página con el medicamento ya eliminado. El fragmento de código que realiza esta acción se puede ver en la figura 6.52. Figura 6.51: Eliminar medicamento Figura 6.52: Fragmento de código - Eliminar medicamento 114 6.5.3 Modificar medicamento Tras iniciar sesión como administrador se muestra la pantalla principal del mismo y dentro de está se selecciona el botón “Lista Medicamentos”, donde se mostrará la lista de todos los medicamentos registrados en el sistema. Para modificar un medicamento se pulsa en el botón “Modificar”, tras esto se mostrará un formulario con los campos que se deseen modificar y también unos campos que indiquen qué síntomas pueden llegar a cubrir este medicamento y aquellas enfermedades con las que no se debe recomendar el mismo (Figura 6.53). Por último tras guardar se redirigirá a la lista de medicamentos, con el nuevo medicamento ya modificado. El fragmento de código que realiza esta acción se puede ver en la figura 6.54. Figura 6.53: Modificar medicamento 115 Figura 6.54: Fragmento de código - Modificar medicamento 6.5.4 Ver medicamento Tras iniciar sesión como administrador se muestra la pantalla principal de este y dentro de la misma se selecciona el botón “Lista Medicamentos”, donde se mostrará la lista de todos los medicamentos registrados en el sistema. Para ver la información de un medicamento se pulsa en el botón “Detalles”, esto hará que se cargue la página de información del medicamento donde se podrá ver su nombre, una descripción de este, una foto y los síntomas que cubre, así como las enfermedades con las que no es conveniente recetar (Figura 6.55). El fragmento de código que realiza esta acción se puede ver en la figura 6.56. Figura 6.55: Ver medicamento 116 Figura 6.56: Fragmento de código - Ver medicamento 117 6.5.5 Añadir enfermedad Tras iniciar sesión como administrador se muestra la pantalla principal del administrador, dentro de está se selecciona el botón “Lista Enfermedades”, donde aparecerá la lista de todas las enfermedades registradas en el sistema. Para añadir una enfermedad se pulsa en el botón “Añadir Enfermedad”, tras esto se mostrará un formulario a rellenar con todos los datos de la misma (Figura 6.57), en caso de que algún dato sea incorrecto se notificará y se indicará para que se inscriba correctamente y tras esto al pulsar el botón de “Guardar” se redirigirá a la página de la lista de enfermedades donde se podrá observar la lista con la nueva enfermedad añadida. El fragmento de código que realiza esta acción se puede ver en la figura 6.58. Figura 6.57: Añadir enfermedad 118 Figura 6.58: Fragmento de código - Añadir enfermedad 6.5.6 Eliminar enfermedad Tras iniciar sesión como administrador se muestra la pantalla principal del mismo, dentro de esta se selecciona el botón “Lista Enfermedades”, donde se mostrará la lista de todas las enfermedades registradas en el sistema. Para eliminar una enfermedad se pulsa en el botón “Borrar” en la fila de la enfermedad que se desee eliminar, tras esto se mostrará un mensaje de confirmación indicando si verdaderamente se desea eliminar la enfermedad (Figura 6.59) y después de responder afirmativamente se recargará la página con la enfermedad ya eliminada. El fragmento de código que realiza esta acción se puede ver en la figura 6.60. 119 Figura 6.59: Eliminar enfermedad Figura 6.60: Fragmento de código - Eliminar enfermedad 6.5.7 Modificar enfermedad Tras iniciar sesión como administrador se muestra la pantalla principal de este y dentro de la pantalla se selecciona el botón “Lista Enfermedades”, donde se mostrará la lista de todos las enfermedades registradas en el sistema. Para modificar una enfermedad se pulsa en el botón 120 “Modificar”, tras esto se mostrará un formulario con los campos que se deseen modificar y también unos campos de síntomas, indicando cuales pueden llegar a producir esta enfermedad (Figura 6.61). Por último tras guardar se redirigirá a la lista de enfermedades, con la nueva enfermedad ya modificada. El fragmento de código que realiza esta acción se puede ver en la figura 6.62. Figura 6.61: Modificar enfermedad Figura 6.62: Fragmento de código - Modificar enfermedad 121 6.5.8 Ver enfermedad Tras iniciar sesión como administrador se muestra la pantalla principal del administrador, dentro de está se selecciona el botón “Lista Enfermedades”, donde se mostrará la lista de todas las enfermedades registradas en el sistema. Para ver la información de una enfermedad se pulsa en el botón “Información”, lo que hará que se cargue la página de información de la enfermedad donde se podrá ver su nombre, una descripción de esta y qué síntomas produce (Figura 6.63). La figura 6.64 muestra el código correspondiente al guardado de la vista de la enfermedad. Figura 6.63: Ver enfermedad 122 Figura 6.64: Fragmento de código - Ver enfermedad 123 6.5.9 Añadir síntoma Tras iniciar sesión como administrador se muestra la pantalla principal del administrador dentro de está se selecciona el botón “Lista Síntomas”, donde se mostrará la lista de todos los síntomas registrados en el sistema. Para añadir un síntoma se pulsa en el botón “Añadir síntoma”, tras esto se mostrará un formulario a rellenar con todos los datos del mismo (Figura 6.65). En caso de que algún dato sea incorrecto se notificará y se indicará para que se inscriba correctamente y tras esto al pulsar el botón de “Guardar” se redirigirá a la página de la lista de síntomas donde se podrá observar la lista con el nuevo síntoma añadido. La figura 6.66 muestra el código correspondiente al guardado del nuevo síntoma. Figura 6.65: Añadir síntoma 124 Figura 6.66: Fragmento de código - Añadir síntoma 6.5.10 Eliminar síntoma Tras iniciar sesión como administrador se muestra la pantalla principal del administrador dentro de está se selecciona el botón “Lista Síntomas”, donde se mostrará la lista de todos los síntomas registrados en el sistema. Para eliminar un síntoma se pulsa en el botón “Borrar” en la fila del síntoma que se desee eliminar, tras esto se mostrará un mensaje de confirmación indicando si verdaderamente se desea eliminar el síntoma (Figura 6.67) y después de responder afirmativamente se recargará la página con el síntoma ya eliminado. La figura 6.68 muestra el código correspondiente a la eliminación de un síntoma. 125 Figura 6.67: Eliminar síntoma Figura 6.68: Fragmento de código - Eliminar síntoma 6.5.11 Ver síntoma Tras iniciar sesión como administrador se muestra la pantalla principal del administrador dentro de está se selecciona el botón “Lista Síntomas”, donde se mostrará la lista de todos los síntomas registrados en el sistema. Para ver la información de un síntoma se pulsa en el botón “Información”, lo que hará que se cargue la página de información del síntoma donde se podrá 126 ver su nombre y una descripción de este (Figura 6.69). El fragmento de código que realiza esta acción se puede ver en la figura 6.70. Figura 6.69: Ver síntoma Figura 6.70: Fragmento de código - Ver síntoma 127 Capítulo 7 Evaluación de la aplicación En el presente capítulo, se explica la evaluación realizada sobre la aplicación. Se presenta el desarrollo del cuestionario y los resultados obtenidos del mismo. 7.1 Diseño de la evaluación Para realizar una correcta evaluación se ha creado un formulario con la herramienta Google Forms[42] que permite recopilar toda la información de los distintos usuarios que realicen el formulario. El formulario tiene como objetivo conocer la opinión de un grupo de usuarios sobre ciertos aspectos de la aplicación tras haber realizado una prueba sobre la misma, teniendo que realizar una serie de actividades para tener una visión completa de la prueba. Tras esto, primero se decide hacer una serie de preguntas para poder evaluar al grupo de usuarios con el que se está tratando, analizando su edad, experiencia laboral, género, etc. Posteriormente se realizan una serie de preguntas respecto al nivel de satisfacción con la aplicación y distintos aspectos de la misma. 7.2 Resultados de la evaluación A continuación se muestran los resultados de la encuesta realizada. Las primeras cuestiones permiten obtener información respecto al tipo de población que ha realizado la prueba de la aplicación. Como se puede observar en la Figura 7.1 se aprecia una mayoría de gente joven de entre 20 y 30 años, seguidos de gente de mayor edad , entre 30 y 40 años y por último una minoría que abarca desde los 40 años hasta la edad de jubilación. 128 Figura 7.1: Respuesta a la encuesta: Edad En la figura 7.2 se muestra como la prueba ha sido realizada por una mayoría de mujeres. Figura 7.2: Respuesta a la encuesta: ¿Cómo te identificas? Dentro de la población que ha realizado esta prueba según la figura 7.3 la mayoría de personas trabajan en un hospital y el resto en un centro clínico. 129 Figura 7.3: Respuesta a la encuesta: ¿Cuál es su lugar de trabajo? Se presenta una gráfica idéntica a la gráfica de edad, preguntando por los años laborales de experiencia como médico, como se puede ver en la figura 7.4 indicando que son datos proporcionales entre ellos. Figura 7.4: Respuesta a la encuesta: Experiencia laboral Todas las personas que realizaron la prueba afirman que tienen experiencia utilizando sistemas de gestión de pacientes debido a su profesión. 130 Los encuestados indican en su gran mayoría, en mayor o menor medida, estar satisfechos con la aplicación según la figura 7.5, donde se puede observar un gran recibimiento de esta con 11/15 personas valorando con el máximo nivel. Figura 7.5: Respuesta a la encuesta: Satisfacción con la aplicación Por otra parte los usuarios no han encontrado a rasgos generales una gran dificultad a la hora de utilizar la aplicación según indica la figura 7.6 donde el 93,4% de los encuestados ha considerado los valores de dificultad más bajos, pero si existe un 6,7% que ha encontrado cierta dificultad a la hora de usarlo, algo que puede deberse a que entre los usuarios de prueba se encontraba gente de mayor edad. 131 Figura 7.6: Respuesta a la encuesta: Grado de dificultad de la aplicación La mayoría indica que está satisfecha con todas las necesidades cubiertas por la aplicación a la hora de poder gestionar pacientes, juntando el 100% de los votos entre los dos valores más altos tal y como indica la figura 7.7. Figura 7.7: Respuesta a la encuesta: Cobertura de la gestión de pacientes 132 También se puede ver cómo casi por unanimidad pudieron completar todas las tareas que fueron asignadas previo a la realización de la encuesta como indica la figura 7.8 y se pudieron en su mayoría completar de forma rápida y eficiente también por una amplia mayoría como indican las figuras 7.9 y 7.10 respectivamente. Figura 7.8: Respuesta a la encuesta: Finalización satisfactoria de las tareas Figura 7.9: Respuesta a la encuesta: Finalización de tareas de forma rápida 133 Figura 7.10: Respuesta a la encuesta: Finalización de tareas de forma eficiente Todos los usuarios que han probado la aplicación están satisfechos con el sistema de recomendación creado como así demuestra la figura 7.11 Figura 7.11: Respuesta a la encuesta: Satisfacción con el algoritmo de recomendación 134 Los usuarios han valorado de manera positiva la aparición de mensajes de información y error, que les han ayudado a solucionar cualquier tipo de problema tal y como se indica en la figura 7.12. Figura 7.12: Respuesta a la encuesta: Satisfacción con los mensajes de error e información La gran mayoría de los usuarios considera que ha sido fácil el aprendizaje de la aplicación según la figura 7.13, y también les resultaban intuitivos los distintos iconos y botones desplegados por toda la aplicación como se aprecia en la figura 7.14. Figura 7.13: Respuesta a la encuesta: Facilidad en el aprendizaje de la aplicación 135 Figura 7.14: Respuesta a la encuesta: Satisfacción con los elementos visuales Respecto a la información mostrada sobre los pacientes y registros los usuarios consideran que fue suficiente según la figura 7.15, aunque se puede observar en la figura 7.16 que los niveles de satisfacción no son tan unánimes respecto a resultados anteriores, en este caso podemos observar una menor cantidad de votaciones al 5 y alguna votación 3. 136 Figura 7.15: Respuesta a la encuesta: Suficiencia en la información de los pacientes Figura 7.16: Respuesta a la encuesta: Suficiencia en la información de los registros La mayoría de personas han llegado a la conclusión de que esta aplicación les permitiría ser más productivos a la hora de gestionar pacientes, ya que según vemos en la figura 7.17 las votaciones rondan los dos valores más altos indicando que están de acuerdo con la afirmación. Figura 7.17: Respuesta a la encuesta: Productividad para gestionar pacientes 137 Capítulo 8 Conclusiones y trabajo futuro 8.1 Conclusiones En este proyecto se ha desarrollado una aplicación web cuyo fin es el de ayudar a un médico en la gestión de sus pacientes, para ello se implementó una serie de funcionalidades que le permitieran ayudarle en esta tarea, entre ellas se ha desarrollado una herramienta para la administración de pacientes, el añadido, borrado o modificación de los mismos y de todos sus datos. También se diseñó un sistema por el que se dispone del historial clínico de cada paciente, donde se pueden observar todos los registros que ha tenido a lo largo del tiempo, añadir, eliminar y modificar registros y dentro de cada uno de estos se puede observar los síntomas que presentó el paciente en su momento, una serie de enfermedades que sugiere el sistema que puede llegar a padecer y los medicamentos adecuados para recetar en caso de tener esos síntomas. Este algoritmo de recomendación trata de sugerir una serie de enfermedades que puede padecer el paciente en base a los síntomas que presenta en un registro, a su vez se recomienda una serie de medicamentos para tratar estos síntomas y que estos medicamentos puedan ser recetados para los pacientes que ya padecen algún tipo de enfermedad indicada en los datos de este. Dispone de un sistema de gestión de notificaciones y citas para poder tener un registro de próximos eventos a ocurrir dentro del centro. 138 Por último se implementó un usuario administrador encargado de la gestión de ciertos campos de la base de datos para poder mantener el sistema recomendador funcionando de manera eficiente y con una gran cantidad de datos. 8.2 Trabajo futuro Pese a que se han cumplido todos los objetivos establecidos al principio del desarrollo de este proyecto, sí que existen ciertas funcionalidades que se descartaron o dejaron en el tintero, ya sea por su complejidad o falta de tiempo. También existen una serie de implementaciones que fueron surgiendo a medida que avanzaba el proyecto pero acabaron por no realizarse. Estas se exponen a continuación. ● Mejorar el algoritmo de recomendación: Actualmente el algoritmo cumple a la perfección todos sus requerimientos, pero este puede mejorar su eficiencia, aparte el objetivo sería que tuviese un sistema de aprendizaje automático, de esta manera el algoritmo mejoraría considerablemente. ● Buscar una API para enfermedades/medicamentos: De este modo se tendría una base de datos más completa y actualizada, lo que haría que el algoritmo de recomendación mejorase. ● Implementación para distintos idiomas en la interfaz: La interfaz que se ha creado y los datos dentro de la base están totalmente en castellano pero de cara a un futuro el objetivo sería que la interfaz y estos datos pudiesen estar en numerosos lenguajes de tal manera que pudiese hacer la aplicación más accesible a todo el mundo. ● Integración con sistemas de laboratorios. De esta manera el sistema podrá obtener resultados de exámenes y pruebas realizadas a los pacientes de forma automática, tener acceso y gestionar estos. ● Generación de reportes y estadísticas. Principalmente focalizados en complementar las recomendaciones de medicamentos, proporcionando información sobre la eficacia del tratamiento a los pacientes. 139 ● Integración con seguros médicos. Con el fin de obtener información sobre la cobertura de ciertos tratamientos para cada paciente. 140 Chapter 8 Conclusions and future work 8.1 Conclusions In this project we have developed a web application whose purpose is to help a doctor in the management of his patients, for this a series of functionalities were implemented to help him in this task, among them we have developed a tool for the administration of patients, the addition, deletion or modification of them and all their data. A system was also designed to provide the clinical history of each patient, where you can see all the records he/she has had over time, add, delete and modify records and within each of these you can see the symptoms that the patient presented at the time, a series of diseases that the system suggests he/she may suffer from and the appropriate drugs to prescribe in case he/she has those symptoms. This recommendation algorithm aims to suggest a series of diseases that the patient may suffer from based on the symptoms presented in a record. At the same time, it recommends a series of medications to treat these symptoms and which can be prescribed for patients who already suffer from any type of disease indicated in their data. It has a notification and appointment management system to keep a record of upcoming events within the medical center. Finally, an administrator user was implemented to manage certain fields in the database in order to keep the recommendation system running efficiently with a large amount of data. 141 8.2 Future work Although all the objectives established at the beginning of the development of this project have been fulfilled, there are certain functionalities that were discarded or left unexplored, either due to their complexity or lack of time. There were also a series of implementations that emerged as the project progressed but ultimately did not materialize. These are outlined below. ● Improving the recommendation algorithm: Currently, the algorithm meets all its requirements perfectly, but it can be made more efficient. Additionally, the goal would be to implement a machine learning system to significantly improve the algorithm. ● Finding an API for diseases/medications: This would provide a more complete and up-to-date database, which would improve the recommendation algorithm. ● Implementation for different languages in the interface: While the interface and data in the database are currently only in Spanish, in the future, the goal would be to have the interface and data available in multiple languages to make the application more accessible to everyone. ● Integration with laboratory systems: This would enable the system to automatically obtain results of exams and tests performed on patients and manage this information. ● Generation of reports and statistics: These would complement medication recommendations, providing information on the effectiveness of treatment for patients. ● Integration with medical insurance companies: This would provide information on the coverage of certain treatments for each patient. 142 BIBLIOGRAFÍA [1] Diagrama de Gantt: https://www.atlassian.com/es/agile/project-management/gantt-chart [2] Github: https://github.com/ [3] Vithas: https://vithas.es/ [4] Dricloud: https://dricloud.com/ [5] Clinic Cloud: https://app.clinic-cloud.com/login.php [6] EsiClinic: https://esiclinic.com/ [7] HTML5: https://lenguajehtml.com/html/ [8] HTML: https://es.wikipedia.org/wiki/HTML [9] CSS3: https://openwebinars.net/blog/que-es-css3/ [10] CSS: https://lenguajecss.com/css/ [11] XML: https://es.wikipedia.org/wiki/Extensible_Markup_Language [12] Bootstrap: https://getbootstrap.com/ [13] JavaScript: https://es.wikipedia.org/wiki/JavaScript [14] Spring: https://spring.io/ [15] Java: https://www.java.com/es/ [16] ApiRest: https://www.redhat.com/es/topics/api/what-is-a-rest-api [17] Hibernate: https://hibernate.org/ [18] ORM: https://www2.deloitte.com/es/es/pages/technology/articles/que-es-orm.html [19] SQL: https://es.wikipedia.org/wiki/SQL [20] MySQL: https://www.mysql.com/ 143 https://www.atlassian.com/es/agile/project-management/gantt-chart https://github.com/ https://vithas.es/ https://dricloud.com/ https://app.clinic-cloud.com/login.php https://esiclinic.com/ https://lenguajehtml.com/html/ https://es.wikipedia.org/wiki/HTML https://openwebinars.net/blog/que-es-css3/ https://lenguajecss.com/css/ https://es.wikipedia.org/wiki/Extensible_Markup_Language https://getbootstrap.com/ https://es.wikipedia.org/wiki/JavaScript https://spring.io/ https://www.java.com/es/ https://www.redhat.com/es/topics/api/what-is-a-rest-api https://hibernate.org/ https://www2.deloitte.com/es/es/pages/technology/articles/que-es-orm.html https://es.wikipedia.org/wiki/SQL https://www.mysql.com/ [21] React: https://es.reactjs.org/ [22] Axios: https://axios-http.com/es/docs/intro [23] HTTP: https://developer.mozilla.org/es/docs/Web/HTTP [24] JSON: https://www.json.org/json-es.html [25] Visual Studio Code: https://code.visualstudio.com/ [26] Microsoft: https://www.microsoft.com/es-es [27] Git: https://git-scm.com/ [28] MySQL Workbench: https://www.mysql.com/products/workbench/ [29] Trello: https://trello.com/es [30] Lint: https://es.wikipedia.org/wiki/Lint [31] Components: https://legacy.reactjs.org/docs/components-and-props.html [32] Service: https://www.arquitecturajava.com/spring-service-usando-el-patron-servicio/ [33] Repository: https://www.digitalocean.com/community/tutorials/spring-repository-annotation [34] Cliente-Servidor: https://www.geeksforgeeks.org/client-server-model/ [35] MVC: https://developer.mozilla.org/en-US/docs/Glossary/MVC [36] Patrón Repository: medium.com/@pererikbergman/repository-design-pattern-e28c0f3e4a30 [37] Factory: https://refactoring.guru/design-patterns/factory-method [38] Dao: https://www.baeldung.com/java-dao-pattern [39] CRUD: https://developer.mozilla.org/es/docs/Glossary/CRUD [40] Modelo E-R: https://www.geeksforgeeks.org/introduction-of-er-model/ [41] Controller: https://www.baeldung.com/spring-controllers [42] Google Forms: https://docs.google.com/forms/ 144 https://es.reactjs.org/ https://axios-http.com/es/docs/intro https://developer.mozilla.org/es/docs/Web/HTTP https://www.json.org/json-es.html https://code.visualstudio.com/ https://www.microsoft.com/es-es https://git-scm.com/ https://www.mysql.com/products/workbench/ https://trello.com/es https://es.wikipedia.org/wiki/Lint https://legacy.reactjs.org/docs/components-and-props.html https://www.arquitecturajava.com/spring-service-usando-el-patron-servicio/ https://www.digitalocean.com/community/tutorials/spring-repository-annotation https://www.geeksforgeeks.org/client-server-model/ https://developer.mozilla.org/en-US/docs/Glossary/MVC https://medium.com/@pererikbergman/repository-design-pattern-e28c0f3e4a30 https://refactoring.guru/design-patterns/factory-method https://www.baeldung.com/java-dao-pattern https://developer.mozilla.org/es/docs/Glossary/CRUD https://www.geeksforgeeks.org/introduction-of-er-model/ https://www.baeldung.com/spring-controllers https://docs.google.com/forms/ Anexo A Guía de uso En el siguiente anexo se presenta un pequeño manual de usuario muy visual para que se pueda entender de forma total el uso de la aplicación web. A.1 Inicio de la aplicación Al iniciar la aplicación lo primero que nos encontramos es la pantalla de inicio de sesión, si se trata de un usuario sin registrar se debe pulsar en el botón “Regístrate” que te llevará al formulario a rellenar para crear un nuevo usuario como se indica en la Figura A.1. Tras pulsar el botón “Registrar” te remite a la pantalla anterior con una notificación indicando el nuevo usuario añadido. Para iniciar sesión se deben insertar las correspondientes credenciales y al pulsar el botón de “Iniciar” se mostrará la pantalla principal de la aplicación como muestra la Figura A.2. Si se desea cerrar sesión sólo se debe pulsar el botón de “Cerrar sesión” que se encuentra en la parte derecha de la cabecera. Para comprobar los datos del usuario se debe pulsar en la imagen que se muestra en la parte derecha de la cabecera, al pulsar en ella se redirigirá a la pantalla del perfil de usuario, si se desea realizar cualquier tipo de cambio en los datos del usuario se debe pulsar el botón “Modificar datos” donde se mostrará el formulario con los datos nuevos que se desean y al pulsar aceptar se verán los nuevos datos modificados como se muestra en la Figura A.3. En caso de querer eliminar al usuario solo se debe pulsar el botón “Eliminar usuario”. 145 Figura A.1: Diagrama de flujo de Registrar usuario 146 Figura A.2: Diagrama de flujo de Iniciar sesión 147 Figura A.3: Diagrama de flujo de Vista datos usuario A.2 Gestión de pacientes En la página principal de la aplicación tras haber hecho login se puede observar la lista de todos los pacientes asignados al médico y, si se desea añadir un nuevo paciente solo se debe pulsar el botón “Añadir paciente” tras esto se mostrará el formulario con los datos a rellenar del nuevo paciente y, una vez rellenados se pulsa en el botón “Añadir” que mostrará de nuevo la página principal con el nuevo paciente incorporado como se muestra en la figura A.4. 148 En caso de que se desee eliminar un paciente solo se debe pulsar el botón “Borrar” en la fila del paciente que se desee borrar. Para buscar un paciente solo se debe usar la barra buscadora e insertar el DNI del paciente y a medida que se van sugiriendo resultados del mismo, se debe seleccionar el DNI del paciente deseado como se indica en la figura A.5. Para modificar los datos de un paciente se pulsará en el botón “Modificar”, que mostrará el formulario con los nuevos datos a rellenar, tras cumplimentarlos se pulsará el botón “Guardar” y se mostrará la pantalla principal de la aplicación con los datos del paciente modificados que podemos comprobar pulsando el botón “Ver perfil”, donde se mostrarán los datos del paciente como se muestra en la Figura A.6. 149 Figura A.4: Diagrama de flujo de Añadir paciente 150 Figura A.5: Diagrama de flujo de Búsqueda y borrador de paciente Figura A.6: Diagrama de flujo de Modificar paciente: 151 A.3 Gestión de historiales clínicos Dentro del perfil de un paciente se puede acceder a su historial clínico pulsando el botón “Ver historial clínico” donde se nos mostrará la lista de todos los registros que figuran del paciente. Si se desea añadir un nuevo registro al paciente solo se debe pulsar el botón “Añadir registro”,tras esto se mostrará el formulario con los datos a rellenar del nuevo registro y una vez rellenados se pulsa en el botón “Añadir” que mostrará de nuevo el historial clínico del paciente con el nuevo registro añadido como se muestra en la figura A.7. Figura A.7: Diagrama de flujo de Añadir registro En caso de que se desee eliminar un registro del paciente solo se debe pulsar el botón “Borrar” en la fila del registro que se desee , para buscar un registro solo se debe usar la barra buscadora e insertar la fecha del registro y seleccionar la fecha del registro deseada como se indica en la figura A.8. Figura A.8: Diagrama de flujo de Borrado y búsqueda de registro 152 Para modificar los datos de un registro se pulsará en el botón “Modificar” que mostrará el formulario con los nuevos datos a rellenar donde se pueden añadir nuevos síntomas que puede presentar; tras rellenarlos se pulsará el botón “Guardar” y se mostrará el historial clínico del paciente con el registro modificado, para comprobarlo se pulsa en el botón “Ver registro” que mostrará los datos del registro de ese día donde figuran los síntomas presentados por el paciente, las enfermedades que se sugieren que puede padecer y los medicamentos que se recomiendan para estos como se muestra en la Figura A.9. Figura A.9: Diagrama de flujo de Modificar registro 153 A.4 Administración de citas y notificaciones En la página principal de la aplicación tras haber hecho login se puede observar el botón “Lista citas” donde tras pulsarlo se muestra el listado completo de todas las citas de los distintos pacientes asignadas al médicos y si se desea añadir un nueva cita solo se debe pulsar el botón “Añadir cita” tras esto se mostrará el formulario con los datos a rellenar de la misma y, una vez rellenados se pulsa en el botón “Añadir” que mostrará de nuevo la lista de citas con la nueva cita incorporada como indica la figura A.10. Figura A.10: Diagrama de flujo de Añadir cita En caso de que se quiera borrar alguna cita solo se debe pulsar el botón “Borrar” en la fila de la cita que se desee borrar y si se quiere buscar alguna cita en concreto se puede hacer utilizando la barra “Ordenar por” de la derecha que permite ordenar la lista mostrada según el criterio deseado como se muestra en la figura A.11. 154 Figura A.11: Diagrama de flujo de Borrado y ordenado de citas En la página principal de la aplicación tras haber hecho login también se puede observar otro botón “Lista notificaciones” donde tras pulsarlo se muestra el listado completo de todas las notificaciones de los distintos pacientes asignadas al médicos. Si se desea añadir un nueva notificación solo se debe pulsar el botón “Añadir notificación”, tras esto se mostrará el formulario con los datos a rellenar de la nueva notificación y una vez rellenados se pulsa en el botón “Añadir” que mostrará de nuevo la lista de notificaciones con la nueva notificación añadida como indica la figura A.12. 155 Figura A.12: Diagrama de flujo de Añadir notificación En caso de querer borrar alguna notificación solo se debe pulsar el botón “Borrar” en la fila de la notificación que se desea eliminar. Si se desea buscar alguna notificación en concreto puede hacerse utilizando la barra “Ordenar por” de la derecha que permite ordenar la lista mostrada según el criterio deseado como se muestra en la figura A.13. Figura A.13: Diagrama de flujo de Borrado y ordenación de notificaciones 156 A.5 Gestión de información médica Si se inicia sesión siendo administrador la pantalla principal cambiará un poco ya que se mostrará el menú del administrador donde gestiona toda la información almacenada en la base de datos que ayuda a un correcto funcionamiento del sistema de recomendación. En el menú del administrador se puede observar el botón “Lista Enfermedades” donde tras pulsarlo se muestra el listado completo de todas las enfermedades registradas en el sistema. Si se desea añadir una nueva enfermedad solo se debe pulsar el botón “Añadir Enfermedad”y tras esto se mostrará el formulario con los datos a rellenar de la misma y, una vez rellenados se pulsa en el botón “Añadir” que mostrará de nuevo la lista de enfermedades ya con la nueva incorporada como indica la figura A.14, en caso de que se quiera borrar alguna enfermedad solo se debe pulsar el botón “Borrar” en la fila de la enfermedad. 157 Figura A.14: Diagrama de flujo de Añadir enfermedad Para modificar una enfermedad se debe pulsar el botón “Modificar” en la fila de la enfermedad que se desea modificar y se mostrará el formulario con los nuevos datos a rellenar y los distintos síntomas que producen la misma, ,tras esto se pulsa el botón de “Guardar” y se mostrará la lista 158 con la enfermedad actualizada, si se quiere comprobar se puede ver los detalles de esta pulsando el botón “Información” como se muestra en la Figura A.15. Figura A.15 : Diagrama de flujo de Modificar enfermedad En el menú del administrador se puede observar el botón “Lista Medicamentos”, donde tras pulsarlo se muestra el listado completo de todas los medicamentos registrados en el sistema y si se desea añadir un nuevo medicamento sólo se debe pulsar el botón “Añadir Medicamento”. Tras esto se mostrará el formulario con los datos a rellenar del nuevo medicamento y una vez cumplimentados se pulsa en el botón “Añadir” que mostrará de nuevo la lista de medicamentos con el nuevo medicamento añadido.En caso de querer borrar alguno sólo se debe pulsar el botón “Borrar” en la fila del medicamento como indica la figura A.16. 159 Figura A.16 : Diagrama de flujo de Añadir Medicamento Para modificar un medicamento se debe pulsar el botón “Modificar” en la fila del medicamento que se desea modificar y se mostrará el formulario con los nuevos datos a rellenar, con los distintos síntomas que se deseen que cubra y las enfermedades con las que no se aconseja tomar. 160 Tras esto se pulsa el botón de “Guardar” y se mostrará la lista con el medicamento actualizado y si se quiere comprobar se puede ver los detalles de esta pulsando el botón “Información” como se muestra en la Figura A.17. Figura A.17 : Diagrama de flujo de Modificar medicamento En el menú del administrador se puede observar el botón “Lista Síntomas” donde tras pulsarlo se muestra el listado completo de todas los síntomas registrados en el sistema y, si se desea añadir un nuevo síntoma sólo se debe pulsar el botón “Añadir Síntoma” tras esto se mostrará el formulario con los datos a rellenar del nuevo síntoma y una vez rellenados se pulsa en el botón “Añadir” el cual mostrará de nuevo la lista de síntomas con el nuevo síntoma añadido, en caso de 161 que se quiera borrar algún síntoma sólo se debe pulsar el botón “Borrar” en la fila del síntoma como se muestra en la figura A.18. Figura A.18 : Diagrama de flujo de Añadir síntoma 162