Survival Sepsis Guidelines 2026 update
Surviving Sepsis Campaign international guidelines 2026 adults sepsis septic shock recommendations
"Surviving Sepsis Campaign" AND guidelines
https://www.sccm.org/clinical-resources/guidelines/guideline…
PMID: 42767105
https://link.springer.com/article/10.1007/s00134-026-08361-1
https://link.springer.com/article/10.1007/s00134-026-08361-1
2026 Surviving Sepsis Campaign adult guidelines what's new summary fluids antibiotics corticosteroids screening
2026 SSC adult guideline key changes sepsis screening qSOFA antibiotics 3 hours possible sepsis capillary refill hydrocortisone fludrocortisone beta-lactam extended infusion
On the basis of this guidelines prepare a presentation
~/
mkdir -p /tmp/workspace/ssc-2026-deck && cat > /tmp/workspace/ssc-2026-deck/build.py <<'EOF' from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.enum.shapes import MSO_SHAPE NAVY=RGBColor(0x0B,0x25,0x45); TEAL=RGBColor(0x13,0x8D,0x90); CORAL=RGBColor(0xE4,0x57,0x2E) LIGHT=RGBColor(0xF3,0xF6,0xFA); GRAY=RGBColor(0x33,0x41,0x55); WHITE=RGBColor(255,255,255) AMBER=RGBColor(0xF2,0xA9,0x00); MID=RGBColor(0xDD,0xE5,0xEE); GREEN=RGBColor(0x2E,0x8B,0x57) FONT="Calibri" prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5) BL=prs.slide_layouts[6] state={"n":0} def rect(s,x,y,w,h,fill,line=None,shape=MSO_SHAPE.RECTANGLE): r=s.shapes.add_shape(shape,Inches(x),Inches(y),Inches(w),Inches(h)) r.fill.solid(); r.fill.fore_color.rgb=fill if line: r.line.color.rgb=line; r.line.width=Pt(1) else: r.line.fill.background() r.shadow.inherit=False return r def text(s,x,y,w,h,content,size=16,color=GRAY,bold=False,align=PP_ALIGN.LEFT,anchor=MSO_ANCHOR.TOP,bullets=False,space=6): tb=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=tb.text_frame tf.word_wrap=True; tf.vertical_anchor=anchor tf.margin_left=tf.margin_right=Inches(0.05); tf.margin_top=tf.margin_bottom=Inches(0.03) items=content if isinstance(content,list) else [content] for i,it in enumerate(items): p=tf.paragraphs[0] if i==0 else tf.add_paragraph() p.alignment=align; p.space_after=Pt(space) t=("\u2022 "+it) if bullets else it r=p.add_run(); r.text=t; r.font.size=Pt(size); r.font.color.rgb=color; r.font.bold=bold; r.font.name=FONT return tb def slide(title,subtitle=None,notes=None): s=prs.slides.add_slide(BL); state["n"]+=1 rect(s,0,0,13.333,7.5,LIGHT) rect(s,0,0,13.333,1.15,NAVY); rect(s,0,1.15,13.333,0.06,TEAL) text(s,0.6,0.18,12,0.6,title,30,WHITE,True,anchor=MSO_ANCHOR.MIDDLE) if subtitle: text(s,0.6,0.72,12,0.38,subtitle,14,RGBColor(0xBF,0xE3,0xE4)) text(s,0.6,7.08,10,0.3,"Surviving Sepsis Campaign: International Guidelines for Management of Sepsis and Septic Shock 2026 (adults)",10,RGBColor(0x7A,0x88,0x9C)) text(s,12.0,7.08,0.8,0.3,str(state["n"]),10,RGBColor(0x7A,0x88,0x9C),align=PP_ALIGN.RIGHT) if notes: s.notes_slide.notes_text_frame.text=notes return s def card(s,x,y,w,h,head,body,accent=TEAL,size=14,tag=None,head_size=17): rect(s,x,y,w,h,WHITE,MID); rect(s,x,y,0.09,h,accent) text(s,x+0.22,y+0.1,w-0.35,0.5,head,head_size,NAVY,True) yy=y+0.1+ (0.75 if len(head)>30 else 0.5) text(s,x+0.22,yy,w-0.35,h-(yy-y)-(0.45 if tag else 0.1),body,size,GRAY,bullets=isinstance(body,list),space=4) if tag: t=rect(s,x+0.22,y+h-0.45,w-0.45,0.32,accent,shape=MSO_SHAPE.ROUNDED_RECTANGLE) tf=t.text_frame; tf.margin_top=tf.margin_bottom=0 p=tf.paragraphs[0]; p.alignment=PP_ALIGN.CENTER; r=p.add_run(); r.text=tag r.font.size=Pt(11); r.font.bold=True; r.font.color.rgb=WHITE; r.font.name=FONT # 1 Title s=prs.slides.add_slide(BL); state["n"]+=1 rect(s,0,0,13.333,7.5,NAVY); rect(s,0,5.0,13.333,0.08,TEAL) rect(s,0.8,1.2,0.12,2.6,CORAL) text(s,1.15,1.1,11,0.5,"SSC 2026 | ADULT GUIDELINES",16,RGBColor(0x7F,0xD6,0xD8),True) text(s,1.15,1.65,11.3,1.9,"Surviving Sepsis Campaign 2026: What Changed in Adult Sepsis and Septic Shock",40,WHITE,True) text(s,1.15,3.7,11,0.6,"Recognition, antimicrobials, hemodynamics, supportive care and life after sepsis",20,RGBColor(0xBF,0xE3,0xE4)) text(s,1.15,5.3,11,1.2,["Based on: Prescott HC, Antonelli M, et al. Crit Care Med / Intensive Care Med, March 2026","DOI 10.1097/CCM.0000000000007075 | SCCM and ESICM"],14,RGBColor(0xBF,0xCB,0xDA)) s.notes_slide.notes_text_frame.text="Opening slide. The 2026 adult SSC guideline was published 23 March 2026 by SCCM and ESICM and replaces the 2021 edition." # 2 Overview s=slide("The 2026 update at a glance","First major revision since 2021", "129 statements in total, 46 of them new. Developed by more than 130 experts including patient and family representatives, endorsed by 24 societies.") stats=[("129","statements in the adult guideline"),("46","new statements since 2021"),("130+","international experts, with patient and family representatives"),("24","endorsing professional societies")] for i,(n,l) in enumerate(stats): x=0.6+i*3.1 rect(s,x,1.6,2.9,2.1,WHITE,MID); rect(s,x,1.6,2.9,0.09,TEAL) text(s,x,1.85,2.9,0.9,n,48,TEAL,True,PP_ALIGN.CENTER) text(s,x+0.15,2.8,2.6,0.8,l,14,GRAY,align=PP_ALIGN.CENTER) text(s,0.6,4.0,12,0.4,"Where the new statements concentrate",18,NAVY,True) text(s,0.6,4.45,12,2.4,[ "Antibiotic optimization and stewardship, including a timing framework by certainty of sepsis", "Lower initial blood pressure target for older adults with septic shock", "Fluid removal after resuscitation and more flexible vasopressor choices", "Continuity of care after discharge, including psychological and physical rehabilitation"],16,GRAY,bullets=True,space=8) # 3 Themes s=slide("Four themes that run through the guideline","The shift is from fixed protocols to individualized care", "The Hospitalist summary describes the 2026 guideline as less a wholesale change in management and more a move to precision, stewardship and post-sepsis outcomes. Several 2021-era bundle elements were softened or narrowed.") th=[("1 Timely, tiered antimicrobials","Speed depends on how certain sepsis is. Stewardship is built in.",TEAL), ("2 Individualized resuscitation","Fluids guided by perfusion and responsiveness, not a single number.",CORAL), ("3 Tailored hemodynamics","MAP targets by age, norepinephrine first, flexible add-ons.",AMBER), ("4 Care beyond the ICU","Goals of care early, rehabilitation and follow-up after discharge.",NAVY)] for i,(h,b,c) in enumerate(th): x=0.6+(i%2)*6.15; y=1.65+(i//2)*2.65 card(s,x,y,5.95,2.4,h,b,c,size=17,head_size=22) # 4 Antibiotic timing s=slide("Antimicrobial timing depends on certainty of sepsis","Antibiotic timing framework for adults", "Septic shock and probable or definite sepsis keep the 1 hour target (strong, very low certainty evidence). Possible sepsis without shock gets a time-limited work-up and antimicrobials within 3 hours from first suspicion if concern persists (conditional).") card(s,0.6,1.6,3.95,3.7,"Septic shock (possible, probable or definite)",["Give antimicrobials immediately","Ideally within 1 hour of recognition"],CORAL,size=16,tag="STRONG | very low certainty") card(s,4.7,1.6,3.95,3.7,"Probable or definite sepsis, no shock",["Give antimicrobials immediately","Ideally within 1 hour of recognition"],AMBER,size=16,tag="STRONG | very low certainty") card(s,8.8,1.6,3.95,3.7,"Possible sepsis, no shock",["Time-limited rapid investigation","If concern for infection persists, give antimicrobials within 3 hours of first suspicion"],TEAL,size=16,tag="CONDITIONAL | very low certainty") rect(s,0.6,5.55,12.15,1.2,NAVY) text(s,0.85,5.65,11.7,1.0,["Good practice statement: rapidly assess the likelihood of infectious versus non-infectious causes of acute illness in adults with possible sepsis without shock."],17,WHITE,anchor=MSO_ANCHOR.MIDDLE) # 5 Stewardship s=slide("Choosing antimicrobials: stewardship built in","Empiric antifungals, Candida biomarkers and anaerobic coverage", "Empiric antifungal therapy: conditional recommendation against, low certainty. Case-by-case use in selected high-risk patients. Candida biomarkers: suggest against to guide initiation (new). New conditional recommendations on empiric anaerobic coverage were added; consult the full text for criteria.") card(s,0.6,1.6,6.0,4.0,"Empiric antifungal therapy",["Suggest AGAINST routine use","Consider case by case in selected patients with risk factors:","Immunosuppression","Prolonged antibiotic exposure or hospitalization","Intra-abdominal source of infection"],CORAL,size=15,tag="CONDITIONAL | low certainty") card(s,6.75,1.6,6.0,1.9,"Candida biomarkers",["Suggest AGAINST using them to start empiric antifungals (new)"],AMBER,size=15) card(s,6.75,3.7,6.0,1.9,"Empiric anaerobic coverage",["New conditional recommendations on when to use it (see full text for criteria)"],TEAL,size=15) text(s,0.6,5.9,12.15,0.9,"The panel's reasoning: missing a fungal infection may harm, but unnecessary antifungal use in patients without fungal infection may also harm. Reserve it for high absolute risk.",16,NAVY,True) # 6 Fluids s=slide("Initial fluid resuscitation","Conditional recommendation, low certainty evidence", "At least 30 mL/kg IV crystalloid within 3 hours for sepsis-induced hypoperfusion or septic shock. Evidence is largely observational and from bundle studies; there are no new data prompting a change. The panel notes the ESICM 2025 fluid guideline suggests up to 30 mL/kg. Fluid-related harms generally occur at far larger volumes (above about 50 mL/kg).") rect(s,0.6,1.6,4.6,5.1,NAVY) text(s,0.6,1.9,4.6,1.3,"\u2265 30",72,WHITE,True,PP_ALIGN.CENTER) text(s,0.6,3.2,4.6,0.6,"mL/kg IV crystalloid",22,RGBColor(0x7F,0xD6,0xD8),True,PP_ALIGN.CENTER) text(s,0.6,3.9,4.6,0.6,"within the first 3 hours",20,WHITE,align=PP_ALIGN.CENTER) text(s,0.9,4.8,4.0,1.8,"For adults with sepsis-induced hypoperfusion or septic shock (hypotension and/or elevated lactate)",14,RGBColor(0xBF,0xCB,0xDA),align=PP_ALIGN.CENTER) card(s,5.4,1.6,3.7,2.45,"Fluid choice",["Use balanced solutions (for example Ringer's lactate)","Consider supplemental albumin"],TEAL,size=14) card(s,9.25,1.6,3.5,2.45,"Dosing weight",["Actual body weight","Adjusted or ideal weight if BMI above 30 kg/m\u00b2"],AMBER,size=14) card(s,5.4,4.25,7.35,2.45,"Individualize and reassess",["Consider patient characteristics and context when choosing volume","Reassess frequently to avoid under- or over-resuscitation","After the first bolus, give more fluid based on responsiveness testing"],CORAL,size=14) # 7 Perfusion monitoring s=slide("Guiding resuscitation: perfusion monitoring","Move beyond a single number", "Within 1 hour measure lactate and capillary refill time. Serial lactate (conditional, low) with the remark not to continue fluids until lactate normalizes. Capillary refill time as adjunct (conditional, low). Dynamic measures such as stroke volume change with passive leg raise or fluid bolus.") items=[("Lactate","Measure within 1 hour. Trend it. Individualize fluids after the initial bolus rather than continuing until lactate normalizes.",TEAL,"Serial lactate: conditional, low"), ("Capillary refill time","Measure within 1 hour and trend it, as an adjunct to other measures of perfusion.",CORAL,"CRT: conditional, low"), ("Dynamic assessment","Test fluid responsiveness (for example stroke volume change with passive leg raise or a fluid bolus).",AMBER,"Quick guide"), ("Hemodynamic monitoring","At least hourly blood pressure. Consider an arterial line. Check source control and consider other causes of shock.",NAVY,"Quick guide")] for i,(h,b,c,t) in enumerate(items): x=0.6+(i%2)*6.15; y=1.6+(i//2)*2.7 card(s,x,y,5.95,2.5,h,b,c,size=15,tag=t) # 8 MAP s=slide("Blood pressure targets","A new, lower range for older adults", "Recommendation 13 (strong, moderate certainty) is carried over with a new remark: use a reasonable range (about 5 mmHg) because exact 65 is not feasible. Recommendation 14 is new (conditional, low certainty) for age 65 or older.") rect(s,0.6,1.7,5.9,3.6,WHITE,MID); rect(s,0.6,1.7,5.9,0.5,NAVY) text(s,0.6,1.72,5.9,0.46,"All adults with septic shock",18,WHITE,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) text(s,0.6,2.4,5.9,1.3,"MAP 65",60,TEAL,True,PP_ALIGN.CENTER) text(s,0.6,3.6,5.9,0.4,"mmHg initial target",18,GRAY,align=PP_ALIGN.CENTER) text(s,0.9,4.2,5.3,1.0,"Strong recommendation, moderate certainty. Titrate vasopressors to stay within about 5 mmHg of target.",14,GRAY,align=PP_ALIGN.CENTER) rect(s,6.85,1.7,5.9,3.6,WHITE,MID); rect(s,6.85,1.7,5.9,0.5,CORAL) text(s,6.85,1.72,5.9,0.46,"Age 65 or older | NEW",18,WHITE,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) text(s,6.85,2.4,5.9,1.3,"MAP 60-65",60,CORAL,True,PP_ALIGN.CENTER) text(s,6.85,3.6,5.9,0.4,"mmHg initial range",18,GRAY,align=PP_ALIGN.CENTER) text(s,7.15,4.2,5.3,1.0,"Conditional recommendation, low certainty. Suggested over higher ranges.",14,GRAY,align=PP_ALIGN.CENTER) rect(s,0.6,5.6,12.15,1.15,NAVY) text(s,0.85,5.65,11.7,1.05,"Practical point: in older patients, avoid chasing higher pressures with escalating vasopressor doses when perfusion markers are acceptable.",16,WHITE,anchor=MSO_ANCHOR.MIDDLE) # 9 Vasopressors s=slide("Vasopressor strategy","Norepinephrine first, then a stepwise ladder", "Norepinephrine first line over dopamine, epinephrine or selepressin (strong); over vasopressin or angiotensin II (conditional). Suggest against terlipressin. Start peripherally rather than delay for central access; consider concurrent start with fluids for life-threatening hypoperfusion. Hydrocortisone with or without fludrocortisone if norepinephrine requirement persists (per the SCCM quick guide).") steps=[("1","Norepinephrine","First-line (strong). Start peripherally; consider early, alongside fluids.",TEAL), ("2","+ Vasopressin","If norepinephrine dose is rising.",AMBER), ("3","+ Epinephrine","Third agent if the dose is still rising.",CORAL), ("+","Cardiac dysfunction","Add dobutamine or use epinephrine.",NAVY)] for i,(n,h,b,c) in enumerate(steps): x=0.6+i*3.1 rect(s,x,1.65,2.9,2.9,WHITE,MID); rect(s,x,1.65,2.9,0.09,c) o=rect(s,x+0.2,1.95,0.65,0.65,c,shape=MSO_SHAPE.OVAL) tf=o.text_frame; tf.margin_left=tf.margin_right=0; p=tf.paragraphs[0]; p.alignment=PP_ALIGN.CENTER r=p.add_run(); r.text=n; r.font.size=Pt(22); r.font.bold=True; r.font.color.rgb=WHITE; r.font.name=FONT text(s,x+0.15,2.75,2.65,0.5,h,18,NAVY,True) text(s,x+0.15,3.25,2.65,1.2,b,14,GRAY) card(s,0.6,4.75,6.0,2.0,"Add steroid if norepinephrine persists",["Hydrocortisone, with or without fludrocortisone"],TEAL,size=15) card(s,6.75,4.75,6.0,2.0,"Not preferred",["Suggest against terlipressin","Norepinephrine preferred over dopamine, selepressin, vasopressin alone and angiotensin II as first line"],CORAL,size=14) # 10 Rescue s=slide("Adjunctive and rescue therapies","Where evidence is limited, the panel says so", "Methylene blue: insufficient evidence for a recommendation in refractory septic shock; 69% of panelists never or almost never use it. Sodium bicarbonate: conditional, very low certainty, for pH 7.2 or below with AKIN stage 2 or 3 AKI.") card(s,0.6,1.6,4.0,4.6,"Corticosteroids",["Hydrocortisone, with or without fludrocortisone, when a norepinephrine requirement persists","See the full text for dose and threshold wording"],TEAL,size=15) card(s,4.7,1.6,4.0,4.6,"Methylene blue",["Insufficient evidence to recommend it in refractory shock with escalating vasopressors","May raise blood pressure; effect on survival unknown","69% of panelists never or almost never use it as rescue"],AMBER,size=14,tag="NO RECOMMENDATION") card(s,8.8,1.6,3.95,4.6,"Sodium bicarbonate",["Suggested for septic shock with severe metabolic acidemia (pH 7.2 or below) and AKI (AKIN 2 or 3)"],CORAL,size=15,tag="CONDITIONAL | very low") text(s,0.6,6.4,12.15,0.5,"Terlipressin: suggest against. Selepressin: not recommended over norepinephrine.",15,NAVY,True) # 11 Supportive care table s=slide("Supportive care recommendations","ICU admission, transfusion, glucose, nutrition and VTE prophylaxis", "All items are from the SCCM recommendation summary. LMWH preferred over UFH (strong, moderate); pharmacologic prophylaxis alone preferred over pharmacologic plus mechanical (conditional, moderate).") rows=[("Topic","Recommendation","Strength","Certainty"), ("ICU admission","Admit within 6 hours if ICU care needed","Conditional","Low"), ("Transfusion","Restrictive over liberal strategy","Strong","Moderate"), ("Insulin","Start at glucose of 180 mg/dL (10 mmol/L) or higher","Strong","Moderate"), ("Enteral nutrition","Early initiation, within 72 hours","Conditional","Very low"), ("VTE prophylaxis","Pharmacologic unless contraindicated","Strong","Moderate"), ("VTE agent","LMWH over unfractionated heparin","Strong","Moderate"), ("VTE method","Pharmacologic alone over adding mechanical","Conditional","Moderate")] tbl=s.shapes.add_table(len(rows),4,Inches(0.6),Inches(1.6),Inches(12.15),Inches(5.2)).table for j,w in enumerate([2.6,6.2,1.9,1.45]): tbl.columns[j].width=Inches(w) for i,r in enumerate(rows): tbl.rows[i].height=Inches(0.65) for j,v in enumerate(r): c=tbl.cell(i,j); c.text=""; c.vertical_anchor=MSO_ANCHOR.MIDDLE p=c.text_frame.paragraphs[0]; run=p.add_run(); run.text=v; run.font.name=FONT run.font.size=Pt(15); c.fill.solid() if i==0: c.fill.fore_color.rgb=NAVY; run.font.color.rgb=WHITE; run.font.bold=True else: c.fill.fore_color.rgb=WHITE if i%2 else RGBColor(0xEA,0xF1,0xF6); run.font.color.rgb=GRAY if j==2: run.font.bold=True; run.font.color.rgb=CORAL if v=="Strong" else TEAL # 12 Beyond ICU s=slide("Goals of care and life after sepsis","Care does not end at discharge", "Goals of care recommendations are carried over: discuss goals of care and prognosis (good practice statement) and address early, within 72 hours (conditional, low). The 2026 guideline adds recommendations on post-discharge continuity, including psychological and physical rehabilitation.") card(s,0.6,1.6,6.0,4.4,"Goals of care",["Discuss goals of care and prognosis with patients and families (good practice statement)","Address early, within 72 hours, rather than later (conditional, low certainty)"],NAVY,size=17) card(s,6.75,1.6,6.0,4.4,"After hospital discharge | expanded",["Continuity of care across settings","Psychological rehabilitation","Physical rehabilitation","Ongoing follow-up for post-sepsis problems"],TEAL,size=17) text(s,0.6,6.2,12.15,0.6,"The guideline covers hospital care, the immediate prehospital setting and the immediate post-hospital setting.",15,NAVY,True) # 13 Controversies s=slide("Strengths, limits and controversies","Read the recommendations alongside the evidence behind them", "The panel itself notes the 30 mL/kg recommendation rests on observational data and differs from ESICM 2025. Dissenting opinion: Spiegel R et al, Am J Emerg Med 2026 (PMID 42767105). Review of controversies: Oczkowski S et al, Pol Arch Intern Med 2026 (PMID 42747338).") card(s,0.6,1.6,6.0,2.5,"Evidence certainty",["Many key recommendations rest on low or very low certainty evidence","Examples: 1-hour antibiotics, 30 mL/kg, MAP range in older adults"],AMBER,size=15) card(s,6.75,1.6,6.0,2.5,"Fluid volume",["SSC: at least 30 mL/kg in 3 hours","ESICM 2025 fluid guideline: up to 30 mL/kg","Panel acknowledges evidence is observational"],CORAL,size=15) card(s,0.6,4.3,6.0,2.45,"Dissenting opinion (Am J Emerg Med)",["Argues successive guidelines drifted from optimal care and became mandated bundles","Calls for moving beyond protocolized, metric-based care"],NAVY,size=14) card(s,6.75,4.3,6.0,2.45,"Open questions",["Methylene blue and other rescue agents","Optimal fluid strategy after the first hours","Best way to implement time targets without overtreatment"],TEAL,size=14) # 14 Pathway s=slide("Bedside pathway: putting it together","Suggested sequence based on the 2026 recommendations and quick guide", "Timeline synthesised from the recommendations and the SCCM quick guide for resuscitation and hemodynamic support. Local protocols and clinical judgement apply.") cols=[("Within 1 hour",CORAL,["Recognize sepsis or shock","Measure lactate and capillary refill time","Give antimicrobials if shock or probable sepsis","Consider norepinephrine early, peripherally"]), ("Within 3 hours",AMBER,["30 mL/kg balanced crystalloid if hypotension or high lactate","Possible sepsis without shock: antimicrobials if concern persists","Reassess perfusion and responsiveness"]), ("Ongoing",TEAL,["MAP 65 (60-65 if age 65 or older)","Add vasopressin, then epinephrine if needed","Steroid if norepinephrine persists","Trend lactate and CRT; confirm source control"]), ("Within 6 to 72 hours",NAVY,["ICU admission within 6 hours if needed","Enteral nutrition within 72 hours","Goals of care within 72 hours","VTE prophylaxis; insulin at 180 mg/dL or higher"])] for i,(h,c,b) in enumerate(cols): x=0.6+i*3.1 rect(s,x,1.6,2.9,0.6,c) text(s,x,1.6,2.9,0.6,h,18,WHITE,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) rect(s,x,2.2,2.9,4.5,WHITE,MID) text(s,x+0.1,2.35,2.7,4.3,b,14,GRAY,bullets=True,space=9) # 15 Take-home s=slide("Key take-home messages",None,"Summary slide.") pts=["Antimicrobial timing is tiered: 1 hour for shock and probable sepsis, up to 3 hours for possible sepsis after rapid work-up.", "Stewardship matters: avoid routine empiric antifungals and Candida biomarker-driven starts.", "Give at least 30 mL/kg balanced crystalloid within 3 hours, then individualize using lactate, capillary refill and dynamic tests.", "MAP 65 mmHg for all, with a new 60-65 mmHg range suggested for age 65 or older.", "Norepinephrine first (peripherally if needed), then vasopressin, then epinephrine; steroid if requirement persists.", "Plan for goals of care within 72 hours and rehabilitation after discharge."] for i,p in enumerate(pts): y=1.5+i*0.9 o=rect(s,0.7,y+0.08,0.6,0.6,TEAL,shape=MSO_SHAPE.OVAL) tf=o.text_frame; tf.margin_left=tf.margin_right=0; pp=tf.paragraphs[0]; pp.alignment=PP_ALIGN.CENTER r=pp.add_run(); r.text=str(i+1); r.font.size=Pt(20); r.font.bold=True; r.font.color.rgb=WHITE; r.font.name=FONT text(s,1.6,y,11.1,0.8,p,18,GRAY,anchor=MSO_ANCHOR.MIDDLE) # 16 References s=slide("References",None,None) text(s,0.6,1.5,12.1,5.4,[ "Prescott HC, Antonelli M, Alhazzani W, et al. Surviving Sepsis Campaign: international guidelines for management of sepsis and septic shock 2026. Intensive Care Med 2026. doi:10.1007/s00134-026-08361-1. Also Crit Care Med, 23 March 2026. doi:10.1097/CCM.0000000000007075", "SCCM. Adult Quick Guide for Resuscitation and Hemodynamic Support (2026 infographic); SCCM guideline recommendation summary.", "ESICM. The 2026 Surviving Sepsis Campaign Guidelines have just been released.", "Spiegel R, et al. The 2026 Surviving Sepsis Campaign Guidelines: the dissenting opinion. Am J Emerg Med 2026. PMID 42767105.", "Oczkowski S, et al. What is next in sepsis? Controversies and future directions from the 2026 SSC Guidelines. Pol Arch Intern Med 2026. PMID 42747338.", "Fatima S, et al. Clinical guideline highlights for the hospitalist: SSC Update (Adults) 2026. J Hosp Med 2026. PMID 42904495.", "EMCrit 422. SSC 2026 Sepsis Guidelines: discussion with lead author Hallie Prescott.", "This deck summarizes recommendations from secondary and tabulated sources; verify details against the full guideline before clinical use."],14,GRAY,bullets=True,space=9) prs.save("/tmp/workspace/ssc-2026-deck/SSC_2026_Adult_Sepsis_Guidelines.pptx") print("ok",state["n"]) EOF cd /tmp/workspace/ssc-2026-deck && python build.py
which soffice libreoffice 2>&1 | head -2; ls -la /tmp/workspace/ssc-2026-deck/
cd /tmp/workspace/ssc-2026-deck && python - <<'EOF' from pptx import Presentation from pptx.util import Emu import math prs=Presentation("SSC_2026_Adult_Sepsis_Guidelines.pptx") for n,s in enumerate(prs.slides,1): for sh in s.shapes: if sh.shape_type==17 and sh.has_text_frame: w=sh.width/914400-0.1; h=sh.height/914400 tot=0 for p in sh.text_frame.paragraphs: if not p.runs: continue sz=p.runs[0].font.size.pt; t=p.text cpl=max(1,w*72/(sz*0.5)) lines=math.ceil(len(t)/cpl) tot+=lines*sz*1.2/72+ (p.space_after.pt/72 if p.space_after else 0) if tot>h+0.05: print(n,round(tot,2),">",round(h,2),sh.text_frame.text[:50]) EOF
cd /tmp/workspace/ssc-2026-deck && sed -i 's/yy=y+0.1+ (0.75 if len(head)>30 else 0.5)/yy=y+0.1+ (0.85 if len(head)>30 else 0.5)/; s/text(s,x+0.22,y+0.1,w-0.35,0.5,head,head_size,NAVY,True)/text(s,x+0.22,y+0.1,w-0.35,0.8 if len(head)>30 else 0.5,head,head_size,NAVY,True)/; s/text(s,1.15,3.7,11,0.6,"Recognition/text(s,1.15,3.7,11,1.0,"Recognition/' build.py && python build.py && python - <<'EOF' from pptx import Presentation import math prs=Presentation("SSC_2026_Adult_Sepsis_Guidelines.pptx") bad=0 for n,s in enumerate(prs.slides,1): for sh in s.shapes: if sh.shape_type==17 and sh.has_text_frame: w=sh.width/914400-0.1; h=sh.height/914400; tot=0 for p in sh.text_frame.paragraphs: if not p.runs: continue sz=p.runs[0].font.size.pt tot+=math.ceil(len(p.text)/max(1,w*72/(sz*0.5)))*sz*1.2/72+(p.space_after.pt/72 if p.space_after else 0) if tot>h+0.05: bad+=1; print(n,round(tot,2),round(h,2),sh.text_frame.text[:40]) print("overflow:",bad) EOF
SSC 2026 Adult Sepsis Guidelines
Presentation · PPTX
Add a slide on sepsis screening tools and ventilation
https://link.springer.com/article/10.1007/s00134-026-08361-1
https://link.springer.com/article/10.1007/s00134-026-08361-1
Surviving Sepsis Campaign 2026 adult guidelines screening tools qSOFA NEWS recommendation mechanical ventilation ARDS recommendations
https://link.springer.com/article/10.1007/s00134-026-08361-1
cd /tmp/workspace/ssc-2026-deck && python - <<'EOF' src=open("build.py").read() new=''' # 10b Screening and ventilation s=slide("Sepsis screening and respiratory support","Screening: recommendations 1 and 4. Ventilation: recommendations 66 to 78", "Screening: Rec 4 (strong, moderate certainty, revisited) recommends NEWS, NEWS2, MEWS or SIRS over qSOFA as a single screening tool, because qSOFA has poor sensitivity. A positive qSOFA should still alert clinicians. Rec 1 recommends a hospital performance improvement program with screening, SOPs and QI. For prehospital care the panel suggests a standard screening tool (for example NEWS2) but did not endorse one specific tool; in a large prehospital cohort NEWS2 had the best performance (sensitivity 73.1%, positive predictive value 6.5%). Ventilation: HFNC recommendations 67 to 69 (new), oxygen targets 66 (new), non-ARDS tidal volume 72 (new), ARDS recommendations 71, 73 to 78 are mostly carried over. Awake proning has its own conditional recommendation; details were not verified for this deck.") card(s,0.6,1.55,5.0,5.25,"Screening for sepsis",[ "Hospitals: run a sepsis performance improvement program (screening, SOPs, quality improvement). Strong", "Use NEWS, NEWS2, MEWS or SIRS over qSOFA as a single screening tool. Strong, moderate certainty", "qSOFA has poor sensitivity, but a positive result should still prompt a sepsis check", "Ambulance or air transport: use a standard screening tool (for example NEWS2); no single tool mandated", "Consider a code sepsis or sepsis huddle protocol", "Sepsis is a clinical diagnosis; no single biomarker rules it in or out"],CORAL,size=13) rows=[("Topic","Recommendation","Strength"), ("Oxygen target","Individualize SpO2: about 90-93% or 96% and above (new)","Cond."), ("Initial support","HFNC over conventional oxygen, and over NIPPV as first step (new)","Cond."), ("No ARDS","Tidal volume 6-8 mL/kg IBW; screen for ARDS regularly (new)","Cond."), ("ARDS: volume","Tidal volume 6 mL/kg; plateau pressure 30 cm H2O or less","Strong"), ("ARDS: PEEP","Higher PEEP; against incremental PEEP titration","Cond. / Strong"), ("ARDS: proning","Prone more than 12 h daily in moderate-severe ARDS","Cond."), ("ARDS: NMBA","Intermittent boluses over continuous infusion","Cond."), ("Severe ARDS","VV-ECMO if conventional ventilation fails, in experienced centers","Cond.")] tbl=s.shapes.add_table(len(rows),3,Inches(5.8),Inches(1.55),Inches(6.95),Inches(5.25)).table for j,w in enumerate([1.5,4.2,1.25]): tbl.columns[j].width=Inches(w) for i,r in enumerate(rows): tbl.rows[i].height=Inches(0.58) for j,v in enumerate(r): c=tbl.cell(i,j); c.text=""; c.vertical_anchor=MSO_ANCHOR.MIDDLE c.margin_left=c.margin_right=Inches(0.08) run=c.text_frame.paragraphs[0].add_run(); run.text=v; run.font.name=FONT; run.font.size=Pt(12.5); c.fill.solid() if i==0: c.fill.fore_color.rgb=NAVY; run.font.color.rgb=WHITE; run.font.bold=True else: c.fill.fore_color.rgb=WHITE if i%2 else RGBColor(0xEA,0xF1,0xF6); run.font.color.rgb=GRAY if j==0: run.font.bold=True; run.font.color.rgb=NAVY if j==2: run.font.bold=True; run.font.color.rgb=CORAL if v.startswith("Strong") else TEAL ''' marker="# 11 Supportive care table" assert marker in src src=src.replace(marker,new+marker,1) open("build.py","w").write(src) EOF python build.py && python - <<'EOF' from pptx import Presentation import math prs=Presentation("/tmp/workspace/ssc-2026-deck/SSC_2026_Adult_Sepsis_Guidelines.pptx") for n,s in enumerate(prs.slides,1): for sh in s.shapes: if sh.shape_type==17 and sh.has_text_frame: w=sh.width/914400-0.1; h=sh.height/914400; tot=0 for p in sh.text_frame.paragraphs: if not p.runs: continue sz=p.runs[0].font.size.pt tot+=math.ceil(len(p.text)/max(1,w*72/(sz*0.5)))*sz*1.2/72+(p.space_after.pt/72 if p.space_after else 0) if tot>h+0.05: print("overflow",n,round(tot,2),round(h,2),sh.text_frame.text[:40]) if sh.has_table: for r in sh.table.rows: for ci,c in enumerate(r.cells): w=sh.table.columns[ci].width/914400-0.2 sz=c.text_frame.paragraphs[0].runs[0].font.size.pt lines=math.ceil(len(c.text)/(w*72/(sz*0.5))) if lines*sz*1.2/72>0.58: print("table cell tall",n,c.text) print(len(prs.slides),"slides") EOF
SSC 2026 Adult Sepsis Guidelines
Presentation · PPTX
| Topic | Recommendation | Strength |
|---|---|---|
| Oxygen target | Individualize SpO2, about 90-93% or 96% and above (new) | Conditional |
| Initial support | High-flow nasal cannula (HFNC) over conventional oxygen, and over non-invasive positive pressure ventilation as the first step (new) | Conditional |
| No ARDS | Tidal volume 6-8 mL/kg ideal body weight, and screen for ARDS regularly (new) | Conditional |
| ARDS, volume | Tidal volume 6 mL/kg, plateau pressure 30 cm H2O or less | Strong |
| ARDS, PEEP | Higher PEEP; recommend against incremental PEEP titration | Conditional / Strong |
| ARDS, proning | Prone more than 12 hours daily in moderate-severe ARDS | Conditional |
| ARDS, neuromuscular blockade | Intermittent boluses over continuous infusion | Conditional |
| Severe ARDS | Veno-venous ECMO if conventional ventilation fails, in experienced centers | Conditional |