{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.gynaehub.com/schemas/partograph.json",
  "title": "WHO Modified Partograph Record Schema",
  "description": "Standardized electronic clinical record structure for intrapartum labor progress surveillance using the WHO Modified Partograph according to PHC MSDS Indicator 26.",
  "type": "object",
  "required": [
    "patientDemographics",
    "laborStartDateTime",
    "membraneStatus",
    "activePhaseObservations"
  ],
  "properties": {
    "patientDemographics": {
      "type": "object",
      "required": ["patientName", "gravida", "para", "hospitalRegistrationNumber"],
      "properties": {
        "patientName": { "type": "string" },
        "age": { "type": "integer", "minimum": 12, "maximum": 60 },
        "gravida": { "type": "integer", "minimum": 1 },
        "para": { "type": "integer", "minimum": 0 },
        "hospitalRegistrationNumber": { "type": "string" },
        "admissionDateTime": { "type": "string", "format": "date-time" }
      }
    },
    "laborStartDateTime": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when active labor (cervix >= 4cm with regular painful contractions) commenced."
    },
    "membraneStatus": {
      "type": "object",
      "required": ["ruptured"],
      "properties": {
        "ruptured": { "type": "boolean" },
        "ruptureDateTime": { "type": "string", "format": "date-time" },
        "liquorAmnii": {
          "type": "string",
          "enum": ["Intact (I)", "Clear (C)", "Meconium-stained (M)", "Blood-stained (A)", "Absent (B)"]
        }
      }
    },
    "activePhaseObservations": {
      "type": "array",
      "description": "Serial observations logged during active first stage and second stage of labor.",
      "items": {
        "type": "object",
        "required": [
          "recordedAt",
          "fetalHeartRateBpm",
          "cervicalDilationCm",
          "uterineContractionsPer10Min"
        ],
        "properties": {
          "recordedAt": { "type": "string", "format": "date-time" },
          "fetalHeartRateBpm": {
            "type": "integer",
            "minimum": 60,
            "maximum": 220,
            "description": "Baseline FHR in bpm. Safe baseline 110-160 bpm. Triggers alert if <100 or >160 bpm."
          },
          "cervicalDilationCm": {
            "type": "number",
            "minimum": 4,
            "maximum": 10,
            "description": "Dilation in cm plotted on Alert and Action lines (4h action lag)."
          },
          "fetalHeadDescentStation": {
            "type": "string",
            "enum": ["5/5", "4/5", "3/5", "2/5", "1/5", "0/5"],
            "description": "Abdominal palpation in fifths of head palpable above pelvic brim."
          },
          "fetalSkullMoulding": {
            "type": "string",
            "enum": ["0 (sutures apposed)", "+ (sutures touching)", "++ (overlapping but reducible)", "+++ (irreducible severe overlap)"]
          },
          "uterineContractionsPer10Min": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7,
            "description": "Number of contractions observed in a 10-minute window."
          },
          "contractionDurationCategory": {
            "type": "string",
            "enum": ["Mild (< 20s)", "Moderate (20-40s)", "Strong (> 40s)"]
          },
          "maternalBloodPressure": {
            "type": "object",
            "properties": {
              "systolic": { "type": "integer" },
              "diastolic": { "type": "integer" }
            }
          },
          "maternalPulseBpm": { "type": "integer", "minimum": 40, "maximum": 200 },
          "maternalTemperatureCelsius": { "type": "number", "minimum": 34, "maximum": 42 },
          "oxytocinUnitsPerLiter": { "type": "number", "minimum": 0 },
          "ivDropsPerMinute": { "type": "integer", "minimum": 0 },
          "drugsAndIvFluids": { "type": "string" },
          "urineProtein": { "type": "string", "enum": ["Nil", "Trace", "+", "++", "+++"] },
          "urineVolumeMl": { "type": "integer", "minimum": 0 }
        }
      }
    },
    "alertLineCrossing": {
      "type": "object",
      "properties": {
        "crossed": { "type": "boolean" },
        "actionTaken": { "type": "string" },
        "emergencyReferralTriggered": { "type": "boolean" }
      }
    }
  }
}
