Describe laryngoscope blades used in anaesthesia. Compare macintosh, miller, maccoy blades Give in tabular form, add diagrams give foe 10 marls question, assignment given by HOD mam References - millers, morgan, barash, baheti , dnb kaushik and all other standard textbooks of anesthesia
McCoy laryngoscope blade anaesthesia hinged tip mechanism advantages clinical uses

"The Macintosh and Miller blades are the most popular curved and straight designs, respectively, in North America. Because no blade is perfect for all situations, the clinician should become proficient with a variety of blade designs." - Morgan & Mikhail's Clinical Anesthesiology, 7e
| Type | Example |
|---|---|
| Curved (C-shaped) | Macintosh, McCoy |
| Straight (L-shaped) | Miller, Wisconsin, Magill, Soper |
| Blade | Available Sizes | Common Adult Size |
|---|---|---|
| Macintosh | 0, 1, 2, 3, 4 | Size 3 (size 4 for large adults) |
| Miller | 0, 1, 2, 3, 4 | Size 2 |
| McCoy | 3, 4 | Size 3 |



| Feature | Macintosh | Miller | McCoy |
|---|---|---|---|
| Shape | Curved (C-shaped) | Straight (L-shaped) | Curved + hinged tip |
| Year introduced | 1943 | 1941 | 1993 |
| Inventor | Sir Robert Macintosh | Robert Miller | Eamon P. McCoy |
| Tip placement | Vallecula | Under epiglottis (posterior) | Vallecula |
| Epiglottis lifting | Indirect (via hyoepiglottic ligament) | Direct (directly elevates epiglottis) | Indirect + augmented by lever |
| Mechanism | Tension on hyoepiglottic ligament | Direct epiglottis elevation | Vallecula placement + distal tip flexion |
| Standard adult size | Size 3 | Size 2 | Size 3 |
| Available sizes | 0-4 | 0-4 | 3, 4 |
| Flange size | Wide | Narrow | Wide (similar to Mac) |
| Space for ETT in oropharynx | More | Less | More |
| Primary use | Adults - routine intubation | Pediatrics; long epiglottis; anterior larynx | Difficult airway; limited neck mobility |
| Preferred in pediatrics | No | Yes | Occasionally |
| Preferred in anterior larynx | No | Yes | Yes (via lever) |
| Preferred in long, floppy epiglottis | No | Yes | Yes (lever lifts it) |
| Preferred in restricted neck mobility | No | No | Yes |
| Force required | Moderate | More direct force | Less force needed |
| Dental trauma risk | Lower (wide flange) | Higher | Lower |
| Laryngeal trauma risk | Lower (indirect) | Moderate (direct contact) | Lower |
| Cardiovascular stress response | Moderate | Higher | Lower |
| Technical difficulty | Easier to learn | More skill needed | Moderate (requires lever familiarity) |
| C-L grade improvement | Baseline | Better direct view | Improves by 1-2 grades |
| Cost | Low | Low | Moderate-High |
| Special feature | Gold standard curved blade | Best direct view of cords | Hinged/levering tip mechanism |
| Contraindications/limitations | Short thyromental distance; long epiglottis | Less oropharyngeal space | Very limited mouth opening |
| Blade | Type | Key Feature |
|---|---|---|
| Wisconsin | Straight | Straight with wide flange; pediatrics |
| Soper | Straight | Modified straight blade |
| Wis-Hippel | Straight | Pediatric; size 1.5 |
| Seward | Straight | Infant/pediatric |
| Flagg | Straight | Wide flange straight blade |
| Callander | Curved | Modified Macintosh |
| Polio blade | Curved | 135-degree blade-handle angle for difficult access (barrel chest, short neck) |
| Left-sided blades | Curved | For right-sided pathology; mirror image of Macintosh |
| Clinical Scenario | Recommended Blade |
|---|---|
| Routine adult intubation | Macintosh size 3 |
| Large adult / deep pharynx | Macintosh size 4 |
| Pediatric patient (< 8 years) | Miller size 0, 1, or 1.5 |
| Long, floppy epiglottis | Miller or McCoy |
| Short thyromental distance | Miller or McCoy |
| Prominent upper incisors | Miller |
| Anterior larynx (C-L grade 3) | McCoy (lever) or Miller |
| Restricted cervical spine movement | McCoy |
| Reduced cardiovascular response needed | McCoy |
| Barrel chest / thoracic kyphosis | Polio blade |
| MRI environment | Fiberoptic blade (no metal) |
Examiner's Tip: For a 10-mark answer, structure your response as: Introduction (1 mark) → Classification (1 mark) → Individual blade descriptions with mechanisms (3 marks) → Comparative table (3 marks) → Clinical selection / special scenarios (1 mark) → Key clinical points / conclusion (1 mark). Always include blade diagrams if allowed in the exam hall.
Generate a PDF quick-reference cheat sheet of laryngoscope blade selection
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/laryngoscope-cheatsheet && cat > /tmp/workspace/laryngoscope-cheatsheet/generate_cheatsheet.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm, cm from reportlab.platypus import ( SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable, KeepTogether ) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame from reportlab.pdfgen import canvas from reportlab.lib.colors import HexColor # ── Colour palette (clinical, readable) ───────────────────────────────────── DARK_BLUE = HexColor("#1A3A5C") # header bg MID_BLUE = HexColor("#2E6DA4") # section headers LIGHT_BLUE = HexColor("#D6E8F7") # alternate row / header bg ACCENT_RED = HexColor("#C0392B") # warnings/highlights ACCENT_GRN = HexColor("#1E8449") # "preferred" green ACCENT_ORG = HexColor("#E67E22") # McCoy orange LIGHT_GREY = HexColor("#F2F2F2") # table row alt WHITE = colors.white BLACK = colors.black W, H = A4 # 595 x 842 pts # ── Page background + header/footer canvas callback ───────────────────────── def draw_page(c, doc): c.saveState() # Top banner c.setFillColor(DARK_BLUE) c.rect(0, H - 38*mm, W, 38*mm, fill=1, stroke=0) # Title c.setFillColor(WHITE) c.setFont("Helvetica-Bold", 16) c.drawCentredString(W/2, H - 14*mm, "LARYNGOSCOPE BLADE SELECTION") c.setFont("Helvetica", 9) c.drawCentredString(W/2, H - 22*mm, "Quick-Reference Cheat Sheet | Anaesthesia") c.setFont("Helvetica-Oblique", 7.5) c.drawCentredString(W/2, H - 29*mm, "Sources: Miller's 10e · Morgan & Mikhail 7e · Barash 9e · Fishman's · Scott-Brown's") # Bottom footer c.setFillColor(DARK_BLUE) c.rect(0, 0, W, 9*mm, fill=1, stroke=0) c.setFillColor(WHITE) c.setFont("Helvetica", 7) c.drawString(12*mm, 3*mm, "For educational use only · Verify with current institutional guidelines") c.drawRightString(W - 12*mm, 3*mm, f"Page {doc.page}") c.restoreState() # ── Document setup ──────────────────────────────────────────────────────────── OUTPUT = "/tmp/workspace/laryngoscope-cheatsheet/Laryngoscope_Blade_Cheatsheet.pdf" doc = BaseDocTemplate( OUTPUT, pagesize=A4, leftMargin=12*mm, rightMargin=12*mm, topMargin=44*mm, bottomMargin=14*mm, ) frame = Frame( doc.leftMargin, doc.bottomMargin, W - doc.leftMargin - doc.rightMargin, H - doc.topMargin - doc.bottomMargin, id="main" ) doc.addPageTemplates([PageTemplate(id="main", frames=frame, onPage=draw_page)]) # ── Styles ──────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() def sec_header(text): return Paragraph( f"<font color='white'><b>{text}</b></font>", ParagraphStyle("sh", fontSize=9, leading=12, backColor=MID_BLUE, textColor=WHITE, leftIndent=4, rightIndent=4, spaceBefore=5, spaceAfter=3, borderPad=3) ) body = ParagraphStyle("body", fontSize=7.5, leading=10, spaceAfter=2) small = ParagraphStyle("small", fontSize=7, leading=9) bold_small = ParagraphStyle("bsmall", fontSize=7.5, leading=9, fontName="Helvetica-Bold") center_bold = ParagraphStyle("cb", fontSize=8, leading=10, alignment=TA_CENTER, fontName="Helvetica-Bold") center_sm = ParagraphStyle("csm", fontSize=7, leading=9, alignment=TA_CENTER) warning = ParagraphStyle("warn", fontSize=7.5, leading=10, textColor=ACCENT_RED, fontName="Helvetica-Bold") green_s = ParagraphStyle("grn", fontSize=7.5, leading=10, textColor=ACCENT_GRN, fontName="Helvetica-Bold") # Reusable cell text builder def C(txt, style=None, color=None): st = style or small if color: return Paragraph(f"<font color='{color}'><b>{txt}</b></font>", st) return Paragraph(txt, st) def CB(txt, c=None): col = f" color='{c}'" if c else "" return Paragraph(f"<b{col}>{txt}</b>", small) story = [] # ═══════════════════════════════════════════════════════════════════════ # SECTION 1 - OVERVIEW BOX # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("1 OVERVIEW: COMPONENTS OF A LARYNGOSCOPE")) overview_data = [ [CB("Handle"), Paragraph("Contains batteries / light source. Standard sizes: regular, short (bariatric/obstetric). Detachable from blade.", small)], [CB("Blade"), Paragraph("The working element. Two fundamental types: <b>Curved</b> (Macintosh, McCoy) and <b>Straight</b> (Miller, Wisconsin, Magill).", small)], [CB("Flange"), Paragraph("The vertical wall of the blade that displaces the tongue laterally. Wider in curved blades → more oropharyngeal space.", small)], [CB("Light source"), Paragraph("Bulb at blade tip (conventional) | Fiberoptic bundle (MRI compatible) | LED (modern, brighter).", small)], [CB("Electrical contact"), Paragraph("At blade-handle junction. Completes circuit when blade is locked at 90°.", small)], ] t = Table(overview_data, colWidths=[32*mm, None]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,-1), LIGHT_GREY), ("BACKGROUND", (0,0),(0,-1), LIGHT_BLUE), ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("VALIGN", (0,0),(-1,-1), "TOP"), ("LEFTPADDING", (0,0),(-1,-1), 5), ("RIGHTPADDING", (0,0),(-1,-1), 5), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ("ROWBACKGROUNDS", (0,0),(-1,-1), [LIGHT_BLUE, LIGHT_GREY]), ])) story.append(t) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 2 - MAIN COMPARISON TABLE # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("2 MACINTOSH vs MILLER vs McCOY — COMPARISON")) # Header row hdr = [ Paragraph("<b>Feature</b>", center_bold), Paragraph("<font color='white'><b>MACINTOSH</b></font>", ParagraphStyle("mh", fontSize=9, alignment=TA_CENTER, fontName="Helvetica-Bold", textColor=WHITE)), Paragraph("<font color='white'><b>MILLER</b></font>", ParagraphStyle("mh2", fontSize=9, alignment=TA_CENTER, fontName="Helvetica-Bold", textColor=WHITE)), Paragraph("<font color='white'><b>McCOY</b></font>", ParagraphStyle("mh3", fontSize=9, alignment=TA_CENTER, fontName="Helvetica-Bold", textColor=WHITE)), ] rows = [ ["Shape", "Curved (C-shaped)", "Straight (L-shaped)", "Curved + hinged distal tip"], ["Year / Inventor", "1943 / Sir Robert Macintosh\n(Oxford)", "1941 / Robert Miller\n(Texas)", "1993 / Eamon P. McCoy"], ["Tip placement", "Vallecula\n(between tongue base & epiglottis)", "Under epiglottis\n(posterior surface)", "Vallecula\n(+ lever flexes tip)"], ["Epiglottis lift", "INDIRECT\n(hyoepiglottic ligament tension)", "DIRECT\n(physically elevates epiglottis)", "INDIRECT + augmented\n(lever lifts tip focally)"], ["Standard adult size", "Size 3\n(size 4 for large adults)", "Size 2\n(size 3 for large)", "Size 3"], ["Available sizes", "0, 1, 2, 3, 4", "0, 1, 2, 3, 4", "3, 4 only"], ["Flange", "Wide → more oropharyngeal space\n→ easier ETT passage", "Narrow → less oropharyngeal space", "Wide (similar to Macintosh)"], ["Force required", "Moderate", "More direct force\n(higher)", "Less force overall\n(lever does the work)"], ["Dental trauma risk", "Lower (wide flange distributes force)", "Moderate-Higher\n(direct levering)", "Lower"], ["Hemodynamic response", "Moderate", "Higher", "Lower\n(less overall force)"], ["Preferred: Adults", "YES — gold standard", "If difficult view", "Difficult airway adults"], ["Preferred: Pediatrics", "Less preferred", "YES — 1st choice", "Occasionally"], ["Best for: Long/floppy epiglottis", "No", "YES", "YES (lever lifts it)"], ["Best for: Anterior larynx\n(short TMD, prominent teeth)", "No", "YES", "YES (lever elevation)"], ["Best for: Limited neck mobility\n(C-spine injury/fixation)", "No", "No", "YES — 1st choice"], ["Best for: Requires BURP/ELP", "Often needed", "Sometimes", "Reduces need for ELP"], ["C-L grade improvement", "Baseline reference", "Better direct view", "Improves by 1–2 grades"], ["Special feature", "Gold standard curved blade.\nMost widely used worldwide.", "Best direct glottic view.\nNarrow profile.", "Lever-controlled hinged tip.\nReduces cardiovascular stress."], ["Cost", "Low", "Low", "Moderate-High"], ] def make_row(cells, i): bg_feat = LIGHT_BLUE if i % 2 == 0 else LIGHT_GREY return [ Paragraph(f"<b>{cells[0]}</b>", ParagraphStyle("feat", fontSize=7, leading=9, fontName="Helvetica-Bold")), Paragraph(cells[1].replace("\n","<br/>"), small), Paragraph(cells[2].replace("\n","<br/>"), small), Paragraph(cells[3].replace("\n","<br/>"), small), ] table_data = [hdr] + [make_row(r, i) for i, r in enumerate(rows)] CW = [38*mm, 48*mm, 44*mm, 44*mm] main_table = Table(table_data, colWidths=CW, repeatRows=1) main_table.setStyle(TableStyle([ # Header row colours ("BACKGROUND", (0,0),(0,0), LIGHT_BLUE), ("BACKGROUND", (1,0),(1,0), MID_BLUE), ("BACKGROUND", (2,0),(2,0), HexColor("#1A5C2E")), ("BACKGROUND", (3,0),(3,0), HexColor("#7D3C00")), # Alternating row colours ("ROWBACKGROUNDS", (0,1),(-1,-1), [LIGHT_GREY, WHITE]), # Feature column ("BACKGROUND", (0,1),(0,-1), LIGHT_BLUE), # Grid ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("VALIGN", (0,0),(-1,-1), "TOP"), ("LEFTPADDING", (0,0),(-1,-1), 4), ("RIGHTPADDING", (0,0),(-1,-1), 4), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ])) story.append(main_table) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 3 - CLINICAL SELECTION GUIDE # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("3 CLINICAL BLADE SELECTION GUIDE")) sel_data = [ [Paragraph("<b>Clinical Scenario</b>", center_bold), Paragraph("<b>Blade of Choice</b>", center_bold), Paragraph("<b>Rationale</b>", center_bold)], ["Routine adult intubation", CB("Macintosh size 3", "#2E6DA4"), "Gold standard; most familiar; adequate oropharyngeal space"], ["Large adult / deep pharynx", CB("Macintosh size 4", "#2E6DA4"), "Tip reaches vallecula in patients with long thyromental distance"], ["Infant / neonate (< 1 yr)", CB("Miller size 0 or 1", "#1A5C2E"), "Anterior larynx (C2–C3); long epiglottis; straight blade gives better view"], ["Child 1–8 years", CB("Miller size 1 or Wis-Hippel 1.5", "#1A5C2E"), "Same anatomical rationale as neonates; small straight blade preferred"], ["Child > 8 years / adult", CB("Macintosh size 2–3", "#2E6DA4"), "Larynx descends to adult position (C4–C5)"], ["Long / floppy epiglottis", CB("Miller or McCoy (lever)", "#1A5C2E"), "Miller directly lifts it; McCoy lever elevates without gross movement"], ["Short thyromental distance\n(< 6 cm / 3 FB)", CB("Miller or McCoy", "#1A5C2E"), "Straight or levering blade needed; curved blade tip cannot reach vallecula"], ["Prominent upper incisors\n(anterior larynx)", CB("Miller or McCoy", "#1A5C2E"), "Less overall tongue displacement required"], ["Restricted cervical spine\n(trauma, ankylosing spondylitis, halo frame)", CB("McCoy — 1st choice", "#7D3C00"), "Lever action needs less neck extension; less C-spine force"], ["C-L grade 3 view\n(epiglottis only seen)", CB("McCoy (lever on)", "#7D3C00"), "Lever flexion converts grade 3 → grade 2/1 in majority of cases"], ["Reduced cardiovascular stress\nneeded (IHD, hypertension)", CB("McCoy", "#7D3C00"), "Lower overall force → less sympathetic stimulation"], ["Barrel chest / large breasts\n(restricted blade insertion angle)", CB("Polio blade (135° angle)", "#C0392B"), "Obtuse handle angle allows blade insertion in restricted chest access"], ["MRI suite", CB("Fiberoptic / non-metal blade", "#555"), "No ferromagnetic components; fiberoptic light bundle instead of bulb"], ["Micro-laryngeal surgery\n(very small mouth opening needed)", CB("Miller (narrow profile)", "#1A5C2E"), "Narrow cross-section minimises mouth opening requirement"], ] # Build table sel_rows = [] for i, row in enumerate(sel_data): if i == 0: sel_rows.append(row) else: sel_rows.append([ Paragraph(row[0].replace("\n","<br/>"), small), Paragraph(row[1].get_platypus_str() if hasattr(row[1],"get_platypus_str") else row[1].text if hasattr(row[1],"text") else str(row[1]), small), Paragraph(row[2].replace("\n","<br/>"), small), ]) # simpler approach for sel table sel_raw = [ ["Clinical Scenario", "Blade of Choice", "Rationale"], ["Routine adult intubation", "Macintosh size 3", "Gold standard; adequate oropharyngeal space"], ["Large adult / deep pharynx", "Macintosh size 4", "Tip reaches vallecula in long TMD patients"], ["Infant / neonate (< 1 yr)", "Miller size 0 or 1", "Anterior larynx (C2-C3); long epiglottis"], ["Child 1-8 years", "Miller 1 / Wis-Hippel 1.5", "Same anatomical rationale; small straight blade"], ["Child > 8 years", "Macintosh size 2-3", "Larynx at adult position (C4-C5)"], ["Long / floppy epiglottis", "Miller or McCoy (lever)", "Direct lift or lever elevation of epiglottis"], ["Short TMD (< 6 cm)", "Miller or McCoy", "Curved blade tip cannot reach vallecula"], ["Prominent upper incisors", "Miller or McCoy", "Less tongue displacement required"], ["Restricted C-spine\n(trauma, halo, AS)", "McCoy — 1st choice", "Lever needs less neck extension; less C-spine force"], ["C-L grade 3 view", "McCoy (lever activated)", "Lever converts grade 3 → grade 1/2 in majority"], ["High cardiovascular risk\n(IHD, HTN)", "McCoy", "Less force = less sympathetic stimulation"], ["Barrel chest / large breasts", "Polio blade (135° angle)", "Obtuse angle allows restricted insertion"], ["MRI environment", "Fiberoptic / non-metal blade", "No ferromagnetic components in blade"], ] # Colour coding for blade column blade_colors = { "Macintosh": MID_BLUE, "Miller": HexColor("#1A5C2E"), "McCoy": HexColor("#7D3C00"), "Polio": HexColor("#6C3483"), "Fiberoptic": colors.grey, "Wis": HexColor("#1A5C2E"), } def blade_color(txt): for k, c in blade_colors.items(): if k.lower() in txt.lower(): return c return BLACK sel_table_data = [] for i, row in enumerate(sel_raw): if i == 0: sel_table_data.append([ Paragraph(f"<b>{row[0]}</b>", center_bold), Paragraph(f"<b>{row[1]}</b>", center_bold), Paragraph(f"<b>{row[2]}</b>", center_bold), ]) else: bc = blade_color(row[1]) hex_c = "#{:02X}{:02X}{:02X}".format(int(bc.red*255), int(bc.green*255), int(bc.blue*255)) sel_table_data.append([ Paragraph(row[0].replace("\n","<br/>"), small), Paragraph(f"<font color='{hex_c}'><b>{row[1]}</b></font>", small), Paragraph(row[2], small), ]) sel_table = Table(sel_table_data, colWidths=[52*mm, 46*mm, 76*mm], repeatRows=1) sel_table.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,0), MID_BLUE), ("TEXTCOLOR", (0,0),(-1,0), WHITE), ("ROWBACKGROUNDS", (0,1),(-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("VALIGN", (0,0),(-1,-1), "TOP"), ("LEFTPADDING", (0,0),(-1,-1), 4), ("RIGHTPADDING", (0,0),(-1,-1), 4), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ])) story.append(sel_table) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 4 - BLADE SIZES AT A GLANCE # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("4 BLADE SIZES AT A GLANCE")) sz_data = [ [Paragraph("<b>Size</b>", center_bold), Paragraph("<b>Macintosh (Curved)</b>", center_bold), Paragraph("<b>Miller (Straight)</b>", center_bold), Paragraph("<b>McCoy</b>", center_bold)], ["0", "Neonate / premature", "Premature infant", "N/A"], ["1", "Infant", "Infant (< 1 yr)", "N/A"], ["2", "Small child / small adult", "Child 1-8 yrs / small adult", "N/A"], ["3", "Standard adult", "Adolescent / adult", "Standard adult"], ["4", "Large adult", "Large adult", "Large adult"], ] sz_table = Table(sz_data, colWidths=[15*mm, 51*mm, 51*mm, 57*mm]) sz_table.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,0), MID_BLUE), ("TEXTCOLOR", (0,0),(-1,0), WHITE), ("ROWBACKGROUNDS", (0,1),(-1,-1), [LIGHT_GREY, WHITE]), ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("ALIGN", (0,0),(0,-1), "CENTER"), ("FONTNAME", (0,1),(0,-1), "Helvetica-Bold"), ("LEFTPADDING", (0,0),(-1,-1), 4), ("RIGHTPADDING", (0,0),(-1,-1), 4), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ("VALIGN", (0,0),(-1,-1), "MIDDLE"), ])) story.append(sz_table) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 5 - KEY CLINICAL PEARLS # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("5 KEY CLINICAL PEARLS & EXAMINER FAVOURITES")) pearls = [ ("1", MID_BLUE, "Macintosh tip → VALLECULA (indirect lift via hyoepiglottic ligament). " "Miller tip → UNDER EPIGLOTTIS (direct lift). McCoy → vallecula + lever."), ("2", MID_BLUE, "Standard sizes: Macintosh 3 for most adults; Miller 2 for most adults; " "Miller 0/1 for neonates/infants."), ("3", ACCENT_GRN, "Sniffing position: 35° cervical flexion (7-9 cm head elevation) + " "atlantooccipital extension. Aligns oral, pharyngeal, and laryngeal axes."), ("4", ACCENT_GRN, "Correct Macintosh force vector: 45° upward and away, using anterior deltoid + triceps. " "NEVER rock back on upper incisors (wrist flexion) — causes dental trauma."), ("5", HexColor("#7D3C00"), "McCoy blade introduced 1993. Lever activates hinged distal tip (flexes ~70°). " "Place tip in vallecula first, then press lever with thumb. Only epiglottis is elevated."), ("6", HexColor("#7D3C00"), "McCoy reduces Cormack-Lehane grade by 1-2 in most cases. " "Also reduces need for BURP / external laryngeal pressure and blunts hemodynamic response."), ("7", ACCENT_RED, "Curved blades → wider flange → more room for ETT in oropharynx → less dental trauma. " "Straight blades → narrow flange → less oropharyngeal space → more precise technique needed."), ("8", ACCENT_RED, "Infant larynx at C2-C3 (anterior + cephalad). Adult larynx at C4-C5. " "Straight blades preferred in children < 8 years for direct epiglottis control."), ("9", HexColor("#6C3483"), "Polio blade: 135° blade-handle angle for barrel chest, thoracic kyphosis, " "large breasts, or short neck — allows laryngoscopy when standard handle is obstructed."), ("10", colors.black, "Always have a plan B: if Macintosh fails, try Miller or McCoy. " "Video laryngoscopy (C-MAC, McGrath, GlideScope) as escalation for difficult airway."), ] pearl_data = [] for num, col, text in pearls: hex_c = "#{:02X}{:02X}{:02X}".format(int(col.red*255), int(col.green*255), int(col.blue*255)) pearl_data.append([ Paragraph(f"<font color='{hex_c}'><b>{num}</b></font>", ParagraphStyle("pn", fontSize=9, alignment=TA_CENTER, fontName="Helvetica-Bold")), Paragraph(text, small), ]) pearl_table = Table(pearl_data, colWidths=[9*mm, None]) pearl_table.setStyle(TableStyle([ ("ROWBACKGROUNDS", (0,0),(-1,-1), [LIGHT_GREY, WHITE]), ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("VALIGN", (0,0),(-1,-1), "TOP"), ("LEFTPADDING", (0,0),(-1,-1), 4), ("RIGHTPADDING", (0,0),(-1,-1), 4), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ("ALIGN", (0,0),(0,-1), "CENTER"), ])) story.append(pearl_table) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 6 - MNEMONIC + OTHER BLADES BOX # ═══════════════════════════════════════════════════════════════════════ mnem_text = ( "<b>Mnemonic — \"Mac Curves, Mil Straights, McCoy Levers\"</b><br/>" "<font color='#2E6DA4'><b>MAC</b>intosh</font> = <b>C</b>urved · <b>C</b>ovallecula · <b>C</b>ommon adult | " "<font color='#1A5C2E'><b>MIL</b>ler</font> = <b>S</b>traight · <b>S</b>ub-epiglottis · <b>S</b>mall children | " "<font color='#7D3C00'><b>McC</b>oy</font> = <b>L</b>ever · <b>L</b>imited neck · <b>L</b>ess force" ) story.append(Paragraph(mnem_text, ParagraphStyle("mnem", fontSize=8, leading=12, backColor=HexColor("#FEF9E7"), borderColor=HexColor("#F0C040"), borderWidth=1, borderPad=5, spaceAfter=4))) story.append(sec_header("6 OTHER NOTABLE BLADES")) other_data = [ [Paragraph("<b>Blade</b>", center_bold), Paragraph("<b>Type</b>", center_bold), Paragraph("<b>Key Feature / Use</b>", center_bold)], ["Wisconsin", "Straight", "Wide flange; commonly used in pediatrics"], ["Wis-Hippel", "Straight", "Pediatric size 1.5; infant/toddler"], ["Seward", "Straight", "Infant and neonate"], ["Magill", "Straight", "Older design; rarely used now"], ["Flagg", "Straight", "Wide flange straight; occasionally in pediatrics"], ["Soper", "Straight", "Modified straight; occasional use"], ["Callander", "Curved", "Modified Macintosh; slightly different curve"], ["Polio blade", "Curved 135°", "Barrel chest, large breasts, limited access"], ["Left-sided blade", "Curved (mirror)", "Right-sided oral lesions / tumours"], ["Fibre-optic blade", "Curved/Straight", "MRI suite; no ferromagnetic components"], ] other_table = Table(other_data, colWidths=[35*mm, 30*mm, None]) other_table.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,0), MID_BLUE), ("TEXTCOLOR", (0,0),(-1,0), WHITE), ("ROWBACKGROUNDS", (0,1),(-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0),(-1,-1), 0.4, colors.grey), ("FONTNAME", (0,1),(0,-1), "Helvetica-Bold"), ("VALIGN", (0,0),(-1,-1), "TOP"), ("LEFTPADDING", (0,0),(-1,-1), 4), ("RIGHTPADDING", (0,0),(-1,-1), 4), ("TOPPADDING", (0,0),(-1,-1), 3), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ])) story.append(other_table) story.append(Spacer(1, 3*mm)) # ═══════════════════════════════════════════════════════════════════════ # SECTION 7 - REFERENCES # ═══════════════════════════════════════════════════════════════════════ story.append(sec_header("7 REFERENCES")) refs = [ "1. Miller's Anesthesia, 10th Ed — Gropper MA et al. Chapter 40: Airway Management. Elsevier, 2023.", "2. Morgan & Mikhail's Clinical Anesthesiology, 7th Ed — Chapter 19. McGraw-Hill, 2022.", "3. Barash, Cullen & Stoelting's Clinical Anesthesia, 9th Ed — Chapter 3. Wolters Kluwer, 2023.", "4. Fishman's Pulmonary Diseases & Disorders — Chapter 145: Direct Laryngoscopy & Tracheal Intubation.", "5. Scott-Brown's Otorhinolaryngology Head & Neck Surgery, Vol 1 — Chapter 31.", "6. Roberts & Hedges' Clinical Procedures in Emergency Medicine — Chapter 4: Laryngoscope.", "7. McCoy EP, Mirakhur RK. The levering laryngoscope. Anaesthesia. 1993;48(6):516–519.", "8. Baheti DK et al. Basics of Anaesthesia (DNB / Kaushik reference series).", ] ref_text = "<br/>".join(refs) story.append(Paragraph(ref_text, ParagraphStyle("refs", fontSize=6.5, leading=9, textColor=HexColor("#333333")))) # ── Build PDF ───────────────────────────────────────────────────────────────── doc.build(story) print(f"PDF written to: {OUTPUT}") PYEOF echo "Script written."
cd /tmp/workspace/laryngoscope-cheatsheet && python generate_cheatsheet.py 2>&1
ls -lh /tmp/workspace/laryngoscope-cheatsheet/Laryngoscope_Blade_Cheatsheet.pdf
Laryngoscope Blade Cheatsheet
PDF Document · PDF
| Section | Content |
|---|---|
| 1 - Overview | Components of a laryngoscope (handle, blade, flange, light source, electrical contact) |
| 2 - Main Comparison | Full side-by-side table: Macintosh vs Miller vs McCoy across 19 features (shape, inventor, tip placement, mechanism, sizes, flange, force, dental trauma, hemodynamic response, best-use scenarios, C-L grade, cost) |
| 3 - Clinical Selection Guide | 14 clinical scenarios mapped to the correct blade with colour-coded blade names and rationale |
| 4 - Blade Sizes | Size 0-4 for Macintosh, Miller, and McCoy with patient age/type |
| 5 - Clinical Pearls | 10 numbered high-yield exam points (tip placement, force vector, sniffing position, McCoy mechanism, pediatric anatomy, etc.) |
| 6 - Other Blades + Mnemonic | Wisconsin, Wis-Hippel, Polio, Flagg, Seward, Fiberoptic blades + "Mac Curves, Mil Straights, McCoy Levers" mnemonic box |
| 7 - References | All 8 sources (Miller's 10e, Morgan 7e, Barash 9e, Fishman's, Scott-Brown's, Roberts & Hedges, McCoy 1993 paper, Baheti/Kaushik) |