Create me a pdf on airway management, in ED and surgical options along with it's complications and outcomes based on tintinalli book Includes all topics on airway management's from tintinalli
mkdir -p /tmp/workspace/airway-management && ls /tmp/workspace/airway-management/
~/airway-management/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame
OUTPUT_PATH = "/tmp/workspace/airway-management/Airway_Management_ED_Surgical_Tintinalli.pdf"
# ─── STYLES ────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
cover_title = ParagraphStyle('CoverTitle', fontSize=28, leading=36,
alignment=TA_CENTER, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=8, fontName='Helvetica-Bold')
cover_sub = ParagraphStyle('CoverSub', fontSize=16, leading=22,
alignment=TA_CENTER, textColor=colors.HexColor('#2e6da4'),
spaceAfter=6, fontName='Helvetica')
cover_note = ParagraphStyle('CoverNote', fontSize=11, leading=15,
alignment=TA_CENTER, textColor=colors.HexColor('#555555'),
spaceAfter=4, fontName='Helvetica-Oblique')
h1 = ParagraphStyle('H1', fontSize=18, leading=24,
textColor=colors.HexColor('#1a3a5c'), spaceAfter=8, spaceBefore=18,
fontName='Helvetica-Bold', borderPad=4)
h2 = ParagraphStyle('H2', fontSize=14, leading=20,
textColor=colors.HexColor('#2e6da4'), spaceAfter=6, spaceBefore=12,
fontName='Helvetica-Bold')
h3 = ParagraphStyle('H3', fontSize=12, leading=16,
textColor=colors.HexColor('#1a6e5c'), spaceAfter=4, spaceBefore=8,
fontName='Helvetica-Bold')
body = ParagraphStyle('Body', fontSize=10, leading=15,
textColor=colors.HexColor('#222222'), spaceAfter=6,
fontName='Helvetica', alignment=TA_JUSTIFY)
bullet = ParagraphStyle('Bullet', fontSize=10, leading=14,
textColor=colors.HexColor('#222222'), spaceAfter=3,
fontName='Helvetica', leftIndent=18, bulletIndent=6)
note_style = ParagraphStyle('Note', fontSize=9, leading=13,
textColor=colors.HexColor('#444444'), spaceAfter=4,
fontName='Helvetica-Oblique', leftIndent=12,
borderColor=colors.HexColor('#2e6da4'), borderWidth=1,
borderPad=6, backColor=colors.HexColor('#eaf3fb'))
warn_style = ParagraphStyle('Warn', fontSize=9.5, leading=13,
textColor=colors.HexColor('#7a2d00'), spaceAfter=4,
fontName='Helvetica-Bold', leftIndent=12,
borderColor=colors.HexColor('#e07b39'), borderWidth=1,
borderPad=6, backColor=colors.HexColor('#fff4ec'))
def tbl(data, col_widths, header_color=colors.HexColor('#1a3a5c')):
t = Table(data, colWidths=col_widths, repeatRows=1)
ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), header_color),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('BOTTOMPADDING', (0,0), (-1,0), 6),
('TOPPADDING', (0,0), (-1,0), 6),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 8.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f6ff')]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#b0c4de')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,1), (-1,-1), 4),
('BOTTOMPADDING', (0,1), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
])
t.setStyle(ts)
return t
def hr():
return HRFlowable(width="100%", thickness=1.2, color=colors.HexColor('#2e6da4'), spaceAfter=6)
# ─── DOCUMENT ELEMENTS ─────────────────────────────────────────────────────
elements = []
W = A4[0] - 4*cm # usable width
# ── COVER PAGE ──
elements.append(Spacer(1, 3*cm))
elements.append(Paragraph("AIRWAY MANAGEMENT", cover_title))
elements.append(Paragraph("Emergency Department & Surgical Options", cover_sub))
elements.append(Spacer(1, 0.6*cm))
elements.append(HRFlowable(width="60%", thickness=2, color=colors.HexColor('#2e6da4'), hAlign='CENTER'))
elements.append(Spacer(1, 0.6*cm))
elements.append(Paragraph("Complications & Outcomes", cover_sub))
elements.append(Spacer(1, 2*cm))
elements.append(Paragraph("Based on Tintinalli's Emergency Medicine: A Comprehensive Study Guide", cover_note))
elements.append(Paragraph("Chapters 28 · 29A · 29B · 30 | Airway Management in Special Populations", cover_note))
elements.append(Spacer(1, 1*cm))
elements.append(Paragraph("Prepared for clinical and educational use", cover_note))
elements.append(PageBreak())
# ── TABLE OF CONTENTS ──
elements.append(Paragraph("Table of Contents", h1))
elements.append(hr())
toc_data = [
['#', 'Section', 'Topic'],
['1', 'Overview', 'Classification of Airway Management Techniques'],
['2', 'Anatomy', 'Airway Anatomy & Difficult Airway Prediction (LEMON)'],
['3', 'Noninvasive', 'Passive Oxygenation, BVM, High-Flow Nasal Cannula'],
['4', 'NIPPV', 'CPAP, BiPAP, Noninvasive Positive-Pressure Ventilation'],
['5', 'Supraglottic', 'LMA, King LTS-D, Combitube, i-gel'],
['6', 'RSI', 'Rapid-Sequence Intubation - Steps, Drugs, Pitfalls'],
['7', 'Tracheal Intubation', 'Orotracheal Intubation, Video Laryngoscopy, Nasotracheal'],
['8', 'Confirming ETT', 'End-tidal CO₂, Waveform Capnography, Chest X-Ray'],
['9', 'Difficult Airway', 'Algorithms, Rescue Strategies, Awake Intubation'],
['10', 'Surgical Airways', 'Cricothyrotomy - Techniques, Indications, Complications'],
['11', 'Mech. Ventilation', 'Ventilator Settings, Modes, Lung-Protective Strategy'],
['12', 'Complications', 'Complications of Intubation & Surgical Airways'],
['13', 'Special Populations', 'Pregnancy, Pediatrics, Trauma, Burns, Obesity'],
['14', 'Outcomes', 'First-Pass Success, Peri-intubation Arrest, ED Outcomes'],
]
elements.append(tbl(toc_data, [0.8*cm, 3.5*cm, W - 4.3*cm]))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 1: OVERVIEW
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("1. Overview: Classification of Airway Management", h1))
elements.append(hr())
elements.append(Paragraph(
"Airway support is required in many acutely ill and injured patients. Tintinalli's classifies airway "
"management techniques into two broad categories:", body))
elements.append(Paragraph(
"<b>Noninvasive:</b> Passive oxygenation, bag-valve-mask (BVM) ventilation, and noninvasive positive-pressure "
"ventilation (NIPPV). These maintain airway patency without breaching the natural barriers.", body))
elements.append(Paragraph(
"<b>Invasive:</b> Supraglottic airways, endotracheal intubation (ETT), cricothyrotomy, transtracheal jet "
"ventilation, and tracheostomy. These create a direct conduit to the trachea.", body))
elements.append(Paragraph("Key Goals of Airway Management", h2))
for b in [
"Maintain airway patency",
"Optimize oxygen delivery (prevent hypoxia)",
"Support carbon dioxide excretion (prevent hypercapnia)",
"Prevent aspiration",
"Facilitate sedation/paralysis for critically ill patients needing invasive procedures",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("Types of Respiratory Failure", h2))
rf_data = [
['Type', 'Physiology', 'Examples', 'Management Goal'],
['Type 1', 'Hypoxia WITHOUT hypercapnia', 'Pneumonia, PE, pulmonary edema', 'Optimize oxygenation'],
['Type 2', 'Hypoxia WITH hypercapnia', 'COPD, asthma, neuromuscular disease', 'Support oxygenation AND ventilation'],
]
elements.append(tbl(rf_data, [1.5*cm, 3.5*cm, 5*cm, W - 10*cm]))
elements.append(Spacer(1, 0.3*cm))
# ══════════════════════════════════════════════════════════
# SECTION 2: ANATOMY & DIFFICULT AIRWAY
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("2. Airway Anatomy & Difficult Airway Prediction", h1))
elements.append(hr())
elements.append(Paragraph(
"A thorough understanding of upper airway anatomy is essential. The airway extends from the nares and "
"oral cavity through the pharynx, larynx (with epiglottis, glottic opening, vocal cords), subglottis, "
"and trachea. The cricothyroid membrane (CTM) - located between the thyroid and cricoid cartilages - "
"is the landmark for emergency surgical airway access.", body))
elements.append(Paragraph("Causes of Upper Airway Obstruction", h2))
obs_data = [
['Congenital/Genetic', 'Infectious', 'Medical', 'Trauma/Tumor'],
['Large tonsils, macroglossia, micrognathia, neck masses',
'Tonsillitis, peritonsillar abscess, epiglottitis, Ludwig\'s angina, retropharyngeal abscess',
'Angioedema, laryngospasm, cystic fibrosis, inflammatory conditions',
'Laryngeal trauma, hematoma, smoke inhalation, thermal injuries, foreign body, hemorrhage'],
]
elements.append(tbl(obs_data, [W/4]*4, header_color=colors.HexColor('#2e6da4')))
elements.append(Paragraph("LEMON Mnemonic for Difficult Airway", h2))
elements.append(Paragraph(
"Predicting difficult laryngoscopy in the emergency setting is often unreliable. The LEMON "
"acronym helps organise factors contributing to airway difficulty:", body))
lemon_data = [
['Letter', 'Criterion', 'Findings Suggesting Difficulty'],
['L', 'Look externally', 'Facial trauma, large incisors, beard/moustache, large tongue, obesity'],
['E', 'Evaluate 3-3-2 rule', '<3 finger mouth opening; <3 fingers thyromental distance; <2 finger hyoid-thyroid notch'],
['M', 'Mallampati score', 'Class III (soft palate + base of uvula only) or IV (hard palate only)'],
['O', 'Obstruction', 'Epiglottitis, Ludwig\'s angina, peritonsillar abscess, expanding hematoma'],
['N', 'Neck mobility', 'Cervical spine immobilization, ankylosing spondylitis, rheumatoid arthritis'],
]
elements.append(tbl(lemon_data, [1*cm, 3.5*cm, W - 4.5*cm]))
elements.append(Paragraph("Mallampati Classification", h3))
mall_data = [
['Class', 'Visible Structures', 'Difficulty'],
['I', 'Soft palate, fauces, uvula, pillars', 'Easy'],
['II', 'Soft palate, fauces, uvula (partially)', 'Moderate'],
['III', 'Soft palate and base of uvula only', 'Difficult'],
['IV', 'Hard palate only visible', 'Very Difficult'],
]
elements.append(tbl(mall_data, [1.5*cm, 8*cm, W - 9.5*cm]))
elements.append(Spacer(1, 0.3*cm))
# ══════════════════════════════════════════════════════════
# SECTION 3: NONINVASIVE AIRWAY
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("3. Noninvasive Airway Management", h1))
elements.append(hr())
elements.append(Paragraph("3.1 Manual Airway Maneuvers", h2))
for b in [
"<b>Head-tilt chin-lift:</b> First-line maneuver in non-trauma patients. Lifts tongue off posterior pharynx.",
"<b>Jaw thrust:</b> Preferred in trauma patients with suspected cervical spine injury. Avoids neck extension.",
"<b>Triple airway maneuver:</b> Combination of head-tilt, chin-lift, and mouth opening.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("3.2 Oropharyngeal and Nasopharyngeal Airways", h2))
elements.append(Paragraph(
"The oropharyngeal airway (OPA) prevents the tongue from obstructing the hypopharynx. It should only "
"be used in patients without a gag reflex. The nasopharyngeal airway (NPA) is better tolerated in "
"semiconscious patients and can be used in those with intact gag reflex. NPAs are contraindicated in "
"basilar skull fracture.", body))
elements.append(Paragraph("3.3 Bag-Valve-Mask (BVM) Ventilation", h2))
elements.append(Paragraph(
"BVM ventilation is a critical bridging intervention. It is most effective as a two-person technique: "
"one operator maintains a tight mask seal using a two-handed C-E clamp grip while a second compresses "
"the bag to achieve adequate tidal volume (~500–600 mL in adults). Use of OPA or NPA adjuncts improves "
"mask ventilation efficacy.", body))
elements.append(Paragraph(
"<b>Pitfalls:</b> Inadequate seal, gastric distension from excessive pressure, aspiration risk. BVM "
"ventilation should be avoided or minimised if the patient is at high aspiration risk.", body))
elements.append(Paragraph("3.4 High-Flow Nasal Cannula (HFNC)", h2))
elements.append(Paragraph(
"HFNC delivers humidified, heated oxygen at flow rates up to 60 L/min. It provides a small degree of "
"positive pressure, decreases work of breathing, and helps maintain oxygenation during preoxygenation "
"and apnoeic periods. Key uses:", body))
for b in [
"Hypoxemic respiratory failure with intact respiratory drive",
"Bridge to intubation or alternative to NIPPV",
"Apnoeic oxygenation during RSI (nasal cannula at 15 L/min during laryngoscopy)",
"Preoxygenation prior to intubation",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph(
"<b>Contraindications:</b> Patients in respiratory/cardiac arrest, bullous lung disease, active pneumothorax.",
note_style))
elements.append(Paragraph("3.5 Flush-Rate / Passive Apnoeic Oxygenation", h2))
elements.append(Paragraph(
"Wall oxygen delivered at maximum flow (40–60 L/min via standard mask or nasal cannula). Helps maintain "
"oxygenation during apnoea induced by RSI medications and reduces desaturation during laryngoscopy. "
"Best used as a bridge while awaiting clinical improvement or establishing definitive airway.", body))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 4: NIPPV
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("4. Noninvasive Positive-Pressure Ventilation (NIPPV)", h1))
elements.append(hr())
elements.append(Paragraph(
"NIPPV encompasses CPAP (Continuous Positive Airway Pressure) and BiPAP (Bilevel Positive Airway "
"Pressure). These devices provide positive airway pressure through a tight-fitting face mask, "
"avoiding intubation in appropriately selected patients.", body))
nippv_data = [
['Mode', 'Mechanism', 'Key Indications', 'Settings'],
['CPAP', 'Single continuous pressure on inspiration and expiration',
'Obstructive sleep apnoea, cardiogenic pulmonary oedema, mild-moderate hypoxaemia',
'Start at 5–10 cmH₂O, titrate to effect'],
['BiPAP\n(IPAP/EPAP)', 'Higher pressure on inspiration (IPAP), lower on expiration (EPAP)',
'COPD exacerbation, hypercapnic respiratory failure, CHF, neuromuscular disease',
'IPAP 10–20 cmH₂O; EPAP 4–8 cmH₂O; titrate to pCO₂ and comfort'],
]
elements.append(tbl(nippv_data, [2*cm, 4*cm, 5*cm, W - 11*cm]))
elements.append(Paragraph("Contraindications to NIPPV", h2))
for b in [
"Inability to protect airway (decreased consciousness, GCS < 8)",
"Active vomiting or high aspiration risk",
"Facial trauma or anatomy preventing mask seal",
"Haemodynamic instability requiring immediate intubation",
"Respiratory arrest",
"Uncooperative patient",
"Recent upper GI or facial surgery",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("Evidence Base", h3))
elements.append(Paragraph(
"NIPPV has strong evidence in acute cardiogenic pulmonary oedema (reduces need for intubation, "
"improves mortality) and COPD exacerbations (reduces intubation rate, ICU stay, and mortality). "
"Benefit in de novo hypoxaemic failure (e.g., pneumonia) is more controversial.", body))
elements.append(Spacer(1, 0.3*cm))
# ══════════════════════════════════════════════════════════
# SECTION 5: SUPRAGLOTTIC AIRWAYS
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("5. Supraglottic Airways (SGAs)", h1))
elements.append(hr())
elements.append(Paragraph(
"Supraglottic airways are advanced airway devices that sit above the glottis and provide a pathway "
"for ventilation without requiring direct laryngoscopy or tracheal intubation. They are used as primary "
"rescue airways, bridging devices, and conduits for intubation.", body))
sga_data = [
['Device', 'Population', 'Aspiration Protection', 'Key Notes'],
['Laryngeal Mask Airway (LMA)', 'Adults and children (multiple sizes)',
'Partial (no full protection)', 'Standard SGA; may obstruct if incorrectly placed; cannot use with intact gag reflex'],
['Combitube®', 'Adults / adolescents >48 in or >14 y',
'Yes (seals both oesophagus and trachea)', 'If inadvertently placed in trachea, still ventilates; dual-lumen design'],
['King LTS-D®', 'Adults and children (multiple sizes)',
'Yes (gastric decompression port)', 'If inadvertently placed in trachea, still ventilates; port for gastric tube'],
['i-gel®', 'Adults and children',
'Better than LMA (anatomic sealing cuff)', 'Non-inflatable cuff; easier insertion; integrated bite block'],
['Intubating LMA (ILMA)', 'Adults',
'Partial', 'Specifically designed to allow intubation through the device'],
]
elements.append(tbl(sga_data, [3*cm, 3*cm, 3*cm, W - 9*cm]))
elements.append(Paragraph("Converting SGA to Endotracheal Tube", h2))
elements.append(Paragraph(
"When a supraglottic airway has been placed and definitive airway control is needed, conversion to "
"an ETT can be accomplished by:", body))
for b in [
"Passing an ETT directly through the intubating LMA (ILMA) under fibreoptic guidance",
"Using a flexible bronchoscope passed through the SGA, then railroading the ETT over the scope",
"Exchanging over an airway exchange catheter with confirmation of tube position by capnography",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Spacer(1, 0.3*cm))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 6: RAPID-SEQUENCE INTUBATION
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("6. Rapid-Sequence Intubation (RSI)", h1))
elements.append(hr())
elements.append(Paragraph(
"RSI is the sequential administration of an induction (sedation/anaesthetic) agent and a "
"neuromuscular blocking agent (NMBA) to facilitate endotracheal intubation. RSI is the method of "
"choice for emergency airway management because it allows the highest intubation success rate while "
"minimising physiologic perturbations.", body))
elements.append(Paragraph("7 P's of RSI (Tintinalli Steps)", h2))
rsi_data = [
['Step', 'Phase', 'Action & Timing'],
['1', 'Preparation', 'Assemble equipment: ETT, laryngoscope (direct + video), suction, BVM, SGA rescue, surgical airway kit; IV access; monitoring; assign roles. Pre-assess with LEMON.'],
['2', 'Preoxygenation', 'Optimise SpO₂ to >95% (ideally 100%) using HFNC or 15 L/min NRB mask for 3–5 min. Apply apnoeic oxygenation (nasal cannula at 15 L/min).'],
['3', 'Pretreatment', 'Optional agents 3 min before NMBA: Lidocaine (1.5 mg/kg IV) for reactive airways/elevated ICP; Fentanyl (3 mcg/kg IV) to blunt sympathetic response; Atropine for paediatric bradycardia.'],
['4', 'Paralysis + Induction', 'Simultaneous administration of induction agent + NMBA. Induction first, NMBA immediately after.'],
['5', 'Positioning', 'Sniffing position (ear to sternal notch alignment). In pregnancy/obesity: elevated head-of-bed.'],
['6', 'Placement with proof', 'Laryngoscopy + intubation; confirm with waveform capnography + auscultation.'],
['7', 'Post-intubation', 'Secure ETT; initiate ventilator; order post-intubation sedation and analgesia; CXR.'],
]
elements.append(tbl(rsi_data, [0.8*cm, 3*cm, W - 3.8*cm]))
elements.append(Paragraph("RSI Induction Agents", h2))
ind_data = [
['Agent', 'Dose (IV)', 'Onset', 'Advantages', 'Cautions'],
['Ketamine', '1.5–2 mg/kg', '45–60 s', 'Preserves airway reflexes and BP; bronchodilator; analgesic; ideal for haemodynamically unstable or reactive airway patients', 'Increases secretions; use with caution if elevated ICP is a concern (now less absolute)'],
['Etomidate', '0.3 mg/kg', '30–60 s', 'Haemodynamically neutral; rapid onset; minimal histamine; DOC for most ED intubations', 'Single-dose adrenal suppression (avoid in septic shock if alternative available); decreases seizure threshold'],
['Propofol', '1.5–3 mg/kg', '15–30 s', 'Excellent sedation quality; useful in status epilepticus; rapid offset', 'Significant hypotension; not ideal for haemodynamically unstable patients'],
['Midazolam', '0.2–0.3 mg/kg', '1–2 min', 'Widely available; useful when other agents unavailable', 'Slower onset; haemodynamic depression; prolonged sedation'],
['Sodium\nThiopental', '3–5 mg/kg', '30 s', 'Rapid; reduces ICP; historic standard', 'Severe hypotension; no longer widely available'],
]
elements.append(tbl(ind_data, [2*cm, 2.5*cm, 1.5*cm, 5.5*cm, W - 11.5*cm]))
elements.append(Paragraph("RSI Neuromuscular Blocking Agents", h2))
nmba_data = [
['Agent', 'Class', 'Dose', 'Onset', 'Duration', 'Key Notes'],
['Succinylcholine', 'Depolarising', '1.5 mg/kg IV', '45–60 s', '6–10 min', 'Fastest onset; used when rapid offset desired. Contraindicated in hyperkalaemia risk (burns >24h, crush injury, denervation, prolonged immobility), personal/family history of malignant hyperthermia, pseudocholinesterase deficiency.'],
['Rocuronium', 'Non-depolarising', '1.2 mg/kg IV (RSI dose)', '60–90 s', '45–70 min', 'Preferred when succinylcholine is contraindicated. Reversible with sugammadex (16 mg/kg IV) - enabling the "can\'t intubate, can\'t oxygenate" rescue.'],
['Vecuronium', 'Non-depolarising', '0.1 mg/kg', '2–3 min', '25–40 min', 'Slower onset; not ideal for RSI without priming dose.'],
]
elements.append(tbl(nmba_data, [2.5*cm, 2.5*cm, 2.5*cm, 1.5*cm, 2*cm, W - 11*cm]))
elements.append(Paragraph(
"CLINICAL PEARL: Rocuronium at RSI dose (1.2 mg/kg) + sugammadex rescue provides a safety net for the "
"'cannot intubate, cannot oxygenate' scenario. Sugammadex (16 mg/kg) reverses rocuronium within 3 minutes.",
warn_style))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 7: TRACHEAL INTUBATION
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("7. Tracheal Intubation", h1))
elements.append(hr())
elements.append(Paragraph(
"Tracheal intubation is the cornerstone of emergency airway management. It creates a direct, secure "
"conduit to the trachea, ensuring airway patency, optimising oxygenation and ventilation, and "
"protecting against aspiration. It also enables safe delivery of sedation and paralysis for "
"critically ill patients requiring diagnostic or therapeutic interventions.", body))
elements.append(Paragraph("7.1 Equipment at Bedside (Pre-intubation Checklist)", h2))
equip_data = [
['Category', 'Items'],
['Basic airway', 'OPA & NPA (multiple sizes), BVM with O₂ source, working suction + Yankauer catheter'],
['Intubation', 'ETT (primary + one size smaller, cuffs tested), stylet, laryngoscope (direct: Mac 3/4, Miller 2/3), video laryngoscope'],
['Confirmation', 'Waveform capnography, colorimetric CO₂ detector, stethoscope'],
['Rescue airway', 'LMA or other SGA (appropriate size), flexible bougie (gum elastic bougie)'],
['Surgical airway', 'Cricothyrotomy kit immediately accessible'],
['Monitoring', 'Continuous SpO₂, HR, BP, ETCO₂'],
['Medications', 'Induction agent + NMBA drawn up; post-intubation sedation ready'],
]
elements.append(tbl(equip_data, [4*cm, W - 4*cm]))
elements.append(Paragraph("7.2 Orotracheal Intubation - Technique", h2))
for i, b in enumerate([
"Position patient: bed at operator's xiphoid level; align external ear canal with sternal notch (sniffing position). In pregnant or obese patients, elevate head of bed (reverse Trendelenburg).",
"Preoxygenate for 3–5 min; apply apnoeic nasal cannula O₂ at 15 L/min.",
"Administer RSI medications.",
"Wait 45–60 seconds for optimal conditions (succinylcholine onset).",
"Open mouth; hold laryngoscope in LEFT hand; insert blade from right side of mouth, sweeping tongue to left.",
"Mac blade: advance into vallecula and lift anteriorly to reveal glottis. Miller blade: lift epiglottis directly.",
"Visualise vocal cords; pass ETT through cords under direct vision. Note depth at teeth (adults: men ~23 cm, women ~21 cm).",
"Inflate cuff; connect to BVM or ventilator; confirm placement immediately with waveform capnography.",
], 1):
elements.append(Paragraph(f"{i}. {b}", bullet))
elements.append(Paragraph("7.3 Video Laryngoscopy", h2))
elements.append(Paragraph(
"Video laryngoscopy (VL) improves glottic visualisation and first-pass success rates compared to direct "
"laryngoscopy in both normal and difficult airways. VL is now considered the primary modality in many "
"emergency departments. Hyperangulated blades (e.g., GlideScope) provide superior view but may require "
"a stylet. Standard-geometry video blades allow both direct and indirect viewing.", body))
vl_data = [
['Advantage', 'Limitation'],
['Improved C-L grade (better view)', 'Requires stylet with hyperangulated blades'],
['Useful in cervical immobilisation', 'Blood/secretions can obscure camera lens'],
['Teaching/team visibility', 'Slightly longer to set up if not immediately accessible'],
['First-pass success ↑', 'May still require DL as backup'],
]
elements.append(tbl(vl_data, [W/2, W/2], header_color=colors.HexColor('#1a6e5c')))
elements.append(Paragraph("7.4 Blind Nasotracheal Intubation (BNTI)", h2))
elements.append(Paragraph(
"BNTI involves passing a lubricated ETT through the naris and advancing it toward the glottis while "
"listening for breath sounds. It requires a spontaneously breathing patient. The tube is advanced "
"during inhalation (when cords are open). BNTI is a rescue technique particularly useful when oral "
"access is limited, but it carries higher failure rates than direct laryngoscopy.", body))
elements.append(Paragraph(
"Contraindications: apnoea, coagulopathy, suspected basal skull fracture, epiglottitis, "
"significant nasal/nasopharyngeal pathology, suspected tracheal disruption.", note_style))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 8: CONFIRMING ETT PLACEMENT
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("8. Confirming Endotracheal Tube Placement", h1))
elements.append(hr())
elements.append(Paragraph(
"Immediate confirmation of correct ETT placement is mandatory after every intubation. "
"Unrecognised oesophageal intubation is a catastrophic and preventable complication.", body))
conf_data = [
['Method', 'Sensitivity', 'Notes'],
['Waveform capnography\n(ETCO₂)', 'Highest - gold standard', 'Continuous CO₂ waveform confirms tracheal placement. Absence of waveform = oesophageal intubation until proven otherwise. Most reliable method even in low-perfusion states.'],
['Colorimetric CO₂ detector', 'High (6 breaths)', 'Purple = no CO₂ (oesophageal); yellow = CO₂ present (tracheal). Less reliable in cardiac arrest (false negatives).'],
['Direct visualisation', 'High if cords seen', 'ETT should be visualised passing through vocal cords. Does not confirm final position (mainstem vs carina).'],
['Bilateral chest auscultation', 'Moderate', 'Bilateral breath sounds + absence of gurgling over epigastrium. Can miss mainstem intubation.'],
['Chest X-ray', 'Confirms depth', 'ETT tip should be 2–4 cm above carina (carina at T4–5 level). Delayed - not for immediate confirmation.'],
['Oesophageal detector device', 'High', 'Easy aspiration through ETT (bulb or syringe) confirms tracheal placement. Useful in cardiac arrest.'],
['Lung ultrasound', 'High', 'Bilateral lung sliding + pleural sliding confirms bilateral ventilation.'],
]
elements.append(tbl(conf_data, [3.5*cm, 2.5*cm, W - 6*cm]))
elements.append(Paragraph(
"ALWAYS use waveform capnography as the primary confirmation method. Do not rely solely on "
"clinical signs (mist in tube, chest rise) as these can be misleading.", warn_style))
elements.append(Spacer(1, 0.3*cm))
# ══════════════════════════════════════════════════════════
# SECTION 9: DIFFICULT AIRWAY
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("9. The Difficult Airway - Algorithms & Rescue Strategies", h1))
elements.append(hr())
elements.append(Paragraph(
"A difficult airway is one in which a trained clinician anticipates or experiences difficulty with "
"face-mask ventilation, direct laryngoscopy, or tracheal intubation. The priority in emergency "
"airway management is to maintain oxygenation at all times - failed intubation should trigger "
"immediate rescue strategies.", body))
elements.append(Paragraph("Difficult Airway Algorithm (ED Framework)", h2))
alg_data = [
['Scenario', 'Action'],
['Predicted difficult airway (elective)', 'Consider awake fibreoptic intubation; call anaesthesiology early; prepare surgical airway kit'],
['Failed first attempt at RSI', 'Optimise: repositioning, suction, external laryngeal manipulation (BURP); change blade or operator'],
['Failed second attempt', 'Declare "difficult airway"; insert SGA (LMA/King); maintain oxygenation'],
['Can intubate, cannot oxygenate', 'Continue SGA ventilation; call for surgical airway immediately'],
['Cannot intubate, cannot oxygenate (CICO)', 'Emergency cricothyrotomy - do NOT delay'],
]
elements.append(tbl(alg_data, [5*cm, W - 5*cm], header_color=colors.HexColor('#8b2020')))
elements.append(Paragraph("Optimisation Manoeuvres During Laryngoscopy", h2))
for b in [
"<b>BURP (Backward, Upward, Rightward Pressure):</b> Applied to thyroid cartilage externally by assistant to improve glottic view.",
"<b>Bimanual laryngoscopy:</b> Operator's right hand applies external laryngeal manipulation while left holds laryngoscope.",
"<b>Gum elastic bougie:</b> Passed blindly or under partial view into trachea; ETT railroaded over bougie. Indicated for C-L grade III/IV views.",
"<b>Change laryngoscope:</b> Switch from Mac to Miller or from DL to VL.",
"<b>Head repositioning:</b> Ensure true sniffing position. Remove cervical collar if safe.",
"<b>Suction-Assisted Laryngoscopy Airway Decontamination (SALAD):</b> Large-bore suction positioned left of oropharynx to clear blood/vomit during intubation.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("Awake Intubation", h2))
elements.append(Paragraph(
"Awake tracheal intubation (ATI) is the technique of choice for anticipated severely difficult airway "
"when time permits. The patient is topicalised and sedated (but conscious) while a flexible bronchoscope "
"or video laryngoscope is used to guide intubation. Preserves airway reflexes until ETT confirmation.", body))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 10: SURGICAL AIRWAYS
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("10. Surgical Airways", h1))
elements.append(hr())
elements.append(Paragraph(
"Surgical airway management is indicated in the cannot intubate - cannot oxygenate (CICO) scenario, "
"or when the anticipated difficulty of laryngoscopy is so high that conventional intubation is likely "
"to fail. Cricothyrotomy is the emergency procedure of choice in adults.", body))
elements.append(Paragraph("10.1 Indications", h2))
for b in [
"Cannot intubate - cannot oxygenate (CICO) scenario following failed attempts at conventional airway",
"Anatomic distortion making visualisation impossible (severe trauma, haematoma, oedema)",
"Active oropharyngeal haemorrhage preventing laryngoscopy",
"Foreign body completely obstructing larynx not removable by Heimlich/McGill forceps",
"Penetrating neck trauma with expanding haematoma",
"Severe angioedema, Ludwig's angina",
"If standard intubation seems unlikely to succeed, direct surgical airway without prior attempt is acceptable",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("10.2 Cricothyrotomy", h2))
elements.append(Paragraph(
"Cricothyrotomy accesses the trachea through the cricothyroid membrane (CTM) - the most accessible "
"part of the airway, covered by minimal soft tissue. The CTM is bordered superiorly by the thyroid "
"cartilage and inferiorly by the cricoid cartilage.", body))
elements.append(Paragraph("Surgical Cricothyrotomy - Standard Technique", h3))
for i, b in enumerate([
"Identify CTM by palpation (midline, inferior to thyroid cartilage notch).",
"Stabilise larynx with non-dominant hand (laryngeal handshake).",
"Horizontal stab incision through skin and CTM.",
"Dilate with tracheal hook or dilator to maintain opening.",
"Insert appropriately sized cuffed tracheostomy tube (size 6.0) or ETT into trachea through CTM.",
"Inflate cuff, connect ventilation circuit, confirm with waveform capnography.",
"Secure tube and reassess.",
], 1):
elements.append(Paragraph(f"{i}. {b}", bullet))
elements.append(Paragraph("Bougie-Assisted / Rapid Four-Step Technique", h3))
elements.append(Paragraph(
"Alternative to standard surgical technique. Steps: (1) Horizontal CTM stab incision with scalpel, "
"(2) Hook inferior CTM edge for stabilisation, (3) Insert bougie caudally through CTM, "
"(4) Railroad 6.0 cuffed ETT over bougie. Faster and may be preferred by operators less familiar "
"with standard technique.", body))
elements.append(Paragraph("Percutaneous Needle Cricothyrotomy / Transtracheal Jet Ventilation (TTJV)", h3))
elements.append(Paragraph(
"A 14-gauge over-the-needle catheter is inserted through the CTM in a caudal direction. Attached to "
"a high-pressure oxygen source for jet ventilation. Provides adequate oxygenation for short periods "
"(30–45 min) but CO₂ accumulates (cannot adequately ventilate). Used primarily in paediatric patients "
"<12 years as a bridge, or in extremis while awaiting surgical airway. Risk of barotrauma is significant.", body))
elements.append(Paragraph("Tracheostomy", h2))
elements.append(Paragraph(
"Tracheostomy (elective or semi-urgent) is the preferred surgical airway in children under 12 years "
"(particularly <8 years) due to higher risks of laryngeal/tracheal injury with cricothyrotomy in this "
"age group. In adults, tracheostomy is preferred for planned long-term airway management (>7–10 days), "
"allowing weaning, communication, and oral care.", body))
trach_data = [
['Aspect', 'Cricothyrotomy', 'Tracheostomy'],
['Primary use', 'Emergency CICO rescue', 'Long-term airway, elective or semi-urgent'],
['Location', 'Cricothyroid membrane', 'Tracheal rings 2–4 (below cricoid)'],
['Time to perform', '< 60 seconds (trained)', '10–30 minutes'],
['Paediatric use', 'Challenging (<12y); higher injury risk', 'Preferred for children, especially <8y'],
['Conversion', 'Should be converted to tracheostomy within 24–72h', 'Definitive long-term device'],
['Complications', 'Subglottic stenosis, cricoid injury, haemorrhage', 'Haemorrhage, tracheomalacia, infection, stoma problems'],
]
elements.append(tbl(trach_data, [3.5*cm, (W-3.5*cm)/2, (W-3.5*cm)/2]))
elements.append(Paragraph(
"SPECIAL NOTE - Tracheal Disruption: If blunt or penetrating trauma has disrupted the trachea or "
"larynx, do NOT attempt cricothyrotomy. Surgical exploration with direct tracheal repair and "
"tracheostomy below the injury is required.", warn_style))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 11: MECHANICAL VENTILATION
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("11. Mechanical Ventilation in the ED", h1))
elements.append(hr())
elements.append(Paragraph(
"The primary function of mechanical ventilation is to provide respiratory support while treating "
"the underlying process causing respiratory failure. Ventilator mode choice is often based on "
"provider preference - patient outcomes are unlikely to be changed by the mode alone.", body))
elements.append(Paragraph("Ventilator Modes", h2))
vent_data = [
['Mode', 'Description', 'When to Use'],
['Volume Control (VC)', 'Delivers preset tidal volume with constant inspiratory flow (square waveform). Pressure varies with lung compliance.',
'Most ED patients; allows predictable tidal volumes; easiest to monitor'],
['Pressure Control (PC)', 'Delivers preset pressure above PEEP for set inspiratory time. Tidal volume varies with compliance/resistance.',
'Patients with variable compliance; may be more comfortable for spontaneously breathing patients'],
['SIMV', 'Mandatory volume/pressure breaths with patient able to breathe spontaneously between them.',
'Transitioning patients; weaning'],
['Pressure Support (PS)', 'Each patient-triggered breath supported by preset pressure. No mandatory rate.',
'Spontaneously breathing patients; weaning from ventilator'],
['PRVC/AC-VC', 'Adaptive pressure control targeting set volume (dual control).',
'Patients requiring lung-protective ventilation with consistent tidal volumes'],
]
elements.append(tbl(vent_data, [3*cm, 6*cm, W - 9*cm]))
elements.append(Paragraph("Initial Ventilator Settings", h2))
init_data = [
['Parameter', 'Starting Value', 'Notes'],
['Tidal Volume (Vt)', '6–8 mL/kg ideal body weight', 'Lower (6 mL/kg) for ARDS/lung-protective; use IBW not actual weight'],
['Respiratory Rate (RR)', '14–16 breaths/min', 'Adjust to target pCO₂; start lower in air-trapping (COPD/asthma)'],
['FiO₂', 'Start at 1.0 (100%)', 'Wean to target SpO₂ 94–96%; avoid prolonged 100% FiO₂'],
['PEEP', '5 cmH₂O', 'Increase to 8–12 in ARDS; lower in obstructive disease to reduce air trapping'],
['I:E ratio', '1:2 to 1:3', 'Increase expiratory time (1:3–1:4) in COPD/asthma to allow full exhalation'],
['Peak/Plateau pressure', 'Peak <50 cmH₂O; Plateau <30 cmH₂O', 'High peak + low plateau = airway resistance problem; high both = compliance problem'],
]
elements.append(tbl(init_data, [3.5*cm, 4*cm, W - 7.5*cm]))
elements.append(Paragraph("Lung-Protective Ventilation Strategy (ARDSnet)", h2))
elements.append(Paragraph(
"In ARDS and other conditions with reduced lung compliance, lung-protective ventilation reduces "
"ventilator-induced lung injury (VILI). Key principles:", body))
for b in [
"Tidal volume: 6 mL/kg ideal body weight (may reduce to 4 mL/kg in severe ARDS)",
"Plateau pressure: ≤30 cmH₂O",
"PEEP: guided by FiO₂/PEEP tables (ARDS Network protocol); typically 8–18 cmH₂O",
"Permissive hypercapnia: accept PaCO₂ up to 50–60 mmHg (pH >7.20) to achieve volume/pressure targets",
"Prone positioning in severe ARDS (PaO₂/FiO₂ <150) reduces mortality",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("Ventilator Troubleshooting - High Peak Pressures", h2))
vt_data = [
['Finding', 'Interpretation', 'Action'],
['High Peak + High Plateau (both >30)', 'Decreased lung compliance (ARDS, pulmonary oedema, PTX)', 'Reduce Vt; increase PEEP; rule out pneumothorax; diuresis if indicated'],
['High Peak + Normal/Low Plateau (<30)', 'Increased airway resistance (bronchospasm, secretions, kinked ETT)', 'Suction ETT; bronchodilators; increase I:E ratio; check ETT position'],
['Sudden ↑ peak pressure', 'Pneumothorax, mucus plug, right mainstem intubation', 'Decompress chest if suspected PTX; suction; CXR; adjust ETT'],
]
elements.append(tbl(vt_data, [3.5*cm, 4*cm, W - 7.5*cm]))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 12: COMPLICATIONS
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("12. Complications of Airway Management", h1))
elements.append(hr())
elements.append(Paragraph(
"Complications can be divided into those occurring during the procedure (peri-intubation) and "
"those occurring after ETT placement. Preparation, recognition, and prompt correction are key.", body))
elements.append(Paragraph("12.1 Peri-intubation Complications", h2))
peri_data = [
['Complication', 'Incidence', 'Prevention', 'Corrective Action'],
['Hypotension', '23% of ED intubations', 'Optimise BP before intubation; choose haemodynamically neutral induction agent (e.g., ketamine/etomidate); pre-treat with fluid bolus',
'IV fluids; vasopressors (push-dose epinephrine 10–20 mcg IV); avoid hyperventilation'],
['Cardiac arrest', '~4% of ED intubations', 'Optimise SpO₂, HR, BP pre-intubation; treat underlying physiology first',
'Immediate CPR; address reversible causes'],
['Oxygen desaturation', 'Common', 'Pre-oxygenate to ≥95%; apnoeic oxygenation (nasal cannula 15 L/min)',
'Verify ETT; clear ETT; hyperventilate; return to BVM if needed'],
['Oesophageal intubation', '~1–4%', 'Visualise ETT passing through cords; immediate capnography confirmation',
'Remove ETT immediately; reoxygenate with BVM; reintubate'],
['Aspiration', '~3–4%', 'Avoid excessive BVM pressure; SALAD technique; suction before intubation; elevate HOB',
'Suction ETT and oropharynx; bronchoscopy if severe; bronchodilators; supportive care'],
['Bradycardia', 'More in paediatrics', 'Pre-oxygenate; atropine pre-treatment in children',
'Hyperventilate; atropine or epinephrine'],
]
elements.append(tbl(peri_data, [3*cm, 2*cm, 4.5*cm, W - 9.5*cm]))
elements.append(Paragraph("12.2 Post-intubation Complications", h2))
post_data = [
['Complication', 'Prevention', 'Corrective Action'],
['ETT misplacement (oesophageal)', 'Visualise + waveform capnography immediately',
'Remove ETT; reoxygenate; reintubate'],
['ETT dislodgement', 'Secure ETT; continuous capnography; minimise patient movement',
'Quick recognition; remove and replace ETT'],
['Right mainstem intubation', 'Know correct depth (men ~23 cm, women ~21 cm); bilateral auscultation',
'Pull ETT back 2 cm and reassess'],
['Pneumothorax', 'Avoid excessive BVM pressures; careful laryngoscopy',
'Needle decompression; chest tube if haemodynamically compromised'],
['Vocal cord injury', 'Correct ETT size; avoid excessive cuff pressure (<30 cmH₂O)',
'Laryngology consultation if persistent hoarseness'],
['Tracheal stenosis (long-term)', 'Correct cuff pressure; timely conversion cric to trach',
'Endoscopic or open surgical repair'],
['Subglottic injury from cric', 'Prompt conversion to tracheostomy (<72h)',
'Laryngoscopic/surgical assessment; dilation or reconstruction'],
['Sinusitis (nasotracheal)', 'Limit nasal intubation duration; convert to oral',
'Antibiotics; convert to oral route'],
]
elements.append(tbl(post_data, [3.5*cm, 4*cm, W - 7.5*cm]))
elements.append(Paragraph("12.3 Complications of Surgical Airways", h2))
surg_comp_data = [
['Complication', 'Notes'],
['Haemorrhage', 'Most common early complication. Correct with direct pressure, haemostatic agents, or surgical ligation.'],
['False passage', 'ETT/tube in paratracheal space. Confirm with capnography; direct visualisation via bronchoscope.'],
['Subglottic stenosis', 'Late complication of cricothyrotomy. Convert to tracheostomy within 24–72h to reduce risk.'],
['Laryngeal/tracheal injury', 'Cricoid ring fracture, tracheal wall injury. Evaluate with bronchoscopy; ENT consultation.'],
['Tube displacement', 'Especially in obese necks. Secure well; confirm with capnography.'],
['Infection/cellulitis', 'Wound care; antibiotics; tracheostomy tube changes when matured.'],
['Tracheomalacia (trach)', 'Long-term tracheostomy complication. Managed endoscopically.'],
['Tracheo-oesophageal fistula', 'Rare; high cuff pressure or excessive tube movement. Surgical repair.'],
['Barotrauma (TTJV)', 'Bilateral emphysema, tension PTX. Use lowest effective pressure; ensure exhalation path open.'],
]
elements.append(tbl(surg_comp_data, [4*cm, W - 4*cm]))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 13: SPECIAL POPULATIONS
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("13. Airway Management in Special Populations", h1))
elements.append(hr())
elements.append(Paragraph("13.1 Pregnancy", h2))
for b in [
"<b>Anatomic changes:</b> Fluid retention causes upper airway oedema; weight gain distorts landmarks. Increased Mallampati class III/IV. Nasal mucosal engorgement makes blind nasotracheal intubation hazardous.",
"<b>Physiologic changes:</b> Increased O₂ consumption + decreased FRC → rapid desaturation. Lower oesophageal tone + elevated intra-abdominal pressure → high aspiration risk.",
"<b>Difficult intubation rate:</b> 1–6%; failed intubation 0.1–0.6%.",
"<b>Strategy:</b> Most experienced operator; video laryngoscope preferred; gum elastic bougie, smaller ETT (6.5–7.0); sniffing position with shoulder elevation. Left uterine displacement to prevent aortocaval compression.",
"<b>RSI:</b> Standard doses of induction + NMBA. Preoxygenate aggressively; apnoeic oxygenation at 15 L/min.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("13.2 Paediatrics", h2))
for b in [
"<b>Anatomy:</b> Large occiput flexes neck (use shoulder roll); large tongue; anterior/superior larynx (higher, more anterior glottis); long, floppy epiglottis; narrowest at subglottis (not cords) in children <8y.",
"<b>ETT sizing:</b> Uncuffed: (age/4) + 4; Cuffed: (age/4) + 3.5. Cuffed ETTs now preferred in hospital settings.",
"<b>ETT depth:</b> Oral: (age/2) + 12 cm; or 3 × ETT diameter.",
"<b>Surgical airway:</b> Cricothyrotomy challenging in <12y (short neck, soft tissue, indistinct cartilages). Tracheostomy preferred in <8y. TTJV + needle cricothyrotomy as bridge in extremis.",
"<b>Bradycardia:</b> Hypoxia is primary cause of bradycardia in children - prioritise oxygenation.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("13.3 Trauma", h2))
for b in [
"<b>C-spine precautions:</b> Maintain in-line cervical stabilisation during laryngoscopy. Does not preclude intubation.",
"<b>Haemorrhage:</b> Oropharyngeal haemorrhage makes visualisation difficult - SALAD technique; large-bore suction.",
"<b>Penetrating neck trauma:</b> Expanding haematoma can obstruct rapidly. Difficult intubation ~10% of cases. Early surgical airway if tracheal deviation or oropharyngeal blood.",
"<b>Facial trauma:</b> Le Fort fractures, mandible fractures, orbit disruption limit standard intubation. Have cricothyrotomy kit ready.",
"<b>Tracheal/laryngeal disruption:</b> Do NOT attempt cricothyrotomy. Requires surgical airway below the injury or awake tracheostomy.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("13.4 Obesity", h2))
for b in [
"Increased Mallampati class, reduced FRC, excess soft tissue in neck - all increase difficulty.",
"Ramped position (head/torso elevated 20–30°, ears level with sternal notch) improves glottic view and increases safe apnoea time.",
"Preoxygenation particularly important - desaturates faster than normal-weight patients.",
"Video laryngoscopy strongly preferred as primary technique.",
"Shorter safe apnoea time - optimal preoxygenation essential.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("13.5 Burns / Inhalation Injury", h2))
for b in [
"Early intubation before oedema develops. Delay = exponentially increased difficulty.",
"Singed nasal/oral hairs, oropharyngeal oedema, soot in airway = high-risk features.",
"Succinylcholine contraindicated after 24 hours post-burn (hyperkalaemia risk). Use rocuronium.",
"Carbon monoxide poisoning: high-flow O₂ regardless of SpO₂ reading (COHb falsely normal pulse oximetry).",
"Cyanide toxicity possible in smoke inhalation: consider hydroxocobalamin.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("13.6 The Anticipated 'Cannot Intubate' Airway", h2))
elements.append(Paragraph(
"Conditions commonly associated with CICO scenarios include: Ludwig's angina, severe angioedema, "
"epiglottitis with supraglottic oedema, expanding haematoma, head and neck cancers, laryngeal/tracheal "
"trauma, and severe facial burns. For these patients: awake intubation planning, "
"anaesthesiology/ENT presence, and surgical airway readiness are mandatory.", body))
elements.append(PageBreak())
# ══════════════════════════════════════════════════════════
# SECTION 14: OUTCOMES
# ══════════════════════════════════════════════════════════
elements.append(Paragraph("14. Outcomes of Emergency Airway Management", h1))
elements.append(hr())
elements.append(Paragraph("14.1 First-Pass Success (FPS)", h2))
elements.append(Paragraph(
"First-pass success is the single most important quality metric for emergency intubation. "
"Multiple attempts are associated with progressively higher complication rates (hypoxaemia, "
"haemodynamic instability, aspiration, airway trauma).", body))
fps_data = [
['Metric', 'Data (ED Setting)'],
['Overall first-pass success rate (ED)', '~85–90% in large registries'],
['With video laryngoscopy as primary tool', 'FPS improved by ~10–15% vs direct laryngoscopy'],
['FPS with RSI vs no NMBA', 'RSI significantly superior (~90% vs 70%)'],
['Complications after 1st attempt', '~14%'],
['Complications after 2nd attempt', '~47%'],
['Complications after 3+ attempts', 'Up to 70%'],
['Peri-intubation hypotension (ED)', '~23% of intubations'],
['Peri-intubation cardiac arrest (ED)', '~4% of intubations'],
['Success rate surgical cric (trained flight crew)', '90.9% (reported non-physician crews)'],
['Success rate RSI-assisted ETT (paramedics)', '~97.7%'],
]
elements.append(tbl(fps_data, [7*cm, W - 7*cm]))
elements.append(Paragraph("14.2 Post-intubation Mortality and ICU Outcomes", h2))
elements.append(Paragraph(
"Emergency intubation in the ED carries significant mortality risk - not from the procedure itself "
"but because the underlying conditions requiring intubation are life-threatening. Key outcome data:", body))
for b in [
"30-day mortality for ED intubations varies widely: ~20–40% depending on indication (cardiac arrest, sepsis, trauma, COPD)",
"Lung-protective ventilation (ARDSnet protocol) reduces ARDS mortality from ~40% to ~31% (NNT ~10)",
"NIPPV in COPD exacerbations: reduces intubation need by ~50%, reduces hospital mortality",
"Early surgical airway in CICO avoids complete airway loss - delay is the primary cause of hypoxic brain injury",
"Use of waveform capnography reduces unrecognised oesophageal intubation to near-zero in monitored settings",
"Video laryngoscopy improves FPS particularly in difficult airways; adoption as primary tool associated with improved outcomes",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Paragraph("14.3 NIPPV Outcomes", h2))
nippv_out_data = [
['Indication', 'Key Outcome Data'],
['Acute cardiogenic pulmonary oedema (CPAP)', 'Reduces need for intubation (NNT ~8); reduces in-hospital mortality vs standard O₂'],
['COPD exacerbation (BiPAP)', 'Reduces intubation rate (~50%); reduces ICU admission; reduces 60-day mortality'],
['De novo hypoxaemic failure (pneumonia)', 'Controversial; benefit less clear; high failure rate - close monitoring required'],
['Immunocompromised patients', 'May reduce intubation and mortality; early application preferred'],
]
elements.append(tbl(nippv_out_data, [5*cm, W - 5*cm]))
elements.append(Paragraph("14.4 Complications and Their Impact on Outcomes", h2))
elements.append(Paragraph(
"Recognition of complications determines outcomes. Key outcome-altering complications:", body))
for b in [
"<b>Unrecognised oesophageal intubation:</b> Invariably fatal if not immediately corrected. Waveform capnography reduces this to near-zero.",
"<b>Peri-intubation cardiac arrest:</b> Occurs in ~4% of ED intubations; associated with pre-existing hypoxia, hypotension, and metabolic acidosis. Mortality is high.",
"<b>Aspiration:</b> Complicates ~3–4% of ED intubations; may lead to aspiration pneumonitis/pneumonia, prolonged ventilation, increased ICU stay.",
"<b>Delayed surgical airway in CICO:</b> Each minute of delay = increased risk of anoxic brain injury. Rapid decision to surgical airway in CICO is life-saving.",
"<b>Subglottic stenosis from cricothyrotomy:</b> Long-term morbidity. Reduced by converting to tracheostomy within 24–72h.",
]:
elements.append(Paragraph(f"• {b}", bullet))
elements.append(Spacer(1, 0.3*cm))
elements.append(HRFlowable(width="100%", thickness=1.2, color=colors.HexColor('#1a3a5c'), spaceAfter=6))
elements.append(Paragraph(
"Source: Tintinalli's Emergency Medicine: A Comprehensive Study Guide (ISBN 9781260019933), "
"Chapters 28 (Noninvasive Airway Management), 29A (Tracheal Intubation), 29B (Mechanical Ventilation), "
"30 (Surgical Airways), and related specialty chapters.",
ParagraphStyle('Footer', fontSize=8, leading=11, textColor=colors.HexColor('#666666'),
fontName='Helvetica-Oblique', alignment=TA_CENTER)))
# ─── BUILD ──────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT_PATH, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="Airway Management - ED and Surgical Options",
author="Tintinalli's Emergency Medicine",
subject="Emergency Airway Management"
)
doc.build(elements)
print(f"PDF generated: {OUTPUT_PATH}")
cd /tmp/workspace/airway-management && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/airway-management/Airway_Management_ED_Surgical_Tintinalli.pdf
Airway Management ED Surgical Tintinalli
PDF Document · PDF
| # | Section |
|---|---|
| 1 | Overview - Classification (noninvasive vs invasive), types of respiratory failure |
| 2 | Anatomy & Difficult Airway Prediction - LEMON mnemonic, Mallampati classification, causes of upper airway obstruction |
| 3 | Noninvasive Airway - Manual manoeuvres, OPA/NPA, BVM technique, HFNC, apnoeic oxygenation |
| 4 | NIPPV - CPAP vs BiPAP modes, settings, indications, contraindications, evidence |
| 5 | Supraglottic Airways - LMA, Combitube, King LTS-D, i-gel, ILMA; SGA-to-ETT conversion |
| 6 | Rapid-Sequence Intubation - 7 P's, all induction agents (ketamine, etomidate, propofol, midazolam), NMBAs (succinylcholine vs rocuronium), sugammadex rescue |
| 7 | Tracheal Intubation - Pre-intubation checklist, orotracheal technique step-by-step, video laryngoscopy, blind nasotracheal intubation |
| 8 | Confirming ETT Placement - Waveform capnography (gold standard), colorimetric, auscultation, ultrasound, CXR |
| 9 | Difficult Airway Algorithms - CICO pathway, BURP, SALAD, bougie, awake intubation |
| 10 | Surgical Airways - Cricothyrotomy (standard + bougie-assisted + rapid 4-step), TTJV, tracheostomy; cricothyrotomy vs tracheostomy comparison table |
| 11 | Mechanical Ventilation - Modes (VC, PC, SIMV, PS), initial settings table, lung-protective strategy (ARDSnet), ventilator troubleshooting |
| 12 | Complications - Peri-intubation (hypotension 23%, cardiac arrest 4%, desaturation, aspiration), post-intubation, surgical airway complications - all with prevention and corrective actions |
| 13 | Special Populations - Pregnancy, paediatrics (ETT sizing formulas), trauma, obesity (ramped position), burns/inhalation injury |
| 14 | Outcomes - First-pass success data, effect of multiple attempts on complication rates, NIPPV outcome data by indication, mortality impact |