Proyecto Clínica - Sistema de Microservicios
Sistema backend desarrollado con arquitectura de microservicios para la gestión de procesos clínicos. El proyecto permite administrar usuarios, pacientes, médicos, medicamentos, reservas, exámenes, fichas clínicas, recetas, pagos y notificaciones.
El sistema fue desarrollado con Java 21, Spring Boot, Spring Cloud, Eureka Server, API Gateway, JWT, MySQL, Swagger/OpenAPI, Maven, Postman y Docker.
Recursos de entrega y evidencias
| Recurso | Contenido | Enlace |
|---|
| Versión Nativa | ZIP con carpeta apps, archivos .jar y script arrancar-nativo.bat. | Descargar |
| Versión Docker | ZIP con docker-compose.yml, .env, carpeta apps y configuración Docker. | Descargar |
| Video de defensa | Video explicativo del funcionamiento, pruebas, Docker, ejecución nativa y aporte personal. | Ver video |
| Subtítulos / Guion | Archivo de apoyo utilizado para la defensa técnica. | Ver archivo |
| Evidencias | Capturas de Maven, Eureka, Swagger, Postman, Docker, GitHub, ZIPs y seguridad JWT. | Ver carpeta |
| Colección Postman | Archivo .postman_collection.json con pruebas HTTP completas del sistema. | Descargar |
| Environment Postman | Archivo .postman_environment.json con base_url, token y tokenNoAdmin. | Descargar |
| Carpeta Postman | Carpeta con los archivos necesarios para importar las pruebas en Postman. | Ver carpeta |
| Tablón Scrum | Archivo con tareas, responsables, estados, observaciones y seguimiento del equipo. | Ver tablón |
Integrantes del equipo
- Misael Rojas
- Jeannette Figueroa
- Marco Carrasco
1. Objetivo del proyecto
El objetivo del Proyecto Clínica es construir un sistema backend distribuido mediante microservicios, capaz de gestionar los procesos principales de una clínica.
El sistema permite:
- Administrar usuarios del sistema.
- Autenticar usuarios mediante JWT.
- Gestionar pacientes.
- Gestionar médicos.
- Administrar medicamentos.
- Crear y administrar reservas médicas.
- Registrar y consultar exámenes.
- Crear fichas clínicas.
- Administrar recetas médicas.
- Registrar pagos.
- Administrar notificaciones.
- Centralizar el acceso mediante API Gateway.
- Registrar y descubrir servicios mediante Eureka Server.
2. Arquitectura general
El sistema utiliza una arquitectura basada en microservicios. Cada microservicio tiene una responsabilidad específica, su propio puerto y su propia configuración de base de datos.
Cliente externo / Postman / Navegador
|
v
API Gateway :8094
|
+--> msusuarios :8081 -> db_usuarios
+--> mspacientes :8082 -> db_pacientes
+--> msmedicos :8083 -> db_medicos
+--> msfarmacia :8084 -> db_farmacia
+--> msreservas :8085 -> db_reservas
+--> msexamenes :8086 -> db_examenes
+--> msfichasclinicas :8087 -> db_fichas_clinicas
+--> ms-recetas :8089 -> db_recetas
+--> ms-notificaciones :8091 -> db_notificaciones
+--> ms-pagos :8092 -> db_pagos
Eureka Server :8761
Flujo general:
- El cliente realiza una petición HTTP.
- La petición llega al API Gateway.
- Si la ruta está protegida, se valida el token JWT.
- El Gateway redirige la solicitud al microservicio correspondiente.
- El microservicio procesa la lógica de negocio.
- Si corresponde, se comunica con otros microservicios mediante Feign Client.
- El microservicio consulta o guarda información en MySQL.
- Se devuelve la respuesta al cliente.
3. Tecnologías utilizadas
| Tecnología | Uso |
|---|
| Java 21 | Lenguaje principal del backend |
| Spring Boot 3.5.x | Framework principal |
| Spring Cloud 2025.x | Gateway, Eureka y Feign |
| Eureka Server | Registro y descubrimiento de servicios |
| Spring Cloud Gateway | Punto único de entrada |
| Spring Security | Seguridad de endpoints |
| JWT | Autenticación y autorización |
| Spring Data JPA | Persistencia |
| MySQL 8 | Base de datos |
| Maven | Compilación y gestión de dependencias |
| Lombok | Reducción de código repetitivo |
| Jakarta Validation | Validación de DTOs |
| Swagger/OpenAPI | Documentación de endpoints |
| Postman | Pruebas HTTP |
| Docker / Docker Compose | Ejecución contenerizada |
| Git / GitHub | Control de versiones |
4. Microservicios del sistema
| Módulo | Puerto | Responsabilidad |
|---|
eureka-server | 8761 | Registro y descubrimiento de microservicios |
api-gateway | 8094 | Punto único de entrada a las APIs |
msusuarios | 8081 | Gestión de usuarios, roles, autenticación y JWT |
mspacientes | 8082 | Administración de pacientes |
msmedicos | 8083 | Administración de médicos |
msfarmacia | 8084 | Administración de medicamentos |
msreservas | 8085 | Administración de reservas médicas |
msexamenes | 8086 | Administración de exámenes médicos |
msfichasclinicas | 8087 | Administración de fichas clínicas |
ms-recetas | 8089 | Administración de recetas médicas |
ms-notificaciones | 8091 | Administración de notificaciones |
ms-pagos | 8092 | Administración de pagos |
5. Bases de datos
El proyecto utiliza MySQL. Cada microservicio trabaja con una base de datos independiente o separada lógicamente.
| Microservicio | Base de datos | Tabla principal esperada |
|---|
msusuarios | db_usuarios | usuarios |
mspacientes | db_pacientes | pacientes |
msmedicos | db_medicos | medicos |
msfarmacia | db_farmacia | medicamentos |
msreservas | db_reservas | reservas |
msexamenes | db_examenes | examenes |
msfichasclinicas | db_fichas_clinicas | fichas_clinicas |
ms-recetas | db_recetas | recetas |
ms-notificaciones | db_notificaciones | notificaciones |
ms-pagos | db_pagos | pagos |
6. Ejecución nativa del sistema
La versión nativa permite ejecutar el sistema sin Docker, usando Java 21 instalado en el equipo y MySQL local mediante XAMPP.
Requisitos
- Java 21.
- Maven.
- MySQL 8.
- XAMPP con MySQL activo.
- Puertos disponibles.
- ZIP nativo descargado.
Puerto MySQL usado en entorno local
3307
Si el equipo usa MySQL en el puerto 3306, se debe ajustar la configuración de los microservicios.
7. Ejecución nativa mediante script .bat
La versión nativa incluye el archivo:
arrancar-nativo.bat
Este script inicia el sistema respetando el orden jerárquico requerido:
- Eureka Server.
- Microservicios de negocio.
- API Gateway.
Este orden es importante porque los microservicios necesitan registrarse en Eureka antes de que el Gateway pueda redirigir las solicitudes correctamente.
Pasos para ejecutar la versión nativa
- Descargar el ZIP nativo desde el enlace indicado al inicio del README.
- Descomprimir el archivo.
- Verificar que exista la carpeta
apps/.
- Verificar que dentro de
apps/ estén los archivos .jar.
- Abrir XAMPP.
- Activar MySQL.
- Ejecutar el archivo:
arrancar-nativo.bat
- Esperar a que se levanten los servicios.
- Abrir Eureka:
http://localhost:8761
- Verificar que los microservicios aparezcan registrados.
- Probar el Gateway:
http://localhost:8094
8. Orden de ejecución nativa manual
Si no se utiliza el script .bat, el sistema debe ejecutarse manualmente en este orden:
| Orden | Servicio | Puerto |
|---|
| 1 | eureka-server | 8761 |
| 2 | msusuarios | 8081 |
| 3 | mspacientes | 8082 |
| 4 | msmedicos | 8083 |
| 5 | msfarmacia | 8084 |
| 6 | msreservas | 8085 |
| 7 | msexamenes | 8086 |
| 8 | msfichasclinicas | 8087 |
| 9 | ms-recetas | 8089 |
| 10 | ms-notificaciones | 8091 |
| 11 | ms-pagos | 8092 |
| 12 | api-gateway | 8094 |
Ejemplo de ejecución manual:
cd eureka-server
mvn spring-boot:run
9. Compilación del proyecto con Maven
Desde la raíz del proyecto:
mvn clean install
Este comando:
- Limpia compilaciones anteriores.
- Compila todos los módulos.
- Ejecuta las pruebas configuradas.
- Genera los artefactos del proyecto.
Para ejecutar solo las pruebas:
mvn clean test
Para generar los .jar:
mvn clean package
En caso de que las pruebas ya hayan sido validadas previamente y solo se necesite empaquetar rápidamente:
mvn clean package -DskipTests
10. Pruebas unitarias
El proyecto incluye una suite de pruebas unitarias desarrolladas con: