Make a ppt for md anaesthesia resident “difficult airway management “ with reference to recent updated guidelines
difficult airway management guidelines 2022 2023 2024 ASA DAS updated algorithm
https://www.sciencedirect.com/science/article/pii/S000709122…
mkdir -p /tmp/workspace/difficult-airway-ppt && ls /tmp/workspace/
~/difficult-airway-ppt/build_ppt.py
#!/usr/bin/env python3
"""
Difficult Airway Management - MD Anaesthesia Resident PPT
References: DAS 2025, ASA 2022, Morgan & Mikhail 7e, Miller's Anesthesia 10e, Barash 9e
"""
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
# ──────────────────────────── COLOUR PALETTE ────────────────────────────
DARK_BLUE = RGBColor(0x0A, 0x29, 0x4A) # deep navy
MED_BLUE = RGBColor(0x1A, 0x5F, 0x9E) # medium blue
ACCENT_BLUE = RGBColor(0x2E, 0x9A, 0xD1) # sky blue
ACCENT_RED = RGBColor(0xC0, 0x39, 0x2B) # alert red
ACCENT_AMBER = RGBColor(0xE6, 0x7E, 0x22) # amber/warning
ACCENT_GREEN = RGBColor(0x1E, 0x8B, 0x4C) # green/success
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GRAY = RGBColor(0xF0, 0xF4, 0xF8)
TEXT_DARK = RGBColor(0x1A, 0x1A, 0x2E)
TEXT_MID = RGBColor(0x3A, 0x3A, 0x5C)
YELLOW_LIGHT = RGBColor(0xFF, 0xF9, 0xE0)
BOX_BLUE = RGBColor(0xD6, 0xEA, 0xF8)
BOX_RED = RGBColor(0xFD, 0xED, 0xEC)
BOX_GREEN = RGBColor(0xE9, 0xF7, 0xEF)
BOX_AMBER = RGBColor(0xFE, 0xF9, 0xE7)
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_color, alpha=None):
shape = slide.shapes.add_shape(
1, # MSO_SHAPE_TYPE.RECTANGLE
Inches(x), Inches(y), Inches(w), Inches(h)
)
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h, font_size=18, bold=False, color=TEXT_DARK,
align=PP_ALIGN.LEFT, italic=False, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
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 tb
def add_multiline(slide, lines, x, y, w, h, font_size=15, bold=False,
color=TEXT_DARK, bullet=True, line_spacing=1.15):
"""Add a textbox with multiple bullet lines."""
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(6)
tf.margin_right = Pt(4)
tf.margin_top = Pt(4)
tf.margin_bottom= Pt(4)
for i, line in enumerate(lines):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
if bullet and line.strip():
p.text = ("• " if not line.startswith("•") else "") + line
else:
p.text = line
p.space_after = Pt(4)
for run in p.runs:
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def slide_header(slide, title, subtitle=None, bg=DARK_BLUE, title_color=WHITE):
"""Standard slide header bar."""
add_rect(slide, 0, 0, 13.333, 1.1, bg)
add_text(slide, title, 0.3, 0.1, 12.7, 0.75,
font_size=28, bold=True, color=title_color, align=PP_ALIGN.LEFT)
if subtitle:
add_text(slide, subtitle, 0.3, 0.78, 12.7, 0.3,
font_size=13, bold=False, color=ACCENT_BLUE, align=PP_ALIGN.LEFT)
def footer(slide, ref_text):
add_rect(slide, 0, 7.15, 13.333, 0.35, DARK_BLUE)
add_text(slide, ref_text, 0.3, 7.17, 12.7, 0.28,
font_size=9, color=WHITE, align=PP_ALIGN.LEFT)
def info_box(slide, x, y, w, h, title, items, box_color=BOX_BLUE,
title_color=MED_BLUE, text_color=TEXT_DARK, font_size=13):
add_rect(slide, x, y, w, h, box_color)
# title bar inside box
add_rect(slide, x, y, w, 0.35, title_color)
add_text(slide, title, x+0.1, y+0.02, w-0.2, 0.32,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_multiline(slide, items, x+0.1, y+0.38, w-0.2, h-0.45,
font_size=font_size, color=text_color, bullet=True)
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ══════════════════════════════════════════════════════════════════════════
s1 = prs.slides.add_slide(blank)
add_rect(s1, 0, 0, 13.333, 7.5, DARK_BLUE)
add_rect(s1, 0, 2.6, 13.333, 0.06, ACCENT_BLUE)
add_rect(s1, 0, 4.85, 13.333, 0.06, ACCENT_BLUE)
add_text(s1, "DIFFICULT AIRWAY MANAGEMENT",
0.5, 1.2, 12.3, 1.2, font_size=40, bold=True,
color=WHITE, align=PP_ALIGN.CENTER)
add_text(s1, "A Comprehensive Guide for the MD Anaesthesia Resident",
0.5, 2.7, 12.3, 0.55, font_size=20, bold=False,
color=ACCENT_BLUE, align=PP_ALIGN.CENTER)
add_text(s1,
"Based on: ASA 2022 Practice Guidelines | DAS 2025 Guidelines | "
"Morgan & Mikhail 7e | Miller's Anesthesia 10e | Barash Clinical Anaesthesia 9e",
0.5, 4.95, 12.3, 0.6, font_size=13, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
add_text(s1, "Department of Anaesthesiology",
0.5, 5.65, 12.3, 0.4, font_size=15, bold=True,
color=WHITE, align=PP_ALIGN.CENTER)
add_text(s1, "August 2026",
0.5, 6.1, 12.3, 0.4, font_size=14, color=ACCENT_BLUE, align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 2 – OUTLINE
# ══════════════════════════════════════════════════════════════════════════
s2 = prs.slides.add_slide(blank)
add_rect(s2, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s2, "Lecture Outline")
topics = [
("1", "Definition & Incidence of Difficult Airway"),
("2", "Airway Assessment – Predictors & Scoring"),
("3", "The ASA 2022 Difficult Airway Algorithm"),
("4", "DAS 2025 Guidelines – Plan A / B / C / D"),
("5", "Preoxygenation & Apnoeic Oxygenation"),
("6", "Awake Tracheal Intubation (ATI)"),
("7", "Videolaryngoscopy & Supraglottic Airway Devices"),
("8", "Front-of-Neck Airway (FONA) – CICO Rescue"),
("9", "Rapid Sequence Induction & Modified RSI"),
("10", "Extubation of the Difficult Airway"),
("11", "Special Situations: Obstetrics / ICU / Paediatrics"),
("12", "Human Factors, Teamwork & Cognitive Aids"),
]
col_w = 5.8
for i, (num, topic) in enumerate(topics):
col = i % 2
row = i // 2
x = 0.5 + col * (col_w + 0.6)
y = 1.25 + row * 0.67
add_rect(s2, x, y, 0.45, 0.48, MED_BLUE)
add_text(s2, num, x, y+0.02, 0.45, 0.44,
font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s2, x+0.45, y, col_w-0.45, 0.48, WHITE)
add_text(s2, topic, x+0.55, y+0.05, col_w-0.6, 0.38,
font_size=14, color=TEXT_DARK, align=PP_ALIGN.LEFT)
footer(s2, "Difficult Airway Management | MD Anaesthesia Residency")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DEFINITIONS & INCIDENCE
# ══════════════════════════════════════════════════════════════════════════
s3 = prs.slides.add_slide(blank)
add_rect(s3, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s3, "Definition & Incidence",
"ASA 2022 | NAP4 Data | Morgan & Mikhail 7e")
# Definition box
add_rect(s3, 0.4, 1.25, 8.2, 2.8, BOX_BLUE)
add_rect(s3, 0.4, 1.25, 8.2, 0.4, MED_BLUE)
add_text(s3, "ASA 2022 Definition", 0.55, 1.27, 7.9, 0.35,
font_size=14, bold=True, color=WHITE)
definitions = [
"Difficult facemask ventilation: Unable to maintain SpO₂ >90% or unable to prevent/reverse signs of inadequate ventilation",
"Difficult laryngoscopy: Unable to visualize any part of the vocal cords (Cormack-Lehane grade 3/4)",
"Difficult tracheal intubation: Proper insertion of ETT requires >3 attempts or >10 minutes",
"Failed intubation: Placement of ETT fails after multiple intubation attempts",
"CICO (Can't Intubate, Can't Oxygenate): Life-threatening emergency — requires FONA",
]
add_multiline(s3, definitions, 0.55, 1.7, 8.0, 2.25, font_size=12.5, color=TEXT_DARK)
# Incidence panel
add_rect(s3, 8.8, 1.25, 4.15, 2.8, BOX_AMBER)
add_rect(s3, 8.8, 1.25, 4.15, 0.4, ACCENT_AMBER)
add_text(s3, "Incidence (NAP4 / Literature)", 8.95, 1.27, 3.9, 0.35,
font_size=13, bold=True, color=WHITE)
incidence = [
"Difficult mask ventilation: 0.9–5%",
"Difficult laryngoscopy: 1–4%",
"Difficult intubation: 0.5–2%",
"Failed intubation: 1 in 2,000",
"CICO: ~1 in 50,000–200,000",
"Awake → GA ratio: improved with VL",
]
add_multiline(s3, incidence, 8.95, 1.7, 3.9, 2.25, font_size=12.5, color=TEXT_DARK)
# NAP4 key lesson
add_rect(s3, 0.4, 4.2, 12.55, 0.85, BOX_RED)
add_rect(s3, 0.4, 4.2, 0.08, 0.85, ACCENT_RED)
add_text(s3, "⚠ NAP4 Key Lesson (UK, 2011): Most airway-related deaths resulted from repeated failed intubation attempts, "
"failure to use SGA/FOB, and delay in calling for help. Cognitive errors dominated over technical failure.",
0.6, 4.3, 12.2, 0.65, font_size=13, bold=False, color=ACCENT_RED)
# LEMON mnemonic preview
add_rect(s3, 0.4, 5.15, 12.55, 1.55, BOX_BLUE)
add_rect(s3, 0.4, 5.15, 12.55, 0.35, MED_BLUE)
add_text(s3, "Clinical Impact: Why It Matters", 0.55, 5.17, 12.2, 0.3,
font_size=13, bold=True, color=WHITE)
add_text(s3,
"Airway complications remain the leading cause of anaesthesia-related morbidity & mortality | "
"Inadequate preparation + failure to execute rescue plans = preventable harm | "
"DAS 2025 emphasises: 'maximise success at first attempt rather than managing failure'",
0.55, 5.55, 12.2, 1.0, font_size=13, color=TEXT_DARK)
footer(s3, "Ref: ASA 2022 Anesthesiology 136:31-81 | NAP4 RCoA 2011 | DAS 2025 BJA")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 4 – AIRWAY ASSESSMENT
# ══════════════════════════════════════════════════════════════════════════
s4 = prs.slides.add_slide(blank)
add_rect(s4, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s4, "Airway Assessment – Prediction of Difficult Airway",
"ASA 2022 | DAS 2025 | Morgan & Mikhail 7e Ch.19")
# LEMON box
add_rect(s4, 0.4, 1.25, 3.9, 5.5, BOX_BLUE)
add_rect(s4, 0.4, 1.25, 3.9, 0.4, MED_BLUE)
add_text(s4, "LEMON Law", 0.55, 1.27, 3.6, 0.35, font_size=14, bold=True, color=WHITE)
lemon = [
"L – Look externally",
" (beard, obesity, trauma, dysmorphic)",
"E – Evaluate 3-3-2 rule",
" Mouth open ≥3 fingers",
" Hyoid-chin ≥3 fingers",
" Hyoid-thyroid notch ≥2 fingers",
"M – Mallampati score",
" Class III/IV → difficult",
"O – Obstruction",
" (abscess, tumour, haematoma)",
"N – Neck mobility",
" <35° extension → difficult",
]
add_multiline(s4, lemon, 0.55, 1.7, 3.65, 5.0, font_size=12.5, bullet=False, color=TEXT_DARK)
# Mallampati box
add_rect(s4, 4.5, 1.25, 3.6, 2.5, BOX_GREEN)
add_rect(s4, 4.5, 1.25, 3.6, 0.4, ACCENT_GREEN)
add_text(s4, "Mallampati Classification", 4.65, 1.27, 3.3, 0.35, font_size=13, bold=True, color=WHITE)
malla = [
"Class I: Soft palate, uvula, fauces, pillars visible",
"Class II: Soft palate, uvula, fauces visible",
"Class III: Soft palate, base of uvula only",
"Class IV: Hard palate only visible",
"Class III/IV → Sensitivity ~50%, Specificity ~85%",
"Combine with other tests for best prediction",
]
add_multiline(s4, malla, 4.65, 1.7, 3.3, 2.0, font_size=12.5, color=TEXT_DARK)
# Other predictors
add_rect(s4, 4.5, 3.9, 3.6, 2.85, BOX_AMBER)
add_rect(s4, 4.5, 3.9, 3.6, 0.4, ACCENT_AMBER)
add_text(s4, "Other Clinical Predictors", 4.65, 3.92, 3.3, 0.35, font_size=13, bold=True, color=WHITE)
pred = [
"Thyromental distance <6 cm",
"Sternomental distance <12.5 cm",
"Mouth opening <3 cm (≤35 mm)",
"Short, muscular, thick neck",
"Reduced neck extension",
"Previous neck surgery/radiation",
"Sleep apnoea (OSA)",
"Mandibular prognathism absent",
]
add_multiline(s4, pred, 4.65, 4.35, 3.3, 2.3, font_size=12, color=TEXT_DARK)
# Difficult mask ventilation
add_rect(s4, 8.3, 1.25, 4.65, 2.6, BOX_RED)
add_rect(s4, 8.3, 1.25, 4.65, 0.4, ACCENT_RED)
add_text(s4, "Predictors of Difficult Mask Ventilation", 8.45, 1.27, 4.3, 0.35,
font_size=13, bold=True, color=WHITE)
dmv = [
"OBESE mnemonic:",
"O – Obesity (BMI >26 kg/m²)",
"B – Beard",
"E – Elderly (>55 years)",
"S – Snoring / OSA",
"E – Edentulous",
"",
"Mallampati III/IV also predicts DMV",
"Grade III DMV: partial obstruction → 2-person",
"Grade IV DMV: impossible → SGA/FONA",
]
add_multiline(s4, dmv, 8.45, 1.7, 4.4, 2.1, font_size=12, bullet=False, color=TEXT_DARK)
# ASA recommendation
add_rect(s4, 8.3, 4.0, 4.65, 2.75, BOX_BLUE)
add_rect(s4, 8.3, 4.0, 4.65, 0.4, MED_BLUE)
add_text(s4, "ASA 2022 / DAS 2025 Recommendation", 8.45, 4.02, 4.3, 0.35,
font_size=13, bold=True, color=WHITE)
asa_rec = [
"No single test has adequate sensitivity/specificity",
"Use COMBINATION of ≥2 tests",
"Review previous anaesthetic records",
"Document airway difficulty in notes",
"Perform assessment in ALL patients",
"Consider point-of-care ultrasound (POCUS) for trachea/cricothyroid",
]
add_multiline(s4, asa_rec, 8.45, 4.45, 4.4, 2.2, font_size=12, color=TEXT_DARK)
footer(s4, "Ref: ASA 2022 | DAS 2025 | Morgan & Mikhail Clinical Anesthesiology 7e, Ch.19")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 5 – ASA 2022 ALGORITHM
# ══════════════════════════════════════════════════════════════════════════
s5 = prs.slides.add_slide(blank)
add_rect(s5, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s5, "ASA 2022 Difficult Airway Algorithm – Adult",
"Anesthesiology 2022;136:31-81 | NEW features highlighted in amber")
# Step 1 – Assessment
add_rect(s5, 0.3, 1.15, 12.7, 0.55, MED_BLUE)
add_text(s5, "STEP 1: Assess for Difficult Airway (before any procedure)",
0.45, 1.18, 12.4, 0.48, font_size=14, bold=True, color=WHITE)
# Decision tree row
boxes = [
("Anticipated\nDifficult Airway", BOX_RED, ACCENT_RED),
("Unanticipated\nDifficult Airway", BOX_AMBER, ACCENT_AMBER),
("Emergency\nAirway (CICO)", RGBColor(0xFB,0xDC,0xDC), ACCENT_RED),
]
for i, (title, bc, tc) in enumerate(boxes):
x = 0.3 + i * 4.35
add_rect(s5, x, 1.8, 4.1, 0.65, bc)
add_rect(s5, x, 1.8, 4.1, 0.08, tc)
add_text(s5, title, x+0.1, 1.88, 3.9, 0.5,
font_size=13, bold=True, color=tc, align=PP_ALIGN.CENTER)
# Pathway 1 – Anticipated
add_rect(s5, 0.3, 2.6, 4.1, 4.2, BOX_RED)
add_rect(s5, 0.3, 2.6, 4.1, 0.32, ACCENT_RED)
add_text(s5, "ANTICIPATED: Pre-planned Strategy", 0.4, 2.62, 3.9, 0.28,
font_size=11.5, bold=True, color=WHITE)
ant_items = [
"✓ Awake Tracheal Intubation (ATI) if:",
" • Difficult ventilation + difficult intubation",
" • Full stomach (aspiration risk)",
" • Unstable haemodynamics",
" • Patient preference/consent issues",
"",
"ATI techniques (ASA 2022 NEW):",
" • Flexible bronchoscope (gold standard)",
" • Videolaryngoscopy (strong evidence)",
" • Direct laryngoscopy",
" • Combined techniques",
" • Retrograde wire-aided intubation",
"",
"✓ OR: Awake elective surgical airway",
"✓ OR: Regional/local anaesthesia",
"✓ OR: GA if unstable/cannot postpone",
]
add_multiline(s5, ant_items, 0.4, 3.0, 3.9, 3.7, font_size=11, bullet=False, color=TEXT_DARK)
# Pathway 2 – Unanticipated
add_rect(s5, 4.6, 2.6, 4.1, 4.2, BOX_AMBER)
add_rect(s5, 4.6, 2.6, 4.1, 0.32, ACCENT_AMBER)
add_text(s5, "UNANTICIPATED: Call for Help immediately", 4.7, 2.62, 3.9, 0.28,
font_size=11.5, bold=True, color=WHITE)
unant_items = [
"CALL FOR HELP (senior/colleague)",
"Optimise oxygenation continuously",
"Refer to algorithm / cognitive aid",
"",
"Decisions to make:",
" • Wake patient vs proceed?",
" • Noninvasive vs invasive?",
" • Preserve spontaneous ventilation?",
"",
"Noninvasive sequence:",
" 1. Videolaryngoscopy (1st choice)",
" 2. Alternative blade/technique",
" 3. SGA (LMA/i-gel)",
" 4. Combination techniques",
"",
"⚠ Limit attempts: 2-3 max!",
"⚠ Test mask ventilation between attempts",
]
add_multiline(s5, unant_items, 4.7, 3.0, 3.9, 3.7, font_size=11, bullet=False, color=TEXT_DARK)
# Pathway 3 – Emergency CICO
add_rect(s5, 8.9, 2.6, 4.15, 4.2, BOX_RED)
add_rect(s5, 8.9, 2.6, 4.15, 0.32, ACCENT_RED)
add_text(s5, "EMERGENCY (CICO): Immediate FONA", 9.0, 2.62, 3.95, 0.28,
font_size=11.5, bold=True, color=WHITE)
cico_items = [
"CICO = life-threatening, minutes matter",
"",
"Immediate actions:",
" 1. Declare CICO aloud",
" 2. Call for help + surgical team",
" 3. Prepare FONA kit NOW",
"",
"FONA Options (DAS 2025 preferred):",
" • Scalpel cricothyroidotomy",
" (scalpel-finger-bougie technique)",
" • 4 mm cuffed ETT or tracheostomy tube",
"",
" • Large-bore cannula (temporising)",
" → jet ventilation (TTJV)",
"",
"⛔ Do NOT repeat failed attempts",
"⛔ Do NOT delay FONA when CICO confirmed",
"✓ ECMO if appropriate and available",
]
add_multiline(s5, cico_items, 9.0, 3.0, 3.95, 3.7, font_size=11, bullet=False, color=TEXT_DARK)
footer(s5, "Ref: ASA Practice Guidelines 2022 – Anesthesiology 136:31-81 | Apfelbaum et al.")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 6 – DAS 2025 ALGORITHM
# ══════════════════════════════════════════════════════════════════════════
s6 = prs.slides.add_slide(blank)
add_rect(s6, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s6, "DAS 2025 Guidelines – Unanticipated Difficult Tracheal Intubation",
"Difficult Airway Society | BJA 2025 | Linear Algorithm: Plan A → B → C → D")
plan_data = [
("PLAN A", "Tracheal Intubation", MED_BLUE, BOX_BLUE,
[
"Primary goal: Successful confirmed intubation at FIRST ATTEMPT",
"Pre-oxygenate: Head-up position + technique allowing positive pressure",
"Peri-oxygenation: HFNO (high-flow nasal O₂) during intubation",
"Optimise patient positioning (ramped/ear-to-sternal notch)",
"Optimise laryngoscopy: BURP, size blade, external laryngeal manipulation",
"Videolaryngoscopy: recommended as first choice for all intubations (DAS 2025 NEW)",
"Confirm with WAVEFORM CAPNOGRAPHY (not SpO₂ or chest rise alone)",
"Limit to 3 attempts max (final = most experienced clinician)",
"⚠ BETWEEN attempts: re-oxygenate, reassess, change approach/device",
]),
("PLAN B", "Supraglottic Airway (SGA)", ACCENT_GREEN, BOX_GREEN,
[
"Trigger: Plan A failed (3 attempts or oxygenation dropping)",
"Use 2nd-generation SGA: i-gel or LMA Supreme (preferred DAS 2025)",
"Max 3 attempts at SGA insertion",
"If SGA adequate: consider waking patient or proceed cautiously",
"Intubation via SGA possible (Aintree catheter + FOB)",
"Ventilation confirmed by waveform capnography",
"Maintain oxygenation = primary objective",
"Communicate with surgical team – consider cancelling case",
]),
("PLAN C", "Facemask Ventilation", ACCENT_AMBER, BOX_AMBER,
[
"Trigger: SGA failed/not sealing adequately",
"2-person bag-mask technique",
"OPA ± NPA adjuncts",
"Repositioning, jaw thrust",
"Goal: maintain SpO₂ and oxygenation",
"If successful → wake patient safely",
"If facemask also failing → proceed to Plan D",
"⚠ This is NOT a definitive airway",
]),
("PLAN D", "Emergency FONA (CICO)", ACCENT_RED, BOX_RED,
[
"CICO declared → immediate scalpel cricothyroidotomy",
"Scalpel-finger-bougie-tube technique (DAS 2025 preferred)",
"No. 22 scalpel → horizontal stab incision through cricothyroid membrane",
"Finger palpation to confirm lumen",
"Bougie guided → 6.0 cuffed ETT or dedicated device",
"Inflate cuff → ventilate → confirm with ETCO₂",
"Needle cricothyroidotomy: only temporising – risk of barotrauma",
"Surgical tracheostomy: definitive if cricothyroidotomy fails",
]),
]
for i, (plan, title, hdr_col, bg_col, items) in enumerate(plan_data):
x = 0.35 + i * 3.25
w = 3.1
add_rect(s6, x, 1.15, w, 5.95, bg_col)
add_rect(s6, x, 1.15, w, 0.55, hdr_col)
add_text(s6, plan, x+0.05, 1.17, w-0.1, 0.28, font_size=15, bold=True, color=WHITE)
add_text(s6, title, x+0.05, 1.42, w-0.1, 0.25, font_size=11, bold=False, color=WHITE)
add_multiline(s6, items, x+0.1, 1.75, w-0.2, 5.25, font_size=11, bullet=True, color=TEXT_DARK)
# Arrow connectors (text arrows)
for i in range(3):
x = 3.25 + i * 3.25 + 0.05
add_text(s6, "→\nFAIL", x, 3.5, 0.3, 0.7, font_size=10, bold=True,
color=ACCENT_RED, align=PP_ALIGN.CENTER)
footer(s6, "Ref: DAS 2025 Guidelines for Unanticipated Difficult Tracheal Intubation in Adults | BJA 2025 | Higgs et al.")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 7 – PREOXYGENATION & APNOEIC OXYGENATION
# ══════════════════════════════════════════════════════════════════════════
s7 = prs.slides.add_slide(blank)
add_rect(s7, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s7, "Preoxygenation & Apnoeic Oxygenation",
"DAS 2025 | ASA 2022 | THRIVE Concept")
# Preoxygenation
add_rect(s7, 0.4, 1.2, 6.1, 5.55, BOX_BLUE)
add_rect(s7, 0.4, 1.2, 6.1, 0.4, MED_BLUE)
add_text(s7, "Preoxygenation – Principles & Targets", 0.55, 1.22, 5.8, 0.35,
font_size=14, bold=True, color=WHITE)
preox_items = [
"Goal: Denitrogenate FRC to extend safe apnoea time",
"",
"Target: EtO₂ ≥ 90% (or FeO₂ ≥ 0.9)",
" SpO₂ = 100% before induction",
"",
"Techniques:",
" • Tidal volume breathing: 100% O₂ × 3 mins (standard)",
" • 8 vital capacity breaths × 60 s (rapid method, less effective)",
" • NIV (BiPAP/CPAP): obese, pregnant, critically ill",
" • HFNO (High-Flow Nasal Oxygen):",
" - 60 L/min, FiO₂ 1.0",
" - Provides PEEP ~3-4 cmH₂O",
" - Continue during laryngoscopy (apnoeic oxygenation)",
"",
"Positioning (DAS 2025 NEW):",
" • Head-up (20-30°) – all patients",
" • Ramped position – obese patients",
" • Ear-to-sternal notch alignment",
"",
"Failure of preoxygenation:",
" • High FiO₂ but mask leak, agitation, obesity",
" • Address before induction!",
]
add_multiline(s7, preox_items, 0.55, 1.65, 5.8, 5.0, font_size=12.5, bullet=False, color=TEXT_DARK)
# Apnoeic oxygenation / THRIVE
add_rect(s7, 6.7, 1.2, 6.25, 5.55, BOX_GREEN)
add_rect(s7, 6.7, 1.2, 6.25, 0.4, ACCENT_GREEN)
add_text(s7, "Apnoeic Oxygenation & THRIVE", 6.85, 1.22, 5.9, 0.35,
font_size=14, bold=True, color=WHITE)
thrive_items = [
"Concept: O₂ continues to enter alveoli during apnoea",
" (mass flow along the O₂ gradient)",
"",
"THRIVE = Transnasal Humidified Rapid-Insufflation",
" Ventilatory Exchange",
" • Optiflow/Airvo device – 70 L/min",
" • Extends apnoea time significantly",
" • Provides CO₂ washout (flushing mechanism)",
" • Maintains SpO₂ during prolonged laryngoscopy",
"",
"Evidence (DAS 2025):",
" • Extends safe apnoea time from ~8 min → 15-25 min",
" • Especially beneficial: obese, pregnant, critically ill",
" • RECOMMENDED throughout entire airway management",
"",
"Practical tips:",
" • Start HFNO before induction",
" • Continue during laryngoscopy attempts",
" • Do NOT remove for mask ventilation – leave in situ",
" • Maintain during SGA insertion if possible",
"",
"Safe apnoea times (rough guide):",
" • Healthy adult: ~8-10 min",
" • Obese (BMI 40): ~3-5 min",
" • Pregnancy term: ~3-4 min",
" • Critically ill (sepsis): ~1-3 min",
]
add_multiline(s7, thrive_items, 6.85, 1.65, 5.9, 5.0, font_size=12.5, bullet=False, color=TEXT_DARK)
footer(s7, "Ref: DAS 2025 | Patel & Nouraei THRIVE 2015 | ASA 2022 preoxygenation recommendations")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 8 – AWAKE TRACHEAL INTUBATION
# ══════════════════════════════════════════════════════════════════════════
s8 = prs.slides.add_slide(blank)
add_rect(s8, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s8, "Awake Tracheal Intubation (ATI)",
"Gold Standard for Anticipated Difficult Airway | ASA 2022 Decision Tool")
# Indications
add_rect(s8, 0.4, 1.2, 3.8, 5.55, BOX_RED)
add_rect(s8, 0.4, 1.2, 3.8, 0.4, ACCENT_RED)
add_text(s8, "Indications for ATI (ASA 2022)", 0.55, 1.22, 3.55, 0.35,
font_size=13, bold=True, color=WHITE)
ati_ind = [
"Mandatory (High Risk):",
"• Difficult ventilation + difficult intubation (dual difficulty)",
"• Full stomach + difficult airway",
"• Unstable haemodynamics",
"",
"Strong Consideration:",
"• Anticipated difficult intubation alone",
"• Reduced mouth opening",
"• Restricted neck mobility",
"• Massive obesity + OSA",
"• Previous failed intubation",
"• Head/neck malignancy",
"• Unstable C-spine",
"• Ludwig's angina / peritonsillar abscess",
"• Severe burns to face/airway",
"",
"Patient refusal: relative contraindication",
"Local anaesthetic allergy: rare",
]
add_multiline(s8, ati_ind, 0.55, 1.65, 3.55, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Preparation
add_rect(s8, 4.4, 1.2, 4.2, 5.55, BOX_AMBER)
add_rect(s8, 4.4, 1.2, 4.2, 0.4, ACCENT_AMBER)
add_text(s8, "ATI Preparation – STOP mnemonic", 4.55, 1.22, 3.95, 0.35,
font_size=13, bold=True, color=WHITE)
ati_prep = [
"S – Suction (yankauer ready)",
"T – Topicalisation of airway",
"O – Oxygenation (HFNO running)",
"P – Plan (backup plans ready)",
"",
"Topicalisation:",
" Nasal: oxymetazoline + 4% cocaine",
" OR xylometazoline + lignocaine 4%",
"",
" Oral/laryngeal:",
" • Lignocaine 4% nebulisation × 15 min",
" • Spray-as-you-go (SAYG) via scope",
" • Cricothyroid puncture injection",
" • Glossopharyngeal nerve block",
"",
"Sedation (titrate carefully):",
" • Dexmedetomidine (0.5–1 mcg/kg/h) – preferred",
" • Midazolam + fentanyl (low dose)",
" • Remifentanil TCI (caution – apnoea risk)",
" • Ketamine (dissociative): airway maintained",
"",
"Glycopyrrolate 0.2 mg IM: 30 min before",
" (dries secretions, improves topicalisation)",
]
add_multiline(s8, ati_prep, 4.55, 1.65, 3.95, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Technique
add_rect(s8, 8.8, 1.2, 4.15, 5.55, BOX_BLUE)
add_rect(s8, 8.8, 1.2, 4.15, 0.4, MED_BLUE)
add_text(s8, "ATI Technique – Step by Step", 8.95, 1.22, 3.9, 0.35,
font_size=13, bold=True, color=WHITE)
ati_tech = [
"Flexible Bronchoscope (FBS) Route:",
" 1. Sit patient up / lateral",
" 2. Apply topical anaesthesia",
" 3. Load ETT (7.0 oral / 6.5 nasal) onto FBS",
" 4. Advance FBS: cords → carina",
" 5. Railroaded ETT over FBS",
" 6. Confirm position: tracheal rings",
" 7. Confirm ETCO₂ before induction",
"",
"Videolaryngoscope (VL) Awake:",
" • Increasingly used (ASA 2022 evidence A)",
" • Topicalise + sedate lightly",
" • Better for limited mouth opening",
" • Hyperangulated blade: Glidescope, C-MAC D-blade",
"",
"Pitfalls:",
" ⚠ Inadequate topicalisation → coughing",
" ⚠ Over-sedation → apnoea/loss of airway",
" ⚠ Scope fogging – suction, anti-fog",
" ⚠ Posterior commissure = arytenoids",
" ⚠ Failing ATI → Cancel, do not persist",
"",
"ALWAYS confirm with ETCO₂ before induction",
]
add_multiline(s8, ati_tech, 8.95, 1.65, 3.95, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
footer(s8, "Ref: ASA 2022 | Ahmad et al. ATI guidelines | Difficult Airway Society | Apfelbaum et al. Anesthesiology 2022")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 9 – VIDEOLARYNGOSCOPY & SGA
# ══════════════════════════════════════════════════════════════════════════
s9 = prs.slides.add_slide(blank)
add_rect(s9, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s9, "Videolaryngoscopy & Supraglottic Airway Devices",
"DAS 2025 | ASA 2022 | Key Advances in Airway Equipment")
# VL section
add_rect(s9, 0.4, 1.2, 6.1, 5.55, BOX_BLUE)
add_rect(s9, 0.4, 1.2, 6.1, 0.4, MED_BLUE)
add_text(s9, "Videolaryngoscopy (VL) – DAS 2025 FIRST CHOICE", 0.55, 1.22, 5.8, 0.35,
font_size=13, bold=True, color=WHITE)
vl_items = [
"DAS 2025: VL recommended as first-line device for all intubations",
"ASA 2022: Strong evidence category – reduces difficult intubation",
"",
"Types of VL:",
" Channelled (integrated channel):",
" • Airtraq, King Vision – guides ETT into channel",
" • Better for restricted mouth opening",
" • Less need for stylet",
"",
" Non-channelled (standard blade + screen):",
" • Storz C-MAC (Macintosh + D-blade)",
" • Glidescope (hyperangulated)",
" • McGrath MAC",
" • ETT needs stylet (hockey-stick shape)",
"",
"Blade selection:",
" Macintosh-type VL: best for routine + difficult",
" Hyperangulated (Glidescope D / C-MAC D):",
" • Grade III/IV laryngoscopy",
" • Reduced neck mobility",
" • C-spine precautions",
"",
"Key points (DAS 2025):",
" • Improves glottic view but NOT always intubation success",
" • Optimise stylet shape: preformed 60° anteriorly",
" • Keep ETT tip in view at ALL times",
" • Confirm with waveform capnography",
" • Combine with VL + FOB for 'can't see, can't advance'",
]
add_multiline(s9, vl_items, 0.55, 1.65, 5.8, 5.0, font_size=12, bullet=False, color=TEXT_DARK)
# SGA section
add_rect(s9, 6.7, 1.2, 6.25, 5.55, BOX_GREEN)
add_rect(s9, 6.7, 1.2, 6.25, 0.4, ACCENT_GREEN)
add_text(s9, "Supraglottic Airway Devices (SGA) – Plan B", 6.85, 1.22, 5.9, 0.35,
font_size=13, bold=True, color=WHITE)
sga_items = [
"Role: Bridge device when intubation fails",
" Maintain oxygenation in CICO pathway",
" Conduit for intubation (via FOB/Aintree)",
"",
"1st Generation SGA:",
" • Classic LMA, Flexible LMA",
" • No gastric drainage port",
" • NOT recommended for full stomach",
"",
"2nd Generation SGA (DAS 2025 PREFERRED):",
" • i-gel (supraglottic, no cuff inflation)",
" - Easiest insertion, best seals",
" - Gastric channel (size 10 Ryles tube)",
" • LMA Supreme (cuffed, gastric port)",
" • ProSeal LMA",
" - Better seal pressure than Classic",
"",
"SGA as intubation conduit:",
" • Aintree intubation catheter (AIC) + LMA",
" • FOB through AIC → trachea",
" • Remove SGA → railroad ETT over AIC",
"",
"Sizing (body weight):",
" i-gel: 1 (2-5 kg), 1.5 (5-12 kg), 2 (10-25 kg),",
" 2.5 (25-35 kg), 3 (30-60 kg), 4 (60-90 kg), 5 (>90 kg)",
"",
"⚠ SGA failure → do NOT persist → Plan C/D",
"⚠ Aspiration risk remains with SGA",
]
add_multiline(s9, sga_items, 6.85, 1.65, 5.9, 5.0, font_size=12, bullet=False, color=TEXT_DARK)
footer(s9, "Ref: DAS 2025 | ASA 2022 | Cook et al. Anaesthesia 2020 | i-gel instructions for use")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 10 – FRONT OF NECK AIRWAY (FONA)
# ══════════════════════════════════════════════════════════════════════════
s10 = prs.slides.add_slide(blank)
add_rect(s10, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s10, "Front-of-Neck Airway (FONA) – CICO Emergency",
"DAS 2025 | Scalpel-Finger-Bougie Technique – the ONLY reliable rescue")
# CICO declaration
add_rect(s10, 0.4, 1.15, 12.55, 0.7, ACCENT_RED)
add_text(s10,
"CICO DECLARATION: 'I declare CICO – calling for help – preparing for FONA NOW' | "
"Every second counts – do NOT delay for another intubation attempt",
0.6, 1.22, 12.2, 0.55, font_size=13.5, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# Anatomy
add_rect(s10, 0.4, 2.0, 4.1, 4.75, BOX_BLUE)
add_rect(s10, 0.4, 2.0, 4.1, 0.4, MED_BLUE)
add_text(s10, "Anatomy of Cricothyroid Membrane", 0.55, 2.02, 3.85, 0.35,
font_size=13, bold=True, color=WHITE)
anat_items = [
"Landmarks:",
" • Palpate thyroid cartilage (Adam's apple)",
" • Move inferiorly → soft CTM",
" • Confirm: between thyroid and cricoid cartilage",
"",
"Dimensions:",
" • Width: ~9 mm (range 5-15 mm)",
" • Height: ~14 mm",
" • Midline – avascular zone",
"",
"POCUS (DAS 2025 NEW):",
" • Ultrasound confirms CTM position",
" • Especially obese/distorted neck",
" • Pre-mark CTM with USS pre-induction",
" • Recommended in high-risk patients",
"",
"Mnemonic – 4Hs (stabilise before incision):",
" H – Horizontally stabilise trachea",
" H – Hyper-extend neck (if safe)",
" H – Have scalpel, bougie, ETT ready",
" H – Help: surgical colleague at bedside",
]
add_multiline(s10, anat_items, 0.55, 2.45, 3.85, 4.2, font_size=12, bullet=False, color=TEXT_DARK)
# Scalpel technique
add_rect(s10, 4.7, 2.0, 4.3, 4.75, BOX_RED)
add_rect(s10, 4.7, 2.0, 4.3, 0.4, ACCENT_RED)
add_text(s10, "Scalpel-Finger-Bougie Technique (DAS 2025)", 4.85, 2.02, 4.05, 0.35,
font_size=13, bold=True, color=WHITE)
sfb_items = [
"Equipment:",
" No. 22 scalpel, bougie, 6.0 cuffed ETT",
" 10 mL syringe, tube tie/tape",
"",
"Steps:",
" 1. Palpate/mark CTM (use POCUS if available)",
" 2. Stabilise trachea with non-dominant hand",
" 3. HORIZONTAL stab incision through CTM",
" (10 mm incision through skin + membrane)",
" 4. Index finger into incision to confirm lumen",
" 5. Bougie guided caudally along posterior wall",
" 6. Railroad 6.0 cuffed ETT over bougie",
" 7. Inflate cuff, remove bougie",
" 8. Ventilate, confirm ETCO₂",
" 9. Secure tube – call thoracic surgery",
"",
"Pitfalls:",
" ⚠ Vertical incision (bleeds more, traverses vessels)",
" ⚠ Paramedian puncture",
" ⚠ Anterior wall posterior perforation",
" ⚠ Oesophageal misplacement",
" ⚠ Tube too deep (right main bronchus)",
]
add_multiline(s10, sfb_items, 4.85, 2.45, 4.05, 4.2, font_size=12, bullet=False, color=TEXT_DARK)
# Alternatives
add_rect(s10, 9.2, 2.0, 3.75, 4.75, BOX_AMBER)
add_rect(s10, 9.2, 2.0, 3.75, 0.4, ACCENT_AMBER)
add_text(s10, "Alternative FONA Techniques", 9.35, 2.02, 3.5, 0.35,
font_size=13, bold=True, color=WHITE)
alt_items = [
"Cannula Cricothyroidotomy:",
" • 14G or dedicated (Melker, Portex)",
" • ONLY as temporary bridge",
" • Risk of kinking, subcutaneous emphysema",
" • Jet ventilation: I:E 1:3, 50 psi",
" • Max time: 30-45 min",
" • DAS 2025: NOT first choice for CICO",
"",
"Surgical Tracheostomy:",
" • If cricothyroidotomy fails",
" • Requires surgical expertise",
" • Definitive airway",
" • Calls for ENT/General surgery",
"",
"Percutaneous Dilational Tracheostomy:",
" • ICU setting primarily",
" • Requires fibreoptic guidance",
" • NOT for emergency CICO in OR",
"",
"Post-FONA:",
" • Notify intensive care",
" • Surgical conversion to formal tracheostomy",
" • Document + critical incident review",
" • Inform patient/family",
]
add_multiline(s10, alt_items, 9.35, 2.45, 3.5, 4.2, font_size=12, bullet=False, color=TEXT_DARK)
footer(s10, "Ref: DAS 2025 | Frerk et al. BJA 2015 (DAS guidelines) | Heard AMB cricothyroidotomy review")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 11 – RSI & MODIFIED RSI
# ══════════════════════════════════════════════════════════════════════════
s11 = prs.slides.add_slide(blank)
add_rect(s11, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s11, "Rapid Sequence Induction (RSI) & Modified RSI",
"For Full Stomach / Aspiration Risk | DAS 2025 | ASA 2022")
# RSI Indications
add_rect(s11, 0.4, 1.2, 3.9, 5.55, BOX_RED)
add_rect(s11, 0.4, 1.2, 3.9, 0.4, ACCENT_RED)
add_text(s11, "Indications for RSI", 0.55, 1.22, 3.65, 0.35, font_size=13, bold=True, color=WHITE)
rsi_ind = [
"Aspiration Risk (High Priority):",
"• Non-fasted (emergency surgery)",
"• Pregnancy (especially term)",
"• Bowel obstruction",
"• Symptomatic GORD",
"• Hiatus hernia",
"• Ileus, gastroparesis",
"• Upper GI bleeding",
"• Recent trauma",
"",
"Clinical Decision:",
"• RSI balances speed of intubation",
" vs safe airway securement",
"• ALWAYS assess for difficult airway",
" before RSI – have Plans A-D ready",
"",
"DAS 2025 New Guidance:",
"• Video laryngoscopy recommended",
" as first-line device for RSI",
"• Peri-oxygenation with HFNO",
" maintained throughout RSI",
"• Waveform capnography mandatory",
]
add_multiline(s11, rsi_ind, 0.55, 1.65, 3.65, 5.0, font_size=12, bullet=False, color=TEXT_DARK)
# Classic RSI technique
add_rect(s11, 4.5, 1.2, 4.1, 5.55, BOX_BLUE)
add_rect(s11, 4.5, 1.2, 4.1, 0.4, MED_BLUE)
add_text(s11, "Classic RSI – Steps", 4.65, 1.22, 3.85, 0.35, font_size=13, bold=True, color=WHITE)
rsi_steps = [
"Preparation:",
" IV access (×2), monitoring, suction",
" Drugs drawn up, anaes. ready",
" Tilting table, positioning (ramp for obese)",
"",
"Preoxygenation:",
" 3-5 min 100% O₂ (target EtO₂ >90%)",
" + HFNO 60 L/min (DAS 2025)",
"",
"Induction Agents:",
" • Ketamine 1.5-2 mg/kg IV (haemodynamic instability)",
" • Propofol 1-2 mg/kg (stable patients)",
" • Thiopentone 3-5 mg/kg (eclampsia/TBI)",
" • Etomidate 0.3 mg/kg (shock – single dose only)",
"",
"Muscle Relaxant:",
" • Suxamethonium 1.5 mg/kg IV (traditional)",
" Onset: 45-60 s | Duration: 8-10 min",
" • Rocuronium 1.2-1.6 mg/kg (modified RSI)",
" Onset: 60-75 s | Reverse with Sugammadex 16 mg/kg",
"",
"Cricoid Pressure (Sellick):",
" • 10 N awake → 30 N after loss of consciousness",
" • DAS 2025: routine use NOT supported",
" • Release if obstructing laryngoscopy/SGA",
"",
"NO mask ventilation (classic RSI)",
"Confirm ETT with waveform capnography",
]
add_multiline(s11, rsi_steps, 4.65, 1.65, 3.85, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Modified RSI / Rocuronium advantage
add_rect(s11, 8.8, 1.2, 4.15, 5.55, BOX_GREEN)
add_rect(s11, 8.8, 1.2, 4.15, 0.4, ACCENT_GREEN)
add_text(s11, "Modified RSI & Rocuronium-Sugammadex", 8.95, 1.22, 3.9, 0.35,
font_size=13, bold=True, color=WHITE)
mrsi_items = [
"Modified RSI:",
" • Gentle mask ventilation (≤20 cmH₂O)",
" • Reduces hypoxia during apnoea",
" • Preferred in pregnant/obese patients",
"",
"Rocuronium Advantages over Sux:",
" • No fasciculations",
" • No hyperkalaemia",
" • No malignant hyperthermia trigger",
" • No contraindications (burns, UMN lesions)",
" • Reversible with Sugammadex 16 mg/kg",
"",
"Sugammadex (ROCS) – Safety Net:",
" Dose for rescue reversal (CICO after rocuronium):",
" • 16 mg/kg IV stat",
" • Reverses deep rocuronium block in ~3 min",
" • Allows patient to resume breathing",
" • 'Can't intubate, can't oxygenate' → Sugammadex",
" if rocuronium used within 3-5 min",
"",
"Suxamethonium Contraindications:",
" • Burns >24 h old (hyperkalaemia)",
" • Upper/lower motor neurone lesions",
" • Crush injuries (after 24 h)",
" • Denervation injuries",
" • Personal/family history of MH",
" • Hyperkalaemia (K+ >5.5)",
" • Pseudocholinesterase deficiency",
"",
"Both agents: Onset similar with high-dose roc",
]
add_multiline(s11, mrsi_items, 8.95, 1.65, 3.9, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
footer(s11, "Ref: DAS 2025 RSI section | Sørensen et al. BMJ 2021 | Taha SK ROCS data | ASA 2022")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 12 – EXTUBATION OF DIFFICULT AIRWAY
# ══════════════════════════════════════════════════════════════════════════
s12 = prs.slides.add_slide(blank)
add_rect(s12, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s12, "Extubation of the Difficult Airway",
"ASA 2022 (NEW detailed section) | DAS Extubation Guidelines | High-risk phase")
# Risk stratification
add_rect(s12, 0.4, 1.2, 4.0, 5.55, BOX_RED)
add_rect(s12, 0.4, 1.2, 4.0, 0.4, ACCENT_RED)
add_text(s12, "Risk Stratification", 0.55, 1.22, 3.75, 0.35, font_size=13, bold=True, color=WHITE)
ext_risk = [
"High-Risk Extubation Factors:",
"",
"Airway Factors:",
" • Original difficult airway persists",
" • Airway oedema / haematoma",
" • Shared airway (ENT/maxfax surgery)",
" • Prolonged prone/lateral positioning",
" • Massive fluid resuscitation",
" • Neck dissection / retropharyngeal surgery",
" • Expanding haematoma post-thyroidectomy",
"",
"Patient Factors:",
" • OSA",
" • Morbid obesity",
" • Full stomach",
" • Limited physiological reserve",
"",
"Surgical Factors:",
" • Wired jaw",
" • Cervical fixation",
" • Tracheostomy proximity",
"",
"Key Principle (ASA 2022):",
"'A plan for extubation is as important",
" as a plan for intubation'",
]
add_multiline(s12, ext_risk, 0.55, 1.65, 3.75, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Safe extubation technique
add_rect(s12, 4.6, 1.2, 4.2, 5.55, BOX_BLUE)
add_rect(s12, 4.6, 1.2, 4.2, 0.4, MED_BLUE)
add_text(s12, "Safe Extubation Protocol – SETT", 4.75, 1.22, 3.95, 0.35,
font_size=13, bold=True, color=WHITE)
sett_items = [
"SETT = Staged, Evaluate, Trial, Tube-out",
"",
"Steps before extubation:",
"1. Confirm reversal of neuromuscular block",
" (TOF ratio ≥0.9 or clinical criteria)",
"2. Patient awake, following commands",
"3. Adequate respiratory effort (TV >6 mL/kg)",
"4. SpO₂ stable on FiO₂ ≤0.4",
"5. Re-assess airway anatomy",
" (cuff-leak test if indicated)",
"",
"Cuff Leak Test:",
" • Positive leak >110 mL = low risk",
" • Negative leak = concern for oedema",
" • Consider IV dexamethasone 0.1 mg/kg",
"",
"Airway Exchange Catheter (AEC) Method:",
" 1. Pass AEC through ETT (>30 cm depth)",
" 2. Remove ETT over AEC",
" 3. AEC remains as 'railway' in trachea",
" 4. If needed: railroad new ETT",
" 5. Remove AEC after 30-60 min",
" • O₂ can be insufflated through AEC",
" • Patient can talk/drink with AEC in situ",
"",
"Equipment ready for re-intubation",
]
add_multiline(s12, sett_items, 4.75, 1.65, 3.95, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Post-extubation & special cases
add_rect(s12, 9.0, 1.2, 3.95, 5.55, BOX_AMBER)
add_rect(s12, 9.0, 1.2, 3.95, 0.4, ACCENT_AMBER)
add_text(s12, "Post-Extubation & Special Situations", 9.15, 1.22, 3.7, 0.35,
font_size=13, bold=True, color=WHITE)
post_items = [
"Post-extubation monitoring:",
" • HDU/ICU for high-risk patients",
" • SpO₂, RR, stridor monitoring",
" • Heliox (helium-oxygen) for stridor",
" • Nebulised adrenaline for oedema",
"",
"Thyroidectomy – Expanding Haematoma:",
" EMERGENCY – tense haematoma",
" 1. Open wound at bedside immediately",
" 2. Release clot / haematoma",
" 3. Return to OR urgently",
" 4. DO NOT wait for anaes to arrive",
"",
"Post-neck dissection:",
" • Failed cuff-leak → delay extubation",
" • T-piece trial in ICU",
" • Tracheostomy if prolonged oedema",
"",
"Post-extubation O₂:",
" • HFNO (Optiflow) post-extubation",
" • Reduces re-intubation in high-risk",
" • NIV/BiPAP for OSA/obese",
"",
"Documentation (ASA 2022 & DAS 2025):",
" • Document difficulty encountered",
" • Inform patient verbally + written",
" • Medical Alert ID card",
" • Anaesthetic database entry",
]
add_multiline(s12, post_items, 9.15, 1.65, 3.7, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
footer(s12, "Ref: ASA 2022 (extubation section) | DAS Extubation Guidelines Popat et al. 2012 | Cavallone Anesthesiology 2013")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 13 – SPECIAL SITUATIONS
# ══════════════════════════════════════════════════════════════════════════
s13 = prs.slides.add_slide(blank)
add_rect(s13, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s13, "Special Situations – Obstetric, ICU & Paediatric Difficult Airway",
"ASA 2022 Paediatric Algorithm | Obstetric AAGBI Guidelines | ICU NAP4 Data")
# Obstetric
add_rect(s13, 0.4, 1.2, 4.0, 5.55, BOX_RED)
add_rect(s13, 0.4, 1.2, 4.0, 0.4, ACCENT_RED)
add_text(s13, "Obstetric Difficult Airway", 0.55, 1.22, 3.75, 0.35,
font_size=13, bold=True, color=WHITE)
obs_items = [
"Why different?",
"• Airway oedema (↑ Mallampati in labour)",
"• Reduced FRC (↑ O₂ consumption)",
"• Full stomach from 16 weeks",
"• Failed intubation 1:300 (vs 1:2000 general)",
"• Must protect both mother AND fetus",
"",
"GA Caesarean Section Protocol:",
" Preoxygenate ≥3 min (EtO₂ >90%)",
" RSI with cricoid pressure",
" VL as first-line (DAS 2025)",
" Sux 1.5 mg/kg OR Roc 1.2 mg/kg",
"",
"Can't intubate:",
" 1. Call for help (ODP, consultant)",
" 2. i-gel / ProSeal LMA",
" 3. Proceed with SGA if ventilating",
" (category 1 CS: maternal life > airway risk)",
" 4. FONA if CICO",
"",
"Obstetric CICO Protocol (OAA/DAS):",
" CICO in term pregnancy:",
" • Immediate scalpel cricothyroidotomy",
" • Sugammadex if rocuronium used",
"",
"Documentation + debrief essential",
]
add_multiline(s13, obs_items, 0.55, 1.65, 3.75, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# ICU / Critical care
add_rect(s13, 4.6, 1.2, 4.2, 5.55, BOX_AMBER)
add_rect(s13, 4.6, 1.2, 4.2, 0.4, ACCENT_AMBER)
add_text(s13, "ICU / Critical Care Airway", 4.75, 1.22, 3.95, 0.35,
font_size=13, bold=True, color=WHITE)
icu_items = [
"Why more dangerous?",
" • Physiologically difficult airway",
" • Reduced physiological reserve",
" • Hypoxia / hypotension / acidosis",
" • Limited positioning options",
" • Less experienced staff at night",
" • No theatre team support",
"",
"Physiological Optimisation (DAS 2025):",
" HOMO approach:",
" H – Haemodynamics: fluid/vasopressors",
" O – Oxygenation: HFNO/NIV pre-intubation",
" M – Metabolic: correct acidosis, K+",
" O – Operator: most experienced",
"",
"ICU RSI modifications:",
" • Ketamine preferred (preserves tone)",
" • Reduce propofol dose",
" • Have vasopressor infusion ready",
" • VL first choice (always in ICU)",
" • Bougie with direct laryngoscopy",
"",
"Predictors of difficult ICU intubation:",
" • Mallampati 3/4",
" • MACOCHA score >3 (sensitivity 73%)",
" • Cormack-Lehane >2 on first attempt",
"",
"Have surgical airway kit at bedside",
"Post-intubation: prevent right shift of O2-Hb curve",
]
add_multiline(s13, icu_items, 4.75, 1.65, 3.95, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
# Paediatric
add_rect(s13, 9.0, 1.2, 3.95, 5.55, BOX_BLUE)
add_rect(s13, 9.0, 1.2, 3.95, 0.4, MED_BLUE)
add_text(s13, "Paediatric Difficult Airway", 9.15, 1.22, 3.7, 0.35,
font_size=13, bold=True, color=WHITE)
paeds_items = [
"ASA 2022 Paediatric Algorithm:",
" Three primary tools:",
" 1. SGA (LMA)",
" 2. Flexible Intubation Scope (FIS)",
" 3. Videolaryngoscopy",
"",
"Key differences from adults:",
" • Narrow sub-glottic airway",
" • Larynx more anterior and cephalad",
" • Proportionally large occiput/tongue",
" • Hypoxia develops faster (high VO₂)",
" • Uncuffed ETT <8 years (some advocate cuffed)",
"",
"Anatomical syndromes associated:",
" • Pierre Robin (micrognathia)",
" • Down syndrome (atlantoaxial instability)",
" • Treacher Collins (mandibular hypoplasia)",
" • Goldenhar syndrome",
" • Klippel-Feil (cervical fusion)",
"",
"Paediatric ATI:",
" • Inhalational induction (sevoflurane)",
" • Maintain spontaneous ventilation",
" • FOB through SGA or nasal route",
"",
"CICO in children:",
" • Needle cricothyroidotomy (20G) first",
" • Surgical FONA if needle fails",
" • Very small CTM in infants (<5 mm)",
" • Rigid bronchoscopy: specialist ENT",
]
add_multiline(s13, paeds_items, 9.15, 1.65, 3.7, 5.0, font_size=11.5, bullet=False, color=TEXT_DARK)
footer(s13, "Ref: ASA 2022 Paed Algorithm | OAA/DAS Obstetric Guidelines 2015 | MACOCHA score De Jong 2013")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 14 – HUMAN FACTORS & COGNITIVE AIDS
# ══════════════════════════════════════════════════════════════════════════
s14 = prs.slides.add_slide(blank)
add_rect(s14, 0, 0, 13.333, 7.5, LIGHT_GRAY)
slide_header(s14, "Human Factors, Teamwork & Cognitive Aids",
"DAS 2025 | NAP4 Lessons | Crisis Resource Management")
# Human factors
add_rect(s14, 0.4, 1.2, 5.8, 5.55, BOX_BLUE)
add_rect(s14, 0.4, 1.2, 5.8, 0.4, MED_BLUE)
add_text(s14, "Human Factors in Airway Emergencies", 0.55, 1.22, 5.55, 0.35,
font_size=13, bold=True, color=WHITE)
hf_items = [
"NAP4 Findings (RCoA/DAS 2011):",
" • 184 major UK airway complications analysed",
" • Most failures involved human error, NOT equipment",
" • Most common errors:",
" - Failure to recognise deteriorating situation",
" - Failure to call for help early enough",
" - Persisting with failed technique",
" - No plan formulated pre-induction",
" - Failure to recognise oesophageal intubation",
"",
"DAS 2025 Human Factors Recommendations:",
" 1. Fix it before you start (airway plan pre-induction)",
" 2. Declare CICO out loud early",
" 3. Verbalise transitions between Plans A→B→C→D",
" 4. Designate airway manager (single person)",
" 5. Don't let cognitive tunnel vision prevail",
" 6. Know when to STOP and WAKE THE PATIENT",
" 7. Debrief after every difficult airway event",
"",
"Crisis Resource Management (CRM) Principles:",
" • Call for help EARLY",
" • Communicate clearly and closed-loop",
" • Assign roles in the team",
" • Use cognitive aids / checklists",
" • Avoid fixation errors",
" • Allocate attention wisely",
" • Mobilise all available resources",
"",
"Simulation training (DAS 2025):",
" • Mandatory high-fidelity simulation",
" • Regular FONA practice on manikins",
" • Cricoid pressure technique",
]
add_multiline(s14, hf_items, 0.55, 1.65, 5.55, 5.0, font_size=12, bullet=False, color=TEXT_DARK)
# Cognitive aids + Documentation
add_rect(s14, 6.5, 1.2, 6.45, 5.55, BOX_GREEN)
add_rect(s14, 6.5, 1.2, 6.45, 0.4, ACCENT_GREEN)
add_text(s14, "Cognitive Aids & Documentation", 6.65, 1.22, 6.2, 0.35,
font_size=13, bold=True, color=WHITE)
cog_items = [
"Cognitive Aids available:",
" • DAS Quick Reference Handbook (QRH)",
" - Laminated algorithms in every theatre",
" - Available free at das.uk.com",
" • Stanford Emergency Manual (Anaesthesia)",
" • Vortex Approach (4-step approach to CICO)",
"",
"Vortex Concept (Chrimes 2016):",
" Three upper airway 'lifelines':",
" 1. Facemask ventilation (best attempt)",
" 2. SGA (best attempt)",
" 3. Tracheal intubation (best attempt)",
" If all 3 lifelines fail → Green Zone = FONA",
" Key: recognise failure EARLY",
"",
"Pre-induction Checklist (DAS 2025):",
" □ Airway history reviewed",
" □ Airway assessment documented",
" □ Plans A/B/C/D formulated + verbalised",
" □ Equipment checked: VL, SGA (×2 sizes), FOB",
" □ FONA kit immediately available",
" □ Help identified + called if needed",
" □ HFNO set up and running",
"",
"Post-event Documentation:",
" □ Cormack-Lehane grade documented",
" □ Devices used + number of attempts",
" □ Written patient notification letter",
" □ Difficult Airway Alert (NHS/institutional)",
" □ Critical incident report filed",
" □ Team debrief conducted",
" □ National database entry (NHS DAD)",
]
add_multiline(s14, cog_items, 6.65, 1.65, 6.2, 5.0, font_size=12, bullet=False, color=TEXT_DARK)
footer(s14, "Ref: NAP4 RCoA/DAS 2011 | DAS 2025 Human factors section | Chrimes Vortex Approach 2016")
# ══════════════════════════════════════════════════════════════════════════
# SLIDE 15 – SUMMARY & KEY TAKE-HOMES
# ══════════════════════════════════════════════════════════════════════════
s15 = prs.slides.add_slide(blank)
add_rect(s15, 0, 0, 13.333, 7.5, DARK_BLUE)
add_text(s15, "Key Take-Home Messages",
0.5, 0.3, 12.3, 0.75, font_size=30, bold=True,
color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s15, 0.5, 1.1, 12.3, 0.05, ACCENT_BLUE)
takeaways = [
("1", "ASSESS EVERY AIRWAY", "Use ≥2 tests (LEMON, Mallampati, TMD). Review old records. Document. Plan A-D BEFORE induction."),
("2", "PREOXYGENATE OPTIMALLY", "Head-up position, target EtO₂ ≥90%, add HFNO 60 L/min. Maintain peri-oxygenation throughout."),
("3", "ATI FOR DUAL DIFFICULTY", "Anticipated difficult ventilation + intubation = Awake Tracheal Intubation. Never skip this when indicated."),
("4", "VL IS FIRST CHOICE (DAS 2025)", "Videolaryngoscopy now recommended as first-line for ALL intubations, not just difficult ones."),
("5", "LIMIT ATTEMPTS", "Max 3 attempts per device. Test mask ventilation between attempts. Know when to STOP and wake."),
("6", "CICO = FONA IMMEDIATELY", "Scalpel-finger-bougie technique. No more needle first. Declare CICO aloud. Practice on manikin."),
("7", "EXTUBATION IS HIGH RISK", "Plan extubation as carefully as intubation. Use AEC in high-risk. Document + inform patient."),
("8", "HUMAN FACTORS MATTER MOST", "Call for help early. Use cognitive aids. Debrief every difficult airway. Practise in simulation."),
]
for i, (num, title, text) in enumerate(takeaways):
col = i % 2
row = i // 2
x = 0.5 + col * 6.25
y = 1.25 + row * 1.47
add_rect(s15, x, y, 5.95, 1.35, RGBColor(0x0E, 0x3A, 0x6B))
add_rect(s15, x, y, 0.55, 1.35, ACCENT_BLUE)
add_text(s15, num, x, y+0.38, 0.55, 0.55,
font_size=22, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(s15, title, x+0.65, y+0.1, 5.2, 0.35,
font_size=14, bold=True, color=ACCENT_BLUE)
add_text(s15, text, x+0.65, y+0.47, 5.2, 0.8,
font_size=11.5, color=WHITE)
# Guideline reference banner
add_rect(s15, 0.5, 7.05, 12.3, 0.38, ACCENT_BLUE)
add_text(s15,
"References: ASA Practice Guidelines 2022 (Anesthesiology 136:31-81) | "
"DAS 2025 Guidelines (BJA 2025, Higgs et al.) | "
"Morgan & Mikhail's Clinical Anesthesiology 7e | "
"Miller's Anesthesia 10e | Barash Clinical Anaesthesia 9e | NAP4 RCoA/DAS 2011",
0.6, 7.06, 12.1, 0.34, font_size=9, color=WHITE, align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════════════
output_path = "/tmp/workspace/difficult-airway-ppt/Difficult_Airway_Management_MD_Anaesthesia.pptx"
prs.save(output_path)
print(f"✅ Saved: {output_path}")
print(f" Total slides: {len(prs.slides)}")
cd /tmp/workspace/difficult-airway-ppt && python build_ppt.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/difficult-airway-ppt/Difficult_Airway_Management_MD_Anaesthesia.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}: {\" | \".join(texts[:3])}') "
Difficult Airway Management MD Anaesthesia
Presentation · PPTX
| # | Slide Title | Key Content |
|---|---|---|
| 1 | Title Slide | Department branding, August 2026 |
| 2 | Lecture Outline | 12 numbered topic cards |
| 3 | Definition & Incidence | ASA 2022 definitions, NAP4 incidence data, why it matters |
| 4 | Airway Assessment | LEMON law, Mallampati, thyromental/sternomental distance, OBESE for DMV, ASA/DAS recommendations |
| 5 | ASA 2022 Algorithm | 3-pathway: Anticipated / Unanticipated / Emergency CICO - all in parallel columns |
| 6 | DAS 2025 Algorithm | Full Plan A (VL first) → Plan B (i-gel/SGA) → Plan C (facemask) → Plan D (FONA) |
| 7 | Preoxygenation & THRIVE | EtO₂ targets, HFNO technique, safe apnoea times by patient group |
| 8 | Awake Tracheal Intubation | Indications, STOP mnemonic, topicalisation, FOB + VL techniques, pitfalls |
| 9 | Videolaryngoscopy & SGA | Channelled vs non-channelled VL, i-gel sizing, SGA as intubation conduit |
| 10 | FONA – CICO Emergency | Scalpel-finger-bougie steps, CTM anatomy, POCUS, cannula vs surgical alternatives |
| 11 | RSI & Modified RSI | Indications, induction agents, Sux vs Rocuronium, Sugammadex rescue 16 mg/kg |
| 12 | Extubation of Difficult Airway | Risk factors, SETT protocol, cuff leak test, Airway Exchange Catheter technique |
| 13 | Special Situations | Obstetric (failed intubation 1:300), ICU HOMO approach, paediatric ASA 2022 algorithm |
| 14 | Human Factors & Cognitive Aids | NAP4 lessons, CRM principles, Vortex concept, pre-induction checklist, documentation |
| 15 | Key Take-Home Messages | 8 numbered pearls summarising the whole lecture |