Create a ppt on ards:evolving strategies seminar topic for MD medicine
"acute respiratory distress syndrome" AND management
"ARDS" AND "prone positioning" AND "mechanical ventilation"
mkdir -p /tmp/workspace/ards-ppt && ls /tmp/workspace/ards-ppt/
~/ards-ppt/build_ards_ppt.py
#!/usr/bin/env python3
"""
ARDS: Evolving Strategies - MD Medicine Seminar PPT
"""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
from io import BytesIO
# ─── Color palette ────────────────────────────────────────────────
NAVY = RGBColor(0x0D, 0x2E, 0x5C) # deep navy – headings / title bg
TEAL = RGBColor(0x00, 0x7C, 0x8A) # teal accent – section banners
SKY = RGBColor(0xD6, 0xEE, 0xF4) # very light sky blue – content bg
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
YELLOW = RGBColor(0xFF, 0xD7, 0x00)
ORANGE = RGBColor(0xE8, 0x6B, 0x00)
LIGHT_GRAY = RGBColor(0xF2, 0xF4, 0xF7)
DARK_GRAY = RGBColor(0x2D, 0x2D, 0x2D)
RED = RGBColor(0xC0, 0x1C, 0x1C)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ─── Helper functions ─────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill=None, line_color=None, line_width=Pt(0)):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.line.width = line_width
if fill is None:
shape.fill.background()
else:
shape.fill.solid()
shape.fill.fore_color.rgb = fill
if line_color:
shape.line.color.rgb = line_color
shape.line.width = line_width or Pt(1)
else:
shape.line.fill.background()
return shape
def add_textbox(slide, text, x, y, w, h,
font_size=18, bold=False, color=DARK_GRAY,
align=PP_ALIGN.LEFT, italic=False,
v_anchor=MSO_ANCHOR.TOP, word_wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = word_wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom= Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic= italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tf
def add_multiline_textbox(slide, lines, x, y, w, h,
font_size=16, bold=False, color=DARK_GRAY,
align=PP_ALIGN.LEFT, line_space=1.15,
v_anchor=MSO_ANCHOR.TOP):
"""lines: list of (text, bold_override, size_override, color_override)"""
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = v_anchor
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
first = True
for item in lines:
if isinstance(item, str):
txt, b, sz, clr = item, bold, font_size, color
else:
txt = item[0]
b = item[1] if len(item) > 1 else bold
sz = item[2] if len(item) > 2 else font_size
clr = item[3] if len(item) > 3 else color
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.alignment = align
from pptx.oxml.ns import qn
from lxml import etree
pPr = p._pPr if p._pPr is not None else p._p.get_or_add_pPr()
spcAft = etree.SubElement(pPr, qn('a:spcAft'))
spcPts = etree.SubElement(spcAft, qn('a:spcPts'))
spcPts.set('val', '120') # 12pt after paragraph
run = p.add_run()
run.text = txt
run.font.size = Pt(sz)
run.font.bold = b
run.font.italic= False
run.font.color.rgb = clr
run.font.name = "Calibri"
return tf
def add_footer(slide, text="ARDS: Evolving Strategies | MD Medicine Seminar"):
add_rect(slide, 0, 7.1, 13.333, 0.4, fill=NAVY)
add_textbox(slide, text, 0.2, 7.1, 10, 0.4,
font_size=11, color=WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(slide, "2026", 11.8, 7.1, 1.3, 0.4,
font_size=11, color=YELLOW, align=PP_ALIGN.RIGHT,
v_anchor=MSO_ANCHOR.MIDDLE)
def add_slide_header(slide, title, subtitle=None, accent=TEAL):
add_rect(slide, 0, 0, 13.333, 1.05, fill=accent)
add_textbox(slide, title, 0.3, 0.08, 12.5, 0.7,
font_size=26, bold=True, color=WHITE,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
if subtitle:
add_textbox(slide, subtitle, 0.3, 0.72, 12.5, 0.35,
font_size=13, color=WHITE, align=PP_ALIGN.LEFT,
italic=True, v_anchor=MSO_ANCHOR.MIDDLE)
add_footer(slide)
# ════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=NAVY)
# accent stripe
add_rect(s, 0, 5.8, 13.333, 0.15, fill=TEAL)
add_rect(s, 0, 5.95, 13.333, 0.1, fill=YELLOW)
add_textbox(s, "ARDS", 0.8, 0.6, 11.5, 1.8,
font_size=80, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_textbox(s, "EVOLVING STRATEGIES", 0.8, 2.2, 11.5, 0.8,
font_size=34, bold=True, color=YELLOW, align=PP_ALIGN.LEFT)
add_textbox(s, "Acute Respiratory Distress Syndrome", 0.8, 3.05, 11.5, 0.45,
font_size=20, color=SKY, align=PP_ALIGN.LEFT)
add_textbox(s, "MD Medicine Seminar | Department of Internal Medicine", 0.8, 3.6, 11.5, 0.4,
font_size=16, color=SKY, align=PP_ALIGN.LEFT, italic=True)
add_textbox(s, "July 2026", 0.8, 4.15, 11.5, 0.35,
font_size=14, color=YELLOW, align=PP_ALIGN.LEFT)
# right side decorative lung icon area
add_rect(s, 9.5, 0.4, 3.5, 5.0, fill=RGBColor(0x10, 0x3A, 0x6E))
add_textbox(s, "🫁", 10.0, 1.5, 2.5, 2.5, font_size=90,
color=WHITE, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════
# SLIDE 2 – OVERVIEW / TABLE OF CONTENTS
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Seminar Overview", accent=NAVY)
topics = [
("1", "Historical Perspective & Evolution of ARDS Concept"),
("2", "Definition: Berlin Criteria 2012"),
("3", "Epidemiology & Etiology"),
("4", "Pathophysiology – Phases of ARDS"),
("5", "Clinical Features & Diagnosis"),
("6", "Lung-Protective Ventilation – ARDSNet Protocol"),
("7", "PEEP Strategies & Recruitment"),
("8", "Prone Positioning – Evidence & Practice"),
("9", "Adjunct Therapies (NO, Steroids, Paralysis)"),
("10", "ECMO in Severe ARDS"),
("11", "Emerging Concepts: Phenotyping & Precision Medicine"),
("12", "Summary & Key Takeaways"),
]
cols = [topics[:6], topics[6:]]
for ci, col in enumerate(cols):
x_num = 0.4 + ci * 6.5
x_txt = 1.1 + ci * 6.5
for ri, (num, txt) in enumerate(col):
y = 1.2 + ri * 0.88
add_rect(s, x_num, y, 0.55, 0.62, fill=TEAL)
add_textbox(s, num, x_num, y, 0.55, 0.62,
font_size=16, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, txt, x_txt, y + 0.04, 5.3, 0.58,
font_size=14, color=DARK_GRAY,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════════════════
# SLIDE 3 – HISTORICAL PERSPECTIVE
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Historical Perspective", "From 'Wet Lung' to ARDS – A Conceptual Journey")
timeline = [
("1967", "Ashbaugh & Petty", "First description of ARDS in 12 patients – 'Adult Respiratory Distress Syndrome'", TEAL),
("1971", "Petty & Ashbaugh", "Term 'ARDS' formally coined; characterized by hypoxemia, stiff lungs, CXR infiltrates", NAVY),
("1988", "Murray Score", "Lung Injury Score introduced – chest X-ray, PaO₂/FiO₂, PEEP, Compliance", TEAL),
("1994", "AECC Definition", "American-European Consensus Conference – ALI (P:F ≤300) vs ARDS (P:F ≤200)", NAVY),
("2000", "ARDSNet ARMA", "Low tidal volume 6 mL/kg PBW reduces mortality 22%→31% vs traditional volumes", TEAL),
("2012", "Berlin Definition", "Replaced AECC; 3-tier severity; removed ALI term; mandatory PEEP ≥5 cmH₂O", NAVY),
("2021+", "Phenotyping Era", "Hyper- vs hypo-inflammatory phenotypes; precision/personalized ventilation strategies", ORANGE),
]
for i, (year, who, desc, clr) in enumerate(timeline):
y = 1.15 + i * 0.79
add_rect(s, 0.3, y, 1.35, 0.65, fill=clr)
add_textbox(s, year, 0.3, y, 1.35, 0.65,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 1.65, y + 0.17, 0.02, 0.3, fill=clr)
add_textbox(s, f"{who}: {desc}", 1.75, y + 0.01, 11.2, 0.63,
font_size=13, color=DARK_GRAY,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════════════════
# SLIDE 4 – BERLIN DEFINITION
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Berlin Definition of ARDS (2012)",
"JAMA 2012;307(23):2526–2533 | Standard diagnostic framework")
# Left box – criteria
add_rect(s, 0.3, 1.1, 6.0, 5.8, fill=WHITE, line_color=TEAL, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 6.0, 0.55, fill=TEAL)
add_textbox(s, "DIAGNOSTIC CRITERIA", 0.3, 1.1, 6.0, 0.55,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
criteria = [
"⏱ TIMING",
" Onset within 1 week of a known clinical insult\n or new/worsening respiratory symptoms",
"📷 IMAGING",
" Bilateral opacities on CXR/CT – not fully\n explained by collapse or nodules",
"💧 ORIGIN OF EDEMA",
" Respiratory failure not fully explained by\n cardiac failure or fluid overload",
"🩸 OXYGENATION (on PEEP ≥ 5 cmH₂O)",
" Mild: PaO₂/FiO₂ 201–300 mmHg",
" Moderate: PaO₂/FiO₂ 101–200 mmHg",
" Severe: PaO₂/FiO₂ ≤ 100 mmHg",
]
for i, line in enumerate(criteria):
bold = line.startswith("⏱") or line.startswith("📷") or line.startswith("💧") or line.startswith("🩸")
clr = NAVY if bold else DARK_GRAY
add_textbox(s, line, 0.45, 1.75 + i * 0.51, 5.7, 0.5,
font_size=12, bold=bold, color=clr, align=PP_ALIGN.LEFT)
# Right – severity boxes
add_rect(s, 6.8, 1.1, 6.2, 5.8, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.8, 1.1, 6.2, 0.55, fill=NAVY)
add_textbox(s, "SEVERITY CLASSIFICATION & IMPLICATIONS", 6.8, 1.1, 6.2, 0.55,
font_size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
sev_data = [
("MILD", "P:F 201–300 mmHg", "Mortality ~27%", "Consider HFNC / NIV\nOptimise PEEP", RGBColor(0xFF, 0xE0, 0x80)),
("MODERATE", "P:F 101–200 mmHg", "Mortality ~32%", "Lung-protective MV\nProne if P:F <150", RGBColor(0xFF, 0xA5, 0x00)),
("SEVERE", "P:F ≤ 100 mmHg", "Mortality ~45%", "Prone ≥16 h/day\nNMB, consider ECMO", RED),
]
for i, (sev, pf, mort, rx, clr) in enumerate(sev_data):
y = 1.8 + i * 1.65
add_rect(s, 6.95, y, 5.85, 1.5, fill=RGBColor(0xF8, 0xF8, 0xF8), line_color=clr, line_width=Pt(2))
add_rect(s, 6.95, y, 1.3, 1.5, fill=clr)
add_textbox(s, sev, 6.95, y, 1.3, 1.5,
font_size=14, bold=True, color=WHITE if sev=="SEVERE" else DARK_GRAY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, pf, 8.35, y + 0.05, 4.3, 0.45,
font_size=13, bold=True, color=DARK_GRAY)
add_textbox(s, mort, 8.35, y + 0.5, 4.3, 0.35,
font_size=12, color=NAVY)
add_textbox(s, rx, 8.35, y + 0.85, 4.3, 0.6,
font_size=11, color=DARK_GRAY, italic=True)
# ════════════════════════════════════════════════════════════════════
# SLIDE 5 – EPIDEMIOLOGY & ETIOLOGY
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Epidemiology & Etiology", accent=NAVY)
# Left – epidemiology
add_rect(s, 0.3, 1.1, 5.9, 5.8, fill=WHITE, line_color=TEAL, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 5.9, 0.5, fill=TEAL)
add_textbox(s, "EPIDEMIOLOGY", 0.3, 1.1, 5.9, 0.5,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
epi_points = [
"• Incidence: 10–86 cases / 100,000 person-years\n (varies by definition used)",
"• ~3 million new cases annually worldwide",
"• ICU prevalence: ~10% of ICU admissions;\n 23% of mechanically ventilated patients",
"• Mortality: ~40% overall\n Mild ~27%, Moderate ~32%, Severe ~45%",
"• Median ICU stay: 8–12 days",
"• Survivors: 25–30% have long-term\n cognitive & functional impairment (PICS)",
"• Male sex, increasing age, alcohol use,\n low albumin – risk factors",
]
for i, pt in enumerate(epi_points):
add_textbox(s, pt, 0.5, 1.7 + i * 0.73, 5.5, 0.68,
font_size=12, color=DARK_GRAY)
# Right – etiology
add_rect(s, 6.6, 1.1, 6.5, 5.8, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.6, 1.1, 6.5, 0.5, fill=NAVY)
add_textbox(s, "COMMON CAUSES", 6.6, 1.1, 6.5, 0.5,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Direct vs indirect
add_rect(s, 6.75, 1.7, 2.9, 0.4, fill=TEAL)
add_textbox(s, "DIRECT (PULMONARY)", 6.75, 1.7, 2.9, 0.4,
font_size=12, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
direct = ["• Pneumonia (most common ~40%)",
"• Aspiration of gastric contents",
"• Pulmonary contusion/trauma",
"• Inhalation injury / smoke",
"• Near-drowning",
"• Reperfusion injury"]
for i, p in enumerate(direct):
add_textbox(s, p, 6.8, 2.18 + i * 0.45, 2.85, 0.42, font_size=12, color=DARK_GRAY)
add_rect(s, 9.85, 1.7, 3.1, 0.4, fill=ORANGE)
add_textbox(s, "INDIRECT (EXTRAPULMONARY)", 9.85, 1.7, 3.1, 0.4,
font_size=12, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
indirect = ["• Sepsis / Septic shock (most common ~40%)",
"• Severe trauma / Burns",
"• Pancreatitis",
"• Blood transfusion (TRALI)",
"• DIC / major surgery",
"• Drug overdose"]
for i, p in enumerate(indirect):
add_textbox(s, p, 9.9, 2.18 + i * 0.45, 3.05, 0.42, font_size=12, color=DARK_GRAY)
add_textbox(s, "⚠ Pneumonia + Sepsis account for ~80% of all ARDS cases", 6.75, 5.0, 6.1, 0.5,
font_size=13, bold=True, color=RED, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════
# SLIDE 6 – PATHOPHYSIOLOGY
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Pathophysiology – Phases of ARDS",
"Diffuse Alveolar Damage (DAD) – the histologic hallmark")
phases = [
("EXUDATIVE\n(Days 1–7)", TEAL,
"• Disruption of alveolar-capillary membrane\n• Protein-rich edema floods alveoli\n• Hyaline membrane formation\n• Neutrophil infiltration; cytokine storm\n• Loss of surfactant → atelectasis\n• Severe V/Q mismatch → refractory hypoxemia",
"Volutrauma\nBarotrauma\nAtelectrauma"),
("PROLIFERATIVE\n(Days 7–21)", NAVY,
"• Type II pneumocyte proliferation\n• Resolution of alveolar edema\n• Shift to lymphocyte-predominant infiltrates\n• Alveolar exudate organization\n• New surfactant synthesis\n• Most patients begin to improve",
"Reduced\ncompliance\nIncreased dead\nspace"),
("FIBROTIC\n(>21 days)", RED,
"• Alveolar-duct & interstitial fibrosis\n• Emphysema-like bullae (barotrauma risk)\n• Pulmonary microvascular occlusion\n• Progressive pulmonary hypertension\n• High risk of pneumothorax\n• Persistent ventilator dependence",
"Pulmonary HTN\nPneumothorax\nVentilator\ndependence"),
]
for i, (title, clr, bullets, risks) in enumerate(phases):
x = 0.3 + i * 4.35
add_rect(s, x, 1.1, 4.1, 0.7, fill=clr)
add_textbox(s, title, x, 1.1, 4.1, 0.7,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, x, 1.8, 4.1, 3.6, fill=WHITE, line_color=clr, line_width=Pt(2))
add_textbox(s, bullets, x + 0.1, 1.85, 3.9, 3.5,
font_size=12, color=DARK_GRAY)
add_rect(s, x, 5.45, 4.1, 1.0, fill=RGBColor(0xF0, 0xF0, 0xF0), line_color=clr, line_width=Pt(1))
add_textbox(s, "Key concerns:", x + 0.1, 5.45, 3.9, 0.3,
font_size=11, bold=True, color=clr)
add_textbox(s, risks, x + 0.1, 5.78, 3.9, 0.65,
font_size=11, italic=True, color=DARK_GRAY)
# ════════════════════════════════════════════════════════════════════
# SLIDE 7 – CLINICAL FEATURES & DIAGNOSIS
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Clinical Features & Diagnosis", accent=TEAL)
# Left column
add_rect(s, 0.3, 1.1, 5.9, 5.8, fill=WHITE, line_color=TEAL, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 5.9, 0.5, fill=TEAL)
add_textbox(s, "CLINICAL FEATURES", 0.3, 1.1, 5.9, 0.5,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
feat_items = [
("Symptoms:", "• Acute onset dyspnoea (hours to days)\n• Severe hypoxaemia – refractory to oxygen\n• Tachypnoea, tachycardia, cyanosis\n• Signs of underlying cause (fever, sepsis)"),
("Signs:", "• Diffuse bilateral crackles on auscultation\n• Accessory muscle use / paradoxical breathing\n• No evidence of LVF (dry rale pattern)"),
("ABG:", "• PaO₂/FiO₂ <300 mmHg\n• Respiratory alkalosis early → acidosis late\n• Increased A-a gradient"),
("CXR/CT:", "• Bilateral alveolar opacities\n• CT: dense consolidation > dependent\n• Atelectasis > consolidation > GGO"),
]
y = 1.7
for label, content in feat_items:
add_textbox(s, label, 0.45, y, 5.5, 0.3, font_size=12, bold=True, color=NAVY)
add_textbox(s, content, 0.45, y + 0.28, 5.5, 0.9, font_size=12, color=DARK_GRAY)
y += 1.28
# Right column – differential
add_rect(s, 6.6, 1.1, 6.5, 5.8, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.6, 1.1, 6.5, 0.5, fill=NAVY)
add_textbox(s, "DIFFERENTIAL DIAGNOSIS", 6.6, 1.1, 6.5, 0.5,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
diff_items = [
("Cardiogenic Pulmonary Oedema",
"• PCWP >18 mmHg (ARDS <18)\n• BNP elevated, S3 gallop, JVD\n• Responds to diuretics"),
("Cryptogenic Organising Pneumonia",
"• Subacute, patchy consolidation\n• Responds to steroids"),
("DAH / Alveolar Haemorrhage",
"• Haemoptysis, anaemia\n• BAL: haemosiderin-laden macrophages"),
("Acute Eosinophilic Pneumonia",
"• BAL >25% eosinophils\n• Dramatic steroid response"),
("TRALI",
"• Within 6h of transfusion\n• Anti-HLA or anti-neutrophil antibodies"),
]
y = 1.7
for title, body in diff_items:
add_textbox(s, title, 6.75, y, 6.1, 0.3, font_size=12, bold=True, color=TEAL)
add_textbox(s, body, 6.75, y + 0.28, 6.1, 0.7, font_size=12, color=DARK_GRAY)
y += 1.08
# ════════════════════════════════════════════════════════════════════
# SLIDE 8 – LUNG PROTECTIVE VENTILATION
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Lung-Protective Ventilation – ARDSNet Protocol",
"ARMA Trial (N Engl J Med 2000) – The landmark study defining modern ARDS management")
# Key trial box
add_rect(s, 0.3, 1.1, 12.7, 1.1, fill=NAVY)
add_textbox(s,
"ARDSNet ARMA Trial: TV 6 mL/kg PBW vs 12 mL/kg PBW — Mortality reduced from 39.8% → 31.0% (p=0.007)",
0.35, 1.15, 12.6, 1.0,
font_size=15, bold=True, color=YELLOW, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
params = [
("Tidal Volume", "6 mL/kg Predicted Body Weight\n(↓ to 4 mL/kg if Pplat >30 cmH₂O)"),
("Plateau Pressure", "Target ≤ 30 cmH₂O\n(Minimise volutrauma/barotrauma)"),
("Driving Pressure", "ΔP = Pplat – PEEP\nTarget < 14–15 cmH₂O (mortality predictor)"),
("PEEP", "Minimum PEEP ≥ 5 cmH₂O\nTitrate by PEEP–FiO₂ table (ARDSNet)"),
("Respiratory Rate", "6–35 bpm to maintain pH 7.30–7.45\n(Permissive hypercapnia acceptable pH ≥7.20)"),
("FiO₂ / SpO₂ goals", "SpO₂ 88–95% (PaO₂ 55–80 mmHg)\nMinimise oxygen toxicity"),
]
for i, (param, val) in enumerate(params):
col = i % 2
row = i // 2
x = 0.3 + col * 6.5
y = 2.3 + row * 1.55
add_rect(s, x, y, 6.2, 1.4, fill=WHITE, line_color=TEAL if col==0 else NAVY, line_width=Pt(2))
add_rect(s, x, y, 2.2, 1.4, fill=TEAL if col==0 else NAVY)
add_textbox(s, param, x, y, 2.2, 1.4,
font_size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, val, x + 2.3, y + 0.1, 3.75, 1.2,
font_size=12, color=DARK_GRAY, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s,
"💡 Predicted Body Weight (Males): 50 + 2.3 × (height in inches – 60) | (Females): 45.5 + 2.3 × (height in inches – 60)",
0.3, 6.85, 12.7, 0.3,
font_size=11, italic=True, color=NAVY, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════
# SLIDE 9 – PEEP STRATEGIES
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "PEEP Strategies & Lung Recruitment",
"Optimising end-expiratory pressure – no 'one-size-fits-all'", accent=NAVY)
# Three strategy boxes
strat = [
("ARDSNet\nPEEP-FiO₂ Table", TEAL,
"Paired PEEP:FiO₂ table from ARMA trial\nSimple protocol, widely implemented\nFiO₂ 0.5 → PEEP 8–10 cmH₂O\nFiO₂ 0.9–1.0 → PEEP 14–24 cmH₂O\nMost commonly used in clinical practice"),
("Esophageal\nManometry", NAVY,
"PEEP titrated to maintain +ve transpulmonary pressure\nPEEP = pleural pressure surrogate\nEPVent-2 Trial (2019):\nNo difference in mortality vs PEEP-FiO₂ table\nUseful in obese patients & stiff chest wall"),
("EIT-Guided\nPEEP Titration", ORANGE,
"Electrical Impedance Tomography\nRealtime regional ventilation monitoring\n2024 Systematic Review (Songsangvorn et al.):\nImproved oxygenation vs standard care\nRecruitment manoeuvre + decremental PEEP\nEmergent tool for individualisation"),
]
for i, (title, clr, content) in enumerate(strat):
x = 0.3 + i * 4.35
add_rect(s, x, 1.1, 4.1, 0.8, fill=clr)
add_textbox(s, title, x, 1.1, 4.1, 0.8,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, x, 1.9, 4.1, 4.0, fill=WHITE, line_color=clr, line_width=Pt(2))
add_textbox(s, content, x + 0.1, 1.95, 3.9, 3.9,
font_size=12, color=DARK_GRAY)
# PEEP-FiO₂ mini-table
add_rect(s, 0.3, 6.0, 12.7, 0.95, fill=WHITE, line_color=TEAL, line_width=Pt(1))
add_textbox(s, "ARDSNet Lower PEEP / Higher FiO₂ Table:", 0.4, 5.97, 4.0, 0.4,
font_size=12, bold=True, color=NAVY)
table_text = "FiO₂: 0.3 | 0.4 | 0.4 | 0.5 | 0.5 | 0.6 | 0.7 | 0.7 | 0.7 | 0.8 | 0.9 | 0.9 | 0.9 | 1.0\nPEEP: 5 | 5 | 8 | 8 | 10 | 10 | 10 | 12 | 14 | 14 | 14 | 16 | 18 | 18-24"
add_textbox(s, table_text, 0.4, 6.38, 12.5, 0.55,
font_size=10.5, color=DARK_GRAY, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════
# SLIDE 10 – PRONE POSITIONING
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Prone Positioning",
"A life-saving intervention in severe ARDS (P:F < 150 mmHg)")
# Mechanism box
add_rect(s, 0.3, 1.1, 6.0, 2.2, fill=WHITE, line_color=TEAL, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 6.0, 0.45, fill=TEAL)
add_textbox(s, "MECHANISM OF BENEFIT", 0.3, 1.1, 6.0, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
mech = ("• Redistribution of atelectasis: dependent → non-dependent\n"
"• More homogeneous stress/strain distribution across lung\n"
"• Improved V/Q matching – reduces shunt fraction\n"
"• Improved secretion drainage\n"
"• Reduction in ventilator-induced lung injury (VILI)")
add_textbox(s, mech, 0.4, 1.6, 5.8, 1.65, font_size=12, color=DARK_GRAY)
# Evidence box
add_rect(s, 6.6, 1.1, 6.5, 2.2, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.6, 1.1, 6.5, 0.45, fill=NAVY)
add_textbox(s, "KEY EVIDENCE", 6.6, 1.1, 6.5, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
evid = ("• PROSEVA Trial (Guérin, NEJM 2013):\n 28-day mortality: 16% vs 32.8% (p<0.001)\n P:F <150 mmHg; proned ≥16 h/day\n"
"• Extended Prone (2026 Meta-analysis, Wawrzeniak):\n Extended duration (>16h) further reduces mortality\n"
"• ECMO + Prone (2025 Meta-analysis, Chen et al.):\n Safe; improves oxygenation in VV-ECMO patients")
add_textbox(s, evid, 6.7, 1.6, 6.3, 1.65, font_size=11.5, color=DARK_GRAY)
# Protocol
add_rect(s, 0.3, 3.4, 12.7, 0.45, fill=NAVY)
add_textbox(s, "PRACTICAL PROTOCOL", 0.3, 3.4, 12.7, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
prot_cols = [
("INDICATION", "• P:F < 150 mmHg on MV\n• ≥ 12 h optimised supine ventilation\n• Severe ARDS by Berlin criteria"),
("PRE-PRONE CHECKLIST", "• NMB (cisatracurium 15 mcg/kg/h)\n• Secure ETT, lines & catheters\n• Elevate head 30° (Trendelenburg)\n• Eye protection, pressure care"),
("DURATION & MONITORING", "• Minimum 16 consecutive h/session\n• SpO₂, SpO₂:FiO₂ ratio every hour\n• ABG at 1h, 4h, and end of session\n• Reassess P:F after resupination"),
("CONTRAINDICATIONS", "• Spinal instability / unstable fractures\n• Open abdomen / sternal wound\n• Massive haemoptysis (relative)\n• Facial trauma (relative)"),
]
for i, (hdr, body) in enumerate(prot_cols):
x = 0.3 + i * 3.25
add_rect(s, x, 3.85, 3.15, 3.1, fill=WHITE, line_color=TEAL, line_width=Pt(1))
add_textbox(s, hdr, x + 0.1, 3.88, 2.95, 0.35, font_size=12, bold=True, color=TEAL)
add_textbox(s, body, x + 0.1, 4.25, 2.95, 2.65, font_size=11, color=DARK_GRAY)
# ════════════════════════════════════════════════════════════════════
# SLIDE 11 – ADJUNCT THERAPIES
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Adjunct Therapies in ARDS", accent=TEAL)
adjuncts = [
("NEUROMUSCULAR\nBLOCKADE", TEAL,
"Mechanism: ↓O₂ consumption, ↑ synchrony,\nfacilitate prone positioning\n\n"
"ACURASYS Trial (2010):\nCisatracurium → ↓90-day mortality in P:F <120\n\n"
"ROSE Trial (2019):\nNo mortality benefit vs light sedation (P:F <150)\n\n"
"Current practice: Use to facilitate prone positioning;\nroutine use NOT recommended",
"ROSE & ACURASYS\ntrials"),
("CORTICOSTEROIDS", NAVY,
"Mechanism: Anti-inflammatory; reduce fibroproliferation\n\n"
"Early use (≤14 days):\nDexamethasone 20 mg/day → 10 mg/day\n(Villar DEXA-ARDS trial 2020: ↓ 60d mortality)\n\n"
"Late use (>14 days): NOT beneficial – possibly harmful\n\n"
"COVID-19 ARDS: Dexamethasone 6 mg/day × 10 days\n(RECOVERY Trial) – 28-day mortality ↓ significantly",
"2026 Meta-analysis\n(Soumare et al.)\nAnn Intern Med:\n↓ Mortality in\npneumonia-ARDS"),
("INHALED VASODILATORS\n(iNO / Prostacyclins)", ORANGE,
"Mechanism: Selective pulmonary vasodilation\nin ventilated alveoli → improves V/Q\n\n"
"Inhaled NO (iNO):\n• Improves oxygenation transiently\n• NO mortality benefit\n• ↑ Risk of renal dysfunction\n• Limited to: severe ARDS + pulmonary HTN\n\n"
"Inhaled prostacyclins:\n• Similar effect to iNO\n• No RCT mortality benefit",
"Rescue use only;\nNO routine use"),
("CONSERVATIVE FLUID\nMANAGEMENT", TEAL,
"Mechanism: Reduces lung oedema, shorter MV time\n\n"
"FACTT Trial (ARDSNet, 2006):\nConservative strategy (CVP <4, PCWP <8)\n→ ↑Ventilator-free days by 2.5 days\nNo mortality difference\n\n"
"Current recommendation:\nFluid-liberal in resuscitation phase\nConservative once haemodynamically stable",
"FACTT Trial,\nARDSNet 2006"),
]
for i, (title, clr, content, ref) in enumerate(adjuncts):
col = i % 2
row = i // 2
x = 0.3 + col * 6.5
y = 1.1 + row * 2.95
add_rect(s, x, y, 6.2, 2.85, fill=WHITE, line_color=clr, line_width=Pt(2))
add_rect(s, x, y, 6.2, 0.55, fill=clr)
add_textbox(s, title, x, y, 4.5, 0.55,
font_size=13, bold=True, color=WHITE,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, "Ref: " + ref, x + 4.5, y, 1.65, 0.55,
font_size=9, color=WHITE, italic=True,
align=PP_ALIGN.RIGHT, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, content, x + 0.1, y + 0.6, 5.9, 2.2,
font_size=11, color=DARK_GRAY)
# ════════════════════════════════════════════════════════════════════
# SLIDE 12 – ECMO
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "ECMO in Severe ARDS",
"Extracorporeal Membrane Oxygenation – Rescue Strategy when All Else Fails", accent=RED)
# Indications box
add_rect(s, 0.3, 1.1, 5.9, 2.9, fill=WHITE, line_color=RED, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 5.9, 0.45, fill=RED)
add_textbox(s, "VV-ECMO INDICATIONS", 0.3, 1.1, 5.9, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
ind_text = ("EOLIA Trial Criteria (2018):\n"
"• P:F <80 mmHg for >6h on FiO₂ ≥0.80 + PEEP ≥10\n"
"• P:F <80 for >6h on FiO₂ >90% + PEEP ≥15\n"
"• pH <7.25 + PaCO₂ >60 for >6h with RR >35\n\n"
"Murray Score ≥3.0 (severe respiratory failure)\n"
"Failed all conventional & advanced strategies:\n"
" – Prone positioning, iNO, high PEEP, HFOV")
add_textbox(s, ind_text, 0.4, 1.6, 5.7, 2.35, font_size=11.5, color=DARK_GRAY)
# Evidence box
add_rect(s, 6.6, 1.1, 6.5, 2.9, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.6, 1.1, 6.5, 0.45, fill=NAVY)
add_textbox(s, "KEY TRIALS", 6.6, 1.1, 6.5, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
trial_text = ("CESAR Trial (Peek, Lancet 2009):\n"
"Referral to ECMO centre → improved survival\n"
"63% vs 47% survival to 6 months (p=0.03)\n\n"
"EOLIA Trial (Combes, NEJM 2018):\n"
"60-day mortality: 35% ECMO vs 46% control (p=0.07)\n"
"Network meta-analysis (Intensive Care Med 2024):\n"
"VV-ECMO superior to prone or supine MV alone\n"
"for severe ARDS (PMID: 38842731)")
add_textbox(s, trial_text, 6.7, 1.6, 6.3, 2.35, font_size=11, color=DARK_GRAY)
# Bottom – practical points
add_rect(s, 0.3, 4.1, 12.7, 0.45, fill=NAVY)
add_textbox(s, "PRACTICAL CONSIDERATIONS", 0.3, 4.1, 12.7, 0.45,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
ecmo_cols = [
("Circuit Mode", "Veno-Venous (VV-ECMO)\nfor pure respiratory failure\n(VA-ECMO if cardiac failure)"),
("Ultra-Protective\nVentilation", "TV 3–4 mL/kg PBW\nPplat <25 cmH₂O\nRR 10–15, PEEP 8–10\n'Lung rest' on ECMO"),
("Anticoagulation", "UFH infusion\nTarget ACT 180–220 s or\naPTT 60–80 s\nBalance bleeding vs clotting"),
("Weaning", "Wean FiO₂ sweep gas first\nThen blood flow\nSBO test: clamp sweep gas\nConsider decannulation if\nSpO₂ maintained ≥2h"),
]
for i, (hdr, body) in enumerate(ecmo_cols):
x = 0.3 + i * 3.25
add_rect(s, x, 4.6, 3.15, 2.35, fill=WHITE, line_color=RED, line_width=Pt(1))
add_textbox(s, hdr, x + 0.1, 4.63, 2.95, 0.4, font_size=12, bold=True, color=RED)
add_textbox(s, body, x + 0.1, 5.08, 2.95, 1.85, font_size=11, color=DARK_GRAY)
# ════════════════════════════════════════════════════════════════════
# SLIDE 13 – PHENOTYPING & PRECISION MEDICINE
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "Emerging Concepts: Phenotyping & Precision Medicine",
"Moving beyond 'one-size-fits-all' – individualised ARDS management", accent=TEAL)
# Phenotype boxes
add_rect(s, 0.3, 1.1, 6.0, 4.5, fill=WHITE, line_color=TEAL, line_width=Pt(2))
add_rect(s, 0.3, 1.1, 6.0, 0.5, fill=TEAL)
add_textbox(s, "HYPERINFLAMMATORY vs HYPOINFLAMMATORY", 0.3, 1.1, 6.0, 0.5,
font_size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
phen_table = [
("Feature", "Phenotype 1 (Hypo)", "Phenotype 2 (Hyper)"),
("Frequency", "~70%", "~30%"),
("Mortality", "Lower ~25%", "Higher ~45%"),
("IL-6, IL-8", "Low", "High"),
("Protein C", "Normal", "Low"),
("sRAGE", "Low", "High"),
("Vasopressor use", "Less", "More"),
("Response to\nhigh PEEP", "No benefit / harm", "Beneficial"),
("Response to\nsimvastatin", "Beneficial", "No benefit"),
]
col_widths = [2.0, 1.8, 1.8]
col_starts = [0.4, 2.5, 4.4]
row_colors = [TEAL, RGBColor(0xE8, 0xF5, 0xFB), WHITE]
for ri, row in enumerate(phen_table):
y = 1.7 + ri * 0.44
for ci, cell in enumerate(row):
bg = TEAL if ri == 0 else (RGBColor(0xE8, 0xF5, 0xFB) if ci == 0 else WHITE)
txt_clr = WHITE if ri == 0 or ci == 0 else DARK_GRAY
add_rect(s, col_starts[ci], y, col_widths[ci] - 0.05, 0.42, fill=bg,
line_color=RGBColor(0xCC, 0xCC, 0xCC), line_width=Pt(0.5))
add_textbox(s, cell, col_starts[ci] + 0.05, y + 0.02, col_widths[ci] - 0.15, 0.38,
font_size=10.5, bold=(ri == 0 or ci == 0),
color=txt_clr, v_anchor=MSO_ANCHOR.MIDDLE)
# Right – emerging therapies
add_rect(s, 6.6, 1.1, 6.5, 4.5, fill=WHITE, line_color=NAVY, line_width=Pt(2))
add_rect(s, 6.6, 1.1, 6.5, 0.5, fill=NAVY)
add_textbox(s, "EMERGING & INVESTIGATIONAL STRATEGIES", 6.6, 1.1, 6.5, 0.5,
font_size=12, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
emerging = [
("Awake Prone Positioning", TEAL,
"Spontaneously breathing patients on HFNC\nMeta-analyses show ↓ intubation risk in COVID-ARDS\nNow explored in non-COVID ARDS"),
("EIT-Guided Ventilation", NAVY,
"Realtime regional lung ventilation monitoring\nIndividualise PEEP & TV\nPromising in 2024 systematic review"),
("Mesenchymal Stem Cells", TEAL,
"Phase II RCTs underway\nAnti-inflammatory, regenerative potential\nNot yet standard of care"),
("Biomarker-Guided Therapy", NAVY,
"Targeted Rx based on plasma phenotype\n(Latent class analysis – Calfee et al.)\nHigh PEEP for hyperinflammatory phenotype\nStatins for hypoinflammatory phenotype"),
("Extravascular Lung Water\n(EVLW) Monitoring", TEAL,
"Transpulmonary thermodilution (PiCCO)\nGuide fluid management\nPVPI >3 = alveolar flooding"),
]
y = 1.7
for title, clr, body in emerging:
add_textbox(s, "▶ " + title, 6.75, y, 6.1, 0.3,
font_size=12, bold=True, color=clr)
add_textbox(s, body, 6.75, y + 0.3, 6.1, 0.55,
font_size=11, color=DARK_GRAY)
y += 0.9
# Bottom – future
add_rect(s, 0.3, 5.7, 12.7, 0.55, fill=RGBColor(0xE8, 0xF5, 0xFB), line_color=TEAL, line_width=Pt(1))
add_textbox(s,
"🔬 The future of ARDS management lies in sub-phenotyping patients to match interventions (PEEP, steroids, statins) to individual biology rather than applying uniform protocols.",
0.4, 5.72, 12.5, 0.5,
font_size=12, italic=True, color=NAVY, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════
# SLIDE 14 – COVID-19 ARDS (Bonus)
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=LIGHT_GRAY)
add_slide_header(s, "COVID-19 Associated ARDS – Lessons & Legacy",
"The pandemic that reshaped critical care practice", accent=NAVY)
add_rect(s, 0.3, 1.1, 12.7, 0.7, fill=RGBColor(0xE0, 0xF0, 0xFA))
add_textbox(s,
"COVID-ARDS shares features of classic ARDS but exhibits distinct phenotypes:\n"
"Type L (Low elastance, Low PEEP responsiveness) and Type H (High elastance, High PEEP responsiveness, recruitable)",
0.4, 1.12, 12.5, 0.65,
font_size=12, color=NAVY, italic=True)
cols_covid = [
("DIFFERENCES from\nClassic ARDS", RED,
"• Disproportionate hypoxaemia vs\n preserved compliance (Type L)\n• Severe endotheliitis / microthrombi\n• High D-dimer, hypercoagulability\n• Prone to pulmonary emboli\n• Prolonged fibrotic phase\n• Cytokine storm (IL-6, IL-1β)\n• Higher ECMO utilisation"),
("MANAGEMENT\nPEARLS", TEAL,
"• Awake prone positioning (HFNC)\n ↓ Intubation in mild–mod COVID-ARDS\n• Dexamethasone 6 mg × 10 days\n (RECOVERY Trial – mortality ↓ ~3%)\n• Anticoagulation with LMWH\n• Tocilizumab / baricitinib in cytokine storm\n• CPAP/NIV acceptable in Type L\n• Early intubation in Type H"),
("LEGACY TO CRITICAL\nCARE PRACTICE", NAVY,
"• Universal adoption of awake proning\n• Accelerated ECMO programme expansion\n• Phenotype-based ventilation strategies\n• Widespread HFNC use before intubation\n• Multidisciplinary ARDS teams\n• Remote ICU / telemedicine ICU\n• Revalidation of steroid use in ARDS\n• Enhanced post-ICU rehabilitation"),
]
for i, (title, clr, body) in enumerate(cols_covid):
x = 0.3 + i * 4.35
add_rect(s, x, 1.95, 4.1, 5.0, fill=WHITE, line_color=clr, line_width=Pt(2))
add_rect(s, x, 1.95, 4.1, 0.6, fill=clr)
add_textbox(s, title, x, 1.95, 4.1, 0.6,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, body, x + 0.1, 2.6, 3.9, 4.3,
font_size=12, color=DARK_GRAY)
# ════════════════════════════════════════════════════════════════════
# SLIDE 15 – SUMMARY & KEY TAKEAWAYS
# ════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill=NAVY)
add_rect(s, 0, 0, 13.333, 1.05, fill=TEAL)
add_textbox(s, "Summary & Key Takeaways", 0.3, 0.08, 12.5, 0.7,
font_size=26, bold=True, color=WHITE,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, "ARDS: Evolving Strategies | MD Medicine Seminar 2026", 0.3, 0.73, 12.5, 0.33,
font_size=13, color=WHITE, align=PP_ALIGN.LEFT, italic=True)
takeaways = [
("1", "Berlin 2012 is the current gold standard – 3-tier severity (Mild/Moderate/Severe) guides management intensity"),
("2", "Lung-protective ventilation (6 mL/kg PBW, Pplat ≤30, ΔP <15) is the single most evidence-based intervention – ARDSNet ARMA trial"),
("3", "Prone positioning ≥16 h/day is the most powerful intervention for P:F <150 – PROSEVA trial (NNT ~6)"),
("4", "PEEP titration remains controversial – no universal method; PEEP-FiO₂ table for simplicity, phenotype-guided for precision"),
("5", "ECMO is a rescue therapy – VV-ECMO for pure respiratory failure when P:F <80 despite maximal conventional therapy"),
("6", "Steroids: Dexamethasone early (≤14 days) may reduce mortality; late use is harmful; COVID-ARDS – RECOVERY protocol"),
("7", "ARDS phenotyping (hyper vs hypo-inflammatory) is the frontier – same P:F, different biology, different optimal treatment"),
("8", "General ICU care (early enteral nutrition, VTE prophylaxis, sedation minimisation, infection control) saves as many lives as specific therapies"),
]
for i, (num, txt) in enumerate(takeaways):
col = i % 2
row = i // 2
x = 0.3 + col * 6.5
y = 1.15 + row * 1.45
clr = TEAL if col == 0 else YELLOW
add_rect(s, x, y, 0.55, 1.25, fill=clr)
add_textbox(s, num, x, y, 0.55, 1.25,
font_size=20, bold=True, color=NAVY,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, txt, x + 0.65, y + 0.08, 5.65, 1.15,
font_size=12, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 7.1, 13.333, 0.4, fill=TEAL)
add_textbox(s, "Thank you | Questions & Discussion",
0.3, 7.1, 10, 0.4,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, "2026", 11.8, 7.1, 1.3, 0.4,
font_size=13, color=WHITE, align=PP_ALIGN.RIGHT,
v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════════════════
# SAVE
# ════════════════════════════════════════════════════════════════════
out_path = "/tmp/workspace/ards-ppt/ARDS_Evolving_Strategies_MD_Medicine.pptx"
buf = BytesIO()
prs.save(buf)
with open(out_path, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {out_path}")
print(f"Slides: {len(prs.slides)}")
cd /tmp/workspace/ards-ppt && python build_ards_ppt.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/ards-ppt/ARDS_Evolving_Strategies_MD_Medicine.pptx') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:60]) print(f'Slide {i}: {texts[:3]}') import os sz = os.path.getsize('/tmp/workspace/ards-ppt/ARDS_Evolving_Strategies_MD_Medicine.pptx') print(f'File size: {sz/1024:.1f} KB') "
ARDS Evolving Strategies MD Medicine
Presentation · PPTX
| # | Slide | Key Content |
|---|---|---|
| 1 | Title Slide | "ARDS: Evolving Strategies" – Navy/Teal/Gold design |
| 2 | Seminar Overview | 12-topic index with numbered tiles |
| 3 | Historical Timeline | Ashbaugh 1967 → Berlin 2012 → Phenotyping era |
| 4 | Berlin Definition 2012 | All 4 criteria + 3-tier severity with mortality & management implications |
| 5 | Epidemiology & Etiology | Incidence, ICU prevalence, mortality; Direct vs Indirect causes table |
| 6 | Pathophysiology | 3 phases: Exudative / Proliferative / Fibrotic with key pathology |
| 7 | Clinical Features & Diagnosis | Symptoms, ABG, CXR/CT findings + differential diagnosis |
| 8 | Lung-Protective Ventilation | ARDSNet ARMA data (31% vs 39.8%), TV/Pplat/ΔP/PEEP targets |
| 9 | PEEP Strategies | ARDSNet table, esophageal manometry (EPVent-2), EIT-guided (2024 evidence) |
| 10 | Prone Positioning | PROSEVA trial, 2026 meta-analysis (extended prone), protocol & contraindications |
| 11 | Adjunct Therapies | NMB (ACURASYS vs ROSE), Steroids (DEXA-ARDS + COVID), iNO, Fluids (FACTT) |
| 12 | ECMO | CESAR + EOLIA trials, VV-ECMO indications, circuit management, weaning |
| 13 | Phenotyping & Precision Medicine | Hyper vs Hypo-inflammatory phenotype table; emerging strategies |
| 14 | COVID-19 ARDS | Type L/H phenotypes, RECOVERY trial dexamethasone, legacy lessons |
| 15 | Summary & Key Takeaways | 8 core messages on dark navy background |
Lft picture of chronic hepatitis B
| Parameter | Finding | Key Points |
|---|---|---|
| ALT | Mildly-moderately elevated | Usually 100–1000 IU/L; tends to be higher than AST in early/active disease |
| AST | Mildly elevated | AST < ALT in early phases; once cirrhosis is established, AST exceeds ALT (AST:ALT ratio >1) |
| Pattern | Fluctuating | Not persistently elevated - may be normal between flares |
"Aminotransferase elevations tend to be modest for chronic hepatitis B but may fluctuate in the range of 100 to 1000 units. ALT tends to be more elevated than AST; however, once cirrhosis is established, AST tends to exceed ALT." - Harrison's 22e
| Parameter | Finding |
|---|---|
| Alkaline Phosphatase (ALP) | Normal or only marginally elevated (unlike cholestatic liver disease) |
| GGT (γ-GT) | Mildly elevated, especially in patients with cirrhosis |
| Bilirubin | Usually normal in mild/moderate disease; 3–10 mg/dL in severe cases |
| Parameter | Finding |
|---|---|
| Serum Albumin | Normal in early/compensated disease; hypoalbuminemia in severe or end-stage disease |
| Prothrombin Time (PT)/INR | Normal initially; prolonged in severe or end-stage cases |
| Globulins | Notably, hyperglobulinemia is ABSENT in CHB (distinguishes it from autoimmune hepatitis) |
| Phase | ALT/AST | HBsAg | HBeAg | HBV DNA |
|---|---|---|---|---|
| Immune Tolerant | Normal | + | +/− | High positive |
| Immune Active (HBeAg+) | Elevated (100-1000 IU/L) | + | + | >10⁶ IU/mL |
| Immune Control (Inactive carrier) | Normal | + | − | Low/negative |
| HBeAg-negative CHB | Elevated (fluctuating) | + | − | 2×10³–10⁶ IU/mL |
| Occult HBV | Normal | − | − | Very low/negative |
| Feature | Change |
|---|---|
| AST:ALT ratio | Reverses - AST > ALT |
| Bilirubin | Rising |
| Albumin | Falling |
| PT/INR | Prolonged |
| ALP/GGT | Moderately elevated |
| Platelets | Falling (hypersplenism) |
| ALT/AST | May paradoxically normalise ("burnt-out cirrhosis") |
EARLY/ACTIVE CHB: ALT > AST (modest ↑) | ALP normal | Bili normal | Albumin normal
SEVERE/CIRRHOTIC CHB: AST > ALT | ALP/GGT ↑ | Bili ↑ | Albumin ↓ | PT prolonged
INACTIVE CARRIER: ALL LFTs NORMAL (but HBsAg+, HBV DNA low)