Septic shock management
"septic shock"[MeSH Terms] AND management
septic shock management guidelines 2025 SSC Surviving Sepsis Campaign
https://www.esicm.org/2026-surviving-sepsis-campaing-guideli…
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.
| Time | Action |
|---|---|
| 0–60 min | Measure 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 h | ICU admission; re-measure lactate if initial >2 mmol/L; reassess fluid responsiveness |
| Agent | Role | Dose |
|---|---|---|
| Norepinephrine | First-line; balanced α/β agonism, increases vascular tone | Start 0.01–0.25 µg/kg/min; titrate to MAP ≥65 mmHg |
| Vasopressin | Add when NE reaches 0.25–0.5 µg/kg/min (not dose escalation); steroid-sparing effect | Fixed rate 0.03–0.04 units/min |
| Epinephrine | Third-line if NE + vasopressin insufficient; also for septic cardiomyopathy | 0.01–0.3 µg/kg/min |
| Dobutamine | Add for low cardiac output/septic cardiomyopathy despite adequate preload | 2–20 µg/kg/min |
| Dopamine | Not recommended routinely; only highly selected cases (bradycardia + low risk arrhythmia) | — |
| Terlipressin, levosimendan | Not recommended | — |
| Parameter | Target |
|---|---|
| MAP | ≥65 mmHg (60–65 mmHg acceptable in elderly per 2026 SSC) |
| Lactate | Clearance ≥10% per 2 h; normalize to <2 mmol/L |
| Urine output | >0.5 mL/kg/h |
| ScvO₂ | ≥70% |
| Hemoglobin | 7–9 g/dL |
| Glucose | 140–180 mg/dL |
| Capillary refill time | ≤3 s (2026 SSC added CRT as a resuscitation endpoint) |
| System | Frequency | Key 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 dysfunction | 50% of shock | Avoid hypotension; enteral feeding |
| DIC | 35% of shock | Cryoprecipitate, FFP, platelets |
iPD cardex for septic shock
ls /home/daytona/skills/docx/scripts/office/ && ls /home/daytona/workspace/ 2>/dev/null || true
mkdir -p /home/daytona/workspace/septic-shock-cardex && ls /home/daytona/workspace/septic-shock-cardex
~/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);
});
cd /home/daytona/workspace/septic-shock-cardex && node build.js
python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/septic-shock-cardex/Septic_Shock_iPD_Cardex.docx
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') "
Septic Shock iPD Cardex
Word Document · DOCX
| # | Section | Contents |
|---|---|---|
| 1 | Patient Header | Name, MRN, age/sex/weight, allergies, source, consultant |
| 2 | Monitoring & Targets | 14 parameters with numeric targets and frequency |
| 3 | Investigations | 17 tests — timing, purpose, result column |
| 4 | Fluid Resuscitation | Initial bolus → dynamic challenges → de-resuscitation (2026 SSC) |
| 5 | Vasopressors & Inotropes | NE → vasopressin → epi → dobutamine with doses and lines |
| 6 | Antimicrobials | 1-hour rule, cultures, empiric regimens (community vs. HAP), de-escalation |
| 7 | Source Control | Timing, drainage, debridement, device removal by source type |
| 8 | Corticosteroids | Hydrocortisone 200 mg/day + fludrocortisone, taper protocol |
| 9 | Respiratory Support | SpO₂ targets, HFNC, lung-protective MV settings, proning, ECMO |
| 10 | Organ Support | Renal, transfusion thresholds, glucose, nutrition, SUP, DVT, sedation |
| 11 | Medication Chart | 10 common drugs with dose/route/frequency/indication + signature box |
| 12 | Nursing Care Plan | 7 care problems with interventions |
| 13 | Escalation / Red Flags | 10 thresholds with immediate actions |