{
  "version": "1.0",
  "description": "Regles de suggestions contextuelles pour le partogramme (WHO Labour Care Guide)",
  "rules": [
    {
      "id": "stagnation_lcg_intactes",
      "category": "progression",
      "condition": {
        "type": "stagnation_lcg",
        "membranes": "intactes"
      },
      "message": "Alerte LCG : {n} cm depuis ≥ {h} h sans modification cervicale — membranes intactes : amniotomie à envisager avant l'ocytocine (CNGOF/CNSF 2017)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "stagnation_lcg_rompues",
      "category": "progression",
      "condition": {
        "type": "stagnation_lcg",
        "membranes": "rompues"
      },
      "message": "Alerte LCG : {n} cm depuis ≥ {h} h sans modification cervicale — membranes rompues : ocytocine à envisager ; après une amniotomie, attendre au moins 1 h (CNGOF/CNSF 2017)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "stagnation_lcg_inconnues",
      "category": "progression",
      "condition": {
        "type": "stagnation_lcg",
        "membranes": "inconnues"
      },
      "message": "Alerte LCG : {n} cm depuis ≥ {h} h sans modification cervicale — état des membranes à préciser : amniotomie à envisager si elles sont intactes, ocytocine si elles sont rompues (CNGOF/CNSF 2017)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "phase_active_12h_primipare",
      "category": "progression",
      "condition": {
        "type": "phase_active_duration",
        "durationMinutes": 720,
        "parite": "primipare"
      },
      "message": "Phase active > 12 h (1er accouchement) : au-delà du 95e percentile OMS — réévaluer la progression depuis la dernière modification cervicale, la dynamique utérine, l'état fœtal",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "phase_active_10h_multipare",
      "category": "progression",
      "condition": {
        "type": "phase_active_duration",
        "durationMinutes": 600,
        "parite": "multipare"
      },
      "message": "Phase active > 10 h (accouchements suivants) : au-delà du 95e percentile OMS — réévaluer la progression depuis la dernière modification cervicale, la dynamique utérine, l'état fœtal",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "rcf_risque_intermediaire",
      "category": "rcf",
      "condition": {
        "type": "rcf_classification",
        "classification": "risque_intermediaire"
      },
      "message": "RCF à risque d'acidose : tenter une action correctrice (décubitus latéral ; réduire ou arrêter l'ocytocine en cas d'hyperactivité utérine) ; si les anomalies persistent, moyen de surveillance de deuxième ligne (CNGOF 2007)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "rcf_risque_important",
      "category": "rcf",
      "condition": {
        "type": "rcf_classification",
        "classification": "risque_important"
      },
      "message": "RCF à risque important d'acidose : décision d'extraction rapide ; un moyen de surveillance de deuxième ligne reste possible s'il ne retarde pas l'extraction (CNGOF 2007)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "rcf_risque_majeur",
      "category": "rcf",
      "condition": {
        "type": "rcf_classification",
        "classification": "risque_majeur"
      },
      "message": "RCF à risque majeur d'acidose : décision d'extraction immédiate, sans recours à une technique de deuxième ligne ; appel immédiat de l'obstétricien (CNGOF 2007)",
      "level": "danger",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "rpm_12h",
      "category": "membranes",
      "condition": {
        "type": "rpm_duration",
        "durationHours": 12
      },
      "message": "RPM ≥ 12 h : antibioprophylaxie recommandée si rupture avant travail (HAS 2017, CNGOF 2019) ou statut SGB inconnu (HAS 2001) ; rechercher des signes infectieux (T°, RCF, NFS, PV, BU)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "rpm_24h",
      "category": "membranes",
      "condition": {
        "type": "rpm_duration",
        "durationHours": 24
      },
      "message": "RPM ≥ 24 h : vérifier que l'antibioprophylaxie est en cours, poursuivre la surveillance infectieuse (T°, RCF)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "liquide_meconial",
      "category": "membranes",
      "condition": {
        "type": "liquide_amniotique",
        "couleur": "meconial_3"
      },
      "message": "Liquide méconial épais (M+++) : prévenir la sage-femme senior ou le médecin ; surveillance RCF renforcée, prévenir le pédiatre (OMS LCG 2020)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "liquide_sanglant",
      "category": "membranes",
      "condition": {
        "type": "liquide_amniotique",
        "couleur": "sanglant"
      },
      "message": "Liquide sanglant (B) : prévenir la sage-femme senior ou le médecin ; rechercher un HRP, un placenta prævia, un vasa prævia, une rupture utérine (OMS LCG 2020)",
      "level": "danger",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "tachycardie_maternelle",
      "category": "constantes",
      "condition": {
        "type": "maternal_parameter",
        "parameter": "pouls",
        "operator": "gt",
        "value": 100
      },
      "message": "Tachycardie maternelle : vérifier hydratation, température, hémoglobine",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "bradycardie_maternelle",
      "category": "constantes",
      "condition": {
        "type": "maternal_parameter",
        "parameter": "pouls",
        "operator": "lt",
        "value": 60
      },
      "message": "Pouls maternel < 60 bpm : recontrôler et évaluer la tolérance",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "fievre_maternelle",
      "category": "constantes",
      "condition": {
        "type": "maternal_parameter",
        "parameter": "temperature",
        "operator": "gt",
        "value": 38
      },
      "message": "Fièvre maternelle : rechercher une chorioamniotite, adapter la prise en charge",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "temperature_vigilance",
      "category": "constantes",
      "condition": {
        "type": "all",
        "conditions": [
          { "type": "maternal_parameter", "parameter": "temperature", "operator": "gte", "value": 37.5 },
          { "type": "maternal_parameter", "parameter": "temperature", "operator": "lte", "value": 38 }
        ]
      },
      "message": "Température ≥ 37,5 °C : à recontrôler ; fièvre retenue au-delà de 38,0 °C",
      "level": "info",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "hypothermie_maternelle",
      "category": "constantes",
      "condition": {
        "type": "maternal_parameter",
        "parameter": "temperature",
        "operator": "lt",
        "value": 35
      },
      "message": "Température < 35,0 °C : recontrôler la mesure",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "hta_gravidique",
      "category": "constantes",
      "condition": {
        "type": "any",
        "conditions": [
          { "type": "maternal_parameter", "parameter": "tas", "operator": "gte", "value": 140 },
          { "type": "maternal_parameter", "parameter": "tad", "operator": "gte", "value": 90 }
        ]
      },
      "message": "HTA (≥ 140/90 mmHg) : surveiller protéinurie, céphalées, ROT",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "hta_severe",
      "category": "constantes",
      "condition": {
        "type": "any",
        "conditions": [
          { "type": "maternal_parameter", "parameter": "tas", "operator": "gte", "value": 160 },
          { "type": "maternal_parameter", "parameter": "tad", "operator": "gte", "value": 110 }
        ]
      },
      "message": "HTA sévère (PAS ≥ 160 ou PAD ≥ 110 mmHg) : contrôler la mesure, rechercher des signes de prééclampsie sévère, traitement antihypertenseur et avis obstétrical et anesthésique sans délai",
      "level": "danger",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "pas_basse_maternelle",
      "category": "constantes",
      "condition": {
        "type": "maternal_parameter",
        "parameter": "tas",
        "operator": "lt",
        "value": 80
      },
      "message": "PAS < 80 mmHg : recontrôler, rechercher une cause (hémorragie, hypotension après péridurale), prévenir l'équipe",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "contractions_frequence_haute",
      "category": "contractions",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "contractions.frequence",
        "operator": "gt",
        "value": 5,
        "phaseActive": true
      },
      "message": "Contractions > 5 / 10 min : recompter sur 10 min supplémentaires ; si la fréquence se confirme, prévenir la sage-femme senior ou le médecin (OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "contractions_frequence_basse",
      "category": "contractions",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "contractions.frequence",
        "operator": "lte",
        "value": 2,
        "phaseActive": true
      },
      "message": "Contractions ≤ 2 / 10 min : recompter sur 10 min supplémentaires ; si la fréquence se confirme, prévenir la sage-femme senior ou le médecin (OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "contractions_duree_courte",
      "category": "contractions",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "contractions.duree",
        "operator": "lt",
        "value": 20,
        "phaseActive": true
      },
      "message": "Contractions de moins de 20 s : recompter les contractions sur 10 min supplémentaires (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "contractions_duree_longue",
      "category": "contractions",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "contractions.duree",
        "operator": "gt",
        "value": 60,
        "phaseActive": true
      },
      "message": "Contractions de plus de 60 s : recompter les contractions sur 10 min supplémentaires (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "ocytocine_5_contractions",
      "category": "contractions",
      "condition": {
        "type": "all",
        "conditions": [
          {
            "type": "ocytocine_en_cours"
          },
          {
            "type": "last_value",
            "source": "observations",
            "field": "contractions.frequence",
            "operator": "gte",
            "value": 5
          }
        ]
      },
      "message": "5 contractions / 10 min ou plus sous ocytocine : arrêter l'augmentation des doses (CNGOF/CNSF 2017)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "ocytocine_debit_max",
      "category": "ocytocine",
      "condition": {
        "type": "ocytocine_debits",
        "critere": "max",
        "value": 20
      },
      "message": "Ocytocine > 20 mUI/min : débit supérieur au maximum recommandé de 20 mUI/min (CNGOF/CNSF 2017)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "ocytocine_debit_initial",
      "category": "ocytocine",
      "condition": {
        "type": "ocytocine_debits",
        "critere": "initial",
        "value": 4
      },
      "message": "Ocytocine, débit initial ≥ 4 mUI/min : dose initiale recommandée de 2 mUI/min (CNGOF/CNSF 2017)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "ocytocine_palier",
      "category": "ocytocine",
      "condition": {
        "type": "ocytocine_debits",
        "critere": "palier",
        "value": 4
      },
      "message": "Ocytocine augmentée de ≥ 4 mUI/min en un palier : paliers recommandés de 2 mUI/min (CNGOF/CNSF 2017)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "ocytocine_intervalle",
      "category": "ocytocine",
      "condition": {
        "type": "ocytocine_debits",
        "critere": "intervalle",
        "minutes": 30
      },
      "message": "Ocytocine augmentée moins de 30 min après la modification précédente : au moins 30 min recommandées avant chaque augmentation (CNGOF/CNSF 2017)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "variete_posterieure_transverse",
      "category": "examen",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "variete",
        "values": [
          "posterieure",
          "transverse"
        ]
      },
      "message": "Variété occipito-postérieure ou transverse : prévenir la sage-femme senior ou le médecin (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "bosse_sero_sanguine",
      "category": "examen",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "bosseSerosanguine",
        "values": [
          "+++"
        ]
      },
      "message": "Bosse sérosanguine +++ : prévenir la sage-femme senior ou le médecin (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "modelage",
      "category": "examen",
      "condition": {
        "type": "last_value",
        "source": "observations",
        "field": "modelage",
        "values": [
          "+++"
        ]
      },
      "message": "Modelage +++ (sutures chevauchantes non réductibles) : prévenir la sage-femme senior ou le médecin (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "proteinurie",
      "category": "urines",
      "condition": {
        "type": "last_value",
        "source": "constantes",
        "field": "proteinurie",
        "values": [
          "2+",
          "3+"
        ]
      },
      "message": "Protéinurie ≥ ++ : interpréter avec l'examen clinique complet, prévenir la sage-femme senior ou le médecin (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "cetonurie",
      "category": "urines",
      "condition": {
        "type": "last_value",
        "source": "constantes",
        "field": "cetonurie",
        "values": [
          "2+",
          "3+",
          "4+"
        ]
      },
      "message": "Cétonurie ≥ ++ : interpréter avec l'examen clinique complet, prévenir la sage-femme senior ou le médecin (alerte LCG, OMS LCG 2020)",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "soutien_boissons",
      "category": "soutien",
      "condition": {
        "type": "last_value",
        "source": "constantes",
        "field": "hydratation.boissons",
        "values": [
          "non"
        ]
      },
      "message": "Pas de boissons depuis la dernière évaluation : l'encourager à boire et à manger léger selon son souhait (OMS LCG 2020)",
      "level": "info",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "soutien_position",
      "category": "soutien",
      "condition": {
        "type": "last_value",
        "source": "constantes",
        "field": "position.actuelle",
        "values": [
          "dorsale"
        ]
      },
      "message": "Position dorsale : l'encourager à se mobiliser librement au 1er stade et soutenir la position de son choix (OMS LCG 2020)",
      "level": "info",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "deuxieme_stade_2h_sans_progression",
      "category": "expulsion",
      "condition": {
        "type": "deuxieme_stade_sans_progression",
        "durationMinutes": 120
      },
      "message": "Dilatation complète depuis ≥ 2 h sans progression documentée de la présentation : informer le gynécologue-obstétricien si la dynamique utérine est suffisante (HAS 2017)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "efforts_expulsifs_3h_primipare",
      "category": "expulsion",
      "condition": {
        "type": "efforts_expulsifs_duration",
        "durationMinutes": 180,
        "parite": "primipare"
      },
      "message": "Efforts expulsifs depuis ≥ 3 h (1er accouchement) : alerte LCG du 2e stade, prévenir la sage-femme senior ou le médecin (OMS LCG 2020)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "efforts_expulsifs_2h_multipare",
      "category": "expulsion",
      "condition": {
        "type": "efforts_expulsifs_duration",
        "durationMinutes": 120,
        "parite": "multipare"
      },
      "message": "Efforts expulsifs depuis ≥ 2 h (accouchements suivants) : alerte LCG du 2e stade, prévenir la sage-femme senior ou le médecin (OMS LCG 2020)",
      "level": "caution",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "dilatation_complete_sans_engagement",
      "category": "progression",
      "condition": {
        "type": "dilatation_complete_engagement",
        "delayMinutes": 60,
        "hauteur": "non_engagee"
      },
      "message": "Dilatation complète depuis ≥ 1 h, présentation non engagée (au-dessus des épines sciatiques) : réévaluer le bassin et la position",
      "level": "warning",
      "section": "partogramme",
      "enabled": true
    },
    {
      "id": "dilatation_complete_hauteur_non_renseignee",
      "category": "progression",
      "condition": {
        "type": "dilatation_complete_engagement",
        "delayMinutes": 60,
        "hauteur": "non_renseignee"
      },
      "message": "Dilatation complète depuis ≥ 1 h : hauteur de la présentation non renseignée, à noter au prochain toucher vaginal",
      "level": "info",
      "section": "partogramme",
      "enabled": true
    }
  ],
  "categories": {
    "progression": {
      "label": "Progression du travail",
      "icon": "chart-line"
    },
    "rcf": {
      "label": "Rythme cardiaque foetal",
      "icon": "heartbeat"
    },
    "membranes": {
      "label": "Membranes et liquide",
      "icon": "droplet"
    },
    "constantes": {
      "label": "Constantes maternelles",
      "icon": "thermometer"
    },
    "expulsion": {
      "label": "Phase d'expulsion",
      "icon": "baby"
    },
    "contractions": {
      "label": "Contractions utérines",
      "icon": "wave"
    },
    "ocytocine": {
      "label": "Ocytocine",
      "icon": "droplet"
    },
    "examen": {
      "label": "Examen du fœtus (TV)",
      "icon": "search"
    },
    "urines": {
      "label": "Urines",
      "icon": "flask"
    },
    "soutien": {
      "label": "Soins de soutien",
      "icon": "hand"
    }
  }
}
