Skip to content

Latest commit

 

History

History
230 lines (184 loc) · 12.2 KB

README.md

File metadata and controls

230 lines (184 loc) · 12.2 KB

MediAPP

Este es un proyecto de fin de ciclo desarrollado por Alberto Martínez Pérez y Rafael Romero Roibu utilizando las tecnologías Angular 17.3.10 para el frontend, Node.JS 20.14 para el backend y MySQL para la base de datos.

Nuestro frontend se encarga de la interfaz de usuario y la comunicación con el backend a través de peticiones HTTP. El backend por su parte es el encargado de llevar a cabo toda la lógica de negocio así como la comunicación con la base de datos comportándose como una API REST.

El proyecto ha sido desarrollado en el marco del Ciclo Formativo de Grado Superior de Desarrollo de Aplicaciones Web en el IES Luis Braille de Coslada (Madrid).

Tabla de Contenidos

Descripción

MediAPP se trata de una aplicación web de gestión de historiales clínicos para pacientes y especialistas médicos. La aplicación está dividida en tres roles: pacientes, especialistas y administradores. Cada uno de ellos tiene diferentes funcionalidades y permisos en la aplicación.

El propósito principal de la aplicación es ayudar a los especialistas médicos a gestionar sus pacientes y sus historiales clínicos, así como para permitir a los pacientes acceder a sus historiales clínicos y guardar un registro de las mediciones de glucosa y tensión arterial que se realicen en su domicilio.

Tecnologías Utilizadas

Tipo Tecnologías
Frontend Angular TypeScript HTML5
Plantillas Handlebars
Estilos Bootstrap SCSS
Backend Node.js Express.js
Base de Datos MySQL PL/SQL
Control de Versiones Git GitHub
Autenticación JWT
Documentación Swagger JSDoc
Pruebas Supertest Chai Mocha

Paquetes y librerías utilizadas

Frontend:

  • @popperjs/core: Librería que permite la gestión de popovers y tooltips.
  • @types/file-saver: Tipado de TypeScript para la librería FileSaver.
  • @auth0/angular-jwt: Librería que permite la gestión de tokens JWT en Angular.
  • bootstrap: Framework de CSS que permite la creación de interfaces web.
  • bootstrap-icons: Librería que proporciona iconos de Bootstrap.
  • file-saver: Librería que permite la descarga de archivos desde el navegador.
  • jquery: Librería de JavaScript que permite la manipulación del DOM.
  • ng-bootstrap: Librería que permite la integración de Bootstrap en Angular.
  • ng-select2-component: Componente de Angular que permite la integración de la librería Select2 para la creación de elementos select con barra de búsqueda.
  • ngx-pagination: Componente de Angular que permite la paginación de elementos.
  • ngx-quill: Componente de Angular que permite la integración del editor de texto Quill.
  • sweetalert2: Librería que permite la creación de alertas personalizadas.

Backend:

  • bcryptjs: Librería cuya finalidad es el cifrado de contraseñas.
  • chai: Framework de aserciones que permite realizar pruebas unitarias.
  • cors: Middleware de Express.js que permite habilitar CORS (Cross-Origin Resource Sharing) con varias opciones.
  • date-fns: Librería que permite trabajar con fechas en JavaScript.
  • dotenv: Librería que permite cargar variables de entorno desde un archivo .env.
  • express: Framework de Node.js que permite crear aplicaciones web y APIs.
  • express-validator: Middleware de Express.js que permite validar y limpiar datos de entrada.
  • handlebars: Motor de plantillas que permite la generación de HTML dinámico.
  • html-sanitizer: Librería que permite la limpieza de código HTML.
  • jsdoc: Herramienta que permite la generación de documentación JSDoc.
  • jsonwebtoken: Librería que permite la generación y verificación de tokens JWT.
  • mocha: Framework de pruebas para Node.js.
  • moment-timezone: Librería que permite trabajar con fechas y horas en diferentes zonas horarias.
  • morgan: Middleware de Express.js que permite la generación de logs de peticiones HTTP.
  • mysql2: Librería que permite la conexión a bases de datos MySQL.
  • nodemailer: Librería que permite enviar correos electrónicos desde Node.js.
  • puppeteer: Librería que permite la generación de PDFs a partir de páginas web.
  • qrcode: Librería que permite la generación de códigos QR.
  • rotating-file-stream: Librería que permite la rotación de archivos de logs.
  • supertest: Librería que permite realizar pruebas de integración en Node.js.
  • swagger-jsdoc: Librería que permite la generación de documentación Swagger.
  • swagger-ui-express: Middleware de Express.js que permite la visualización de documentación Swagger en una interfaz de usuario.

Características principales

  • Pacientes: Los pacientes pueden registrarse, iniciar sesión, restablecer su contraseña y actualizar su contraseña. También pueden solicitar cita con los especialistas, ver su historial clínico y añadir mediciones de glucosa y tensión arterial.
  • Especialistas: Los especialistas pueden iniciar sesión, restablecer su contraseña y actualizar su contraseña. Además, pueden ver las citas que tienen pendientes, ver los pacientes que tienen asignados y ver los historiales clínicos de los pacientes.
  • Administradores: Los administradores pueden iniciar sesión, restablecer su contraseña y actualizar su contraseña. Así mismo, pueden ver los especialistas y pacientes registrados en la aplicación, así como las especialidades médicas que se encuentran disponibles. Pueden realizar tareas de administración de los diferentes tipos de usuarios y de las especialidades médicas.

Requisitos para Instalar y Ejecutar el Proyecto

Para ejecutar este proyecto, necesitarás tener instalado lo siguiente en tu máquina:

  • Node.js: Es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome. Puedes descargarlo aquí.

  • NPM: Es el administrador de paquetes por defecto para Node.js. Se instala junto con Node.js.

  • Angular CLI: Es una herramienta de línea de comandos que te permite crear y gestionar aplicaciones Angular. Puedes instalarlo globalmente en tu máquina con el comando:

    npm install -g @angular/cli
    
  • MySQL: Es un sistema de gestión de bases de datos relacional. Puedes descargarlo aquí.

Además, necesitarás tener una copia del código fuente. Puedes obtenerla clonando este repositorio de GitHub.

Cómo Instalar y Ejecutar el Proyecto

  1. Clona el repositorio a tu máquina local.

    git clone https://github.com/BertoMP/mediapp.git
    
  2. Abre MySQL Workbench y ejecuta los diferentes scripts .sql del directorio /database para crear la base de datos.

  3. Una vez en el directorio principal, utilizar una terminal para navegar hasta el directorio del servidor:

    cd ./server
    
  4. Para instalar las dependencias del proyecto en el lado del servidor ejecuta.

    npm install
    
  5. A continuación iniciar el servidor en modo producción.

    npm run start
    
  6. Abre una nueva terminal en el directorio raíz y navega hasta el directorio del cliente:

    cd ./frontend
    
  7. Para instalar las dependencias del proyecto en el lado del cliente.

    npm install
    
  8. Ejecuta el servidor del cliente para iniciar la aplicación.

    ng serve --port 4200
    

    Advertencia: En caso de utilizar otro puerto para el servidor del cliente, el servidor del backend no podrá comunicarse con el cliente ya que ocurrirá un error de CORS. Para solucionar este problema, se debe modificar el archivo .env en el directorio server y cambiar la configuración de CORS para que permita comunicación el puerto de tu elección.

  9. Abre un navegador web y navega a http://localhost:4200/ para ver la aplicación.

  10. Para acceder a la documentación Swagger UI de la API REST, navega a http://localhost:3000/api-docs.

  11. Para acceder a la documentación JSDoc, navega a http://localhost:3000/docs.

Capturas de pantalla

Especialidades Médicas

Pantalla de Inicio de Sesión

Listado de Usuarios Registrados

Proceso de Toma de Tensión Arterial

Listado de Citas Médicas

Listado de Resultados de Glucometrías

Ejemplo de Ventana Modal

Ejemplo de asignación de toma a paciente

Ejemplo vista chatbot

Vista de logs de errores

Documentación de API con Swagger

Documentación de Código con JSDoc

Licencia

Este proyecto está licenciado bajo los términos de la licencia GNU GPLv3.

Versiones

  • v1.0.0: Versión inicial del proyecto.