Saltar a contenido

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

  1. Un concepto, un nombre. No uses sinonimos. Si es Booking, nunca lo llames "appointment" en el codigo.
  2. El codigo refleja el dominio. booking.cancel() no booking.setStatus('CANCELLED').
  3. Los domain events usan pasado. BookingConfirmed, no ConfirmBooking.
  4. 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

  • Todos los actores definidos
  • Conceptos core definidos con nombre en codigo
  • Estados del turno con transiciones
  • Terminos de reglas de negocio incluidos
  • Revisada por domain expert
  • Revisada por otro ingeniero

Archivos relacionados