Tumor markers in ent

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Searching the Web

tumor markers ENT head neck surgery calcitonin thyroglobulin SCC-Ag NPC EBV CEA

Now I have enough information from the ENT textbooks and web sources to compile a comprehensive answer.

Tumor Markers in ENT (Head and Neck)

Tumor markers in ENT are substances (proteins, antigens, hormones, nucleic acids) detectable in blood, urine, or tissue that reflect the presence, behavior, or prognosis of head and neck malignancies. They are used for diagnosis, staging, monitoring treatment response, and detecting recurrence.

1. Thyroid Malignancies

These are the most marker-driven cancers in ENT practice.

Thyroglobulin (Tg)

  • Tumor: Differentiated thyroid carcinoma (papillary and follicular)
  • Use: Post-thyroidectomy surveillance marker; undetectable levels = disease free; rising levels = recurrence
  • Used in combination with neck ultrasound - patients considered disease free only when both Tg is undetectable AND neck US is negative
  • Normal: <33 ng/mL; post-total thyroidectomy: <2 ng/mL
  • Pitfall: Anti-thyroglobulin antibodies (TgAb) can falsely lower Tg readings

Calcitonin

  • Tumor: Medullary thyroid carcinoma (MTC) - produced by parafollicular C-cells
  • Use: Diagnosis, preoperative staging, post-surgical surveillance, and screening of family members (MEN 2A, MEN 2B)
  • Elevated calcitonin level is essentially diagnostic of MTC
  • Stimulated calcitonin (pentagastrin or calcium infusion test) used for early/occult MTC

CEA (Carcinoembryonic Antigen)

  • Also elevated in medullary thyroid carcinoma
  • Used alongside calcitonin for MTC follow-up; a rising CEA with stable/falling calcitonin suggests dedifferentiation ("calcitonin escape")

2. Nasopharyngeal Carcinoma (NPC)

EBV (Epstein-Barr Virus) Markers

  • IgA antibodies to EBV VCA (Viral Capsid Antigen) - most widely used serological marker
  • IgA antibodies to EBV EA (Early Antigen) - correlates with tumor burden
  • Cell-free plasma EBV DNA - highly sensitive and specific; used for:
    • Screening in endemic populations (Southeast Asia, Southern China)
    • Monitoring disease response during radiotherapy
    • Detecting residual disease and predicting relapse
  • Classified as an exogenous viral marker - EBV-coded RNA (EBER) detectable in tumor tissue

3. Squamous Cell Carcinoma (SCC) of Head & Neck (HNSCC)

SCC Antigen (SCC-Ag)

  • Glycoprotein from SCC cells; most relevant to laryngeal, pharyngeal, and oral cavity SCC
  • Elevated levels correlate with tumor mass, lymph node metastasis, and stage
  • Used for monitoring treatment response and detecting recurrence
  • Also elevated in cervical SCC (hence sometimes listed under gynecology)

CYFRA 21-1 (Cytokeratin 19 Fragment)

  • Reflects epithelial cell turnover; elevated in HNSCC
  • Correlates with tumor stage and poor prognosis
  • Useful alongside SCC-Ag for overall HNSCC monitoring
  • Patients with high CYFRA 21-1 dying within 24 months had significantly elevated levels vs. survivors (p<0.05)

CEA (Carcinoembryonic Antigen)

  • Non-specific; elevated in oral cavity and pharyngeal SCC
  • Normal: <2.5 ng/mL (non-smokers), <5 ng/mL (smokers)
  • CEA >100 ng/mL generally indicates metastatic disease

LDH (Lactate Dehydrogenase)

  • Non-specific but significant in HNSCC grading
  • High serum LDH correlates with moderately differentiated SCC
  • Indicator of tumor grade and treatment prognosis

TPS (Tissue Polypeptide Specific Antigen)

  • Marker of proliferation; elevated in advanced HNSCC
  • Used alongside other markers for survival prediction (distinguishes alive vs. dead at 24 months with p<0.05)

sIL-2R (Soluble Interleukin-2 Receptor)

  • Immune marker associated with aggressive HNSCC
  • Elevated levels correlate with poor survival outcomes

4. HPV and Molecular Markers in HNSCC

p16 / HPV

  • p16 (INK4a) is the surrogate immunohistochemical marker for high-risk HPV (especially HPV-16)
  • Used for oropharyngeal SCC staging and prognosis
  • HPV-positive OPSCC has a markedly better prognosis than HPV-negative
  • p16 testing is standard in oropharyngeal cancer staging (AJCC 8th edition creates a separate staging system for p16+ OPSCC)
  • From Cummings Otolaryngology: "Testing for HPV or the p16 tumor suppressor gene, its surrogate marker, enable accurate tumor staging and treatment planning"

5. Salivary Gland Tumors

Molecular/Prognostic Markers

  • Ki-67 - proliferation marker; high Ki-67 + low p27 = worse prognosis in salivary gland malignancies. Considered a more accurate marker of proliferating cells than other markers
  • HER-2/neu (ERBB2) - overexpressed in ~1/3 of mucoepidermoid carcinomas (MECs) and especially in salivary duct carcinoma; overexpression correlates with poorer prognosis and guides targeted therapy (trastuzumab)
  • MECT1-MAMLI translocation t(11;19) - found in up to 70% of MECs; associated with lower-grade tumor
  • CDKN2A/p27 - low expression = worse prognosis (cyclin-dependent kinase inhibitor)
  • These are primarily tissue/IHC markers; none are in routine clinical serum use yet

6. Other Relevant ENT-Associated Markers

TumorKey Marker(s)
Paraganglioma (glomus tumor)Catecholamines, chromogranin A, 24-hr urine metanephrines
Juvenile nasopharyngeal angiofibromaAndrogen receptor (tissue marker)
Neuroblastoma (in pediatric ENT)NSE, urinary VMA/HVA, AFP
Lymphoma (cervical)LDH, beta-2 microglobulin, CD markers
Malignant melanoma (sinonasal/head neck)S-100, LDH, HMB-45
Carcinoid/neuroendocrine (laryngeal)Chromogranin A, synaptophysin, NSE
Small cell carcinoma (head & neck)Chromogranin A, synaptophysin, NCAM (neural cell adhesion molecule) - all neuroendocrine IHC markers

Summary Table

MarkerCancerUse
ThyroglobulinPapillary/follicular thyroid CaPost-op surveillance
CalcitoninMedullary thyroid CaDiagnosis, follow-up, family screening
CEAMedullary thyroid Ca, HNSCCMonitoring, MTC dedifferentiation
EBV-VCA IgA / EBV DNANasopharyngeal carcinomaScreening, monitoring, recurrence
SCC-AgLaryngeal, pharyngeal, oral SCCMonitoring, prognosis
CYFRA 21-1HNSCCStage, prognosis, follow-up
p16 / HPVOropharyngeal SCCStaging, prognosis
HER-2/neuSalivary duct carcinoma, MECPrognosis, targeted therapy
Ki-67Salivary gland tumors, acinic cell CaGrading, prognosis
LDHHNSCC, lymphomaGrading, prognosis
Chromogranin A / NSEParaganglioma, neuroendocrineDiagnosis, monitoring

Sources: Cummings Otolaryngology Head and Neck Surgery; K.J. Lee's Essential Otolaryngology; PMC tumor markers clinical practice guidelines; HNSCC survival prediction by tumor markers

Local anaesthesia in ent

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Searching the Web

local anaesthesia ENT procedures nerve blocks nose ear throat larynx clinical

I now have comprehensive information from both the ENT textbooks and supplementary web sources. Let me compile a thorough answer.

Local Anaesthesia in ENT

Local anaesthesia (LA) in ENT is central to everyday practice - from outpatient examination procedures to major head and neck surgery under LA with sedation. The ENT region is uniquely suited to LA due to the accessibility of mucosal surfaces and identifiable nerve trunks.

1. Mechanism of Action

Local anaesthetics block voltage-gated sodium channels, preventing depolarization and propagation of nerve impulses. Key properties:
  • Non-ionized form crosses the lipid membrane barrier to reach the intracellular site of action
  • In infected tissue (low pH), more drug is ionized - less penetrates the membrane - hence LA fails in infected fields. The solution: block nerves proximally in healthy tissue
  • All clinically useful agents are diffusible, reversible, predictable, water soluble, and non-irritating to local tissue

2. Classification

Structure: Three-part molecule

All LAs have: Aromatic group - Intermediate bond - Tertiary amine
ClassBondExamplesNotes
Aminoesters-COO-Cocaine, Procaine, Tetracaine, Benzocaine, ChloroprocaineMetabolized by plasma cholinesterase; higher allergy risk; higher pKa = poor penetrance
Aminoamides-NHCO-Lidocaine, Bupivacaine, Ropivacaine, Prilocaine, Mepivacaine, EtidocaineMetabolized by liver; true allergy extremely rare

Three determinants of activity:

  1. Lipid solubility - determines potency and duration
  2. Degree of ionization (pKa) - lower pKa = more non-ionized form = better penetrance
  3. Protein binding - higher binding = longer duration

3. Individual Agents Used in ENT

Aminoester Agents

AgentOnsetDurationMax DoseFormulationENT UsesNotes
Cocaine5-10 min30-60 min2-3 mg/kg4% solutionNasal mucosa (topical only)UNIQUE: only LA with vasoconstriction; blocks NE reuptake causing tachycardia, hypertension, mydriasis; sensitizes myocardium to catecholamines; rarely used now
Tetracaine5-10 min30 min20 mg (single dose)0.25-2% solutionAerosol/topical for upper respiratory tract, ophthalmic1 mL of 2% = maximal dose
Benzocaine5-10 min30-60 min200 mg20% solution/ointmentTopical airway, mucosal dressingsRisk of methemoglobinemia; FDA: not for teething infants
Procaine2-5 min30-90 min1000 mg2%Field/nerve blocksIneffective topically; prolongs succinylcholine effects
Chloroprocaine2-5 min30-60 min800-1000 mg2%Field/nerve blocks, epiduralLow systemic toxicity; fastest hydrolysis

Aminoamide Agents

AgentOnsetDurationMax DoseFormulationENT UsesNotes
Lidocaine5-10 min1-3 hrs5 mg/kg plain; 7 mg/kg with epi0.5-2% injection; 4% topical/viscous; 5% ointmentMost versatile - topical nasal, nerve blocks, infiltration, transtrachealIV 1.5 mg/kg blunts intubation/extubation response
Bupivacaine5-10 min3-10 hrs2-3 mg/kg0.125-0.75%Long-duration infiltration, nerve blocksCardiac toxicity before CNS toxicity - closely monitor; liposomal form (Exparel) lasts up to 72 hrs
Ropivacaine5-10 min4-12 hrs1-3 mg/kg0.2-1.0%Infiltration, peripheral nerve blocks, continuous infusionsLess cardiotoxic than bupivacaine; less motor block; preferred for catheters
Prilocaine2-4 min1-2 hrs8 mg/kg (max 600 mg)4%Infiltration, dense nerve blocksMethemoglobinemia at ≥600 mg
Mepivacaine30 sec-4 min1-4 hrs6 mg/kg (400 mg max)2-3%Infiltration, dental, peripheral nerve blocksLess vasodilation - used without epinephrine; dental anesthesia
Etidocaine3-8 min(long)300 mg plain / 400 mg with epi0.5-1.0%Local infiltrationIntense motor blockade

Miscellaneous

  • Cyclonine: Neither ester nor amide - excellent topical (0.5%, 300 mg max); useful when allergy to both classes documented
  • Cetacaine: Combination (benzocaine + butyl aminobenzoate + tetracaine); mucosal anesthesia; onset 30 seconds; max 2 sprays

4. Vasoconstrictors (Additives)

Epinephrine (adrenaline) is routinely added to LA in ENT:
  • Concentrations: 1:100,000 (1 mg/100 mL) or 1:200,000 (1 mg/200 mL)
  • Benefits:
    • Prolongs nerve block duration
    • Reduces systemic absorption (increases safety margin)
    • Decreases operative blood loss (critical in nasal surgery, tonsillectomy)
  • Side effects: Tachycardia, hypertension - treat with esmolol
  • Avoid in patients on tricyclic antidepressants (TCAs) or MAO inhibitors (hypertensive crisis risk)
Sodium bicarbonate buffering:
  • Adding NaHCO₃ (1:10 dilution - 1 mL bicarb to 10 mL lidocaine) reduces acidity of LA solution
  • Significantly reduces burning pain on injection - routinely used for nasal blocks

5. ENT-Specific Applications and Nerve Blocks

A. Nasal Surgery (Septoplasty, Rhinoplasty, FESS, Fracture Reduction)

Combined topical + injection technique:
  1. Cotton pledgets soaked with 4% cocaine or 0.05% oxymetazoline + 4% topical lidocaine placed to cover branches of:
    • Anterior and posterior ethmoid nerves
    • Sphenopalatine nerve
    • Nasopalatine nerve
    • Leave for 5-10 minutes
  2. Then 1% lidocaine with 1:100,000 epinephrine injected along:
    • Septum and lateral nasal walls
    • Floor of nasal cavity
  3. External nasal nerve block - intercartilaginous injection from rhinion to supratip
  4. Infraorbital nerve block - needle through vestibule to just below midportion of orbital rim
  5. Nasopalatine nerve block - injection at base of columella and nasal tip
  6. Pledgets replaced posteriorly for 5 more minutes
Tips to reduce injection pain:
  • Buffer lidocaine with NaHCO₃ (1:10)
  • Use 27-gauge or smaller needle
  • Inject slowly within mucosal-submucosal plane
  • EMLA cream applied 1 hour before provides similar anesthesia with less discomfort than needle infiltration
Anterior ethmoid nerve block - cotton applicator passed along dorsal nasal surface to anterior cribriform plate; selective blockade after 5-10 minutes

B. Ear (Otology)

  • External auditory canal (EAC): Innervated by auriculotemporal nerve (V3), Arnold's nerve (vagus), greater auricular nerve (C2/C3)
  • Circumferential injection of LA at bony-cartilaginous junction for myringotomy, cerumen removal, small EAC procedures
  • Tympanic membrane: EMLA cream applied topically; used for myringotomy under LA in adults
  • Cotton wicks soaked in LA placed in EAC

C. Pharynx / Tonsil / Oropharynx

  • Glossopharyngeal nerve block: Exits jugular foramen; gives off pharyngeal, tonsillar, and lingual branches
    • Blocked by injection into the base of the anterior tonsillar pillar (peritonsillar block)
    • Used for peritonsillar abscess drainage
  • Sphenopalatine ganglion (SPG) block:
    • Large autonomic ganglion accessible intranasally
    • Cotton-tipped applicators soaked in LA (4% lidocaine or 10% cocaine) directed to posterior middle meatus just anterior to the posterior wall
    • Topical intranasal approach is most common and well-tolerated
    • Also injectable via greater palatine canal or transnasal needle
    • Used for: cluster headaches, migraines, facial pain, post-rhinoplasty analgesia, FESS analgesia

D. Larynx / Trachea

Superior laryngeal nerve (SLN) block:
  • Innervates supraglottic mucosa (internal branch - sensory) and cricothyroid muscle (external branch - motor)
  • Technique: Inject LA lateral to the thyroid cartilage at the level of the hyoid, directing needle to pierce thyrohyoid membrane
  • Bilateral block required for awake intubation
Transtracheal (recurrent laryngeal nerve) block:
  • Palpate cricothyroid membrane
  • Insert 22- or 20-gauge needle, advance until air aspirated
  • Inject 4 mL of 4% lidocaine rapidly - induces coughing which disperses LA throughout trachea/subglottis
  • Contraindication: Direct infiltration of the recurrent laryngeal nerve is contraindicated (supplies all intrinsic laryngeal muscles except cricothyroid - may cause bilateral vocal cord paralysis and airway obstruction)
Combination SLN + transtracheal block = complete laryngeal/tracheal anesthesia for awake fiberoptic intubation

6. Toxicity

CNS Toxicity (dose-dependent, sequential):

  1. Perioral/circumoral paresthesias
  2. Tinnitus, dizziness
  3. Mental status changes
  4. Tonic-clonic seizures
  5. Coma, respiratory arrest
Treatment: Benzodiazepines (diazepam preferred over midazolam - both cause respiratory depression)

Cardiovascular Toxicity:

  • Diminished myocardial contractility + reduced peripheral vascular tone
  • Bupivacaine: Cardiac toxicity precedes CNS toxicity - unique danger
  • Rapid cardiovascular collapse possible
Treatment of severe systemic toxicity (LAST):
  • ACLS immediately
  • 20% Intralipid (lipid emulsion rescue):
    • Initial: 1.5 mL/kg IV bolus
    • Maintenance: 0.5 mL/kg/min infusion
    • Maximum: 10 mL/kg over 30 minutes
    • Works for both CNS and cardiac toxicity
    • See: lipidrescue.org

Methemoglobinemia:

  • Caused by prilocaine (≥600 mg) and benzocaine
  • Pulse oximetry unreliable - reads ~85% regardless of actual saturation
  • Higher risk in G6PD deficiency
  • Treatment: 1% methylene blue IV, 1-2 mg/kg

Allergy:

  • True allergic reactions: <1% of all adverse reactions
  • Usually due to methylparaben or metabisulfite preservatives (not the LA itself)
  • More common with esters (PABA derivatives); extremely rare with amides
  • Cross-reactivity exists within the ester class (not between ester and amide)
  • Management: provocative intradermal testing (with resuscitation ready) OR use opposite class

7. Pharmacokinetics Summary

  • Laryngeal and tracheal mucosa: Rapid absorption approaching IV injection levels - highest risk site in ENT
  • Metabolism:
    • Amides: Hepatic (CYP450 + carboxylesterases)
    • Esters: Plasma cholinesterase (+ liver)
    • Both compromised in parenchymal liver disease
    • Both excreted renally
  • Important: Ester drugs (procaine, chloroprocaine) inhibit plasma cholinesterase and may prolong succinylcholine effects

8. Quick Reference Summary

DrugClassTopicalMax DoseDurationSpecial Use in ENT
CocaineEster✓✓✓2-3 mg/kg30-60 minNasal decongestion + anesthesia
TetracaineEster✓✓✓20 mg30 minUpper airway aerosol
BenzocaineEster✓✓✓200 mg30-60 minMucosal/airway topical
LidocaineAmide✓✓✓5/7 mg/kg1-3 hrAll ENT procedures; transtracheal
BupivacaineAmidePoor2-3 mg/kg3-10 hrLong postop blocks
RopivacaineAmidePoor1-3 mg/kg4-12 hrInfusions; safer than bupivacaine
PrilocaineAmide✓✓8 mg/kg1-2 hrDense blocks; EMLA (with lidocaine)

Sources: K.J. Lee's Essential Otolaryngology (pp. 111-116); Cummings Otolaryngology Head and Neck Surgery (p. 591); Regional & Topical Anaesthesia of Upper Airways - PMC; AAO-HNS Nerve Blocks for Otolaryngologists

Create a reference guide PDF for LA techniques in ENT procedures

Reading File
Running Command

ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/la-ent-guide && echo "Directory ready"

Writing File

~/la-ent-guide/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak, KeepTogether
)
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

OUTPUT = "/home/daytona/workspace/la-ent-guide/LA_in_ENT_Reference_Guide.pdf"

# ── Colour palette ──────────────────────────────────────────────────
NAVY      = colors.HexColor("#1A3A5C")
TEAL      = colors.HexColor("#1A7A8A")
LIGHT_BG  = colors.HexColor("#EBF5F8")
AMBER     = colors.HexColor("#E07B00")
RED_WARN  = colors.HexColor("#C0392B")
MID_GREY  = colors.HexColor("#666666")
LIGHT_GREY= colors.HexColor("#F0F4F7")
WHITE     = colors.white
BLACK     = colors.black
TABLE_HDR = colors.HexColor("#1A3A5C")
ROW_ALT   = colors.HexColor("#EBF5F8")

# ── Page layout ─────────────────────────────────────────────────────
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=MARGIN, rightMargin=MARGIN,
    topMargin=MARGIN, bottomMargin=MARGIN,
    title="Local Anaesthesia in ENT – Reference Guide",
    author="Orris Clinical Reference",
    subject="LA Techniques in ENT Procedures"
)

# ── Styles ───────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

TITLE_STYLE = S("Title",
    fontName="Helvetica-Bold", fontSize=24,
    textColor=WHITE, alignment=TA_CENTER,
    spaceAfter=4)

SUBTITLE_STYLE = S("Subtitle",
    fontName="Helvetica", fontSize=12,
    textColor=colors.HexColor("#B8D4E0"), alignment=TA_CENTER,
    spaceAfter=2)

BYLINE_STYLE = S("Byline",
    fontName="Helvetica-Oblique", fontSize=9,
    textColor=colors.HexColor("#90B8CC"), alignment=TA_CENTER)

H1 = S("H1",
    fontName="Helvetica-Bold", fontSize=13,
    textColor=WHITE, spaceBefore=6, spaceAfter=4,
    leftIndent=6, rightIndent=6)

H2 = S("H2",
    fontName="Helvetica-Bold", fontSize=10.5,
    textColor=NAVY, spaceBefore=8, spaceAfter=3,
    borderPad=2)

H3 = S("H3",
    fontName="Helvetica-Bold", fontSize=9.5,
    textColor=TEAL, spaceBefore=5, spaceAfter=2)

BODY = S("Body",
    fontName="Helvetica", fontSize=8.8,
    textColor=BLACK, leading=13, spaceAfter=3,
    alignment=TA_JUSTIFY)

BULLET = S("Bullet",
    fontName="Helvetica", fontSize=8.5,
    textColor=BLACK, leading=12, spaceAfter=1.5,
    leftIndent=12, bulletIndent=4)

WARN = S("Warn",
    fontName="Helvetica-Bold", fontSize=8.5,
    textColor=RED_WARN, leading=12, spaceAfter=3,
    leftIndent=8)

NOTE = S("Note",
    fontName="Helvetica-Oblique", fontSize=8,
    textColor=MID_GREY, leading=11, spaceAfter=3,
    leftIndent=8)

CAPTION = S("Caption",
    fontName="Helvetica-Oblique", fontSize=7.5,
    textColor=MID_GREY, alignment=TA_CENTER, spaceAfter=4)

TABLE_HDR_STYLE = S("TableHdr",
    fontName="Helvetica-Bold", fontSize=8,
    textColor=WHITE, alignment=TA_CENTER)

TABLE_CELL = S("TableCell",
    fontName="Helvetica", fontSize=7.8,
    textColor=BLACK, alignment=TA_CENTER, leading=10)

TABLE_CELL_L = S("TableCellL",
    fontName="Helvetica", fontSize=7.8,
    textColor=BLACK, alignment=TA_LEFT, leading=10)

TABLE_WARN_CELL = S("TableWarnCell",
    fontName="Helvetica-Bold", fontSize=7.8,
    textColor=RED_WARN, alignment=TA_CENTER, leading=10)


# ── Helper functions ─────────────────────────────────────────────────

def section_header(text):
    """Coloured full-width section header bar."""
    tbl = Table([[Paragraph(text, H1)]], colWidths=[doc.width])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), NAVY),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return tbl

def sub_header(text):
    return Paragraph(text, H2)

def sub_sub_header(text):
    return Paragraph(text, H3)

def body(text):
    return Paragraph(text, BODY)

def bullet(text, symbol="•"):
    return Paragraph(f"{symbol}  {text}", BULLET)

def warning(text):
    return Paragraph(f"⚠  {text}", WARN)

def note(text):
    return Paragraph(f"ℹ  {text}", NOTE)

def sp(h=4):
    return Spacer(1, h)

def hr():
    return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCDDEA"), spaceAfter=4)

def make_table(headers, rows, col_widths, alt_rows=True, warn_col=None):
    """Build a styled data table."""
    hdr_row = [Paragraph(h, TABLE_HDR_STYLE) for h in headers]
    data = [hdr_row]
    for row in rows:
        cells = []
        for i, cell in enumerate(row):
            style = TABLE_WARN_CELL if (warn_col and i == warn_col and "⚠" in str(cell)) else TABLE_CELL_L if i == 0 else TABLE_CELL
            cells.append(Paragraph(str(cell), style))
        data.append(cells)

    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    ts = [
        ("BACKGROUND",    (0, 0), (-1, 0), TABLE_HDR),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("FONTSIZE",      (0, 0), (-1, 0), 8),
        ("TOPPADDING",    (0, 0), (-1,-1), 4),
        ("BOTTOMPADDING", (0, 0), (-1,-1), 4),
        ("LEFTPADDING",   (0, 0), (-1,-1), 5),
        ("RIGHTPADDING",  (0, 0), (-1,-1), 5),
        ("GRID",          (0, 0), (-1,-1), 0.4, colors.HexColor("#AACCD8")),
        ("VALIGN",        (0, 0), (-1,-1), "MIDDLE"),
        ("ROWBACKGROUNDS",(0, 1), (-1,-1), [WHITE, ROW_ALT] if alt_rows else [WHITE]),
    ]
    tbl.setStyle(TableStyle(ts))
    return tbl

def info_box(content_list, bg=LIGHT_BG, border=TEAL):
    """Bordered info/tip box."""
    inner = []
    for item in content_list:
        inner.append(item)
    tbl = Table([[inner]], colWidths=[doc.width - 2])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("TOPPADDING",    (0,0), (-1,-1), 7),
        ("BOTTOMPADDING", (0,0), (-1,-1), 7),
        ("BOX",           (0,0), (-1,-1), 1.5, border),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return tbl


# ═══════════════════════════════════════════════════════════════════
# BUILD DOCUMENT
# ═══════════════════════════════════════════════════════════════════

story = []

# ── COVER BANNER ────────────────────────────────────────────────────
cover_data = [[
    Paragraph("Local Anaesthesia in ENT", TITLE_STYLE),
    Paragraph("A Comprehensive Clinical Reference Guide", SUBTITLE_STYLE),
    Paragraph("Agents · Doses · Nerve Blocks · Toxicity Management", BYLINE_STYLE),
]]
cover_tbl = Table(cover_data, colWidths=[doc.width])
cover_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), NAVY),
    ("TOPPADDING",    (0,0), (-1,-1), 20),
    ("BOTTOMPADDING", (0,0), (-1,-1), 20),
    ("LEFTPADDING",   (0,0), (-1,-1), 16),
    ("RIGHTPADDING",  (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS", [6]),
]))
story.append(cover_tbl)
story.append(sp(10))


# ══════════════════════════════════════════════════════════════════
# SECTION 1: MECHANISM & CLASSIFICATION
# ══════════════════════════════════════════════════════════════════
story.append(section_header("1.  Mechanism of Action & Classification"))
story.append(sp(6))

story.append(body(
    "Local anaesthetics (LAs) reversibly block <b>voltage-gated sodium channels</b>, "
    "preventing sodium influx, depolarisation, and propagation of the nerve impulse. "
    "The <b>non-ionized (uncharged) form</b> crosses the lipid membrane barrier; once inside, "
    "the ionized form binds the channel from within."
))
story.append(sp(4))

story.append(sub_header("Three Molecular Properties Governing Activity"))
story.append(make_table(
    ["Property", "Effect", "Clinical Impact"],
    [
        ["Lipid solubility", "↑ solubility = ↑ potency", "Bupivacaine > Lidocaine > Procaine"],
        ["pKa (ionisation)", "Higher pKa = more ionised at tissue pH = slower onset", "Esters have higher pKa → poor topical penetrance"],
        ["Protein binding", "Higher binding = longer duration", "Bupivacaine 95% → longest duration"],
    ],
    col_widths=[4.5*cm, 6*cm, 7.5*cm]
))
story.append(sp(6))

story.append(sub_header("Why LA Fails in Infected Tissue"))
story.append(info_box([
    body("Infected tissues have <b>reduced pH</b>, shifting equilibrium toward the ionized form. "
         "Less non-ionized drug is available to cross membranes → poor or absent block."),
    sp(2),
    body("<b>Solution:</b> Block the nerve <i>proximally</i> in healthy, uninfected tissue. "
         "Alkalization with NaHCO₃ can partially reverse this effect."),
]))
story.append(sp(8))

story.append(sub_header("Classification: Esters vs. Amides"))

ester_amide_data = [
    ["Feature", "AMINOESTERS (−COO−)", "AMINOAMIDES (−NHCO−)"],
    ["Metabolism", "Plasma cholinesterase (+ liver)", "Hepatic (CYP450 + carboxylesterases)"],
    ["Allergy", "More common (PABA metabolite)", "Extremely rare"],
    ["Cross-reactivity", "Within ester class", "None between classes"],
    ["pKa", "Higher → slower onset", "Lower → faster onset"],
    ["Examples", "Cocaine, Procaine, Tetracaine,\nBenzocaine, Chloroprocaine", "Lidocaine, Bupivacaine, Ropivacaine,\nPrilocaine, Mepivacaine"],
]
e_tbl = Table(
    [[Paragraph(r[0], TABLE_WARN_CELL if r[0]=="Feature" else TABLE_CELL_L),
      Paragraph(r[1], TABLE_HDR_STYLE if r[0]=="Feature" else TABLE_CELL),
      Paragraph(r[2], TABLE_HDR_STYLE if r[0]=="Feature" else TABLE_CELL)]
     for r in ester_amide_data],
    colWidths=[4.5*cm, 8*cm, 8*cm], repeatRows=1
)
e_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0, 0), (-1, 0), TABLE_HDR),
    ("BACKGROUND",    (0, 1), (0,-1), colors.HexColor("#F5F5F5")),
    ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
    ("FONTSIZE",      (0, 0), (-1,-1), 8),
    ("TOPPADDING",    (0, 0), (-1,-1), 4),
    ("BOTTOMPADDING", (0, 0), (-1,-1), 4),
    ("LEFTPADDING",   (0, 0), (-1,-1), 5),
    ("GRID",          (0, 0), (-1,-1), 0.4, colors.HexColor("#AACCD8")),
    ("VALIGN",        (0, 0), (-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS",(0, 1), (-1,-1), [WHITE, ROW_ALT]),
    ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
    ("FONTNAME",      (0, 1), (0,-1), "Helvetica-Bold"),
    ("TEXTCOLOR",     (0, 1), (0,-1), NAVY),
]))
story.append(e_tbl)
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 2: INDIVIDUAL AGENTS
# ══════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(section_header("2.  Local Anaesthetic Agents — Quick Reference"))
story.append(sp(6))

story.append(sub_header("2A.  Aminoester Agents"))

ester_rows = [
    ["Cocaine", "Ester", "5–10 min", "30–60 min", "2–3 mg/kg", "4% solution",
     "Topical nasal only", "Only LA with vasoconstriction; blocks NE reuptake → ↑HR, ↑BP; sensitises myocardium to catecholamines; rarely used now"],
    ["Tetracaine", "Ester", "5–10 min", "30 min", "20 mg (single)", "0.25–2% soln",
     "Upper airway aerosol; ophthalmic; spinal", "1 mL of 2% = max dose"],
    ["Benzocaine", "Ester", "5–10 min", "30–60 min", "200 mg", "20% soln/ointment",
     "Topical airway; mucosal dressings", "⚠ Methemoglobinemia risk; FDA: not for teething infants"],
    ["Procaine", "Ester", "2–5 min", "30–90 min", "1000 mg", "2%",
     "Field/nerve blocks", "Ineffective topically; prolongs succinylcholine"],
    ["Chloro-procaine", "Ester", "2–5 min", "30–60 min", "800–1000 mg", "2%",
     "Field/nerve blocks; epidural", "Fastest hydrolysis; low systemic toxicity"],
]

ester_hdrs = ["Agent","Class","Onset","Duration","Max Dose","Formulation","ENT Use","Notes"]
ester_widths = [2.3*cm,1.5*cm,1.6*cm,1.8*cm,2.2*cm,2.2*cm,3.2*cm,6.2*cm]

def make_agent_table(headers, rows, col_widths):
    hdr = [Paragraph(h, TABLE_HDR_STYLE) for h in headers]
    data = [hdr]
    for row in rows:
        cells = []
        for i, cell in enumerate(row):
            s = TABLE_CELL_L if i in (0,6,7) else TABLE_CELL
            if "⚠" in str(cell):
                s = S("WC", fontName="Helvetica-Bold", fontSize=7.5,
                      textColor=RED_WARN, alignment=TA_LEFT, leading=10)
            cells.append(Paragraph(str(cell), s))
        data.append(cells)
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TABLE_HDR),
        ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE",      (0,0), (-1,-1), 7.5),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#AACCD8")),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
        ("TEXTCOLOR",     (0,0), (-1,0), WHITE),
    ]))
    return tbl

story.append(make_agent_table(ester_hdrs, ester_rows, ester_widths))
story.append(sp(8))

story.append(sub_header("2B.  Aminoamide Agents"))

amide_rows = [
    ["Lidocaine", "Amide", "5–10 min", "1–3 hr",
     "5 mg/kg plain\n7 mg/kg + epi", "0.5–2% inj;\n4% topical;\n5% ointment",
     "All ENT procedures;\ntranstracheal block;\nnasal infiltration",
     "Most versatile ENT agent; IV 1.5 mg/kg blunts intubation response"],
    ["Bupivacaine", "Amide", "5–10 min", "3–10 hr",
     "2–3 mg/kg", "0.125–0.75%",
     "Long-duration blocks;\npost-op analgesia",
     "⚠ Cardiac toxicity before CNS toxicity; liposomal (Exparel) lasts up to 72 hr"],
    ["Ropivacaine", "Amide", "5–10 min", "4–12 hr",
     "1–3 mg/kg", "0.2–1.0%",
     "Infiltration;\ncontinuous catheters",
     "Less cardiotoxic than bupivacaine; less motor block; preferred for infusions"],
    ["Prilocaine", "Amide", "2–4 min", "1–2 hr",
     "8 mg/kg\n(max 600 mg)", "4%",
     "Dense nerve blocks;\nEMLA component",
     "⚠ Methemoglobinemia at ≥600 mg; less vasodilation → used without epi"],
    ["Mepivacaine", "Amide", "30 sec–4 min", "1–4 hr",
     "6 mg/kg\n(max 400 mg)", "2–3%",
     "Infiltration;\ndental blocks",
     "Less vasodilation → no epi needed; 2% contains levonordefrin (sulfite → anaphylaxis risk)"],
    ["Etidocaine", "Amide", "3–8 min", "Long",
     "300 mg plain\n400 mg + epi", "0.5–1.0%",
     "Local infiltration",
     "Intense motor blockade; sensory + motor block"],
]

story.append(make_agent_table(ester_hdrs, amide_rows, ester_widths))
story.append(sp(8))

story.append(sub_header("2C.  Miscellaneous Agents"))
misc_rows = [
    ["Cyclonine", "Neither ester nor amide", "2–10 min", "30 min", "300 mg", "0.5%",
     "Topical only (irritating if injected)", "Use if allergy to BOTH ester AND amide classes"],
    ["Cetacaine", "Combination (Benzocaine +\nButyl aminobenzoate +\nTetracaine)", "30 sec", "–", "Max 2 × 1-sec sprays\n(400 mg equiv)", "Spray",
     "Mucosal anaesthesia;\nairway", "Rapid onset; useful for endoscopy, nasopharyngoscopy"],
]
story.append(make_agent_table(
    ["Agent","Composition","Onset","Duration","Max Dose","Formulation","ENT Use","Notes"],
    misc_rows,
    [2.3*cm, 3.2*cm, 1.6*cm, 1.6*cm, 2.5*cm, 1.8*cm, 3*cm, 4.9*cm]
))
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 3: VASOCONSTRICTORS & ADDITIVES
# ══════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(section_header("3.  Vasoconstrictors & Additives"))
story.append(sp(6))

story.append(sub_header("Adrenaline (Epinephrine)"))
story.append(body(
    "Routinely added to LA solutions in ENT to extend block duration, reduce systemic absorption "
    "(increase safety margin), and minimise operative blood loss."
))
story.append(sp(4))

story.append(make_table(
    ["Concentration", "Preparation", "ENT Application"],
    [
        ["1:100,000", "1 mg per 100 mL", "Standard nasal infiltration, nerve blocks"],
        ["1:200,000", "1 mg per 200 mL", "Subcutaneous infiltration, paediatric"],
    ],
    col_widths=[4*cm, 6*cm, 10.5*cm]
))
story.append(sp(5))

story.append(warning(
    "AVOID epinephrine in patients on <b>tricyclic antidepressants (TCAs)</b> or "
    "<b>MAO inhibitors</b> — risk of <b>hypertensive crisis</b>."
))
story.append(warning(
    "Epinephrine toxicity: restlessness, palpitations, headache, ventricular irritability, seizures. "
    "Treat tachycardia/hypertension with <b>esmolol</b>."
))
story.append(sp(6))

story.append(sub_header("Sodium Bicarbonate Buffering"))
story.append(info_box([
    body("<b>Technique:</b> Mix NaHCO₃ (7.5%) with lidocaine in a <b>1:10 ratio</b> "
         "(1 mL bicarb + 10 mL lidocaine)."),
    sp(2),
    body("<b>Effect:</b> Raises pH → increases non-ionized fraction → <b>faster onset</b> + "
         "<b>significantly less burning pain</b> on injection."),
    sp(2),
    body("<b>Injection tips:</b> Use ≥27-gauge needle; inject slowly within the mucosal-submucosal plane. "
         "EMLA cream applied 1 hour before nasal surgery provides similar anaesthesia with less patient discomfort than needle infiltration alone."),
]))
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 4: ENT-SPECIFIC NERVE BLOCKS
# ══════════════════════════════════════════════════════════════════
story.append(section_header("4.  ENT-Specific Nerve Blocks & Techniques"))
story.append(sp(6))

# ── 4A Nasal ─────────────────────────────────────────────────────
story.append(sub_header("4A.  Nasal Surgery (Septoplasty, Rhinoplasty, FESS, Fracture Reduction)"))
story.append(body(
    "A combined <b>topical + infiltration</b> technique provides excellent anaesthesia "
    "for most nasal procedures. Targets: anterior/posterior ethmoidal nerves, "
    "sphenopalatine nerve, nasopalatine nerve, and infraorbital nerve."
))
story.append(sp(4))

nasal_steps = [
    ["Step 1", "Topical pledgets",
     "Cotton pledgets soaked in <b>4% cocaine</b> OR <b>0.05% oxymetazoline + 4% topical lidocaine</b> "
     "placed strategically to cover all nasal nerve branches. Leave in situ 5–10 min."],
    ["Step 2", "Infiltration",
     "<b>1% lidocaine + 1:100,000 adrenaline</b> injected along the septum, lateral walls, and floor of the nasal cavity."],
    ["Step 3", "External nasal nerve",
     "Intercartilaginous injection along the dorsum from rhinion to supratip."],
    ["Step 4", "Infraorbital nerve block",
     "Needle through vestibule to just below midportion of orbital rim. Anaesthetises V2 terminal branch."],
    ["Step 5", "Nasopalatine nerve block",
     "Injection at base of columella and nasal tip just inside the nasal sill."],
    ["Step 6", "Posterior pledgets",
     "Pledgets replaced posteriorly for 5 more minutes to maximise deep anaesthesia."],
]

step_tbl = Table(
    [[Paragraph(r[0], S("StepNum", fontName="Helvetica-Bold", fontSize=8.5,
                         textColor=WHITE, alignment=TA_CENTER)),
      Paragraph(r[1], S("StepName", fontName="Helvetica-Bold", fontSize=8.5,
                          textColor=NAVY)),
      Paragraph(r[2], TABLE_CELL_L)]
     for r in nasal_steps],
    colWidths=[1.5*cm, 4.2*cm, doc.width - 5.7*cm],
)
step_bg = [TEAL if i % 2 == 0 else colors.HexColor("#1E6A7A") for i in range(len(nasal_steps))]
step_ts = [
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#AACCD8")),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]
for i, bg in enumerate(step_bg):
    step_ts.append(("BACKGROUND", (0, i), (0, i), bg))
    step_ts.append(("TEXTCOLOR",  (0, i), (0, i), WHITE))
step_ts.append(("ROWBACKGROUNDS", (1,0), (1,-1), [WHITE, ROW_ALT]))
step_tbl.setStyle(TableStyle(step_ts))
story.append(step_tbl)
story.append(sp(6))

story.append(sub_header("Anterior Ethmoid Nerve Block"))
story.append(body(
    "Cotton applicator soaked in LA passed along the <b>dorsal surface of the nose</b> until "
    "the anterior cribriform plate is reached. Selective blockade achieved after 5–10 minutes."
))
story.append(sp(6))

# ── 4B Ear ───────────────────────────────────────────────────────
story.append(sub_header("4B.  Ear (Otology)"))
story.append(body(
    "The external auditory canal (EAC) is innervated by multiple nerves, requiring a circumferential block:"
))
story.append(make_table(
    ["Nerve", "Origin", "Region Supplied", "Block Technique"],
    [
        ["Auriculotemporal nerve", "V3 (trigeminal)", "Anterior EAC & TM", "Injection anterior to tragus"],
        ["Arnold's nerve (auricular branch)", "Vagus (CN X)", "Posterior EAC", "Injection posterosuperior to EAC"],
        ["Greater auricular nerve", "C2/C3", "Posterior auricle & EAC", "Injection at posterior sulcus"],
        ["Auricular branch of facial nerve", "CN VII", "Posteromedial EAC", "Included in circumferential block"],
    ],
    col_widths=[4.5*cm, 3.5*cm, 4.5*cm, 6*cm]
))
story.append(sp(4))
story.append(info_box([
    body("<b>Circumferential 'ring' block:</b> 1–2 mL of 1% lidocaine + 1:100,000 adrenaline "
         "injected at 4 quadrants of the bony-cartilaginous junction for myringotomy, "
         "cerumen removal, and minor EAC procedures in adults."),
    sp(2),
    body("<b>Tympanic membrane (TM):</b> EMLA cream applied topically to TM for 30–60 min "
         "provides adequate anaesthesia for myringotomy / grommet insertion under LA."),
]))
story.append(sp(6))

# ── 4C Pharynx / Tonsil ─────────────────────────────────────────
story.append(sub_header("4C.  Pharynx, Tonsil & Oropharynx"))

story.append(sub_sub_header("Glossopharyngeal Nerve Block (Peritonsillar Block)"))
story.append(body(
    "The glossopharyngeal nerve (CN IX) exits the jugular foramen and supplies the pharyngeal, "
    "tonsillar, and lingual branches."
))
story.append(make_table(
    ["Indication", "Technique", "Volume / Agent"],
    [
        ["Peritonsillar abscess drainage", "Inject at the base of the anterior tonsillar pillar (superior pole); needle depth ~1 cm into mucosa", "2–3 mL of 1% lidocaine + 1:100,000 adrenaline"],
        ["Oropharyngeal instrumentation", "Topical spray to posterior pharynx + tonsillar pillars", "4% lidocaine spray or 20% benzocaine (Cetacaine)"],
    ],
    col_widths=[5*cm, 9*cm, 5.5*cm]
))
story.append(sp(4))

story.append(sub_sub_header("Sphenopalatine Ganglion (SPG) Block"))
story.append(body(
    "The SPG is the largest extracranial parasympathetic ganglion, lying in the pterygopalatine fossa. "
    "It is accessible via the nasal mucosa overlying the posterior middle meatus."
))
story.append(make_table(
    ["Approach", "Technique", "Agent", "Uses in ENT"],
    [
        ["Intranasal topical (preferred)", "Cotton-tipped applicators soaked in LA directed to posterior middle meatus just anterior to posterior nasal wall; leave 20–30 min",
         "4% lidocaine or 10% cocaine", "Cluster headache, FESS analgesia, nasal/sinus procedures, migraines"],
        ["Transnasal needle injection", "Direct injection into pterygopalatine fossa via nasal endoscope",
         "1% lidocaine + 1:100,000 adrenaline", "Post-rhinoplasty analgesia, chronic facial pain"],
        ["Greater palatine canal", "Transoral needle through greater palatine foramen",
         "1.5–2 mL 2% lidocaine", "Palatal surgery; caution: risk of permanent nerve damage if foramen entered"],
    ],
    col_widths=[4*cm, 7*cm, 3.5*cm, 5*cm]
))
story.append(sp(4))
story.append(note(
    "Warn patient: bitter taste, temporary throat numbness, transient nasal congestion, or "
    "mild droopy eyelid (Horner-like) after SPG block with topical anesthetic."
))
story.append(sp(6))

# ── 4D Larynx / Trachea ──────────────────────────────────────────
story.append(PageBreak())
story.append(section_header("4D.  Laryngeal & Tracheal Blocks (Awake Intubation / Laryngoscopy)"))
story.append(sp(6))

story.append(body(
    "Complete laryngotracheal anaesthesia requires blocking the <b>superior laryngeal nerve (SLN)</b> "
    "bilaterally and performing a <b>transtracheal injection</b>. This enables awake fiberoptic intubation "
    "and direct laryngoscopy under LA."
))
story.append(sp(5))

larynx_data = [
    ["Block", "Nerve / Structure", "Anatomy Key Point", "Technique", "Agent & Volume"],
    ["Superior Laryngeal Nerve (SLN) Block",
     "Internal branch of SLN (sensory to supraglottis/glottis); External branch (motor to cricothyroid)",
     "SLN divides at level of hyoid; internal branch pierces thyrohyoid membrane",
     "Inject LA lateral to thyroid cartilage, directing needle to pierce thyrohyoid membrane. Perform bilaterally.",
     "2 mL of 2% lidocaine each side"],
    ["Transtracheal Block\n(Recurrent Laryngeal Nerve)",
     "Recurrent laryngeal nerve — motor to all intrinsic laryngeal muscles except cricothyroid; sensory to subglottis/trachea",
     "Cricothyroid membrane — midline, between thyroid cartilage (above) and cricoid (below)",
     "Palpate cricothyroid membrane. Insert 20–22G needle in midline; advance until air is freely aspirated. Inject rapidly on <b>expiration</b> — coughing disperses LA.",
     "4 mL of 4% lidocaine"],
    ["Topical Airway\n(Spray-as-you-go)",
     "All mucosal surfaces of airway",
     "Used with fiberoptic scope via injection port",
     "Spray LA through working channel of scope as it advances through glottis into trachea",
     "4% lidocaine; total dose ≤9 mg/kg"],
]

lx_tbl = Table(
    [[Paragraph(r[i], TABLE_HDR_STYLE if row_idx==0 else (TABLE_CELL_L if i in (0,3,4) else TABLE_CELL))
      for i, _ in enumerate(r)]
     for row_idx, r in enumerate(larynx_data)],
    colWidths=[3.2*cm, 3.8*cm, 3.5*cm, 6*cm, 3*cm], repeatRows=1
)
lx_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), TABLE_HDR),
    ("TEXTCOLOR",     (0,0), (-1,0), WHITE),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7.8),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 4),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#AACCD8")),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
]))
story.append(lx_tbl)
story.append(sp(5))

story.append(warning(
    "NEVER directly infiltrate the <b>recurrent laryngeal nerve</b> — it supplies ALL intrinsic "
    "laryngeal muscles (except cricothyroid). Bilateral damage causes vocal cord paralysis and "
    "<b>acute airway obstruction</b>."
))
story.append(warning(
    "Laryngeal and tracheal mucosa have extremely rapid LA absorption approaching IV levels. "
    "Monitor closely for systemic toxicity. Keep cumulative dose within safe limits."
))
story.append(sp(6))

story.append(sub_header("Facial Nerve Blocks Relevant to ENT"))
story.append(make_table(
    ["Nerve Block", "Target", "Landmark", "Volume"],
    [
        ["Infraorbital", "V2 terminal — nose, upper lip, cheek", "Through vestibule to below midpoint of orbital rim", "2–3 mL 1% lidocaine + epi"],
        ["Supraorbital / Supratrochlear", "Forehead / scalp", "Supraorbital notch / medial orbital rim", "1–2 mL each"],
        ["Auriculotemporal", "Temporal region, anterior ear", "Just anterior to tragus", "2–3 mL 1% lidocaine"],
        ["Greater auricular", "Posterior ear, parotid region", "Posterior border of SCM at Erb's point", "3–5 mL 1% lidocaine"],
        ["Zygomaticofacial / Zygomaticotemporal", "Zygomatic region", "Zygomaticofacial foramen on cheekbone", "1–2 mL 1% lidocaine"],
    ],
    col_widths=[4.5*cm, 4.5*cm, 6*cm, 4.5*cm]
))
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 5: TOXICITY & MANAGEMENT
# ══════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(section_header("5.  Toxicity — Recognition & Management"))
story.append(sp(6))

story.append(sub_header("Local Anaesthetic Systemic Toxicity (LAST)"))
story.append(body(
    "Toxic blood levels can result from: <b>rapid absorption</b> (especially laryngeal/tracheal mucosa), "
    "<b>excessive dose</b>, or <b>inadvertent intravascular injection</b>."
))
story.append(sp(5))

story.append(sub_sub_header("CNS Toxicity — Dose-Dependent Progression"))
tox_progression = [
    ["Stage", "Signs & Symptoms", "Action"],
    ["Early", "Perioral/circumoral paraesthesia, tinnitus, metallic taste, dizziness", "Stop injection; monitor; reassure"],
    ["Intermediate", "Mental status changes, slurred speech, visual disturbance", "IV access; supplemental O₂; alert team"],
    ["Severe", "Tonic-clonic seizures", "Benzodiazepines (diazepam preferred) + airway support"],
    ["Critical", "Coma, respiratory arrest", "ACLS + Intralipid rescue (see below)"],
]
tox_tbl = Table(
    [[Paragraph(r[i], TABLE_HDR_STYLE if row_idx==0
                else (S("StageCell", fontName="Helvetica-Bold", fontSize=8,
                         textColor=RED_WARN if row_idx>=3 else AMBER if row_idx==2 else colors.HexColor("#E08A00"),
                         alignment=TA_CENTER) if i==0
                else TABLE_CELL_L))
      for i, _ in enumerate(r)]
     for row_idx, r in enumerate(tox_progression)],
    colWidths=[2.5*cm, 9*cm, 8*cm], repeatRows=1
)
tox_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), TABLE_HDR),
    ("TEXTCOLOR",     (0,0), (-1,0), WHITE),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 8),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#AACCD8")),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
]))
story.append(tox_tbl)
story.append(sp(5))

story.append(sub_sub_header("Cardiovascular Toxicity"))
story.append(make_table(
    ["Drug", "Cardiovascular Risk", "Key Feature"],
    [
        ["Bupivacaine", "HIGHEST", "Cardiac toxicity precedes CNS toxicity; direct myocardial depression; rapid collapse possible"],
        ["Ropivacaine", "MODERATE", "Less cardiotoxic than bupivacaine at equipotent doses"],
        ["Lidocaine", "LOW–MODERATE", "Classic CNS symptoms appear before cardiac effects"],
        ["All agents", "Dose-related", "Diminished contractility + reduced peripheral vascular tone at toxic doses"],
    ],
    col_widths=[3*cm, 3*cm, 13.5*cm]
))
story.append(sp(6))

story.append(sub_header("LAST Treatment Protocol — 20% Lipid Emulsion (Intralipid)"))
story.append(info_box([
    Paragraph("<b>ACLS first</b> — call for help, maintain airway, commence ACLS protocol", BODY),
    sp(3),
    Paragraph("<b>Step 1 — Bolus:</b>  1.5 mL/kg of <b>20% Intralipid</b> IV over 1 minute", BODY),
    sp(2),
    Paragraph("<b>Step 2 — Infusion:</b>  0.5 mL/kg/min until haemodynamic stability", BODY),
    sp(2),
    Paragraph("<b>Maximum dose:</b>  10 mL/kg over 30 minutes total", BODY),
    sp(2),
    Paragraph("<b>Note:</b>  Lipid emulsion is effective for both CNS and cardiac toxicity. "
              "Works by creating a 'lipid sink' that sequesters LA away from tissues.", NOTE),
    sp(2),
    Paragraph("Reference: www.lipidrescue.org", NOTE),
], bg=colors.HexColor("#FFF3E0"), border=AMBER))
story.append(sp(6))

story.append(sub_header("Methemoglobinemia"))
story.append(make_table(
    ["Causative Agent", "Threshold / Risk Factor", "Diagnosis", "Treatment"],
    [
        ["Prilocaine", "≥600 mg (or lower in G6PD deficiency)", "Pulse oximetry unreliable — reads ~85% regardless of true SaO₂", "IV methylene blue 1–2 mg/kg as 1% solution"],
        ["Benzocaine", "Topical overdose; Hurricane spray misuse", "Co-oximetry required for accurate measurement", "IV methylene blue 1–2 mg/kg as 1% solution"],
    ],
    col_widths=[3.5*cm, 5*cm, 6*cm, 5*cm]
))
story.append(sp(4))
story.append(warning("Pulse oximetry is UNRELIABLE in methemoglobinemia — it reads ~85% regardless of actual saturation. Always confirm with co-oximetry."))
story.append(sp(6))

story.append(sub_header("Allergy & Adverse Reactions"))
story.append(make_table(
    ["Reaction Type", "Frequency", "Cause", "Management"],
    [
        ["True allergy", "<1% of all adverse reactions", "Usually methylparaben or metabisulfite preservative (not the LA itself)", "Use preservative-free LA; use opposite class agent"],
        ["Cross-reactivity", "Within ester class only", "PABA metabolite of esters", "Amide LAs are safe if ester allergy is confirmed"],
        ["Ester allergy", "More common", "PABA metabolite cross-reacts within ester class", "Switch to amide class (lidocaine, bupivacaine, etc.)"],
        ["Toxic/vasovagal", "Common (misdiagnosed as allergy)", "Adrenaline palpitations / vasovagal syncope / anxiety", "History, testing; often not true allergy"],
    ],
    col_widths=[3.5*cm, 3*cm, 6*cm, 7*cm]
))
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 6: PHARMACOKINETICS SUMMARY
# ══════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(section_header("6.  Pharmacokinetics & Special Considerations"))
story.append(sp(6))

story.append(sub_header("Absorption by Site (ENT Context)"))
story.append(make_table(
    ["Site", "Absorption Rate", "Clinical Implication"],
    [
        ["Laryngeal & tracheal mucosa", "VERY HIGH — approaches IV injection levels", "Highest LAST risk in ENT; strict dose limits essential"],
        ["Nasal mucosa", "HIGH", "Cocaine/lidocaine absorbed rapidly; decongestant + pledget technique recommended"],
        ["Pharyngeal mucosa", "MODERATE–HIGH", "Spray-as-you-go technique requires careful dose tracking"],
        ["Subcutaneous injection", "LOW–MODERATE", "Standard safety margins apply; lower with epinephrine"],
        ["EAC injection", "LOW", "Relatively safe; minimal systemic absorption"],
    ],
    col_widths=[5*cm, 5.5*cm, 9*cm]
))
story.append(sp(6))

story.append(sub_header("Metabolism & Excretion"))
story.append(make_table(
    ["Pathway", "Agent Class", "Important Drug Interactions"],
    [
        ["Plasma cholinesterase hydrolysis", "Esters (procaine, chloroprocaine, cocaine)", "Inhibit plasma cholinesterase → prolong succinylcholine effect"],
        ["Hepatic CYP450 + carboxylesterases", "Amides (lidocaine, bupivacaine, etc.)", "Impaired in liver disease → toxicity at lower doses"],
        ["Renal excretion", "Both classes (metabolites)", "Caution in renal impairment — metabolite accumulation"],
    ],
    col_widths=[6*cm, 5*cm, 8.5*cm]
))
story.append(sp(4))
story.append(warning(
    "Both ester and amide metabolism are compromised in <b>parenchymal liver disease</b>. "
    "Reduce doses accordingly and monitor closely."
))
story.append(sp(6))

story.append(sub_header("Maximum Dose Quick Reference"))
story.append(make_table(
    ["Agent", "Plain (mg/kg)", "With Adrenaline (mg/kg)", "Absolute Max (adult)"],
    [
        ["Lidocaine",     "5",    "7",    "500 mg plain / 700 mg with epi"],
        ["Bupivacaine",   "2",    "3",    "175 mg plain / 225 mg with epi"],
        ["Ropivacaine",   "3",    "3",    "225 mg (no added benefit from epi)"],
        ["Prilocaine",    "6",    "8",    "400 mg plain / 600 mg with epi"],
        ["Mepivacaine",   "5",    "6",    "400 mg"],
        ["Cocaine",       "2–3",  "N/A — inherent vasoconstriction", "200 mg (topical only)"],
        ["Tetracaine",    "—",    "—",    "20 mg (single topical dose)"],
        ["Benzocaine",    "—",    "—",    "200 mg"],
    ],
    col_widths=[4*cm, 3.5*cm, 5.5*cm, 6.5*cm]
))
story.append(sp(8))


# ══════════════════════════════════════════════════════════════════
# SECTION 7: CLINICAL PEARLS
# ══════════════════════════════════════════════════════════════════
story.append(section_header("7.  Clinical Pearls & Practical Tips"))
story.append(sp(6))

pearls = [
    ("Buffering reduces pain", "Add 1 mL of 7.5% NaHCO₃ per 10 mL lidocaine. Significantly reduces the burning sensation of LA injection. Use routinely for nasal blocks."),
    ("Cocaine's unique dual role", "Cocaine is the only LA that provides both anaesthesia AND vasoconstriction. Invaluable for nasal endoscopy and surgery, but avoid in patients with cardiovascular disease or drug misuse."),
    ("Pledget technique", "Cotton pledgets soaked in LA act as a reservoir for mucosal anaesthesia. More effective than spray alone in nasal passages. Leave in place 5–15 minutes."),
    ("Infected tissue failure", "LA fails in abscesses due to low pH. Aspirate pus first if possible; then inject peripherally or use proximal nerve block technique."),
    ("Bupivacaine danger", "Unlike other LAs, bupivacaine causes cardiac collapse BEFORE prominent CNS signs. Never exceed safe dose limits. Have Intralipid immediately available."),
    ("Transtracheal injection timing", "Inject on expiration (not inspiration) so that the resulting cough on inspiration disperses LA throughout the trachea and subglottis."),
    ("Never infiltrate the RLN directly", "The recurrent laryngeal nerve supplies all intrinsic laryngeal muscles. Direct injection → bilateral palsy → acute airway obstruction."),
    ("EMLA for TM and nasal procedures", "EMLA (lidocaine + prilocaine) cream applied 30–60 min before myringotomy or nasal procedures reduces discomfort significantly, especially in anxious patients."),
    ("Succinylcholine interaction", "Ester LAs (especially procaine and chloroprocaine) competitively inhibit plasma cholinesterase. Inform anaesthetist; prolonged neuromuscular blockade may result."),
    ("Methemoglobinemia monitoring", "Standard pulse oximetry reads ~85% regardless of actual saturation. If methemoglobinemia is suspected (benzocaine/prilocaine use), co-oximetry is mandatory."),
]

for title, content in pearls:
    row = Table(
        [[Paragraph(f"▸  {title}", S("PearlTitle", fontName="Helvetica-Bold",
                                       fontSize=8.8, textColor=NAVY)),
          Paragraph(content, BODY)]],
        colWidths=[4.5*cm, doc.width - 4.5*cm]
    )
    row.setStyle(TableStyle([
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 0),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
        ("LINEBELOW",     (0,0), (-1,-1), 0.3, colors.HexColor("#D0E4EC")),
    ]))
    story.append(row)

story.append(sp(10))

# ── FOOTER NOTE ─────────────────────────────────────────────────
story.append(hr())
story.append(Paragraph(
    "Sources: K.J. Lee's Essential Otolaryngology (11th Ed.) · Cummings Otolaryngology Head and Neck Surgery · "
    "Regional & Topical Anaesthesia of Upper Airways (PMC2900072) · AAO-HNS Clinical Guidelines · "
    "Regional Anaesthesia in Head and Neck Surgery",
    NOTE
))
story.append(Paragraph(
    "Compiled by Orris Clinical Reference  |  July 2026  |  For educational use only — always verify doses before clinical application.",
    NOTE
))

# ── BUILD ────────────────────────────────────────────────────────
def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 7.5)
    canvas.setFillColor(MID_GREY)
    canvas.drawString(MARGIN, 12*mm, "Local Anaesthesia in ENT — Reference Guide")
    canvas.drawRightString(PAGE_W - MARGIN, 12*mm, f"Page {doc.page}")
    canvas.restoreState()

doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF generated successfully:", OUTPUT)
Running Command

cd /home/daytona/workspace/la-ent-guide && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/la-ent-guide/LA_in_ENT_Reference_Guide.pdf

Your reference guide PDF is ready. Here is the download link:

LA in ENT Reference Guide

PDF Document · PDF


What's inside the guide (7 sections, A4 format):
SectionContent
1. Mechanism & ClassificationNa-channel blockade, ionisation/pKa, ester vs. amide comparison table
2. Individual AgentsFull drug tables for all esters, amides, and miscellaneous agents (onset, duration, max dose, formulation, ENT use, notes)
3. Vasoconstrictors & AdditivesAdrenaline concentrations, NaHCO₃ buffering technique, EMLA use
4. ENT Nerve BlocksStep-by-step nasal block, EAC ring block, glossopharyngeal/peritonsillar, SPG block, SLN block, transtracheal injection, facial nerve blocks
5. Toxicity & ManagementLAST progression table, Intralipid protocol, cardiovascular toxicity, methemoglobinemia, allergy vs. toxic reaction
6. PharmacokineticsAbsorption by site (larynx = highest risk), metabolism, drug interactions, maximum dose quick reference table
7. Clinical Pearls10 practical tips including buffering, cocaine's dual role, EMLA use, RLN warning, timing of transtracheal injection

Local anaesthesia techniques and applications in ent

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Searching the Web

local anaesthesia techniques ENT procedures topical infiltration nerve block applications clinical

Reading File
Reading Web Page

https://med.libretexts.org/Bookshelves/Anatomy_and_Physiolog…

Reading File
Reading File
Now I have comprehensive information from Miller's Anaesthesia, Cummings Otolaryngology, KJ Lee's ENT, and the otologic surgery atlas. Let me compile the full answer.

Local Anaesthesia Techniques & Applications in ENT

Local anaesthesia in ENT encompasses three broad delivery methods - topical, infiltration, and nerve block - used either alone or in combination depending on the procedure and site. Understanding which technique suits each ENT region is the core of safe LA practice.

I. Techniques of Administration

1. Topical Anaesthesia

Applies LA directly to mucosal surfaces. Most relevant to ENT because of the extensive mucosa-lined cavities in the nose, pharynx, larynx, and trachea.
Methods:
MethodHowBest For
Cotton pledgets / swabsSoaked in LA, applied to mucosal surface for 5-15 minNasal cavity, posterior pharynx, tonsillar pillars
Spray / atomizerPressurised LA spray directed at mucosaOropharynx, larynx, trachea
NebulizerInhaled LA mist (e.g., 5 mL of 2% lidocaine)Diffuse airway - larynx, trachea, bronchi
Gargle and swallowPatient gargles 20% benzocaine or viscous lidocaineOropharynx for endoscopy, awake intubation
Spray-as-you-go (SAYGO)LA injected through suction port of fiberoptic scope as it advancesLaryngotracheal anaesthesia during awake FOI
EMLA creamApplied to skin or TM under occlusion, 30-60 min before procedureTympanic membrane (myringotomy), nasal skin
Transtracheal injectionLA injected through cricothyroid membrane (CTM)Trachea, subglottis, vocal cords
Key drugs for topical ENT use: Cocaine 4%, Lidocaine 4% (topical/spray), Lidocaine 10% spray, Benzocaine 20%, Tetracaine 0.5-2%, Cetacaine spray (onset 30 seconds)
Important: Laryngeal and tracheal mucosa absorb LA at near-IV rates. Total lidocaine dose for airway topicalisation is debated - sources cite 4-9 mg/kg. Monitor for LAST (tinnitus, perioral tingling, metallic taste, sedation).

2. Infiltration Anaesthesia

LA is injected directly into tissue around the operative site - subcutaneous, submucosal, or subperiosteal.
Subtypes:
TypeTechniqueENT Application
Simple infiltrationIntradermal / subcutaneous injection at siteMinor skin lesions, biopsy, laceration repair
Submucosal infiltrationInjection into mucosa along proposed incisionSeptoplasty, tonsillectomy, turbinate surgery
Subperiosteal infiltrationInjection beneath periosteum along boneNasal bone fracture reduction, mastoid surgery
Tumescent infiltrationLarge volume dilute LA + adrenaline + NaHCO₃ in NSScalp/forehead procedures, rhinoplasty
Field blockCircumferential ring of LA around operative areaSkin lesions, parotid region, postauricular area
Tips for less painful infiltration:
  • Buffer with NaHCO₃ 1:10 (1 mL bicarb per 10 mL lidocaine) - reduces acidity
  • Use fine needle (27-gauge or smaller)
  • Inject slowly within the submucosal/subdermal plane
  • Warm LA to body temperature before injection
  • Inject through already-anaesthetised tissue where possible

3. Nerve Block Anaesthesia

LA is deposited adjacent to a named nerve trunk, producing anaesthesia of the entire territory distal to the block. Requires accurate anatomical knowledge. Provides anaesthesia without distorting local tissue.

II. ENT Site-Specific Applications


A. EAR (Otology)

Nerve Supply of the External Ear

The external ear and EAC have a rich, overlapping nerve supply requiring multiple blocks:
NerveOriginTerritory
Auriculotemporal nerveV3 (mandibular)Anterior EAC, anterior auricle, tragus, TM (anterior)
Greater auricular nerveC2/C3 (cervical plexus)Lower 2/3 of auricle, postauricular region
Lesser occipital nerveC2/C3Upper posterior auricle
Arnold's nerve (auricular branch of vagus)CN XPosterior/inferior EAC, concha
Auricular branch of facial nerveCN VIIPosteromedial EAC
CN VII and CN IX innervate the concha and middle ear mucosa but are not amenable to regional block. Their distributions are reached by local infiltration of the EAC and topical anaesthesia to the middle ear.

Auriculotemporal Nerve Block

  • Landmark: Superficial temporal artery palpated as it crosses the zygoma; inject between this point and the incisura, near the root of the zygoma
  • Volume: 2-3 mL of LA
  • Effect: Anaesthesia of anterior EAC, tragus, anterior auricle

Greater Auricular Nerve Block

  • Landmark (proximal technique): Identify the midline of the sternocleidomastoid (SCM); draw a line from the inferior edge of the EAC 6.5 cm inferiorly to meet this midpoint; inject here
  • Landmark (distal/mastoid technique): Posterior border of SCM origin at skull base; insert needle posteromedially toward calvarium; withdraw slightly; aspirate (avoid occipital artery); inject
  • Volume: 2-3 mL of LA
  • Effect: Lower third of ear, lower postauricular skin

Lesser Occipital Nerve Block

  • Landmark: Posterior border of SCM at base of skull; inject slightly cephalad
  • Effect: Upper posterior auricle

Vagus Nerve (Arnold's Nerve) Block

  • Landmark: Where it exits the skull base between the mastoid process and the tympanic plate
  • Often caught incidentally during postauricular infiltration

Circumferential 'Ring' EAC Block

  • Inject 1-2 mL of 1% lidocaine + 1:100,000 adrenaline at the bony-cartilaginous junction (4-quadrant circumferential technique)
  • Used for: myringotomy, grommets in adults, foreign body removal, cerumen removal, EAC procedures

Tympanic Membrane - Topical

  • EMLA cream applied to TM under otoscopy for 30-60 minutes
  • Provides adequate anaesthesia for myringotomy/grommet insertion under LA in cooperative adults

Applications in Ear Surgery Under LA

  • Tympanoplasty (type I-III)
  • Stapedotomy / stapedectomy
  • Ossiculoplasty
  • Mastoidectomy (modified radical / canal wall down) - with sedation
  • Auroplasty (prominent ear correction)
  • EAC exostosis removal

B. NOSE (Rhinology)

Nerve Supply of the Nasal Cavity

NerveOriginTerritory
Anterior ethmoidal nerveNasociliary branch of V1Upper/anterior nasal septum, dorsum, lateral wall
Posterior ethmoidal nerveNasociliary branch of V1Upper posterior septum
Nasopalatine nerveV2 via sphenopalatine ganglionLower posterior septum, floor
Posterior superior lateral nasal nervesSPG / V2Lateral wall (middle, superior turbinates)
Anterior superior alveolar nerveV2Anterior floor and vestibule
Infraorbital nerveV2 terminalNasal tip, alar, vestibule skin
Olfactory nerve (CN I)Olfactory epitheliumSuperior nasal vault

The Standard Combined Technique (Nasal Surgery)

Step 1 - Decongestion + topical anaesthesia:
  • Cotton pledgets soaked in 4% cocaine OR 0.05% oxymetazoline + 4% lidocaine placed to cover all major nerve territories
  • Leave in situ 5-10 minutes
  • Targets: anterior ethmoid nerve (dorsal nasal surface, toward cribriform plate), sphenopalatine nerve (posterior middle meatus), nasopalatine nerve (septum/floor junction)
Step 2 - Submucosal infiltration:
  • 1% lidocaine + 1:100,000 adrenaline injected along septum, lateral nasal walls, and floor
  • Allow 15 minutes for haemostatic effect before incision
Step 3 - Nerve blocks as needed:
  • Infraorbital nerve block: Through nasal vestibule, needle to just below midpoint of orbital rim; anaesthetises nasal tip, ala, and columella skin
  • Anterior ethmoidal nerve block: Cotton applicator along dorsal nasal surface to anterior cribriform plate; selective block after 5-10 min
  • External nasal nerve block: Intercartilaginous injection along nasal dorsum from rhinion to supratip
  • Nasopalatine nerve block: Injection at base of columella just inside nasal sill
Step 4 - Posterior repack:
  • Pledgets replaced posteriorly for 5 more minutes to maximise deep block

Applications in Nasal Surgery

  • Septoplasty / submucous resection (SMR)
  • FESS (functional endoscopic sinus surgery)
  • Rhinoplasty (+ tumescent for scalp)
  • Closed reduction of nasal fractures
  • Nasal polyp removal
  • Turbinoplasty / inferior turbinate reduction
  • Nasal endoscopy and biopsy

C. THROAT / PHARYNX (Laryngology & Pharyngology)

Glossopharyngeal Nerve Block

Anatomy: CN IX exits jugular foramen, provides sensory supply to posterior 1/3 of tongue, vallecula, anterior surface of epiglottis, posterior/lateral pharyngeal wall, and is the afferent limb of the gag reflex.
Technique (injection):
  • Tongue displaced medially with a tongue blade, exposing the glossogingival groove ("gutter")
  • 25-gauge spinal needle inserted at base of anterior tonsillar pillar, just lateral to base of tongue, to depth of 0.5 cm
  • Aspirate (avoid ICA); inject 2 mL of 2% lidocaine
  • Repeat on contralateral side
Technique (non-invasive/topical):
  • Cotton-tipped applicators soaked in 4% lidocaine held at base of anterior tonsillar pillar for 5 minutes - achieves comparable block without injection
Applications:
  • Peritonsillar abscess (quinsy) drainage
  • Awake fiberoptic intubation (abolish gag reflex)
  • Rigid laryngoscopy under LA
  • Tonsillar biopsy
  • Nasopharyngoscopy in sensitive patients

Sphenopalatine Ganglion (SPG) Block

Anatomy: Largest extracranial parasympathetic ganglion; located in pterygopalatine fossa; accessible just deep to nasal mucosa overlying the posterior middle meatus.
ApproachTechniqueAgentIndication
Intranasal topical (preferred)Cotton-tipped applicators directed to posterior middle meatus at a 45° angle; leave 20-30 min4% lidocaine or 10% cocaineFESS, nasal surgery, cluster headache, migraines
Transnasal needleEndoscopically guided injection into PPF1-2 mL 1% lidocaine + epiChronic facial pain, post-rhinoplasty analgesia
Greater palatine canalTransoral needle through greater palatine foramen (caution: permanent nerve damage if foramen entered)1.5-2 mL 2% lidocainePalatal surgery, palatal anaesthesia
Warn patients: Bitter taste, temporary throat numbness/difficulty swallowing, transient nasal stuffiness, possible ptosis/miosis (transient Horner-like picture).

D. LARYNX & TRACHEA

Sequence for Complete Laryngotracheal Anaesthesia

Used for awake fiberoptic intubation (AFOI), awake laryngoscopy, and laryngeal procedures under LA.
Preparation protocol (Cummings/Miller sequence):
  1. Glycopyrrolate 0.2 mg IM/IV (antisialogogue) - reduces secretions that dilute topical LA
  2. Spray oropharynx with 20% benzocaine (Cetacaine) - gargle and swallow
  3. Nebulize 5 mL of 2% plain lidocaine if time allows
  4. Transnasal: spray with oxymetazoline 0.05% then 4% lidocaine pledgets between inferior turbinate and septum (5 min before scope)

Superior Laryngeal Nerve (SLN) Block

Anatomy: Branch of vagus; internal branch (sensory) pierces thyrohyoid membrane to supply mucosa from epiglottis down to, and including, the vocal cords. External branch (motor) to cricothyroid muscle.
Three landmark options (all block the internal SLN):
LandmarkTechnique
Greater cornu of hyoid bone (preferred)25G needle walked anteriorly off the hyoid greater cornu toward the thyrohyoid membrane; advance 1-2 cm until resistance of membrane is felt; aspirate; inject
Superior cornu of thyroid cartilageSame approach using thyroid superior cornu as starting point
Thyroid notchUseful in obese patients where cornu cannot be palpated
  • Volume: 1.5-2 mL of 2% lidocaine each side (bilateral block required)
  • Effect: Anaesthesia of supraglottis, glottis, aryepiglottic folds
  • Complication: Inadvertent internal carotid artery injection - always aspirate first

Transtracheal (Translaryngeal) Block

Anatomy: Recurrent laryngeal nerve (CN X branch) - supplies all intrinsic laryngeal muscles except cricothyroid, plus sensory to subglottis and trachea. The cricothyroid membrane (CTM) is the safe access point.
Technique:
  1. Patient in neck extension; identify CTM (between thyroid cartilage above and cricoid below, in midline)
  2. 20-22 gauge needle attached to 5 mL syringe; advance posteriorly and slightly caudally
  3. Free aspiration of air confirms intratracheal position
  4. Inject 4 mL of 2% or 4% lidocaine rapidly on expiration
  5. Patient coughs immediately - this disperses LA upward to vocal cords and downward into trachea
  6. Optionally: thread catheter over needle first to reduce trauma, then inject through catheter
Critical warning: NEVER directly infiltrate the RLN. The RLN supplies all intrinsic laryngeal muscles (except cricothyroid). Bilateral damage = immediate bilateral vocal cord paralysis = acute life-threatening airway obstruction.

Spray-as-you-go (SAYGO)

  • 2-4% lidocaine injected in 1-2 mL aliquots through suction/working channel of fiberoptic scope
  • Applied at each level as scope advances: nasopharynx → oropharynx → supraglottis → glottis → trachea
  • Cumulative dose must be tracked carefully (4-9 mg/kg maximum for airway)

Applications for Laryngotracheal LA

  • Awake fiberoptic intubation (AFOI) - difficult airway
  • Awake direct laryngoscopy
  • Laryngeal biopsy under LA
  • Vocal cord injection (fat, hyaluronate)
  • Microlaryngoscopy in high-risk GA patients
  • Rigid bronchoscopy preparation

E. NECK

Cervical Plexus Block

  • Superficial cervical plexus: injected along posterior border of SCM at its midpoint (Erb's point)
  • Provides anaesthesia to the lateral/anterior neck, postauricular region, clavicle
  • Used for: neck dissection supplementation, thyroidectomy under LA, parotidectomy

Facial Nerve Branches (Head & Neck)

BlockTargetENT Application
Infraorbital (V2)Ala, tip, upper lip, cheekRhinoplasty, nasal fracture
Supraorbital + supratrochlear (V1)Forehead, scalpBrow lift, scalp procedures
Mental nerve (V3)Lower lip, chinChin surgery
Auriculotemporal (V3)Temporal region, anterior earTemporal/parotid procedures
Greater auricular (C2/C3)Posterior auricle, parotid skinParotidectomy LA supplement

III. Sedation Adjuncts

LA in ENT is frequently combined with conscious sedation for patient comfort, especially for anxious individuals:
DrugDoseRole
Midazolam1-2 mg IVAnxiolysis, amnesia
Fentanyl1-2 mcg/kg IVAnalgesia, sedation
Dexmedetomidine0.5-1 mcg/kg IV (loading)Conscious sedation; preserves airway
Propofol0.5-1 mg/kg IV (titrated)Deeper sedation
Glycopyrrolate 0.2 mg (antisialogogue): given before topical laryngeal anaesthesia to dry secretions, which otherwise dilute the LA and impair topical effect.

IV. Technique Selection by Procedure

ENT ProcedurePreferred LA Technique
Nasal endoscopyTopical: cocaine/oxymetazoline + lidocaine pledgets
FESSTopical pledgets + submucosal infiltration + SPG block
SeptoplastySubmucosal infiltration (1% lido + epi) + topical pledgets
Nasal fracture reductionCombined topical pledgets + nerve blocks (infraorbital, nasopalatine, external nasal)
Myringotomy / grommets (adult)EMLA cream on TM 45-60 min before + EAC ring block
TympanoplastyEAC ring block + postauricular field block + LA infiltration
StapedectomyEAC ring block + local infiltration under microscopy
Peritonsillar abscess drainagePeritonsillar injection (glossopharyngeal block)
Rigid nasopharyngoscopyTopical nasal spray + benzocaine oropharyngeal spray
Awake fiberoptic intubationGlycopyrrolate + nebulised lidocaine + glossopharyngeal block + SLN block + transtracheal injection
Laryngeal biopsy (LA)SLN block bilateral + transtracheal block + SAYGO
Vocal cord injection (LA)SLN block + transtracheal block
Neck dissection (LA/sedation)Superficial cervical plexus block + LA infiltration
Thyroidectomy (LA/sedation)Superficial + deep cervical plexus block

Sources: Miller's Anaesthesia 10th Ed. (p. 5870-5875); Cummings Otolaryngology Head and Neck Surgery (p. 127); K.J. Lee's Essential Otolaryngology (pp. 111-117); Atlas of Otolaryngology - Local Anaesthesia for Otologic Surgery; Regional & Topical Anaesthesia of Upper Airways - PMC

Mucociliary clearance , nasal cycle

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Acute otitis media

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.