Skip to content

Equipo 3: Álvaro Bernal y Adrián Romero

adrián romero edited this page Jan 8, 2025 · 14 revisions

Leyenda de Equipos:

  • Equipo 1: Antonio Rodríguez Ruiz y Álvaro González Frías
  • Equipo 2: María García Cáceres y Manuel Sánchez Jiménez
  • Equipo 3: Álvaro Bernal Caunedo y Adrián Romero Flores
  • Equipo 4: Carlos Baquero Villena y Aitor Rodríguez Dueñas
  • Equipo 5: Daniel Arriaza Arriaza y Rafael González Castillero

Nivel de acabado

Categoria Nivel de Acabado 1-10
Microservicio Individual (Appointments + Workshifts) Avanzado 10
Aplicación Completa Avanzado 10

En concreto, por el esfuerzo realizado y por la ayuda prestada al resto del equipo considero que mis compañeros Adrián Romero Flores y Antonio Rodríguez Ruíz deberían ser puntuados con la mejor nota posible.

Descripción de la aplicación

CloudMedix es una aplicación de consultoría médica diseñada para gestionar de manera eficiente los procesos relacionados con una clínica o sistema de salud mediante una arquitectura basada en microservicios. Cada microservicio tiene una funcionalidad específica, como la autenticación de usuarios, gestión de pagos, notificaciones, historial clínico, turnos laborales, y citas médicas.

La aplicación permite a los usuarios realizar operaciones críticas como programar citas, gestionar datos de pacientes y personal, y procesar pagos, garantizando modularidad, escalabilidad y facilidad de mantenimiento. Además, incluye un sistema de registro de eventos para el monitoreo y auditoría de las operaciones realizadas.

Descripción del API Rest

Appointments

Descripción general

El API REST de Appointment Service está diseñado para gestionar citas médicas. Proporciona funcionalidades como la creación, actualización, cancelación y consulta de citas, además de permitir verificar la disponibilidad de horarios y consultar detalles relacionados, como el clima para una cita específica.

Endpoints principales

  1. GET /appointments
    Función: Recuperar todas las citas registradas en el sistema.

  2. POST /appointments
    Función: Crear una nueva cita con detalles especificados.

  3. GET /appointments/available
    Función: Consultar horarios disponibles para un médico en una fecha específica. Características avanzadas (opcional):

    • Petición asíncrona mediante un patrón "Materialized View" con rabbitMQ.
    • Comunicación con otros microservicios comprobar la disponibilidad en tiempo real (En concreto, con el microservicio de Workshifts).
  4. GET /appointments/{id}
    Función: Recuperar los detalles de una cita específica por ID.

  5. PUT /appointments/{id}
    Función: Actualizar detalles de una cita específica por ID.

  6. PUT /appointments/{id}/cancel
    Función: Cancelar una cita específica cambiando su estado a "cancelled".

  7. GET /appointments/{id}/weather
    Función: Obtener el pronóstico del clima para la fecha y ubicación de una cita específica.
    Características avanzadas (opcional):

    • Comunicación con API externas para datos meteorológicos.
    • Uso de circuit breakers para gestionar fallos en la conexión con la API externa.
    • Cache para evitar múltiples consultas a la api externa (y así minimizar el número de peticiones duplicadas)
  8. GET /appointments/patient/{patientId}
    Función: Listar todas las citas de un paciente específico.

Workshifts

El API REST de Workshifts Service se utiliza para gestionar turnos de trabajo. Permite programar, asignar y modificar turnos de empleados.

Endpoints principales

  1. GET /workshifts
    Función: Obtener una lista de todos los turnos de trabajo registrados.

  2. POST /workshifts
    Función: Crear un nuevo turno de trabajo con detalles específicos.

  3. POST /workshifts/week
    Función: Programar turnos de trabajo para una semana completa.

  4. GET /workshifts/{id}
    Función: Obtener los detalles de un turno de trabajo específico por ID.

  5. PUT /workshifts/{id}
    Función: Actualizar un turno de trabajo específico por ID.

  6. DELETE /workshifts/{id}
    Función: Eliminar un turno de trabajo específico por ID.

  7. GET /workshifts/doctor/{doctorId}
    Función: Obtener todos los turnos de trabajo asignados a un médico específico por su ID.

Justificación de los microservicios

Microservicio Básico

Criterio Cumplido Evidencia
API REST: GET, POST, PUT y DELETE API
Autenticación Middleware
Frontend Captura de una vista
Desplegado y accesible Enlace
Versionado API doc
Documentación de la API Doc
MongoDB Conexión
Validación de los datos Validación
GitFlow Github
Github Actions Actions
Docker Imagen
Pruebas de componente Pruebas
Pruebas de integración con la BDD Pruebas

Microservicio Avanzado

Característica Cumplido Evidencia
Frontend con rutas y navegación Captura de una vista
Pruebas en interfaz de usuario [ ]
Materialized view para otros microservicios Appointments-Workshifts
Cachés u optimización de acceso a datos Caché
Consumo de API externa OpenWeather API
Autenticación JWT Middleware
Circuit breaker CircuitBreaker
Serverless adicional [ ]
Gestión de capacidad (throttling, toggles) [ ]

Aplicación Básica

Criterio Cumplido Evidencia
Integración completa entre microservicios

Aplicación Avanzada

Criterio Cumplido Evidencia
Frontend común que integre los frontends de microservicios Frontend
Pruebas de integración entre microservicios en CI/CD
Uso de un API Gateway avanzado API Gateway
Sistema de comunicación asíncrona E.j Logger
Mecanismo de deshacer transacciones distribuidas E.j Creacion de staff con usuario

Hasta 5 puntos

Criterio Cumplido Evidencia
Microservicio básico Microservicio básico
CA de la aplicación Customer Agreement
Doc de Resumen del microservicio Wiki
Vídeo del microservicio o app funcionando
Presentación Presentacion

Hasta 7 puntos

Criterio Cumplido Evidencia
Aplicación básica Mostrado previamente
3 Microservicio avanzado Mostrado previamente

Hasta 9 puntos

Criterio Cumplido Evidencia
20 pruebas implementadas (escenarios positivos y negativos) Pruebas
API-REST con OpenAPI Doc
5 Microservicio avanzado Mostrado previamente
3 Aplicación avanzada Mostrado previamente

Hasta 10 puntos

Criterio Cumplido Evidencia
Feature toggles Creación de Staff
6 Microservicio avanzado Mostrado previamente
4 Aplicación avanzada Mostrado previamente

Extra

Criterio Cumplido Evidencia
Extra: Permission Toggle Toggle de permisos mediante configuracion

Clockify

Enlace al vídeo

Enlace al report

Imágenes

Screenshot 2025-01-05 at 19 08 25 Screenshot 2025-01-08 at 10 37 19 Screenshot 2025-01-08 at 10 36 14 Screenshot 2025-01-08 at 10 39 38