Shift Scheduler Blog
Cuadrante médico: patrones fijos y un reparto justo de los viernes
Este caso práctico anonimizado parte de un cliente real con unos requisitos muy concretos para organizar sus turnos. Queremos que te sirva de inspiración a la hora de plantear las reglas de tu propio espacio de trabajo.
Estos eran sus requisitos:
- El equipo está formado por 6 médicos.
- Hay 2 turnos: M — mañana (8:00–16:00) y A — tarde (11:00–19:00).
- Cada médico tiene un patrón fijo de lunes a jueves:
| Médico/a | Lunes | Martes | Miércoles | Jueves |
|---|---|---|---|---|
| Médica 1 | A | A | M | M |
| Médico 2 | M | A | A | M |
| Médico 3 | A | M | A | M |
| Médico 4 | A | M | M | A |
| Médico 5 | M | M | A | A |
| Médico 6 | M | A | M | A |
- Los viernes se planifican por separado: 2 médicos trabajan por la tarde, con una rotación que reparta estos turnos de forma justa a lo largo del tiempo. Los demás médicos disponibles trabajan el viernes por la mañana.
- Para la mayoría, trabajar un viernes por la tarde debe compensarse cambiando uno de sus turnos de tarde de lunes a jueves por uno de mañana. Así se mantiene un cierto equilibrio entre mañanas y tardes. La médica 1 es la excepción: su patrón fijo de lunes a jueves no debe cambiar por los turnos que le toquen los viernes, aunque también participa en las tardes de los viernes.
- Para garantizar una atención segura, cada día laborable debe haber al menos 2 médicos en el turno de mañana y 2 en el de tarde.
- Normalmente, todos trabajan cada día de lunes a viernes. Nadie quiere las tardes de los viernes :)
El objetivo: mantener un cuadrante de base estable y recurrente, y automatizar los viernes, las ausencias y las excepciones con el menor número de cambios posible. Si hay vacaciones u otras ausencias, hay que reorganizar la cobertura alterando lo menos posible los patrones habituales del resto del equipo.
Desde el punto de vista de la planificación con IA, esto requería configurar las reglas de una forma muy concreta y pensar un poco en cómo las interpreta el algoritmo. Si necesitas ayuda con la configuración, escríbenos a adam@shiftscheduler.ai. Estaremos encantados de echarte una mano. En este caso, lo configuramos así:
- En
/locations, creamos 2 puestos por cubrir para el turno M de mañana y 2 para el turno A de tarde, cada día de lunes a viernes.
Reglas de la IA, con su nivel de importancia entre paréntesis:
- Cada persona puede tener como máximo un turno al día (Obligatoria).
- Cada viernes se pueden programar como máximo 2 turnos A en total para todo el equipo (Obligatoria).
- Repartir los turnos A de los viernes de forma justa, para que todos acumulen un número lo más parecido posible a lo largo del tiempo (Alta).
- Los médicos 2, 3, 4, 5 y 6 no deberían tener más de 2 turnos A cada uno por semana (Alta).
- La médica 1 no puede trabajar en el turno A los miércoles ni los jueves (Obligatoria).
- La médica 1 no puede trabajar en el turno M los lunes ni los martes (Obligatoria).
- El médico 2 debería evitar los turnos A los lunes y los jueves (Media).
- El médico 2 debería evitar los turnos M los martes y los miércoles (Baja).
- El médico 3 debería evitar los turnos A los martes y los jueves (Media).
- El médico 3 debería evitar los turnos M los lunes y los miércoles (Baja).
- El médico 4 debería evitar los turnos A los martes y los miércoles (Media).
- El médico 4 debería evitar los turnos M los lunes y los jueves (Baja).
- El médico 5 debería evitar los turnos A los lunes y los martes (Media).
- El médico 5 debería evitar los turnos M los miércoles y los jueves (Media).
- El médico 6 debería evitar los turnos A los lunes y los miércoles (Media).
- El médico 6 debería evitar los turnos M los martes y los jueves (Baja).
- Nadie puede trabajar los fines de semana (Obligatoria).
Como ves, se trata sobre todo de marcar límites: en lugar de indicar únicamente cuándo debe trabajar cada persona, definimos cuándo conviene que no lo haga. Así, el algoritmo recibe una penalización si incumple una regla de importancia Alta, Media o Baja. Las reglas marcadas como Obligatoria son restricciones estrictas que no se pueden incumplir.
El límite semanal de tardes favorece la compensación de los viernes, mientras que las preferencias por día ayudan a mantener el cuadrante cerca del patrón habitual. El patrón de base cuenta con 3 médicos de mañana y 3 de tarde cada día de lunes a jueves. Cambiar una tarde por una mañana en un día concreto sigue dejando los 2 médicos necesarios por la tarde. Si los dos médicos que trabajan el viernes por la tarde necesitan un cambio entre semana, esos cambios deben hacerse en días distintos para mantener la cobertura. No siempre es posible repartir los viernes exactamente por igual dentro de un solo mes; el objetivo es que el reparto sea justo a lo largo del tiempo.
Pedimos al agente de IA que generara el cuadrante. Cuando nos lo preguntó, fue importante indicar cuántas horas debía trabajar cada persona al mes. De ese modo, el sistema no se limita a cubrir los puestos previstos: también crea turnos adicionales para que todos trabajen de lunes a viernes, salvo ausencias o festivos. Con estos turnos de 8 horas, son 8 horas por día laborable, ajustando el objetivo de horas según las ausencias y las posibles pausas no remuneradas.
Puedes ver el resultado en las capturas de abajo. En un mes sin vacaciones ni peticiones especiales, todos pueden seguir su rotación habitual, con los cambios entre semana necesarios para compensar las tardes de los viernes y repartirlas de forma justa. La segunda captura muestra un cuadrante con vacaciones y peticiones individuales. El sistema busca automáticamente un reparto equilibrado y permite generar el cuadrante cada mes con un clic, teniendo en cuenta esas peticiones. Si las ausencias dejan a muy pocos médicos disponibles para cubrir las necesidades, algunos puestos quedarán sin cubrir y habrá que revisar el cuadrante.

