MediLink es una plataforma de salud digital construida bajo una arquitectura de microservicios con Spring Boot y Spring Cloud. El sistema permite gestionar el ciclo completo de atención médica remota y presencial: registro de usuarios y profesionales de la salud, agendamiento y gestión de citas, atención por videollamada, emisión de recetas médicas, historial clínico, notificaciones, pagos y evaluación de la atención recibida.
Cada dominio del negocio (citas, usuarios, profesionales, pacientes, etc.) se implementa como un microservicio independiente, con su propia base de datos MySQL, que se registra en un servidor (Eureka) y se expone al exterior a través de un API Gateway único.
- Chiguin Chiang
- Victoria Ortega
| Microservicio | Carpeta | Dominio / responsabilidad | Puerto local | Puerto Docker (host) | Base de datos |
|---|---|---|---|---|---|
| Eureka Server | eureka_server |
Registro y descubrimiento de servicios | 8761 | 8761 | — |
| Gateway | gateway |
Punto de entrada único de la API | 8080 | 3001 | — |
| Usuario | usuario |
Registro y autenticación de usuarios (pacientes, profesionales) | 3001 | 3012 | usuario |
| Profesional | profesional |
Gestión de profesionales de la salud, disponibilidad y horarios | 3013 | 3013 | profesional |
| Gestión de Pacientes | gestion_pacientes |
Perfiles, contactos y datos de pacientes | 4002 | 4002 | gestion_pacientes |
| Agenda Médica | agenda_medica |
Agendas de atención de los profesionales | 3004 | 3004 | agenda_medica |
| Cita | cita |
Solicitud, confirmación y gestión de citas médicas | 3006 | 3006 | cita |
| Videollamada | videollamada |
Atención médica remota por videollamada | 3011 | 3011 | videollamada |
| Historial Clínico | historial_clinico |
Registro del historial médico de los pacientes | 3007 | 3007 | historial_clinico |
| Receta Médica | receta_medica |
Emisión y consulta de recetas médicas | 3008 | 3008 | receta_medica |
| Pago | pago |
Procesamiento de pagos asociados a citas | 3010 | 3010 | pago |
| Notificación | notificacion |
Envío de notificaciones a usuarios | 3005 | 3005 | notificacion |
| Evaluación de Atención | evaluacion_atencion |
Encuestas/valoración de la atención recibida | 3009 | 3009 | evaluacion_atencion |
Todas las peticiones pasan por el Gateway en http://localhost:8080 (local) o
http://localhost:3001 (Docker Compose):
| Servicio | Rutas expuestas |
|---|---|
| Cita | /api/v1/citas/**, /api/v2/citas/** |
| Agenda Médica | /api/v1/agendas/**, /api/v2/agendas/** |
| Evaluación de Atención | /api/v1/evaluaciones/**, /api/v2/evaluaciones/** |
| Historial Clínico | /api/v1/historiales/**, /api/v2/historiales/** |
| Notificación | /api/v1/notificaciones/**, /api/v2/notificaciones/** |
| Pago | /api/v1/pagos/**, /api/v2/pagos/** |
| Receta Médica | /api/v1/recetas/**, /api/v2/recetas/** |
| Videollamada | /api/v1/videollamadas/**, /api/v2/videollamadas/** |
| Usuario | /api/v1/usuarios/** |
| Gestión de Pacientes | /api/pacientes/**, /api/contactos/**, /api/perfiles/** |
| Profesional | /api/v1/profesionales/**, /api/v1/disponibilidades/**, /api/v1/horarios/** |
Cada microservicio expone su propia documentación OpenAPI/Swagger en
/doc/swagger-ui.html, tanto en ejecución local como en Docker (usando el puerto
correspondiente de la tabla de microservicios). Ejemplos:
- Usuario:
http://localhost:3001/doc/swagger-ui.html - Profesional:
http://localhost:3013/doc/swagger-ui.html - Gestión de Pacientes:
http://localhost:4002/doc/swagger-ui.html - Agenda Médica:
http://localhost:3004/doc/swagger-ui.html - Cita:
http://localhost:3006/doc/swagger-ui.html - Videollamada:
http://localhost:3011/doc/swagger-ui.html - Historial Clínico:
http://localhost:3007/doc/swagger-ui.html - Receta Médica:
http://localhost:3008/doc/swagger-ui.html - Pago:
http://localhost:3010/doc/swagger-ui.html - Notificación:
http://localhost:3005/doc/swagger-ui.html - Evaluación de Atención:
http://localhost:3009/doc/swagger-ui.html
- Java 17
- Maven (o usar el wrapper
./mvnwincluido en cada módulo) - MySQL 8 corriendo en
localhost:3306(o ajustarapplication.propertiesde cada microservicio) - Docker y Docker Compose (opcional, para levantar todo de una vez)
Desde la raíz del proyecto:
docker compose up --build- Java 17
- Spring Boot
- Spring Cloud (Gateway, OpenFeign, Eureka)
- MySQL
- Flyway
- Docker / Docker Compose
- Swagger / OpenAPI (springdoc)
- MapStruct
- Lombok