Saltar al contenido principal

Disponibilidad y horarios

El sistema de turnos de Fyso calcula disponibilidad automaticamente a partir de tres entidades.

Entidades requeridas

Para usar el sistema de turnos, el tenant debe tener estas tres entidades:

horarios

Define los horarios regulares de cada profesional.

CampoTipoDescripcion
profesional_idrelationReferencia al profesional
rruletextRegla de recurrencia (formato RFC 5545 / RRule)
hora_iniciotextHora de inicio (HH:MM)
hora_fintextHora de fin (HH:MM)
duracion_turnonumberDuracion de cada slot en minutos
activobooleanSi el horario esta activo

Ejemplo de rrule: RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR (lunes a viernes).

excepciones_horario

Define excepciones al horario regular (feriados, dias especiales).

CampoTipoDescripcion
profesional_idrelationReferencia al profesional
fechadateFecha de la excepcion (YYYY-MM-DD)
tiposelect"bloqueado" (no atiende) o "horario_especial"
hora_iniciotextHora de inicio (solo para horario_especial)
hora_fintextHora de fin (solo para horario_especial)

turnos

Los turnos reservados.

CampoTipoDescripcion
profesional_idrelationReferencia al profesional
paciente_idrelationReferencia al paciente/cliente
fechadateFecha del turno (YYYY-MM-DD)
horatextHora del turno (HH:MM)
duracionnumberDuracion en minutos
estadoselect"confirmado", "cancelado", etc.
notastextareaNotas opcionales

MCP Tool: get_available_slots

Perfil: core

Calcula los slots disponibles considerando horarios, excepciones y turnos existentes.

Parametros

ParametroTipoRequeridoDescripcion
profesional_idstringSiUUID del profesional
fechastringNoFecha especifica (YYYY-MM-DD)
desdestringNoInicio del rango (YYYY-MM-DD)
hastastringNoFin del rango (YYYY-MM-DD, max 90 dias)

Proporcionar fecha para un dia, o desde/hasta para un rango.

Ejemplo: un dia

get_available_slots({
profesional_id: "uuid-del-profesional",
fecha: "2026-02-20"
})

Ejemplo: rango de fechas

get_available_slots({
profesional_id: "uuid-del-profesional",
desde: "2026-02-20",
hasta: "2026-02-28"
})

Respuesta

[
{ "fecha": "2026-02-20", "hora": "09:00", "duracion": 30, "profesional_id": "uuid" },
{ "fecha": "2026-02-20", "hora": "09:30", "duracion": 30, "profesional_id": "uuid" },
{ "fecha": "2026-02-20", "hora": "10:00", "duracion": 30, "profesional_id": "uuid" }
]

Logica de calculo

  1. Obtiene los horarios activos del profesional
  2. Genera slots segun hora_inicio, hora_fin y duracion_turno
  3. Aplica la regla de recurrencia (rrule) para determinar que dias aplica
  4. Excluye fechas bloqueadas y ajusta horarios especiales
  5. Excluye slots que ya tienen un turno confirmado
Creado con Fyso