Files

7.9 KiB
Raw Permalink Blame History

VigilCare Scenario Generator Prompt

Use the following prompt with Claude or any LLM to generate clinical scenario JSON files.


Prompt

You are a clinical scenario generator for a hospital patient monitoring system called VigilCare. Generate a JSON file that simulates a patient's clinical journey through a hospital encounter.

JSON Structure

{
  "scenario": {
    "id": "kebab-case-id",
    "name": "Human-readable scenario name",
    "description": "1-2 sentence clinical summary",
    "durationMinutes": 240,
    "tags": ["sepsis", "ed", "deterioration"]
  },
  "patient": {
    "firstName": "Eleanor",
    "lastName": "Chen",
    "dateOfBirth": "1954-03-15",
    "gender": "Female"
  },
  "encounter": {
    "department": "Emergency",
    "encounterType": "Emergency | Inpatient | Outpatient",
    "attendingPhysician": "Dr. Sarah Mitchell",
    "roomBed": "ED-12A",
    "admissionReason": "Fever, confusion, dysuria"
  },
  "events": [
    {
      "offsetMinutes": 0,
      "type": "observation",
      "data": {
        "code": "HEART_RATE",
        "value": 88,
        "unit": "bpm",
        "source": "Device"
      }
    },
    {
      "offsetMinutes": 60,
      "type": "medication",
      "data": {
        "drugName": "ceftriaxone",
        "dose": 1,
        "doseUnit": "g",
        "route": "IV",
        "administeredBy": "nurse-rn-1"
      }
    },
    {
      "offsetMinutes": 45,
      "type": "order",
      "data": {
        "orderType": "Lab",
        "description": "Urinalysis with culture",
        "orderedBy": "Dr. Sarah Mitchell"
      }
    },
    {
      "offsetMinutes": 45,
      "type": "order_result",
      "data": {
        "orderDescription": "SEP-1: Blood cultures",
        "resultSummary": "Pending gram stain"
      }
    }
  ],
  "expectedOutcomes": [
    {
      "afterOffsetMinutes": 30,
      "type": "alert",
      "alertType": "WARNING_HEART_RATE",
      "description": "HR enters warning range"
    },
    {
      "afterOffsetMinutes": 120,
      "type": "alert",
      "alertType": "SEPSIS_WARNING",
      "description": "SIRS criteria met"
    },
    {
      "afterOffsetMinutes": 180,
      "type": "score",
      "scoreType": "NEWS2",
      "expectedMinimum": 7,
      "description": "NEWS2 reaches HIGH risk"
    },
    {
      "afterOffsetMinutes": 120,
      "type": "bundle",
      "description": "Sepsis bundle auto-created with 4 orders"
    }
  ]
}

Available Observation Codes

Code Unit Normal Range Warning Range Critical Range
HEART_RATE bpm 5190 4150 or 91110 ≤40 or ≥111
RESP_RATE /min 1220 911 or 2124 ≤8 or ≥25
SYSTOLIC_BP mmHg 111219 101110 ≤100 or ≥220
DIASTOLIC_BP mmHg 6090 5059 or 91100 ≤49 or ≥101
TEMP_C °C 36.138.0 35.136.0 or 38.139.0 ≤35.0 or ≥39.1
SPO2 % 96100 9495 ≤93
AVPU score 0 (Alert) 1 (Voice) 2 (Pain) 3 (Unresponsive)
SUPPLEMENTAL_O2 flag 0 (No) 1 (Yes)
WBC_K_UL ×10³/µL 4.511.0 <4.0 or >12.0
POTASSIUM_MEQ_L mEq/L 3.55.0 3.03.4 or 5.15.5 <3.0 or >5.5
LACTATE_MMOL_L mmol/L 0.51.5 1.62.0 >2.0
GLUCOSE_MG_DL mg/dL 70140 141180 <70 or >180

Clinical Scoring Rules

NEWS2 (computed from: HEART_RATE, RESP_RATE, SYSTOLIC_BP, TEMP_C, SPO2, AVPU, SUPPLEMENTAL_O2):

  • Total score 56 → NEWS2_WARNING alert
  • Total score ≥7 OR any single parameter scores 3 → NEWS2_EMERGENCY alert

SIRS (≥2 of 4 criteria → SEPSIS_WARNING):

  • Temperature >38.3°C or <36.0°C
  • Heart rate >90 bpm
  • Respiratory rate >20/min
  • WBC >12.0 or <4.0 ×10³/µL

qSOFA (≥2 of 3 criteria → QSOFA_WARNING):

  • Respiratory rate ≥22/min
  • Systolic BP ≤100 mmHg
  • AVPU ≥1 (any altered mentation)

Trend alerts — rapid rise or fall in a vital sign within a 30-minute sliding window triggers RAPID_DETERIORATION.

Sepsis bundle — when SEPSIS_WARNING or QSOFA_WARNING fires, the system auto-creates a sepsis bundle with 4 orders (use these exact descriptions in order_result events; do not add order events for them):

Description
SEP-1: Blood cultures
SEP-1: Serum lactate
SEP-1: Broad-spectrum antibiotics
SEP-1: IV fluid bolus

Place order_result events for bundle orders after the sepsis alert would fire. For any other lab/imaging order, add an order event before order_result.

Order event types

Place order (required before order_result unless sepsis bundle auto-order):

{
  "offsetMinutes": 40,
  "type": "order",
  "data": {
    "orderType": "Lab",
    "description": "Urinalysis with culture",
    "orderedBy": "Dr. Sarah Mitchell"
  }
}

Valid orderType values: Lab, Imaging, Medication, Procedure. orderedBy defaults to encounter.attendingPhysician if omitted.

Rules for Generating Realistic Scenarios

  1. Vital signs arrive in clusters. In real hospitals, nurses take a full set of vitals every 1560 minutes. Each cluster should include at minimum: HEART_RATE, RESP_RATE, SYSTOLIC_BP, TEMP_C, SPO2, AVPU. Add SUPPLEMENTAL_O2 only when oxygen is administered. Add lab values (WBC, LACTATE, POTASSIUM, GLUCOSE) only at specific lab draw times, not every cluster.

  2. Deterioration is gradual. A patient does not jump from HR 80 to HR 130 in one reading. Realistic deterioration progresses over 26 hours: HR 80 → 88 → 95 → 102 → 110 → 118. Each step is 1560 minutes apart.

  3. Vital signs correlate. Sepsis shows rising HR + rising temp + rising RR + falling BP together. Hemorrhagic shock shows rising HR + falling BP + falling SpO2. Respiratory failure shows falling SpO2 + rising RR. Don't change vital signs independently.

  4. Include physiological noise. Real vital signs fluctuate. A stable HR of 75 might read 73, 76, 74, 77 across 4 readings. Add ±25% variation on stable values.

  5. Start with a baseline. The first event cluster (offsetMinutes: 0) should be a complete set of normal or near-normal vitals establishing the patient's baseline.

  6. offsetMinutes must be non-decreasing. Events within the same minute are fine (a full vital sign set arrives at the same offset). Never go backwards.

  7. Max 10 observations per offset. The API accepts at most 10 observations per batch. A full vital set is 7 codes (HR, RR, SBP, TEMP, SpO2, AVPU, plus SUPPLEMENTAL_O2 when on oxygen). If you add lab values at the same minute, keep the total ≤10 — e.g. put labs at offsetMinutes + 1 when vitals + labs would exceed 10.

  8. Use realistic source values. Observation source is "Device" for continuous monitoring (HR, SpO2, BP) or "Manual" for nurse-measured values (temp, AVPU, supplemental O2). Lab draws (WBC, lactate, potassium, glucose) are "Lab".

  9. Medications need clinical justification. Only include medication events that make clinical sense for the scenario. Include the medication type events only if the scenario involves treatment response.

  10. Orders before results. Every order_result must have a matching pending order. Use an order event first for routine labs/imaging. Sepsis bundle orders are auto-created — only use order_result with the exact SEP-1 descriptions above.

  11. Expected outcomes must be achievable. Only list expected outcomes that the given vital sign trajectory will actually trigger based on the scoring rules above. Calculate NEWS2 scores mentally. Count SIRS criteria. Check qSOFA thresholds.

Generate This Scenario

  • 72-year-old with UTI → sepsis over 4 hours
  • Baseline normals → rising temp, HR, RR → SIRS triggers → qSOFA triggers → bundle auto-created
  • Includes order results completing the sepsis bundle
  • Expected: SEPSIS_WARNING, QSOFA_WARNING, NEWS2_EMERGENCY, sepsis bundle COMPLIANT

Output ONLY the JSON file. No explanation or commentary.