1 Analytics-et-IA
tarzzan edited this page 2026-05-20 03:04:08 +00:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

📊 Analytics et Intelligence Artificielle

Graphiques d'affluence, prédictions, recommandations et export de données.


Vue d'Ensemble

QueueMed collecte des événements analytiques à chaque action significative dans la file d'attente, puis les transforme en graphiques, métriques et recommandations intelligentes.

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  PIPELINE ANALYTICS                                                 │
│                                                                     │
│  Événements ──▶ Stockage ──▶ Agrégation ──▶ Visualisation           │
│                                    │                                │
│                                    └──▶ Recommandations IA          │
│                                                                     │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐       │
│  │ patient  │   │ MySQL    │   │ GROUP BY │   │ Recharts │       │
│  │ _joined  │──▶│ analytics│──▶│ hour,day │──▶│ Barres   │       │
│  │ _called  │   │ _events  │   │ week     │   │ Camembert│       │
│  │ _done    │   │          │   │          │   │ Courbes  │       │
│  │ _absent  │   │          │   │          │   │          │       │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Événements Collectés

Type d'événement Déclencheur Données capturées
patient_joined Patient rejoint la file heure, jour, taille file
patient_called Médecin appelle temps d'attente, position
patient_done Consultation terminée durée consultation
patient_absent Patient ne se présente pas temps d'attente avant absence
queue_opened File ouverte heure d'ouverture
queue_closed File fermée heure de fermeture, patients restants

Structure d'un Événement

┌─────────────────────────────────────────────────────────────────┐
│  analytics_events                                               │
├─────────────────────────────────────────────────────────────────┤
│  id               : 12847                                       │
│  clinicId         : 5                                           │
│  eventType        : "patient_called"                            │
│  ticketNumber     : 13                                          │
│  waitMinutes      : 22                                          │
│  consultationMin  : null (rempli à patient_done)                │
│  queueSizeAtEvent : 7                                           │
│  hourOfDay        : 10                                          │
│  dayOfWeek        : 3 (mercredi)                                │
│  metadata         : { "patientName": "Jean D." }               │
│  createdAt        : 2026-05-20 10:32:15                         │
└─────────────────────────────────────────────────────────────────┘

Métriques Calculées

Métriques Principales

Métrique Formule SQL Période Usage
Patients/jour COUNT(*) WHERE eventType='patient_joined' GROUP BY DATE Par jour Volume
Temps d'attente moyen AVG(waitMinutes) WHERE eventType='patient_called' 7 jours Performance
Taux de présence COUNT(done) / COUNT(done + absent) * 100 7 jours Fiabilité
Durée consultation AVG(consultationMinutes) WHERE eventType='patient_done' 7 jours Calibrage
Pic d'affluence MAX(COUNT) GROUP BY hourOfDay 30 jours Planification
Taille file max MAX(queueSizeAtEvent) Par jour Capacité

Métriques Dérivées

Métrique Calcul Insight
Tendance Comparaison J vs J-7 Croissance/décroissance
Jour le plus chargé MAX(COUNT) GROUP BY dayOfWeek Planification RH
Heure creuse MIN(COUNT) GROUP BY hourOfDay Optimisation planning
Taux d'abandon COUNT(absent) / COUNT(joined) Satisfaction patient

Visualisations

Graphique d'Affluence par Heure

  Patients
     │
  12 ┤                    ▓▓
  10 ┤              ▓▓    ▓▓    ▓▓
   8 ┤        ▓▓    ▓▓    ▓▓    ▓▓
   6 ┤  ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓
   4 ┤  ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓
   2 ┤  ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓    ▓▓
   0 ┼──────────────────────────────────────────────────
     8h    9h   10h   11h   12h   14h   15h   16h   17h

Répartition par Jour de la Semaine

  Lundi     ████████████████████████████████████████ 45
  Mardi     ██████████████████████████████████       38
  Mercredi  ████████████████████████████████████████████████████ 62
  Jeudi     ████████████████████████████████████     40
  Vendredi  ██████████████████████████████████████████████████   58
  Samedi    ████████████████                         15
  Dimanche  ██████                                    5

Camembert des Statuts

         ┌────────────────────────┐
         │                        │
         │    ╭──────────────╮    │
         │       Done 72%    ╲   │
         │  │                  │  │
         │  │   ┌──────────┐  │  │
         │  │   │Absent 18%│  │  │
         │  │   └──────────┘  │  │
         │   ╲  Canceled 10%    │
         │    ╰──────────────╯    │
         │                        │
         └────────────────────────┘

Recommandations IA

Fonctionnement

Les recommandations sont générées côté serveur en analysant les patterns dans les données :

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  MOTEUR DE RECOMMANDATIONS                                          │
│                                                                     │
│  1. Agrégation des 30 derniers jours                                │
│  2. Détection de patterns :                                         │
│     ├── Pics d'affluence récurrents                                 │
│     ├── Tendance temps d'attente                                    │
│     ├── Taux d'absence élevé                                        │
│     └── Jours sous-utilisés                                         │
│  3. Génération de recommandations contextuelles                     │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Exemples de Recommandations

Pattern Détecté Recommandation
Pic mercredi 9h-11h « Envisagez d'ouvrir plus tôt le mercredi ou d'ajouter du personnel d'accueil. »
Temps d'attente en hausse « Le temps d'attente moyen a augmenté de 12%. Réduisez la durée de consultation ou augmentez la rotation. »
Taux d'absence > 20% « 1 patient sur 5 ne se présente pas. Activez les notifications SMS pour réduire les absences. »
Samedi sous-utilisé « Le samedi ne représente que 6% de votre activité. Envisagez de fermer pour optimiser vos coûts. »
File > 30 patients « Votre file dépasse régulièrement 30 patients. Envisagez de réduire la taille max ou d'ajouter un créneau. »

Export CSV

Format

Le fichier CSV exporté contient toutes les colonnes de la table analytics_events :

id,clinicId,eventType,ticketNumber,waitMinutes,consultationMinutes,queueSizeAtEvent,hourOfDay,dayOfWeek,createdAt
12845,5,patient_joined,11,,,,10,3,2026-05-20 10:15:00
12846,5,patient_called,11,17,,,10,3,2026-05-20 10:32:00
12847,5,patient_done,11,17,12,,10,3,2026-05-20 10:44:00

Utilisation

Action Résultat
Cliquer "Export CSV" Télécharge un fichier .csv
Filtrage Par cabinet uniquement
Période Tous les événements disponibles
Compatibilité Excel, Google Sheets, LibreOffice

Procédures tRPC Analytics

Procédure Input Output Description
analytics.get { clinicId, days } { totalPatients, avgWait, peakHour, ... } Stats par cabinet
analytics.getAll { days } Array<{ clinicId, totalPatients, avgWait }> Stats globales
analytics.exportCsv { clinicId } string (CSV) Export brut

Évolutions Prévues (v2.0)

Fonctionnalité Description Priorité
Prédictions ML Prédire l'affluence du lendemain Haute
Alertes automatiques Notification si file > seuil Moyenne
Rapports PDF Export hebdomadaire automatique Moyenne
Comparaison inter-cabinets Benchmarking entre cabinets Basse
Heatmap calendrier Vue annuelle de l'affluence Basse