Ubiquitous Language - Sistema de Reservas de Turnos Medicos
Proposito
Glosario del dominio de negocio. Estos terminos se usan en el codigo, la documentacion, las conversaciones con stakeholders, y las specs. Si un termino no esta aqui, no es parte del lenguaje del dominio.
Cuando usarlo
- Al escribir codigo: los nombres de clases, metodos, y variables deben usar estos terminos.
- Al escribir specs: los criterios de aceptacion usan este vocabulario.
- Al onboardear a alguien nuevo: este es el primer documento de dominio que deben leer.
Terminos del Dominio
Actores
| Termino |
Definicion |
En el codigo |
NO usar |
| Paciente |
Persona que busca y reserva turnos medicos. Tiene una cuenta en el sistema. |
Patient |
Usuario, cliente, user |
| Medico |
Profesional de salud que atiende pacientes. Tiene una o mas especialidades. |
Doctor |
Profesional, provider, practitioner |
| Admin de Clinica |
Persona que administra una clinica: configura medicos, especialidades, y horarios. |
ClinicAdmin |
Administrador, superuser |
Conceptos Core
| Termino |
Definicion |
En el codigo |
NO usar |
| Turno |
Una cita reservada entre un paciente y un medico en una fecha y hora especifica. |
Booking |
Cita, appointment, reserva (en codigo) |
| Slot |
Un espacio de tiempo disponible en la agenda de un medico. Un slot se convierte en turno cuando es reservado. |
TimeSlot |
Horario, hueco, espacio |
| Especialidad |
Area de la medicina que un medico practica. Un medico puede tener multiples especialidades. |
Specialty |
Rama, area, disciplina |
| Clinica |
Establecimiento fisico donde los medicos atienden pacientes. |
Clinic |
Hospital, centro, consultorio |
| Disponibilidad |
Configuracion recurrente de dias y horarios en que un medico atiende en una clinica. |
DoctorAvailability |
Agenda, calendario, schedule |
| Dia Bloqueado |
Un dia especifico en que un medico no atiende (vacaciones, feriados, etc). |
BlockedDate |
Dia libre, ausencia |
Estados del Turno
| Termino |
Definicion |
Transiciones validas |
| Confirmado |
El turno fue reservado exitosamente. |
-> Cancelado, Completado, No-Show |
| Cancelado |
El turno fue cancelado por el paciente o el medico. |
Estado final |
| Completado |
El medico atendio al paciente. |
Estado final |
| No-Show |
El paciente no se presento al turno. |
Estado final |
Reglas de Negocio (en lenguaje del dominio)
| Termino |
Definicion |
| Penalizacion |
Registro que se crea cuando un paciente cancela un turno con menos de 24 horas de anticipacion. |
| Bloqueo por penalizaciones |
Restriccion temporal (30 dias) que impide a un paciente reservar turnos despues de acumular 3 penalizaciones. |
| Conflicto de turno |
Situacion donde dos pacientes intentan reservar el mismo slot. El sistema resuelve por orden de confirmacion. |
| Duracion del turno |
Tiempo en minutos que dura cada turno, definido por el medico (15, 20, 30, 45, o 60 min). |
Terminos Tecnicos del Dominio
| Termino |
Definicion |
| Zona horaria de la clinica |
La zona horaria en la que se muestran los horarios. Siempre es la zona de la clinica, no la del paciente. |
| Ventana de reserva |
Rango de tiempo en el que se permite reservar (minimo 2h antes, maximo 30 dias adelante). |
Reglas del Ubiquitous Language
- Un concepto, un nombre. No uses sinonimos. Si es
Booking, nunca lo llames "appointment" en el codigo.
- El codigo refleja el dominio.
booking.cancel() no booking.setStatus('CANCELLED').
- Los domain events usan pasado.
BookingConfirmed, no ConfirmBooking.
- Nuevos terminos se agregan aqui primero. Si necesitas un concepto nuevo, agrégalo a este documento y validalo con el domain expert antes de usarlo en el codigo.
Checklist de Completitud
Archivos relacionados