En este último tema aplicaremos lo aprendido a un caso práctico: un sistema de gestión de turnos para una clínica o centro de atención. El objetivo no es diseñar pantallas ni tablas, sino construir un modelo de dominio claro que permita comprender conceptos, reglas, estados, eventos y límites de consistencia.
El caso integra vocabulario, entidades, objetos de valor, asociaciones, multiplicidades, reglas de negocio, invariantes, estados, eventos, agregados, contextos delimitados y validación con escenarios.
La clínica necesita administrar turnos para distintos profesionales y especialidades. Los pacientes pueden consultar disponibilidad, reservar turnos, confirmarlos o cancelarlos. Los profesionales tienen agendas con franjas horarias. Algunas franjas pueden bloquearse por ausencia, feriados, reuniones o mantenimiento.
Además, la clínica quiere registrar inasistencias, aplicar políticas de cancelación, notificar recordatorios y mantener información útil para facturación cuando un turno fue atendido.
Un primer vocabulario del dominio puede incluir:
Cada término debe validarse con expertos. Por ejemplo, debemos decidir si Reserva y Turno son sinónimos o conceptos distintos. También debemos definir qué significa exactamente "turno disponible" y qué diferencia hay entre "cancelado" y "ausente".
Un primer modelo puede contener estos conceptos:
Paciente, Profesional, Agenda y Turno son buenas candidatas a entidades porque tienen identidad y continuidad. Un paciente conserva identidad aunque cambie su teléfono. Un turno puede cambiar de estado y seguir siendo el mismo turno, según la política del negocio.
Franja horaria puede modelarse como objeto de valor si solo representa fecha, hora de inicio y hora de fin. Pero si la clínica necesita identificarla, bloquearla, reservarla y llevar historial propio, puede convertirse en entidad interna de Agenda.
Otros objetos de valor posibles son Rango horario, Documento, Correo electrónico, Teléfono y Motivo de cancelación, si tienen reglas propias.
Algunas asociaciones iniciales son:
Las multiplicidades deben validarse. Un paciente puede tener muchos turnos históricos, pero quizá solo uno pendiente por especialidad. Un profesional puede tener una o varias agendas según sede, período o modalidad.
Algunas reglas posibles son:
Un ciclo de vida posible para Turno es:
Con alternativas:
La clínica debe validar si necesita estados adicionales, como Reprogramado, Vencido, En espera o Sobreturno.
Los eventos importantes pueden ser:
Estos eventos pueden disparar consecuencias: enviar notificaciones, liberar franjas, registrar historial, actualizar estadísticas o informar a facturación.
Agenda puede ser raíz de un agregado que controla Franjas horarias y Bloqueos. Su responsabilidad principal es proteger la consistencia de disponibilidad.
Invariantes posibles del agregado Agenda:
Turno puede ser otro agregado o entidad raíz, según el tamaño del dominio. Debe controlar sus estados y transiciones. Por ejemplo, no debería permitir cancelación si ya fue atendido.
También debe registrar eventos relevantes, como Turno reservado o Turno cancelado. Si la cancelación tiene datos propios, como motivo, fecha y responsable, puede modelarse como concepto asociado.
Algunas operaciones no pertenecen naturalmente a una sola entidad. Por ejemplo:
Estos servicios deben expresar reglas del dominio, no detalles técnicos de infraestructura.
En un sistema más amplio, pueden separarse contextos:
Separar contextos evita que Turno tenga que contener todos los significados administrativos, clínicos y contables a la vez.
Un modelo conceptual resumido podría leerse así:
Este resumen debe complementarse con multiplicidades, reglas e invariantes.
Algunos escenarios para validar el modelo son:
| Decisión de modelado | Opción elegida | Motivo |
|---|---|---|
| Turno | Entidad | Tiene identidad, estado e historial. |
| Agenda | Raíz de agregado | Protege franjas sin superposición y publicación válida. |
| Rango horario | Objeto de valor | Se define por inicio y fin, con regla de validez. |
| Política de cancelación | Servicio o política de dominio | Coordina turno, fecha, paciente y reglas de penalización. |
| Turno atendido | Evento de dominio | Puede disparar facturación o cierre de atención. |
Antes de considerar aceptable el modelo, deberíamos revisar:
Este caso práctico mostró cómo integrar las ideas principales del curso en un dominio concreto. Modelar un sistema de turnos no consiste solo en dibujar Paciente, Profesional y Turno. Requiere comprender reglas de disponibilidad, estados, eventos, cancelaciones, agregados, contextos y escenarios reales.
Un buen modelo de dominio ayuda a conversar con expertos, validar conocimiento, orientar el diseño y reducir errores antes de construir la solución técnica. Con esto cerramos el curso de Modelado de dominio.