# 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 ```json { "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 | 51–90 | 41–50 or 91–110 | ≤40 or ≥111 | | RESP_RATE | /min | 12–20 | 9–11 or 21–24 | ≤8 or ≥25 | | SYSTOLIC_BP | mmHg | 111–219 | 101–110 | ≤100 or ≥220 | | DIASTOLIC_BP | mmHg | 60–90 | 50–59 or 91–100 | ≤49 or ≥101 | | TEMP_C | °C | 36.1–38.0 | 35.1–36.0 or 38.1–39.0 | ≤35.0 or ≥39.1 | | SPO2 | % | 96–100 | 94–95 | ≤93 | | AVPU | score | 0 (Alert) | — | 1 (Voice) 2 (Pain) 3 (Unresponsive) | | SUPPLEMENTAL_O2 | flag | 0 (No) | — | 1 (Yes) | | WBC_K_UL | ×10³/µL | 4.5–11.0 | — | <4.0 or >12.0 | | POTASSIUM_MEQ_L | mEq/L | 3.5–5.0 | 3.0–3.4 or 5.1–5.5 | <3.0 or >5.5 | | LACTATE_MMOL_L | mmol/L | 0.5–1.5 | 1.6–2.0 | >2.0 | | GLUCOSE_MG_DL | mg/dL | 70–140 | 141–180 | <70 or >180 | ### Clinical Scoring Rules **NEWS2** (computed from: HEART_RATE, RESP_RATE, SYSTOLIC_BP, TEMP_C, SPO2, AVPU, SUPPLEMENTAL_O2): - Total score 5–6 → `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): ```json { "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 15–60 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 2–6 hours: HR 80 → 88 → 95 → 102 → 110 → 118. Each step is 15–60 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 ±2–5% 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.