Aller au contenu
SuperScheduler

Cliniques et santé

Planning de clinique et de cabinet sur une grille de 15 minutes

L’agenda d’une clinique est une grille serrée de rendez-vous courts, chacun avec le bon praticien, la bonne salle et quelques minutes pour tout remettre en ordre entre deux patients. Cette page explique comment modéliser cette journée dans SuperScheduler, quelles règles la frise applique pendant que l’on fait glisser les rendez-vous, et lesquelles doivent revenir à votre backend.

Pourquoi une journée de clinique est plus complexe qu’il n’y paraît

L’accueil travaille par petites unités. Un rendez-vous de suivi dure 15 minutes, une séance de kinésithérapie 30 ou 45, un bilan une heure, le tout sur la même grille au quart d’heure. Les creux comptent autant que les réservations : les salles doivent être remises en état entre deux patients, et les praticiens ont besoin de pauses que personne ne vient remplir de rendez-vous en douce.

La journée change aussi sans cesse. Des patients arrivent en retard, annulent ou ne viennent pas, et une urgence doit trouver sa place sans déplacer trois autres personnes. Celui qui replanifie doit voir où un praticien et une salle sont libres en même temps, et l’interface doit refuser un changement qui mettrait deux patients dans la même salle.

Et il s’agit de données de santé. Un écran d’accueil partagé ne doit afficher que le strict nécessaire pour faire tourner la journée ; dossiers, règles et pistes d’audit vivent dans les systèmes de la clinique, pas dans le navigateur.

Les décisions que l’accueil prend chaque jour

  1. 01

    Le praticien ou la salle en ligne

    Un rendez-vous a besoin des deux, mais une ligne de la frise ne correspond qu’à une ressource. La plupart des agendas placent les praticiens en lignes, parce que c’est ainsi que les patients formulent leur demande (« le même kiné, mardi matin »), et traitent la salle comme une contrainte que l’application vérifie.

  2. 02

    Durée du créneau ou durée du rendez-vous

    La grille est généralement de 15 minutes, alors que les types de rendez-vous durent de 15 à 60 minutes. Les déplacements doivent s’aimanter à la grille et les redimensionnements respecter la durée du type de rendez-vous.

  3. 03

    Protéger les pauses et les plages bloquées

    Déjeuner, heures administratives, formation ou salle fermée pour maintenance doivent apparaître indisponibles et refuser les réservations, plutôt que de compter sur la mémoire de chacun.

  4. 04

    Le battement entre deux patients

    Certaines salles demandent cinq ou dix minutes entre deux séances. En faire un bloc visible ou une marge dans la validation, c’est à la clinique d’en décider.

  5. 05

    Retards et absences

    Un patient en retard raccourcit sa séance ou décale la suivante ; une absence libère un créneau pour la liste d’attente. Dans les deux cas, c’est un changement de statut que l’agenda affiche sans perdre le rendez-vous d’origine.

Modéliser l’agenda d’une clinique

Considérez la frise comme une vue de votre base de rendez-vous : les lignes sont les personnes ou les salles réservables, les événements sont les rendez-vous, et chaque règle qui compte est vérifiée une nouvelle fois sur le serveur.

Ressources
Prévoyez une ligne par praticien, en regroupant les praticiens par discipline dans une arborescence de ressources, avec des colonnes d’en-tête de ligne pour la spécialité ou la salle habituelle. Si les salles sont la ressource la plus rare, placez les salles en lignes et gardez le praticien comme champ de chaque rendez-vous.
Événements
Chaque rendez-vous est un intervalle semi-ouvert en heure civile, par exemple de 09:15:00 à 10:00:00 : une séance qui se termine à 10 h laisse donc le créneau de 10 h libre. Joignez-y l’identifiant de votre backend, le type de rendez-vous et un statut, et n’affichez que ce dont l’accueil a besoin.
Échelle de temps
Utilisez une durée de cellule de 15 minutes avec des en-têtes horaires, et réglez showNonBusiness sur false pour masquer les heures de fermeture de la clinique. Un second niveau de zoom, avec des cellules d’une heure sur la semaine, aide à planifier une série de rendez-vous de suivi.
Règles
Réglez allowEventOverlap sur false et désactivez les cellules des pauses dans onBeforeCellRender. Vérifiez les conflits de salle et le battement dans onEventMoving, avec un message qui explique le refus, et faites confirmer chaque changement par le backend dans onEventMove avant qu’il ne soit validé.

Ce que fait la bibliothèque, ce que fait le système de la clinique

  • Une grille au quart d’heure avec magnétisme, glisser, redimensionner et, en mode clavier complet, déplacements au clavier
  • Refus des déplacements sur des plages occupées ou des cellules désactivées, avec votre message dans le retour visuel du glissement
  • Plages bloquées hachurées pour les pauses, les heures administratives et les salles fermées
  • Contenu des rendez-vous affiché par des slots de rendu React
  • Un veto asynchrone dans onEventMove, pour qu’un changement puisse attendre le serveur
  • Les dossiers patients, et le choix des champs qui arrivent à l’écran
  • Les contrôles de double réservation qui font foi, dans la base de données
  • Rôles et permissions : qui peut déplacer, annuler ou réserver, et pour qui
  • Les plans de traitement récurrents, développés en rendez-vous individuels
  • Rappels, listes d’attente, facturation, pistes d’audit et conversion de fuseaux horaires

Exemples fonctionnels

Les erreurs courantes dans les agendas de clinique

Mettre des détails cliniques dans le texte des événements

Texte, infobulles et bulles finissent dans la page, et sur un écran que la salle d’attente peut voir. Affichez des initiales ou une courte référence, et chargez le détail à la demande derrière vos propres contrôles d’accès.

Laisser les absences bloquer leur créneau

Quand les chevauchements sont refusés, un rendez-vous manqué occupe toujours son créneau. Retirez-le des événements que vous transmettez, ou autorisez le chevauchement dans onEventMoving quand chaque événement de args.conflicts est annulé ou correspond à une absence.

Considérer l’heure de fin comme incluse

Un rendez-vous de 09:00:00 à 09:30:00 se termine à 9 h 30, et un rendez-vous fixé à 9 h 30 ne le chevauche pas. Ajouter une minute pour « fermer » l’intervalle crée de faux conflits toute la journée.

Faire du navigateur le dernier rempart

La frise refuse un chevauchement qu’elle voit, pas une réservation faite il y a une seconde à un autre poste d’accueil. Le serveur doit la rejeter et l’application doit recharger.

Questions

Puis-je empêcher deux rendez-vous de se chevaucher dans la même salle ?

Oui. Avec les salles en lignes, réglez allowEventOverlap sur false : la frise refuse alors les déplacements, redimensionnements et sélections sur une plage occupée de cette ligne. Avec les praticiens en lignes, vérifiez les conflits de salle dans onEventMoving et réglez args.allowed sur false avec un message. Dans les deux cas, refaites la vérification sur le serveur.

Comment afficher des créneaux de 15 minutes dans un planning React ?

Utilisez l’échelle « CellDuration » avec cellDuration à 15 et des en-têtes de temps regroupés par heure. Déplacements, redimensionnements et sélections s’aimantent à la cellule par défaut, et showNonBusiness à false masque les heures situées hors de businessBeginsHour et businessEndsHour.

SuperScheduler gère-t-il les rendez-vous récurrents ?

Pas en tant que fonctionnalité : les options de récurrence sont réservées et n’ont aucun effet. Développez dans votre backend un plan de huit séances hebdomadaires en huit rendez-vous, chacun avec son propre identifiant, pour qu’une séance puisse bouger sans toucher aux autres.

SuperScheduler est-il conforme à HIPAA ou au RGPD ?

La conformité concerne un système entier, pas un composant d’interface, et la bibliothèque ne détient aucune certification. Elle s’exécute dans le navigateur et ne stocke ni n’envoie rien d’elle-même ; le stockage, le contrôle d’accès, la journalisation et les contrats avec les prestataires relèvent de votre application et de ceux qui l’exploitent.

Voyez-le avec des données fictives

La démo Forma replanifie des rendez-vous de kinésithérapie sur une échelle à la minute et les tient à l’écart des plages bloquées. Elle utilise des praticiens inventés et aucune information de patient.

Exemples fonctionnels