Safety Graph

Système de Graphe de Connaissances pour Prévention SST et Ergonomie
Module Spécialisé: Ergonomie & Troubles Musculo-Squelettiques (TMS)
Propulsé par Neo4j, Cypher et D3.js

Données 100% Dépersonnalisées - Conformité C-25 & CNESST

🦴 Ergonomie & Troubles Musculo-Squelettiques (TMS)

Les TMS représentent la première cause de maladie professionnelle au Québec. Safety Graph permet l'identification proactive des facteurs de risque ergonomiques via des requêtes Cypher sophistiquées analysant les relations entre tâches, postures, équipements et travailleurs.

5
Requêtes Critiques
~40%
Réduction TMS Projetée
Real-time
Détection Risques
ISO 11228
Conformité Standards

1️⃣ Manutention à Risque (Poids × Fréquence)

⚠️ CRITIQUE - Seuils ISO 11228 dépassés
📊 Analyse prédictive activée

Identifie les tâches de manutention manuelle où le produit poids × fréquence dépasse les seuils de sécurité, indiquant un risque élevé de TMS lombaires.

REQUÊTE CYPHER #1 - MANUTENTION À RISQUE
MATCH (t:Task {type: 'ManualHandling'})-[:PART_OF]->(p {id: $projectId})
WHERE t.weightKg * t.freqPerHour > $riskIndex
RETURN t.id AS task_id,
       t.description AS task_desc,
       t.weightKg AS weight,
       t.freqPerHour AS frequency,
       t.weightKg * t.freqPerHour AS risk_score,
       t.assignedWorker AS worker_anon
ORDER BY risk_score DESC
LIMIT 20

Paramètres de Détection

Paramètre Valeur Seuil Norme de Référence
$riskIndex 150 (kg·freq/h) ISO 11228-1 (Action Limit)
Poids unitaire max 25 kg (homme) / 15 kg (femme) CNESST - Guide manutention
Fréquence critique > 10 levées/heure NIOSH Lifting Equation
Tâche à Risque Critique (>200)
Tâche à Risque Moyen (150-200)
Travailleur Exposé
Projet

💡 Actions Préventives Recommandées

• Mise en place d'aides mécaniques (transpalette, gerbeur)
• Réorganisation des tâches pour réduire la fréquence
• Formation PDSB (Principes de Déplacement Sécuritaire des Bénéficiaires)
• Rotation des travailleurs sur tâches critiques
• Évaluation ergonomique approfondie (méthode NIOSH)

2️⃣ Vibrations Main-Bras (HAV) au-delà des Limites

🔊 ALERTE - Exposition HAV excessive
⏱️ Monitoring continu requis

Calcule l'exposition cumulative aux vibrations main-bras pour chaque travailleur, basée sur la durée d'utilisation et le niveau d'accélération équivalent (A(eq)) des outils vibrants. Seuil critique: 2.5 m/s² pour 8h ou équivalent.

REQUÊTE CYPHER #2 - VIBRATIONS HAV
MATCH (w:Worker)-[:USES]->(tool:Asset {class: 'VibratingTool'})-[:PART_OF]->(p {id: $projectId})
MATCH (ev:Event {type: 'ToolUse'})-[:BY]->(w)-[:ON]->(tool)
WITH w,
     sum(ev.durationMin * tool.havAeq) AS exposure_points,
     collect(DISTINCT tool.name) AS tools_used,
     count(DISTINCT ev) AS usage_sessions
WHERE exposure_points > $havLimit
RETURN w.id AS worker_id,
       w.name_anon AS worker,
       exposure_points,
       tools_used,
       usage_sessions,
       CASE 
         WHEN exposure_points > $havLimit * 1.5 THEN 'CRITIQUE'
         WHEN exposure_points > $havLimit THEN 'ÉLEVÉ'
         ELSE 'MODÉRÉ'
       END AS risk_level
ORDER BY exposure_points DESC

Normes et Limites d'Exposition

Niveau A(8) [m/s²] Points Exposition Action Requise
Valeur d'action 2.5 < 1200 Surveillance, formation
Valeur limite 5.0 1200-2400 Mesures correctives obligatoires
CRITIQUE > 5.0 > 2400 Arrêt travail, réévaluation complète
Travailleur - Exposition Critique
Outil Vibrant (HAV > 2.5)
Événement d'Utilisation

🛡️ Mesures de Contrôle HAV

Hiérarchie des contrôles:
1️⃣ Élimination: Remplacer outils vibrants par alternatives (électriques vs pneumatiques)
2️⃣ Substitution: Outils anti-vibration, suspensions actives
3️⃣ Ingénierie: Limitation durée exposition, rotations de tâches
4️⃣ Administratif: Pauses obligatoires, échauffement mains
5️⃣ EPI: Gants anti-vibration (efficacité limitée, ne pas se fier uniquement)

3️⃣ Travail à Genoux Prolongé sans Protection

🦵 Risque TMS Genoux
✅ Solution Simple: Genouillères

Détecte les travailleurs qui passent plus de $minMin minutes cumulées à genoux sans porter de genouillères (PPE type 'KneePad'). Risque de bursite du genou (hygroma) et dégénérescence précoce du cartilage.

REQUÊTE CYPHER #3 - TRAVAIL À GENOUX
MATCH (post:Posture {type: 'Kneeling'})-[:BY]->(w:Worker)-[:PART_OF]->(p {id: $projectId})
WITH w,
     sum(post.durationMin) AS total_kneeling_mins,
     collect(post.taskDescription) AS tasks,
     count(post) AS kneeling_sessions
WHERE total_kneeling_mins > $minMin 
  AND NOT (w)-[:WEARS]->(:PPE {type: 'KneePad'})
RETURN w.id AS worker_id,
       w.name_anon AS worker,
       total_kneeling_mins,
       tasks,
       kneeling_sessions,
       ROUND(total_kneeling_mins / 60.0, 1) AS hours,
       CASE 
         WHEN total_kneeling_mins > 180 THEN 'URGENT'
         WHEN total_kneeling_mins > 120 THEN 'ÉLEVÉ'
         ELSE 'MODÉRÉ'
       END AS priority
ORDER BY total_kneeling_mins DESC

Seuils de Risque et Actions

Durée Cumulative Niveau de Risque Action Immédiate
< 60 min/jour Faible Recommander genouillères
60-120 min/jour Modéré Fournir genouillères obligatoires
120-180 min/jour Élevé Genouillères + rotation tâches
> 180 min/jour URGENT Intervention ergonomique + suivi médical

🎯 Alternatives Ergonomiques

Au-delà des genouillères, privilégier:
Sièges à genoux mobiles pour postes fixes
Rehausser la surface de travail pour permettre position accroupie ou debout
Outils à manches longs pour éviter flexion excessive
Systèmes de levage pour pièces basses
Rotation fréquente avec tâches sans appui genoux (max 30 min continu)

4️⃣ Micropauses Insuffisantes par Équipe

⏸️ Fatigue Cumulative
⚡ Prévention Simple & Efficace

Identifie les équipes (crews) où le nombre de micropauses enregistrées est inférieur au minimum recommandé ($minPerShift). Les micropauses (30-60 secondes, 2-3x/heure) sont essentielles pour prévenir la fatigue musculaire et maintenir la vigilance.

REQUÊTE CYPHER #4 - MICROPAUSES INSUFFISANTES
MATCH (w:Worker)-[:PART_OF_CREW]->(c:Crew)-[:PART_OF]->(p {id: $projectId})
MATCH (ev:Event {type: 'MicroPause'})-[:BY]->(w)
WHERE ev.timestamp >= $since
WITH c,
     count(ev) AS total_micropauses,
     count(DISTINCT w) AS crew_size,
     ROUND(count(ev) * 1.0 / count(DISTINCT w), 1) AS avg_per_worker,
     collect(DISTINCT w.name_anon) AS workers
WHERE total_micropauses < $minPerShift * crew_size
RETURN c.id AS crew_id,
       c.name AS crew_name,
       crew_size,
       total_micropauses,
       avg_per_worker,
       $minPerShift AS recommended_per_worker,
       workers,
       ROUND(100.0 * total_micropauses / ($minPerShift * crew_size), 1) AS compliance_pct
ORDER BY compliance_pct ASC

Recommandations Micropauses

Type de Travail Fréquence Recommandée Durée Activité Suggérée
Travail répétitif Chaque 30 minutes 30-60 secondes Étirements mains/bras
Posture statique Chaque 20 minutes 45-90 secondes Marche, mobilisation
Travail intense Chaque 45 minutes 2-3 minutes Repos actif, hydratation
Écran (bureau) Chaque 60 minutes 5 minutes 20-20-20 (yeux) + mobilité

💡 Stratégies d'Implémentation

Comment favoriser les micropauses:
Rappels automatiques via wearables ou affichage chantier
Culture de prévention: normaliser les pauses (pas de stigma)
Zones dédiées avec équipements d'étirement
Gamification: objectifs équipe, suivi positif
Formation: expliquer la science (récupération ATP musculaire)
Intégration au workflow: pauses naturelles entre tâches

5️⃣ Inadéquation Hauteur Poste vs Anthropométrie

📏 Mismatch Ergonomique
🔧 Ajustements Requis

Compare la hauteur des postes de travail avec l'anthropométrie individuelle des travailleurs assignés (hauteur de coude). Un écart > $deltaCm indique un risque de postures contraignantes (flexion/extension poignet, élévation épaules, flexion dos).

REQUÊTE CYPHER #5 - INADÉQUATION ANTHROPOMÉTRIQUE
MATCH (ws:Workstation)-[:PART_OF]->(p {id: $projectId})
MATCH (w:Worker)-[:ASSIGNED_TO]->(ws)
WITH ws, w,
     coalesce(w.elbowHeightCm, 105) AS worker_elbow_height,
     ws.heightCm AS station_height,
     abs(ws.heightCm - coalesce(w.elbowHeightCm, 105)) AS height_delta
WHERE height_delta > $deltaCm
RETURN ws.id AS workstation_id,
       ws.name AS workstation,
       ws.heightCm AS current_height,
       w.id AS worker_id,
       w.name_anon AS worker,
       worker_elbow_height,
       height_delta AS mismatch_cm,
       CASE 
         WHEN height_delta > 15 THEN 'CRITIQUE'
         WHEN height_delta > 10 THEN 'ÉLEVÉ'
         ELSE 'MODÉRÉ'
       END AS severity,
       CASE
         WHEN ws.heightCm > worker_elbow_height THEN 'Trop haut - Risque épaules'
         ELSE 'Trop bas - Risque dos/poignets'
       END AS risk_type
ORDER BY height_delta DESC

Critères Anthropométriques

Type de Travail Hauteur Optimale Tolérance Référence
Précision fine Coude + 5-10 cm ± 5 cm Support avant-bras
Travail léger Hauteur coude ± 8 cm Bras naturellement pendants
Travail de force Coude - 10-20 cm ± 10 cm Utilisation poids du corps
Écart critique N/A > 15 cm Ajustement obligatoire

🔧 Solutions d'Ajustement

Hiérarchie des solutions:
1️⃣ Postes ajustables: Tables hydrauliques, plans de travail réglables
2️⃣ Plateformes/marches: Pour travailleurs plus petits (hauteur +)
3️⃣ Rehausseurs: Pour objets/outils (hauteur -)
4️⃣ Réassignation: Matcher travailleurs à postes existants
5️⃣ Supports: Appui-bras, repose-pieds pour compensation partielle

Note: Hauteur de coude standard = 100-110 cm (debout), mais mesure individuelle fortement recommandée (5e-95e percentile: 92-118 cm).

📊 Tableau de Bord Synthèse Ergonomie/TMS

23
Alertes Actives
12
Critiques
87%
Taux Conformité
156
Travailleurs Monitorés
34
Interventions Ce Mois
-18%
Incidents TMS (vs M-1)

Répartition des Risques Ergonomiques

Manutention
Critique: 8
HAV
Élevé: 5
Genoux
Moyen: 12
Micropauses
Moyen: 9
Postes
Faible: 7

Tendances sur 6 Mois

📈 Amélioration significative: Réduction de 32% des risques critiques depuis implémentation du monitoring Safety Graph en temps réel
🎯 Meilleure performance: Micropauses (+45% conformité) et Distribution PPE (+67%)
⚠️ Attention requise: HAV en hausse (+12%) due à nouveau projet avec outils pneumatiques
Objectif 2025: Zéro incident TMS sévère, 95% conformité ergonomique

⚙️ Intégration au Workflow SST

Pipeline Complet de Monitoring Ergonomique

┌─────────────────────────────────────────────────────────────────┐
│                  COLLECTE DONNÉES (Sources Multiples)           │
├─────────────────────────────────────────────────────────────────┤
│  📱 Wearables IoT    │  📹 Caméras IA    │  📋 Rapports Manuels│
│  (Vibrations, MVT)   │  (Postures, MoC)  │  (Auto-évaluation)  │
└──────────────┬────────────────┬────────────────┬────────────────┘
               │                │                │
               └────────────────┴────────────────┘
                                │
                    ┌───────────▼───────────┐
                    │  ETL + Anonymisation  │
                    │   (Python Pipeline)   │
                    └───────────┬───────────┘
                                │
                    ┌───────────▼───────────┐
                    │    NEO4J SAFETYGRAPH  │
                    │  (Graphe + Propriétés)│
                    └───────────┬───────────┘
                                │
            ┌───────────────────┼───────────────────┐
            │                   │                   │
    ┌───────▼────────┐  ┌──────▼──────┐  ┌────────▼────────┐
    │  CYPHER QUERIES│  │  ALERTES    │  │  ML PREDICTIF   │
    │  (5 Ergonomie) │  │  Temps Réel │  │  (Prévision TMS)│
    └───────┬────────┘  └──────┬──────┘  └────────┬────────┘
            │                   │                   │
            └───────────────────┴───────────────────┘
                                │
                    ┌───────────▼───────────┐
                    │    DASHBOARDS D3.js   │
                    │  (Visualisations +    │
                    │   Actions suggérées)  │
                    └───────────┬───────────┘
                                │
            ┌───────────────────┼───────────────────┐
            │                   │                   │
    ┌───────▼────────┐  ┌──────▼──────┐  ┌────────▼────────┐
    │  COORD. SST    │  │  TRAVAILLEURS│  │  GESTIONNAIRES  │
    │  (Interventions│  │  (Alertes)   │  │  (KPIs)         │
    │   Préventives) │  │              │  │                 │
    └────────────────┘  └─────────────┘  └─────────────────┘

FRÉQUENCE DE MISE À JOUR:
• Données wearables: Temps réel (streaming)
• Requêtes Cypher: Toutes les 15 minutes (ou on-demand)
• ML predictions: Recalcul quotidien (overnight)
• Dashboards: Rafraîchissement automatique

🔄 Automatisation Complète

Les 5 requêtes Cypher ergonomiques s'exécutent automatiquement selon un calendrier configurable, déclenchant des alertes immédiates lorsque les seuils sont dépassés. Pas d'intervention manuelle requise.

🚨 Système d'Alertes Multi-Canal

Notifications push (mobile), emails, affichages chantier, et intégration avec systèmes existants (MS Teams, Slack). Escalade automatique selon la criticité et délais de réponse.

📊 Reporting Automatisé

Génération quotidienne/hebdomadaire/mensuelle de rapports conformité ergonomique avec visualisations, tendances, et recommandations. Export PDF/XLSX pour audits CNESST.

🤖 Machine Learning Prédictif

Modèles entraînés sur historique pour prédire quels travailleurs/équipes risquent de développer des TMS dans les 30-90 jours suivants. Intervention préventive ciblée.