Septic shock management

Reading File
Finding Sources
Searching PubMed

"septic shock"[MeSH Terms] AND management

Searching the Web

septic shock management guidelines 2025 SSC Surviving Sepsis Campaign

Reading File
Finding Sources
Reading Web Page

https://www.esicm.org/2026-surviving-sepsis-campaing-guideli…

Finding Sources
Reading File
I now have comprehensive, multi-source data. Let me compose the full response.

Septic Shock Management

2026 Update: The Surviving Sepsis Campaign (SSC) released updated adult guidelines in April 2026 (Crit Care Med 2026;54:725-812), adding 46 new statements covering antibiotic optimisation, blood pressure targets in older adults, fluid removal after resuscitation, and post-discharge rehabilitation.

Definition (Sepsis-3)

Septic shock = sepsis + vasopressor requirement to maintain MAP ≥65 mmHg + serum lactate >2 mmol/L despite adequate fluid resuscitation. Implies circulatory, cellular, and metabolic abnormalities with substantially higher mortality than sepsis alone.

The "1-Hour Bundle" — Immediate Actions

TimeAction
0–60 minMeasure lactate; obtain blood cultures (≥2 sets) before antibiotics; administer broad-spectrum antibiotics; begin 30 mL/kg IV crystalloid bolus; start vasopressors if MAP <65 mmHg despite initial fluid
≤6 hICU admission; re-measure lactate if initial >2 mmol/L; reassess fluid responsiveness

1. Fluid Resuscitation

  • Initial bolus: 30 mL/kg balanced crystalloid (Lactated Ringer's or PlasmaLyte preferred over normal saline) within the first 3 hours
  • Guide subsequent fluid with dynamic assessments (pulse pressure variation, passive leg raise response, stroke volume variation) rather than static CVP
  • Albumin: consider adding when very large volumes of crystalloid are required
  • Avoid hetastarch (HES) — increased risk of AKI and death
  • Serial lactate measurement to guide resuscitation adequacy (target clearance ≥10% per 2 hours)
  • 2026 addition: active fluid removal (conservative fluid strategy/de-resuscitation) after the acute phase to prevent fluid overload — one of the new recommendations

2. Vasopressors

AgentRoleDose
NorepinephrineFirst-line; balanced α/β agonism, increases vascular toneStart 0.01–0.25 µg/kg/min; titrate to MAP ≥65 mmHg
VasopressinAdd when NE reaches 0.25–0.5 µg/kg/min (not dose escalation); steroid-sparing effectFixed rate 0.03–0.04 units/min
EpinephrineThird-line if NE + vasopressin insufficient; also for septic cardiomyopathy0.01–0.3 µg/kg/min
DobutamineAdd for low cardiac output/septic cardiomyopathy despite adequate preload2–20 µg/kg/min
DopamineNot recommended routinely; only highly selected cases (bradycardia + low risk arrhythmia)
Terlipressin, levosimendanNot recommended
Target MAP: ≥65 mmHg (the 2026 guidelines add a conditional recommendation for 60–65 mmHg targets in older adults to reduce vasopressor exposure).

3. Antimicrobials

  • Timing: broad-spectrum IV antibiotics within 1 hour of sepsis/septic shock recognition — every hour of delay worsens mortality
  • Blood cultures (≥2 sets, including from each vascular access site) before antibiotics but do not delay antibiotics >45 min to obtain cultures
  • Empiric coverage: guided by suspected source, local resistance patterns, and host immune status; typically covers gram-positives + gram-negatives; add antifungal only in high-risk patients (prolonged neutropenia, recent surgery, TPN-dependent)
  • Procalcitonin: do not use to start antibiotics; can guide de-escalation and duration
  • De-escalation: reassess daily; narrow spectrum when organism and sensitivities are known; typical duration 7–10 days; consider stopping if no infectious source identified

4. Source Control

  • Identify and control the infection source promptly — imaging (CT, ultrasound) to locate abscess, infected collection, necrotic tissue, or foreign body
  • Drainage, debridement, or removal of infected device performed as soon as medically feasible (generally within 6–12 hours for surgical emergencies)
  • Intravascular access devices that could be the source should be removed after securing alternative access

5. Corticosteroids

  • Hydrocortisone 200 mg/day (50 mg IV q6h or 200 mg continuous infusion) if shock persists despite:
    • Adequate fluid resuscitation AND
    • Vasopressor therapy at moderate–high doses
  • Can add fludrocortisone 50 µg PO daily (Annane protocol)
  • Reduces duration of vasopressor requirement; no definitive mortality benefit but used for refractory shock
  • Taper once vasopressors are weaned; avoid abrupt cessation

6. Organ Support

Respiratory

  • Maintain SpO₂ 90–96%
  • High-flow nasal cannula (HFNC) as first step if adequate neurologic status
  • Mechanical ventilation if needed: tidal volume 6 mL/kg IBW, plateau pressure ≤30 cmH₂O, apply PEEP
  • Prone positioning ≥12 h/day for moderate–severe ARDS (P/F <150)
  • Neuromuscular blockade to facilitate proning (intermittent bolus preferred over continuous infusion)
  • VV-ECMO for refractory ARDS if experienced centre available

Renal

  • Avoid nephrotoxins; maintain renal perfusion
  • RRT for progressive AKI, refractory hyperkalemia, uremia, or volume overload
  • Sodium bicarbonate if AKI + pH <7.2

Hematologic / Transfusion

  • Transfuse RBCs for hemoglobin <7 g/dL (threshold <8 g/dL in CAD or acute hemorrhage)
  • Platelets: transfuse if <10,000/µL (or <20,000 with active bleeding risk)
  • FFP: only for active bleeding with coagulopathy or pre-procedure
  • Cryoprecipitate: fibrinogen <150 mg/dL with bleeding

Metabolic

  • Insulin for glucose ≥180 mg/dL; target 140–180 mg/dL
  • Stress ulcer prophylaxis in high-risk mechanically ventilated patients
  • Early enteral nutrition if shock controlled within 48 h; parenteral if goals not met by day 7

7. Monitoring & Endpoints

ParameterTarget
MAP≥65 mmHg (60–65 mmHg acceptable in elderly per 2026 SSC)
LactateClearance ≥10% per 2 h; normalize to <2 mmol/L
Urine output>0.5 mL/kg/h
ScvO₂≥70%
Hemoglobin7–9 g/dL
Glucose140–180 mg/dL
Capillary refill time≤3 s (2026 SSC added CRT as a resuscitation endpoint)

8. Additional 2026 SSC Updates

  • Capillary refill time (CRT) added as a resuscitation endpoint alongside lactate
  • Antibiotic timing framework: structured decision support for antibiotic timing based on illness severity and likelihood of infection
  • Post-discharge care: explicit recommendations for psychological and physical rehabilitation post-sepsis
  • Blood pressure target of 60–65 mmHg conditionally recommended in selected older adults to reduce vasopressor burden

Organ Dysfunction Complication Summary

(Harrison's 22e, 2025)
SystemFrequencyKey Intervention
Neurologic (encephalopathy)54%Limit neurotoxic agents; treat underlying cause
Cardiovascular (shock)25%Fluids + vasopressors + hydrocortisone
Respiratory (ARDS)7%Lung-protective ventilation; prone
Renal (AKI)67%Avoid nephrotoxins; RRT if needed
Hepatic dysfunction50% of shockAvoid hypotension; enteral feeding
DIC35% of shockCryoprecipitate, FFP, platelets

Sources: Barash's Clinical Anesthesia 9e; Harrison's Principles 22e (2025); Goldman-Cecil Medicine; Rosen's Emergency Medicine; 2026 Surviving Sepsis Campaign Guidelines (Crit Care Med 2026;54:725-812, PMID 41869847).

iPD cardex for septic shock

Asking for Preferences
Reading File
Running Command

ls /home/daytona/skills/docx/scripts/office/ && ls /home/daytona/workspace/ 2>/dev/null || true

Running Command

mkdir -p /home/daytona/workspace/septic-shock-cardex && ls /home/daytona/workspace/septic-shock-cardex

Writing File

~/septic-shock-cardex/build.js

const {
  Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
  AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
  VerticalAlign, PageOrientation, Header, Footer, PageNumber,
  NumberFormat, UnderlineType
} = require('docx');
const fs = require('fs');

// ── Colour palette ──────────────────────────────────────────────────────────
const RED    = "C0392B";
const DKRED  = "922B21";
const BLUE   = "1A5276";
const LBLUE  = "D6EAF8";
const ORANGE = "CA6F1E";
const LORANGE= "FDEBD0";
const GREEN  = "1E8449";
const LGREEN = "D5F5E3";
const PURPLE = "6C3483";
const LPURPLE= "E8DAEF";
const DGREY  = "2C3E50";
const LGREY  = "EBF5FB";
const WHITE  = "FFFFFF";
const YELLOW = "F9E79F";
const LYELLOW= "FFFDE7";

// ── Helper: shaded cell ─────────────────────────────────────────────────────
function shadedCell(text, bgHex, fontHex, bold, fontSize, colSpan, align, vAlign) {
  return new TableCell({
    columnSpan: colSpan || 1,
    verticalAlign: vAlign || VerticalAlign.CENTER,
    shading: { fill: bgHex, type: ShadingType.CLEAR, color: "auto" },
    margins: { top: 60, bottom: 60, left: 100, right: 100 },
    children: [new Paragraph({
      alignment: align || AlignmentType.LEFT,
      children: [new TextRun({
        text: text,
        color: fontHex || "000000",
        bold: bold !== undefined ? bold : false,
        size: fontSize || 18,
        font: "Calibri"
      })]
    })]
  });
}

function headerCell(text, bgHex, colSpan) {
  return shadedCell(text, bgHex, WHITE, true, 19, colSpan, AlignmentType.CENTER);
}

function dataRow(label, value, bgHex) {
  return new TableRow({
    children: [
      shadedCell(label, bgHex || LGREY, DGREY, true, 18),
      shadedCell(value, WHITE, "000000", false, 18, 3)
    ]
  });
}

// ── Section title paragraph ─────────────────────────────────────────────────
function sectionTitle(text, color) {
  return new Paragraph({
    spacing: { before: 200, after: 60 },
    children: [new TextRun({
      text: text,
      bold: true,
      size: 24,
      color: color || BLUE,
      font: "Calibri"
    })]
  });
}

function spacer() {
  return new Paragraph({ spacing: { before: 80, after: 80 }, children: [new TextRun("")] });
}

// ── TITLE BLOCK ─────────────────────────────────────────────────────────────
function titleBlock() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({
        children: [
          headerCell("🏥  iPD CARDEX", RED, 2),
          headerCell("SEPTIC SHOCK", DKRED, 2)
        ]
      }),
      new TableRow({
        children: [
          shadedCell("Ward / Unit:", LGREY, DGREY, true, 18),
          shadedCell("ICU / HDU", WHITE, "000000", false, 18),
          shadedCell("Date:", LGREY, DGREY, true, 18),
          shadedCell("_____________", WHITE, "000000", false, 18)
        ]
      }),
      new TableRow({
        children: [
          shadedCell("Patient Name:", LGREY, DGREY, true, 18),
          shadedCell("___________________________", WHITE, "000000", false, 18),
          shadedCell("MRN:", LGREY, DGREY, true, 18),
          shadedCell("_______________", WHITE, "000000", false, 18)
        ]
      }),
      new TableRow({
        children: [
          shadedCell("Age / Sex / Weight:", LGREY, DGREY, true, 18),
          shadedCell("_____ yrs  /  M  F  /  _____ kg  (IBW: _____ kg)", WHITE, "000000", false, 18),
          shadedCell("Allergies:", LGREY, DGREY, true, 18),
          shadedCell("NKDA  /  _______________", WHITE, "000000", false, 18)
        ]
      }),
      new TableRow({
        children: [
          shadedCell("Admitting Diagnosis:", LGREY, DGREY, true, 18),
          shadedCell("Septic Shock — Source: ________________________", WHITE, "000000", false, 18),
          shadedCell("Consultant:", LGREY, DGREY, true, 18),
          shadedCell("___________________________", WHITE, "000000", false, 18)
        ]
      })
    ]
  });
}

// ── VITAL SIGNS / MONITORING ─────────────────────────────────────────────────
function monitoringTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("📊  MONITORING & TARGETS", BLUE, 4)] }),
      new TableRow({
        children: [
          headerCell("Parameter", DGREY, 1),
          headerCell("Target", DGREY, 1),
          headerCell("Frequency", DGREY, 1),
          headerCell("Current Value", DGREY, 1)
        ]
      }),
      ...[
        ["HR", "60–100 bpm", "Continuous"],
        ["BP (Arterial / NIBP)", "MAP ≥ 65 mmHg  (60–65 in elderly)", "Continuous (arterial line preferred)"],
        ["SpO₂", "90–96%", "Continuous"],
        ["RR", "12–20 /min", "Continuous / q1h"],
        ["Temperature", "Afebrile / normalise", "q4h"],
        ["Urine Output", "≥ 0.5 mL/kg/h", "Hourly"],
        ["Serum Lactate", "< 2 mmol/L  (clearance ≥10% q2h)", "q2h until normal"],
        ["Capillary Refill Time (CRT)", "≤ 3 seconds", "q2h"],
        ["CVP (if line in situ)", "8–12 mmHg (MV: 12–15)", "q4h"],
        ["ScvO₂", "≥ 70%", "q4–8h"],
        ["GCS / Neuro status", "Document baseline", "q1h"],
        ["Blood Glucose", "140–180 mg/dL", "q1–2h (if on insulin)"],
        ["Fluid Balance (I/O)", "Avoid positive balance post-resus", "Hourly / cumulative"],
        ["Daily Weight", "Trend / fluid overload", "Daily"],
      ].map(([p, t, f]) => new TableRow({
        children: [
          shadedCell(p, LGREY, DGREY, true, 17),
          shadedCell(t, LGREEN, GREEN, true, 17),
          shadedCell(f, WHITE, "000000", false, 17),
          shadedCell("", WHITE, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── INVESTIGATIONS ──────────────────────────────────────────────────────────
function investigationsTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🔬  INVESTIGATIONS", BLUE, 4)] }),
      new TableRow({
        children: [
          headerCell("Investigation", DGREY, 1),
          headerCell("Frequency", DGREY, 1),
          headerCell("Purpose", DGREY, 1),
          headerCell("Result", DGREY, 1)
        ]
      }),
      ...[
        ["Blood cultures (×2 sets)", "On admission (before ABx)", "Identify organism & sensitivities"],
        ["CBC with differential", "Admission → Daily", "WBC, platelets (DIC screen)"],
        ["CMP / Electrolytes", "Admission → q8–12h", "K⁺, Na⁺, Creatinine, BUN"],
        ["Serum Lactate", "On admission → q2h", "Resuscitation endpoint"],
        ["ABG / VBG", "Admission → q4–8h", "pH, PaO₂, PaCO₂, HCO₃⁻"],
        ["Coagulation (PT, INR, aPTT)", "Admission → Daily", "DIC monitoring"],
        ["Fibrinogen", "Admission → Daily if DIC", "DIC — transfuse if <150 mg/dL"],
        ["D-dimer", "Admission", "DIC screening"],
        ["LFTs + Bilirubin", "Admission → Daily", "Hepatic dysfunction"],
        ["Procalcitonin (PCT)", "Admission → q48–72h", "Guide antibiotic de-escalation"],
        ["CRP", "Admission → Daily", "Inflammatory marker, trend"],
        ["Procalcitonin", "Admission", "Baseline; guide de-escalation"],
        ["Urinalysis + Urine C&S", "Admission", "Source identification"],
        ["Chest X-ray", "Admission → Daily if MV", "ARDS / effusion / infiltrates"],
        ["ECG", "Admission", "Rule out cardiac cause"],
        ["Echo (Bedside/POCUS)", "As needed", "Cardiac function, effusion, volume"],
        ["CT Chest/Abdomen/Pelvis", "If source unknown", "Identify occult source"],
      ].map(([i, f, p]) => new TableRow({
        children: [
          shadedCell(i, LGREY, DGREY, true, 17),
          shadedCell(f, WHITE, "000000", false, 17),
          shadedCell(p, WHITE, "000000", false, 17),
          shadedCell("", WHITE, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── FLUID RESUSCITATION ─────────────────────────────────────────────────────
function fluidTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("💧  FLUID RESUSCITATION", BLUE, 4)] }),
      new TableRow({
        children: [
          headerCell("Phase", DGREY, 1),
          headerCell("Fluid / Volume", DGREY, 1),
          headerCell("Rate / Condition", DGREY, 1),
          headerCell("Notes", DGREY, 1)
        ]
      }),
      ...[
        ["Initial Bolus (0–3h)", "Balanced crystalloid\n(Lactated Ringer's / PlasmaLyte)", "30 mL/kg over 1–3 h", "Avoid normal saline (hyperchloraemic acidosis); avoid HES (↑AKI)"],
        ["Further fluid challenges", "Balanced crystalloid 250–500 mL", "Only if fluid-responsive\n(PLR, PPV, SVV)", "Use dynamic assessments; CVP alone is unreliable"],
        ["Colloid adjunct", "20% Albumin 100 mL", "If large volumes required (>3 L crystalloid)", "Consider in refractory hypotension"],
        ["De-resuscitation phase", "Fluid removal / conservative strategy", "After haemodynamic stabilisation", "2026 SSC: active fluid removal recommended post-resus to prevent overload"],
        ["AVOID", "HES / Gelatin / Dextran", "—", "Associated with AKI and increased mortality"],
      ].map(([ph, fl, r, n]) => new TableRow({
        children: [
          shadedCell(ph, LBLUE, BLUE, true, 17),
          shadedCell(fl, WHITE, "000000", false, 17),
          shadedCell(r, WHITE, "000000", false, 17),
          shadedCell(n, LYELLOW, ORANGE, false, 17)
        ]
      }))
    ]
  });
}

// ── VASOPRESSORS / INOTROPES ────────────────────────────────────────────────
function vasopressorTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("💉  VASOPRESSORS & INOTROPES", RED, 4)] }),
      new TableRow({
        children: [
          headerCell("Agent", DKRED, 1),
          headerCell("Dose", DKRED, 1),
          headerCell("Line / Route", DKRED, 1),
          headerCell("Notes", DKRED, 1)
        ]
      }),
      ...[
        ["Norepinephrine\n(1st LINE)", "0.01–0.25 µg/kg/min\nStart 0.05 µg/kg/min, titrate", "Central line preferred\n(peripheral short-term if needed)", "Target MAP ≥65 mmHg; preferred over dopamine"],
        ["Vasopressin\n(2nd LINE — ADD ON)", "Fixed 0.03–0.04 units/min", "Central line", "Add when NE ≥0.25–0.5 µg/kg/min; do NOT use alone; steroid-sparing"],
        ["Epinephrine\n(3rd LINE)", "0.01–0.3 µg/kg/min", "Central line", "Add if NE + vasopressin insufficient; also for septic cardiomyopathy"],
        ["Dobutamine\n(for low CO)", "2–20 µg/kg/min", "Central or peripheral", "Add for low cardiac output; use with vasopressor; monitor for tachycardia"],
        ["Dopamine\n(AVOID routinely)", "Not recommended", "—", "Only in highly selected cases (bradycardia + low arrhythmia risk)"],
        ["Terlipressin / Levosimendan", "NOT RECOMMENDED", "—", "SSC 2021/2026: insufficient evidence"],
      ].map(([a, d, r, n]) => new TableRow({
        children: [
          shadedCell(a, LORANGE, ORANGE, true, 17),
          shadedCell(d, WHITE, "000000", false, 17),
          shadedCell(r, WHITE, "000000", false, 17),
          shadedCell(n, LYELLOW, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── ANTIBIOTICS ─────────────────────────────────────────────────────────────
function antibioticTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("💊  ANTIMICROBIALS", GREEN, 4)] }),
      new TableRow({
        children: [
          headerCell("Item", "1E8449", 1),
          headerCell("Details", "1E8449", 3)
        ]
      }),
      ...[
        ["Timing", "⚡ Administer within 1 HOUR of recognition — every hour of delay worsens mortality"],
        ["Blood Cultures", "Obtain ≥2 sets (peripheral + central) BEFORE antibiotics — do NOT delay >45 min for cultures"],
        ["Empiric Regimen\n(Community-onset)", "Piperacillin-Tazobactam 4.5 g IV q8h + Vancomycin 25–30 mg/kg loading dose\nOR Meropenem 1 g IV q8h if high ESBL/KPC risk"],
        ["Empiric Regimen\n(Hospital/ICU-onset)", "Meropenem 1–2 g IV q8h + Vancomycin 25–30 mg/kg loading\nConsider antifungal (Micafungin 100 mg IV daily) if high fungal risk"],
        ["Specific Source Adjustment", "Urinary: ceftriaxone ± gentamicin\nPulmonary: add azithromycin/levofloxacin\nIntra-abdominal: pip-tazo or meropenem\nSkin/soft tissue: add clindamycin"],
        ["De-escalation", "Daily review of cultures & sensitivities; narrow spectrum as soon as possible"],
        ["Duration", "7–10 days; shorter if good source control; longer for bacteraemia/endocarditis"],
        ["Procalcitonin-guided stop", "Use PCT trend to guide stopping — avoid using to START antibiotics"],
        ["Antifungals", "Only if HIGH risk (prolonged neutropenia, Candida colonisation, TPN, abdominal source)"],
      ].map(([item, details]) => new TableRow({
        children: [
          shadedCell(item, LGREEN, GREEN, true, 17),
          shadedCell(details, WHITE, "000000", false, 17, 3)
        ]
      }))
    ]
  });
}

// ── CORTICOSTEROIDS ─────────────────────────────────────────────────────────
function steroidTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🧪  CORTICOSTEROIDS", PURPLE, 4)] }),
      new TableRow({
        children: [
          headerCell("Drug", "6C3483", 1),
          headerCell("Dose & Route", "6C3483", 1),
          headerCell("Indication / Condition", "6C3483", 1),
          headerCell("Notes", "6C3483", 1)
        ]
      }),
      ...[
        ["Hydrocortisone", "200 mg/day IV\n(50 mg q6h OR 200 mg infusion over 24h)", "Refractory septic shock: persisting vasopressor requirement despite adequate fluids", "Start when NE dose ≥0.25 µg/kg/min; reduces vasopressor duration; no proven mortality benefit"],
        ["Fludrocortisone\n(optional)", "50 µg PO/NG once daily", "Add-on to hydrocortisone (Annane protocol)", "Mineralocorticoid supplementation; continue for same duration as hydrocortisone"],
        ["Tapering", "Taper once vasopressors weaned", "Do NOT stop abruptly", "Gradual taper over 48–72h post-vasopressor discontinuation"],
      ].map(([d, dose, ind, n]) => new TableRow({
        children: [
          shadedCell(d, LPURPLE, PURPLE, true, 17),
          shadedCell(dose, WHITE, "000000", false, 17),
          shadedCell(ind, WHITE, "000000", false, 17),
          shadedCell(n, LYELLOW, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── RESPIRATORY SUPPORT ─────────────────────────────────────────────────────
function respiratoryTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🫁  RESPIRATORY SUPPORT", BLUE, 4)] }),
      new TableRow({
        children: [
          headerCell("Mode", DGREY, 1),
          headerCell("Setting / Target", DGREY, 1),
          headerCell("Indication", DGREY, 1),
          headerCell("Notes", DGREY, 1)
        ]
      }),
      ...[
        ["Supplemental O₂", "SpO₂ 90–96% (avoid hyperoxia)", "All septic shock patients", "Nasal cannula 2–6 L/min or simple face mask"],
        ["HFNC (High-Flow Nasal Cannula)", "FiO₂ titrated, flow 40–60 L/min", "Mild-moderate hypoxia with adequate neurology", "First-line for non-intubated patients; delay intubation if tolerating"],
        ["Non-invasive ventilation (NIV)", "CPAP / BiPAP", "Cardiogenic pulmonary oedema / selected ARDS", "Avoid if haemodynamically unstable or altered consciousness"],
        ["Invasive MV (Intubation)", "Tidal volume: 6 mL/kg IBW\nPlateau pressure ≤30 cmH₂O\nDrive pressure ≤15 cmH₂O\nPEEP: titrate per ARDSnet table", "ARDS (P/F <300), refractory hypoxia, respiratory failure, airway protection", "Lung-protective ventilation mandatory; avoid volume-limited barotrauma"],
        ["Prone positioning", "≥12 hours/day", "Moderate-severe ARDS (P/F <150)", "NMB recommended to facilitate; coordinate team turns"],
        ["VV-ECMO", "Refer to ECMO centre", "Refractory ARDS (P/F <80 on optimal MV)", "Only if experienced team available; SSC 2021 suggestion"],
      ].map(([m, s, ind, n]) => new TableRow({
        children: [
          shadedCell(m, LBLUE, BLUE, true, 17),
          shadedCell(s, WHITE, "000000", false, 17),
          shadedCell(ind, WHITE, "000000", false, 17),
          shadedCell(n, LYELLOW, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── ORGAN SUPPORT / SUPPORTIVE CARE ─────────────────────────────────────────
function organSupportTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🏥  ORGAN SUPPORT & SUPPORTIVE CARE", DGREY, 4)] }),
      new TableRow({
        children: [
          headerCell("System", DGREY, 1),
          headerCell("Intervention", DGREY, 2),
          headerCell("Target / Notes", DGREY, 1)
        ]
      }),
      ...[
        ["RENAL", "• Avoid nephrotoxins (NSAIDs, contrast, aminoglycosides)\n• Renal Replacement Therapy (CVVH/CVVHDF) if indicated", "Indications: progressive AKI, K⁺ >6, pH <7.1, urea >35, fluid overload\nNa-bicarb if AKI + pH <7.2"],
        ["HAEMATOLOGY\n(Transfusion)", "• RBC transfusion\n• FFP\n• Platelets\n• Cryoprecipitate", "Hb <7 g/dL (or <8 if CAD/acute haem)\nActive bleeding + coagulopathy\nPlt <10,000/µL; or <20,000 + bleeding\nFibrinogen <150 mg/dL + bleeding"],
        ["GLYCAEMIC\nCONTROL", "• Start insulin infusion when BGL ≥180 mg/dL\n• Avoid hypoglycaemia", "Target: 140–180 mg/dL\nCheck BGL q1–2h on insulin"],
        ["NUTRITION", "• Early enteral feeding (within 48h if shock controlled)\n• Parenteral if enteral not tolerated by day 7", "Avoid overfeeding; caloric target: 20–25 kcal/kg/day\nNasogastric tube if not eating"],
        ["STRESS ULCER\nPROPHYLAXIS", "• Pantoprazole 40 mg IV/PO once daily", "High-risk: MV ≥48h, coagulopathy, prior GI bleed\nDiscontinue when enteral feeding established"],
        ["DVT\nPROPHYLAXIS", "• Enoxaparin 40 mg SC daily (if no contraindication)\n• Compression stockings / IPC device", "Hold if Plt <50,000 or active bleeding\nUse mechanical prophylaxis if anticoagulation contraindicated"],
        ["SEDATION /\nANALGESIA", "• Analgesia-first (fentanyl/morphine)\n• Light sedation (RASS 0 to -1)\n• Daily sedation interruption", "SAT + SBT protocol daily\nAvoid heavy sedation; reduces ventilator days"],
        ["BOWEL CARE", "• Stool chart; lactulose if constipated", "Prevent ileus; facilitate early enteral nutrition"],
        ["ORAL CARE", "• Chlorhexidine oral rinse q6–8h if MV", "Prevent VAP"],
        ["ELEVATED HOB", "• Head of bed 30–45°", "Prevents aspiration and VAP"],
        ["GOALS OF CARE", "• Discuss prognosis and goals with patient/family\n• Integrate palliative care principles as appropriate", "ICU admission within 6h of diagnosis\nDocument code status"],
      ].map(([sys, int, t]) => new TableRow({
        children: [
          shadedCell(sys, LGREY, DGREY, true, 17),
          shadedCell(int, WHITE, "000000", false, 17, 2),
          shadedCell(t, LYELLOW, ORANGE, false, 16)
        ]
      }))
    ]
  });
}

// ── SOURCE CONTROL ──────────────────────────────────────────────────────────
function sourceControlTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🎯  SOURCE CONTROL", DKRED, 4)] }),
      new TableRow({
        children: [
          headerCell("Action", DKRED, 1),
          headerCell("Timing", DKRED, 1),
          headerCell("Examples", DKRED, 2)
        ]
      }),
      ...[
        ["Identify source", "Immediate", "Clinical exam + imaging (CT, USS, X-ray) to find abscess, necrosis, obstruction"],
        ["Drain / decompress", "Within 6–12h of identification", "Percutaneous or surgical drainage of abscess; biliary decompression; empyema drainage"],
        ["Debride / resect", "As soon as surgically feasible", "Necrotising fasciitis: emergency OR; infarcted bowel: resection; infected prosthesis"],
        ["Remove IV devices", "Immediately if source suspected", "Remove CVC/peripheral line suspected as source; replace at new site"],
        ["Urology source", "Urgent urology review", "Urinary obstruction → nephrostomy or catheter; pyelonephritis with obstruction"],
        ["Gynaecological source", "Urgent gynaecology review", "Septic abortion, tubo-ovarian abscess, postpartum endometritis"],
      ].map(([a, t, e]) => new TableRow({
        children: [
          shadedCell(a, LORANGE, ORANGE, true, 17),
          shadedCell(t, WHITE, ORANGE, true, 17),
          shadedCell(e, WHITE, "000000", false, 17, 2)
        ]
      }))
    ]
  });
}

// ── ESCALATION / RED FLAGS ───────────────────────────────────────────────────
function escalationTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("🚨  ESCALATION TRIGGERS & RED FLAGS", RED, 4)] }),
      new TableRow({
        children: [
          headerCell("Parameter", DKRED, 1),
          headerCell("Threshold", DKRED, 1),
          headerCell("Action", DKRED, 2)
        ]
      }),
      ...[
        ["MAP", "< 55 mmHg despite vasopressors", "Escalate vasopressor; consider adding hydrocortisone; call senior"],
        ["Lactate", "Rising lactate or not clearing by 10%/2h", "Re-assess fluid status, vasopressors, cardiac output; consider POCUS/Echo"],
        ["Urine Output", "< 0.3 mL/kg/h for >2h", "IV fluid challenge; check foley patency; consider RRT referral"],
        ["SpO₂", "< 88% despite HFNC", "Consider NIV; escalate to intubation"],
        ["GCS", "Falling GCS (drop ≥2 points)", "Airway assessment; CT head; consider intubation"],
        ["HR", "> 150 or < 40 bpm", "12-lead ECG; treat arrhythmia; call cardiologist"],
        ["Temperature", "> 40°C or < 35°C", "Culture again; review antibiotics; cooling/warming measures"],
        ["Glucose", "< 70 mg/dL", "STOP insulin; 50 mL of 50% dextrose IV; recheck in 15 min"],
        ["Vasopressor requirement", "NE > 0.5 µg/kg/min", "Add vasopressin; consider hydrocortisone; senior review"],
        ["New organ dysfunction", "Any new organ involvement", "Review antibiotics; POCUS; source control review; ICU consult"],
      ].map(([p, t, a]) => new TableRow({
        children: [
          shadedCell(p, "FADBD2", DKRED, true, 17),
          shadedCell(t, WHITE, RED, true, 17),
          shadedCell(a, WHITE, "000000", false, 17, 2)
        ]
      }))
    ]
  });
}

// ── NURSING CARE ─────────────────────────────────────────────────────────────
function nursingTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("👩‍⚕️  NURSING CARE PLAN", BLUE, 2)] }),
      new TableRow({
        children: [
          headerCell("Problem / Need", DGREY, 1),
          headerCell("Nursing Interventions", DGREY, 1)
        ]
      }),
      ...[
        ["Haemodynamic instability", "• Continuous ECG, SpO₂, arterial BP monitoring\n• Hourly urine output via IDC\n• Record ALL fluid input and output\n• Report MAP <65 or UO <0.5 mL/kg/h immediately"],
        ["Risk of infection / sepsis progression", "• Strict aseptic technique for all procedures\n• Document IV line insertion date/site; change as per protocol\n• Observe catheter/wound/line sites for signs of infection"],
        ["Impaired tissue perfusion", "• Assess peripheries q2h (CRT, skin colour, temperature)\n• Reposition q2h; pressure area care\n• TED stockings / IPC device"],
        ["Risk of respiratory failure", "• Monitor RR, SpO₂, work of breathing q1h\n• Maintain HOB 30–45°\n• Suction as required; oral chlorhexidine q6h if intubated"],
        ["Altered level of consciousness", "• GCS/AVPU assessment q1h\n• Minimise sedation; agitation-sedation-delirium (CAM-ICU) screening\n• Reorientation; day/night cues; family presence"],
        ["Nutritional deficit", "• Insert NGT if not eating; commence EN per dietitian order\n• Monitor for gastric residuals\n• Blood glucose q1–2h if on insulin"],
        ["Communication / family support", "• Regular updates to family\n• Facilitate goals of care discussion with medical team\n• Chaplaincy/social work referral as needed"],
      ].map(([p, i]) => new TableRow({
        children: [
          shadedCell(p, LGREY, DGREY, true, 17),
          shadedCell(i, WHITE, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── MEDICATION CHART ─────────────────────────────────────────────────────────
function medicationTable() {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    rows: [
      new TableRow({ children: [headerCell("💊  REGULAR MEDICATIONS (Sample — Adjust per local guidelines)", GREEN, 6)] }),
      new TableRow({
        children: [
          headerCell("Drug", "1E8449", 1),
          headerCell("Dose", "1E8449", 1),
          headerCell("Route", "1E8449", 1),
          headerCell("Frequency", "1E8449", 1),
          headerCell("Indication", "1E8449", 1),
          headerCell("✓ Given", "1E8449", 1)
        ]
      }),
      ...[
        ["Norepinephrine", "Start 0.05 µg/kg/min — titrate to MAP ≥65", "IV infusion (CVC)", "Continuous", "Vasopressor", ""],
        ["Piperacillin-Tazobactam", "4.5 g", "IV (over 30 min)", "q8h × 7 days", "Empiric antibiotic", ""],
        ["Vancomycin", "25–30 mg/kg loading; AUC-guided", "IV (over 90–120 min)", "q8–12h (PK-guided)", "MRSA/Gram+ coverage", ""],
        ["Hydrocortisone", "50 mg", "IV bolus", "q6h (or 200 mg/24h infusion)", "Refractory shock", ""],
        ["Pantoprazole", "40 mg", "IV/PO", "Once daily", "Stress ulcer prophylaxis", ""],
        ["Enoxaparin", "40 mg", "SC", "Once daily", "DVT prophylaxis", ""],
        ["Insulin (actrapid)", "Per sliding scale / infusion", "IV infusion", "Continuous (if BGL ≥180)", "Glycaemic control", ""],
        ["Paracetamol", "1 g (if weight ≥50 kg)", "IV/PO/NG", "q6h (max 4 g/day)", "Antipyretic / analgesia", ""],
        ["Morphine / Fentanyl", "As prescribed", "IV PRN / infusion", "PRN or continuous", "Analgesia-first sedation", ""],
        ["Midazolam / Propofol", "Per sedation protocol", "IV infusion", "Continuous (if MV)", "Sedation (RASS target 0 to -1)", ""],
      ].map(([d, dose, r, f, ind, g]) => new TableRow({
        children: [
          shadedCell(d, LGREEN, GREEN, true, 17),
          shadedCell(dose, WHITE, "000000", false, 17),
          shadedCell(r, WHITE, "000000", false, 17),
          shadedCell(f, WHITE, "000000", false, 17),
          shadedCell(ind, WHITE, "000000", false, 17),
          shadedCell(g, WHITE, "000000", false, 17)
        ]
      }))
    ]
  });
}

// ── FOOTER ────────────────────────────────────────────────────────────────────
function footerPara() {
  return new Paragraph({
    alignment: AlignmentType.CENTER,
    spacing: { before: 120 },
    children: [
      new TextRun({
        text: "Based on SSC 2026 Guidelines (Crit Care Med 2026;54:725-812) | Harrison's 22e (2025) | Rosen's EM | Goldman-Cecil Medicine  |  For clinical use under supervising clinician — individualise to patient",
        size: 14,
        color: "888888",
        italics: true,
        font: "Calibri"
      })
    ]
  });
}

// ── ASSEMBLE DOCUMENT ────────────────────────────────────────────────────────
const doc = new Document({
  styles: {
    default: {
      document: {
        run: { font: "Calibri", size: 18 }
      }
    }
  },
  sections: [{
    properties: {
      page: {
        size: { orientation: PageOrientation.PORTRAIT },
        margin: { top: 600, bottom: 600, left: 700, right: 700 }
      }
    },
    children: [
      // Main title
      new Paragraph({
        alignment: AlignmentType.CENTER,
        spacing: { before: 0, after: 160 },
        children: [
          new TextRun({ text: "INTENSIVE CARE PATIENT CARDEX", bold: true, size: 36, color: DKRED, font: "Calibri" }),
          new TextRun({ text: "  |  SEPTIC SHOCK", bold: true, size: 36, color: BLUE, font: "Calibri" })
        ]
      }),

      // Patient block
      titleBlock(),
      spacer(),

      // 1. Monitoring
      sectionTitle("1.  MONITORING & TARGETS", BLUE),
      monitoringTable(),
      spacer(),

      // 2. Investigations
      sectionTitle("2.  INVESTIGATIONS", BLUE),
      investigationsTable(),
      spacer(),

      // 3. Fluid resuscitation
      sectionTitle("3.  FLUID RESUSCITATION", BLUE),
      fluidTable(),
      spacer(),

      // 4. Vasopressors
      sectionTitle("4.  VASOPRESSORS & INOTROPES", RED),
      vasopressorTable(),
      spacer(),

      // 5. Antimicrobials
      sectionTitle("5.  ANTIMICROBIALS", GREEN),
      antibioticTable(),
      spacer(),

      // 6. Source control
      sectionTitle("6.  SOURCE CONTROL", DKRED),
      sourceControlTable(),
      spacer(),

      // 7. Corticosteroids
      sectionTitle("7.  CORTICOSTEROIDS", PURPLE),
      steroidTable(),
      spacer(),

      // 8. Respiratory
      sectionTitle("8.  RESPIRATORY SUPPORT", BLUE),
      respiratoryTable(),
      spacer(),

      // 9. Organ support
      sectionTitle("9.  ORGAN SUPPORT & SUPPORTIVE CARE", DGREY),
      organSupportTable(),
      spacer(),

      // 10. Medications
      sectionTitle("10.  MEDICATION CHART (Sample)", GREEN),
      medicationTable(),
      spacer(),

      // 11. Nursing
      sectionTitle("11.  NURSING CARE PLAN", BLUE),
      nursingTable(),
      spacer(),

      // 12. Escalation
      sectionTitle("12.  ESCALATION TRIGGERS & RED FLAGS", RED),
      escalationTable(),
      spacer(),

      footerPara()
    ]
  }]
});

Packer.toBuffer(doc).then(buffer => {
  fs.writeFileSync("/home/daytona/workspace/septic-shock-cardex/Septic_Shock_iPD_Cardex.docx", buffer);
  console.log("✅ Created: Septic_Shock_iPD_Cardex.docx");
}).catch(err => {
  console.error("❌ Error:", err);
  process.exit(1);
});
Running Command

cd /home/daytona/workspace/septic-shock-cardex && node build.js

Running Command

python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/septic-shock-cardex/Septic_Shock_iPD_Cardex.docx

Running Command

python3 -c " import zipfile, os path = '/home/daytona/workspace/septic-shock-cardex/Septic_Shock_iPD_Cardex.docx' size = os.path.getsize(path) print(f'File size: {size} bytes ({size/1024:.1f} KB)') with zipfile.ZipFile(path) as z: names = z.namelist() print('Contents:', names[:8]) # Check word/document.xml is valid XML import xml.etree.ElementTree as ET xml = z.read('word/document.xml') ET.fromstring(xml) print('XML valid: word/document.xml OK') "

File is valid (20.4 KB, clean XML). Here's your download:

Septic Shock iPD Cardex

Word Document · DOCX


What's inside the cardex (12 colour-coded sections):

#SectionContents
1Patient HeaderName, MRN, age/sex/weight, allergies, source, consultant
2Monitoring & Targets14 parameters with numeric targets and frequency
3Investigations17 tests — timing, purpose, result column
4Fluid ResuscitationInitial bolus → dynamic challenges → de-resuscitation (2026 SSC)
5Vasopressors & InotropesNE → vasopressin → epi → dobutamine with doses and lines
6Antimicrobials1-hour rule, cultures, empiric regimens (community vs. HAP), de-escalation
7Source ControlTiming, drainage, debridement, device removal by source type
8CorticosteroidsHydrocortisone 200 mg/day + fludrocortisone, taper protocol
9Respiratory SupportSpO₂ targets, HFNC, lung-protective MV settings, proning, ECMO
10Organ SupportRenal, transfusion thresholds, glucose, nutrition, SUP, DVT, sedation
11Medication Chart10 common drugs with dose/route/frequency/indication + signature box
12Nursing Care Plan7 care problems with interventions
13Escalation / Red Flags10 thresholds with immediate actions
Based on SSC 2026 Guidelines (Crit Care Med 2026;54:725-812) + Harrison's 22e + Rosen's EM.
This is a shared conversation. Sign in to Orris to start your own chat.