{
  "status": "specification",
  "formatVersion": "3.0",
  "scope": "The .usim document specification. Field constraints come from the same schema used for authoring, import, storage and export. Execution capabilities are checked separately. Examples are fragments and may reference entities defined in other fragments.",
  "referenceProfiles": [
    {
      "id": "usim:age-based-vitals",
      "version": "1.0.0",
      "context": "Awake, resting reference values; neonatal defaults assume completed postnatal transition. Not treatment targets.",
      "ageConversion": {
        "daysPerYear": 365.25,
        "monthsPerYear": 12
      },
      "units": {
        "hr": "beats/min",
        "sbp": "mmHg",
        "dbp": "mmHg",
        "rr": "breaths/min",
        "spo2": "%",
        "temperature": "Cel",
        "etco2": "mmHg"
      },
      "sources": [
        {
          "id": "pediatric",
          "url": "https://www.med.upenn.edu/pedsinpractice/duplicate-of-template-section-page/",
          "context": "Awake pediatric HR, RR, systolic and diastolic reference intervals."
        },
        {
          "id": "adult",
          "url": "https://medlineplus.gov/ency/article/002341.htm",
          "context": "Resting adult HR, RR, BP and temperature reference intervals."
        },
        {
          "id": "oxygen",
          "url": "https://medlineplus.gov/lab-tests/pulse-oximetry/",
          "context": "SpO2 reference interval."
        },
        {
          "id": "capnography",
          "url": "https://www.nm.org/-/media/northwestern/resources/for-medical-professionals/ems-education/capnography.pdf",
          "context": "EtCO2 reference interval."
        }
      ],
      "bands": [
        {
          "id": "neonate",
          "minYears": 0,
          "maxYears": 0.07665982203969883,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              100,
              205
            ],
            "rr": [
              30,
              53
            ],
            "sbp": [
              67,
              84
            ],
            "dbp": [
              35,
              53
            ]
          }
        },
        {
          "id": "infant",
          "minYears": 0.07665982203969883,
          "maxYears": 1,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              100,
              180
            ],
            "rr": [
              30,
              53
            ],
            "sbp": [
              72,
              104
            ],
            "dbp": [
              37,
              56
            ]
          }
        },
        {
          "id": "toddler",
          "minYears": 1,
          "maxYears": 3,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              98,
              140
            ],
            "rr": [
              22,
              37
            ],
            "sbp": [
              86,
              106
            ],
            "dbp": [
              42,
              63
            ]
          }
        },
        {
          "id": "preschool",
          "minYears": 3,
          "maxYears": 6,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              80,
              120
            ],
            "rr": [
              20,
              28
            ],
            "sbp": [
              89,
              112
            ],
            "dbp": [
              46,
              72
            ]
          }
        },
        {
          "id": "school-age",
          "minYears": 6,
          "maxYears": 12,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              75,
              118
            ],
            "rr": [
              18,
              25
            ],
            "sbp": [
              97,
              115
            ],
            "dbp": [
              57,
              76
            ]
          }
        },
        {
          "id": "adolescent",
          "minYears": 12,
          "maxYears": 16,
          "sourceId": "pediatric",
          "ranges": {
            "hr": [
              60,
              100
            ],
            "rr": [
              12,
              20
            ],
            "sbp": [
              102,
              120
            ],
            "dbp": [
              61,
              80
            ]
          }
        },
        {
          "id": "older-adolescent-adult",
          "minYears": 16,
          "maxYears": null,
          "sourceId": "adult",
          "ranges": {
            "hr": [
              60,
              100
            ],
            "rr": [
              12,
              18
            ],
            "sbp": [
              90,
              120
            ],
            "dbp": [
              60,
              80
            ]
          }
        }
      ],
      "commonRanges": {
        "spo2": [
          95,
          100
        ],
        "temperature": [
          36.5,
          37.3
        ],
        "etco2": [
          35,
          45
        ]
      }
    }
  ],
  "authoringProfiles": [
    {
      "id": "usim:age-based-normal-findings",
      "version": "1.1.0",
      "ageUnit": "years",
      "selection": "infant: 0 <= age < 1; child: 1 <= age < 12; adolescent: 12 <= age < 18; adult: 18 <= age < 65; olderAdult: age >= 65; unspecified: missing or invalid age",
      "systems": {
        "ros": {
          "general": "Constitutional",
          "eyes": "Eyes",
          "ent": "Ears, nose and throat",
          "cardiovascular": "Cardiovascular",
          "respiratory": "Respiratory",
          "gastrointestinal": "Gastrointestinal",
          "genitourinary": "Genitourinary",
          "musculoskeletal": "Musculoskeletal",
          "skin": "Skin",
          "neurological": "Neurological",
          "psychiatric": "Psychiatric",
          "endocrine": "Endocrine",
          "hematologic": "Hematologic / lymphatic",
          "allergic": "Allergic / immunologic"
        },
        "examination": {
          "general": "General appearance",
          "head": "Head",
          "eyes": "Eyes",
          "ent": "Ears, nose and throat",
          "neck": "Neck",
          "cardiovascular": "Cardiovascular",
          "respiratory": "Respiratory",
          "abdomen": "Abdomen",
          "musculoskeletal": "Musculoskeletal",
          "extremities": "Extremities",
          "skin": "Skin",
          "neurological": "Neurological",
          "psychiatric": "Mental status"
        }
      },
      "templates": {
        "infant": {
          "ros": {
            "general": "No reported fever, reduced activity, or feeding concerns.",
            "eyes": "No reported eye redness, discharge, or visual concerns.",
            "ent": "No reported ear discomfort, nasal congestion, or swallowing difficulty.",
            "cardiovascular": "No reported cyanosis, fainting, or swelling.",
            "respiratory": "No reported cough, wheezing, apnea, or difficulty breathing.",
            "gastrointestinal": "No reported vomiting, diarrhea, constipation, or abdominal discomfort.",
            "genitourinary": "No reported urinary discomfort, blood in urine, or reduced urine output.",
            "musculoskeletal": "No reported limb swelling, reduced limb movement, or apparent discomfort with movement.",
            "skin": "No rash, itching, or new skin lesions.",
            "neurological": "No reported seizures, abnormal movements, or loss of developmental skills.",
            "psychiatric": "No reported unusual irritability, behavioral change, or sleep concerns.",
            "endocrine": "No reported growth concerns or unusual change in feeding or urine output.",
            "hematologic": "No unusual bruising, bleeding, or swollen glands.",
            "allergic": "No hives, allergic symptoms, or recurrent infections."
          },
          "examination": {
            "general": "Alert, well appearing, and consolable; no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert and interactive for age; tone and spontaneous movements symmetric.",
            "psychiatric": "Age-appropriate interaction and behavior."
          }
        },
        "child": {
          "ros": {
            "general": "No reported fever, reduced activity, or feeding concerns.",
            "eyes": "No reported eye redness, discharge, or visual concerns.",
            "ent": "No reported ear discomfort, nasal congestion, or swallowing difficulty.",
            "cardiovascular": "No reported cyanosis, fainting, or swelling.",
            "respiratory": "No reported cough, wheezing, apnea, or difficulty breathing.",
            "gastrointestinal": "No reported vomiting, diarrhea, constipation, or abdominal discomfort.",
            "genitourinary": "No reported urinary discomfort, blood in urine, or reduced urine output.",
            "musculoskeletal": "No muscle pain, joint pain, or joint swelling.",
            "skin": "No rash, itching, or new skin lesions.",
            "neurological": "No reported seizures, abnormal movements, or loss of developmental skills.",
            "psychiatric": "No reported unusual irritability, behavioral change, or sleep concerns.",
            "endocrine": "No heat or cold intolerance, excessive thirst, or excessive urination.",
            "hematologic": "No unusual bruising, bleeding, or swollen glands.",
            "allergic": "No hives, allergic symptoms, or recurrent infections."
          },
          "examination": {
            "general": "Alert, interactive, and comfortable; no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert and interactive for age; tone and spontaneous movements symmetric.",
            "psychiatric": "Age-appropriate interaction and behavior."
          }
        },
        "adolescent": {
          "ros": {
            "general": "No fever, fatigue, unintentional weight change, or growth concerns.",
            "eyes": "No eye pain, redness, or visual changes.",
            "ent": "No ear pain, nasal congestion, or sore throat.",
            "cardiovascular": "No chest pain, palpitations, or swelling.",
            "respiratory": "No cough, wheezing, or shortness of breath.",
            "gastrointestinal": "No abdominal pain, nausea, vomiting, or diarrhea.",
            "genitourinary": "No dysuria, hematuria, or change in urine output.",
            "musculoskeletal": "No muscle pain, joint pain, or joint swelling.",
            "skin": "No rash, itching, or new skin lesions.",
            "neurological": "No headache, dizziness, weakness, numbness, or seizures.",
            "psychiatric": "No mood, anxiety, or sleep concerns.",
            "endocrine": "No heat or cold intolerance, excessive thirst, or excessive urination.",
            "hematologic": "No unusual bruising, bleeding, or swollen glands.",
            "allergic": "No hives, allergic symptoms, or recurrent infections."
          },
          "examination": {
            "general": "Alert, comfortable, and in no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert; speech clear; strength and sensation symmetric.",
            "psychiatric": "Cooperative with appropriate affect."
          }
        },
        "adult": {
          "ros": {
            "general": "No fever, chills, fatigue, or unintentional weight change.",
            "eyes": "No eye pain, redness, or visual changes.",
            "ent": "No ear pain, nasal congestion, or sore throat.",
            "cardiovascular": "No chest pain, palpitations, or swelling.",
            "respiratory": "No cough, wheezing, or shortness of breath.",
            "gastrointestinal": "No abdominal pain, nausea, vomiting, or diarrhea.",
            "genitourinary": "No dysuria, hematuria, or change in urine output.",
            "musculoskeletal": "No muscle pain, joint pain, or joint swelling.",
            "skin": "No rash, itching, or new skin lesions.",
            "neurological": "No headache, dizziness, weakness, numbness, or seizures.",
            "psychiatric": "No mood, anxiety, or sleep concerns.",
            "endocrine": "No heat or cold intolerance, excessive thirst, or excessive urination.",
            "hematologic": "No unusual bruising, bleeding, or swollen glands.",
            "allergic": "No hives, allergic symptoms, or recurrent infections."
          },
          "examination": {
            "general": "Alert, comfortable, and in no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert; speech clear; strength and sensation symmetric.",
            "psychiatric": "Cooperative with appropriate affect."
          }
        },
        "olderAdult": {
          "ros": {
            "general": "No fever, chills, fatigue, or unintentional weight change.",
            "eyes": "No eye pain, redness, or visual changes.",
            "ent": "No ear pain, nasal congestion, or sore throat.",
            "cardiovascular": "No chest pain, palpitations, or swelling.",
            "respiratory": "No cough, wheezing, or shortness of breath.",
            "gastrointestinal": "No abdominal pain, nausea, vomiting, or diarrhea.",
            "genitourinary": "No dysuria, hematuria, or change in urine output.",
            "musculoskeletal": "No muscle pain, joint pain, or joint swelling.",
            "skin": "No rash, itching, or new skin lesions.",
            "neurological": "No headache, dizziness, focal weakness, numbness, falls, or new confusion.",
            "psychiatric": "No new mood, sleep, memory, or functional concerns.",
            "endocrine": "No heat or cold intolerance, excessive thirst, or excessive urination.",
            "hematologic": "No unusual bruising, bleeding, or swollen glands.",
            "allergic": "No hives, allergic symptoms, or recurrent infections."
          },
          "examination": {
            "general": "Alert, comfortable, and in no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert; speech clear; strength and sensation symmetric.",
            "psychiatric": "Attentive and cooperative; no apparent acute confusion."
          }
        },
        "unspecified": {
          "ros": {
            "general": "No symptoms reported.",
            "eyes": "No symptoms reported.",
            "ent": "No symptoms reported.",
            "cardiovascular": "No symptoms reported.",
            "respiratory": "No symptoms reported.",
            "gastrointestinal": "No symptoms reported.",
            "genitourinary": "No symptoms reported.",
            "musculoskeletal": "No symptoms reported.",
            "skin": "No symptoms reported.",
            "neurological": "No symptoms reported.",
            "psychiatric": "No symptoms reported.",
            "endocrine": "No symptoms reported.",
            "hematologic": "No symptoms reported.",
            "allergic": "No symptoms reported."
          },
          "examination": {
            "general": "Alert, comfortable, and in no acute distress.",
            "head": "Normocephalic and atraumatic.",
            "eyes": "Pupils equal and reactive to light; conjunctivae clear.",
            "ent": "Moist mucous membranes; oropharynx without erythema or exudate.",
            "neck": "Supple without palpable lymphadenopathy.",
            "cardiovascular": "Regular rhythm; no murmur; peripheral perfusion normal.",
            "respiratory": "Unlabored breathing; clear breath sounds bilaterally.",
            "abdomen": "Soft, nondistended, and nontender.",
            "musculoskeletal": "No joint swelling or deformity; movement without limitation.",
            "extremities": "Warm and well perfused; no edema.",
            "skin": "Warm and dry; no rash.",
            "neurological": "Alert; spontaneous movements symmetric.",
            "psychiatric": "Interaction and behavior appropriate to the assessment."
          }
        }
      },
      "policy": "Author-selected fictional teaching findings. Materialize explicit editable text; preserve existing values including blanks. Age changes do not rewrite authored findings. Missing fields remain unspecified. Intimate examinations are excluded."
    },
    {
      "id": "usim:unavailable-ros",
      "version": "1.0.0",
      "scope": "Whole review of systems; author-selected and age-independent.",
      "storagePath": "findings[code=\"usim:ros:Unable%20to%20obtain\"].reliabilityNote",
      "valueType": "not-assessed finding",
      "reasons": [
        {
          "label": "Reason not specified",
          "value": "Unable to obtain review of systems."
        },
        {
          "label": "Clinical condition / acuity",
          "value": "Unable to obtain review of systems due to clinical condition or acuity."
        },
        {
          "label": "Altered mental status",
          "value": "Unable to obtain review of systems due to altered mental status."
        },
        {
          "label": "Unconsciousness",
          "value": "Unable to obtain review of systems due to unconsciousness."
        },
        {
          "label": "Intubation / sedation",
          "value": "Unable to obtain review of systems due to intubation or sedation."
        },
        {
          "label": "Developmental limitations",
          "value": "Unable to obtain review of systems due to developmental limitations."
        },
        {
          "label": "Cognitive impairment",
          "value": "Unable to obtain review of systems due to cognitive impairment."
        },
        {
          "label": "Communication barrier",
          "value": "Unable to obtain review of systems due to a communication barrier."
        },
        {
          "label": "Patient declined",
          "value": "Unable to obtain review of systems due to the patient declining assessment."
        },
        {
          "label": "Collateral historian unavailable",
          "value": "Unable to obtain review of systems due to an unavailable collateral historian."
        },
        {
          "label": "Other limitation",
          "value": "Unable to obtain review of systems due to another limitation."
        }
      ],
      "policy": "Selecting Unable to obtain replaces the complete ROS record with this single entry, initially using Reason not specified. Store the selected reason's value, not its label. Preserve legacy custom reason strings on import. Default removes the unavailable entry and materializes age-specific normal findings. Removing the entry leaves ROS unspecified. Never infer inability from age, diagnosis, sedation, or an omitted ROS. This status is not a negative symptom finding.",
      "example": {
        "patients": [
          {
            "id": "patient-primary",
            "history": []
          }
        ],
        "findings": [
          {
            "id": "patient-primary-ros-unable-to-obtain",
            "patientId": "patient-primary",
            "code": "usim:ros:Unable%20to%20obtain",
            "kind": "symptom",
            "disclosure": {
              "audience": [
                "learner",
                "facilitator"
              ],
              "mode": "initial"
            },
            "status": "not-assessed",
            "reliabilityNote": "Unable to obtain review of systems due to clinical condition or acuity."
          }
        ]
      }
    }
  ],
  "implementationAuthoring": {
    "format": "usim-authoring-specification",
    "formatVersion": "1.10.0",
    "profile": {
      "id": "usim:scenario",
      "version": "3.0",
      "schemaId": "https://u-sim.app/schemas/usim/3.0/scenario.json"
    },
    "sections": [
      {
        "key": "metadata",
        "builderLabel": "Overview",
        "label": "Scenario details",
        "path": "metadata"
      },
      {
        "key": "patients",
        "builderLabel": "Patients",
        "label": "Patient",
        "path": "patients"
      },
      {
        "key": "findings",
        "builderLabel": "Findings",
        "label": "Findings",
        "path": "findings"
      },
      {
        "key": "environment",
        "builderLabel": "Environment",
        "label": "Setting & team",
        "path": "environment"
      },
      {
        "key": "education",
        "builderLabel": "Education",
        "label": "Learning",
        "path": "education"
      },
      {
        "key": "objects",
        "builderLabel": "Resources",
        "label": "Resources",
        "path": "resources"
      },
      {
        "key": "states",
        "builderLabel": "Events",
        "label": "States",
        "path": "events.states"
      },
      {
        "key": "schedules",
        "builderLabel": "Schedules",
        "label": "Schedules",
        "path": "events.schedules"
      },
      {
        "key": "actions",
        "builderLabel": "Interactions",
        "label": "Interactions",
        "path": "events.actions"
      }
    ],
    "builderSections": [
      {
        "key": "metadata",
        "builderLabel": "Overview",
        "label": "Overview",
        "path": "metadata",
        "id": "metadata"
      },
      {
        "key": "patients",
        "builderLabel": "Patients",
        "label": "Patients",
        "path": "patients",
        "id": "patients"
      },
      {
        "key": "environment",
        "builderLabel": "Environment",
        "label": "Environment",
        "path": "environment",
        "id": "environment"
      },
      {
        "key": "objects",
        "builderLabel": "Resources",
        "label": "Resources",
        "path": "resources",
        "id": "objects"
      },
      {
        "key": "states",
        "builderLabel": "Events",
        "label": "Events",
        "path": "events.states",
        "id": "events"
      },
      {
        "key": "education",
        "builderLabel": "Education",
        "label": "Education",
        "path": "education",
        "id": "education"
      }
    ],
    "patientEditors": {
      "vitals": {
        "title": "Vital signs",
        "additionalProperties": false,
        "x-usim": {
          "authoring": {
            "columns": 3
          }
        },
        "type": "object",
        "properties": {
          "hr": {
            "title": "Heart rate · bpm",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "beats/min",
              "referenceRange": {
                "minimum": 60,
                "maximum": 100,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "ecg",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 250,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Heart rate in beats per minute. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "sbp": {
            "title": "Systolic BP · mmHg",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "mmHg",
              "referenceRange": {
                "minimum": 90,
                "maximum": 120,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "bloodPressure",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 300,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Noninvasive systolic blood pressure in mmHg. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "dbp": {
            "title": "Diastolic BP · mmHg",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "mmHg",
              "referenceRange": {
                "minimum": 60,
                "maximum": 80,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "slider": {
                  "minimum": 0,
                  "maximum": 200,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Noninvasive diastolic blood pressure in mmHg. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "rr": {
            "title": "Respiratory rate · /min",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "breaths/min",
              "referenceRange": {
                "minimum": 12,
                "maximum": 18,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "respiration",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 80,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Respiratory rate in breaths per minute. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "spo2": {
            "title": "Oxygen saturation · %",
            "minimum": 0,
            "maximum": 100,
            "x-usim": {
              "unit": "%",
              "referenceRange": {
                "minimum": 95,
                "maximum": 100,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://www.fda.gov/consumers/consumer-updates/pulse-oximeter-basics"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "spo2",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 100,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Peripheral oxygen saturation as a percentage from 0 to 100. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "temperature": {
            "title": "Temperature · °C",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "Cel",
              "referenceRange": {
                "minimum": 36.5,
                "maximum": 37.3,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "temperature",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 25,
                  "maximum": 45,
                  "step": 0.1
                }
              }
            },
            "type": "number",
            "description": "Body temperature in degrees Celsius. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "etco2": {
            "title": "End-tidal CO₂ · mmHg",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "mmHg",
              "referenceRange": {
                "minimum": 35,
                "maximum": 45,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://www.aastweb.org/Portals/0/Docs/Resources/Guidelines/End-Tidal%20CO2-1.pdf"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "capnography",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 100,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "End-tidal carbon dioxide pressure in mmHg. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "artSbp": {
            "title": "Arterial systolic BP · mmHg",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "mmHg",
              "referenceRange": {
                "minimum": 90,
                "maximum": 120,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "initialMonitor": {
                  "channel": "arterialPressure",
                  "label": "Monitor"
                },
                "slider": {
                  "minimum": 0,
                  "maximum": 300,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Invasive arterial systolic blood pressure in mmHg. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "artDbp": {
            "title": "Arterial diastolic BP · mmHg",
            "minimum": 0,
            "maximum": 1000,
            "x-usim": {
              "unit": "mmHg",
              "referenceRange": {
                "minimum": 60,
                "maximum": 80,
                "minimumAgeYears": 18,
                "label": "Adult resting reference",
                "source": "https://medlineplus.gov/ency/article/002341.htm"
              },
              "authoring": {
                "slider": {
                  "minimum": 0,
                  "maximum": 200,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Invasive arterial diastolic blood pressure in mmHg. Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          },
          "pain": {
            "title": "Pain score · 0–10",
            "minimum": 0,
            "maximum": 10,
            "x-usim": {
              "unit": "score",
              "authoring": {
                "slider": {
                  "minimum": 0,
                  "maximum": 10,
                  "step": 1
                }
              }
            },
            "type": "number",
            "description": "Patient-reported pain score from 0 (no pain) to 10 (worst pain). Enter the resulting measurement, not an amount of change; omit to leave it unspecified or retain the previous value during a transition."
          }
        },
        "description": "Absolute resulting measurements, never signed deltas. Omitted values are unspecified or inherited in an event context. Bounds are storage limits, not clinical reference intervals."
      }
    },
    "resourceEditors": {
      "medication": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "title": "Name",
            "maxLength": 240,
            "x-usim": {
              "authoring": {}
            },
            "type": "string",
            "description": "Enter the medication name only. Dose, unit, and route are added to its displayed title from the fields below."
          },
          "medicationOrderTemplate": {
            "additionalProperties": false,
            "title": "Medication administration instructions",
            "type": "object",
            "properties": {
              "dose": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "value",
                  "unit"
                ],
                "properties": {
                  "value": {
                    "exclusiveMinimum": 0,
                    "type": "number",
                    "title": "Value",
                    "description": "Numeric Value. Do not infer an omitted value."
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "const": "mg",
                        "type": "string",
                        "description": "The required literal value \"mg\"."
                      },
                      {
                        "const": "mcg",
                        "type": "string",
                        "description": "The required literal value \"mcg\"."
                      },
                      {
                        "const": "g",
                        "type": "string",
                        "description": "The required literal value \"g\"."
                      },
                      {
                        "const": "mL",
                        "type": "string",
                        "description": "The required literal value \"mL\"."
                      },
                      {
                        "const": "L",
                        "type": "string",
                        "description": "The required literal value \"L\"."
                      },
                      {
                        "const": "units",
                        "type": "string",
                        "description": "The required literal value \"units\"."
                      },
                      {
                        "const": "apheresis unit",
                        "type": "string",
                        "description": "The required literal value \"apheresis unit\"."
                      },
                      {
                        "const": "mEq",
                        "type": "string",
                        "description": "The required literal value \"mEq\"."
                      },
                      {
                        "const": "mmol",
                        "type": "string",
                        "description": "The required literal value \"mmol\"."
                      },
                      {
                        "const": "mg/kg",
                        "type": "string",
                        "description": "The required literal value \"mg/kg\"."
                      },
                      {
                        "const": "mcg/kg",
                        "type": "string",
                        "description": "The required literal value \"mcg/kg\"."
                      },
                      {
                        "const": "g/kg",
                        "type": "string",
                        "description": "The required literal value \"g/kg\"."
                      },
                      {
                        "const": "mL/kg",
                        "type": "string",
                        "description": "The required literal value \"mL/kg\"."
                      },
                      {
                        "const": "units/kg",
                        "type": "string",
                        "description": "The required literal value \"units/kg\"."
                      },
                      {
                        "const": "mEq/kg",
                        "type": "string",
                        "description": "The required literal value \"mEq/kg\"."
                      },
                      {
                        "const": "mg PE/kg",
                        "type": "string",
                        "description": "The required literal value \"mg PE/kg\"."
                      }
                    ],
                    "title": "Unit",
                    "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                  }
                },
                "title": "Dose",
                "description": "The amount for one administration. Enter a number and select its unit.",
                "x-usim": {
                  "authoring": {
                    "order": 0,
                    "detail": "simple",
                    "editor": "quantity"
                  }
                }
              },
              "route": {
                "anyOf": [
                  {
                    "const": "Oral",
                    "type": "string",
                    "description": "The required literal value \"Oral\"."
                  },
                  {
                    "const": "IV",
                    "type": "string",
                    "description": "The required literal value \"IV\"."
                  },
                  {
                    "const": "IO",
                    "type": "string",
                    "description": "The required literal value \"IO\"."
                  },
                  {
                    "const": "Intramuscular",
                    "type": "string",
                    "description": "The required literal value \"Intramuscular\"."
                  },
                  {
                    "const": "Subcutaneous",
                    "type": "string",
                    "description": "The required literal value \"Subcutaneous\"."
                  },
                  {
                    "const": "Inhaled",
                    "type": "string",
                    "description": "The required literal value \"Inhaled\"."
                  },
                  {
                    "const": "Intranasal",
                    "type": "string",
                    "description": "The required literal value \"Intranasal\"."
                  },
                  {
                    "const": "Sublingual",
                    "type": "string",
                    "description": "The required literal value \"Sublingual\"."
                  },
                  {
                    "const": "Rectal",
                    "type": "string",
                    "description": "The required literal value \"Rectal\"."
                  },
                  {
                    "const": "Topical",
                    "type": "string",
                    "description": "The required literal value \"Topical\"."
                  },
                  {
                    "const": "IV / IO",
                    "type": "string",
                    "description": "The required literal value \"IV / IO\"."
                  },
                  {
                    "const": "Nebulized",
                    "type": "string",
                    "description": "The required literal value \"Nebulized\"."
                  },
                  {
                    "const": "Oral / NG",
                    "type": "string",
                    "description": "The required literal value \"Oral / NG\"."
                  },
                  {
                    "const": "Local infiltration",
                    "type": "string",
                    "description": "The required literal value \"Local infiltration\"."
                  },
                  {
                    "const": "Intratracheal",
                    "type": "string",
                    "description": "The required literal value \"Intratracheal\"."
                  },
                  {
                    "const": "Wound infiltration / IM",
                    "type": "string",
                    "description": "The required literal value \"Wound infiltration / IM\"."
                  }
                ],
                "title": "Route",
                "description": "How the medication is administered. IV, IO, and subcutaneous routes also support an administration method.",
                "x-usim": {
                  "authoring": {
                    "order": 1,
                    "detail": "simple"
                  }
                }
              },
              "frequency": {
                "anyOf": [
                  {
                    "const": "Once",
                    "type": "string",
                    "description": "The required literal value \"Once\"."
                  },
                  {
                    "const": "Every hour",
                    "type": "string",
                    "description": "The required literal value \"Every hour\"."
                  },
                  {
                    "const": "Every 4 hours",
                    "type": "string",
                    "description": "The required literal value \"Every 4 hours\"."
                  },
                  {
                    "const": "Every 6 hours",
                    "type": "string",
                    "description": "The required literal value \"Every 6 hours\"."
                  },
                  {
                    "const": "Every 8 hours",
                    "type": "string",
                    "description": "The required literal value \"Every 8 hours\"."
                  },
                  {
                    "const": "Every 12 hours",
                    "type": "string",
                    "description": "The required literal value \"Every 12 hours\"."
                  },
                  {
                    "const": "Daily",
                    "type": "string",
                    "description": "The required literal value \"Daily\"."
                  },
                  {
                    "const": "Custom",
                    "type": "string",
                    "description": "The required literal value \"Custom\"."
                  }
                ],
                "title": "Frequency",
                "description": "How often the medication is intended to be given. Select Custom for another schedule. These instructions do not automatically schedule simulation doses.",
                "x-usim": {
                  "authoring": {
                    "order": 2,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false
                  }
                }
              },
              "customFrequency": {
                "type": "string",
                "title": "Custom frequency",
                "description": "Describe the administration schedule in your own words.",
                "x-usim": {
                  "authoring": {
                    "order": 3,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "visibleWhen": {
                      "property": "frequency",
                      "equals": "Custom"
                    }
                  }
                }
              },
              "prn": {
                "type": "boolean",
                "title": "As needed (PRN)",
                "description": "Whether this medication should be given only when needed rather than routinely.",
                "x-usim": {
                  "authoring": {
                    "order": 4,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false
                  }
                }
              },
              "prnReason": {
                "type": "string",
                "title": "PRN reason",
                "description": "The symptom or condition that should prompt an as-needed dose.",
                "x-usim": {
                  "authoring": {
                    "order": 5,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "span": "full",
                    "visibleWhen": {
                      "property": "prn",
                      "equals": true
                    }
                  }
                }
              },
              "method": {
                "anyOf": [
                  {
                    "const": "push-injection",
                    "type": "string",
                    "description": "The required literal value \"push-injection\"."
                  },
                  {
                    "const": "intermittent-infusion",
                    "type": "string",
                    "description": "The required literal value \"intermittent-infusion\"."
                  },
                  {
                    "const": "continuous-infusion",
                    "type": "string",
                    "description": "The required literal value \"continuous-infusion\"."
                  }
                ],
                "title": "Method",
                "description": "Choose a push or injection, an infusion given intermittently, or an ongoing continuous infusion.",
                "x-usim": {
                  "authoring": {
                    "order": 6,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "span": "full",
                    "choiceLabels": {
                      "push-injection": "Push / injection",
                      "intermittent-infusion": "Intermittent infusion",
                      "continuous-infusion": "Continuous infusion"
                    },
                    "visibleWhen": {
                      "property": "route",
                      "oneOf": [
                        "IV",
                        "IO",
                        "IV / IO",
                        "Subcutaneous",
                        "Oral / NG"
                      ]
                    }
                  }
                }
              },
              "rate": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "value",
                  "unit"
                ],
                "properties": {
                  "value": {
                    "exclusiveMinimum": 0,
                    "type": "number",
                    "title": "Value",
                    "description": "Numeric Value. Do not infer an omitted value."
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "const": "mL/hr",
                        "type": "string",
                        "description": "The required literal value \"mL/hr\"."
                      },
                      {
                        "const": "L/hr",
                        "type": "string",
                        "description": "The required literal value \"L/hr\"."
                      },
                      {
                        "const": "mL/kg/day",
                        "type": "string",
                        "description": "The required literal value \"mL/kg/day\"."
                      },
                      {
                        "const": "mg/hr",
                        "type": "string",
                        "description": "The required literal value \"mg/hr\"."
                      },
                      {
                        "const": "mg/min",
                        "type": "string",
                        "description": "The required literal value \"mg/min\"."
                      },
                      {
                        "const": "mcg/min",
                        "type": "string",
                        "description": "The required literal value \"mcg/min\"."
                      },
                      {
                        "const": "mcg/kg/min",
                        "type": "string",
                        "description": "The required literal value \"mcg/kg/min\"."
                      },
                      {
                        "const": "mcg/kg/hr",
                        "type": "string",
                        "description": "The required literal value \"mcg/kg/hr\"."
                      },
                      {
                        "const": "units/hr",
                        "type": "string",
                        "description": "The required literal value \"units/hr\"."
                      },
                      {
                        "const": "units/min",
                        "type": "string",
                        "description": "The required literal value \"units/min\"."
                      },
                      {
                        "const": "units/kg/hr",
                        "type": "string",
                        "description": "The required literal value \"units/kg/hr\"."
                      }
                    ],
                    "title": "Unit",
                    "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                  }
                },
                "title": "Rate",
                "description": "The amount infused per unit of time. Select the unit that matches the intended infusion rate.",
                "x-usim": {
                  "authoring": {
                    "order": 7,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "editor": "quantity",
                    "visibleWhen": {
                      "all": [
                        {
                          "property": "route",
                          "oneOf": [
                            "IV",
                            "IO",
                            "IV / IO",
                            "Subcutaneous",
                            "Oral / NG"
                          ]
                        },
                        {
                          "property": "method",
                          "oneOf": [
                            "intermittent-infusion",
                            "continuous-infusion"
                          ]
                        }
                      ]
                    }
                  }
                }
              },
              "duration": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "value",
                  "unit"
                ],
                "properties": {
                  "value": {
                    "exclusiveMinimum": 0,
                    "type": "number",
                    "title": "Value",
                    "description": "Numeric Value. Do not infer an omitted value."
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "const": "minutes",
                        "type": "string",
                        "description": "The required literal value \"minutes\"."
                      },
                      {
                        "const": "hours",
                        "type": "string",
                        "description": "The required literal value \"hours\"."
                      }
                    ],
                    "title": "Unit",
                    "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                  }
                },
                "title": "Infuse over",
                "description": "Optional duration for administering the infusion. Leave blank if a duration is not specified.",
                "x-usim": {
                  "authoring": {
                    "order": 8,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "editor": "quantity",
                    "visibleWhen": {
                      "all": [
                        {
                          "property": "route",
                          "oneOf": [
                            "IV",
                            "IO",
                            "IV / IO",
                            "Subcutaneous",
                            "Oral / NG"
                          ]
                        },
                        {
                          "property": "method",
                          "oneOf": [
                            "intermittent-infusion",
                            "continuous-infusion"
                          ]
                        }
                      ]
                    }
                  }
                }
              },
              "comments": {
                "type": "string",
                "title": "Comments",
                "description": "Optional instructions or context specific to this medication resource.",
                "x-usim": {
                  "authoring": {
                    "order": 9,
                    "detail": "expanded",
                    "group": "Administration details",
                    "defaultOpen": false,
                    "editor": "textarea",
                    "span": "full"
                  }
                }
              }
            },
            "description": "Optional resource order template. These authored instructions do not create an executed order, administration record, infusion, or repeat schedule. Hidden details are retained when route, method, frequency, or PRN changes.",
            "x-usim": {
              "authoring": {
                "columns": 2
              }
            }
          }
        }
      }
    },
    "schema": {
      "title": ".usim scenario",
      "additionalProperties": false,
      "x-usim": {
        "authoring": {}
      },
      "type": "object",
      "required": [
        "format",
        "formatVersion",
        "scenarioId",
        "metadata",
        "patients",
        "environment",
        "education",
        "events"
      ],
      "properties": {
        "format": {
          "const": "usim-scenario",
          "type": "string",
          "description": "Identifies the .usim scenario document used by all consumers."
        },
        "formatVersion": {
          "const": "3.0",
          "type": "string",
          "description": "Identifies the document format used for validation."
        },
        "scenarioId": {
          "minLength": 1,
          "maxLength": 128,
          "pattern": "\\S",
          "title": "Identifier",
          "x-usim": {
            "authoring": {
              "hidden": true
            }
          },
          "type": "string",
          "description": "Stable content identity. Publication revisions and delivery instances remain separate records."
        },
        "executionProfile": {
          "additionalProperties": false,
          "type": "object",
          "required": [
            "id",
            "version",
            "requiredCapabilities",
            "optionalCapabilities"
          ],
          "properties": {
            "id": {
              "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:",
              "type": "string",
              "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
            },
            "version": {
              "type": "string",
              "description": "The version for this entry. Omit optional information that has not been specified."
            },
            "requiredCapabilities": {
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "description": "The required capabilities for this entry. Omit optional information that has not been specified."
              },
              "description": "Entries for required capabilities. An empty list means no entries have been authored."
            },
            "optionalCapabilities": {
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "description": "The optional capabilities for this entry. Omit optional information that has not been specified."
              },
              "description": "Entries for optional capabilities. An empty list means no entries have been authored."
            }
          },
          "description": "Declares required and optional execution capabilities. Consumers also inspect populated behavioral fields before running a document."
        },
        "extensions": {
          "type": "object",
          "patternProperties": {
            "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+$": {
              "additionalProperties": false,
              "type": "object",
              "required": [
                "version",
                "required",
                "data"
              ],
              "properties": {
                "version": {
                  "type": "string"
                },
                "required": {
                  "type": "boolean"
                },
                "data": {
                  "type": "object",
                  "patternProperties": {
                    "^(.*)$": {
                      "$id": "T0",
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "$ref": "T0"
                          }
                        },
                        {
                          "type": "object",
                          "patternProperties": {
                            "^(.*)$": {
                              "$ref": "T0"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "description": "Namespaced vendor or profile additions. The namespace is the lookup key; version and required status determine whether a consumer can safely ignore, preserve, or reject the extension."
        },
        "vocabularies": {
          "type": "array",
          "items": {
            "additionalProperties": false,
            "type": "object",
            "required": [
              "id",
              "version",
              "kind",
              "sha256"
            ],
            "properties": {
              "id": {
                "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:",
                "type": "string",
                "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
              },
              "version": {
                "type": "string",
                "description": "The version for this entry. Omit optional information that has not been specified."
              },
              "kind": {
                "anyOf": [
                  {
                    "const": "concept",
                    "type": "string",
                    "description": "The required literal value \"concept\"."
                  },
                  {
                    "const": "value-type",
                    "type": "string",
                    "description": "The required literal value \"value-type\"."
                  },
                  {
                    "const": "unit",
                    "type": "string",
                    "description": "The required literal value \"unit\"."
                  },
                  {
                    "const": "dimension",
                    "type": "string",
                    "description": "The required literal value \"dimension\"."
                  },
                  {
                    "const": "value-set",
                    "type": "string",
                    "description": "The required literal value \"value-set\"."
                  }
                ],
                "description": "Select one of the declared kind alternatives; use the fields belonging to that alternative."
              },
              "sha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string",
                "description": "The sha256 for this entry. Omit optional information that has not been specified."
              },
              "assetId": {
                "minLength": 1,
                "maxLength": 128,
                "pattern": "\\S",
                "title": "Identifier",
                "x-usim": {
                  "reference": {
                    "collection": "assets",
                    "label": "description"
                  }
                },
                "type": "string",
                "description": "Identifier of an existing assets entry. Preserve the referenced entry when editing this field."
              }
            },
            "description": "Pins the concept, value-type, unit, or dimensional definitions used by the document. Definitions must be bundled or resolved by a trusted profile; execution never fetches an untrusted URL."
          },
          "description": "Entries for vocabularies. An empty list means no entries have been authored."
        },
        "dependencies": {
          "type": "array",
          "items": {
            "additionalProperties": false,
            "type": "object",
            "required": [
              "id",
              "scenarioId",
              "revision",
              "sha256"
            ],
            "properties": {
              "id": {
                "minLength": 1,
                "maxLength": 128,
                "pattern": "\\S",
                "title": "Identifier",
                "x-usim": {
                  "authoring": {
                    "hidden": true
                  }
                },
                "type": "string",
                "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
              },
              "scenarioId": {
                "minLength": 1,
                "maxLength": 128,
                "pattern": "\\S",
                "title": "Identifier",
                "x-usim": {
                  "authoring": {
                    "hidden": true
                  }
                },
                "type": "string",
                "description": "The Identifier for this entry. Omit optional information that has not been specified."
              },
              "revision": {
                "minimum": 1,
                "type": "integer",
                "description": "Numeric revision, at least 1. Do not infer an omitted value."
              },
              "sha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string",
                "description": "The sha256 for this entry. Omit optional information that has not been specified."
              }
            },
            "description": "Pinned library content; digest is 64 lowercase hex characters. Floating latest dependencies are prohibited."
          },
          "description": "Entries for dependencies. An empty list means no entries have been authored."
        },
        "composition": {
          "additionalProperties": false,
          "type": "object",
          "required": [
            "overrides"
          ],
          "properties": {
            "overrides": {
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "targetId",
                  "path",
                  "value"
                ],
                "properties": {
                  "targetId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "The Identifier for this entry. Omit optional information that has not been specified."
                  },
                  "path": {
                    "pattern": "^(?:/(?:[^~/]|~[01])*)*$",
                    "type": "string",
                    "description": "The path for this entry. Omit optional information that has not been specified."
                  },
                  "value": {
                    "$id": "T1",
                    "anyOf": [
                      {
                        "type": "null",
                        "description": "The value for this entry. Omit optional information that has not been specified."
                      },
                      {
                        "type": "boolean",
                        "description": "Whether value applies. Omitted optional values remain unspecified."
                      },
                      {
                        "type": "number",
                        "description": "Numeric value. Do not infer an omitted value."
                      },
                      {
                        "type": "string",
                        "description": "The value for this entry. Omit optional information that has not been specified."
                      },
                      {
                        "type": "array",
                        "items": {
                          "$ref": "T1",
                          "description": "The value for this entry. Omit optional information that has not been specified."
                        },
                        "description": "Entries for value. An empty list means no entries have been authored."
                      },
                      {
                        "type": "object",
                        "patternProperties": {
                          "^(.*)$": {
                            "$ref": "T1"
                          }
                        },
                        "description": "Structured value details. Omitted optional values remain unspecified."
                      }
                    ],
                    "description": "Select one of the declared value alternatives; use the fields belonging to that alternative."
                  }
                },
                "description": "Explicit overrides against a resolved dependency. Paths must exist; object/array values replace in full. No inferred deep merge."
              },
              "description": "Entries for overrides. An empty list means no entries have been authored."
            }
          },
          "description": "Structured composition details. Omitted optional values remain unspecified."
        },
        "outputs": {
          "additionalProperties": false,
          "type": "object",
          "required": [
            "views"
          ],
          "properties": {
            "views": {
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "audience",
                  "kind",
                  "includeIds"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "audience": {
                    "anyOf": [
                      {
                        "const": "learner",
                        "type": "string",
                        "description": "The required literal value \"learner\"."
                      },
                      {
                        "const": "facilitator",
                        "type": "string",
                        "description": "The required literal value \"facilitator\"."
                      }
                    ],
                    "title": "Audience",
                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "const": "brief",
                        "type": "string",
                        "description": "The required literal value \"brief\"."
                      },
                      {
                        "const": "guide",
                        "type": "string",
                        "description": "The required literal value \"guide\"."
                      },
                      {
                        "const": "event-map",
                        "type": "string",
                        "description": "The required literal value \"event-map\"."
                      },
                      {
                        "const": "checklist",
                        "type": "string",
                        "description": "The required literal value \"checklist\"."
                      }
                    ],
                    "description": "Select one of the declared kind alternatives; use the fields belonging to that alternative."
                  },
                  "includeIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "*",
                          "label": "id"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing * entry. Preserve the referenced entry when editing this field."
                    },
                    "description": "Entries for include ids. An empty list means no entries have been authored."
                  }
                },
                "description": "Explicit content selection filtered by audience. Learner views exclude facilitator-only content even when named in includeIds."
              },
              "description": "Entries for views. An empty list means no entries have been authored."
            }
          },
          "description": "Structured outputs details. Omitted optional values remain unspecified."
        },
        "metadata": {
          "additionalProperties": false,
          "x-usim": {
            "authoring": {
              "columns": 3
            }
          },
          "type": "object",
          "required": [
            "title",
            "summary",
            "contributors",
            "revision",
            "license",
            "review",
            "sources"
          ],
          "properties": {
            "title": {
              "title": "Title",
              "maxLength": 160,
              "x-usim": {
                "authoring": {
                  "span": "full",
                  "order": 0
                }
              },
              "type": "string",
              "description": "The internal case title used by authors. Campus uses the separate learner title."
            },
            "summary": {
              "title": "Description",
              "maxLength": 8000,
              "x-usim": {
                "authoring": {
                  "editor": "textarea",
                  "span": "full",
                  "order": 1
                }
              },
              "type": "string",
              "description": "The internal scenario premise, scope, and intended learning activity. This summary is not shown in Campus."
            },
            "contributors": {
              "minItems": 1,
              "title": "Author",
              "x-usim": {
                "authoring": {
                  "span": "full",
                  "addLabel": "Add contributor",
                  "editor": "credits",
                  "order": 2
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "name",
                  "roles"
                ],
                "properties": {
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable contributor identifier used by review attribution."
                  },
                  "name": {
                    "title": "Name",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "The person or team credited with creating this scenario."
                  },
                  "roles": {
                    "minItems": 1,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "title": "Role",
                      "maxLength": 160,
                      "x-usim": {
                        "authoring": {}
                      },
                      "type": "string",
                      "description": "One credited contribution role."
                    },
                    "description": "The roles this contributor performed for this content.",
                    "title": "Contribution roles"
                  },
                  "affiliation": {
                    "title": "Affiliation",
                    "maxLength": 240,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "The contributor’s organization or institutional affiliation."
                  }
                },
                "description": "A named contributor with stable identity and credited roles."
              },
              "description": "People and organizations credited for authorship, review, or other contributions."
            },
            "revision": {
              "minimum": 1,
              "title": "Content revision",
              "type": "integer",
              "description": "The authored content revision, independent of a storage revision identifier.",
              "x-usim": {
                "authoring": {
                  "group": "Attribution and review",
                  "defaultOpen": false,
                  "order": 20,
                  "span": "full"
                }
              }
            },
            "license": {
              "title": "License",
              "additionalProperties": false,
              "x-usim": {
                "authoring": {
                  "group": "Attribution and review",
                  "defaultOpen": false,
                  "order": 21,
                  "span": "full"
                }
              },
              "type": "object",
              "required": [
                "identifier"
              ],
              "properties": {
                "identifier": {
                  "title": "License",
                  "maxLength": 240,
                  "x-usim": {
                    "authoring": {
                      "suggestions": [
                        "All rights reserved",
                        "CC BY 4.0",
                        "CC BY-SA 4.0",
                        "CC BY-NC 4.0",
                        "CC BY-NC-SA 4.0",
                        "CC BY-ND 4.0",
                        "CC BY-NC-ND 4.0",
                        "CC0 1.0"
                      ]
                    }
                  },
                  "type": "string",
                  "description": "The license identifier or explicit rights statement. Suggested reuse licenses are advisory; preserve custom terms."
                },
                "textAssetId": {
                  "title": "Identifier",
                  "minLength": 1,
                  "maxLength": 128,
                  "pattern": "\\S",
                  "x-usim": {
                    "authoring": {
                      "hidden": true
                    }
                  },
                  "type": "string",
                  "description": "An optional asset containing the complete license text."
                }
              },
              "description": "The terms under which this scenario may be reused."
            },
            "review": {
              "title": "Review status and evidence",
              "additionalProperties": false,
              "x-usim": {
                "authoring": {
                  "group": "Attribution and review",
                  "defaultOpen": false,
                  "order": 22,
                  "span": "full"
                }
              },
              "type": "object",
              "required": [
                "status",
                "reviewerIds",
                "sourceIds"
              ],
              "properties": {
                "status": {
                  "type": "string",
                  "title": "Review status",
                  "enum": [
                    "draft",
                    "reviewed",
                    "needs-review"
                  ],
                  "description": "Review state stored as draft, reviewed, or needs-review. Builder displays Draft, Reviewed, and Needs review."
                },
                "reviewedAt": {
                  "title": "Reviewed at",
                  "maxLength": 80,
                  "x-usim": {
                    "authoring": {}
                  },
                  "type": "string",
                  "description": "The date and time the recorded review was completed. Builder displays local date and time and stores the selected instant as a UTC ISO 8601 timestamp; omission means unspecified."
                },
                "reviewerIds": {
                  "uniqueItems": true,
                  "type": "array",
                  "items": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "metadata.contributors",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "A contributor credited with reviewing this revision."
                  },
                  "description": "Contributor identifiers for the reviewers.",
                  "title": "Reviewers"
                },
                "sourceIds": {
                  "uniqueItems": true,
                  "type": "array",
                  "items": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "metadata.sources",
                        "label": "citation"
                      }
                    },
                    "type": "string",
                    "description": "A source cited by this review."
                  },
                  "description": "Stable metadata.sources IDs selected as evidence for the recorded review. Citation edits and source reordering preserve these links.",
                  "title": "Review sources",
                  "x-usim": {
                    "authoring": {
                      "addLabel": "Add source"
                    }
                  }
                }
              },
              "description": "Clinical review status, attribution, date, and supporting sources."
            },
            "sources": {
              "type": "array",
              "items": {
                "title": "Source",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "citation"
                ],
                "properties": {
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable source identifier used by review references."
                  },
                  "citation": {
                    "title": "Citation",
                    "maxLength": 8000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "The complete bibliographic citation or source attribution."
                  },
                  "url": {
                    "pattern": "^https://",
                    "title": "Source URL",
                    "type": "string",
                    "description": "An HTTPS location where this source can be found."
                  },
                  "accessedAt": {
                    "title": "Accessed at",
                    "maxLength": 80,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "The date the linked source was accessed."
                  }
                },
                "description": "A source citation with stable identity and optional web location."
              },
              "description": "Citations supporting the scenario and its clinical content.",
              "title": "Sources",
              "x-usim": {
                "authoring": {
                  "addLabel": "Add source",
                  "hidden": true,
                  "group": "Attribution and review",
                  "defaultOpen": false,
                  "order": 23,
                  "span": "full"
                }
              }
            },
            "diagnosis": {
              "title": "Diagnosis or case theme",
              "maxLength": 1000,
              "x-usim": {
                "authoring": {
                  "editor": "diagnosis",
                  "span": "full",
                  "group": "Scenario context",
                  "order": 3
                }
              },
              "type": "string",
              "description": "The main diagnosis or case theme that guides the scenario."
            },
            "specialty": {
              "title": "Specialty",
              "maxLength": 1000,
              "x-usim": {
                "authoring": {
                  "editor": "specialty",
                  "group": "Scenario context",
                  "order": 4
                }
              },
              "type": "string",
              "description": "The clinical specialty or specialties relevant to this scenario."
            },
            "level": {
              "title": "Learner level",
              "maxLength": 1000,
              "x-usim": {
                "authoring": {
                  "editor": "level",
                  "group": "Scenario context",
                  "order": 5
                }
              },
              "type": "string",
              "description": "The intended learner level and experience."
            },
            "durationMinutes": {
              "title": "Suggested duration · minutes",
              "minimum": 1,
              "maximum": 1440,
              "x-usim": {
                "unit": "min",
                "authoring": {
                  "group": "Scenario context",
                  "order": 6
                }
              },
              "type": "number",
              "description": "The suggested scenario duration in minutes; this does not control the simulation clock."
            },
            "learnerTitle": {
              "title": "Learner title",
              "maxLength": 160,
              "x-usim": {
                "authoring": {
                  "group": "Learner-facing details",
                  "span": "full",
                  "defaultOpen": true,
                  "order": 7
                }
              },
              "type": "string",
              "description": "Spoiler-free title shown on Campus cards and in the scenario preview. For example: Penetrating chest injury. Copy chief complaint copies the first patient's complaint once; you can edit it without changing patient history. If omitted or blank, Campus shows Practice scenario."
            },
            "learnerDescription": {
              "title": "Learner description",
              "maxLength": 2000,
              "x-usim": {
                "authoring": {
                  "editor": "textarea",
                  "group": "Learner-facing details",
                  "span": "full",
                  "order": 8
                }
              },
              "type": "string",
              "description": "Brief introduction shown to learners before starting. Include only what they should know initially; omit diagnoses, expected actions, outcomes, and facilitator guidance. For example: A patient arrives after a penetrating injury to the right chest. If omitted, Campus shows no description."
            },
            "coverPhoto": {
              "title": "Cover photo",
              "additionalProperties": false,
              "x-usim": {
                "authoring": {
                  "editor": "cover-photo",
                  "group": "Learner-facing details",
                  "span": "full",
                  "order": 9
                },
                "import": false
              },
              "type": "object",
              "required": [
                "dataUrl",
                "description"
              ],
              "properties": {
                "dataUrl": {
                  "title": "Cover photo",
                  "maxLength": 12582912,
                  "pattern": "^data:image/(png|jpeg|webp);base64,[A-Za-z0-9+/]+={0,2}$",
                  "type": "string",
                  "description": "Embedded PNG, JPEG, or WebP data URL populated by the cover photo upload control."
                },
                "description": {
                  "title": "Photo description",
                  "maxLength": 1000,
                  "x-usim": {
                    "authoring": {}
                  },
                  "type": "string",
                  "description": "Accessible description of the cover photo for learners who cannot see it. Describe visible content without revealing the teaching point."
                }
              },
              "description": "Optional learner-facing cover photo for Campus cards and scenario preview, separate from the patient portrait. Upload PNG, JPEG, or WebP; avoid images that reveal a diagnosis or expected action. Embedded bytes travel with the .usim file."
            }
          },
          "description": "Case identification, authorship, and the teaching context used to find and select this scenario."
        },
        "patients": {
          "minItems": 1,
          "title": "Patients",
          "type": "array",
          "items": {
            "additionalProperties": false,
            "x-usim": {
              "authoring": {}
            },
            "type": "object",
            "required": [
              "id",
              "name",
              "context"
            ],
            "properties": {
              "id": {
                "title": "Identifier",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "\\S",
                "x-usim": {
                  "authoring": {
                    "hidden": true
                  }
                },
                "type": "string",
                "description": "Stable patient identifier used by findings, actions, and other scenario references."
              },
              "name": {
                "title": "Patient name",
                "maxLength": 160,
                "x-usim": {
                  "authoring": {
                    "order": 0
                  }
                },
                "type": "string",
                "description": "The fictional patient's display name."
              },
              "preferredName": {
                "title": "Preferred name",
                "maxLength": 160,
                "x-usim": {
                  "authoring": {
                    "order": 3,
                    "section": "communication"
                  }
                },
                "type": "string",
                "description": "The name the patient asks others to use, when different from their display name. Omitted means unspecified. Builder displays this field in Communication while retaining its patient-level storage path."
              },
              "baselineFunction": {
                "title": "Baseline function",
                "maxLength": 2000,
                "x-usim": {
                  "authoring": {
                    "editor": "textarea",
                    "order": 4,
                    "section": "demographics",
                    "detail": "expanded",
                    "span": "full"
                  }
                },
                "type": "string",
                "description": "Usual mobility, cognition, self-care, and support. Distinguish baseline function from acute changes. Builder displays this field in expanded Demographics while retaining its patient-level storage path."
              },
              "communication": {
                "title": "Communication",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {
                    "columns": 2,
                    "order": 40,
                    "defaultOpen": false
                  }
                },
                "type": "object",
                "properties": {
                  "preferredLanguage": {
                    "title": "Preferred language",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "order": 0
                      }
                    },
                    "type": "string",
                    "description": "The patient's preferred language for this encounter. Do not infer fluency from ethnicity or name."
                  },
                  "interpreterNeeds": {
                    "title": "Interpreter needs",
                    "maxLength": 1000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea",
                        "order": 2
                      }
                    },
                    "type": "string",
                    "description": "Whether and how a qualified interpreter is needed, including spoken or signed language. Omitted means unspecified."
                  },
                  "method": {
                    "title": "Communication method",
                    "maxLength": 500,
                    "x-usim": {
                      "authoring": {
                        "order": 1
                      }
                    },
                    "type": "string",
                    "description": "How the patient communicates, such as speech, ASL, writing, or an augmentative device."
                  },
                  "supports": {
                    "title": "Communication supports",
                    "maxLength": 2000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea",
                        "order": 3
                      }
                    },
                    "type": "string",
                    "description": "Specific supports and interaction preferences, such as hearing aids, facing the patient, or caregiver participation."
                  }
                },
                "description": "Authored language, communication methods, interpreter needs, and accessibility supports. Do not infer these from identity or appearance. Builder places preferred name first, then preferred language and communication method together, followed by interpreter needs and communication supports. Rows stack at narrow widths."
              },
              "demographics": {
                "title": "Demographics",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {
                    "editor": "demographics",
                    "order": 5
                  }
                },
                "type": "object",
                "properties": {
                  "age": {
                    "additionalProperties": false,
                    "title": "Age",
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "minimum": 0,
                        "type": "number",
                        "description": "The authored age in the selected unit.",
                        "title": "Value"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "const": "days",
                            "type": "string",
                            "description": "The required literal value \"days\"."
                          },
                          {
                            "const": "months",
                            "type": "string",
                            "description": "The required literal value \"months\"."
                          },
                          {
                            "const": "years",
                            "type": "string",
                            "description": "The required literal value \"years\"."
                          }
                        ],
                        "description": "Age unit; preserve days or months when appropriate.",
                        "title": "Unit"
                      }
                    },
                    "x-usim": {
                      "authoring": {
                        "editor": "age",
                        "order": 0,
                        "detail": "simple"
                      }
                    },
                    "description": "Patient age with an explicit unit. Retain days or months for young infants."
                  },
                  "weight": {
                    "additionalProperties": false,
                    "title": "Weight",
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "number",
                        "description": "Authored weight in kilograms.",
                        "title": "Value"
                      },
                      "unit": {
                        "const": "kg",
                        "type": "string",
                        "description": "Canonical mass unit.",
                        "title": "Unit"
                      }
                    },
                    "description": "Patient weight, stored in kilograms. The editor can also display pounds.",
                    "x-usim": {
                      "authoring": {
                        "order": 3,
                        "detail": "simple"
                      }
                    }
                  },
                  "height": {
                    "additionalProperties": false,
                    "title": "Height",
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "minimum": 0,
                        "maximum": 400,
                        "type": "number",
                        "description": "Authored height in centimeters.",
                        "title": "Value"
                      },
                      "unit": {
                        "const": "cm",
                        "type": "string",
                        "description": "Canonical length unit.",
                        "title": "Unit"
                      }
                    },
                    "description": "Patient height, stored in centimeters. The editor can also display feet and inches.",
                    "x-usim": {
                      "authoring": {
                        "order": 2,
                        "detail": "simple"
                      }
                    }
                  },
                  "gender": {
                    "title": "Gender",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "editor": "gender",
                        "order": 1,
                        "detail": "simple"
                      }
                    },
                    "type": "string",
                    "description": "The patient's authored gender description."
                  },
                  "pronouns": {
                    "title": "Pronouns",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "suggestions": [
                          "She/her",
                          "He/him",
                          "They/them",
                          "She/they",
                          "He/they",
                          "Use name",
                          "Not specified"
                        ],
                        "order": 4,
                        "detail": "expanded"
                      }
                    },
                    "type": "string",
                    "description": "The patient's authored pronouns. Never infer these from name, appearance, gender, or sex assigned at birth."
                  },
                  "sexualOrientation": {
                    "title": "Sexual orientation",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "suggestions": [
                          "Straight / heterosexual",
                          "Gay",
                          "Lesbian",
                          "Bisexual",
                          "Pansexual",
                          "Asexual",
                          "Queer",
                          "Questioning",
                          "Not specified"
                        ],
                        "order": 5,
                        "detail": "expanded"
                      }
                    },
                    "type": "string",
                    "description": "Optional self-described sexual orientation. This does not specify sexual practices, anatomy, relationships, or pregnancy potential."
                  },
                  "sexAssignedAtBirth": {
                    "title": "Sex assigned at birth",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "suggestions": [
                          "Female",
                          "Male",
                          "Intersex",
                          "Unknown",
                          "Not specified"
                        ],
                        "order": 6,
                        "detail": "expanded"
                      }
                    },
                    "type": "string",
                    "description": "Optional authored sex assigned at birth, separate from gender. Does not establish current anatomy, reproductive history, or treatment."
                  },
                  "heightUnit": {
                    "type": "string",
                    "title": "Height display unit",
                    "enum": [
                      "cm",
                      "in",
                      "ft-in"
                    ],
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "description": "Preferred height display unit in the scenario editor; the measurement remains stored in centimeters."
                  },
                  "weightUnit": {
                    "type": "string",
                    "title": "Weight display unit",
                    "enum": [
                      "kg",
                      "lb"
                    ],
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "description": "Preferred weight display unit in the scenario editor; the measurement remains stored in kilograms."
                  }
                },
                "description": "Optional age, gender, pronouns, sexual orientation, sex assigned at birth, height, and weight. Unspecified fields remain unknown; identity does not determine clinical behavior."
              },
              "history": {
                "title": "History",
                "x-usim": {
                  "authoring": {
                    "editor": "history",
                    "order": 7
                  }
                },
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "id",
                        "content",
                        "disclosure",
                        "category"
                      ],
                      "properties": {
                        "id": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "authoring": {
                              "hidden": true
                            }
                          },
                          "type": "string",
                          "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                        },
                        "content": {
                          "type": "string",
                          "title": "Content",
                          "description": "The Content for this entry. Omit optional information that has not been specified."
                        },
                        "disclosure": {
                          "anyOf": [
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "anyOf": [
                                    {
                                      "const": "initial",
                                      "type": "string",
                                      "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                    },
                                    {
                                      "const": "facilitator",
                                      "type": "string",
                                      "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                    }
                                  ],
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "resourceId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-resource-response",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "resourceId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "resources",
                                      "label": "name"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "actionId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-action",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "actionId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "events.actions",
                                      "label": "label"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Successful completion of this action reveals the entry."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "conditionId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-condition",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "conditionId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "events.conditions",
                                      "label": "id"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            }
                          ],
                          "title": "Disclosure",
                          "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                        },
                        "occurredAtSeconds": {
                          "type": "number",
                          "title": "Occurred at seconds",
                          "description": "Time relative to scenario start; negative values describe pre-arrival events."
                        },
                        "category": {
                          "anyOf": [
                            {
                              "const": "chief-complaint",
                              "type": "string",
                              "description": "The required literal value \"chief-complaint\"."
                            },
                            {
                              "const": "present-illness",
                              "type": "string",
                              "description": "The required literal value \"present-illness\"."
                            },
                            {
                              "const": "medical",
                              "type": "string",
                              "description": "The required literal value \"medical\"."
                            },
                            {
                              "const": "surgical",
                              "type": "string",
                              "description": "The required literal value \"surgical\"."
                            },
                            {
                              "const": "medication",
                              "type": "string",
                              "description": "The required literal value \"medication\"."
                            },
                            {
                              "const": "family",
                              "type": "string",
                              "description": "The required literal value \"family\"."
                            },
                            {
                              "const": "social",
                              "type": "string",
                              "description": "The required literal value \"social\"."
                            }
                          ],
                          "title": "Category",
                          "description": "Select one of the declared Category alternatives; use the fields belonging to that alternative."
                        }
                      },
                      "description": "Separate entries for chief-complaint, present-illness, medical, surgical, medication, allergy, family, and social history."
                    },
                    {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "id",
                        "content",
                        "disclosure",
                        "category"
                      ],
                      "properties": {
                        "id": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "authoring": {
                              "hidden": true
                            }
                          },
                          "type": "string",
                          "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                        },
                        "content": {
                          "type": "string",
                          "title": "Content",
                          "description": "The Content for this entry. Omit optional information that has not been specified."
                        },
                        "disclosure": {
                          "anyOf": [
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "anyOf": [
                                    {
                                      "const": "initial",
                                      "type": "string",
                                      "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                    },
                                    {
                                      "const": "facilitator",
                                      "type": "string",
                                      "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                    }
                                  ],
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "resourceId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-resource-response",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "resourceId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "resources",
                                      "label": "name"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "actionId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-action",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "actionId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "events.actions",
                                      "label": "label"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Successful completion of this action reveals the entry."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            },
                            {
                              "additionalProperties": false,
                              "type": "object",
                              "required": [
                                "audience",
                                "mode",
                                "conditionId"
                              ],
                              "properties": {
                                "audience": {
                                  "minItems": 1,
                                  "uniqueItems": true,
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "const": "learner",
                                        "type": "string",
                                        "description": "The required literal value \"learner\"."
                                      },
                                      {
                                        "const": "facilitator",
                                        "type": "string",
                                        "description": "The required literal value \"facilitator\"."
                                      }
                                    ],
                                    "title": "Audience",
                                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                                  },
                                  "title": "Audience",
                                  "description": "Authorized output audiences. UI hints do not replace output filtering."
                                },
                                "mode": {
                                  "const": "on-condition",
                                  "type": "string",
                                  "title": "Mode",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                "conditionId": {
                                  "minLength": 1,
                                  "maxLength": 128,
                                  "pattern": "\\S",
                                  "title": "Identifier",
                                  "x-usim": {
                                    "reference": {
                                      "collection": "events.conditions",
                                      "label": "id"
                                    }
                                  },
                                  "type": "string",
                                  "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                                }
                              },
                              "description": "Structured disclosure details. Omitted optional values remain unspecified."
                            }
                          ],
                          "title": "Disclosure",
                          "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                        },
                        "occurredAtSeconds": {
                          "type": "number",
                          "title": "Occurred at seconds",
                          "description": "Time relative to scenario start; negative values describe pre-arrival events."
                        },
                        "category": {
                          "const": "allergy",
                          "type": "string",
                          "title": "Category",
                          "description": "The required literal value \"allergy\"."
                        },
                        "allergy": {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "substance"
                          ],
                          "properties": {
                            "substance": {
                              "maxLength": 1000,
                              "type": "string",
                              "title": "Substance",
                              "description": "The Substance for this entry. Omit optional information that has not been specified."
                            },
                            "reaction": {
                              "maxLength": 1000,
                              "type": "string",
                              "title": "Reaction",
                              "description": "The Reaction for this entry. Omit optional information that has not been specified."
                            },
                            "severity": {
                              "anyOf": [
                                {
                                  "const": "mild",
                                  "type": "string",
                                  "description": "The required literal value \"mild\"."
                                },
                                {
                                  "const": "moderate",
                                  "type": "string",
                                  "description": "The required literal value \"moderate\"."
                                },
                                {
                                  "const": "severe",
                                  "type": "string",
                                  "description": "The required literal value \"severe\"."
                                },
                                {
                                  "const": "unknown",
                                  "type": "string",
                                  "description": "The required literal value \"unknown\"."
                                }
                              ],
                              "title": "Severity",
                              "description": "Select one of the declared Severity alternatives; use the fields belonging to that alternative."
                            }
                          },
                          "title": "Allergy",
                          "description": "Structured allergy detail for category allergy only. Substance identifies the authored allergen; reaction describes the manifestation; severity describes that reaction, not future risk. Omitted reaction or severity remains unspecified."
                        }
                      },
                      "description": "Separate entries for chief-complaint, present-illness, medical, surgical, medication, allergy, family, and social history."
                    }
                  ],
                  "description": "Separate entries for chief-complaint, present-illness, medical, surgical, medication, allergy, family, and social history."
                },
                "description": "The history available about this patient, including symptoms, background, medications, and allergies."
              },
              "reviewOfSystems": {
                "type": "array",
                "items": {
                  "additionalProperties": false,
                  "type": "object",
                  "required": [
                    "system",
                    "findingIds"
                  ],
                  "properties": {
                    "system": {
                      "type": "string",
                      "title": "System",
                      "description": "The System for this entry. Omit optional information that has not been specified."
                    },
                    "findingIds": {
                      "minItems": 0,
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "findings",
                            "label": "code"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                      },
                      "title": "Finding ids",
                      "description": "Entries for Finding ids. An empty list means no entries have been authored."
                    }
                  },
                  "description": "Groups symptom findings by authored system heading without duplicating their values."
                },
                "title": "Structured system references",
                "x-usim": {
                  "authoring": {
                    "group": "Additional patient definitions",
                    "defaultOpen": false,
                    "order": 30,
                    "span": "full",
                    "hidden": true
                  }
                },
                "description": "Entries for Structured system references. An empty list means no entries have been authored."
              },
              "variables": {
                "title": "Physiologic variables",
                "x-usim": {
                  "authoring": {
                    "editor": "variables",
                    "addLabel": "Add variable",
                    "order": 9
                  }
                },
                "type": "array",
                "items": {
                  "additionalProperties": false,
                  "title": "Physiologic variable",
                  "type": "object",
                  "required": [
                    "id",
                    "concept",
                    "unit"
                  ],
                  "properties": {
                    "id": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "authoring": {
                          "hidden": true
                        }
                      },
                      "type": "string",
                      "description": "Stable variable identifier used by effects and findings."
                    },
                    "concept": {
                      "title": "Concept",
                      "type": "string",
                      "description": "The meaning of the variable, such as usim:hr for heart rate."
                    },
                    "value": {
                      "title": "Initial value",
                      "type": "number",
                      "description": "The initial numeric value in the declared unit."
                    },
                    "unit": {
                      "title": "Unit",
                      "type": "string",
                      "description": "The unit of this value; core concepts use the standard unit defined by the specification."
                    }
                  },
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:hr"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "beats/min"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:sbp"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "mmHg"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:dbp"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "mmHg"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:rr"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "breaths/min"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:spo2"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "%"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:pain"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "score"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 10
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:temperature"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "Cel"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:etco2"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "mmHg"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:artSbp"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "mmHg"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "concept": {
                            "const": "usim:artDbp"
                          }
                        },
                        "required": [
                          "concept"
                        ]
                      },
                      "then": {
                        "properties": {
                          "unit": {
                            "const": "mmHg"
                          },
                          "value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1000
                          }
                        }
                      }
                    }
                  ],
                  "description": "One numeric physiologic variable belonging to this patient."
                },
                "description": "Numeric physiologic state with explicit concepts and units; findings describe when values are measured or disclosed."
              },
              "monitor": {
                "title": "Monitor",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {
                    "editor": "monitor",
                    "order": 8
                  }
                },
                "type": "object",
                "properties": {
                  "rhythm": {
                    "type": "string",
                    "title": "Monitor rhythm",
                    "enum": [
                      "sinus",
                      "sinus_tachycardia",
                      "sinus_bradycardia",
                      "atrial_fibrillation",
                      "atrial_flutter",
                      "svt",
                      "ventricular_tachycardia",
                      "torsades",
                      "ventricular_fibrillation",
                      "asystole",
                      "av_block_1",
                      "av_block_2_mobitz_1",
                      "av_block_2_mobitz_2",
                      "av_block_3",
                      "junctional",
                      "ventricular_paced"
                    ],
                    "description": "The ECG rhythm displayed on the monitor. Select the rhythm separately from whether the patient has a palpable pulse."
                  },
                  "pulsePresent": {
                    "title": "Pulse present",
                    "type": "boolean",
                    "description": "Whether a palpable pulse is present. Use this to distinguish perfusing and pulseless presentations of the displayed rhythm."
                  },
                  "connections": {
                    "title": "Monitor connections",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "object",
                    "properties": {
                      "ecg": {
                        "title": "ECG",
                        "type": "boolean",
                        "description": "ECG: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "bloodPressure": {
                        "title": "Blood pressure cuff",
                        "type": "boolean",
                        "description": "Blood pressure cuff: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "spo2": {
                        "title": "Pulse oximetry",
                        "type": "boolean",
                        "description": "Pulse oximetry: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "respiration": {
                        "title": "Respiratory monitoring",
                        "type": "boolean",
                        "description": "Respiratory monitoring: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "temperature": {
                        "title": "Temperature probe",
                        "type": "boolean",
                        "description": "Temperature probe: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "capnography": {
                        "title": "Capnography",
                        "type": "boolean",
                        "description": "Capnography: connected exposes the available measurement; disconnected hides it without changing physiology."
                      },
                      "arterialPressure": {
                        "title": "Arterial pressure",
                        "type": "boolean",
                        "description": "Arterial pressure: connected exposes the available measurement; disconnected hides it without changing physiology."
                      }
                    },
                    "description": "Connected channels expose available measurements without changing physiology. An explicit empty patient connection map starts disconnected. Omitted event channels inherit their preceding connection. The patient switch has Monitor on the left and the switch on the right of one row, without visible ON/OFF labels; its accessible name explains Show on monitor initially. It determines baseline visibility, not whether a physiologic value exists. Omitted patient connections use routine monitoring defaults; capnography and arterial pressure start off without their corresponding patient measurements. Explicit event connections and saved run connections are separate overrides."
                  }
                },
                "description": "The monitor configuration used to present patient vital signs."
              },
              "airway": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "status"
                    ],
                    "properties": {
                      "status": {
                        "const": "natural",
                        "type": "string",
                        "title": "Status",
                        "description": "The required literal value \"natural\"."
                      }
                    },
                    "description": "Non-natural airway requires a device reference; presence does not imply correct placement or function."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "status",
                      "deviceId"
                    ],
                    "properties": {
                      "status": {
                        "anyOf": [
                          {
                            "const": "adjunct",
                            "type": "string",
                            "description": "The required literal value \"adjunct\"."
                          },
                          {
                            "const": "intubated",
                            "type": "string",
                            "description": "The required literal value \"intubated\"."
                          },
                          {
                            "const": "surgical",
                            "type": "string",
                            "description": "The required literal value \"surgical\"."
                          }
                        ],
                        "title": "Status",
                        "description": "Select one of the declared Status alternatives; use the fields belonging to that alternative."
                      },
                      "deviceId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "resources",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                      }
                    },
                    "description": "Non-natural airway requires a device reference; presence does not imply correct placement or function."
                  }
                ],
                "title": "Airway support",
                "x-usim": {
                  "authoring": {
                    "group": "Additional patient definitions",
                    "defaultOpen": false,
                    "order": 30,
                    "span": "full",
                    "hidden": true
                  }
                },
                "description": "Non-natural airway requires a device reference; presence does not imply correct placement or function."
              },
              "context": {
                "title": "Patient context",
                "maxLength": 8000,
                "x-usim": {
                  "authoring": {
                    "editor": "textarea",
                    "order": 1
                  }
                },
                "type": "string",
                "description": "The patient's opening situation and the context available at the start of the scenario."
              },
              "photo": {
                "title": "Patient photo",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {
                    "editor": "patient-photo",
                    "span": "full",
                    "order": 2
                  }
                },
                "type": "object",
                "required": [
                  "dataUrl",
                  "description"
                ],
                "properties": {
                  "dataUrl": {
                    "title": "Photo",
                    "maxLength": 12582912,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "The patient photo encoded as a data URL. Use the photo upload control to populate it."
                  },
                  "description": {
                    "title": "Photo description",
                    "maxLength": 1000,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "Describe the patient's appearance for readers who cannot see the photo."
                  }
                },
                "description": "An optional embedded patient photo that travels with the scenario. Upload a PNG, JPEG, or WebP image."
              }
            },
            "description": "One fictional patient and their authored presentation, history, examination, and findings."
          },
          "description": "The fictional patient's presentation, history, examination, and starting findings.",
          "x-usim": {
            "execution": {
              "capability": "multiple-patients",
              "minimumItems": 2
            }
          }
        },
        "assets": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "mediaType",
                  "description",
                  "license",
                  "attribution",
                  "path",
                  "sha256"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable asset reference used by results and outputs."
                  },
                  "mediaType": {
                    "type": "string",
                    "description": "Declared content type must match decoded asset type; unsupported active content is rejected."
                  },
                  "description": {
                    "type": "string",
                    "description": "Accessible description of the learner-visible content without hidden diagnostic explanation."
                  },
                  "license": {
                    "type": "string",
                    "description": "Reuse terms for this asset, with attribution in a separate field."
                  },
                  "attribution": {
                    "type": "string",
                    "description": "Creator and source credit."
                  },
                  "label": {
                    "type": "string",
                    "description": "The label for this entry. Omit optional information that has not been specified."
                  },
                  "transcriptAssetId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "assets",
                        "label": "description"
                      }
                    },
                    "type": "string",
                    "description": "Packaged accessible transcript; role filtering matches the original media."
                  },
                  "path": {
                    "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\).+$",
                    "type": "string",
                    "description": "Path under assets/ within the package. Reject absolute paths, .. segments, symlinks, duplicate paths, and external fetches."
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string",
                    "description": "Digest verified against bytes before use; integrity does not prove safety or authorship."
                  }
                },
                "description": "Structured assets details. Omitted optional values remain unspecified."
              },
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "mediaType",
                  "description",
                  "license",
                  "attribution",
                  "dataUrl",
                  "sha256"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable asset reference used by results and outputs."
                  },
                  "mediaType": {
                    "type": "string",
                    "description": "Declared content type must match decoded asset type; unsupported active content is rejected."
                  },
                  "description": {
                    "type": "string",
                    "description": "Accessible description of the learner-visible content without hidden diagnostic explanation."
                  },
                  "license": {
                    "type": "string",
                    "description": "Reuse terms for this asset, with attribution in a separate field."
                  },
                  "attribution": {
                    "type": "string",
                    "description": "Creator and source credit."
                  },
                  "label": {
                    "type": "string",
                    "description": "The label for this entry. Omit optional information that has not been specified."
                  },
                  "transcriptAssetId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "assets",
                        "label": "description"
                      }
                    },
                    "type": "string",
                    "description": "Packaged accessible transcript; role filtering matches the original media."
                  },
                  "dataUrl": {
                    "pattern": "^data:[^,]+;base64,",
                    "type": "string",
                    "description": "The data url for this entry. Omit optional information that has not been specified."
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string",
                    "description": "Digest verified against bytes before use; integrity does not prove safety or authorship."
                  }
                },
                "x-usim": {
                  "import": false
                },
                "description": "Structured assets details. Omitted optional values remain unspecified."
              },
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "mediaType",
                  "description",
                  "license",
                  "attribution",
                  "uri"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable asset reference used by results and outputs."
                  },
                  "mediaType": {
                    "type": "string",
                    "description": "Declared content type must match decoded asset type; unsupported active content is rejected."
                  },
                  "description": {
                    "type": "string",
                    "description": "Accessible description of the learner-visible content without hidden diagnostic explanation."
                  },
                  "license": {
                    "type": "string",
                    "description": "Reuse terms for this asset, with attribution in a separate field."
                  },
                  "attribution": {
                    "type": "string",
                    "description": "Creator and source credit."
                  },
                  "label": {
                    "type": "string",
                    "description": "The label for this entry. Omit optional information that has not been specified."
                  },
                  "transcriptAssetId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "assets",
                        "label": "description"
                      }
                    },
                    "type": "string",
                    "description": "Packaged accessible transcript; role filtering matches the original media."
                  },
                  "uri": {
                    "minLength": 1,
                    "type": "string",
                    "description": "The uri for this entry. Omit optional information that has not been specified."
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string",
                    "description": "Digest verified against bytes before use; integrity does not prove safety or authorship."
                  }
                },
                "description": "Structured assets details. Omitted optional values remain unspecified."
              }
            ],
            "description": "Select one of the declared assets alternatives; use the fields belonging to that alternative."
          },
          "description": "Portable media manifest referenced by diagnostics and role outputs."
        },
        "findings": {
          "title": "Findings",
          "x-usim": {
            "authoring": {
              "editor": "findings"
            }
          },
          "type": "array",
          "items": {
            "anyOf": [
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "patientId",
                  "code",
                  "kind",
                  "disclosure",
                  "status",
                  "value",
                  "unit"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable finding or measurement identity; a repeat collection creates a new finding ID."
                  },
                  "patientId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Patient to whom the finding belongs."
                  },
                  "code": {
                    "type": "string",
                    "description": "Namespaced concept, such as usim:general-appearance; codes do not imply external terminology certification."
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "const": "symptom",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "finding",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "measurement",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      }
                    ],
                    "description": "Separates reported experience, observed findings, and measured values."
                  },
                  "collectedAtSeconds": {
                    "type": "number",
                    "description": "Time of authored assessment or acquisition, possibly before baseline."
                  },
                  "availableAtSeconds": {
                    "minimum": 0,
                    "type": "number",
                    "description": "Earliest simulated time for release; disclosure conditions must also be satisfied."
                  },
                  "method": {
                    "type": "string",
                    "description": "Method, location, or equipment used to obtain the finding."
                  },
                  "disclosure": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "anyOf": [
                              {
                                "const": "initial",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              },
                              {
                                "const": "facilitator",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              }
                            ],
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "resourceId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-resource-response",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "resourceId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "resources",
                                "label": "name"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "actionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-action",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "actionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Successful completion of this action reveals the entry."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "conditionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-condition",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "conditionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.conditions",
                                "label": "id"
                              }
                            },
                            "type": "string",
                            "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      }
                    ],
                    "title": "Disclosure",
                    "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                  },
                  "reportedByActorId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "environment.actors",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Identifies the patient actor, relative, or colleague supplying the history."
                  },
                  "reliabilityNote": {
                    "type": "string",
                    "description": "Facilitator context on conflicting or incomplete history; visibility follows the finding's disclosure policy."
                  },
                  "variableId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients.*.variables",
                        "label": "id"
                      }
                    },
                    "type": "string",
                    "description": "On collection, snapshot this variable's current value into a new measurement; later trends do not rewrite past results."
                  },
                  "referenceInterval": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "context"
                    ],
                    "properties": {
                      "low": {
                        "type": "number",
                        "description": "Numeric low. Do not infer an omitted value."
                      },
                      "high": {
                        "type": "number",
                        "description": "Numeric high. Do not infer an omitted value."
                      },
                      "text": {
                        "type": "string",
                        "description": "The text for this entry. Omit optional information that has not been specified."
                      },
                      "unit": {
                        "type": "string",
                        "description": "The unit for this entry. Omit optional information that has not been specified."
                      },
                      "context": {
                        "type": "string",
                        "description": "The context for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "description": "At least one bound or text description; numeric bounds require the finding's unit and low must not exceed high. Context describes the authored population/method."
                  },
                  "flag": {
                    "anyOf": [
                      {
                        "const": "low",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "high",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "critical",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "none",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "not-interpreted",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      }
                    ],
                    "description": "Explicit authored flag, never inferred from a generic source default."
                  },
                  "status": {
                    "const": "known",
                    "type": "string",
                    "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                  },
                  "value": {
                    "type": "number",
                    "description": "Type must match the registered concept. Qualitative findings can be text or explicit booleans."
                  },
                  "unit": {
                    "type": "string",
                    "description": "Fixed by the concept definition; no inferred conversions."
                  }
                },
                "description": "Structured findings details. Omitted optional values remain unspecified."
              },
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "patientId",
                  "code",
                  "kind",
                  "disclosure",
                  "status",
                  "value"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable finding or measurement identity; a repeat collection creates a new finding ID."
                  },
                  "patientId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Patient to whom the finding belongs."
                  },
                  "code": {
                    "type": "string",
                    "description": "Namespaced concept, such as usim:general-appearance; codes do not imply external terminology certification."
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "const": "symptom",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "finding",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "measurement",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      }
                    ],
                    "description": "Separates reported experience, observed findings, and measured values."
                  },
                  "collectedAtSeconds": {
                    "type": "number",
                    "description": "Time of authored assessment or acquisition, possibly before baseline."
                  },
                  "availableAtSeconds": {
                    "minimum": 0,
                    "type": "number",
                    "description": "Earliest simulated time for release; disclosure conditions must also be satisfied."
                  },
                  "method": {
                    "type": "string",
                    "description": "Method, location, or equipment used to obtain the finding."
                  },
                  "disclosure": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "anyOf": [
                              {
                                "const": "initial",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              },
                              {
                                "const": "facilitator",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              }
                            ],
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "resourceId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-resource-response",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "resourceId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "resources",
                                "label": "name"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "actionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-action",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "actionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Successful completion of this action reveals the entry."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "conditionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-condition",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "conditionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.conditions",
                                "label": "id"
                              }
                            },
                            "type": "string",
                            "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      }
                    ],
                    "title": "Disclosure",
                    "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                  },
                  "reportedByActorId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "environment.actors",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Identifies the patient actor, relative, or colleague supplying the history."
                  },
                  "reliabilityNote": {
                    "type": "string",
                    "description": "Facilitator context on conflicting or incomplete history; visibility follows the finding's disclosure policy."
                  },
                  "variableId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients.*.variables",
                        "label": "id"
                      }
                    },
                    "type": "string",
                    "description": "On collection, snapshot this variable's current value into a new measurement; later trends do not rewrite past results."
                  },
                  "referenceInterval": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "context"
                    ],
                    "properties": {
                      "low": {
                        "type": "number",
                        "description": "Numeric low. Do not infer an omitted value."
                      },
                      "high": {
                        "type": "number",
                        "description": "Numeric high. Do not infer an omitted value."
                      },
                      "text": {
                        "type": "string",
                        "description": "The text for this entry. Omit optional information that has not been specified."
                      },
                      "unit": {
                        "type": "string",
                        "description": "The unit for this entry. Omit optional information that has not been specified."
                      },
                      "context": {
                        "type": "string",
                        "description": "The context for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "description": "At least one bound or text description; numeric bounds require the finding's unit and low must not exceed high. Context describes the authored population/method."
                  },
                  "flag": {
                    "anyOf": [
                      {
                        "const": "low",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "high",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "critical",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "none",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "not-interpreted",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      }
                    ],
                    "description": "Explicit authored flag, never inferred from a generic source default."
                  },
                  "status": {
                    "const": "known",
                    "type": "string",
                    "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                  },
                  "value": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Type must match the registered concept. Qualitative findings can be text or explicit booleans."
                      },
                      {
                        "type": "boolean",
                        "description": "Type must match the registered concept. Qualitative findings can be text or explicit booleans."
                      }
                    ],
                    "description": "Type must match the registered concept. Qualitative findings can be text or explicit booleans."
                  },
                  "unit": {
                    "type": "string",
                    "description": "Fixed by the concept definition; no inferred conversions."
                  }
                },
                "description": "Structured findings details. Omitted optional values remain unspecified."
              },
              {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "patientId",
                  "code",
                  "kind",
                  "disclosure",
                  "status"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable finding or measurement identity; a repeat collection creates a new finding ID."
                  },
                  "patientId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Patient to whom the finding belongs."
                  },
                  "code": {
                    "type": "string",
                    "description": "Namespaced concept, such as usim:general-appearance; codes do not imply external terminology certification."
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "const": "symptom",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "finding",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      },
                      {
                        "const": "measurement",
                        "type": "string",
                        "description": "Separates reported experience, observed findings, and measured values."
                      }
                    ],
                    "description": "Separates reported experience, observed findings, and measured values."
                  },
                  "collectedAtSeconds": {
                    "type": "number",
                    "description": "Time of authored assessment or acquisition, possibly before baseline."
                  },
                  "availableAtSeconds": {
                    "minimum": 0,
                    "type": "number",
                    "description": "Earliest simulated time for release; disclosure conditions must also be satisfied."
                  },
                  "method": {
                    "type": "string",
                    "description": "Method, location, or equipment used to obtain the finding."
                  },
                  "disclosure": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "anyOf": [
                              {
                                "const": "initial",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              },
                              {
                                "const": "facilitator",
                                "type": "string",
                                "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                              }
                            ],
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "resourceId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-resource-response",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "resourceId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "resources",
                                "label": "name"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "actionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-action",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "actionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Successful completion of this action reveals the entry."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "audience",
                          "mode",
                          "conditionId"
                        ],
                        "properties": {
                          "audience": {
                            "minItems": 1,
                            "uniqueItems": true,
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "const": "learner",
                                  "type": "string",
                                  "description": "The required literal value \"learner\"."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "The required literal value \"facilitator\"."
                                }
                              ],
                              "title": "Audience",
                              "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                            },
                            "title": "Audience",
                            "description": "Authorized output audiences. UI hints do not replace output filtering."
                          },
                          "mode": {
                            "const": "on-condition",
                            "type": "string",
                            "title": "Mode",
                            "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                          },
                          "conditionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.conditions",
                                "label": "id"
                              }
                            },
                            "type": "string",
                            "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                          }
                        },
                        "description": "Structured disclosure details. Omitted optional values remain unspecified."
                      }
                    ],
                    "title": "Disclosure",
                    "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                  },
                  "reportedByActorId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "environment.actors",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Identifies the patient actor, relative, or colleague supplying the history."
                  },
                  "reliabilityNote": {
                    "type": "string",
                    "description": "Facilitator context on conflicting or incomplete history; visibility follows the finding's disclosure policy."
                  },
                  "variableId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients.*.variables",
                        "label": "id"
                      }
                    },
                    "type": "string",
                    "description": "On collection, snapshot this variable's current value into a new measurement; later trends do not rewrite past results."
                  },
                  "referenceInterval": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "context"
                    ],
                    "properties": {
                      "low": {
                        "type": "number",
                        "description": "Numeric low. Do not infer an omitted value."
                      },
                      "high": {
                        "type": "number",
                        "description": "Numeric high. Do not infer an omitted value."
                      },
                      "text": {
                        "type": "string",
                        "description": "The text for this entry. Omit optional information that has not been specified."
                      },
                      "unit": {
                        "type": "string",
                        "description": "The unit for this entry. Omit optional information that has not been specified."
                      },
                      "context": {
                        "type": "string",
                        "description": "The context for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "description": "At least one bound or text description; numeric bounds require the finding's unit and low must not exceed high. Context describes the authored population/method."
                  },
                  "flag": {
                    "anyOf": [
                      {
                        "const": "low",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "high",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "critical",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "none",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      },
                      {
                        "const": "not-interpreted",
                        "type": "string",
                        "description": "Explicit authored flag, never inferred from a generic source default."
                      }
                    ],
                    "description": "Explicit authored flag, never inferred from a generic source default."
                  },
                  "status": {
                    "anyOf": [
                      {
                        "const": "unknown",
                        "type": "string",
                        "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                      },
                      {
                        "const": "not-assessed",
                        "type": "string",
                        "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                      },
                      {
                        "const": "pending",
                        "type": "string",
                        "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                      },
                      {
                        "const": "unavailable",
                        "type": "string",
                        "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                      }
                    ],
                    "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
                  },
                  "unit": {
                    "type": "string",
                    "description": "Fixed by the concept definition; no inferred conversions."
                  }
                },
                "description": "Structured findings details. Omitted optional values remain unspecified."
              }
            ],
            "description": "Select one of the declared findings alternatives; use the fields belonging to that alternative."
          },
          "description": "Authored symptoms, findings, and measurements with provenance, visibility, and availability."
        },
        "environment": {
          "additionalProperties": false,
          "x-usim": {
            "authoring": {}
          },
          "type": "object",
          "required": [
            "setting",
            "requirements"
          ],
          "properties": {
            "setting": {
              "title": "Setting",
              "maxLength": 2000,
              "x-usim": {
                "authoring": {
                  "editor": "textarea",
                  "order": 0
                }
              },
              "type": "string",
              "description": "Where the scenario takes place and the relevant features of the care environment."
            },
            "teamRoles": {
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "name",
                  "minCount",
                  "maxCount",
                  "brief"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "name": {
                    "type": "string",
                    "title": "Name",
                    "description": "The Name for this entry. Omit optional information that has not been specified."
                  },
                  "minCount": {
                    "minimum": 0,
                    "type": "integer",
                    "title": "Min count",
                    "description": "Numeric Min count, at least 0. Do not infer an omitted value."
                  },
                  "maxCount": {
                    "minimum": 0,
                    "type": "integer",
                    "title": "Max count",
                    "description": "Numeric Max count, at least 0. Do not infer an omitted value."
                  },
                  "brief": {
                    "type": "string",
                    "title": "Brief",
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea",
                        "span": "full"
                      }
                    },
                    "description": "The Brief for this entry. Omit optional information that has not been specified."
                  }
                },
                "description": "Portable learner role requirements. Counts are nonnegative with maxCount ≥ minCount; actual assignments belong to delivery records."
              },
              "title": "Team roles",
              "x-usim": {
                "authoring": {
                  "hidden": true
                }
              },
              "description": "Entries for Team roles. An empty list means no entries have been authored."
            },
            "requirements": {
              "title": "Preparation requirements",
              "maxItems": 32,
              "description": "Pre-session tasks for the simulation center, each with a concrete action and setup outcome. Equipment and supplies belong in equipment.",
              "x-usim": {
                "authoring": {
                  "addLabel": "Add requirement",
                  "editor": "requirements",
                  "order": 1
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "title": "Preparation requirement",
                "type": "object",
                "required": [
                  "id",
                  "description"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "description": {
                    "title": "Requirement",
                    "maxLength": 240,
                    "type": "string",
                    "description": "One pre-session setup task with a concrete outcome, such as programming initial manikin vital signs or briefing an actor."
                  },
                  "resourceIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "resources",
                          "label": "name"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Resources",
                    "description": "Entries for Resources. An empty list means no entries have been authored."
                  },
                  "substitutions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "The substitutions for this entry. Omit optional information that has not been specified."
                    },
                    "title": "Substitutions",
                    "description": "Entries for Substitutions. An empty list means no entries have been authored."
                  },
                  "required": {
                    "default": true,
                    "type": "boolean",
                    "title": "Required",
                    "description": "Whether Required applies. Omitted optional values remain unspecified."
                  }
                },
                "description": "One pre-session setup task with a concrete outcome, such as programming initial manikin vital signs or briefing an actor."
              }
            },
            "actors": {
              "title": "Scenario actors",
              "maxItems": 32,
              "x-usim": {
                "authoring": {
                  "addLabel": "Add actor",
                  "order": 3
                }
              },
              "type": "array",
              "items": {
                "title": "Actor",
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "name",
                  "role",
                  "brief"
                ],
                "properties": {
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
                  },
                  "name": {
                    "title": "Actor name",
                    "maxLength": 160,
                    "x-usim": {
                      "authoring": {
                        "order": 0
                      }
                    },
                    "type": "string",
                    "description": "The character's name or role-player label used to identify this actor."
                  },
                  "role": {
                    "title": "Actor role",
                    "maxLength": 1000,
                    "x-usim": {
                      "authoring": {
                        "order": 1
                      }
                    },
                    "type": "string",
                    "description": "The character's relationship to the patient or care team, such as parent, bedside nurse, or consultant."
                  },
                  "opening": {
                    "type": "string",
                    "title": "Opening line",
                    "x-usim": {
                      "authoring": {
                        "group": "Additional actor guidance",
                        "defaultOpen": false,
                        "order": 20,
                        "editor": "textarea",
                        "span": "full"
                      }
                    },
                    "description": "The Opening line for this entry. Omit optional information that has not been specified."
                  },
                  "knowledge": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "The knowledge for this entry. Omit optional information that has not been specified."
                    },
                    "title": "Known information",
                    "x-usim": {
                      "authoring": {
                        "group": "Additional actor guidance",
                        "defaultOpen": false,
                        "order": 20
                      }
                    },
                    "description": "Entries for Known information. An empty list means no entries have been authored."
                  },
                  "affect": {
                    "type": "string",
                    "title": "Affect",
                    "x-usim": {
                      "authoring": {
                        "group": "Additional actor guidance",
                        "defaultOpen": false,
                        "order": 20,
                        "editor": "textarea",
                        "span": "full"
                      }
                    },
                    "description": "The Affect for this entry. Omit optional information that has not been specified."
                  },
                  "cues": {
                    "type": "array",
                    "items": {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "id",
                        "conditionId",
                        "line",
                        "delivery",
                        "maxUses"
                      ],
                      "properties": {
                        "id": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "authoring": {
                              "hidden": true
                            }
                          },
                          "type": "string",
                          "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                        },
                        "conditionId": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.conditions",
                              "label": "id"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.conditions entry. Preserve the referenced entry when editing this field."
                        },
                        "line": {
                          "type": "string",
                          "title": "Line",
                          "x-usim": {
                            "authoring": {
                              "editor": "textarea",
                              "span": "full"
                            }
                          },
                          "description": "The Line for this entry. Omit optional information that has not been specified."
                        },
                        "delivery": {
                          "anyOf": [
                            {
                              "const": "facilitator",
                              "type": "string",
                              "description": "The required literal value \"facilitator\"."
                            },
                            {
                              "const": "display",
                              "type": "string",
                              "description": "The required literal value \"display\"."
                            }
                          ],
                          "title": "Delivery",
                          "description": "Select one of the declared Delivery alternatives; use the fields belonging to that alternative."
                        },
                        "maxUses": {
                          "minimum": 1,
                          "type": "integer",
                          "title": "Max uses",
                          "description": "Numeric Max uses, at least 1. Do not infer an omitted value."
                        }
                      },
                      "description": "Explicit trigger and repeat bound. Display sends authored text; facilitator means a prompt for a human actor."
                    },
                    "title": "Authored cues",
                    "x-usim": {
                      "authoring": {
                        "group": "Additional actor guidance",
                        "defaultOpen": false,
                        "order": 20
                      }
                    },
                    "description": "Entries for Authored cues. An empty list means no entries have been authored."
                  },
                  "brief": {
                    "title": "Actor brief",
                    "maxLength": 8000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea",
                        "order": 2,
                        "span": "full"
                      }
                    },
                    "type": "string",
                    "description": "Tell the actor what they know, how to behave, what to disclose, and how to respond to likely learner actions."
                  },
                  "demographics": {
                    "title": "Voice demographics",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {
                        "order": 3
                      }
                    },
                    "type": "object",
                    "properties": {
                      "age": {
                        "additionalProperties": false,
                        "title": "Age",
                        "type": "object",
                        "required": [
                          "value",
                          "unit"
                        ],
                        "properties": {
                          "value": {
                            "minimum": 0,
                            "type": "number",
                            "description": "The authored age in the selected unit.",
                            "title": "Value"
                          },
                          "unit": {
                            "anyOf": [
                              {
                                "const": "days",
                                "type": "string",
                                "description": "The required literal value \"days\"."
                              },
                              {
                                "const": "months",
                                "type": "string",
                                "description": "The required literal value \"months\"."
                              },
                              {
                                "const": "years",
                                "type": "string",
                                "description": "The required literal value \"years\"."
                              }
                            ],
                            "description": "Age unit; preserve days or months when appropriate.",
                            "title": "Unit"
                          }
                        },
                        "x-usim": {
                          "authoring": {
                            "editor": "age"
                          }
                        },
                        "description": "The character's authored age quantity, used to guide natural voice delivery without exaggeration."
                      },
                      "gender": {
                        "title": "Gender",
                        "maxLength": 160,
                        "x-usim": {
                          "authoring": {
                            "editor": "gender"
                          }
                        },
                        "type": "string",
                        "description": "The character's authored gender, used for default voice selection. Never inferred from their name or occupation."
                      }
                    },
                    "description": "Optional authored age and gender for voice casting. Omit unknown details; voice uses a neutral adult default."
                  }
                },
                "description": "One role-player's identity, role in the case, and instructions for responding to learners."
              },
              "description": "The people portraying scenario roles, with their names, roles, and briefing instructions."
            },
            "resetSteps": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "The reset steps for this entry. Omit optional information that has not been specified."
              },
              "title": "Reset steps",
              "x-usim": {
                "authoring": {
                  "group": "Reset steps",
                  "defaultOpen": false,
                  "order": 20
                }
              },
              "description": "Ordered steps to restore equipment, media, supplies, and actor starting conditions."
            },
            "equipment": {
              "title": "Equipment",
              "maxItems": 64,
              "x-usim": {
                "authoring": {
                  "addLabel": "Add item",
                  "order": 2
                }
              },
              "type": "array",
              "items": {
                "title": "Item",
                "maxLength": 1000,
                "x-usim": {
                  "authoring": {}
                },
                "type": "string",
                "description": "One item of equipment or supplies needed for the session, with configuration or an acceptable substitute when useful."
              },
              "description": "The equipment and supplies needed to run the scenario."
            },
            "patientScene": {
              "title": "Patient scene",
              "additionalProperties": false,
              "x-usim": {
                "import": false,
                "authoring": {
                  "editor": "scene",
                  "order": 4
                }
              },
              "type": "object",
              "required": [
                "modelUrl",
                "attribution",
                "markers"
              ],
              "properties": {
                "modelUrl": {
                  "title": "Patient model URL",
                  "minLength": 1,
                  "maxLength": 2000,
                  "type": "string",
                  "description": "The URL of the patient model to load in the 3D scene. Use a model accessible to the simulation viewer."
                },
                "attribution": {
                  "title": "Model attribution",
                  "maxLength": 2000,
                  "x-usim": {
                    "authoring": {}
                  },
                  "type": "string",
                  "description": "Credit the model creator and record the source and license or permission to use it."
                },
                "markers": {
                  "maxItems": 128,
                  "type": "array",
                  "items": {
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "object",
                    "required": [
                      "actionId",
                      "position",
                      "normal"
                    ],
                    "properties": {
                      "actionId": {
                        "title": "Marker action",
                        "maxLength": 128,
                        "minLength": 1,
                        "pattern": "\\S",
                        "x-usim": {
                          "reference": {
                            "collection": "events.actions",
                            "label": "label",
                            "excludeScheduled": true
                          },
                          "authoring": {}
                        },
                        "type": "string",
                        "description": "The existing learner action to invoke when this hotspot is selected; scheduled transitions cannot be selected."
                      },
                      "position": {
                        "minLength": 1,
                        "maxLength": 160,
                        "pattern": "^-?\\d+(?:\\.\\d+)?(?:m)?\\s+-?\\d+(?:\\.\\d+)?(?:m)?\\s+-?\\d+(?:\\.\\d+)?(?:m)?$",
                        "type": "string",
                        "description": "Hotspot location as three space-separated model-space coordinates (x y z), for example 0m 1m 0m.",
                        "title": "Position"
                      },
                      "normal": {
                        "minLength": 1,
                        "maxLength": 160,
                        "pattern": "^-?\\d+(?:\\.\\d+)?(?:m)?\\s+-?\\d+(?:\\.\\d+)?(?:m)?\\s+-?\\d+(?:\\.\\d+)?(?:m)?$",
                        "type": "string",
                        "description": "Hotspot surface direction as three space-separated vector components (x y z), for example 0 0 1.",
                        "title": "Normal"
                      }
                    },
                    "description": "One interaction hotspot with an action, a model-space position, and an outward-facing direction."
                  },
                  "description": "Clickable locations on the patient model, each linked to an existing learner interaction.",
                  "title": "Markers"
                }
              },
              "description": "The patient model and scene configuration shown during the simulation."
            }
          },
          "description": "The location, preparation, equipment, and people needed to deliver the simulation."
        },
        "education": {
          "additionalProperties": false,
          "x-usim": {
            "authoring": {}
          },
          "type": "object",
          "required": [
            "objectives",
            "debriefPrompts"
          ],
          "properties": {
            "rationale": {
              "title": "Educational rationale",
              "maxLength": 8000,
              "x-usim": {
                "authoring": {
                  "editor": "markdown",
                  "group": "Teaching context",
                  "order": 2
                }
              },
              "type": "string",
              "description": "Explain why this case is educationally useful and how its decisions and challenges support the learning objectives."
            },
            "preparation": {
              "title": "Preparation",
              "x-usim": {
                "authoring": {
                  "editor": "preparation",
                  "group": "Teaching context",
                  "order": 4
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "title": "Preparation activity",
                "type": "object",
                "required": [
                  "id",
                  "audience",
                  "instructions",
                  "assetIds"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "audience": {
                    "anyOf": [
                      {
                        "const": "learner",
                        "type": "string",
                        "description": "The required literal value \"learner\"."
                      },
                      {
                        "const": "facilitator",
                        "type": "string",
                        "description": "The required literal value \"facilitator\"."
                      }
                    ],
                    "title": "Audience",
                    "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                  },
                  "instructions": {
                    "title": "Preparation instructions",
                    "x-usim": {
                      "authoring": {
                        "editor": "markdown",
                        "links": true
                      }
                    },
                    "type": "string",
                    "description": "Rich-text instructions stored as Markdown for knowledge, skills, modules, or preparation learners should complete before starting."
                  },
                  "assetIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "assets",
                          "label": "description"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing assets entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Supporting materials",
                    "description": "Entries for Supporting materials. An empty list means no entries have been authored."
                  }
                },
                "description": "Preparation activities and packaged resources, with an explicit audience for each item. Instructions may use Markdown for formatted module directions and links; assetIds reference packaged learning documents. This describes preparation, not completion tracking or an enforced start gate. Builder presents prerequisite instructions and documents in Teaching context alongside the educational rationale."
              },
              "description": "Preparation activities and learner or facilitator materials. Asset references retain the source documents. Builder groups prerequisite instructions and documents in Teaching context alongside the educational rationale."
            },
            "objectives": {
              "title": "Learning objectives",
              "maxItems": 32,
              "x-usim": {
                "authoring": {
                  "editor": "objectives",
                  "order": 0
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "statement"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "A stable objective identifier. Preserve it when editing or reordering the objective."
                  },
                  "statement": {
                    "title": "Learning objective",
                    "maxLength": 1000,
                    "type": "string",
                    "description": "An observable learning outcome, using an action verb such as recognize, assess, communicate, or initiate."
                  },
                  "evidenceActionIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "events.actions",
                          "label": "label"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Evidence actions",
                    "description": "Entries for Evidence actions. An empty list means no entries have been authored."
                  },
                  "acgmeCompetencies": {
                    "uniqueItems": true,
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "const": "PC",
                          "type": "string",
                          "description": "The required literal value \"PC\"."
                        },
                        {
                          "const": "MK",
                          "type": "string",
                          "description": "The required literal value \"MK\"."
                        },
                        {
                          "const": "PBLI",
                          "type": "string",
                          "description": "The required literal value \"PBLI\"."
                        },
                        {
                          "const": "ICS",
                          "type": "string",
                          "description": "The required literal value \"ICS\"."
                        },
                        {
                          "const": "PROF",
                          "type": "string",
                          "description": "The required literal value \"PROF\"."
                        },
                        {
                          "const": "SBP",
                          "type": "string",
                          "description": "The required literal value \"SBP\"."
                        }
                      ],
                      "description": "One of the six ACGME core domain codes: PC, MK, PBLI, ICS, PROF, or SBP. Each code may appear only once per objective."
                    },
                    "description": "Optional author-selected ACGME core competency codes. Omitted or empty means unmapped. This is not a Milestone level or a judgment of competence. Do not infer mappings from source text that does not explicitly supply them.",
                    "title": "Acgme competencies"
                  },
                  "domain": {
                    "anyOf": [
                      {
                        "const": "knowledge",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "reasoning",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "technical-skill",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "communication",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "teamwork",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "professionalism",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      },
                      {
                        "const": "systems",
                        "type": "string",
                        "description": "Optional classification for discovery; it does not select a scoring algorithm."
                      }
                    ],
                    "title": "Domain",
                    "description": "Optional classification for discovery; it does not select a scoring algorithm."
                  },
                  "performance": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "context",
                      "expectedBehavior",
                      "successCriteria",
                      "scope"
                    ],
                    "properties": {
                      "context": {
                        "type": "string",
                        "title": "Context",
                        "description": "The Context for this entry. Omit optional information that has not been specified."
                      },
                      "expectedBehavior": {
                        "type": "string",
                        "title": "Expected behavior",
                        "description": "The Expected behavior for this entry. Omit optional information that has not been specified."
                      },
                      "successCriteria": {
                        "type": "string",
                        "title": "Success criteria",
                        "description": "The Success criteria for this entry. Omit optional information that has not been specified."
                      },
                      "scope": {
                        "anyOf": [
                          {
                            "const": "individual",
                            "type": "string",
                            "description": "The required literal value \"individual\"."
                          },
                          {
                            "const": "team",
                            "type": "string",
                            "description": "The required literal value \"team\"."
                          }
                        ],
                        "title": "Scope",
                        "description": "Select one of the declared Scope alternatives; use the fields belonging to that alternative."
                      }
                    },
                    "title": "Performance",
                    "description": "Observable behavior, conditions of performance, and acceptable standard. Team evidence cannot be attributed automatically to each individual."
                  },
                  "curriculumMappings": {
                    "type": "array",
                    "items": {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "framework",
                        "version",
                        "code",
                        "label"
                      ],
                      "properties": {
                        "framework": {
                          "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:",
                          "type": "string",
                          "title": "Framework",
                          "description": "The Framework for this entry. Omit optional information that has not been specified."
                        },
                        "version": {
                          "type": "string",
                          "title": "Version",
                          "description": "The Version for this entry. Omit optional information that has not been specified."
                        },
                        "code": {
                          "type": "string",
                          "title": "Code",
                          "description": "The Code for this entry. Omit optional information that has not been specified."
                        },
                        "label": {
                          "type": "string",
                          "title": "Label",
                          "description": "The Label for this entry. Omit optional information that has not been specified."
                        }
                      },
                      "description": "Curriculum or competency references; mappings are author assertions, not accreditation or equivalence. ACGME core competency mappings use framework https://www.acgme.org/programs-and-institutions/programs/common-program-requirements/, version core-competencies-2026-09, and codes PC, MK, PBLI, ICS, PROF, SBP. Specialty-specific Milestones require their own framework and version; do not infer levels from scenario scores."
                    },
                    "title": "Curriculum mappings",
                    "description": "Entries for Curriculum mappings. An empty list means no entries have been authored."
                  },
                  "learnerBrief": {
                    "type": "string",
                    "title": "Learner brief",
                    "description": "Learner-facing statement of the task or objective. Facilitator success criteria may contain spoilers and are not included implicitly."
                  }
                },
                "description": "One observable learning goal, using an action verb such as recognize, assess, communicate, or initiate."
              },
              "description": "The observable knowledge, skills, or behaviors learners should demonstrate."
            },
            "debriefPrompts": {
              "title": "Debrief prompt",
              "type": "array",
              "items": {
                "additionalProperties": false,
                "title": "Debrief prompt",
                "type": "object",
                "required": [
                  "id",
                  "question"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "objectiveIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "education.objectives",
                          "label": "statement"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing education.objectives entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Learning objectives",
                    "description": "Entries for Learning objectives. An empty list means no entries have been authored."
                  },
                  "question": {
                    "title": "Debrief prompt",
                    "maxLength": 12000,
                    "type": "string",
                    "description": "A prompt for facilitated reflection after the scenario. Formatting is stored as Markdown."
                  },
                  "facilitatorRationale": {
                    "type": "string",
                    "title": "Facilitator rationale",
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea",
                        "span": "full"
                      }
                    },
                    "description": "The Facilitator rationale for this entry. Omit optional information that has not been specified."
                  }
                },
                "description": "One reflection prompt with a stable ID and optional objective references and facilitator notes. Builder edits the primary question in the single Debrief prompt field and preserves additional existing questions and notes in scenario data without displaying them in the Builder."
              },
              "description": "Reflection prompts stored as a canonical array supporting multiple records. Builder provides a single primary Debrief prompt editor without add/remove controls. Additional existing records retain their IDs, questions, objective references, and facilitator notes; these additional details are preserved in scenario data and are not displayed in the Builder.",
              "x-usim": {
                "authoring": {
                  "order": 1,
                  "editor": "debrief"
                }
              }
            },
            "assessment": {
              "title": "Assessment",
              "maxItems": 64,
              "x-usim": {
                "authoring": {
                  "editor": "assessment",
                  "order": 3
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "label",
                  "points",
                  "feedback"
                ],
                "properties": {
                  "objectiveId": {
                    "title": "Learning objective",
                    "maxLength": 128,
                    "minLength": 1,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "education.objectives",
                        "label": "statement",
                        "excludeScheduled": false
                      },
                      "authoring": {
                        "emptyLabel": "No linked objective"
                      }
                    },
                    "type": "string",
                    "description": "Optional link to the stable ID of a structured learning objective. Multiple criteria may support one objective. No link means unspecified, never a failed objective."
                  },
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
                  },
                  "label": {
                    "title": "Skill or objective",
                    "maxLength": 1000,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "minLength": 1,
                    "pattern": "\\S",
                    "description": "Name the observable skill or objective being assessed, such as recognizing deterioration."
                  },
                  "evidence": {
                    "title": "Award credit when",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {},
                      "execution": {
                        "capability": "resource-request-assessment"
                      }
                    },
                    "type": "object",
                    "required": [
                      "kind",
                      "resourceIds"
                    ],
                    "properties": {
                      "kind": {
                        "const": "resource-request",
                        "type": "string",
                        "title": "Phase",
                        "description": "The required literal value \"resource-request\"."
                      },
                      "resourceIds": {
                        "minItems": 1,
                        "maxItems": 1000,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "title": "Resource",
                          "maxLength": 128,
                          "minLength": 1,
                          "pattern": "\\S",
                          "x-usim": {
                            "reference": {
                              "collection": "resources",
                              "label": "name",
                              "excludeScheduled": false
                            },
                            "authoring": {}
                          },
                          "type": "string",
                          "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                        },
                        "description": "Acceptable alternative resources. Any one accepted learner order earns credit; automatic event delivery does not. Delivery never determines this credit.",
                        "title": "Resources"
                      }
                    },
                    "description": "Choose action completion or an accepted resource request. Resource credit is earned at acceptance, including an early pending order, even if canceled or never delivered. Alternatives mean any one; use separate criteria when all treatments are required. Existing action-or-equivalent-resource criteria retain their saved behavior."
                  },
                  "actionId": {
                    "title": "Required action",
                    "maxLength": 128,
                    "minLength": 1,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "events.actions",
                        "label": "label",
                        "excludeScheduled": true
                      },
                      "authoring": {
                        "emptyLabel": "Choose an action"
                      }
                    },
                    "type": "string",
                    "description": "Select the learner action that earns credit for this criterion. Scheduled transitions cannot earn action credit."
                  },
                  "objectId": {
                    "title": "Equivalent resource",
                    "maxLength": 128,
                    "minLength": 1,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "resources",
                        "label": "name",
                        "excludeScheduled": false
                      },
                      "authoring": {
                        "emptyLabel": "No equivalent resource"
                      }
                    },
                    "type": "string",
                    "description": "Single equivalent resource. Used when objectIds is omitted; the required action's linked resource is used when both are omitted."
                  },
                  "objectIds": {
                    "title": "Equivalent resources",
                    "minItems": 1,
                    "maxItems": 1000,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "title": "Equivalent resource",
                      "maxLength": 128,
                      "minLength": 1,
                      "pattern": "\\S",
                      "x-usim": {
                        "reference": {
                          "collection": "resources",
                          "label": "name",
                          "excludeScheduled": false
                        },
                        "authoring": {}
                      },
                      "type": "string",
                      "description": "The identifier of a learner-requestable resource accepted as an alternative for this assessment criterion."
                    },
                    "description": "Alternative learner-requestable resources that earn credit for this criterion. Any selected request qualifies, using the earliest request time regardless of result delay. Points are awarded once. Omit to use objectId or the required action's linked resource when present."
                  },
                  "points": {
                    "title": "Points",
                    "minimum": 1,
                    "maximum": 100,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "number",
                    "description": "The weight of this criterion in the total score, from 1 to 100. Credit is awarded once when the criterion is met."
                  },
                  "withinSeconds": {
                    "title": "Deadline · seconds",
                    "minimum": 0,
                    "maximum": 86400,
                    "x-usim": {
                      "unit": "s",
                      "authoring": {}
                    },
                    "type": "number",
                    "description": "Latest qualifying action time in seconds from the start of the run, inclusive. Omit to assess the action without a deadline."
                  },
                  "feedback": {
                    "title": "Debrief guidance",
                    "maxLength": 8000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "Explain the expected behavior, why it matters, and what to discuss when the action is completed or missed."
                  },
                  "learningUrl": {
                    "title": "Learning material URL",
                    "maxLength": 2000,
                    "pattern": "^https://[^\\s]+$",
                    "type": "string",
                    "description": "An HTTPS link to learning material relevant to this criterion, such as a guideline or teaching resource."
                  }
                },
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "evidence": {}
                      },
                      "required": [
                        "evidence"
                      ]
                    },
                    "then": {
                      "not": {
                        "anyOf": [
                          {
                            "properties": {
                              "actionId": {}
                            },
                            "required": [
                              "actionId"
                            ]
                          },
                          {
                            "properties": {
                              "objectId": {}
                            },
                            "required": [
                              "objectId"
                            ]
                          },
                          {
                            "properties": {
                              "objectIds": {}
                            },
                            "required": [
                              "objectIds"
                            ]
                          }
                        ]
                      }
                    },
                    "else": {
                      "required": [
                        "actionId"
                      ]
                    }
                  }
                ],
                "description": "One scored criterion linking an observable skill to a recorded action, with points and debrief feedback."
              },
              "description": "The authored criteria used to assess learner performance."
            }
          },
          "description": "Learning goals, learner preparation, assessment criteria, and guidance for reflection after the case."
        },
        "resources": {
          "title": "Resources",
          "maxItems": 2048,
          "x-usim": {
            "authoring": {
              "editor": "resources"
            }
          },
          "type": "array",
          "items": {
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "equipment": {}
                  },
                  "required": [
                    "equipment"
                  ]
                },
                "then": {
                  "properties": {
                    "kind": {
                      "const": "equipment"
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "diagnostic": {
                      "type": "object",
                      "properties": {
                        "orthostaticResponse": {}
                      },
                      "required": [
                        "orthostaticResponse"
                      ]
                    }
                  },
                  "required": [
                    "diagnostic"
                  ]
                },
                "then": {
                  "properties": {
                    "kind": {
                      "const": "diagnostic"
                    },
                    "diagnostic": {
                      "type": "object",
                      "properties": {
                        "category": {
                          "const": "physiologic"
                        }
                      }
                    }
                  },
                  "required": [
                    "diagnostic"
                  ],
                  "not": {
                    "anyOf": [
                      {
                        "properties": {
                          "effects": {}
                        },
                        "required": [
                          "effects"
                        ]
                      },
                      {
                        "properties": {
                          "effectPercent": {}
                        },
                        "required": [
                          "effectPercent"
                        ]
                      },
                      {
                        "properties": {
                          "effectDelta": {}
                        },
                        "required": [
                          "effectDelta"
                        ]
                      },
                      {
                        "properties": {
                          "medicationResponse": {}
                        },
                        "required": [
                          "medicationResponse"
                        ]
                      }
                    ]
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "kind": {
                      "const": "diagnostic"
                    }
                  },
                  "required": [
                    "kind"
                  ]
                },
                "then": {
                  "properties": {
                    "diagnostic": {}
                  },
                  "required": [
                    "diagnostic"
                  ]
                },
                "else": {
                  "not": {
                    "properties": {
                      "diagnostic": {}
                    },
                    "required": [
                      "diagnostic"
                    ]
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "medicationOrderTemplate": {}
                  },
                  "required": [
                    "medicationOrderTemplate"
                  ]
                },
                "then": {
                  "properties": {
                    "kind": {
                      "const": "medication"
                    }
                  }
                }
              }
            ],
            "type": "object",
            "required": [
              "id",
              "kind",
              "name"
            ],
            "properties": {
              "id": {
                "title": "Identifier",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "\\S",
                "x-usim": {
                  "authoring": {
                    "hidden": true
                  }
                },
                "type": "string",
                "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
              },
              "kind": {
                "type": "string",
                "title": "Resource type",
                "enum": [
                  "medication",
                  "diagnostic",
                  "procedure",
                  "equipment",
                  "consultation",
                  "information"
                ],
                "description": "Categorize the resource for selection and display. Choosing a type alone does not define its physiologic effects."
              },
              "name": {
                "title": "Learner title",
                "maxLength": 240,
                "x-usim": {
                  "authoring": {}
                },
                "type": "string",
                "description": "The neutral title learners use to identify or request this resource. Include the dose or study details needed to distinguish similar choices."
              },
              "builderTitle": {
                "title": "Builder title",
                "maxLength": 240,
                "x-usim": {
                  "authoring": {}
                },
                "type": "string",
                "description": "An optional explanatory title for Builder selection and authoring, such as XR Pediatric Neck (2 Views): Esophageal Button Battery. Never use it as a learner label or spoken title. Omission uses name in Builder; name remains the learner title."
              },
              "hideFromMenu": {
                "title": "Hide until requested",
                "description": "Hide this resource from learner menus until requested. Explicit chat and voice requests remain available; pending and completed results remain visible.",
                "type": "boolean"
              },
              "diagnostic": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "category"
                ],
                "properties": {
                  "category": {
                    "anyOf": [
                      {
                        "const": "lab",
                        "type": "string",
                        "description": "The required literal value \"lab\"."
                      },
                      {
                        "const": "imaging",
                        "type": "string",
                        "description": "The required literal value \"imaging\"."
                      },
                      {
                        "const": "physiologic",
                        "type": "string",
                        "description": "The required literal value \"physiologic\"."
                      }
                    ],
                    "description": "Required only for diagnostic resources: lab for specimen-based tests, imaging for images and reports, or physiologic for recordings and functional measurements such as ECG, EEG, and spirometry.",
                    "title": "Category"
                  },
                  "specimen": {
                    "type": "string",
                    "title": "Specimen",
                    "description": "The Specimen for this entry. Omit optional information that has not been specified."
                  },
                  "collectionInstructions": {
                    "type": "string",
                    "title": "Collection instructions",
                    "description": "The Collection instructions for this entry. Omit optional information that has not been specified."
                  },
                  "resultIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "resources.*.results",
                          "label": "id"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing resources.*.results entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Result ids",
                    "description": "Entries for Result ids. An empty list means no entries have been authored."
                  },
                  "acquisition": {
                    "additionalProperties": false,
                    "type": "object",
                    "properties": {
                      "bodyRegion": {
                        "type": "string",
                        "title": "Body region",
                        "description": "The Body region for this entry. Omit optional information that has not been specified."
                      },
                      "view": {
                        "type": "string",
                        "title": "View",
                        "description": "The View for this entry. Omit optional information that has not been specified."
                      },
                      "technique": {
                        "type": "string",
                        "title": "Technique",
                        "description": "The Technique for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "title": "Acquisition",
                    "description": "Study-specific context independent of report interpretation."
                  },
                  "orthostaticResponse": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "systolicDrop",
                      "diastolicDrop"
                    ],
                    "properties": {
                      "patientId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing patients entry. Preserve the referenced entry when editing this field."
                      },
                      "systolicVariableId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing patients.*.variables entry. Preserve the referenced entry when editing this field."
                      },
                      "diastolicVariableId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing patients.*.variables entry. Preserve the referenced entry when editing this field."
                      },
                      "systolicDrop": {
                        "minimum": 0,
                        "maximum": 100,
                        "type": "number",
                        "description": "Subtract this many mmHg from the request-time resting systolic BP for the standing result.",
                        "title": "Systolic drop"
                      },
                      "diastolicDrop": {
                        "minimum": 0,
                        "maximum": 100,
                        "type": "number",
                        "description": "Subtract this many mmHg from the request-time resting diastolic BP for the standing result.",
                        "title": "Diastolic drop"
                      }
                    },
                    "description": "Report standing BP relative to current resting BP when requested, without changing resting physiology. An authored learner result takes precedence.",
                    "title": "Orthostatic response"
                  },
                  "ecg": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "leadConfiguration",
                      "findingIds",
                      "recordingAssetId"
                    ],
                    "properties": {
                      "leadConfiguration": {
                        "type": "string",
                        "title": "Lead configuration",
                        "description": "The Lead configuration for this entry. Omit optional information that has not been specified."
                      },
                      "paperSpeedMmPerSecond": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "title": "Paper speed mm per second",
                        "description": "Numeric Paper speed mm per second. Do not infer an omitted value."
                      },
                      "gainMmPerMv": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "title": "Gain mm per mv",
                        "description": "Numeric Gain mm per mv. Do not infer an omitted value."
                      },
                      "rhythmFindingId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "findings",
                            "label": "code"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                      },
                      "findingIds": {
                        "minItems": 0,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "findings",
                              "label": "code"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                        },
                        "title": "Finding ids",
                        "description": "Entries for Finding ids. An empty list means no entries have been authored."
                      },
                      "recordingAssetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "assets",
                            "label": "description"
                          }
                        },
                        "type": "string",
                        "description": "ECG image, signal, or video manifest entry with an accessible description."
                      }
                    },
                    "title": "Ecg",
                    "description": "Acquisition context plus independent rhythm and morphology findings; all supplied scale numbers must be positive."
                  }
                },
                "title": "Diagnostic",
                "description": "A named request with explicit result references. Laboratory requests require an authored specimen description."
              },
              "description": {
                "title": "Description shown to the learner",
                "maxLength": 8000,
                "x-usim": {
                  "authoring": {
                    "editor": "textarea"
                  }
                },
                "type": "string",
                "description": "Optional context about the resource and why it is available. Leave blank when the name is sufficient. Put findings released after use in Learner result."
              },
              "equipment": {
                "additionalProperties": false,
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "title": "Type",
                    "description": "The Type for this entry. Omit optional information that has not been specified."
                  },
                  "status": {
                    "anyOf": [
                      {
                        "const": "available",
                        "type": "string",
                        "description": "The required literal value \"available\"."
                      },
                      {
                        "const": "connected",
                        "type": "string",
                        "description": "The required literal value \"connected\"."
                      },
                      {
                        "const": "malfunctioning",
                        "type": "string",
                        "description": "The required literal value \"malfunctioning\"."
                      },
                      {
                        "const": "removed",
                        "type": "string",
                        "description": "The required literal value \"removed\"."
                      }
                    ],
                    "title": "Status",
                    "description": "Select one of the declared Status alternatives; use the fields belonging to that alternative."
                  },
                  "patientId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Identifier of an existing patients entry. Preserve the referenced entry when editing this field."
                  },
                  "site": {
                    "type": "string",
                    "title": "Site",
                    "description": "The Site for this entry. Omit optional information that has not been specified."
                  },
                  "size": {
                    "type": "string",
                    "title": "Size",
                    "description": "The Size for this entry. Omit optional information that has not been specified."
                  },
                  "measurementIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "findings",
                          "label": "code"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                    },
                    "title": "Measurement ids",
                    "description": "Entries for Measurement ids. An empty list means no entries have been authored."
                  },
                  "placement": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "confirmation"
                    ],
                    "properties": {
                      "placedAtSeconds": {
                        "type": "number",
                        "title": "Placed at seconds",
                        "description": "Numeric Placed at seconds. Do not infer an omitted value."
                      },
                      "confirmation": {
                        "anyOf": [
                          {
                            "const": "unknown",
                            "type": "string",
                            "description": "The required literal value \"unknown\"."
                          },
                          {
                            "const": "confirmed",
                            "type": "string",
                            "description": "The required literal value \"confirmed\"."
                          },
                          {
                            "const": "incorrect",
                            "type": "string",
                            "description": "The required literal value \"incorrect\"."
                          }
                        ],
                        "title": "Confirmation",
                        "description": "Select one of the declared Confirmation alternatives; use the fields belonging to that alternative."
                      },
                      "note": {
                        "type": "string",
                        "title": "Note",
                        "description": "The Note for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "title": "Placement",
                    "description": "Separate placement time and authored confirmation from mere presence."
                  },
                  "capabilities": {
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "The capabilities for this entry. Omit optional information that has not been specified."
                    },
                    "title": "Capabilities",
                    "description": "Named capabilities referenced by procedure prerequisites or environment requirements."
                  },
                  "monitorConnection": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "channel",
                      "connected"
                    ],
                    "properties": {
                      "channel": {
                        "anyOf": [
                          {
                            "anyOf": [
                              {
                                "const": "ecg",
                                "type": "string",
                                "description": "The required literal value \"ecg\"."
                              },
                              {
                                "const": "bloodPressure",
                                "type": "string",
                                "description": "The required literal value \"bloodPressure\"."
                              },
                              {
                                "const": "spo2",
                                "type": "string",
                                "description": "The required literal value \"spo2\"."
                              },
                              {
                                "const": "respiration",
                                "type": "string",
                                "description": "The required literal value \"respiration\"."
                              },
                              {
                                "const": "temperature",
                                "type": "string",
                                "description": "The required literal value \"temperature\"."
                              },
                              {
                                "const": "capnography",
                                "type": "string",
                                "description": "The required literal value \"capnography\"."
                              },
                              {
                                "const": "arterialPressure",
                                "type": "string",
                                "description": "The required literal value \"arterialPressure\"."
                              }
                            ],
                            "description": "Select one of the declared channel alternatives; use the fields belonging to that alternative."
                          },
                          {
                            "anyOf": [
                              {
                                "const": "all",
                                "type": "string",
                                "description": "The required literal value \"all\"."
                              },
                              {
                                "const": "standard",
                                "type": "string",
                                "description": "The required literal value \"standard\"."
                              }
                            ],
                            "description": "Select one of the declared channel alternatives; use the fields belonging to that alternative."
                          }
                        ],
                        "x-usim": {
                          "authoring": {
                            "choiceLabels": {
                              "ecg": "ECG",
                              "bloodPressure": "Blood pressure cuff",
                              "spo2": "Pulse oximetry",
                              "respiration": "Respiratory monitoring",
                              "temperature": "Temperature probe",
                              "capnography": "Capnography",
                              "arterialPressure": "Arterial pressure",
                              "all": "All channels",
                              "standard": "Standard monitoring"
                            },
                            "emptyLabel": "Not specified",
                            "clearObjectWhenEmpty": true
                          }
                        },
                        "description": "The monitor channel controlled by this equipment resource; all controls every channel; standard controls ECG, SpO2, NIBP, temperature, and respiratory rate.",
                        "title": "Channel"
                      },
                      "connected": {
                        "type": "boolean",
                        "x-usim": {
                          "authoring": {
                            "booleanControl": "switch",
                            "initialValue": false,
                            "enabledWhen": {
                              "property": "channel",
                              "present": true
                            }
                          }
                        },
                        "description": "True connects this channel; false disconnects it.",
                        "title": "Connected"
                      }
                    },
                    "x-usim": {
                      "authoring": {
                        "columns": 2
                      }
                    },
                    "description": "Connect or disconnect an equipment channel when this resource response is released.",
                    "title": "Monitor connection"
                  },
                  "ventilation": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "mode",
                      "settings",
                      "measurementIds",
                      "alarms"
                    ],
                    "properties": {
                      "mode": {
                        "type": "string",
                        "title": "Mode",
                        "description": "The Mode for this entry. Omit optional information that has not been specified."
                      },
                      "settings": {
                        "type": "array",
                        "items": {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "name",
                            "value",
                            "unit"
                          ],
                          "properties": {
                            "name": {
                              "type": "string",
                              "title": "Name",
                              "description": "The Name for this entry. Omit optional information that has not been specified."
                            },
                            "value": {
                              "type": "number",
                              "title": "Value",
                              "description": "Numeric Value. Do not infer an omitted value."
                            },
                            "unit": {
                              "type": "string",
                              "title": "Unit",
                              "description": "The Unit for this entry. Omit optional information that has not been specified."
                            }
                          },
                          "description": "Structured settings details. Omitted optional values remain unspecified."
                        },
                        "title": "Settings",
                        "description": "Entries for Settings. An empty list means no entries have been authored."
                      },
                      "measurementIds": {
                        "minItems": 0,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "findings",
                              "label": "code"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                        },
                        "title": "Measurement ids",
                        "description": "Entries for Measurement ids. An empty list means no entries have been authored."
                      },
                      "alarms": {
                        "type": "array",
                        "items": {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "id",
                            "conditionId",
                            "message",
                            "severity"
                          ],
                          "properties": {
                            "id": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "authoring": {
                                  "hidden": true
                                }
                              },
                              "type": "string",
                              "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                            },
                            "conditionId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "reference": {
                                  "collection": "events.conditions",
                                  "label": "id"
                                }
                              },
                              "type": "string",
                              "description": "Identifier of an existing events.conditions entry. Preserve the referenced entry when editing this field."
                            },
                            "message": {
                              "type": "string",
                              "title": "Message",
                              "description": "The Message for this entry. Omit optional information that has not been specified."
                            },
                            "severity": {
                              "anyOf": [
                                {
                                  "const": "advisory",
                                  "type": "string",
                                  "description": "The required literal value \"advisory\"."
                                },
                                {
                                  "const": "urgent",
                                  "type": "string",
                                  "description": "The required literal value \"urgent\"."
                                }
                              ],
                              "title": "Severity",
                              "description": "Select one of the declared Severity alternatives; use the fields belonging to that alternative."
                            }
                          },
                          "description": "Authored alarm conditions and visible messages, evaluated from explicit conditions."
                        },
                        "title": "Alarms",
                        "description": "Entries for Alarms. An empty list means no entries have been authored."
                      }
                    },
                    "title": "Ventilation",
                    "description": "Setting is { name: string, value: number, unit: string }; settings and findings remain distinct."
                  }
                },
                "title": "Equipment",
                "description": "Covers vascular access, urinary/gastric tubes, invasive monitoring, and other authored devices."
              },
              "medicationOrderTemplate": {
                "additionalProperties": false,
                "title": "Medication administration instructions",
                "type": "object",
                "properties": {
                  "dose": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "title": "Value",
                        "description": "Numeric Value. Do not infer an omitted value."
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "const": "mg",
                            "type": "string",
                            "description": "The required literal value \"mg\"."
                          },
                          {
                            "const": "mcg",
                            "type": "string",
                            "description": "The required literal value \"mcg\"."
                          },
                          {
                            "const": "g",
                            "type": "string",
                            "description": "The required literal value \"g\"."
                          },
                          {
                            "const": "mL",
                            "type": "string",
                            "description": "The required literal value \"mL\"."
                          },
                          {
                            "const": "L",
                            "type": "string",
                            "description": "The required literal value \"L\"."
                          },
                          {
                            "const": "units",
                            "type": "string",
                            "description": "The required literal value \"units\"."
                          },
                          {
                            "const": "apheresis unit",
                            "type": "string",
                            "description": "The required literal value \"apheresis unit\"."
                          },
                          {
                            "const": "mEq",
                            "type": "string",
                            "description": "The required literal value \"mEq\"."
                          },
                          {
                            "const": "mmol",
                            "type": "string",
                            "description": "The required literal value \"mmol\"."
                          },
                          {
                            "const": "mg/kg",
                            "type": "string",
                            "description": "The required literal value \"mg/kg\"."
                          },
                          {
                            "const": "mcg/kg",
                            "type": "string",
                            "description": "The required literal value \"mcg/kg\"."
                          },
                          {
                            "const": "g/kg",
                            "type": "string",
                            "description": "The required literal value \"g/kg\"."
                          },
                          {
                            "const": "mL/kg",
                            "type": "string",
                            "description": "The required literal value \"mL/kg\"."
                          },
                          {
                            "const": "units/kg",
                            "type": "string",
                            "description": "The required literal value \"units/kg\"."
                          },
                          {
                            "const": "mEq/kg",
                            "type": "string",
                            "description": "The required literal value \"mEq/kg\"."
                          },
                          {
                            "const": "mg PE/kg",
                            "type": "string",
                            "description": "The required literal value \"mg PE/kg\"."
                          }
                        ],
                        "title": "Unit",
                        "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                      }
                    },
                    "title": "Dose",
                    "description": "The amount for one administration. Enter a number and select its unit.",
                    "x-usim": {
                      "authoring": {
                        "order": 0,
                        "detail": "simple",
                        "editor": "quantity"
                      }
                    }
                  },
                  "route": {
                    "anyOf": [
                      {
                        "const": "Oral",
                        "type": "string",
                        "description": "The required literal value \"Oral\"."
                      },
                      {
                        "const": "IV",
                        "type": "string",
                        "description": "The required literal value \"IV\"."
                      },
                      {
                        "const": "IO",
                        "type": "string",
                        "description": "The required literal value \"IO\"."
                      },
                      {
                        "const": "Intramuscular",
                        "type": "string",
                        "description": "The required literal value \"Intramuscular\"."
                      },
                      {
                        "const": "Subcutaneous",
                        "type": "string",
                        "description": "The required literal value \"Subcutaneous\"."
                      },
                      {
                        "const": "Inhaled",
                        "type": "string",
                        "description": "The required literal value \"Inhaled\"."
                      },
                      {
                        "const": "Intranasal",
                        "type": "string",
                        "description": "The required literal value \"Intranasal\"."
                      },
                      {
                        "const": "Sublingual",
                        "type": "string",
                        "description": "The required literal value \"Sublingual\"."
                      },
                      {
                        "const": "Rectal",
                        "type": "string",
                        "description": "The required literal value \"Rectal\"."
                      },
                      {
                        "const": "Topical",
                        "type": "string",
                        "description": "The required literal value \"Topical\"."
                      },
                      {
                        "const": "IV / IO",
                        "type": "string",
                        "description": "The required literal value \"IV / IO\"."
                      },
                      {
                        "const": "Nebulized",
                        "type": "string",
                        "description": "The required literal value \"Nebulized\"."
                      },
                      {
                        "const": "Oral / NG",
                        "type": "string",
                        "description": "The required literal value \"Oral / NG\"."
                      },
                      {
                        "const": "Local infiltration",
                        "type": "string",
                        "description": "The required literal value \"Local infiltration\"."
                      },
                      {
                        "const": "Intratracheal",
                        "type": "string",
                        "description": "The required literal value \"Intratracheal\"."
                      },
                      {
                        "const": "Wound infiltration / IM",
                        "type": "string",
                        "description": "The required literal value \"Wound infiltration / IM\"."
                      }
                    ],
                    "title": "Route",
                    "description": "How the medication is administered. IV, IO, and subcutaneous routes also support an administration method.",
                    "x-usim": {
                      "authoring": {
                        "order": 1,
                        "detail": "simple"
                      }
                    }
                  },
                  "frequency": {
                    "anyOf": [
                      {
                        "const": "Once",
                        "type": "string",
                        "description": "The required literal value \"Once\"."
                      },
                      {
                        "const": "Every hour",
                        "type": "string",
                        "description": "The required literal value \"Every hour\"."
                      },
                      {
                        "const": "Every 4 hours",
                        "type": "string",
                        "description": "The required literal value \"Every 4 hours\"."
                      },
                      {
                        "const": "Every 6 hours",
                        "type": "string",
                        "description": "The required literal value \"Every 6 hours\"."
                      },
                      {
                        "const": "Every 8 hours",
                        "type": "string",
                        "description": "The required literal value \"Every 8 hours\"."
                      },
                      {
                        "const": "Every 12 hours",
                        "type": "string",
                        "description": "The required literal value \"Every 12 hours\"."
                      },
                      {
                        "const": "Daily",
                        "type": "string",
                        "description": "The required literal value \"Daily\"."
                      },
                      {
                        "const": "Custom",
                        "type": "string",
                        "description": "The required literal value \"Custom\"."
                      }
                    ],
                    "title": "Frequency",
                    "description": "How often the medication is intended to be given. Select Custom for another schedule. These instructions do not automatically schedule simulation doses.",
                    "x-usim": {
                      "authoring": {
                        "order": 2,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false
                      }
                    }
                  },
                  "customFrequency": {
                    "type": "string",
                    "title": "Custom frequency",
                    "description": "Describe the administration schedule in your own words.",
                    "x-usim": {
                      "authoring": {
                        "order": 3,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "visibleWhen": {
                          "property": "frequency",
                          "equals": "Custom"
                        }
                      }
                    }
                  },
                  "prn": {
                    "type": "boolean",
                    "title": "As needed (PRN)",
                    "description": "Whether this medication should be given only when needed rather than routinely.",
                    "x-usim": {
                      "authoring": {
                        "order": 4,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false
                      }
                    }
                  },
                  "prnReason": {
                    "type": "string",
                    "title": "PRN reason",
                    "description": "The symptom or condition that should prompt an as-needed dose.",
                    "x-usim": {
                      "authoring": {
                        "order": 5,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "span": "full",
                        "visibleWhen": {
                          "property": "prn",
                          "equals": true
                        }
                      }
                    }
                  },
                  "method": {
                    "anyOf": [
                      {
                        "const": "push-injection",
                        "type": "string",
                        "description": "The required literal value \"push-injection\"."
                      },
                      {
                        "const": "intermittent-infusion",
                        "type": "string",
                        "description": "The required literal value \"intermittent-infusion\"."
                      },
                      {
                        "const": "continuous-infusion",
                        "type": "string",
                        "description": "The required literal value \"continuous-infusion\"."
                      }
                    ],
                    "title": "Method",
                    "description": "Choose a push or injection, an infusion given intermittently, or an ongoing continuous infusion.",
                    "x-usim": {
                      "authoring": {
                        "order": 6,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "span": "full",
                        "choiceLabels": {
                          "push-injection": "Push / injection",
                          "intermittent-infusion": "Intermittent infusion",
                          "continuous-infusion": "Continuous infusion"
                        },
                        "visibleWhen": {
                          "property": "route",
                          "oneOf": [
                            "IV",
                            "IO",
                            "IV / IO",
                            "Subcutaneous",
                            "Oral / NG"
                          ]
                        }
                      }
                    }
                  },
                  "rate": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "title": "Value",
                        "description": "Numeric Value. Do not infer an omitted value."
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "const": "mL/hr",
                            "type": "string",
                            "description": "The required literal value \"mL/hr\"."
                          },
                          {
                            "const": "L/hr",
                            "type": "string",
                            "description": "The required literal value \"L/hr\"."
                          },
                          {
                            "const": "mL/kg/day",
                            "type": "string",
                            "description": "The required literal value \"mL/kg/day\"."
                          },
                          {
                            "const": "mg/hr",
                            "type": "string",
                            "description": "The required literal value \"mg/hr\"."
                          },
                          {
                            "const": "mg/min",
                            "type": "string",
                            "description": "The required literal value \"mg/min\"."
                          },
                          {
                            "const": "mcg/min",
                            "type": "string",
                            "description": "The required literal value \"mcg/min\"."
                          },
                          {
                            "const": "mcg/kg/min",
                            "type": "string",
                            "description": "The required literal value \"mcg/kg/min\"."
                          },
                          {
                            "const": "mcg/kg/hr",
                            "type": "string",
                            "description": "The required literal value \"mcg/kg/hr\"."
                          },
                          {
                            "const": "units/hr",
                            "type": "string",
                            "description": "The required literal value \"units/hr\"."
                          },
                          {
                            "const": "units/min",
                            "type": "string",
                            "description": "The required literal value \"units/min\"."
                          },
                          {
                            "const": "units/kg/hr",
                            "type": "string",
                            "description": "The required literal value \"units/kg/hr\"."
                          }
                        ],
                        "title": "Unit",
                        "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                      }
                    },
                    "title": "Rate",
                    "description": "The amount infused per unit of time. Select the unit that matches the intended infusion rate.",
                    "x-usim": {
                      "authoring": {
                        "order": 7,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "editor": "quantity",
                        "visibleWhen": {
                          "all": [
                            {
                              "property": "route",
                              "oneOf": [
                                "IV",
                                "IO",
                                "IV / IO",
                                "Subcutaneous",
                                "Oral / NG"
                              ]
                            },
                            {
                              "property": "method",
                              "oneOf": [
                                "intermittent-infusion",
                                "continuous-infusion"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  },
                  "duration": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "value": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "title": "Value",
                        "description": "Numeric Value. Do not infer an omitted value."
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "const": "minutes",
                            "type": "string",
                            "description": "The required literal value \"minutes\"."
                          },
                          {
                            "const": "hours",
                            "type": "string",
                            "description": "The required literal value \"hours\"."
                          }
                        ],
                        "title": "Unit",
                        "description": "Select one of the declared Unit alternatives; use the fields belonging to that alternative."
                      }
                    },
                    "title": "Infuse over",
                    "description": "Optional duration for administering the infusion. Leave blank if a duration is not specified.",
                    "x-usim": {
                      "authoring": {
                        "order": 8,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "editor": "quantity",
                        "visibleWhen": {
                          "all": [
                            {
                              "property": "route",
                              "oneOf": [
                                "IV",
                                "IO",
                                "IV / IO",
                                "Subcutaneous",
                                "Oral / NG"
                              ]
                            },
                            {
                              "property": "method",
                              "oneOf": [
                                "intermittent-infusion",
                                "continuous-infusion"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  },
                  "comments": {
                    "type": "string",
                    "title": "Comments",
                    "description": "Optional instructions or context specific to this medication resource.",
                    "x-usim": {
                      "authoring": {
                        "order": 9,
                        "detail": "expanded",
                        "group": "Administration details",
                        "defaultOpen": false,
                        "editor": "textarea",
                        "span": "full"
                      }
                    }
                  }
                },
                "description": "Optional resource order template. These authored instructions do not create an executed order, administration record, infusion, or repeat schedule. Hidden details are retained when route, method, frequency, or PRN changes.",
                "x-usim": {
                  "authoring": {
                    "columns": 2
                  }
                }
              },
              "source": {
                "title": "Source / attribution",
                "maxLength": 2000,
                "x-usim": {
                  "authoring": {}
                },
                "type": "string",
                "description": "Credit the source of the resource content, including a citation or URL when available. Attribution alone does not verify clinical accuracy."
              },
              "response": {
                "additionalProperties": false,
                "title": "Resource response",
                "type": "object",
                "properties": {
                  "earlyRequest": {
                    "additionalProperties": false,
                    "title": "Allow early requests",
                    "type": "object",
                    "properties": {
                      "message": {
                        "maxLength": 2000,
                        "title": "Waiting message",
                        "type": "string",
                        "description": "Optional acknowledgment while an accepted order waits. Leave blank for: Request received. We’ll let you know when it’s available."
                      }
                    },
                    "description": "Accept explicit chat orders before availability. The resource stays out of the menu until available or requested. Accepted orders wait for every event and response requirement, then the response delay begins. No request means no delivery. Cannot combine with automatic release.",
                    "x-usim": {
                      "execution": {
                        "capability": "resource-early-request"
                      }
                    }
                  },
                  "availableAfterResourceResponses": {
                    "minItems": 1,
                    "title": "Available after resource responses",
                    "description": "All listed resource responses must already exist before this request command begins, and simulation time must reach each persisted response availability time plus authored seconds. Response availability is not inferred administration. Gates new requests only; pending and already delivered results remain. Cannot combine with automatic release.",
                    "type": "array",
                    "items": {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "resourceId",
                        "seconds"
                      ],
                      "properties": {
                        "resourceId": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "resources",
                              "label": "name"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                        },
                        "seconds": {
                          "minimum": 0,
                          "maximum": 86400,
                          "type": "number",
                          "title": "Seconds",
                          "description": "Numeric Seconds, at least 0, at most 86400. Do not infer an omitted value."
                        }
                      },
                      "description": "Structured available after resource responses details. Omitted optional values remain unspecified."
                    },
                    "x-usim": {
                      "execution": {
                        "capability": "resource-response-availability"
                      }
                    }
                  },
                  "unavailableAfterResourceIds": {
                    "minItems": 1,
                    "uniqueItems": true,
                    "title": "Unavailable after requesting",
                    "description": "New requests are blocked once any listed resource has been requested, even while its result is pending. This describes request order, not confirmed administration. Results already requested remain available. Omitted means no request-order restriction.",
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "resources",
                          "label": "name"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                    },
                    "x-usim": {
                      "execution": {
                        "capability": "resource-request-availability"
                      }
                    }
                  },
                  "availableInStateIds": {
                    "minItems": 1,
                    "uniqueItems": true,
                    "title": "Available during events",
                    "description": "Only new requests in these events are allowed. Already requested results remain available and their delays continue after leaving the event. Omitted means available in every event.",
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "events.states",
                          "label": "title"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing events.states entry. Preserve the referenced entry when editing this field."
                    },
                    "x-usim": {
                      "execution": {
                        "capability": "resource-state-availability"
                      }
                    }
                  },
                  "releaseOnStateId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "When learners receive this result",
                    "x-usim": {
                      "reference": {
                        "collection": "events.states",
                        "label": "title"
                      }
                    },
                    "type": "string",
                    "description": "Choose when this resource result is released. With no linked event, learners request it in chat or from the bedside menu, and the response delay starts when the request is recorded. A linked event releases the result when that step starts, after any response delay; requests for non-diagnostic resources are checked against the action instructions. Diagnostic requests return only the requested test: completing an action does not order other tests linked to the same step. Timed or facilitator-delivered steps can still release their linked results automatically. If a step waits for required results, configure that link in Events."
                  },
                  "delaySeconds": {
                    "minimum": 0,
                    "type": "number",
                    "description": "Numeric delay seconds, at least 0. Do not infer an omitted value."
                  },
                  "effectIds": {
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "events.effects",
                          "label": "id"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                    },
                    "description": "Direct simulation effects are authored only for medication, procedure, and equipment resources. Diagnostic, consultation, and information resources retain result delivery, timing, availability, and Event links. Existing effects remain stored and executable, but must be moved to Events or the resource reclassified before publishing."
                  },
                  "nextStateId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "events.states",
                        "label": "title"
                      }
                    },
                    "type": "string",
                    "description": "Identifier of an existing events.states entry. Preserve the referenced entry when editing this field."
                  }
                },
                "description": "Structured Resource response details. Omitted optional values remain unspecified."
              },
              "sourceIds": {
                "type": "array",
                "items": {
                  "title": "Source",
                  "maxLength": 128,
                  "minLength": 1,
                  "pattern": "\\S",
                  "x-usim": {
                    "reference": {
                      "collection": "metadata.sources",
                      "label": "citation",
                      "excludeScheduled": false
                    },
                    "authoring": {}
                  },
                  "type": "string",
                  "description": "Identifier of an existing metadata.sources entry. Preserve the referenced entry when editing this field."
                },
                "description": "Entries for source ids. An empty list means no entries have been authored."
              },
              "medication": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "ingredient",
                  "formulation",
                  "allowedRoutes"
                ],
                "properties": {
                  "ingredient": {
                    "type": "string",
                    "description": "The ingredient for this entry. Omit optional information that has not been specified."
                  },
                  "formulation": {
                    "type": "string",
                    "description": "The formulation for this entry. Omit optional information that has not been specified."
                  },
                  "concentration": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "numerator",
                      "denominator"
                    ],
                    "properties": {
                      "numerator": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "value",
                          "unit"
                        ],
                        "properties": {
                          "value": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric value. Do not infer an omitted value."
                          },
                          "unit": {
                            "type": "string",
                            "description": "The unit for this entry. Omit optional information that has not been specified."
                          }
                        },
                        "description": "Structured numerator details. Omitted optional values remain unspecified."
                      },
                      "denominator": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "value",
                          "unit"
                        ],
                        "properties": {
                          "value": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric value. Do not infer an omitted value."
                          },
                          "unit": {
                            "type": "string",
                            "description": "The unit for this entry. Omit optional information that has not been specified."
                          }
                        },
                        "description": "Structured numerator details. Omitted optional values remain unspecified."
                      }
                    },
                    "description": "Structured concentration details. Omitted optional values remain unspecified."
                  },
                  "allowedRoutes": {
                    "minItems": 1,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "The allowed routes for this entry. Omit optional information that has not been specified."
                    },
                    "description": "Entries for allowed routes. An empty list means no entries have been authored."
                  }
                },
                "description": "Reusable product definition. QuantityRatio is numerator Quantity / denominator Quantity; positive denominator is required."
              },
              "consultation": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "service",
                  "actorId",
                  "requestedInformation",
                  "responseResultIds"
                ],
                "properties": {
                  "service": {
                    "type": "string",
                    "description": "The service for this entry. Omit optional information that has not been specified."
                  },
                  "actorId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "environment.actors",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Identifier of an existing environment.actors entry. Preserve the referenced entry when editing this field."
                  },
                  "requestedInformation": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "The requested information for this entry. Omit optional information that has not been specified."
                    },
                    "description": "Entries for requested information. An empty list means no entries have been authored."
                  },
                  "responseResultIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "resources.*.results",
                          "label": "id"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing resources.*.results entry. Preserve the referenced entry when editing this field."
                    },
                    "description": "Entries for response result ids. An empty list means no entries have been authored."
                  }
                },
                "description": "A structured exchange with authored requests and responses rather than a one-line result."
              },
              "procedure": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "indication",
                  "requiredResourceIds",
                  "steps",
                  "outcomeActionId"
                ],
                "properties": {
                  "indication": {
                    "type": "string",
                    "description": "The indication for this entry. Omit optional information that has not been specified."
                  },
                  "requiredResourceIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "resources",
                          "label": "name"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                    },
                    "description": "Entries for required resource ids. An empty list means no entries have been authored."
                  },
                  "steps": {
                    "minItems": 1,
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "id",
                            "instruction",
                            "evidence",
                            "critical"
                          ],
                          "properties": {
                            "id": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "authoring": {
                                  "hidden": true
                                }
                              },
                              "type": "string",
                              "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                            },
                            "instruction": {
                              "type": "string",
                              "description": "The instruction for this entry. Omit optional information that has not been specified."
                            },
                            "evidence": {
                              "const": "facilitator",
                              "type": "string",
                              "description": "The required literal value \"facilitator\"."
                            },
                            "critical": {
                              "type": "boolean",
                              "description": "Whether critical applies. Omitted optional values remain unspecified."
                            }
                          },
                          "description": "Ordered observable steps. Action evidence requires actionId; facilitator evidence is recorded during the run."
                        },
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "id",
                            "instruction",
                            "evidence",
                            "actionId",
                            "critical"
                          ],
                          "properties": {
                            "id": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "authoring": {
                                  "hidden": true
                                }
                              },
                              "type": "string",
                              "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                            },
                            "instruction": {
                              "type": "string",
                              "description": "The instruction for this entry. Omit optional information that has not been specified."
                            },
                            "evidence": {
                              "const": "action",
                              "type": "string",
                              "description": "The required literal value \"action\"."
                            },
                            "actionId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "reference": {
                                  "collection": "events.actions",
                                  "label": "label"
                                }
                              },
                              "type": "string",
                              "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                            },
                            "critical": {
                              "type": "boolean",
                              "description": "Whether critical applies. Omitted optional values remain unspecified."
                            }
                          },
                          "description": "Ordered observable steps. Action evidence requires actionId; facilitator evidence is recorded during the run."
                        }
                      ],
                      "description": "Ordered observable steps. Action evidence requires actionId; facilitator evidence is recorded during the run."
                    },
                    "description": "Entries for steps. An empty list means no entries have been authored."
                  },
                  "outcomeActionId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "events.actions",
                        "label": "label"
                      }
                    },
                    "type": "string",
                    "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                  },
                  "complications": {
                    "type": "array",
                    "items": {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "id",
                        "description",
                        "conditionId",
                        "effectIds"
                      ],
                      "properties": {
                        "id": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "authoring": {
                              "hidden": true
                            }
                          },
                          "type": "string",
                          "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                        },
                        "description": {
                          "type": "string",
                          "description": "The description for this entry. Omit optional information that has not been specified."
                        },
                        "conditionId": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.conditions",
                              "label": "id"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.conditions entry. Preserve the referenced entry when editing this field."
                        },
                        "effectIds": {
                          "type": "array",
                          "items": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.effects",
                                "label": "id"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                          },
                          "description": "Entries for effect ids. An empty list means no entries have been authored."
                        }
                      },
                      "description": "Conditional authored consequences evaluated once at procedure completion, in listed order."
                    },
                    "description": "Entries for complications. An empty list means no entries have been authored."
                  }
                },
                "description": "Preparation and performance content with an explicit action deciding the authored result."
              },
              "results": {
                "type": "array",
                "items": {
                  "additionalProperties": false,
                  "type": "object",
                  "required": [
                    "id",
                    "content",
                    "findingIds",
                    "assetIds",
                    "disclosure"
                  ],
                  "properties": {
                    "id": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "authoring": {
                          "hidden": true
                        }
                      },
                      "type": "string",
                      "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                    },
                    "content": {
                      "type": "string",
                      "description": "The content for this entry. Omit optional information that has not been specified."
                    },
                    "findingIds": {
                      "minItems": 0,
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "findings",
                            "label": "code"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing findings entry. Preserve the referenced entry when editing this field."
                      },
                      "description": "Entries for finding ids. An empty list means no entries have been authored."
                    },
                    "assetIds": {
                      "minItems": 0,
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "assets",
                            "label": "description"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing assets entry. Preserve the referenced entry when editing this field."
                      },
                      "description": "Entries for asset ids. An empty list means no entries have been authored."
                    },
                    "disclosure": {
                      "anyOf": [
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "audience",
                            "mode"
                          ],
                          "properties": {
                            "audience": {
                              "minItems": 1,
                              "uniqueItems": true,
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "const": "learner",
                                    "type": "string",
                                    "description": "The required literal value \"learner\"."
                                  },
                                  {
                                    "const": "facilitator",
                                    "type": "string",
                                    "description": "The required literal value \"facilitator\"."
                                  }
                                ],
                                "title": "Audience",
                                "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                              },
                              "title": "Audience",
                              "description": "Authorized output audiences. UI hints do not replace output filtering."
                            },
                            "mode": {
                              "anyOf": [
                                {
                                  "const": "initial",
                                  "type": "string",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                },
                                {
                                  "const": "facilitator",
                                  "type": "string",
                                  "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                                }
                              ],
                              "title": "Mode",
                              "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                            }
                          },
                          "description": "Structured disclosure details. Omitted optional values remain unspecified."
                        },
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "audience",
                            "mode",
                            "resourceId"
                          ],
                          "properties": {
                            "audience": {
                              "minItems": 1,
                              "uniqueItems": true,
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "const": "learner",
                                    "type": "string",
                                    "description": "The required literal value \"learner\"."
                                  },
                                  {
                                    "const": "facilitator",
                                    "type": "string",
                                    "description": "The required literal value \"facilitator\"."
                                  }
                                ],
                                "title": "Audience",
                                "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                              },
                              "title": "Audience",
                              "description": "Authorized output audiences. UI hints do not replace output filtering."
                            },
                            "mode": {
                              "const": "on-resource-response",
                              "type": "string",
                              "title": "Mode",
                              "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                            },
                            "resourceId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "reference": {
                                  "collection": "resources",
                                  "label": "name"
                                }
                              },
                              "type": "string",
                              "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                            }
                          },
                          "description": "Structured disclosure details. Omitted optional values remain unspecified."
                        },
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "audience",
                            "mode",
                            "actionId"
                          ],
                          "properties": {
                            "audience": {
                              "minItems": 1,
                              "uniqueItems": true,
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "const": "learner",
                                    "type": "string",
                                    "description": "The required literal value \"learner\"."
                                  },
                                  {
                                    "const": "facilitator",
                                    "type": "string",
                                    "description": "The required literal value \"facilitator\"."
                                  }
                                ],
                                "title": "Audience",
                                "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                              },
                              "title": "Audience",
                              "description": "Authorized output audiences. UI hints do not replace output filtering."
                            },
                            "mode": {
                              "const": "on-action",
                              "type": "string",
                              "title": "Mode",
                              "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                            },
                            "actionId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "reference": {
                                  "collection": "events.actions",
                                  "label": "label"
                                }
                              },
                              "type": "string",
                              "description": "Successful completion of this action reveals the entry."
                            }
                          },
                          "description": "Structured disclosure details. Omitted optional values remain unspecified."
                        },
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "audience",
                            "mode",
                            "conditionId"
                          ],
                          "properties": {
                            "audience": {
                              "minItems": 1,
                              "uniqueItems": true,
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "const": "learner",
                                    "type": "string",
                                    "description": "The required literal value \"learner\"."
                                  },
                                  {
                                    "const": "facilitator",
                                    "type": "string",
                                    "description": "The required literal value \"facilitator\"."
                                  }
                                ],
                                "title": "Audience",
                                "description": "Select one of the declared Audience alternatives; use the fields belonging to that alternative."
                              },
                              "title": "Audience",
                              "description": "Authorized output audiences. UI hints do not replace output filtering."
                            },
                            "mode": {
                              "const": "on-condition",
                              "type": "string",
                              "title": "Mode",
                              "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
                            },
                            "conditionId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "reference": {
                                  "collection": "events.conditions",
                                  "label": "id"
                                }
                              },
                              "type": "string",
                              "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
                            }
                          },
                          "description": "Structured disclosure details. Omitted optional values remain unspecified."
                        }
                      ],
                      "title": "Disclosure",
                      "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
                    },
                    "interpretation": {
                      "additionalProperties": false,
                      "type": "object",
                      "required": [
                        "facilitator"
                      ],
                      "properties": {
                        "learner": {
                          "type": "string",
                          "description": "The learner for this entry. Omit optional information that has not been specified."
                        },
                        "facilitator": {
                          "type": "string",
                          "description": "The facilitator for this entry. Omit optional information that has not been specified."
                        }
                      },
                      "description": "Separate diagnostic or teaching explanation from the raw learner result."
                    },
                    "panelName": {
                      "type": "string",
                      "description": "Human-readable panel grouping; does not inject assumed analytes."
                    },
                    "specimenStatus": {
                      "anyOf": [
                        {
                          "const": "adequate",
                          "type": "string",
                          "description": "Allows rejected or unavailable specimens to drive a repeat-collection branch."
                        },
                        {
                          "const": "inadequate",
                          "type": "string",
                          "description": "Allows rejected or unavailable specimens to drive a repeat-collection branch."
                        },
                        {
                          "const": "not-collected",
                          "type": "string",
                          "description": "Allows rejected or unavailable specimens to drive a repeat-collection branch."
                        }
                      ],
                      "description": "Allows rejected or unavailable specimens to drive a repeat-collection branch."
                    }
                  },
                  "description": "Named result combines authored report text, structured findings, media, and audience rules."
                },
                "description": "Entries for results. An empty list means no entries have been authored."
              }
            },
            "description": "One resource with learner-facing information, release timing, and any authored response or patient changes."
          },
          "description": "Medications, tests, procedures, and other resources available in the case. Each resource can be used once per run; use separate entries for repeat doses or serial results."
        },
        "events": {
          "additionalProperties": false,
          "x-usim": {
            "authoring": {}
          },
          "type": "object",
          "required": [
            "states",
            "actions"
          ],
          "properties": {
            "flags": {
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "initialValue"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "initialValue": {
                    "type": "boolean",
                    "description": "Whether initial value applies. Omitted optional values remain unspecified."
                  }
                },
                "description": "Concurrent facts such as ownership-agreed; flags coexist independently of the single active phase."
              },
              "description": "Entries for flags. An empty list means no entries have been authored."
            },
            "conditions": {
              "type": "array",
              "items": {
                "additionalProperties": false,
                "type": "object",
                "required": [
                  "id",
                  "all"
                ],
                "properties": {
                  "id": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                  },
                  "all": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "targetId",
                            "operator",
                            "value"
                          ],
                          "properties": {
                            "targetId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "authoring": {
                                  "hidden": true
                                }
                              },
                              "type": "string",
                              "description": "The Identifier for this entry. Omit optional information that has not been specified."
                            },
                            "operator": {
                              "anyOf": [
                                {
                                  "const": "eq",
                                  "type": "string",
                                  "description": "The required literal value \"eq\"."
                                },
                                {
                                  "const": "ne",
                                  "type": "string",
                                  "description": "The required literal value \"ne\"."
                                },
                                {
                                  "const": "lt",
                                  "type": "string",
                                  "description": "The required literal value \"lt\"."
                                },
                                {
                                  "const": "lte",
                                  "type": "string",
                                  "description": "The required literal value \"lte\"."
                                },
                                {
                                  "const": "gt",
                                  "type": "string",
                                  "description": "The required literal value \"gt\"."
                                },
                                {
                                  "const": "gte",
                                  "type": "string",
                                  "description": "The required literal value \"gte\"."
                                }
                              ],
                              "description": "Select one of the declared operator alternatives; use the fields belonging to that alternative."
                            },
                            "value": {
                              "type": "number",
                              "description": "Numeric value. Do not infer an omitted value."
                            }
                          },
                          "description": "Operand types must match the target. Boolean flags support only eq/ne; numeric comparisons use the variable's declared unit."
                        },
                        {
                          "additionalProperties": false,
                          "type": "object",
                          "required": [
                            "targetId",
                            "operator",
                            "value"
                          ],
                          "properties": {
                            "targetId": {
                              "minLength": 1,
                              "maxLength": 128,
                              "pattern": "\\S",
                              "title": "Identifier",
                              "x-usim": {
                                "authoring": {
                                  "hidden": true
                                }
                              },
                              "type": "string",
                              "description": "The Identifier for this entry. Omit optional information that has not been specified."
                            },
                            "operator": {
                              "anyOf": [
                                {
                                  "const": "eq",
                                  "type": "string",
                                  "description": "The required literal value \"eq\"."
                                },
                                {
                                  "const": "ne",
                                  "type": "string",
                                  "description": "The required literal value \"ne\"."
                                }
                              ],
                              "description": "Select one of the declared operator alternatives; use the fields belonging to that alternative."
                            },
                            "value": {
                              "type": "boolean",
                              "description": "Whether value applies. Omitted optional values remain unspecified."
                            }
                          },
                          "description": "Operand types must match the target. Boolean flags support only eq/ne; numeric comparisons use the variable's declared unit."
                        }
                      ],
                      "description": "Operand types must match the target. Boolean flags support only eq/ne; numeric comparisons use the variable's declared unit."
                    },
                    "description": "Entries for all. An empty list means no entries have been authored."
                  }
                },
                "description": "All predicates must be true; empty all is explicitly true. No recursive or executable expression text."
              },
              "description": "Named, bounded predicates referenced by actions, states, and cues."
            },
            "schedules": {
              "title": "Schedules",
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "delaySeconds",
                      "priority",
                      "effectIds",
                      "anchor"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Named event allows explicit cancellation."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label for this entry. Omit optional information that has not been specified."
                      },
                      "description": {
                        "type": "string",
                        "description": "The description for this entry. Omit optional information that has not been specified."
                      },
                      "resourceId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "resources",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                      },
                      "cancelOnActionIds": {
                        "minItems": 0,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.actions",
                              "label": "label"
                            }
                          },
                          "type": "string",
                          "description": "A learner action whose completion prevents this scheduled transition from firing."
                        },
                        "description": "Completion of any selected action cancels the pending timer for this state visit. Re-entry starts a fresh timer; same-state actions do not restart it. Scenario-start and action-completion timers remain canceled for the run. Cancellation does not undo events that already occurred. Selected unfinished actions may remain available while a timer is pending after their source has occurred. Ending the scenario cancels pending timers."
                      },
                      "delaySeconds": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "description": "Simulated seconds after the declared schedule anchor. State-entry schedules always cancel on exit and start fresh on re-entry; action timing is separate."
                      },
                      "conditionId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.conditions",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "Evaluate when due. False skips that occurrence; it does not poll until true."
                      },
                      "priority": {
                        "type": "integer",
                        "description": "Explicit ordering for simultaneous events. Equal priority uses schedule ID lexical order."
                      },
                      "effectIds": {
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.effects",
                              "label": "id"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                        },
                        "description": "Operations applied atomically if the due event and transition guards are valid."
                      },
                      "nextStateId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.states",
                            "label": "title"
                          }
                        },
                        "type": "string",
                        "description": "Optional phase transition; omit for a result or actor cue that does not move the main phase."
                      },
                      "repeat": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "intervalSeconds",
                          "count"
                        ],
                        "properties": {
                          "intervalSeconds": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric interval seconds. Do not infer an omitted value."
                          },
                          "count": {
                            "minimum": 1,
                            "type": "integer",
                            "description": "Numeric count, at least 1. Do not infer an omitted value."
                          }
                        },
                        "description": "Count includes the initial occurrence. Finite repetition prevents unbounded schedules."
                      },
                      "anchor": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "kind"
                        ],
                        "properties": {
                          "kind": {
                            "const": "scenario-start",
                            "type": "string",
                            "description": "The required literal value \"scenario-start\"."
                          }
                        },
                        "description": "State-entry starts on each visit; scenario-start and action-completion use their first occurrence. State/action anchors require the corresponding ID. Scenario-start prohibits refId."
                      }
                    },
                    "description": "Structured schedules details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "delaySeconds",
                      "priority",
                      "effectIds",
                      "anchor"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Named event allows explicit cancellation."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label for this entry. Omit optional information that has not been specified."
                      },
                      "description": {
                        "type": "string",
                        "description": "The description for this entry. Omit optional information that has not been specified."
                      },
                      "resourceId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "resources",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                      },
                      "cancelOnActionIds": {
                        "minItems": 0,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.actions",
                              "label": "label"
                            }
                          },
                          "type": "string",
                          "description": "A learner action whose completion prevents this scheduled transition from firing."
                        },
                        "description": "Completion of any selected action cancels the pending timer for this state visit. Re-entry starts a fresh timer; same-state actions do not restart it. Scenario-start and action-completion timers remain canceled for the run. Cancellation does not undo events that already occurred. Selected unfinished actions may remain available while a timer is pending after their source has occurred. Ending the scenario cancels pending timers."
                      },
                      "delaySeconds": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "description": "Simulated seconds after the declared schedule anchor. State-entry schedules always cancel on exit and start fresh on re-entry; action timing is separate."
                      },
                      "conditionId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.conditions",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "Evaluate when due. False skips that occurrence; it does not poll until true."
                      },
                      "priority": {
                        "type": "integer",
                        "description": "Explicit ordering for simultaneous events. Equal priority uses schedule ID lexical order."
                      },
                      "effectIds": {
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.effects",
                              "label": "id"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                        },
                        "description": "Operations applied atomically if the due event and transition guards are valid."
                      },
                      "nextStateId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.states",
                            "label": "title"
                          }
                        },
                        "type": "string",
                        "description": "Optional phase transition; omit for a result or actor cue that does not move the main phase."
                      },
                      "repeat": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "intervalSeconds",
                          "count"
                        ],
                        "properties": {
                          "intervalSeconds": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric interval seconds. Do not infer an omitted value."
                          },
                          "count": {
                            "minimum": 1,
                            "type": "integer",
                            "description": "Numeric count, at least 1. Do not infer an omitted value."
                          }
                        },
                        "description": "Count includes the initial occurrence. Finite repetition prevents unbounded schedules."
                      },
                      "anchor": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "kind",
                          "refId"
                        ],
                        "properties": {
                          "kind": {
                            "const": "action-completion",
                            "type": "string",
                            "description": "The required literal value \"action-completion\"."
                          },
                          "refId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                          }
                        },
                        "description": "State-entry starts on each visit; scenario-start and action-completion use their first occurrence. State/action anchors require the corresponding ID. Scenario-start prohibits refId."
                      }
                    },
                    "description": "Structured schedules details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "delaySeconds",
                      "priority",
                      "effectIds",
                      "anchor"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Named event allows explicit cancellation."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label for this entry. Omit optional information that has not been specified."
                      },
                      "description": {
                        "type": "string",
                        "description": "The description for this entry. Omit optional information that has not been specified."
                      },
                      "resourceId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "resources",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                      },
                      "cancelOnActionIds": {
                        "minItems": 0,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.actions",
                              "label": "label"
                            }
                          },
                          "type": "string",
                          "description": "A learner action whose completion prevents this scheduled transition from firing."
                        },
                        "description": "Completion of any selected action cancels the pending timer for this state visit. Re-entry starts a fresh timer; same-state actions do not restart it. Scenario-start and action-completion timers remain canceled for the run. Cancellation does not undo events that already occurred. Selected unfinished actions may remain available while a timer is pending after their source has occurred. Ending the scenario cancels pending timers."
                      },
                      "delaySeconds": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "description": "Simulated seconds after the declared schedule anchor. State-entry schedules always cancel on exit and start fresh on re-entry; action timing is separate."
                      },
                      "conditionId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.conditions",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "Evaluate when due. False skips that occurrence; it does not poll until true."
                      },
                      "priority": {
                        "type": "integer",
                        "description": "Explicit ordering for simultaneous events. Equal priority uses schedule ID lexical order."
                      },
                      "effectIds": {
                        "type": "array",
                        "items": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.effects",
                              "label": "id"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                        },
                        "description": "Operations applied atomically if the due event and transition guards are valid."
                      },
                      "nextStateId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.states",
                            "label": "title"
                          }
                        },
                        "type": "string",
                        "description": "Optional phase transition; omit for a result or actor cue that does not move the main phase."
                      },
                      "repeat": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "intervalSeconds",
                          "count"
                        ],
                        "properties": {
                          "intervalSeconds": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric interval seconds. Do not infer an omitted value."
                          },
                          "count": {
                            "minimum": 1,
                            "type": "integer",
                            "description": "Numeric count, at least 1. Do not infer an omitted value."
                          }
                        },
                        "description": "Count includes the initial occurrence. Finite repetition prevents unbounded schedules."
                      },
                      "anchor": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "kind",
                          "refId"
                        ],
                        "properties": {
                          "kind": {
                            "const": "state-entry",
                            "type": "string",
                            "description": "The required literal value \"state-entry\"."
                          },
                          "refId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.states",
                                "label": "title"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.states entry. Preserve the referenced entry when editing this field."
                          }
                        },
                        "description": "State-entry starts on each visit; scenario-start and action-completion use their first occurrence. State/action anchors require the corresponding ID. Scenario-start prohibits refId."
                      },
                      "onAnchorStateExit": {
                        "anyOf": [
                          {
                            "const": "cancel",
                            "type": "string",
                            "description": "Suite always cancels state timers on exit and starts fresh on re-entry, regardless of this field’s value. Omit it or use cancel."
                          },
                          {
                            "const": "continue",
                            "type": "string",
                            "description": "Suite always cancels state timers on exit and starts fresh on re-entry, regardless of this field’s value. Omit it or use cancel."
                          }
                        ],
                        "description": "Suite always cancels state timers on exit and starts fresh on re-entry, regardless of this field’s value. Omit it or use cancel."
                      }
                    },
                    "description": "Structured schedules details. Omitted optional values remain unspecified."
                  }
                ],
                "description": "Select one of the declared schedules alternatives; use the fields belonging to that alternative."
              },
              "description": "Action completes through AI interpretation of learner intent against its completion criterion, configured resource interactions, or explicit learner/facilitator confirmation. Scheduled runs after its delay on each source-state visit, cancels on exit, and starts fresh on re-entry. Same-state milestones do not restart the clock. Scenario-start and action-completion schedules fire once from their first anchor. Conclusion entry cancels pending timers. Omitted means action."
            },
            "effects": {
              "title": "Effects",
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "value",
                      "unit"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "set-variable",
                        "type": "string",
                        "description": "The operation performed by this effect."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "The identifier of the variable or other entity changed by this effect."
                      },
                      "value": {
                        "type": "number",
                        "description": "The resulting value, expressed in the target variable’s declared unit."
                      },
                      "unit": {
                        "type": "string",
                        "description": "The target variable’s declared unit; effects cannot silently convert units."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "value",
                      "unit",
                      "durationSeconds",
                      "interpolation"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "trend-variable",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      },
                      "value": {
                        "type": "number",
                        "description": "Absolute replacement or trend target, never an implicit increment. Numeric variable effects require a matching unit field."
                      },
                      "unit": {
                        "type": "string",
                        "description": "Unit for a numeric variable target. It must match the target variable's declared unit; the format does not infer conversions."
                      },
                      "durationSeconds": {
                        "exclusiveMinimum": 0,
                        "type": "number",
                        "description": "Duration of a linear authored change from current value to target. Instant changes use set-variable."
                      },
                      "interpolation": {
                        "const": "linear",
                        "type": "string",
                        "description": "The format supports one explicit interpolation rule; no inferred dose-response or disease model."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "percent",
                      "unit"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "scale-variable",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      },
                      "percent": {
                        "minimum": -100,
                        "maximum": 1000,
                        "type": "number",
                        "description": "Numeric percent, at least -100, at most 1000. Do not infer an omitted value."
                      },
                      "unit": {
                        "type": "string",
                        "description": "Unit for a numeric variable target. It must match the target variable's declared unit; the format does not infer conversions."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "delta",
                      "unit"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "offset-variable",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients.*.variables",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      },
                      "delta": {
                        "minimum": -1000,
                        "maximum": 1000,
                        "type": "number",
                        "description": "Signed amount added once to an existing current measurement when a resource response completes; requires matching units. Missing measurements remain unknown. Do not combine multiple effects for the same response target."
                      },
                      "unit": {
                        "type": "string",
                        "description": "Unit for a numeric variable target. It must match the target variable's declared unit; the format does not infer conversions."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "patientId",
                      "modelId"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "apply-model",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "patientId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing patients entry. Preserve the referenced entry when editing this field."
                      },
                      "modelId": {
                        "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:",
                        "type": "string",
                        "description": "The model id for this entry. Omit optional information that has not been specified."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "value"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "set-flag",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.flags",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      },
                      "value": {
                        "type": "boolean",
                        "description": "Absolute replacement or trend target, never an implicit increment. Numeric variable effects require a matching unit field."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "reveal",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "cancel-event",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "events.schedules",
                            "label": "id"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  },
                  {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "id",
                      "kind",
                      "targetId",
                      "channel",
                      "value"
                    ],
                    "properties": {
                      "id": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "authoring": {
                            "hidden": true
                          }
                        },
                        "type": "string",
                        "description": "Stable effect identifier referenced by states, actions, or schedules."
                      },
                      "kind": {
                        "const": "set-monitor-connection",
                        "type": "string",
                        "description": "Closed operation vocabulary; each kind has its own required operands as defined in this section."
                      },
                      "targetId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "set-variable/trend-variable target a variable; set-flag targets a flag; reveal targets a history entry, finding, or result; cancel-event targets a schedule; set-monitor-connection targets a patient."
                      },
                      "channel": {
                        "anyOf": [
                          {
                            "const": "ecg",
                            "type": "string",
                            "description": "The required literal value \"ecg\"."
                          },
                          {
                            "const": "bloodPressure",
                            "type": "string",
                            "description": "The required literal value \"bloodPressure\"."
                          },
                          {
                            "const": "spo2",
                            "type": "string",
                            "description": "The required literal value \"spo2\"."
                          },
                          {
                            "const": "respiration",
                            "type": "string",
                            "description": "The required literal value \"respiration\"."
                          },
                          {
                            "const": "temperature",
                            "type": "string",
                            "description": "The required literal value \"temperature\"."
                          },
                          {
                            "const": "capnography",
                            "type": "string",
                            "description": "The required literal value \"capnography\"."
                          },
                          {
                            "const": "arterialPressure",
                            "type": "string",
                            "description": "The required literal value \"arterialPressure\"."
                          }
                        ],
                        "description": "Select one of the declared channel alternatives; use the fields belonging to that alternative."
                      },
                      "value": {
                        "type": "boolean",
                        "description": "Absolute replacement or trend target, never an implicit increment. Numeric variable effects require a matching unit field."
                      }
                    },
                    "description": "Structured effects details. Omitted optional values remain unspecified."
                  }
                ],
                "description": "One typed effect with a stable identifier and explicit target."
              },
              "description": "Named reusable effects that change scenario state or disclosure."
            },
            "states": {
              "title": "States",
              "maxItems": 128,
              "x-usim": {
                "authoring": {
                  "editor": "graph"
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "title",
                  "learnerBrief",
                  "facilitatorBrief",
                  "kind"
                ],
                "properties": {
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
                  },
                  "title": {
                    "title": "State title",
                    "maxLength": 240,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "A short name for this phase, such as Initial assessment or Worsening respiratory distress."
                  },
                  "entryConditionId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "events.conditions",
                        "label": "id"
                      },
                      "execution": {
                        "capability": "conditional-execution"
                      }
                    },
                    "type": "string",
                    "description": "Guard checked immediately before entry. Failed manual transitions are rejected; scheduled failures are recorded and skipped."
                  },
                  "exitConditionId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "events.conditions",
                        "label": "id"
                      },
                      "execution": {
                        "capability": "conditional-execution"
                      }
                    },
                    "type": "string",
                    "description": "Must hold to leave the phase; does not cause a transition by itself."
                  },
                  "onEnterEffectIds": {
                    "title": "Effects on entry",
                    "type": "array",
                    "items": {
                      "title": "Entry effect",
                      "maxLength": 128,
                      "minLength": 1,
                      "pattern": "\\S",
                      "x-usim": {
                        "reference": {
                          "collection": "events.effects",
                          "label": "id",
                          "excludeScheduled": false
                        },
                        "authoring": {}
                      },
                      "type": "string",
                      "description": "An effect applied at this position in the state’s entry sequence."
                    },
                    "description": "Ordered effect identifiers applied when this state is entered."
                  },
                  "onExitEffectIds": {
                    "title": "Effects on exit",
                    "type": "array",
                    "items": {
                      "title": "Exit effect",
                      "maxLength": 128,
                      "minLength": 1,
                      "pattern": "\\S",
                      "x-usim": {
                        "reference": {
                          "collection": "events.effects",
                          "label": "id",
                          "excludeScheduled": false
                        },
                        "authoring": {}
                      },
                      "type": "string",
                      "description": "An effect applied at this position in the state’s exit sequence."
                    },
                    "description": "Ordered effect identifiers applied when this state is exited; execution requires support for exit effects."
                  },
                  "learnerBrief": {
                    "title": "Learner prompt",
                    "maxLength": 8000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "Information presented to the learner at this phase: the patient's condition, new findings, or an immediate task. Keep tutor instructions and unrevealed answers in the tutor prompt."
                  },
                  "facilitatorBrief": {
                    "title": "Tutor prompt",
                    "maxLength": 8000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "Guide the tutor through this phase: expected learner actions, cues to offer if learners struggle, and when and why to advance. Include relevant reasoning and facilitation instructions."
                  },
                  "objectiveIds": {
                    "minItems": 0,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "minLength": 1,
                      "maxLength": 128,
                      "pattern": "\\S",
                      "title": "Identifier",
                      "x-usim": {
                        "reference": {
                          "collection": "education.objectives",
                          "label": "statement"
                        }
                      },
                      "type": "string",
                      "description": "Identifier of an existing education.objectives entry. Preserve the referenced entry when editing this field."
                    },
                    "description": "Links the phase to an educational objective."
                  },
                  "kind": {
                    "type": "string",
                    "title": "State kind",
                    "enum": [
                      "baseline",
                      "phase",
                      "conclusion"
                    ],
                    "description": "Baseline starts the case; triggered and scheduled describe intermediate phases; conclusion ends the run. A scheduled phase still needs an incoming timed interaction."
                  },
                  "monitor": {
                    "title": "Monitor",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {
                        "editor": "monitor"
                      }
                    },
                    "type": "object",
                    "properties": {
                      "rhythm": {
                        "type": "string",
                        "title": "Monitor rhythm",
                        "enum": [
                          "sinus",
                          "sinus_tachycardia",
                          "sinus_bradycardia",
                          "atrial_fibrillation",
                          "atrial_flutter",
                          "svt",
                          "ventricular_tachycardia",
                          "torsades",
                          "ventricular_fibrillation",
                          "asystole",
                          "av_block_1",
                          "av_block_2_mobitz_1",
                          "av_block_2_mobitz_2",
                          "av_block_3",
                          "junctional",
                          "ventricular_paced"
                        ],
                        "description": "The ECG rhythm displayed on the monitor. Select the rhythm separately from whether the patient has a palpable pulse."
                      },
                      "pulsePresent": {
                        "title": "Pulse present",
                        "type": "boolean",
                        "description": "Whether a palpable pulse is present. Use this to distinguish perfusing and pulseless presentations of the displayed rhythm."
                      },
                      "connections": {
                        "title": "Monitor connections",
                        "additionalProperties": false,
                        "x-usim": {
                          "authoring": {}
                        },
                        "type": "object",
                        "properties": {
                          "ecg": {
                            "title": "ECG",
                            "type": "boolean",
                            "description": "ECG: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "bloodPressure": {
                            "title": "Blood pressure cuff",
                            "type": "boolean",
                            "description": "Blood pressure cuff: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "spo2": {
                            "title": "Pulse oximetry",
                            "type": "boolean",
                            "description": "Pulse oximetry: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "respiration": {
                            "title": "Respiratory monitoring",
                            "type": "boolean",
                            "description": "Respiratory monitoring: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "temperature": {
                            "title": "Temperature probe",
                            "type": "boolean",
                            "description": "Temperature probe: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "capnography": {
                            "title": "Capnography",
                            "type": "boolean",
                            "description": "Capnography: connected exposes the available measurement; disconnected hides it without changing physiology."
                          },
                          "arterialPressure": {
                            "title": "Arterial pressure",
                            "type": "boolean",
                            "description": "Arterial pressure: connected exposes the available measurement; disconnected hides it without changing physiology."
                          }
                        },
                        "description": "Connected channels expose available measurements without changing physiology. An explicit empty patient connection map starts disconnected. Omitted event channels inherit their preceding connection. The patient switch has Monitor on the left and the switch on the right of one row, without visible ON/OFF labels; its accessible name explains Show on monitor initially. It determines baseline visibility, not whether a physiologic value exists. Omitted patient connections use routine monitoring defaults; capnography and arterial pressure start off without their corresponding patient measurements. Explicit event connections and saved run connections are separate overrides."
                      }
                    },
                    "description": "Monitor rhythm, pulse status, and channel connection overrides for this phase. Connection-only overrides preserve the preceding rhythm; omitted channels keep their preceding connection."
                  },
                  "key": {
                    "title": "Key state",
                    "type": "boolean",
                    "description": "Mark an educationally important phase. This does not award points or require every path to pass through the phase."
                  },
                  "resourceTrigger": {
                    "title": "Enter when resource results are available",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "object",
                    "required": [
                      "mode",
                      "objectIds"
                    ],
                    "properties": {
                      "mode": {
                        "type": "string",
                        "title": "Results required",
                        "enum": [
                          "any",
                          "all"
                        ],
                        "description": "All waits for every selected resource result; any enters on the first selected result. Requests alone do not satisfy the rule until their response delays elapse."
                      },
                      "objectIds": {
                        "title": "Selected resources",
                        "minItems": 1,
                        "maxItems": 1000,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "title": "Resource",
                          "maxLength": 128,
                          "minLength": 1,
                          "pattern": "\\S",
                          "x-usim": {
                            "reference": {
                              "collection": "resources",
                              "label": "name",
                              "excludeScheduled": false
                            },
                            "authoring": {}
                          },
                          "type": "string",
                          "description": "The identifier of a learner-requestable resource required by this event result trigger."
                        },
                        "description": "Scenario resources whose completed results trigger this event. Select learner-requestable resources without a separate resource destination event."
                      }
                    },
                    "description": "Enter this event once when selected learner-requested resource results become available. Incoming transitions remain alternative paths into the event."
                  }
                },
                "description": "One phase of the case, with learner information, tutor guidance, and any changed patient findings."
              },
              "description": "Patient phases in the scenario. Baseline contains starting conditions only. Newly authored milestones advance to distinct non-baseline phases even with unchanged vitals; do not return to baseline. Include exactly one baseline and at least one conclusion; connect phases with interactions."
            },
            "actions": {
              "title": "Interactions",
              "maxItems": 512,
              "x-usim": {
                "authoring": {
                  "addLabel": "Add interaction"
                }
              },
              "type": "array",
              "items": {
                "additionalProperties": false,
                "x-usim": {
                  "authoring": {}
                },
                "type": "object",
                "required": [
                  "id",
                  "label",
                  "availableInStateIds",
                  "outcomes"
                ],
                "properties": {
                  "id": {
                    "title": "Identifier",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "x-usim": {
                      "authoring": {
                        "hidden": true
                      }
                    },
                    "type": "string",
                    "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
                  },
                  "label": {
                    "title": "Interaction",
                    "maxLength": 1000,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "Use a short, observable action or timed-event label: 2–6 words, at most 48 characters. Put conditions, clinical detail, and what happens in description, not in the label. Do not append the destination state; from/to already identify it."
                  },
                  "description": {
                    "title": "Description",
                    "maxLength": 6000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "Longer explanation of the action or timed event, its conditions, and what happens. Plain-language context only; executable behavior remains in the selected trigger, timing, resource references, and destination state. Text does not automatically detect learner behavior. Optional when the label provides sufficient context."
                  },
                  "patientId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "patients",
                        "label": "name"
                      }
                    },
                    "type": "string",
                    "description": "Required when the action targets a patient; omit for team-only actions."
                  },
                  "resourceId": {
                    "title": "Linked resource",
                    "maxLength": 128,
                    "minLength": 1,
                    "pattern": "\\S",
                    "x-usim": {
                      "reference": {
                        "collection": "resources",
                        "label": "name",
                        "excludeScheduled": false
                      },
                      "authoring": {}
                    },
                    "type": "string",
                    "description": "Requests a resource when this transition fires. Builder authors resource links on the state under Results."
                  },
                  "completionCriteria": {
                    "title": "When this action is complete",
                    "maxLength": 6000,
                    "x-usim": {
                      "authoring": {
                        "editor": "textarea"
                      }
                    },
                    "type": "string",
                    "description": "Describe the learner intent or behavior that fulfills this action. The AI interprets chat, conversation context, and simulator interactions against this criterion; equivalent wording is accepted. Distinguish an order from actual administration, and specify essential requirements. If omitted, the action label and description provide the criterion. Only available authored actions can advance the case; ambiguous intent requires clarification."
                  },
                  "completion": {
                    "title": "Action recognition",
                    "additionalProperties": false,
                    "x-usim": {
                      "authoring": {}
                    },
                    "type": "object",
                    "required": [
                      "mode",
                      "resourceIds"
                    ],
                    "properties": {
                      "mode": {
                        "type": "string",
                        "title": "Resources required",
                        "enum": [
                          "any",
                          "all"
                        ],
                        "description": "Choose whether any or all selected resource requests complete this action."
                      },
                      "resourceIds": {
                        "title": "Recognize resource interactions",
                        "minItems": 1,
                        "maxItems": 1000,
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "title": "Resource",
                          "maxLength": 128,
                          "minLength": 1,
                          "pattern": "\\S",
                          "x-usim": {
                            "reference": {
                              "collection": "resources",
                              "label": "name",
                              "excludeScheduled": false
                            },
                            "authoring": {}
                          },
                          "type": "string",
                          "description": "A learner-requestable resource used to recognize the action."
                        },
                        "description": "Select the resources that define the learner activity, such as BMP and CBC for Order labs. Only learner-requestable resources qualify. Automatic state releases do not count."
                      }
                    },
                    "description": "Recognize this action from learner-requested resources while its source state is active. Any completes on the first selected request; all waits for all selected requests. Result delays do not delay action completion. Facilitators can confirm the same action directly. Confirming all requests every selected resource; confirming any does not guess which alternative was used. Omitted uses AI interpretation of completionCriteria (or label and description) or explicit confirmation."
                  },
                  "availableInStateIds": {
                    "title": "Available in states",
                    "minItems": 1,
                    "uniqueItems": true,
                    "type": "array",
                    "items": {
                      "title": "From state",
                      "maxLength": 128,
                      "minLength": 1,
                      "pattern": "\\S",
                      "x-usim": {
                        "reference": {
                          "collection": "events.states",
                          "label": "title",
                          "excludeScheduled": false
                        },
                        "authoring": {}
                      },
                      "type": "string",
                      "description": "Choose where this learner action can be recognized. For an action that stays in the current state, All active states makes the same once-only decision available throughout active care. Recording it does not enter a state or restart event timers."
                    },
                    "description": "The phase in which this interaction is available or its scheduled timer begins."
                  },
                  "conditionId": {
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": "\\S",
                    "title": "Identifier",
                    "x-usim": {
                      "reference": {
                        "collection": "events.conditions",
                        "label": "id"
                      },
                      "execution": {
                        "capability": "conditional-execution"
                      }
                    },
                    "type": "string",
                    "description": "Prerequisite evaluated at start and again at completion."
                  },
                  "durationSeconds": {
                    "minimum": 0,
                    "type": "number",
                    "default": 0,
                    "description": "Simulated time between start and completion. Availability is evaluated at start."
                  },
                  "repeat": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "cooldownSeconds"
                    ],
                    "properties": {
                      "maxUses": {
                        "minimum": 1,
                        "type": "integer",
                        "description": "Numeric max uses, at least 1. Do not infer an omitted value."
                      },
                      "cooldownSeconds": {
                        "minimum": 0,
                        "type": "number",
                        "description": "Numeric cooldown seconds, at least 0. Do not infer an omitted value."
                      }
                    },
                    "description": "Completed uses count against maxUses; cooldown starts at completion. No implicit unlimited repeats."
                  },
                  "cancellable": {
                    "default": false,
                    "type": "boolean",
                    "description": "Whether an operator can cancel before completion; cancellation does not count as a completed use."
                  },
                  "onPhaseExit": {
                    "anyOf": [
                      {
                        "const": "cancel",
                        "type": "string",
                        "description": "Policy for unfinished work when another event changes phase. Conclusion always cancels."
                      },
                      {
                        "const": "continue",
                        "type": "string",
                        "description": "Policy for unfinished work when another event changes phase. Conclusion always cancels."
                      }
                    ],
                    "default": "cancel",
                    "description": "Policy for unfinished work when another event changes phase. Conclusion always cancels."
                  },
                  "outcomes": {
                    "title": "Ordered outcomes",
                    "minItems": 1,
                    "type": "array",
                    "items": {
                      "additionalProperties": false,
                      "title": "Outcome",
                      "type": "object",
                      "required": [
                        "id",
                        "effectIds"
                      ],
                      "properties": {
                        "id": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "authoring": {
                              "hidden": true
                            }
                          },
                          "type": "string",
                          "description": "Stable identifier for this entry. Keep it unchanged when editing its content."
                        },
                        "whenConditionId": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "Identifier",
                          "x-usim": {
                            "reference": {
                              "collection": "events.conditions",
                              "label": "id"
                            },
                            "execution": {
                              "capability": "conditional-execution"
                            }
                          },
                          "type": "string",
                          "description": "Identifier of an existing events.conditions entry. Preserve the referenced entry when editing this field."
                        },
                        "effectIds": {
                          "type": "array",
                          "items": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.effects",
                                "label": "id"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.effects entry. Preserve the referenced entry when editing this field."
                          },
                          "description": "Entries for effect ids. An empty list means no entries have been authored."
                        },
                        "nextStateId": {
                          "minLength": 1,
                          "maxLength": 128,
                          "pattern": "\\S",
                          "title": "To state",
                          "x-usim": {
                            "reference": {
                              "collection": "events.states",
                              "label": "title"
                            }
                          },
                          "type": "string",
                          "description": "Choose the destination after this action. Stay in current state omits the destination: record the action once without entering another event, replaying entry effects, or restarting timers. An existing explicit self-transition keeps its authored behavior."
                        }
                      },
                      "description": "Choose first matching outcome at completion. Exactly one final unconditional fallback is required. Omit nextStateId to stay in the phase."
                    },
                    "description": "The phase entered when this interaction occurs. Set scenario-specific vitals, rhythm, and patient information here; reusable treatment responses stay with resources. Destination vital signs override overlapping transition effects."
                  },
                  "kind": {
                    "type": "string",
                    "title": "Action kind",
                    "enum": [
                      "generic",
                      "medication-order",
                      "medication-administration"
                    ],
                    "description": "Discriminator for conditional action payloads. Specialized fields are prohibited unless kind selects the corresponding branch."
                  },
                  "medicationOrder": {
                    "additionalProperties": false,
                    "type": "object",
                    "required": [
                      "resourceId",
                      "patientId",
                      "dose",
                      "route"
                    ],
                    "properties": {
                      "resourceId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "resources",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing resources entry. Preserve the referenced entry when editing this field."
                      },
                      "patientId": {
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "\\S",
                        "title": "Identifier",
                        "x-usim": {
                          "reference": {
                            "collection": "patients",
                            "label": "name"
                          }
                        },
                        "type": "string",
                        "description": "Identifier of an existing patients entry. Preserve the referenced entry when editing this field."
                      },
                      "dose": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "value",
                          "unit"
                        ],
                        "properties": {
                          "value": {
                            "exclusiveMinimum": 0,
                            "type": "number",
                            "description": "Numeric value. Do not infer an omitted value."
                          },
                          "unit": {
                            "type": "string",
                            "description": "The unit for this entry. Omit optional information that has not been specified."
                          }
                        },
                        "description": "Structured numerator details. Omitted optional values remain unspecified."
                      },
                      "route": {
                        "type": "string",
                        "description": "The route for this entry. Omit optional information that has not been specified."
                      },
                      "rate": {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "numerator",
                          "denominator"
                        ],
                        "properties": {
                          "numerator": {
                            "additionalProperties": false,
                            "type": "object",
                            "required": [
                              "value",
                              "unit"
                            ],
                            "properties": {
                              "value": {
                                "exclusiveMinimum": 0,
                                "type": "number",
                                "description": "Numeric value. Do not infer an omitted value."
                              },
                              "unit": {
                                "type": "string",
                                "description": "The unit for this entry. Omit optional information that has not been specified."
                              }
                            },
                            "description": "Structured numerator details. Omitted optional values remain unspecified."
                          },
                          "denominator": {
                            "additionalProperties": false,
                            "type": "object",
                            "required": [
                              "value",
                              "unit"
                            ],
                            "properties": {
                              "value": {
                                "exclusiveMinimum": 0,
                                "type": "number",
                                "description": "Numeric value. Do not infer an omitted value."
                              },
                              "unit": {
                                "type": "string",
                                "description": "The unit for this entry. Omit optional information that has not been specified."
                              }
                            },
                            "description": "Structured numerator details. Omitted optional values remain unspecified."
                          }
                        },
                        "description": "Structured rate details. Omitted optional values remain unspecified."
                      }
                    },
                    "description": "Quantity is { value: positive number, unit: string }. Units are explicit; route must belong to allowedRoutes.",
                    "x-usim": {
                      "execution": {
                        "capability": "medication-orders"
                      }
                    }
                  },
                  "administration": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "orderActionId",
                          "mode"
                        ],
                        "properties": {
                          "orderActionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                          },
                          "mode": {
                            "anyOf": [
                              {
                                "const": "bolus",
                                "type": "string",
                                "description": "The required literal value \"bolus\"."
                              },
                              {
                                "const": "infusion-stop",
                                "type": "string",
                                "description": "The required literal value \"infusion-stop\"."
                              }
                            ],
                            "description": "Select one of the declared mode alternatives; use the fields belonging to that alternative."
                          }
                        },
                        "description": "Administration is a separate observable action referencing an order, not an automatic consequence of writing it."
                      },
                      {
                        "additionalProperties": false,
                        "type": "object",
                        "required": [
                          "orderActionId",
                          "mode",
                          "rate"
                        ],
                        "properties": {
                          "orderActionId": {
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "\\S",
                            "title": "Identifier",
                            "x-usim": {
                              "reference": {
                                "collection": "events.actions",
                                "label": "label"
                              }
                            },
                            "type": "string",
                            "description": "Identifier of an existing events.actions entry. Preserve the referenced entry when editing this field."
                          },
                          "mode": {
                            "anyOf": [
                              {
                                "const": "infusion-start",
                                "type": "string",
                                "description": "The required literal value \"infusion-start\"."
                              },
                              {
                                "const": "infusion-change",
                                "type": "string",
                                "description": "The required literal value \"infusion-change\"."
                              }
                            ],
                            "description": "Select one of the declared mode alternatives; use the fields belonging to that alternative."
                          },
                          "rate": {
                            "additionalProperties": false,
                            "type": "object",
                            "required": [
                              "numerator",
                              "denominator"
                            ],
                            "properties": {
                              "numerator": {
                                "additionalProperties": false,
                                "type": "object",
                                "required": [
                                  "value",
                                  "unit"
                                ],
                                "properties": {
                                  "value": {
                                    "exclusiveMinimum": 0,
                                    "type": "number",
                                    "description": "Numeric value. Do not infer an omitted value."
                                  },
                                  "unit": {
                                    "type": "string",
                                    "description": "The unit for this entry. Omit optional information that has not been specified."
                                  }
                                },
                                "description": "Structured numerator details. Omitted optional values remain unspecified."
                              },
                              "denominator": {
                                "additionalProperties": false,
                                "type": "object",
                                "required": [
                                  "value",
                                  "unit"
                                ],
                                "properties": {
                                  "value": {
                                    "exclusiveMinimum": 0,
                                    "type": "number",
                                    "description": "Numeric value. Do not infer an omitted value."
                                  },
                                  "unit": {
                                    "type": "string",
                                    "description": "The unit for this entry. Omit optional information that has not been specified."
                                  }
                                },
                                "description": "Structured numerator details. Omitted optional values remain unspecified."
                              }
                            },
                            "description": "Explicit amount per time or volume per time. No implicit unit conversion or pump calculation."
                          }
                        },
                        "description": "Administration is a separate observable action referencing an order, not an automatic consequence of writing it."
                      }
                    ],
                    "description": "Administration is a separate observable action referencing an order, not an automatic consequence of writing it.",
                    "x-usim": {
                      "execution": {
                        "capability": "medication-administration"
                      }
                    }
                  }
                },
                "description": "One transition from a source phase to a destination, including its explicit learner choice or timer. Author resource links and patient changes on the destination state."
              },
              "description": "Connections between phases, activated by a learner action or a timer measured from entry into the source phase."
            }
          },
          "description": "The patient phases, transitions, and requestable resources that define how the scenario progresses."
        }
      },
      "description": "Structured .usim scenario details. Omitted optional values remain unspecified."
    }
  },
  "sections": [
    {
      "topic": "scenario-model",
      "change": "A scenario document identifies patients, findings, resources, and behavior.",
      "fields": [
        {
          "path": "format",
          "type": "\"usim-scenario\"",
          "requirement": "Required",
          "description": "Identifies the .usim scenario document used by all consumers."
        },
        {
          "path": "formatVersion",
          "type": "\"3.0\"",
          "requirement": "Required",
          "description": "Identifies the document format used for validation."
        },
        {
          "path": "executionProfile",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Declares required and optional execution capabilities. Consumers also inspect populated behavioral fields before running a document."
        },
        {
          "path": "extensions",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Namespaced vendor or profile additions. The namespace is the lookup key; version and required status determine whether a consumer can safely ignore, preserve, or reject the extension."
        },
        {
          "path": "vocabularies[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Pins the concept, value-type, unit, or dimensional definitions used by the document. Definitions must be bundled or resolved by a trusted profile; execution never fetches an untrusted URL."
        },
        {
          "path": "scenarioId",
          "type": "string",
          "requirement": "Required",
          "description": "Stable content identity. Publication revisions and delivery instances remain separate records."
        },
        {
          "path": "patients",
          "type": "object[]",
          "requirement": "Required",
          "description": "The fictional patient's presentation, history, examination, and starting findings."
        },
        {
          "path": "findings",
          "type": "object[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Authored symptoms, findings, and measurements with provenance, visibility, and availability."
        },
        {
          "path": "events.conditions",
          "type": "object[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Named, bounded predicates referenced by actions, states, and cues."
        },
        {
          "path": "events.effects",
          "type": "object[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Named reusable effects that change scenario state or disclosure."
        },
        {
          "path": "assets",
          "type": "object[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Portable media manifest referenced by diagnostics and role outputs."
        }
      ],
      "rules": [
        "This specification defines the single .usim document. Examples are document fragments; Builder, Marketplace, Campus and Workspace exchange this same representation. Execution support is a separate capability check.",
        "Version 3.0 uses findings, findingIds, and rhythmFindingId. Imports and exports require version 3.0. Earlier versions and retired core field names are rejected; no automatic conversion is performed.",
        "formatVersion identifies the core vocabulary; executionProfile identifies an executable capability contract. A consumer must compare required capabilities before execution. If executionProfile is omitted, a consumer still checks the behavioral capabilities declared by the populated fields.",
        "Capability lists contain unique strings and are disjoint. Required capabilities gate execution; optional capabilities describe behavior a consumer may preserve or report as unsupported without pretending to execute it.",
        "ID means a case-sensitive nonblank string of at most 128 characters. Entity IDs are unique across the document; references must resolve to the expected entity type. Collection order has no behavioral meaning except where a field or rule explicitly declares order, including steps, cues, effect references, action outcomes, and composition overrides.",
        "Required fields must be present. Omitted optional values remain unspecified unless a field gives an explicit default. Reject null unless expressly permitted. Empty arrays mean no authored items, not an assessed negative. Times are finite simulated seconds; ISO dates describe content provenance only.",
        "Vocabulary entries are declarations, not permission to fetch arbitrary definitions. Verify the pinned digest against a bundled asset or a trusted profile resolution before using a concept, value type, unit, dimension, or value set.",
        "Reject unknown core fields. Vendor additions live under extensions, keyed by a reverse-domain namespace with declared version and required/optional status. A consumer unable to execute a required extension must reject the document; optional extensions must be preserved or reported as lossy on export. Extension data cannot add arbitrary script, network, filesystem, or random execution.",
        "Require resource-early-request, resource-request-assessment and recorded-actions for these features. Unsupported consumers reject execution. Existing documents and revision-pinned runs retain their authored semantics without conversion."
      ],
      "example": {
        "format": "usim-scenario",
        "formatVersion": "3.0",
        "executionProfile": {
          "id": "https://example.invalid/usim/profiles/portable-core",
          "version": "3.0",
          "requiredCapabilities": [],
          "optionalCapabilities": []
        },
        "extensions": {},
        "vocabularies": [],
        "scenarioId": "handoff-practice",
        "patients": [
          {
            "id": "patient-alex",
            "name": "Alex (fictional)"
          }
        ],
        "findings": [],
        "events": {
          "conditions": [],
          "effects": []
        },
        "assets": []
      }
    },
    {
      "topic": "metadata",
      "change": "Separate content identity, contributor credit, revision history, and clinical review.",
      "fields": [
        {
          "path": "metadata.title",
          "type": "string",
          "requirement": "Required",
          "description": "The internal case title used by authors. Campus uses the separate learner title."
        },
        {
          "path": "metadata.summary",
          "type": "string",
          "requirement": "Required",
          "description": "The internal scenario premise, scope, and intended learning activity. This summary is not shown in Campus."
        },
        {
          "path": "metadata.learnerTitle",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Spoiler-free title shown on Campus cards and in the scenario preview. For example: Penetrating chest injury. Copy chief complaint copies the first patient's complaint once; you can edit it without changing patient history. If omitted or blank, Campus shows Practice scenario."
        },
        {
          "path": "metadata.learnerDescription",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Brief introduction shown to learners before starting. Include only what they should know initially; omit diagnoses, expected actions, outcomes, and facilitator guidance. For example: A patient arrives after a penetrating injury to the right chest. If omitted, Campus shows no description."
        },
        {
          "path": "metadata.coverPhoto",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional learner-facing cover photo for Campus cards and scenario preview, separate from the patient portrait. Upload PNG, JPEG, or WebP; avoid images that reveal a diagnosis or expected action. Embedded bytes travel with the .usim file."
        },
        {
          "path": "metadata.coverPhoto.dataUrl",
          "type": "string",
          "requirement": "Required",
          "description": "Embedded PNG, JPEG, or WebP data URL populated by the cover photo upload control."
        },
        {
          "path": "metadata.coverPhoto.description",
          "type": "string",
          "requirement": "Required",
          "description": "Accessible description of the cover photo for learners who cannot see it. Describe visible content without revealing the teaching point."
        },
        {
          "path": "metadata.contributors[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "A named contributor with stable identity and credited roles."
        },
        {
          "path": "metadata.revision",
          "type": "integer",
          "requirement": "Required",
          "description": "The authored content revision, independent of a storage revision identifier."
        },
        {
          "path": "metadata.license",
          "type": "object",
          "requirement": "Required",
          "description": "The terms under which this scenario may be reused."
        },
        {
          "path": "metadata.review",
          "type": "object",
          "requirement": "Required",
          "description": "Clinical review status, attribution, date, and supporting sources."
        },
        {
          "path": "metadata.license.identifier",
          "type": "string",
          "requirement": "Required",
          "description": "The license identifier or explicit rights statement. Suggested reuse licenses are advisory; preserve custom terms."
        },
        {
          "path": "metadata.license.textAssetId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "An optional asset containing the complete license text."
        },
        {
          "path": "metadata.review.status",
          "type": "\"draft\" | \"reviewed\" | \"needs-review\"",
          "requirement": "Required",
          "description": "Review state stored as draft, reviewed, or needs-review. Builder displays Draft, Reviewed, and Needs review."
        },
        {
          "path": "metadata.review.reviewedAt",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The date and time the recorded review was completed. Builder displays local date and time and stores the selected instant as a UTC ISO 8601 timestamp; omission means unspecified."
        },
        {
          "path": "metadata.review.reviewerIds",
          "type": "string[]",
          "requirement": "Required",
          "description": "Contributor identifiers for the reviewers."
        },
        {
          "path": "metadata.review.sourceIds",
          "type": "string[]",
          "requirement": "Required",
          "description": "Stable metadata.sources IDs selected as evidence for the recorded review. Citation edits and source reordering preserve these links."
        },
        {
          "path": "metadata.sources[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "A source citation with stable identity and optional web location."
        },
        {
          "path": "metadata.sources[].id",
          "type": "string",
          "requirement": "Required",
          "description": "Stable source identifier used by review references."
        },
        {
          "path": "metadata.sources[].citation",
          "type": "string",
          "requirement": "Required",
          "description": "The complete bibliographic citation or source attribution."
        },
        {
          "path": "metadata.sources[].url",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "An HTTPS location where this source can be found."
        },
        {
          "path": "metadata.sources[].accessedAt",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The date the linked source was accessed."
        }
      ],
      "tables": [
        {
          "title": "Suggested reuse licenses",
          "description": "Builder offers searchable suggestions with brief explanations and original-license links. The identifier remains open text; custom rights statements are valid. Read the original terms for the complete conditions.",
          "columns": [
            "Identifier",
            "Brief explanation",
            "Original terms"
          ],
          "rows": [
            [
              "All rights reserved",
              "Copyright is retained. Reuse requires permission unless an applicable exception allows it.",
              "No standard license text; explicit rights statement"
            ],
            [
              "CC BY 4.0",
              "Share and adapt, including commercially, with credit to the creator.",
              "https://creativecommons.org/licenses/by/4.0/"
            ],
            [
              "CC BY-SA 4.0",
              "Share and adapt with credit, including commercially. Adaptations use the same or compatible license.",
              "https://creativecommons.org/licenses/by-sa/4.0/"
            ],
            [
              "CC BY-NC 4.0",
              "Share and adapt with credit for noncommercial purposes only.",
              "https://creativecommons.org/licenses/by-nc/4.0/"
            ],
            [
              "CC BY-NC-SA 4.0",
              "Share and adapt with credit for noncommercial purposes. Adaptations use the same or compatible license.",
              "https://creativecommons.org/licenses/by-nc-sa/4.0/"
            ],
            [
              "CC BY-ND 4.0",
              "Share unchanged copies with credit, including commercially. Adaptations cannot be distributed.",
              "https://creativecommons.org/licenses/by-nd/4.0/"
            ],
            [
              "CC BY-NC-ND 4.0",
              "Share unchanged copies with credit for noncommercial purposes only. Adaptations cannot be distributed.",
              "https://creativecommons.org/licenses/by-nc-nd/4.0/"
            ],
            [
              "CC0 1.0",
              "Waive copyright to the extent allowed by law. Others may copy, adapt, and share, including commercially, without permission.",
              "https://creativecommons.org/publicdomain/zero/1.0/"
            ]
          ]
        }
      ],
      "rules": [
        "Builder presents Learner-facing details expanded immediately after Scenario context in Overview. Copy chief complaint copies the first patient's complaint once into learnerTitle; later edits do not change history. Copy scenario description copies metadata.summary once into learnerDescription. Both copy actions sit inside their controls; description copy shares the dictation action row. Learner fields are optional for backward-compatible import and export. Campus cards and preview use these fields without falling back to internal authoring title or summary. Campus preview omits role; learner preparation instructions and documents appear only when defined in scenario prerequisites.",
        "License suggestions are advisory, not a required enum. New blank scenarios start with All rights reserved. Opening, importing, or editing existing content preserves its authored license identifier and optional textAssetId; selecting a suggestion changes only the identifier.",
        "Review status is stored as draft, reviewed, or needs-review; Builder capitalizes the labels without changing those values. Choosing a status or timestamp does not assign reviewers or certify the content.",
        "Builder's Reviewed at selector uses the author's local date and time and serializes the selected instant as a UTC ISO 8601 timestamp. Now records the current instant; Clear removes the optional timestamp. Preserve existing authored timestamps on import and export.",
        "Source records stay in the ordered metadata.sources array. Builder presents them inside Review sources in Review status and evidence. Add source creates a stable source ID, selects it as review evidence, and opens its accordion; it does not create a separate empty Sources panel.",
        "metadata.review.sourceIds selects evidence by stable source ID. Use as review evidence changes only membership. Renaming, editing, or reordering a source preserves its ID and existing review/resource links. Deleting a source in Builder removes that ID from review and resource sourceIds to avoid dangling references.",
        "Changing clinical behavior after review changes status to needs-review in the authoring workflow. Review metadata never grants automatic publication approval.",
        "Contributor contact details are optional extensions rather than required portable fields. Use fictional patients and keep actual learners out of scenario content."
      ],
      "example": {
        "metadata": {
          "title": "A clear handoff",
          "summary": "Assign ownership of a pending update.",
          "revision": 1,
          "contributors": [
            {
              "id": "author-team",
              "name": "Example team",
              "roles": [
                "author"
              ]
            }
          ],
          "license": {
            "identifier": "All rights reserved"
          },
          "review": {
            "status": "draft",
            "reviewerIds": [],
            "sourceIds": []
          },
          "sources": []
        }
      }
    },
    {
      "topic": "demographics",
      "change": "Represent multiple fictional patients without ambiguous age units or demographic assumptions.",
      "fields": [
        {
          "path": "patients[].id",
          "type": "string",
          "requirement": "Required",
          "description": "Stable patient identifier used by findings, actions, and other scenario references."
        },
        {
          "path": "patients[].name",
          "type": "string",
          "requirement": "Required",
          "description": "The fictional patient's display name."
        },
        {
          "path": "patients[].demographics.age",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Patient age with an explicit unit. Retain days or months for young infants."
        },
        {
          "path": "patients[].demographics.gender",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The patient's authored gender description."
        },
        {
          "path": "patients[].demographics.pronouns",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The patient's authored pronouns. Never infer these from name, appearance, gender, or sex assigned at birth."
        },
        {
          "path": "patients[].demographics.sexualOrientation",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional self-described sexual orientation. This does not specify sexual practices, anatomy, relationships, or pregnancy potential."
        },
        {
          "path": "patients[].demographics.sexAssignedAtBirth",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional authored sex assigned at birth, separate from gender. Does not establish current anatomy, reproductive history, or treatment."
        },
        {
          "path": "patients[].preferredName",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The name the patient asks others to use, when different from their display name. Omitted means unspecified. Builder displays this field in Communication while retaining its patient-level storage path."
        },
        {
          "path": "patients[].communication",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Authored language, communication methods, interpreter needs, and accessibility supports. Do not infer these from identity or appearance. Builder places preferred name first, then preferred language and communication method together, followed by interpreter needs and communication supports. Rows stack at narrow widths."
        },
        {
          "path": "patients[].demographics.weight",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Patient weight, stored in kilograms. The editor can also display pounds."
        },
        {
          "path": "patients[].demographics.height",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Patient height, stored in centimeters. The editor can also display feet and inches."
        },
        {
          "path": "patients[].baselineFunction",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Usual mobility, cognition, self-care, and support. Distinguish baseline function from acute changes. Builder displays this field in expanded Demographics while retaining its patient-level storage path."
        }
      ],
      "rules": [
        "All patient-targeted behavior requires patientId even in single-patient scenarios. Names may repeat; IDs may not.",
        "Do not derive symptoms, physiology, or actor behavior solely from a demographic attribute. Any such relationship must be authored and reviewed explicitly.",
        "Gender, pronouns, sexual orientation, and sex assigned at birth are independent optional text values. Omission means unspecified. Author relevant anatomy, pregnancy, treatments, and disclosure separately."
      ],
      "example": {
        "patients": [
          {
            "id": "patient-alex",
            "name": "Alex (fictional)",
            "demographics": {
              "age": {
                "value": 40,
                "unit": "years"
              },
              "weight": {
                "value": 70,
                "unit": "kg"
              }
            },
            "baselineFunction": "Communicates independently."
          }
        ]
      }
    },
    {
      "topic": "history",
      "change": "Make patient information discoverable, with an explicit timeline and disclosure rules.",
      "fields": [
        {
          "path": "patients[].history[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Separate entries for chief-complaint, present-illness, medical, surgical, medication, allergy, family, and social history."
        },
        {
          "path": "patients[].history[].allergy",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Structured allergy detail for category allergy only. Substance identifies the authored allergen; reaction describes the manifestation; severity describes that reaction, not future risk. Omitted reaction or severity remains unspecified."
        },
        {
          "path": "patients[].history[].occurredAtSeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Time relative to scenario start; negative values describe pre-arrival events."
        },
        {
          "path": "patients[].history[].disclosure.audience",
          "type": "\"learner\" | \"facilitator\"[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Authorized output audiences. UI hints do not replace output filtering."
        },
        {
          "path": "patients[].history[].disclosure.mode",
          "type": "\"initial\" | \"facilitator\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Initial reveals at baseline; other modes require an action, condition, or facilitator release."
        },
        {
          "path": "patients[].history[].disclosure.actionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Successful completion of this action reveals the entry."
        },
        {
          "path": "patients[].history[].disclosure.conditionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Reveal when the condition first becomes true; reject unrelated trigger fields."
        }
      ],
      "rules": [
        "Disclosure is a shared structure for history, findings, and result interpretations. Once revealed, content stays available.",
        "Store unknown allergy status explicitly as content. An empty allergy category means no entry was authored, not no known allergies.",
        "The optional allergy object is permitted only on allergy history entries and follows the entry disclosure rules. Keep unknown status explicit; do not invent a substance for a no-known-allergy statement. Severity is mild, moderate, severe, or unknown; omission means unspecified."
      ],
      "example": {
        "patients": [
          {
            "id": "patient-alex",
            "history": [
              {
                "id": "history-summary",
                "category": "present-illness",
                "content": "An update is pending; no owner was assigned.",
                "occurredAtSeconds": -300,
                "disclosure": {
                  "audience": [
                    "learner",
                    "facilitator"
                  ],
                  "mode": "on-action",
                  "actionId": "ask-context"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "topic": "physical-examination",
      "change": "Use findings for symptoms, examination findings, and measurements, with collection, availability, interpretation, and disclosure separated.",
      "fields": [
        {
          "path": "findings[].id",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Stable finding or measurement identity; a repeat collection creates a new finding ID."
        },
        {
          "path": "findings[].patientId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Patient to whom the finding belongs."
        },
        {
          "path": "findings[].code",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Namespaced concept, such as usim:general-appearance; codes do not imply external terminology certification."
        },
        {
          "path": "findings[].kind",
          "type": "\"symptom\" | \"finding\" | \"measurement\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Separates reported experience, observed findings, and measured values."
        },
        {
          "path": "findings[].status",
          "type": "\"known\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Known requires a value. Other statuses prohibit a value rather than using zero or an empty string as a sentinel."
        },
        {
          "path": "findings[].value",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Type must match the registered concept. Qualitative findings can be text or explicit booleans."
        },
        {
          "path": "findings[].unit",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Fixed by the concept definition; no inferred conversions."
        },
        {
          "path": "findings[].collectedAtSeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Time of authored assessment or acquisition, possibly before baseline."
        },
        {
          "path": "findings[].availableAtSeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Earliest simulated time for release; disclosure conditions must also be satisfied."
        },
        {
          "path": "findings[].method",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Method, location, or equipment used to obtain the finding."
        },
        {
          "path": "findings[].disclosure",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Select one of the declared Disclosure alternatives; use the fields belonging to that alternative."
        }
      ],
      "rules": [
        "Display standard ROS and examination system codes using authoringProfiles.usim:age-based-normal-findings.systems labels in both authoring and learner views (for example ent is Ears, nose and throat). Preserve custom system labels verbatim; never title-case a code to invent a clinical label.",
        "Author-selected normal findings use usim:age-based-normal-findings@1.1.0 in authoringProfiles. Select by age in years: infant [0,1), child [1,12), adolescent [12,18), adult [18,65), older adult [65,infinity); missing or invalid age uses age-neutral text. Materialize selected text as explicit authored findings linked to the system. Preserve existing values, including blanks, unknown and not assessed. Age changes never rewrite saved findings. Omission never implies normal; do not inject templates during import or playback. Selected templates are stored as canonical findings: symptom entries for ROS and finding entries for examination, linked by patientId and system code.",
        "Pending results do not expose their future value in learner outputs. Underlying authored values and runtime release status must remain distinct.",
        "A numeric concept has one declared unit and value type in the profile. New concepts require definitions under extensions until standardized."
      ],
      "example": {
        "findings": [
          {
            "id": "obs-appearance",
            "patientId": "patient-alex",
            "code": "usim:general-appearance",
            "kind": "finding",
            "status": "known",
            "value": "Comfortable and speaking clearly",
            "collectedAtSeconds": 0,
            "disclosure": {
              "audience": [
                "learner",
                "facilitator"
              ],
              "mode": "on-action",
              "actionId": "examine-patient"
            }
          }
        ]
      }
    },
    {
      "topic": "review-of-systems",
      "change": "Represent present, absent, unknown, and unasked symptoms explicitly.",
      "fields": [
        {
          "path": "patients[].reviewOfSystems[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Groups symptom findings by authored system heading without duplicating their values."
        },
        {
          "path": "findings[].reportedByActorId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Identifies the patient actor, relative, or colleague supplying the history."
        },
        {
          "path": "findings[].reliabilityNote",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Facilitator context on conflicting or incomplete history; visibility follows the finding's disclosure policy."
        }
      ],
      "tables": [
        {
          "title": "Unable to obtain ROS reasons (Suite authoring profile)",
          "description": "usim:unavailable-ros@1.0.0 stores the selected statement in reliabilityNote on a canonical symptom finding with code usim:ros:Unable%20to%20obtain and status not-assessed. These are explicit author selections, never inferred negative findings.",
          "columns": [
            "Dropdown label",
            "Stored value"
          ],
          "rows": [
            [
              "Reason not specified",
              "Unable to obtain review of systems."
            ],
            [
              "Clinical condition / acuity",
              "Unable to obtain review of systems due to clinical condition or acuity."
            ],
            [
              "Altered mental status",
              "Unable to obtain review of systems due to altered mental status."
            ],
            [
              "Unconsciousness",
              "Unable to obtain review of systems due to unconsciousness."
            ],
            [
              "Intubation / sedation",
              "Unable to obtain review of systems due to intubation or sedation."
            ],
            [
              "Developmental limitations",
              "Unable to obtain review of systems due to developmental limitations."
            ],
            [
              "Cognitive impairment",
              "Unable to obtain review of systems due to cognitive impairment."
            ],
            [
              "Communication barrier",
              "Unable to obtain review of systems due to a communication barrier."
            ],
            [
              "Patient declined",
              "Unable to obtain review of systems due to the patient declining assessment."
            ],
            [
              "Collateral historian unavailable",
              "Unable to obtain review of systems due to an unavailable collateral historian."
            ],
            [
              "Other limitation",
              "Unable to obtain review of systems due to another limitation."
            ]
          ]
        }
      ],
      "rules": [
        "Suite offers Unable to obtain beside Default. Selecting it replaces the whole ROS record with a single \"Unable to obtain\" entry. Its reason dropdown stores the explicit statement from usim:unavailable-ros@1.0.0, initially Reason not specified. Existing custom reason strings remain valid and selectable. Default removes this entry and materializes age-specific normal findings; removing the entry leaves ROS unspecified. Import and playback must preserve the statement without inferring negative symptoms.",
        "Author-selected normal findings use usim:age-based-normal-findings@1.1.0 in authoringProfiles. Select by age in years: infant [0,1), child [1,12), adolescent [12,18), adult [18,65), older adult [65,infinity); missing or invalid age uses age-neutral text. Materialize selected text as explicit authored findings linked to the system. Preserve existing values, including blanks, unknown and not assessed. Age changes never rewrite saved findings. Omission never implies normal; do not inject templates during import or playback. Selected templates are stored as canonical findings: symptom entries for ROS and finding entries for examination, linked by patientId and system code.",
        "For a boolean symptom concept, known/false means explicitly absent and known/true means present. Not-assessed omits value. Unselected symptoms remain unspecified.",
        "Conflicting reports use separate finding IDs and reporters; the format does not silently select a true version."
      ],
      "example": {
        "patients": [
          {
            "id": "patient-alex",
            "reviewOfSystems": [
              {
                "system": "general",
                "findingIds": [
                  "obs-fatigue"
                ]
              }
            ]
          }
        ],
        "findings": [
          {
            "id": "obs-fatigue",
            "patientId": "patient-alex",
            "code": "usim:fatigue",
            "kind": "symptom",
            "status": "not-assessed",
            "disclosure": {
              "audience": [
                "facilitator"
              ],
              "mode": "initial"
            }
          }
        ]
      }
    },
    {
      "topic": "vital-signs",
      "change": "Define physiologic variables separately from measured findings and support authored trends.",
      "fields": [
        {
          "path": "patients[].variables[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One numeric physiologic variable belonging to this patient."
        },
        {
          "path": "findings[].variableId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "On collection, snapshot this variable's current value into a new measurement; later trends do not rewrite past results."
        },
        {
          "path": "events.effects[].durationSeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Duration of a linear authored change from current value to target. Instant changes use set-variable."
        },
        {
          "path": "events.effects[].interpolation",
          "type": "\"linear\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "The format supports one explicit interpolation rule; no inferred dose-response or disease model."
        },
        {
          "path": "resources[].diagnostic.orthostaticResponse",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Report standing BP relative to current resting BP when requested, without changing resting physiology. An authored learner result takes precedence."
        }
      ],
      "tables": [
        {
          "title": "Normal ranges by age",
          "description": "Use the patient's age to choose a row. ‘Under’ excludes the upper age; the next row starts at that age. Values at either end of a vital-sign range are within range.",
          "columns": [
            "Age",
            "Group",
            "HR",
            "RR",
            "Systolic BP",
            "Diastolic BP"
          ],
          "rows": [
            [
              "Birth to under 28 days",
              "Newborn",
              "100–205",
              "30–53",
              "67–84",
              "35–53"
            ],
            [
              "28 days to under 1 year",
              "Infant",
              "100–180",
              "30–53",
              "72–104",
              "37–56"
            ],
            [
              "1 to under 3 years",
              "Toddler",
              "98–140",
              "22–37",
              "86–106",
              "42–63"
            ],
            [
              "3 to under 6 years",
              "Preschool",
              "80–120",
              "20–28",
              "89–112",
              "46–72"
            ],
            [
              "6 to under 12 years",
              "School age",
              "75–118",
              "18–25",
              "97–115",
              "57–76"
            ],
            [
              "12 to under 16 years",
              "Adolescent",
              "60–100",
              "12–20",
              "102–120",
              "61–80"
            ],
            [
              "16 years and older",
              "Older adolescent / adult",
              "60–100",
              "12–18",
              "90–120",
              "60–80"
            ]
          ]
        },
        {
          "title": "Ranges shared across ages",
          "description": "These defaults also require a known age. HR is in beats/min, RR in breaths/min, and blood pressure in mmHg.",
          "columns": [
            "Vital sign",
            "Normal range",
            "Unit"
          ],
          "rows": [
            [
              "Oxygen saturation (SpO2)",
              "95–100",
              "%"
            ],
            [
              "Temperature",
              "36.5–37.3",
              "°C"
            ],
            [
              "End-tidal CO2 (EtCO2)",
              "35–45",
              "mmHg"
            ]
          ]
        },
        {
          "title": "How a reading is interpreted",
          "columns": [
            "Priority",
            "Use",
            "Meaning"
          ],
          "rows": [
            [
              "1",
              "Authored flag",
              "An explicitly authored flag takes precedence, including none or not-interpreted."
            ],
            [
              "2",
              "Authored reference interval",
              "Use the scenario's own range. A text-only interval leaves numeric interpretation unspecified."
            ],
            [
              "3",
              "Age-based default",
              "If neither is supplied, use the patient's age and the tables above. Missing or invalid age leaves the reading uninterpreted."
            ]
          ]
        }
      ],
      "rules": [
        "Core vital concepts use hr (beats/min), sbp/dbp (mmHg), rr (breaths/min), spo2 (%), temperature (Cel), and etco2 (mmHg). Normal-value interpretation uses the usim:age-based-vitals profile published in referenceProfiles, shared by preview, PDF, and other consumers.",
        "Builder patient vital controls use the canonical patientEditors.vitals authoring metadata. A row with Monitor on the left and its switch on the right, without visible ON/OFF labels, sets initial visibility; its accessible name identifies the measurement and says Show on monitor initially. The systolic control manages both systolic and diastolic readings for its channel. It does not set physiology, connect equipment later, or override an event's explicit visibility.",
        "End-tidal CO₂ uses a 0–100 mmHg convenience slider with an adult reference interval of 35–45 mmHg (AAST End-Tidal CO₂ Technical Guideline, https://www.aastweb.org/Portals/0/Docs/Resources/Guidelines/End-Tidal%20CO2-1.pdf). Arterial systolic/diastolic BP reuse cuff BP slider ranges 0–300/0–200 mmHg and adult reference intervals 90–120/60–80 mmHg. Reference intervals are display guidance for known adults, not treatment targets or validation bounds. Unset values stay unset and show a full-width numeric Not specified input. Entering a number within the convenience range reveals the slider beside the numeric input; clearing it restores the plain input without losing focus. Numeric inputs preserve values outside the convenience range. Nonmonitored fields such as pain do not reserve space for a monitor control; paired systolic and diastolic fields retain their shared-channel alignment.",
        "Pain is an optional patient-reported 0–10 score (usim:pain, unit score), independent of monitor connections. Omission means unknown, never zero. Analgesic percentage responses are rounded to whole scores and bounded 0–10.",
        "Read age from the patient’s demographics.age in days, months, or years. For display, 28 days is approximately 0.077 years. Calculations use the exact conversion (days ÷ 365.25 or months ÷ 12), without rounding. Do not infer age from weight, title, or appearance.",
        "For a known numeric vital measurement: explicit findings[].flag takes precedence, then an authored findings[].referenceInterval, then the age-based default. A text-only authored interval suppresses automatic numeric interpretation. Validate authored intervals and unit agreement; never fall back to defaults after an invalid override. Compare strictly below low or above high; endpoints are within range. Derived flags are output interpretation, not mutations of authored values or flags. Defaults never infer critical severity.",
        "The default profile uses awake/resting values after postnatal transition, not physiologic limits or treatment targets. Changing a patient's age immediately changes the default range applied to both initial and event vitals; it never changes the actual authored values. Keep the profile version fixed for reproducible interpretation. Custom numeric concepts require an authored reference interval; no vital defaults apply to unrelated laboratory tests.",
        "orthostaticResponse requires the orthostatic-results execution capability. Snapshot both resting BP variables when the diagnostic is requested; compute standing systolic = baseline systolic minus systolicDrop and standing diastolic = baseline diastolic minus diastolicDrop. Persist that request-time snapshot through delayed release. This produces a result, not a set-variable effect: resting physiology is unchanged, and no heart-rate response is inferred.",
        "An authored nonblank result takes precedence over the computed orthostatic report. Missing baseline BP, nonpositive computed pressure, or computed systolic not greater than diastolic produces an unavailable result, never invented values. Invalid references, units, or drop parameters invalidate the document. Explicit learner disclosure still controls delivery; a disconnected monitor does not prevent a requested bedside measurement.",
        "The format supplies no default orthostatic drop. The included positive teaching resource authors systolicDrop 20 and diastolicDrop 10 mmHg; 130/80 therefore reports 110/70. Suite maps this payload to events.objects[].orthostaticResponse and its single patient's current sbp/dbp. Portable patient/variable references require an adapter; the Suite importer does not accept portable documents directly.",
        "A new set or trend targeting the same variable cancels its prior trend. Trend start value is the value at that simulated instant. Validate finite values and concept bounds; unit mismatch is an error."
      ],
      "example": {
        "executionProfile": {
          "id": "https://example.invalid/usim/profiles/positional-measurements",
          "version": "1.0.0",
          "requiredCapabilities": [
            "orthostatic-results"
          ],
          "optionalCapabilities": []
        },
        "resources": [
          {
            "id": "positive-orthostatics",
            "kind": "diagnostic",
            "name": "Positive orthostatic vital signs",
            "description": "Authored standing measurement relative to resting BP.",
            "sourceIds": [],
            "diagnostic": {
              "category": "physiologic",
              "resultIds": [],
              "orthostaticResponse": {
                "patientId": "patient-alex",
                "systolicVariableId": "var-sbp",
                "diastolicVariableId": "var-dbp",
                "systolicDrop": 20,
                "diastolicDrop": 10
              }
            }
          }
        ],
        "patients": [
          {
            "id": "patient-alex",
            "variables": [
              {
                "id": "var-hr",
                "concept": "usim:hr",
                "value": 80,
                "unit": "beats/min"
              },
              {
                "id": "var-sbp",
                "concept": "usim:sbp",
                "value": 130,
                "unit": "mmHg"
              },
              {
                "id": "var-dbp",
                "concept": "usim:dbp",
                "value": 80,
                "unit": "mmHg"
              }
            ]
          }
        ],
        "events": {
          "effects": [
            {
              "id": "effect-settle",
              "kind": "trend-variable",
              "targetId": "var-hr",
              "value": 76,
              "unit": "beats/min",
              "durationSeconds": 30,
              "interpolation": "linear"
            }
          ]
        }
      }
    },
    {
      "topic": "states",
      "change": "Give states explicit entry, exit, effects, and role-specific content; separate phases from concurrent conditions.",
      "fields": [
        {
          "path": "events.states[].id",
          "type": "string",
          "requirement": "Required",
          "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
        },
        {
          "path": "events.states[].title",
          "type": "string",
          "requirement": "Required",
          "description": "A short name for this phase, such as Initial assessment or Worsening respiratory distress."
        },
        {
          "path": "events.states[].kind",
          "type": "\"baseline\" | \"phase\" | \"conclusion\"",
          "requirement": "Required",
          "description": "Baseline starts the case; triggered and scheduled describe intermediate phases; conclusion ends the run. A scheduled phase still needs an incoming timed interaction."
        },
        {
          "path": "events.states[].entryConditionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Guard checked immediately before entry. Failed manual transitions are rejected; scheduled failures are recorded and skipped."
        },
        {
          "path": "events.states[].onEnterEffectIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Ordered effect identifiers applied when this state is entered."
        },
        {
          "path": "events.states[].onExitEffectIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Ordered effect identifiers applied when this state is exited; execution requires support for exit effects."
        },
        {
          "path": "events.states[].learnerBrief",
          "type": "string",
          "requirement": "Required",
          "description": "Information presented to the learner at this phase: the patient's condition, new findings, or an immediate task. Keep tutor instructions and unrevealed answers in the tutor prompt."
        },
        {
          "path": "events.states[].facilitatorBrief",
          "type": "string",
          "requirement": "Required",
          "description": "Guide the tutor through this phase: expected learner actions, cues to offer if learners struggle, and when and why to advance. Include relevant reasoning and facilitation instructions."
        },
        {
          "path": "events.states[].objectiveIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Links the phase to an educational objective."
        },
        {
          "path": "events.states[].exitConditionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Must hold to leave the phase; does not cause a transition by itself."
        },
        {
          "path": "events.flags[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Concurrent facts such as ownership-agreed; flags coexist independently of the single active phase."
        }
      ],
      "rules": [
        "Exactly one baseline contains only the starting conditions. In newly authored flows, meaningful milestones advance to distinct non-baseline phases, even when physiology is unchanged; do not author self-loops or return transitions to baseline. Routine resource requests do not require their own phase. Existing explicit source flows remain supported and must not be silently rewritten. At least one conclusion must be reachable. One phase is active at a time; concurrent clinical or team conditions are flags or variables, not competing active phases.",
        "Validate exit and destination entry guards against the pre-transition snapshot. Then apply exit effects, action completion effects, and entry effects in that order. A failed guard causes no partial effects.",
        "Conclusion freezes simulated progression and cancels pending schedules and unfinished actions; it is not a pass/fail score. Facilitator stop produces an interrupted run outside the scenario's normal ending logic."
      ],
      "example": {
        "events": {
          "flags": [
            {
              "id": "flag-owner-agreed",
              "initialValue": false
            }
          ],
          "states": [
            {
              "id": "state-clarifying",
              "title": "Clarify ownership",
              "kind": "phase",
              "onEnterEffectIds": [],
              "onExitEffectIds": [],
              "learnerBrief": "Who will follow up the pending update?",
              "facilitatorBrief": "Accept an explicit owner and read-back. If stalled, use the ownership cue.",
              "objectiveIds": [
                "objective-ownership"
              ],
              "exitConditionId": "condition-owner-agreed"
            }
          ]
        }
      }
    },
    {
      "topic": "actions",
      "change": "Allow actions to reveal information, perform work, or change a phase, with conditional outcomes and repeat-use rules.",
      "fields": [
        {
          "path": "events.actions[].id",
          "type": "string",
          "requirement": "Required",
          "description": "A stable identifier used to reference this entry. Keep it unchanged when editing the entry's name or content."
        },
        {
          "path": "events.actions[].kind",
          "type": "\"generic\" | \"medication-order\" | \"medication-administration\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Discriminator for conditional action payloads. Specialized fields are prohibited unless kind selects the corresponding branch."
        },
        {
          "path": "events.actions[].label",
          "type": "string",
          "requirement": "Required",
          "description": "Use a short, observable action or timed-event label: 2–6 words, at most 48 characters. Put conditions, clinical detail, and what happens in description, not in the label. Do not append the destination state; from/to already identify it."
        },
        {
          "path": "events.actions[].description",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Longer explanation of the action or timed event, its conditions, and what happens. Plain-language context only; executable behavior remains in the selected trigger, timing, resource references, and destination state. Text does not automatically detect learner behavior. Optional when the label provides sufficient context."
        },
        {
          "path": "events.actions[].patientId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Required when the action targets a patient; omit for team-only actions."
        },
        {
          "path": "events.actions[].availableInStateIds",
          "type": "string[]",
          "requirement": "Required",
          "description": "The phase in which this interaction is available or its scheduled timer begins."
        },
        {
          "path": "events.actions[].conditionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Prerequisite evaluated at start and again at completion."
        },
        {
          "path": "events.actions[].durationSeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Simulated time between start and completion. Availability is evaluated at start."
        },
        {
          "path": "events.actions[].repeat",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Completed uses count against maxUses; cooldown starts at completion. No implicit unlimited repeats."
        },
        {
          "path": "events.actions[].cancellable",
          "type": "boolean",
          "requirement": "Optional; omitted means unspecified",
          "description": "Whether an operator can cancel before completion; cancellation does not count as a completed use."
        },
        {
          "path": "events.actions[].onPhaseExit",
          "type": "\"cancel\" | \"continue\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Policy for unfinished work when another event changes phase. Conclusion always cancels."
        },
        {
          "path": "events.actions[].outcomes[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Choose first matching outcome at completion. Exactly one final unconditional fallback is required. Omit nextStateId to stay in the phase."
        }
      ],
      "rules": [
        "Author patient changes in Events on destination-state entry. A navigation transition selects when and where to move; it should not duplicate those patient changes. Resource editors configure content and delivery; medication, procedure, and equipment resources may also author direct simulation responses.",
        "Action labels name learner activities. completionCriteria is an optional plain-language criterion evaluated by the AI against learner intent, conversation, and simulator interactions; equivalent wording is accepted. If omitted, the label and description provide the criterion. The AI returns evidence-backed executions separately from ambiguous choices. Multiple explicit orders can be recorded in one atomic batch before evaluating authored transitions. Only currently available actions qualify, including selected timer-canceling actions whose source events have occurred; stale interpretations and competing state transitions are rejected. Fulfilled actions that converge on the same destination without transition effects may be recorded together; the destination is entered once. The AI cannot invent states or patient effects. Explicit facilitator confirmation remains available. Optional completion { mode: any | all, resourceIds: Resource ID[] } adds direct resource recognition; automatic state releases do not count. Request completion remains distinct from delayed result availability.",
        "Suite pauses the simulation clock while the AI interprets a learner turn or new bedside interaction, so inference latency does not consume scenario time. Before committing, the runtime checks the source state and history length, records the complete requested resource batch, and then applies fulfilled authored actions. A failed batch saves no partial orders or state changes.",
        "Suite scheduled transitions may declare cancelOnActionIds: Action ID[]. State-entry timers start on each visit, cancel on exit or a selected action, and start fresh on re-entry. Same-state milestones do not restart the timer. Prior treatment history remains recorded; criteria-based actions become available on a new visit, while resource requests remain once per run. Scenario-start and action-completion timers fire once from their first anchor and persist across phase changes unless canceled. Cancellation never reverses an event that already fired. Selected unfinished actions can remain available while a timer is pending after their source has occurred. Conclusion entry cancels pending timers. At a deadline, commands are processed in order: completion saved before clock advancement cancels the pending transition; advancing the clock to the deadline first fires it.",
        "Suite facilitator confirmation requests every selected resource for an all-resource action and the sole resource for a single-resource action if not already requested. For any-resource actions with multiple alternatives, record a specific resource before confirming; confirmation rejects an unselected alternative. Chat and voice interpretation may request a directly linked or sole completion resource, but never choose an alternative or fill in missing orders for a multi-resource completion rule. Completion-bound actions require eligible learner-request evidence: accepted early orders still waiting for eligibility do not satisfy completion, while an eligible request need not wait for its delayed result. Builder authors resource links in the state inspector under Resource links. Triggers this state preserves resource destinations and any/all response rules; Released by this state uses releaseOnStateId for delivery from state entry. Each picker edits only its own direction. Transitions expose no linked-resource picker or resource configuration sheet; Edit destination state opens the owning state inspector. action.objectId requests a resource during a transition. state.resourceTrigger enters a state when its requested results are available.",
        "Request and result availability are distinct events. In Suite, action.objectId requests a resource when the transition fires and does not postpone destination entry until results arrive. To enter a labs-resulted state, use state.resourceTrigger with explicit objectIds and mode any or all; evaluate after response delays elapse. Incoming transitions remain alternative paths, not guards on result availability.",
        "Suite transition effects apply during a transition. Destination-state vitals override overlapping transition values. Builder authors patient changes on the destination state. resourceTrigger and trigger belong to the application schema.",
        "Only one instance of the same action can be active at once; different actions may run concurrently. Failed completion prerequisites record an unsuccessful attempt without completion effects or a use count.",
        "An action with medicationOrder must declare kind medication-order; an action with administration must declare kind medication-administration. Generic actions reject specialized payloads, and kind-specific patient/resource references must agree rather than silently choosing a winner.",
        "For a continuing action, evaluate its outcome against the phase and values at completion. Check any requested transition guards before committing effects.",
        "outcomes[] is ordered. Preserve its declared order and choose the first matching outcome; exactly one final unconditional fallback must be last. A consumer must not sort, deduplicate, or treat outcome order as presentation-only.",
        "Outcomes are authored consequences, not clinical judgments calculated from free text. Dose, technique, and communication assessment need structured evidence or facilitator input.",
        "An action with a single unconditional outcome and no nextStateId records once in the current state without entry effects or timer resets. Existing explicit self-transitions retain their behavior. Explicit disposition records its fulfilled authored action before offering the existing end confirmation; confirmation uses the existing end command and never awards missing criteria."
      ],
      "example": {
        "events": {
          "actions": [
            {
              "id": "ask-context",
              "kind": "generic",
              "label": "Ask who will follow up",
              "description": "Clarify who will review the pending result and communicate it to the team.",
              "availableInStateIds": [
                "state-clarifying"
              ],
              "durationSeconds": 0,
              "repeat": {
                "maxUses": 2,
                "cooldownSeconds": 0
              },
              "cancellable": false,
              "onPhaseExit": "cancel",
              "outcomes": [
                {
                  "id": "outcome-context",
                  "effectIds": [
                    "effect-reveal-history"
                  ]
                }
              ]
            }
          ]
        }
      }
    },
    {
      "topic": "timing",
      "change": "Specify deterministic scheduled events, repetition, cancellation, and clock semantics.",
      "fields": [
        {
          "path": "events.schedules[].id",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Named event allows explicit cancellation."
        },
        {
          "path": "events.schedules[].anchor",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "State-entry starts on each visit; scenario-start and action-completion use their first occurrence. State/action anchors require the corresponding ID. Scenario-start prohibits refId."
        },
        {
          "path": "events.schedules[].delaySeconds",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "Simulated seconds after the declared schedule anchor. State-entry schedules always cancel on exit and start fresh on re-entry; action timing is separate."
        },
        {
          "path": "events.schedules[].conditionId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Evaluate when due. False skips that occurrence; it does not poll until true."
        },
        {
          "path": "events.schedules[].priority",
          "type": "integer",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit ordering for simultaneous events. Equal priority uses schedule ID lexical order."
        },
        {
          "path": "events.schedules[].effectIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Operations applied atomically if the due event and transition guards are valid."
        },
        {
          "path": "events.schedules[].nextStateId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional phase transition; omit for a result or actor cue that does not move the main phase."
        },
        {
          "path": "events.schedules[].repeat",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Count includes the initial occurrence. Finite repetition prevents unbounded schedules."
        },
        {
          "path": "events.schedules[].onAnchorStateExit",
          "type": "\"cancel\" | \"continue\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Suite always cancels state timers on exit and starts fresh on re-entry, regardless of this field’s value. Omit it or use cancel."
        }
      ],
      "rules": [
        "Time advances explicitly in simulated seconds, independent of wall time. At a timestamp: sample active trends, complete due actions ordered by action ID, then process schedules by priority and ID, then refresh disclosure conditions. Each operation sees prior committed operations at that instant.",
        "Every phase transition applies exit effects, originating event effects, then entry effects. Newly scheduled events must be strictly later. An operation targeting a canceled event is a recorded no-op. Repeated anchor occurrences have distinct runtime instance IDs.",
        "Reject cyclic instantaneous effect chains. A run engine must impose documented execution bounds and report a limit failure rather than silently skipping work."
      ],
      "example": {
        "events": {
          "schedules": [
            {
              "id": "schedule-update",
              "anchor": {
                "kind": "state-entry",
                "refId": "state-waiting"
              },
              "delaySeconds": 30,
              "priority": 10,
              "effectIds": [
                "effect-release-update"
              ],
              "onAnchorStateExit": "cancel"
            }
          ]
        }
      }
    },
    {
      "topic": "objects",
      "change": "Resources define reusable content and explicit result delivery.",
      "fields": [
        {
          "path": "resources[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One resource with learner-facing information, release timing, and any authored response or patient changes."
        },
        {
          "path": "resources[].name",
          "type": "string",
          "requirement": "Required",
          "description": "The neutral title learners use to identify or request this resource. Include the dose or study details needed to distinguish similar choices."
        },
        {
          "path": "resources[].builderTitle",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "An optional explanatory title for Builder selection and authoring, such as XR Pediatric Neck (2 Views): Esophageal Button Battery. Never use it as a learner label or spoken title. Omission uses name in Builder; name remains the learner title."
        },
        {
          "path": "resources[].response.unavailableAfterResourceIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "New requests are blocked once any listed resource has been requested, even while its result is pending. This describes request order, not confirmed administration. Results already requested remain available. Omitted means no request-order restriction."
        },
        {
          "path": "resources[].response.availableAfterResourceResponses",
          "type": "object[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "All listed resource responses must already exist before this request command begins, and simulation time must reach each persisted response availability time plus authored seconds. Response availability is not inferred administration. Gates new requests only; pending and already delivered results remain. Cannot combine with automatic release."
        },
        {
          "path": "resources[].response.availableInStateIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Only new requests in these events are allowed. Already requested results remain available and their delays continue after leaving the event. Omitted means available in every event."
        },
        {
          "path": "resources[].response.effectIds",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Direct simulation effects are authored only for medication, procedure, and equipment resources. Diagnostic, consultation, and information resources retain result delivery, timing, availability, and Event links. Existing effects remain stored and executable, but must be moved to Events or the resource reclassified before publishing."
        },
        {
          "path": "resources[].response.releaseOnStateId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Choose when this resource result is released. With no linked event, learners request it in chat or from the bedside menu, and the response delay starts when the request is recorded. A linked event releases the result when that step starts, after any response delay; requests for non-diagnostic resources are checked against the action instructions. Diagnostic requests return only the requested test: completing an action does not order other tests linked to the same step. Timed or facilitator-delivered steps can still release their linked results automatically. If a step waits for required results, configure that link in Events."
        },
        {
          "path": "events.actions[].resourceId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Requests a resource when this transition fires. Builder authors resource links on the state under Results."
        },
        {
          "path": "resources[].results[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Named result combines authored report text, structured findings, media, and audience rules."
        },
        {
          "path": "resources[].results[].interpretation",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Separate diagnostic or teaching explanation from the raw learner result."
        },
        {
          "path": "resources[].response.earlyRequest",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Accept explicit chat orders before availability. The resource stays out of the menu until available or requested. Accepted orders wait for every event and response requirement, then the response delay begins. No request means no delivery. Cannot combine with automatic release."
        }
      ],
      "rules": [
        "Resource classification is stored in events.objects[].type. Diagnostic resources require diagnosticCategory: lab, imaging, or physiologic. Other resource types omit diagnosticCategory. Procedures include nursing and physician actions performed on the patient.",
        "name is always the learner title; builderTitle must never substitute for it in learner labels or spoken titles. Authoring interfaces may use builderTitle, falling back to name when it is absent. Existing documents without builderTitle retain their names. Marketplace imports preserve descriptive catalog titles as builderTitle and supply explicit neutral learner names. Titles do not control the disclosure of report text, captions, or image descriptions.",
        "response.unavailableAfterResourceIds gates new requests using persisted request history, not treatment completion. Automatic delivery is skipped when invalidated; prior results and delays remain intact. Consumers without resource-request-availability support must reject execution.",
        "response.availableInStateIds gates new requests, including automatic delivery, only. A linked automatic release event must be allowed. Delays continue and already delivered results remain visible after leaving that event. Consumers without resource-state-availability support must reject execution instead of ignoring the constraint. Omitted means unrestricted request availability.",
        "Reusable resources describe content; requests, administrations, and result deliveries are runtime instances with unique IDs and timestamps.",
        "Builder authors patient physiology in Events and, for medication, procedure, and equipment only, in the Simulation response disclosure. Custom responses support absolute set-variable, percentage scale-variable, and relative offset-variable effects; medication alone also supports versioned apply-model presets. None removes supported direct effects. Equipment monitor connectivity remains independent.",
        "Diagnostic (lab, imaging, and physiologic), consultation, and information resources do not author response.effectIds or expose Simulation response. All resource types retain result delivery, timing, availability, and Event links. Existing excluded-type effects remain stored and executable, including pinned revisions, but publication and new AI regressions are blocked until effects are moved to Events or the resource is appropriately reclassified. Builder identifies existing effects without deleting or silently disabling them.",
        "Use a schedule anchored to action completion for delayed release. No universal result delay also delays administration or every effect; timing must be expressed explicitly.",
        "A resource type does not grant access. Result availability and role filtering apply to exports, network payloads, and UI alike.",
        "response.earlyRequest opts into accepting explicit orders before availability; omission retains rejection. An empty object uses ‘Request received. We’ll let you know when it’s available.’ An optional message overrides it. The resource remains hidden from browsing until available or requested. Automatic release cannot combine with early requests.",
        "Persist accepted pending requests separately from resourceResults, with objectId, original requestedAtSeconds and requestHistoryLength. Pending requests have no returned content or availableAtSeconds. They never satisfy response gates. At eligibility, schedule the existing response delay from that instant, retaining the accepted order time. Recheck on event/time/result updates and resumed execution; deduplicate, cancel on invalidation, and never deliver after completion."
      ],
      "example": {
        "events": {
          "states": [
            {
              "id": "initial",
              "kind": "baseline",
              "title": "Initial"
            },
            {
              "id": "results",
              "kind": "phase",
              "title": "Results available"
            }
          ]
        },
        "resources": [
          {
            "id": "thyroid",
            "kind": "medication",
            "name": "Levothyroxine",
            "response": {
              "earlyRequest": {
                "message": "Levothyroxine ordered. Pharmacy is preparing it."
              },
              "availableInStateIds": [
                "results"
              ],
              "delaySeconds": 30
            }
          }
        ],
        "education": {
          "assessment": [
            {
              "id": "thyroid-order",
              "label": "Order thyroid treatment",
              "evidence": {
                "kind": "resource-request",
                "resourceIds": [
                  "thyroid"
                ]
              },
              "points": 1,
              "feedback": "Discuss recognition and early treatment."
            }
          ]
        }
      },
      "tables": [
        {
          "title": "Early order execution example",
          "description": "Runtime records belong to the revision-pinned run, separately from the scenario fragment above. Delivery does not change credit.",
          "columns": [
            "Time",
            "Event",
            "Persisted evidence",
            "Credit"
          ],
          "rows": [
            [
              "5 seconds",
              "Initial; resource hidden from menu; explicit chat order accepted",
              "pendingResourceRequests: [{objectId: thyroid, requestedAtSeconds: 5, requestHistoryLength: 1}]; resourceResults: []",
              "1 point"
            ],
            [
              "20 seconds",
              "Enter Results available",
              "pendingResourceRequests: []; resourceResults: [{objectId: thyroid, requestedAtSeconds: 5, requestHistoryLength: 1, availableAtSeconds: 50, result: authored response}]",
              "1 point"
            ],
            [
              "50 seconds",
              "Existing delayed response machinery delivers once",
              "The same result record and original accepted-order timestamp remain",
              "1 point"
            ]
          ]
        }
      ]
    },
    {
      "topic": "medications",
      "change": "Separate a medication definition, order, administration, infusion, and authored response.",
      "fields": [
        {
          "path": "resources[].medication",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Reusable product definition. QuantityRatio is numerator Quantity / denominator Quantity; positive denominator is required."
        },
        {
          "path": "resources[].medicationOrderTemplate",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional resource order template. These authored instructions do not create an executed order, administration record, infusion, or repeat schedule. Hidden details are retained when route, method, frequency, or PRN changes."
        },
        {
          "path": "events.actions[].medicationOrder",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Quantity is { value: positive number, unit: string }. Units are explicit; route must belong to allowedRoutes."
        },
        {
          "path": "events.actions[].administration",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Administration is a separate observable action referencing an order, not an automatic consequence of writing it."
        },
        {
          "path": "events.actions[].administration.rate",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit amount per time or volume per time. No implicit unit conversion or pump calculation."
        }
      ],
      "rules": [
        "Infusion-change and infusion-stop require an active infusion for the same order and patient. Runtime administration records preserve authored amount, route, time, and operator evidence separately from the scenario definition.",
        "Validate dimensional compatibility of dose/concentration/rate. Reject incompatible or unrecognized units instead of guessing. Unit vocabulary and permitted conversions must be versioned before runtime adoption.",
        "Effects and schedules explicitly describe the scenario's response. This format does not prescribe treatment doses or claim a validated pharmacologic model."
      ],
      "example": {
        "resources": [
          {
            "id": "med-training-fluid",
            "kind": "medication",
            "name": "Fictional training fluid",
            "description": "Nonclinical authoring example, not a treatment instruction.",
            "sourceIds": [],
            "medication": {
              "ingredient": "Training fluid",
              "formulation": "simulation-only",
              "allowedRoutes": [
                "simulated-line"
              ]
            }
          }
        ]
      }
    },
    {
      "topic": "laboratory",
      "change": "Model orders, specimens, panels, analytes, and serial results separately.",
      "fields": [
        {
          "path": "resources[].diagnostic",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "A named request with explicit result references. Laboratory requests require an authored specimen description."
        },
        {
          "path": "resources[].results[].panelName",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Human-readable panel grouping; does not inject assumed analytes."
        },
        {
          "path": "findings[].referenceInterval",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "At least one bound or text description; numeric bounds require the finding's unit and low must not exceed high. Context describes the authored population/method."
        },
        {
          "path": "findings[].flag",
          "type": "\"low\" | \"high\" | \"critical\" | \"none\" | \"not-interpreted\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit authored flag, never inferred from a generic source default."
        },
        {
          "path": "resources[].results[].specimenStatus",
          "type": "\"adequate\" | \"inadequate\" | \"not-collected\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Allows rejected or unavailable specimens to drive a repeat-collection branch."
        }
      ],
      "rules": [
        "Results are numeric, qualitative text, or boolean findings according to the concept definition. Preserve decimals. Collection and release are distinct events.",
        "Suite stores editable laboratory rows in events.objects[].labResults with name, value and unit strings, optional referenceRange text and an optional low/high flag. It preserves authored intervals and flags through export and import; changing a result does not recalculate its flag. Omission leaves reporting metadata unspecified. This is the Suite profile mapping, not an implementation of the richer portable finding structure.",
        "Laboratory panels are reusable catalog resources, not part of the format specification. Import selected panels as explicit authored findings, preserving values, units, and provenance. Missing results remain unspecified; never inject normal results during playback.",
        "Each repeated collection creates a runtime request/result instance; serial authored result templates have distinct IDs. Do not overwrite previous results or use numeric zero for pending results."
      ],
      "example": {
        "resources": [
          {
            "id": "test-training",
            "kind": "diagnostic",
            "name": "Training specimen",
            "description": "Fictional qualitative exercise.",
            "sourceIds": [],
            "diagnostic": {
              "category": "lab",
              "specimen": "Simulated sample",
              "resultIds": [
                "result-specimen"
              ]
            },
            "results": [
              {
                "id": "result-specimen",
                "content": "Specimen labeling incomplete; recollection requested.",
                "specimenStatus": "inadequate",
                "findingIds": [],
                "assetIds": [],
                "disclosure": {
                  "audience": [
                    "learner",
                    "facilitator"
                  ],
                  "mode": "facilitator"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "topic": "imaging",
      "change": "Package portable media with acquisition context and separate interpretations.",
      "fields": [
        {
          "path": "assets[].id",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Stable asset reference used by results and outputs."
        },
        {
          "path": "assets[].path",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Path under assets/ within the package. Reject absolute paths, .. segments, symlinks, duplicate paths, and external fetches."
        },
        {
          "path": "assets[].mediaType",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Declared content type must match decoded asset type; unsupported active content is rejected."
        },
        {
          "path": "assets[].sha256",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Digest verified against bytes before use; integrity does not prove safety or authorship."
        },
        {
          "path": "assets[].description",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Accessible description of the learner-visible content without hidden diagnostic explanation."
        },
        {
          "path": "assets[].license",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Reuse terms for this asset, with attribution in a separate field."
        },
        {
          "path": "assets[].attribution",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Creator and source credit."
        },
        {
          "path": "assets[].transcriptAssetId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Packaged accessible transcript; role filtering matches the original media."
        },
        {
          "path": "resources[].diagnostic.acquisition",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Study-specific context independent of report interpretation."
        }
      ],
      "rules": [
        "Package media locally for offline playback; external links can be citations but are not runtime asset dependencies. A package must fail validation when a required asset is missing or its hash is wrong.",
        "Results reference asset IDs and separate learner/facilitator interpretations. File names, alt text, and transcripts must be reviewed for unintended answer disclosure."
      ],
      "example": {
        "resources": [
          {
            "id": "study-example",
            "kind": "diagnostic",
            "name": "Example study",
            "description": "Illustrates media references only.",
            "sourceIds": [],
            "diagnostic": {
              "category": "imaging",
              "acquisition": {
                "view": "Authored view"
              },
              "resultIds": [
                "result-image"
              ]
            },
            "results": [
              {
                "id": "result-image",
                "content": "Review the supplied image.",
                "findingIds": [],
                "assetIds": [
                  "asset-study"
                ],
                "disclosure": {
                  "audience": [
                    "learner",
                    "facilitator"
                  ],
                  "mode": "facilitator"
                },
                "interpretation": {
                  "facilitator": "Explain how the finding affects the next decision."
                }
              }
            ]
          }
        ]
      }
    },
    {
      "topic": "ecg",
      "change": "Distinguish rhythm, ECG findings, acquisition settings, and a recording.",
      "fields": [
        {
          "path": "patients[].monitor.connections",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Connected channels expose available measurements without changing physiology. An explicit empty patient connection map starts disconnected. Omitted event channels inherit their preceding connection. The patient switch has Monitor on the left and the switch on the right of one row, without visible ON/OFF labels; its accessible name explains Show on monitor initially. It determines baseline visibility, not whether a physiologic value exists. Omitted patient connections use routine monitoring defaults; capnography and arterial pressure start off without their corresponding patient measurements. Explicit event connections and saved run connections are separate overrides."
        },
        {
          "path": "resources[].equipment.monitorConnection",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Connect or disconnect an equipment channel when this resource response is released."
        },
        {
          "path": "events.effects[].channel",
          "type": "\"ecg\" | \"bloodPressure\" | \"spo2\" | \"respiration\" | \"temperature\" | \"capnography\" | \"arterialPressure\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Select one of the declared channel alternatives; use the fields belonging to that alternative."
        },
        {
          "path": "resources[].diagnostic.ecg",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Acquisition context plus independent rhythm and morphology findings; all supplied scale numbers must be positive."
        },
        {
          "path": "resources[].diagnostic.ecg.recordingAssetId",
          "type": "string",
          "requirement": "Required",
          "description": "ECG image, signal, or video manifest entry with an accessible description."
        }
      ],
      "rules": [
        "Monitor fields and set-monitor-connection require the monitor-connections execution capability. A consumer lacking a required capability must reject execution, not silently expose readings. Unknown channel names and nonboolean connection values invalidate the document.",
        "Connections control availability, not physiology or rhythm. ECG gates hr; bloodPressure gates sbp/dbp; spo2 gates oxygen saturation; respiration gates rr; temperature gates temperature; capnography gates etco2; arterialPressure gates artSbp/artDbp. Connecting a channel with no authored measurement cannot invent a reading. Disconnection hides live and newly recorded readings; it does not erase earlier measurements or underlying variables.",
        "set-monitor-connection changes only its target patient's selected channel and persists until another effect changes it. Use onEnterEffectIds for event changes and action outcome effects for equipment use; schedule the effect with delayed result release when connection should occur at that time. A declared equipment.monitorConnection must agree with its using action's channel/value. Equipment status alone never implicitly enables every monitor channel.",
        "Portable omission leaves baseline connection state unspecified; an execution profile must define it before displaying measurements. Suite maps patients[].monitor.connections to patients.monitor.connections, set-monitor-connection entry effects to events.states[].monitor.connections, and equipment.monitorConnection to events.objects[].monitorConnection. Suite new drafts enable routine ECG, cuff pressure, pulse oximetry, respiration and temperature monitoring; capnography and arterial pressure start off. Initial capnography requires an authored etco2 value and arterial pressure requires artSbp or artDbp; missing measurements leave those baseline channels off even if an older document stored true. Explicit event and saved-run connection choices remain separate overrides. Omitted event channels inherit their preceding state. These mappings describe the execution contract, not an implemented portable importer.",
        "Do not force one mutually exclusive selection for rhythm and non-rhythm findings. Each finding is separately disclosed and attributed.",
        "This format packages authored recordings. Suite schematic monitor synthesis is separately specified in docs/monitor-rhythms.md (profile 1.0.0); portable extension binding is not yet implemented."
      ],
      "example": {
        "executionProfile": {
          "id": "https://example.invalid/usim/profiles/monitoring",
          "version": "1.0.0",
          "requiredCapabilities": [
            "monitor-connections"
          ],
          "optionalCapabilities": []
        },
        "patients": [
          {
            "id": "patient-alex",
            "monitor": {
              "connections": {}
            }
          }
        ],
        "events": {
          "effects": [
            {
              "id": "connect-ecg",
              "kind": "set-monitor-connection",
              "targetId": "patient-alex",
              "channel": "ecg",
              "value": true
            }
          ]
        },
        "resources": [
          {
            "id": "device-ecg-monitor",
            "kind": "equipment",
            "name": "ECG monitor",
            "description": "Connect with an authored action referencing connect-ecg.",
            "sourceIds": [],
            "equipment": {
              "type": "ecg-monitor",
              "status": "available",
              "monitorConnection": {
                "channel": "ecg",
                "connected": true
              }
            }
          },
          {
            "id": "ecg-example",
            "kind": "diagnostic",
            "name": "Authored ECG",
            "description": "Example structure, not a diagnostic case.",
            "sourceIds": [],
            "diagnostic": {
              "category": "physiologic",
              "resultIds": [],
              "ecg": {
                "leadConfiguration": "12-lead",
                "recordingAssetId": "asset-ecg",
                "findingIds": []
              }
            }
          }
        ]
      }
    },
    {
      "topic": "ventilation",
      "change": "Separate airway state, ventilator settings, measured values, and alarms.",
      "fields": [
        {
          "path": "patients[].airway",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Non-natural airway requires a device reference; presence does not imply correct placement or function."
        },
        {
          "path": "resources[].equipment.ventilation",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Setting is { name: string, value: number, unit: string }; settings and findings remain distinct."
        },
        {
          "path": "resources[].equipment.ventilation.alarms[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Authored alarm conditions and visible messages, evaluated from explicit conditions."
        }
      ],
      "rules": [
        "Declare a mode's allowed and required settings in a device profile; an unknown profile cannot execute. This format does not specify every ventilator manufacturer's modes.",
        "Setting units include tidal volume mL, set rate breaths/min, inspired oxygen fraction 0–1, and PEEP cmH2O."
      ],
      "example": {
        "patients": [
          {
            "id": "patient-alex",
            "airway": {
              "status": "natural"
            }
          }
        ],
        "resources": [
          {
            "id": "device-vent",
            "kind": "equipment",
            "name": "Training ventilator",
            "description": "Requires a mode profile before execution.",
            "sourceIds": [],
            "equipment": {
              "type": "ventilator",
              "status": "available",
              "ventilation": {
                "mode": "extension-profile-required",
                "settings": [],
                "measurementIds": [],
                "alarms": []
              }
            }
          }
        ]
      }
    },
    {
      "topic": "lines",
      "change": "Give devices identity, placement, function, and associated measurements.",
      "fields": [
        {
          "path": "resources[].equipment",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Covers vascular access, urinary/gastric tubes, invasive monitoring, and other authored devices."
        },
        {
          "path": "resources[].equipment.placement",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Separate placement time and authored confirmation from mere presence."
        },
        {
          "path": "resources[].equipment.capabilities",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Named capabilities referenced by procedure prerequisites or environment requirements."
        }
      ],
      "rules": [
        "Connected and malfunctioning patient devices require patientId. Measurements are findings with their own units and times; they are not automatically equivalent to noninvasive measurements.",
        "Removed devices remain in event history. A replacement is a different device instance, even when the same resource template is reused."
      ],
      "example": {
        "resources": [
          {
            "id": "device-line",
            "kind": "equipment",
            "name": "Simulated peripheral line",
            "description": "Baseline access for the exercise.",
            "sourceIds": [],
            "equipment": {
              "type": "peripheral-iv",
              "status": "connected",
              "patientId": "patient-alex",
              "site": "Authored site",
              "placement": {
                "confirmation": "unknown"
              },
              "capabilities": [
                "simulated-access"
              ]
            }
          }
        ]
      }
    },
    {
      "topic": "procedures",
      "change": "Specify preparation, observed performance, outcomes, and complications for procedures.",
      "fields": [
        {
          "path": "resources[].procedure",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Preparation and performance content with an explicit action deciding the authored result."
        },
        {
          "path": "resources[].procedure.steps[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Ordered observable steps. Action evidence requires actionId; facilitator evidence is recorded during the run."
        },
        {
          "path": "resources[].procedure.complications[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Conditional authored consequences evaluated once at procedure completion, in listed order."
        }
      ],
      "rules": [
        "A step marked critical is educational metadata, not automatic failure. Assessment criteria define its scoring consequence.",
        "Procedure completion requires explicit evidence. Timed passage or clicking an action alone must not be described as demonstrating manual technique."
      ],
      "example": {
        "resources": [
          {
            "id": "procedure-readback",
            "kind": "procedure",
            "name": "Structured read-back",
            "description": "Nonclinical procedural example.",
            "sourceIds": [],
            "procedure": {
              "indication": "Confirm shared responsibility.",
              "requiredResourceIds": [],
              "steps": [
                {
                  "id": "step-name-owner",
                  "instruction": "Name the person responsible for follow-up.",
                  "evidence": "facilitator",
                  "critical": true
                }
              ],
              "outcomeActionId": "confirm-readback",
              "complications": []
            }
          }
        ]
      }
    },
    {
      "topic": "environment",
      "change": "Add reproducible setup, actor behavior, communication exchanges, and reset instructions.",
      "fields": [
        {
          "path": "environment.setting",
          "type": "string",
          "requirement": "Required",
          "description": "Where the scenario takes place and the relevant features of the care environment."
        },
        {
          "path": "environment.teamRoles[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Portable learner role requirements. Counts are nonnegative with maxCount ≥ minCount; actual assignments belong to delivery records."
        },
        {
          "path": "environment.requirements[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One pre-session setup task with a concrete outcome, such as programming initial manikin vital signs or briefing an actor."
        },
        {
          "path": "environment.actors[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One role-player's identity, role in the case, and instructions for responding to learners."
        },
        {
          "path": "environment.actors[].cues[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit trigger and repeat bound. Display sends authored text; facilitator means a prompt for a human actor."
        },
        {
          "path": "resources[].consultation",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "A structured exchange with authored requests and responses rather than a one-line result."
        },
        {
          "path": "environment.resetSteps",
          "type": "string[]",
          "requirement": "Optional; omitted means unspecified",
          "description": "Ordered steps to restore equipment, media, supplies, and actor starting conditions."
        }
      ],
      "rules": [
        "Role descriptions are scenario content; named staff and room bookings remain Center records. Actor display cues are authored content, not autonomous dialogue generation.",
        "Before re-running, create a new runtime instance and perform reset steps; clearing an active phase alone does not restore consumed resources or finding history."
      ],
      "example": {
        "environment": {
          "setting": "Simulated handoff room",
          "teamRoles": [
            {
              "id": "role-receiver",
              "name": "Receiving colleague",
              "minCount": 1,
              "maxCount": 2,
              "brief": "Establish a shared next step."
            }
          ],
          "requirements": [],
          "actors": [
            {
              "id": "actor-outgoing",
              "name": "Outgoing colleague",
              "role": "Facilitator-played colleague",
              "opening": "There is an update still pending.",
              "knowledge": [
                "No follow-up owner was assigned."
              ],
              "affect": "Busy but cooperative",
              "cues": []
            }
          ],
          "resetSteps": [
            "Return the handoff note to its opening version."
          ]
        }
      }
    },
    {
      "topic": "education",
      "change": "Define prerequisites, observable objectives, assessment criteria, and debrief prompts.",
      "fields": [
        {
          "path": "education.rationale",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explain why this case is educationally useful and how its decisions and challenges support the learning objectives."
        },
        {
          "path": "education.preparation[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Preparation activities and packaged resources, with an explicit audience for each item. Instructions may use Markdown for formatted module directions and links; assetIds reference packaged learning documents. This describes preparation, not completion tracking or an enforced start gate. Builder presents prerequisite instructions and documents in Teaching context alongside the educational rationale."
        },
        {
          "path": "education.objectives[].domain",
          "type": "\"knowledge\" | \"reasoning\" | \"technical-skill\" | \"communication\" | \"teamwork\" | \"professionalism\" | \"systems\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "Optional classification for discovery; it does not select a scoring algorithm."
        },
        {
          "path": "education.objectives[].performance",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Observable behavior, conditions of performance, and acceptable standard. Team evidence cannot be attributed automatically to each individual."
        },
        {
          "path": "education.objectives[].curriculumMappings[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Curriculum or competency references; mappings are author assertions, not accreditation or equivalence. ACGME core competency mappings use framework https://www.acgme.org/programs-and-institutions/programs/common-program-requirements/, version core-competencies-2026-09, and codes PC, MK, PBLI, ICS, PROF, SBP. Specialty-specific Milestones require their own framework and version; do not infer levels from scenario scores."
        },
        {
          "path": "education.objectives[].learnerBrief",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Learner-facing statement of the task or objective. Facilitator success criteria may contain spoilers and are not included implicitly."
        },
        {
          "path": "education.objectives[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One observable learning goal, using an action verb such as recognize, assess, communicate, or initiate."
        },
        {
          "path": "education.assessment[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One scored criterion linking an observable skill to a recorded action, with points and debrief feedback."
        },
        {
          "path": "education.debriefPrompts[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "One reflection prompt with a stable ID and optional objective references and facilitator notes. Builder edits the primary question in the single Debrief prompt field and preserves additional existing questions and notes in scenario data without displaying them in the Builder."
        },
        {
          "path": "education.assessment[].evidence",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Choose action completion or an accepted resource request. Resource credit is earned at acceptance, including an early pending order, even if canceled or never delivered. Alternatives mean any one; use separate criteria when all treatments are required. Existing action-or-equivalent-resource criteria retain their saved behavior."
        }
      ],
      "rules": [
        "Builder provides a single primary Debrief prompt editor without add/remove controls. Additional existing prompt records retain their IDs, questions, objective references, and facilitator notes; these additional details are preserved in scenario data and are not displayed in the Builder. The canonical debriefPrompts array supports multiple records.",
        "Objective evidence actions and debrief objective references resolve to their declared entity type. Reference lists contain no duplicates.",
        "Preparation instructions may use Markdown and links. Supporting documents reference packaged assets. Builder keeps prerequisite instructions and documents in Teaching context alongside the educational rationale. Attach documents by clicking the shared dropzone or dropping a file onto it.",
        "Objective learnerBrief is learner-facing. Preparation follows its declared audience. Rationale, performance criteria, and debrief rationales are facilitator-only by default. Release debrief questions through an explicit delivery view; includeIds never overrides audience restrictions.",
        "Assessment criteria link learner actions to points, optional deadlines, feedback, and learning materials. Conclusion states close the scenario; reaching a conclusion does not establish that objectives were met.",
        "Keep learner identities, scores, actual timing, feedback, recordings, and progress outside the portable scenario. Delivery records identify scenarioId and metadata.revision.",
        "Do not infer competence solely from a transition. Event evidence can establish that an action occurred; quality of communication or procedure performance may require facilitator judgment.",
        "education.assessment[].evidence.kind resource-request uses resourceIds as acceptable alternatives. It excludes actionId/objectId/objectIds; without evidence, actionId remains required and existing equivalent-resource behavior is unchanged. Credit attaches to the earliest accepted learner order, even when pending, canceled or never delivered. Automatic delivery is not an order. Split all-required components into separate criteria."
      ],
      "example": {
        "education": {
          "rationale": "Practice explicit ownership of pending work during a handoff.",
          "preparation": [
            {
              "id": "prepare-handoff",
              "audience": "learner",
              "instructions": "Review the local handoff structure.",
              "assetIds": []
            }
          ],
          "objectives": [
            {
              "id": "objective-ownership",
              "statement": "Name a follow-up owner and confirm acceptance.",
              "domain": "communication",
              "performance": {
                "context": "At the end of the handoff",
                "expectedBehavior": "Name the owner and obtain explicit acceptance.",
                "successCriteria": "Both are observable without assistance.",
                "scope": "team"
              },
              "learnerBrief": "Agree responsibility for the pending update.",
              "evidenceActionIds": [
                "confirm-readback"
              ]
            }
          ],
          "debriefPrompts": [
            {
              "id": "debrief-owner",
              "objectiveIds": [
                "objective-ownership"
              ],
              "question": "How did you know responsibility was accepted?",
              "facilitatorRationale": "Distinguish naming a task from confirming ownership."
            }
          ]
        }
      }
    },
    {
      "topic": "inheritance",
      "change": "Define bounded conditions/effects and reproducible library composition instead of executable script text.",
      "fields": [
        {
          "path": "events.effects[].kind",
          "type": "\"set-variable\"",
          "requirement": "Optional; omitted means unspecified",
          "description": "The operation performed by this effect."
        },
        {
          "path": "events.conditions[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "All predicates must be true; empty all is explicitly true. No recursive or executable expression text."
        },
        {
          "path": "events.conditions[].all[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Operand types must match the target. Boolean flags support only eq/ne; numeric comparisons use the variable's declared unit."
        },
        {
          "path": "events.effects[].id",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "Stable effect identifier referenced by states, actions, or schedules."
        },
        {
          "path": "events.effects[].targetId",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The identifier of the variable or other entity changed by this effect."
        },
        {
          "path": "events.effects[].value",
          "type": "number",
          "requirement": "Optional; omitted means unspecified",
          "description": "The resulting value, expressed in the target variable’s declared unit."
        },
        {
          "path": "events.effects[].unit",
          "type": "string",
          "requirement": "Optional; omitted means unspecified",
          "description": "The target variable’s declared unit; effects cannot silently convert units."
        },
        {
          "path": "dependencies[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Pinned library content; digest is 64 lowercase hex characters. Floating latest dependencies are prohibited."
        },
        {
          "path": "composition.overrides[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit overrides against a resolved dependency. Paths must exist; object/array values replace in full. No inferred deep merge."
        }
      ],
      "rules": [
        "Evaluate conditions against a frozen snapshot per operation. Unknown targets, wrong types, and unsupported operators invalidate the document. There is no network, filesystem, random, or arbitrary function execution.",
        "Each effect kind has a closed operand shape: set-variable and trend-variable target numeric variables and require value/unit; set-flag targets a flag and requires boolean value; reveal and cancel-event prohibit value and unit; set-monitor-connection requires a Patient ID target, channel, and boolean value, and prohibits unit, durationSeconds, and interpolation. Consumers reject kind-specific fields that do not match the declared kind.",
        "Effect ID arrays and action outcomes are ordered collections wherever this specification says operations or outcomes are ordered. Preserve their declared order; do not sort or deduplicate them during import or export.",
        "Resolve dependencies topologically, reject cycles, verify bytes against pinned digests, then apply overrides in declared order. Duplicate writes to the same target/path are errors; do not silently choose a winner.",
        "Exports for execution contain a fully resolved snapshot plus dependency provenance. Copy-versus-link is therefore settled at package creation; future library updates do not mutate an already exported scenario."
      ],
      "example": {
        "events": {
          "conditions": [
            {
              "id": "condition-owner-agreed",
              "all": [
                {
                  "targetId": "flag-owner-agreed",
                  "operator": "eq",
                  "value": true
                }
              ]
            }
          ],
          "effects": [
            {
              "id": "effect-owner-agreed",
              "kind": "set-flag",
              "targetId": "flag-owner-agreed",
              "value": true
            },
            {
              "id": "effect-reveal-history",
              "kind": "reveal",
              "targetId": "history-summary"
            }
          ]
        }
      }
    },
    {
      "topic": "outputs",
      "change": "Define a portable package and enforce role-specific information release in generated outputs.",
      "fields": [
        {
          "path": "package.manifest",
          "type": "{ documentPath: string, assetIds: Asset ID[], digest: string }",
          "requirement": "Required",
          "description": "Archive manifest points to scenario.json and its asset manifest. Digest is SHA-256 of the exact UTF-8 scenario.json bytes, not a claim of clinical correctness or semantic content identity."
        },
        {
          "path": "outputs.views[]",
          "type": "object",
          "requirement": "Optional; omitted means unspecified",
          "description": "Explicit content selection filtered by audience. Learner views exclude facilitator-only content even when named in includeIds."
        }
      ],
      "rules": [
        "A portable archive contains scenario.json, manifest.json, and assets/. Reject duplicate entry names and path traversal before extraction. Package mechanics remain distinct from content revision identity.",
        "Digest verification covers exactly the packaged UTF-8 bytes of scenario.json and is a package-integrity check. It must not be reused as semantic content identity.",
        "Static learner briefs include only initial learner-visible content. Run-time views additionally require satisfied disclosure and result availability. Hidden content must not be sent to the learner browser or embedded in its downloadable source.",
        "Actual learner identity, scores, cue delivery records, session dates, and event history stay outside scenario content. Outputs identify scenarioId and revision so the delivered view can be traced."
      ],
      "example": {
        "outputs": {
          "views": [
            {
              "id": "view-learner",
              "audience": "learner",
              "kind": "brief",
              "includeIds": [
                "history-opening"
              ]
            },
            {
              "id": "view-facilitator",
              "audience": "facilitator",
              "kind": "guide",
              "includeIds": [
                "state-clarifying",
                "objective-ownership"
              ]
            }
          ]
        }
      }
    }
  ]
}
