Este proyecto implementa una API REST basada en microservicios para la gestión del triaje en una sala de urgencias. Utiliza mensajería con RabbitMQ (Topic Exchange) para distribuir pacientes según su gravedad a distintos consumidores.
El sistema se compone de tres microservicios:
urgencias
: Registro de pacientes (productor de mensajes)atencion
: Atención médica (consumidores separados por grado)supervisor
: Auditoría de atención (consumidor global)
Cada paciente contiene la siguiente información:
dni
: Identificador úniconombre
,apellidos
,género
grado
: leve, grave, críticoestado
: espera, consulta, alta
- Registro y consulta de pacientes
- CRUD completo vía API REST
- Filtros por DNI, grado y estado
- Envío de pacientes vía RabbitMQ a:
pacientes.leve
pacientes.grave
pacientes.critico
pacientes.*
(supervisor)
- Simulación de tiempo de atención (aleatorio)
- Seguridad con JWT (en endpoints protegidos)
- Documentación generada automáticamente con OpenAPI
Los servicios se comunican mediante un exchange de tipo Topic en RabbitMQ:
+------------+
| URGENCIAS | ---[pacientes.leve]---> ATENCION LEVE
| (productor)| ---[pacientes.grave]--> ATENCION GRAVE
+------------+ ---[pacientes.critico]-> ATENCION CRÍTICA
|
+-------[pacientes.*]----------> SUPERVISOR
- Java 17
- Spring Boot
- Spring Web, Spring AMQP, Spring Security
- RabbitMQ (Topic Exchange)
- Maven
- OpenAPI / Swagger
- Postman (para pruebas)
# Clonar el proyecto
git clone https://github.com/tu-usuario/triage-system.git
cd triage-system
# Lanzar los servicios (uno por uno o con múltiples terminales)
cd urgencias && ./mvnw spring-boot:run
cd ../atencion && ./mvnw spring-boot:run
cd ../supervisor && ./mvnw spring-boot:run
También puedes usar los perfiles para facilitar el despliegue individual con --spring.profiles.active=dev
.
Cada microservicio incluye documentación Swagger disponible en:
http://localhost:8080/swagger-ui.html
(urgencias)http://localhost:8081/swagger-ui.html
(atencion)http://localhost:8082/swagger-ui.html
(supervisor)
triage-system/
├── urgencias/
├── atencion/
├── supervisor/
├── README.md
└── .gitignore
✔ Registro de pacientes ✔ Envío a colas por grado ✔ Simulación de atención ✔ Registro por parte del supervisor ✔ CRUD y filtrado por estado ✔ Documentación y JWT
Este proyecto está bajo licencia MIT.