Sepsis recent guidelines
"sepsis" AND "guidelines"
Surviving Sepsis Campaign guidelines 2024 2025 updates
PMID: 41869844
https://link.springer.com/article/10.1007/s00134-026-08361-1
https://www.ebmedicine.net/media_library/files/Sepsis-Emerge…
| Situation | Recommendation |
|---|---|
| Hypotension or lactate ≥4 mmol/L | 30 mL/kg IV crystalloid bolus (balanced crystalloids preferred over normal saline) |
| After initial bolus | Further fluid guided by dynamic measures (pulse pressure variation, stroke volume variation, passive leg raise) |
| After acute resuscitation phase | Active fluid removal (diuretics; ultrafiltration if refractory) - NEW 2026 recommendation |
| Therapy | Current Recommendation |
|---|---|
| Vitamin C | Not recommended - does not improve mortality |
| Sodium bicarbonate | Not for lactic acidosis alone; beneficial if pH <7.2 + AKI stage 2-3 |
| Routine antifungals | Not in undifferentiated sepsis without risk factors |
| Tight glucose control | Not recommended (<140 mg/dL targets abandoned) |
| Area | 2021 SSC | 2026 SSC Update |
|---|---|---|
| Vasopressors timing | Fluid-first approach | Concurrent vasopressors allowed in unstable shock |
| Fluid removal | Not addressed | Active de-resuscitation recommended |
| Glucose target | ≤180 mg/dL | 144-180 mg/dL range emphasized |
| Inotropes | Dobutamine preferred | Dobutamine or epinephrine alone (equivalent) |
Create a clinical decision flowchart for sepsis diagnosis and initial management
mkdir -p /tmp/workspace/sepsis-flowchart && ls /tmp/workspace/sepsis-flowchart/
~/sepsis-flowchart/generate_flowchart.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyBboxPatch, FancyArrowPatch
import matplotlib.patheffects as pe
import numpy as np
fig, ax = plt.subplots(1, 1, figsize=(22, 34))
ax.set_xlim(0, 22)
ax.set_ylim(0, 34)
ax.axis('off')
fig.patch.set_facecolor('#F0F4F8')
# ─── Color palette ───────────────────────────────────────────────────────────
C_TITLE = '#1A2E44' # dark navy
C_START = '#1A2E44' # start/end
C_SCREEN = '#2C6E9E' # screening box
C_DIAM = '#E67E22' # decision diamond
C_ACTION = '#1B7A4C' # action / intervention
C_SHOCK = '#C0392B' # septic shock (urgent)
C_BUNDLE = '#6C3483' # bundle/treatment
C_NOTE = '#5D6D7E' # note/grey
C_MONI = '#117A65' # monitoring
C_WHITE = '#FFFFFF'
C_CREAM = '#FEF9F0'
C_LTGREEN = '#D5F5E3'
C_LTBLUE = '#D6EAF8'
C_LTORANG = '#FDEBD0'
C_LTRED = '#FADBD8'
C_LTPURP = '#E8DAEF'
C_LTGREY = '#EBF5FB'
# ─── Helper functions ─────────────────────────────────────────────────────────
def rounded_box(ax, x, y, w, h, color, text, fontsize=9, text_color='white',
bold=False, radius=0.35, alpha=1.0, linestyle='-', edge_color=None,
line_spacing=1.4):
ec = edge_color if edge_color else color
box = FancyBboxPatch((x - w/2, y - h/2), w, h,
boxstyle=f"round,pad=0.15,rounding_size={radius}",
linewidth=1.5, edgecolor=ec, facecolor=color, alpha=alpha,
linestyle=linestyle, zorder=3)
ax.add_patch(box)
weight = 'bold' if bold else 'normal'
ax.text(x, y, text, ha='center', va='center', fontsize=fontsize,
color=text_color, fontweight=weight, zorder=4,
linespacing=line_spacing,
wrap=False)
def diamond(ax, x, y, w, h, color, text, fontsize=8.5, text_color='white'):
dx, dy = w/2, h/2
xs = [x, x+dx, x, x-dx, x]
ys = [y+dy, y, y-dy, y, y+dy]
ax.fill(xs, ys, color=color, zorder=3, alpha=0.95)
ax.plot(xs, ys, color=color, linewidth=1.5, zorder=4)
ax.text(x, y, text, ha='center', va='center', fontsize=fontsize,
color=text_color, fontweight='bold', zorder=5,
linespacing=1.3)
def arrow(ax, x1, y1, x2, y2, color='#2C3E50', lw=1.8, label='', label_side='right'):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle='->', color=color, lw=lw,
connectionstyle='arc3,rad=0.0'),
zorder=2)
if label:
mx, my = (x1+x2)/2, (y1+y2)/2
offset = 0.25 if label_side == 'right' else -0.25
ax.text(mx + offset, my, label, fontsize=8, color=color,
ha='left' if label_side == 'right' else 'right',
va='center', fontstyle='italic', zorder=5)
def elbow_arrow(ax, x1, y1, x2, y2, color='#2C3E50', lw=1.8, label='',
label_side='right', via_x=None, via_y=None):
"""Arrow going x1,y1 → via_x,via_y → x2,y2 with elbow"""
if via_x is None: via_x = x1
if via_y is None: via_y = y2
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle='->', color=color, lw=lw,
connectionstyle=f'angle,angleA=0,angleB=90,rad=0.3'),
zorder=2)
if label:
ax.text((x1+x2)/2 + 0.2, (y1+y2)/2, label, fontsize=8,
color=color, ha='left', va='center', fontstyle='italic', zorder=5)
def section_label(ax, x, y, text, color):
ax.text(x, y, text, ha='left', va='center', fontsize=8,
color=color, fontweight='bold',
bbox=dict(boxstyle='round,pad=0.2', facecolor=color, alpha=0.15, edgecolor=color),
zorder=6)
# ─── TITLE ───────────────────────────────────────────────────────────────────
title_box = FancyBboxPatch((0.4, 32.8), 21.2, 1.0,
boxstyle="round,pad=0.15,rounding_size=0.4",
linewidth=2, edgecolor=C_TITLE, facecolor=C_TITLE, zorder=3)
ax.add_patch(title_box)
ax.text(11, 33.3, 'SEPSIS: Clinical Decision Flowchart for Diagnosis & Initial Management',
ha='center', va='center', fontsize=14, color='white', fontweight='bold', zorder=4)
ax.text(11, 33.05, 'Based on Surviving Sepsis Campaign 2026 Guidelines (SSC 2026) | SOFA-based Sepsis-3 Definition',
ha='center', va='center', fontsize=8.5, color='#AED6F1', zorder=4)
# ─── STEP 1: PATIENT PRESENTATION ────────────────────────────────────────────
rounded_box(ax, 11, 32.1, 10, 0.65, C_SCREEN,
'PATIENT PRESENTS WITH SUSPECTED INFECTION\n(fever/hypothermia, tachycardia, tachypnea, hypotension, altered mentation, leukocytosis/leukopenia)',
fontsize=8.5, bold=True, radius=0.3)
arrow(ax, 11, 31.77, 11, 31.3)
# ─── STEP 2: SOFA SCREENING ──────────────────────────────────────────────────
rounded_box(ax, 11, 31.0, 10, 0.55, C_LTBLUE,
'BEDSIDE SCREENING ▶ qSOFA ≥2?\n(RR ≥22 | Altered mentation | SBP ≤100 mmHg)',
fontsize=8.5, bold=False, text_color=C_TITLE, radius=0.3,
edge_color=C_SCREEN)
arrow(ax, 11, 30.72, 11, 30.2)
# ─── STEP 3: DIAGNOSIS DIAMOND ───────────────────────────────────────────────
diamond(ax, 11, 29.6, 5.5, 1.05, C_DIAM,
'Suspected Infection\n+ SOFA ≥ 2 above baseline?\n(New organ dysfunction)', fontsize=8.5)
# NO branch (right)
arrow(ax, 13.75, 29.6, 17, 29.6, color='#922B21', label='NO', label_side='right')
rounded_box(ax, 19, 29.6, 3.6, 0.7, '#922B21',
'NOT SEPSIS\nReassess; treat underlying\ncondition; continue monitoring',
fontsize=7.8, radius=0.25)
# YES arrow down
arrow(ax, 11, 29.07, 11, 28.55, label='YES', label_side='right')
# ─── STEP 4: IMMEDIATE ACTIONS (HOUR 1 BUNDLE) ───────────────────────────────
section_label(ax, 0.5, 28.85, '⏱ HOUR 1 BUNDLE', C_ACTION)
rounded_box(ax, 11, 28.1, 19, 0.85, C_LTGREEN,
'① Measure serum LACTATE ② Draw 2 sets BLOOD CULTURES (before ABx) ③ Initiate IV ACCESS (peripheral or central)\n④ MONITOR: continuous pulse ox, ECG, urine output, BP; obtain CBC, CMP, coagulation, ABG/VBG, procalcitonin',
fontsize=8.3, text_color='#1B4332', radius=0.3, edge_color=C_ACTION)
arrow(ax, 11, 27.67, 11, 27.15)
# ─── STEP 5: SEPTIC SHOCK DIAMOND ────────────────────────────────────────────
diamond(ax, 11, 26.5, 5.8, 1.1, C_DIAM,
'Signs of SEPTIC SHOCK?\nVasopressor needed to maintain\nMAP ≥65 + Lactate >2 mmol/L', fontsize=8.5)
# ─── YES BRANCH (left - septic shock) ────────────────────────────────────────
arrow(ax, 8.1, 26.5, 4.8, 26.5, color=C_SHOCK, label='YES', label_side='right')
ax.text(4.8, 27.15, 'SEPTIC SHOCK', ha='center', va='center', fontsize=9,
color=C_SHOCK, fontweight='bold')
rounded_box(ax, 4.8, 26.5, 6, 1.0, C_LTRED,
'Antibiotics within 1 HOUR\nNorepinephrine IMMEDIATELY\n(concurrent with fluids if unstable shock)\nTarget MAP ≥65 mmHg',
fontsize=8, text_color='#641E16', radius=0.3, edge_color=C_SHOCK)
arrow(ax, 4.8, 26.0, 4.8, 25.1, color=C_SHOCK)
# ─── NO BRANCH (right - sepsis no shock) ─────────────────────────────────────
arrow(ax, 13.9, 26.5, 17.5, 26.5, color=C_ACTION, label='NO', label_side='right')
ax.text(17.5, 27.15, 'SEPSIS (no shock)', ha='center', va='center', fontsize=9,
color=C_ACTION, fontweight='bold')
rounded_box(ax, 17.5, 26.5, 6, 1.0, C_LTGREEN,
'Antibiotics within 3 HOURS\nIf diagnosis uncertain:\n time-limited eval, start by 3 h\nIV crystalloid bolus 30 mL/kg\n if lactate ≥4 or hypotension',
fontsize=8, text_color='#1B4332', radius=0.3, edge_color=C_ACTION)
arrow(ax, 17.5, 26.0, 17.5, 25.1, color=C_ACTION)
# ─── MERGE BACK ──────────────────────────────────────────────────────────────
# Both branches feed into FLUID & VASOPRESSOR block at y=24.7
ax.annotate('', xy=(11, 24.7), xytext=(4.8, 25.1),
arrowprops=dict(arrowstyle='->', color='#2C3E50', lw=1.8,
connectionstyle='angle,angleA=0,angleB=90,rad=0.3'), zorder=2)
ax.annotate('', xy=(11, 24.7), xytext=(17.5, 25.1),
arrowprops=dict(arrowstyle='->', color='#2C3E50', lw=1.8,
connectionstyle='angle,angleA=0,angleB=90,rad=0.3'), zorder=2)
# ─── STEP 6: FLUID & VASOPRESSOR MANAGEMENT ─────────────────────────────────
section_label(ax, 0.5, 25.1, '💧 RESUSCITATION', C_SCREEN)
rounded_box(ax, 11, 24.3, 19, 0.7, C_LTBLUE,
'FLUID RESUSCITATION | Balanced crystalloids preferred (Lactated Ringer\'s or Plasma-Lyte) over 0.9% NaCl\n30 mL/kg bolus → reassess with dynamic measures (PPV, SVV, passive leg raise, POCUS cardiac/IVC)',
fontsize=8.3, text_color='#154360', radius=0.3, edge_color=C_SCREEN)
arrow(ax, 11, 23.95, 11, 23.4)
# ─── STEP 7: RESPONSE TO FLUIDS ──────────────────────────────────────────────
diamond(ax, 11, 22.8, 5.5, 1.05, C_DIAM,
'Hemodynamically\nSTABLE after resuscitation?\n(MAP ≥65, lactate improving)', fontsize=8.5)
# NO → more vasopressors
arrow(ax, 8.25, 22.8, 5.0, 22.8, color=C_SHOCK, label='NO', label_side='right')
rounded_box(ax, 3.8, 22.8, 5.2, 1.1, C_LTRED,
'ESCALATE VASOPRESSORS\n1st: Norepinephrine (titrate)\n2nd: Add Vasopressin 0.03 U/min\n or Angiotensin II\nConsider Hydrocortisone\n 200 mg/day if refractory shock',
fontsize=7.8, text_color='#641E16', radius=0.3, edge_color=C_SHOCK)
# YES → continue monitoring
arrow(ax, 13.75, 22.8, 16.5, 22.8, color=C_ACTION, label='YES', label_side='right')
rounded_box(ax, 18.5, 22.8, 5.5, 1.1, C_LTGREEN,
'CONTINUE MONITORING\nReassess fluid status q1-2h\nLactate clearance target ≥10%/2h\nConsider de-escalation of fluids\nAvoid fluid overload',
fontsize=7.8, text_color='#1B4332', radius=0.3, edge_color=C_ACTION)
arrow(ax, 11, 22.27, 11, 21.7)
# ─── STEP 8: ANTIBIOTIC SELECTION ────────────────────────────────────────────
section_label(ax, 0.5, 22.2, '💊 ANTIMICROBIALS', C_BUNDLE)
rounded_box(ax, 11, 21.2, 19, 0.85, C_LTPURP,
'EMPIRIC ANTIBIOTIC SELECTION (tailor to suspected source, risk factors, local resistance patterns)\n'
'No Pseudomonas risk → Ceftriaxone/Cefotaxime | Pseudomonas risk → Cefepime / Pip-Tazo / Carbapenem\n'
'MRSA risk → Add Vancomycin or Linezolid | Fungal risk (post-abdominal surgery, TPN, Candida colonization) → Echinocandin',
fontsize=8, text_color='#4A235A', radius=0.3, edge_color=C_BUNDLE)
arrow(ax, 11, 20.77, 11, 20.25)
# ─── STEP 9: SOURCE CONTROL ──────────────────────────────────────────────────
rounded_box(ax, 11, 19.9, 14, 0.65, '#117A65',
'🔍 SOURCE CONTROL: Identify & control infection source ASAP (abscess drainage, debridement, device removal)\n'
'Surgical emergencies: perforated viscus, necrotizing fasciitis, cholangitis, pyelonephritis',
fontsize=8, text_color='white', radius=0.3)
arrow(ax, 11, 19.57, 11, 19.05)
# ─── STEP 10: RESPIRATORY SUPPORT ────────────────────────────────────────────
section_label(ax, 0.5, 19.35, '🫁 RESP / ICU', '#2471A3')
diamond(ax, 11, 18.5, 5.5, 1.05, '#2471A3',
'Hypoxic Respiratory\nFailure or O2 sat <94%?', fontsize=8.5)
arrow(ax, 8.25, 18.5, 5.0, 18.5, color='#2471A3', label='YES', label_side='right')
rounded_box(ax, 3.5, 18.5, 5.5, 1.1, '#D6EAF8',
'1st: High-Flow Nasal Oxygen (HFNO)\n or Non-Invasive Ventilation\n2nd: Intubate if HFNO fails\nMechanical ventilation:\n Tidal vol 6 mL/kg IBW\n Plateau P <30 cmH₂O\n Prone if P/F <150 mmHg',
fontsize=7.8, text_color='#1A5276', radius=0.3, edge_color='#2471A3')
arrow(ax, 13.75, 18.5, 16.0, 18.5, color=C_NOTE, label='NO / Mild', label_side='right')
rounded_box(ax, 18.0, 18.5, 5.5, 0.65, C_LTGREY,
'Supplemental O₂ via face mask\nMonitor closely; POCUS cardiac output\nTarget SpO₂ 94-98%',
fontsize=7.8, text_color=C_NOTE, radius=0.25, edge_color=C_NOTE)
arrow(ax, 11, 17.97, 11, 17.4)
# ─── STEP 11: ADJUNCTIVE / ADDITIONAL MANAGEMENT ────────────────────────────
section_label(ax, 0.5, 17.65, '⚙ ADJUNCTIVE CARE', C_NOTE)
rounded_box(ax, 11, 16.95, 19, 0.8, '#F4F6F7',
'GLUCOSE CONTROL: Start insulin if glucose ≥180 mg/dL | Target 144-180 mg/dL (avoid tight <140 mg/dL)\n'
'CORTICOSTEROIDS: Hydrocortisone 200 mg/day if shock refractory to fluids + vasopressors\n'
'NOT recommended: Vitamin C (no mortality benefit) | Bicarbonate (unless pH <7.2 + AKI stage 2-3) | Routine antifungals',
fontsize=8, text_color='#2C3E50', radius=0.3,
edge_color='#85929E')
arrow(ax, 11, 16.55, 11, 16.0)
# ─── STEP 12: ICU ADMISSION & MONITORING ─────────────────────────────────────
section_label(ax, 0.5, 16.25, '🏥 ICU / MONITORING', C_MONI)
rounded_box(ax, 11, 15.55, 19, 0.8, C_LTGREEN,
'ICU ADMISSION within 6 hours for critically ill / shocked patients\n'
'MONITORING: Hourly urine output (target ≥0.5 mL/kg/h) | Serial lactate q2h until <2 mmol/L | Daily SOFA score\n'
'Hemodynamic targets: MAP ≥65 mmHg | CVP 8-12 mmHg (if used) | ScvO₂ ≥70%',
fontsize=8, text_color='#1B4332', radius=0.3, edge_color=C_MONI)
arrow(ax, 11, 15.15, 11, 14.6)
# ─── STEP 13: REASSESSMENT AT 6H ─────────────────────────────────────────────
diamond(ax, 11, 14.0, 5.8, 1.1, C_DIAM,
'Clinical IMPROVEMENT\nat 6 hours?\n(MAP, lactate, UO, mentation)', fontsize=8.5)
# YES
arrow(ax, 13.9, 14.0, 17.0, 14.0, color=C_ACTION, label='YES', label_side='right')
rounded_box(ax, 19.3, 14.0, 4.8, 1.1, C_LTGREEN,
'CONTINUE CURRENT PLAN\nDe-escalate antibiotics\n per culture results\nGradual vasopressor wean\nActive fluid removal\n (diuretics once stable)',
fontsize=7.8, text_color='#1B4332', radius=0.3, edge_color=C_ACTION)
# NO
arrow(ax, 8.1, 14.0, 4.8, 14.0, color=C_SHOCK, label='NO', label_side='right')
rounded_box(ax, 3.3, 14.0, 5.2, 1.1, C_LTRED,
'REASSESS:\nRepeat cultures / imaging\nEscalate antibiotics\nConsider additional vasopressors\n / inotropes (Dobutamine\n if cardiac dysfunction)\nReevaluate source control',
fontsize=7.8, text_color='#641E16', radius=0.3, edge_color=C_SHOCK)
arrow(ax, 11, 13.45, 11, 12.9)
# ─── STEP 14: ANTIBIOTIC DE-ESCALATION ──────────────────────────────────────
section_label(ax, 0.5, 13.15, '🔁 DE-ESCALATION', C_BUNDLE)
rounded_box(ax, 11, 12.45, 19, 0.8, C_LTPURP,
'ANTIBIOTIC STEWARDSHIP: Review cultures daily | Narrow spectrum based on sensitivities\n'
'Procalcitonin-guided discontinuation | Target shortest effective course (typically 5-7 days)\n'
'Stop antifungals/antivirals if not supported by cultures/clinical picture',
fontsize=8, text_color='#4A235A', radius=0.3, edge_color=C_BUNDLE)
arrow(ax, 11, 12.05, 11, 11.5)
# ─── STEP 15: SPECIAL POPULATIONS NOTE ──────────────────────────────────────
rounded_box(ax, 11, 11.1, 19, 0.7, '#F8F9FA',
'⚠ SPECIAL POPULATIONS: Immunocompromised → broader coverage; Pregnant → avoid certain antibiotics; Pediatric → SSC 2026 Pediatric Guidelines apply\n'
'Low/Middle-income settings → adapt to available resources per SSC 2026 LMIC recommendations',
fontsize=8, text_color='#566573', radius=0.3, edge_color='#AAB7B8', bold=False)
arrow(ax, 11, 10.75, 11, 10.2)
# ─── OUTCOMES / EXIT ─────────────────────────────────────────────────────────
rounded_box(ax, 11, 9.85, 10, 0.65, C_START,
'ONGOING: Daily goals reassessment | DVT/stress ulcer prophylaxis | Early enteral nutrition | Rehabilitation\nSurvivor: Screen for Post-Sepsis Syndrome at discharge & follow-up',
fontsize=8.3, bold=False, radius=0.3)
# ─── LEGEND ──────────────────────────────────────────────────────────────────
legend_x, legend_y = 0.5, 8.9
ax.text(legend_x, legend_y + 0.2, 'LEGEND', fontsize=9, fontweight='bold', color=C_TITLE,
va='bottom')
items = [
(C_SCREEN, C_WHITE, 'Screening / Assessment'),
(C_DIAM, C_WHITE, 'Decision Point'),
(C_ACTION, C_WHITE, 'Action / Intervention (stable/less urgent)'),
(C_SHOCK, C_WHITE, 'Urgent Action (septic shock)'),
(C_BUNDLE, C_WHITE, 'Treatment Bundle / Stewardship'),
(C_MONI, C_WHITE, 'Monitoring / ICU'),
]
for i, (fc, tc, lbl) in enumerate(items):
bx = legend_x
by = legend_y - 0.55 - i * 0.52
b = FancyBboxPatch((bx, by - 0.18), 1.2, 0.36,
boxstyle="round,pad=0.05,rounding_size=0.1",
facecolor=fc, edgecolor=fc, linewidth=1, zorder=3)
ax.add_patch(b)
ax.text(bx + 0.6, by, tc, ha='center', va='center', fontsize=7.5, color=tc, zorder=4)
ax.text(bx + 1.4, by, lbl, ha='left', va='center', fontsize=8, color=C_TITLE, zorder=4)
# ─── KEY NUMBERS BOX ─────────────────────────────────────────────────────────
kx, ky = 7.5, 8.9
ax.text(kx, ky + 0.2, 'KEY NUMBERS', fontsize=9, fontweight='bold', color=C_TITLE)
key_items = [
('Antibiotic timing (septic shock)', '≤ 1 hour'),
('Antibiotic timing (sepsis, no shock)', '≤ 3 hours'),
('Initial crystalloid bolus', '30 mL/kg'),
('MAP target', '≥ 65 mmHg'),
('Lactate clearance target', '≥ 10% per 2 h'),
('Glucose target', '144-180 mg/dL'),
('Tidal volume (MV)', '6 mL/kg IBW'),
('Hydrocortisone dose', '200 mg/day'),
('ICU admission target', 'Within 6 hours'),
]
for i, (label, val) in enumerate(key_items):
yy = ky - 0.5 - i * 0.48
ax.text(kx, yy, f'• {label}:', fontsize=8, color=C_TITLE, va='center')
ax.text(kx + 5.2, yy, val, fontsize=8.5, color=C_SHOCK, fontweight='bold', va='center')
# ─── SEPSIS-3 DEFINITION BOX ─────────────────────────────────────────────────
dx, dy = 14.5, 8.9
ax.text(dx, dy + 0.2, 'SEPSIS-3 DEFINITIONS', fontsize=9, fontweight='bold', color=C_TITLE)
defs = [
('SEPSIS', 'Infection + new SOFA ≥2 above baseline'),
('SEPTIC SHOCK', 'Sepsis + vasopressor for MAP ≥65\n+ Lactate >2 mmol/L (no hypovolemia)'),
('qSOFA', 'RR ≥22, Altered mentation, SBP ≤100\n(screening tool, not diagnostic)'),
('SOFA domains', 'Respiration, Coagulation, Liver,\nCVS, CNS, Renal'),
]
for i, (term, defn) in enumerate(defs):
yy = dy - 0.55 - i * 0.9
rounded_box(ax, dx + 3.3, yy, 7.0, 0.75,
C_LTBLUE if i % 2 == 0 else C_LTGREEN,
f'{term}: {defn}',
fontsize=7.8, text_color=C_TITLE, radius=0.2, edge_color=C_SCREEN)
# ─── FOOTER ──────────────────────────────────────────────────────────────────
ax.plot([0.4, 21.6], [0.5, 0.5], color='#AAB7B8', lw=1)
ax.text(11, 0.3, 'Based on: Surviving Sepsis Campaign 2026 Adult & Pediatric Guidelines (SSC 2026) | ESICM 2025 | Sepsis-3 Definitions | Harrison\'s Internal Medicine 22e',
ha='center', va='center', fontsize=7.5, color='#717D7E', style='italic')
plt.tight_layout(pad=0.3)
plt.savefig('/tmp/workspace/sepsis-flowchart/sepsis_flowchart.png',
dpi=180, bbox_inches='tight', facecolor='#F0F4F8')
print("Saved successfully.")
cd /tmp/workspace/sepsis-flowchart && python generate_flowchart.py 2>&1
~/sepsis-flowchart/generate_flowchart.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/sepsis-flowchart/generate_flowchart.py'
cd /tmp/workspace/sepsis-flowchart && sed -i \ "s/'💧 RESUSCITATION'/'[~] RESUSCITATION'/g" \ "s/'💊 ANTIMICROBIALS'/'[Rx] ANTIMICROBIALS'/g" \ "s/'🔍 SOURCE CONTROL'/'[S] SOURCE CONTROL'/g" \ "s/'🫁 RESP \/ ICU'/'[Resp] RESP \/ ICU'/g" \ "s/'🏥 ICU \/ MONITORING'/'[ICU] ICU \/ MONITORING'/g" \ "s/'🔁 DE-ESCALATION'/'[v] DE-ESCALATION'/g" \ generate_flowchart.py && python generate_flowchart.py 2>&1 | grep -v UserWarning | grep -v "plt\."
~/sepsis-flowchart/generate_flowchart.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/sepsis-flowchart/generate_flowchart.py'
~/sepsis-flowchart/generate_flowchart.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/sepsis-flowchart/generate_flowchart.py'
python3 -c " content = open('/tmp/workspace/sepsis-flowchart/generate_flowchart.py').read() replacements = { '💧 RESUSCITATION': '[~] RESUSCITATION', '🔍 SOURCE CONTROL': '[S] SOURCE CONTROL', '🫁 RESP / ICU': '[Resp] RESP / ICU', '🏥 ICU / MONITORING': '[ICU] ICU / MONITORING', '🔁 DE-ESCALATION': '[>>] DE-ESCALATION', '⚙ ADJUNCTIVE CARE': '[+] ADJUNCTIVE CARE', '⚠ SPECIAL POPULATIONS': '[!] SPECIAL POPULATIONS', } for old, new in replacements.items(): content = content.replace(old, new) open('/tmp/workspace/sepsis-flowchart/generate_flowchart.py', 'w').write(content) print('Done') "
cd /tmp/workspace/sepsis-flowchart && python generate_flowchart.py 2>&1
ls -lh /tmp/workspace/sepsis-flowchart/sepsis_flowchart.png
sepsis flowchart
Image · PNG