Make a ppt for md anaesthesia resident “difficult airway management “ with reference to recent updated guidelines

Reading File
Reading File
Searching the Web

difficult airway management guidelines 2022 2023 2024 ASA DAS updated algorithm

Reading File
Finding Sources
Reading Web Page

https://www.sciencedirect.com/science/article/pii/S000709122…

Reading File
Reading File
Finding Sources
Running Command

mkdir -p /tmp/workspace/difficult-airway-ppt && ls /tmp/workspace/

Writing File

~/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)}")
Running Command

cd /tmp/workspace/difficult-airway-ppt && python build_ppt.py 2>&1

Running Command

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])}') "

Your presentation is ready. Download it here:

Difficult Airway Management MD Anaesthesia

Presentation · PPTX


What's in the PPT (15 Slides)

#Slide TitleKey Content
1Title SlideDepartment branding, August 2026
2Lecture Outline12 numbered topic cards
3Definition & IncidenceASA 2022 definitions, NAP4 incidence data, why it matters
4Airway AssessmentLEMON law, Mallampati, thyromental/sternomental distance, OBESE for DMV, ASA/DAS recommendations
5ASA 2022 Algorithm3-pathway: Anticipated / Unanticipated / Emergency CICO - all in parallel columns
6DAS 2025 AlgorithmFull Plan A (VL first) → Plan B (i-gel/SGA) → Plan C (facemask) → Plan D (FONA)
7Preoxygenation & THRIVEEtO₂ targets, HFNO technique, safe apnoea times by patient group
8Awake Tracheal IntubationIndications, STOP mnemonic, topicalisation, FOB + VL techniques, pitfalls
9Videolaryngoscopy & SGAChannelled vs non-channelled VL, i-gel sizing, SGA as intubation conduit
10FONA – CICO EmergencyScalpel-finger-bougie steps, CTM anatomy, POCUS, cannula vs surgical alternatives
11RSI & Modified RSIIndications, induction agents, Sux vs Rocuronium, Sugammadex rescue 16 mg/kg
12Extubation of Difficult AirwayRisk factors, SETT protocol, cuff leak test, Airway Exchange Catheter technique
13Special SituationsObstetric (failed intubation 1:300), ICU HOMO approach, paediatric ASA 2022 algorithm
14Human Factors & Cognitive AidsNAP4 lessons, CRM principles, Vortex concept, pre-induction checklist, documentation
15Key Take-Home Messages8 numbered pearls summarising the whole lecture

Guideline Sources Referenced Throughout

  • DAS 2025 - Difficult Airway Society guidelines for unanticipated difficult tracheal intubation (BJA 2025, Higgs et al.) - the most recent update
  • ASA 2022 - American Society of Anesthesiologists Practice Guidelines (Anesthesiology 2022;136:31-81, Apfelbaum et al.)
  • NAP4 - 4th National Audit Project, RCoA/DAS 2011
  • Morgan & Mikhail Clinical Anesthesiology 7e, Ch.19
  • Miller's Anesthesia 10e
  • Barash Clinical Anaesthesia 9e
  • OAA/DAS Obstetric Difficult Airway guidelines
This is a shared conversation. Sign in to Orris to start your own chat.