Planning de garde automatique : pourquoi c'est long à la main
Vous êtes le médecin qui fait le planning de garde. Ce n'est pas votre métier, et il vous prend du temps chaque mois.
Ce n'est pas que vous soyez lent. Le problème est difficile, et la difficulté ne vient pas du nombre de cases.
Photo : Unsplash.
En résumé : un planning de garde est long à faire à la main parce que des dizaines de règles se gênent entre elles, et que chaque correction en déclenche une autre. Un moteur de calcul cherche parmi les combinaisons possibles en écartant celles qui enfreignent une règle stricte.
Faisons le calcul
Prenons un service de 8 médecins, un mois de 30 jours dont 22 jours ouvrés, trois postes à couvrir chaque jour ouvré (maternité, hospitalisation, urgences) et une garde chaque jour, week-end compris. Cela fait 22 × 3 + 30 = 96 affectations à placer. Sans jour férié, le total est de 90 à 96 selon le jour où commence le mois, et chaque jour férié en semaine retire trois postes.
Pour la seule garde, il y a 8 choix possibles par jour, donc 8 puissance 30 combinaisons si aucune règle n'est respectée : 1 237 940 039 285 380 274 899 124 224, un nombre de 28 chiffres. Les règles en écartent l'immense majorité. Ce qui reste est encore bien plus grand que ce qu'une personne peut parcourir à la main.
Les postes multiplient les possibilités. Pour une seule journée, il y a 8 × 7 × 6 = 336 façons d'affecter trois médecins différents aux trois postes, avant de retirer ceux qui sont de garde, au repos ou absents.
Des dizaines de règles à tenir ensemble
Ce qui rend le planning difficile, c'est le nombre de règles à respecter en même temps. Pour un service de pédiatrie, le catalogue de DeGarde compte plus de 40 règles. Il en compte plus de 100 au total, dont une trentaine de règles strictes, et chaque service en active une partie. Voici des exemples, avec les réglages par défaut :
Les règles strictes, que le moteur respecte par défaut, sauf verrou posé par l'administrateur :
- le lendemain d'une garde de 24 heures, pas de poste ni de garde ;
- un seul poste par médecin et par jour ;
- le respect des jours de présence de chacun ;
- pas de garde pour un médecin qui n'en fait pas.
Les règles d'équité, que le moteur cherche à optimiser :
- répartir les samedis entre médecins ;
- répartir les dimanches et jours fériés ;
- éviter la garde de deux week-ends d'affilée.
Les règles de confort, qui pèsent sur le quotidien :
- espacer les gardes d'un même médecin ;
- garder le même médecin sur un poste plusieurs jours de suite, puis faire tourner ;
- selon le service, donner des jours libres après une garde de week-end ;
- tenir compte des préférences de jour de garde, les désidérata.
Ces règles s'appliquent toutes en même temps. Le nombre de règles actives varie d'un service à l'autre.
Pourquoi c'est long à la main
Chaque modification déclenche une cascade de vérifications. Déplacer une garde pour corriger un déséquilibre peut enfreindre un repos après garde, ce qui oblige à déplacer un poste, ce qui laisse un trou en maternité.
Voici un déroulé possible :
- Vous commencez par les gardes de week-end, le sujet le plus sensible.
- Vous placez les gardes de semaine en évitant les conflits évidents.
- Vous remplissez les postes jour par jour.
- Vous vérifiez les repos après garde et vous trouvez trois problèmes.
- Vous déplacez des gardes pour corriger. Deux nouveaux conflits apparaissent.
- Vous recommencez une partie du planning.
Les étapes 4 à 6 se répètent. À la fin, vous avez un planning qui tient, sans savoir s'il est le meilleur possible.
Un moteur ne procède pas comme vous, règle après règle. Il cherche parmi les combinaisons en écartant celles qui enfreignent une règle stricte, puis améliore la meilleure solution trouvée. Il travaille sous une limite de temps, de 30 secondes par défaut, et rend la meilleure solution qu'il a trouvée dans ce délai.
« Mon fichier Excel fonctionne »
C'est vrai. Il produit un planning chaque mois, les postes sont couverts, le service tourne. La question porte sur autre chose : ce planning est-il équitable, et pouvez-vous le montrer ?
Quelques questions à vous poser :
- combien de temps passez-vous sur le planning chaque mois ?
- pouvez-vous montrer que l'équité est respectée, par type de jour ?
- que devient le planning quand vous êtes absent ?
- qui d'autre sait le faire ?
Ce que change un moteur
Les médecins saisissent leurs indisponibilités pour le mois. Vous cliquez sur « Générer ». Le moteur cherche un planning qui respecte les règles du service : les règles strictes ne sont pas enfreintes, les règles souples sont tenues au mieux. Un tableau de suivi montre, par médecin, les gardes et, pour un service qui compte en demi-journées, les demi-journées, sur le mois, le quadrimestre ou l'année.
Vous relisez et vous ajustez si besoin : le moteur ne connaît pas le contexte humain que vous avez en tête. Vous validez.
Un problème que la recherche opérationnelle connaît
Le moteur de DeGarde s'appuie sur CP-SAT, le solveur par contraintes de la bibliothèque OR-Tools, publiée par Google. La documentation d'OR-Tools décrit ainsi le problème :
« Finding a schedule that satisfies all constraints can be computationally difficult. »
Le même document prend pour exemple un superviseur d'hôpital qui doit planifier quatre infirmières sur trois jours. Ce n'est pas de l'intelligence artificielle : c'est un calcul, appliqué ici aux règles d'un service hospitalier français, avec ses quotités, ses gardes de 24 heures, ses repos et ses week-ends.
Pour aller plus loin
DeGarde
Planning de garde automatisé
DeGarde est un logiciel de planning de garde pour les services hospitaliers de 5 à 100+ praticiens. Le moteur génère les postes et les gardes du mois en quelques secondes à quelques minutes, selon la taille du service, en respectant les règles que nous configurons avec vous. Déjà utilisé en service hospitalier. Premier mois gratuit, sans engagement.