All the viva question and management of foreign body of nose

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Searching Images

nasal foreign body button battery child rhinoscopy

Reading File
Reading File

Foreign Body of the Nose — Management & Viva Q&A

Overview

A nasal foreign body (FB) is any object (organic or inorganic) lodged in the nasal cavity, most classically presenting as unilateral, foul-smelling, purulent nasal discharge in a young child (2-4 years) - Scott-Brown's Otorhinolaryngology, and Tintinalli's Emergency Medicine.

1. Etiology / Types

  • Organic: peas, beans, seeds, nuts, corn, paper, sponge, cotton wool, fabric
  • Inorganic: beads, plastic toy parts, stones, magnets, button batteries (emergency), rhinoliths (long-standing FB encrusted with calcium/magnesium salts)
  • Live/animate: maggots, insects (leeches in endemic areas)
  • Occur almost exclusively in children (self-insertion); also seen in psychiatric or intellectually disabled adults - Tintinalli's Emergency Medicine.

2. Clinical Features

  • Local pain (23-55%), unilateral nasal discharge (mucopurulent, foul-smelling) 7-36%
  • Unilateral nasal obstruction
  • Recurrent unilateral epistaxis
  • Unilateral excoriation of the nasal rim/vestibule
  • History of witnessed insertion by parent, OR the child may be entirely asymptomatic
  • Immediate discharge + pain suggests a button battery (vs the usual ≥4 days delay for inert FBs) - Scott-Brown's Otorhinolaryngology Head & Neck Surgery.
  • Long-standing FB -> granulation tissue -> rhinolith -> can even cause inferior turbinate hypoplasia

3. Diagnosis

  • Anterior rhinoscopy with head mirror/light and nasal speculum - most FBs are directly visualized
  • High index of suspicion in a child with persistent unilateral purulent discharge
  • Plain radiograph - useful only for radio-opaque objects (rhinoliths, batteries, some metals); many FBs (organic, plastic) are radiolucent, so a normal X-ray does NOT exclude a FB
  • Endoscopy if not visualized anteriorly or FB pushed posteriorly

4. Management

General principles

  • Adequate immobilization is the key to success (a struggling child converts an easy retrieval into a dangerous one)
  • Good illumination + head mirror/headlight, nasal speculum
  • Topical vasoconstrictor/decongestant (e.g., 0.5% phenylephrine) + topical anesthetic (1% lidocaine) to shrink mucosa, reduce bleeding, and ease removal
  • Consider procedural sedation (ketamine used in ~20% of ED removals) or, for deep/impacted FBs in an uncooperative child, general anesthesia

Techniques (least to most invasive)

  1. Positive pressure / "mother's/parent's kiss": occlude the unaffected nostril, parent seals mouth over child's mouth and blows a sharp puff of air - expels the FB in about 50-60% of cases. A bag-valve mask can be used similarly.
  2. Nose blowing (cooperative older child) while occluding the opposite nostril.
  3. Instrumentation:
    • Hook or bent Jobson-Horne probe: passed behind/above the FB and drawn forward (never push posteriorly - risk of the object falling back into the nasopharynx/airway)
    • Alligator forceps: best for FBs close to the anterior nares that can be directly grasped; risk of fragmenting friable objects
    • Foley/Fogarty balloon catheter technique: lubricated catheter passed beyond the FB, balloon inflated with air/saline, then withdrawn to draw the FB out
    • Suction catheter (Frazier tip) for smooth, rounded objects
  4. Irrigation - avoid if the object is expandable/hygroscopic (rice, beans, vegetable matter, sponge) as it will swell and become more impacted
  5. Difficult/deep FB: push into the pharynx under general anesthesia and retrieve from the oropharynx, or break it into fragments and remove piecemeal
  6. Live insects: kill first with 2% lidocaine or mineral oil instilled into the nose, then remove with forceps/suction
  7. Failed attempts, deeply impacted, or posteriorly displaced FBs -> refer to ENT/otolaryngology for endoscopic removal, ideally same working day (it is now considered acceptable to wait for daytime theatre lists in a neurologically normal child, rather than an emergency after-hours procedure)

Special emergency: Button battery

  • True emergency - liquefactive/electrolytic alkaline necrosis and septal perforation can occur in as little as 7 hours
  • Do NOT instill any nasal drops/saline before removal - electrolyte fluid completes the circuit and worsens the alkaline burn
  • Remove as quickly as possible, ideally in theatre; get a plain film if the battery cannot be directly visualized due to discharge/edema

5. Complications

  • Of the FB itself: chronic sinusitis, rhinolith formation, septal perforation, pressure necrosis, inferior turbinate hypoplasia, aspiration into the airway (rare, more likely if gag reflex impaired)
  • Of removal attempts: failure to remove, epistaxis, mucosal laceration, septal perforation, pushing the FB posteriorly with risk of aspiration/inhalation

Viva Questions & Model Answers

Q1. What is the most common age group for nasal foreign bodies, and why? 2-4 years - because toddlers explore objects orally/nasally and lack the cognitive judgment to avoid self-insertion.
Q2. What is the classic clinical clue that should make you suspect a nasal FB? Unilateral, foul-smelling, purulent nasal discharge (± unilateral epistaxis) in a child - bilateral symptoms point away from a FB toward rhinitis/sinusitis.
Q3. Why does discharge typically take about 4 days to appear? Inert FBs cause a low-grade mucosal irritation and secondary bacterial infection that builds up over days; button batteries are the exception, causing immediate tissue reaction from electrolysis.
Q4. Name the instruments used for nasal FB removal. Jobson-Horne probe/hook, alligator (crocodile) forceps, Tilley's forceps, Foley/Fogarty balloon catheter, Frazier suction catheter, nasal speculum with headlight.
Q5. Describe the "mother's kiss" technique. The unaffected nostril is occluded, the parent places their mouth over the child's mouth (sealing it), and gives a sharp puff of air; positive pressure through the nasopharynx expels the FB out of the affected nostril in roughly half to two-thirds of cases. Best avoided/less effective with hollow or irregular objects.
Q6. What is the danger of pushing a hook behind a FB incorrectly? If manipulated posteriorly instead of being hooked and drawn forward, the FB can fall back into the nasopharynx/oropharynx with risk of aspiration into the larynx/trachea.
Q7. Why is a button battery a nasal emergency? It generates an electric current that electrolyzes tissue fluid/mucus, producing hydroxide ions and a severe alkaline (liquefactive) burn - septal perforation can occur within 7 hours. Instilling nasal drops before removal worsens this by supplying more electrolyte fluid.
Q8. Is X-ray useful for nasal foreign bodies? Only if radio-opaque (button batteries, metallic objects, rhinoliths). Most organic/plastic FBs are radiolucent, so a negative X-ray does not exclude a FB - clinical suspicion and direct visualization remain paramount.
Q9. What is a rhinolith? A calcified mass (calcium and magnesium phosphate/carbonate salts) that forms around a long-standing, unrecognized intranasal FB, typically in the anterior nasal cavity; it is radio-opaque.
Q10. What are the indications for referral to ENT / for GA removal? Failed bedside removal, deeply impacted or posteriorly located FB, uncooperative/young child, live insect that cannot be killed and removed easily, button battery not easily visualized, and any FB with associated complication (bleeding, suspected perforation).
Q11. How do you manage a live insect foreign body in the nose? Instill 2% lidocaine or mineral oil to kill/immobilize the insect first, then remove with forceps or suction - removing a live, moving insect directly risks it burrowing deeper or causing more mucosal trauma.
Q12. What are the complications of nasal FB removal itself? Epistaxis, mucosal laceration, failure to retrieve (fragmentation of friable objects), and rarely septal perforation.
Q13. Why should irrigation be avoided for organic foreign bodies like beans or rice? These are hygroscopic/expandable; irrigation with saline causes them to swell, making them larger and harder to extract, and increasing impaction risk.
Q14. What old teaching about foreign body removal has changed? Previously, "the sun should never rise or set on a retained foreign body," implying immediate after-hours removal. Current practice holds it is safe to wait for a routine operating list in a neurologically normal child if bedside removal fails, rather than performing an urgent out-of-hours GA.

Sources: Scott-Brown's Otorhinolaryngology Head & Neck Surgery, Vol 2 (pp. 429-431); Tintinalli's Emergency Medicine, A Comprehensive Study Guide (Ch. 123, "Nose and Sinus Disorders in Infants and Children"; Ch. 244); Textbook of Family Medicine, 9th ed.
A quick evidence check found no recent systematic reviews/meta-analyses in the last 2 years that contradict this standard management approach - it remains consistent with current emergency medicine and otolaryngology practice.

Give all detail

Foreign Body of the Nose — Complete Detail (Anatomy, Pathophysiology, Management, and Viva Prep)

1. Relevant Anatomy (why FBs lodge where they do)

  • The nasal cavity is divided by the septum; the inferior turbinate/inferior meatus and the area just anterior to it (floor of nose, below the inferior turbinate) are the two most common sites where a FB gets impacted, because this is the most accessible flat area a child's finger or object can reach.
  • Nasal mucosa is highly vascular (Kiesselbach's/Little's area anteriorly) - hence bleeding is a frequent accompaniment and complication of both the FB and its removal.
  • Posteriorly, the nasal cavity opens into the choana and nasopharynx - a FB pushed the wrong way can slip through here into the oropharynx/larynx, which is the anatomical basis for the aspiration risk.

2. Etiology / Types of Foreign Bodies

CategoryExamplesNotes
Organicpeas, beans, seeds, nuts, corn, paper, sponge, cotton, fabricSwell with moisture/irrigation; higher infection/inflammation
Inorganic - inertbeads, plastic toy parts, stones, chalkCan remain asymptomatic for years -> rhinolith
Inorganic - reactiveButton batteries, magnetsTrue emergencies; batteries cause liquefactive necrosis, magnet pairs (one in each nostril or nose+cheek) can cause septal pressure necrosis
Live/animatemaggots, insects, (rarely leeches in endemic areas)Kill before removal
Iatrogenicretained nasal packing/gauzeHistory of recent nasal surgery/epistaxis packing

3. Pathophysiology of Complications

  • Inert FB retained long-term -> chronic mucosal irritation -> granulation tissue -> deposition of calcium/magnesium phosphate and carbonate salts around it -> rhinolith (radio-opaque, can sit undetected for decades - one case report cited a rhinolith present for over 80 years).
  • Button battery: current flow through moist nasal mucosa causes electrolysis of tissue fluid, generating hydroxide ions at the negative pole -> severe alkaline liquefactive necrosis. This can progress to septal perforation, ulceration of the inferior turbinate, and even saddle-nose deformity in survivors, within as little as 7 hours of contact.
  • Magnets: two magnetic objects (or a magnet + another metallic FB) apposed across the septum compress mucosa between them -> ischemic pressure necrosis -> septal perforation, even without direct mucosal injury from the object itself.
  • Long-standing FB can cause inferior turbinate hypoplasia from chronic pressure.

4. Clinical Features (expanded)

  • Local pain: 23-55%
  • Unilateral mucopurulent/foul-smelling nasal discharge: 7-36%
  • Unilateral nasal obstruction
  • Recurrent unilateral epistaxis (should always raise suspicion of a FB, tumour, or vascular lesion in a child)
  • Unilateral excoriation/erythema of the nasal vestibule/rim from chronic mucopurulent drainage
  • History of witnessed self-insertion (most reliable when present)
  • Many children (especially with inert FBs) are entirely asymptomatic and the object is found incidentally
  • Red flags for button battery: immediate (not delayed) onset of symptoms, disproportionate pain/edema, rapid discharge, visible discoloration or a "halo sign" on imaging

5. Differential Diagnosis of Unilateral Nasal Symptoms in a Child

  • Foreign body (most common reversible cause)
  • Choanal atresia/stenosis (usually presents earlier, in infancy)
  • Unilateral choanal polyp / antrochoanal polyp
  • Rhinolith (if long-standing, calcified)
  • Dental disease/odontogenic sinusitis (unilateral facial/nasal symptoms)
  • Juvenile nasopharyngeal angiofibroma (adolescent males, presents with epistaxis)
  • Nasal tumour (rare but must be excluded if symptoms persist despite treatment)

6. Diagnosis - Step by Step

  1. History: witnessed insertion, duration of symptoms, laterality, type of object if known
  2. Examination: anterior rhinoscopy with head mirror/headlight and Thudicum's/nasal speculum; look at both nostrils for comparison
  3. Decongest first if mucosa is edematous/obscuring view (topical phenylephrine or oxymetazoline) to improve visualization
  4. Endoscopy (rigid nasal endoscope) if not visualized anteriorly, or if FB is displaced posteriorly
  5. Imaging:
    • Plain radiograph (occipitomental/lateral) - only useful for radio-opaque objects (batteries, some metals, rhinoliths); a classic finding for a button battery is a "double ring" or halo sign on frontal view distinguishing it from a coin/disc.
    • CT reserved for suspected complications (abscess, orbital/skull base extension) or when the object cannot be localized clinically
    • A negative X-ray does NOT rule out a FB - most organic/plastic objects are radiolucent

7. Management - Full Algorithm

Step 1: Preparation

  • Position: child seated on parent's lap in a "hug" restraint (parent's legs around child's legs, one arm around torso, one hand holding forehead against parent's chest) or supine with head immobilized by an assistant
  • Adequate lighting - headlight or head mirror, nasal speculum
  • Topical vasoconstrictor (0.5% phenylephrine or oxymetazoline) + topical anesthetic (1-2% lidocaine spray or gel) - shrinks mucosa, reduces bleeding, and improves cooperation/comfort

Step 2: Least invasive techniques first

  • Positive pressure / "Parent's kiss" (mother's kiss): occlude the unaffected nostril; parent seals their mouth over the child's mouth and delivers one sharp puff of air. Success in ~50-60% of cases. A bag-valve mask can substitute for the parent's breath, achieving similar positive pressure.
  • Voluntary nose-blowing in an older, cooperative child while occluding the unaffected side

Step 3: Instrumentation (if positive pressure fails)

  • Hook or bent Jobson-Horne probe: passed beyond/behind the FB and drawn forward - never push posteriorly
  • Alligator (crocodile) forceps: ideal for FBs visible and graspable near the anterior nares; risk of fragmenting friable/organic material
  • Foley or Fogarty balloon catheter technique: lubricated deflated catheter passed past the FB, balloon inflated with air, then withdrawn - draws the FB out ahead of it; particularly useful for smooth, rounded, posteriorly-located objects
  • Suction catheter (Frazier tip): effective for smooth or friable objects that forceps might fragment
  • Magnet-tipped probe: for magnetic/metallic FBs
  • Avoid irrigation if the FB is organic/hygroscopic (rice, beans, sponge) - it will swell and become harder to extract

Step 4: If still unsuccessful

  • Consider procedural sedation (ketamine is most common - used in ~20% of ED removals) for an uncooperative child
  • Push the FB into the pharynx under general anesthesia and retrieve orally, or
  • Break the object into fragments in situ and remove piecemeal
  • Refer to ENT/otolaryngology for endoscopic removal under general anesthesia if: FB is deeply impacted, posteriorly displaced, previous attempts have failed, or the child cannot be safely immobilized

Step 5: Special emergency - button battery

  • Treat as a time-critical emergency - remove as fast as possible, ideally within the hour, in theatre if needed
  • Do NOT instill any nasal drops, saline, or decongestant before removal - any electrolyte fluid completes the electrical circuit and worsens the alkaline burn
  • After removal, irrigate the area copiously with saline/water to dilute residual alkali, and arrange ENT follow-up for delayed septal perforation
  • Consider plain radiograph if the battery is obscured by discharge/edema and not directly visualized

Step 6: Live insect FB

  • Kill first with 2% lidocaine or mineral oil instilled into the nostril, THEN remove with forceps or suction (removing a live, struggling insect risks it burrowing deeper or fragmenting)

8. Complications

From the FB itself: chronic sinusitis, rhinolith formation, septal perforation, pressure/liquefactive necrosis (batteries), inferior turbinate hypoplasia, and (rarely) aspiration into the airway if it slips posteriorly - more likely if the gag reflex is impaired.
From removal attempts: failure to remove (most common), epistaxis, mucosal laceration, fragmentation of friable objects leaving residual pieces, and rarely septal perforation.

9. Evidence Note (recent literature)

A 2022 systematic review and meta-analysis (Jungbauer et al., Int J Pediatr Otorhinolaryngol, PMID: 35561441) compared pediatric nasal FB removal success across care settings (ED vs primary care vs ENT clinic vs operating room), generally supporting a stepwise escalation approach as above - attempt removal in the least invasive/lowest-acuity setting first, escalate to ENT/OR for failed or complicated attempts. A 2025 review in American Family Physician (PMID: 40736491) on ear/nose/throat foreign bodies reinforces the same principles: early recognition, button battery as an emergency, and stepwise instrumentation. These support rather than contradict the standard management already outlined.

10. Expanded Viva Questions & Answers

Q1. What is the most common site of impaction of a nasal FB? Floor of the nasal cavity, below the inferior turbinate.
Q2. What single clinical sign should always trigger suspicion of a nasal FB in a child? Unilateral, foul-smelling, purulent nasal discharge (± unilateral epistaxis).
Q3. Why is duration of symptoms important in identifying the type of FB? Inert FBs typically take ≥4 days to produce discharge; button batteries cause immediate symptoms due to instant tissue reaction from electrolysis.
Q4. What radiographic sign is classic for a nasal button battery? A "double ring" or "halo" sign on frontal/occipitomental view, differentiating it from a flat coin (single density, no rim).
Q5. Why should you avoid irrigation for a bean, pea, or rice FB? These are hygroscopic and will absorb water/saline, swell in size, and become more firmly impacted, making removal harder.
Q6. Describe the parent's/mother's kiss technique and its success rate. Occlude the unaffected nostril; the parent seals their mouth over the child's mouth and blows a single sharp puff of air, generating positive pressure that expels the FB through the affected nostril. Success rate is roughly 50-60%.
Q7. What is the danger of manipulating a hook posteriorly instead of anteriorly? The FB may be pushed backward into the nasopharynx and aspirated into the larynx/trachea instead of being retrieved.
Q8. Why is a button battery a nasal emergency, and what is the time frame for damage? It causes electrolytic alkaline liquefactive necrosis of adjacent mucosa/cartilage/bone; septal perforation can occur within as little as 7 hours.
Q9. Why should nasal drops never be instilled before removing a button battery? Any electrolyte-containing fluid completes the electrical circuit around the battery, accelerating electrolysis and worsening the alkaline burn.
Q10. What is a rhinolith and how does it form? A calcified concretion (calcium/magnesium phosphate and carbonate salts) that forms around a long-retained intranasal FB, usually in the anterior nasal cavity; it is radio-opaque and can remain undetected for years to decades.
Q11. List the instruments commonly used to remove a nasal FB. Jobson-Horne probe/hook, alligator (crocodile) forceps, Tilley's forceps, Foley/Fogarty balloon catheter, Frazier suction catheter, magnet-tipped probe (for metallic objects).
Q12. What sedation is most commonly used for difficult pediatric nasal FB removal in the ED? Ketamine, used in about 20% of ED removals requiring procedural sedation.
Q13. When should you refer a nasal FB case to ENT rather than attempt further removal yourself? Failed bedside attempts, deeply impacted or posteriorly displaced object, uncooperative child needing GA, or any FB with associated complications (heavy bleeding, suspected perforation, button battery not visualized).
Q14. What are the risks of using alligator forceps on a friable organic FB? Fragmentation of the object, leaving residual pieces behind that are harder to retrieve and can continue to cause inflammation/infection.
Q15. How do you manage a live insect in the nasal cavity? Kill it first with 2% lidocaine or mineral oil, then remove with forceps or suction - attempting to grasp a live, mobile insect risks pushing it deeper or causing it to fragment.
Q16. What long-term structural complication can a chronic nasal FB cause? Hypoplasia of the inferior turbinate due to prolonged pressure effect, in addition to rhinolith formation and possible septal perforation.
Q17. Why is recurrent unilateral epistaxis in a child significant? It is a classic but often under-recognized presentation of a retained nasal FB and should prompt anterior rhinoscopy before considering other causes like angiofibroma or coagulopathy.
Q18. What is the modern view on urgency of removal for an inert nasal FB found incidentally, if bedside removal fails? It is acceptable to wait for a routine operating list in a neurologically normal child rather than force removal under out-of-hours general anesthesia purely because of the old "never let the sun rise or set on a foreign body" teaching - though a button battery remains a same-hour emergency regardless.

Sources: Scott-Brown's Otorhinolaryngology Head & Neck Surgery, Vol 2 (Ch. 34, pp. 429-431, Batteries and magnets section); Tintinalli's Emergency Medicine, A Comprehensive Study Guide (Ch. 123 "Nose and Sinus Disorders in Infants and Children," Ch. 244); Textbook of Family Medicine, 9th ed. (Ch. 18); K J Lee's Essential Otolaryngology; ROSEN's Emergency Medicine - Concepts and Clinical Practice; Roberts and Hedges' Clinical Procedures in Emergency Medicine.
Recent evidence check: Jungbauer WN et al., "Comparison of pediatric nasal foreign body removal by care setting: A systematic review and meta-analysis," Int J Pediatr Otorhinolaryngol 2022 (PMID: 35561441) - supports the stepwise, setting-based escalation approach described above; no contradiction to standard teaching found.

Create a quick reference PDF guide for nasal FB management

Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/nasal-fb-guide/output && ls -la /tmp/workspace/

Writing File

~/nasal-fb-guide/build_pdf.py

# -*- coding: utf-8 -*-
"""Quick Reference PDF: Management of Nasal Foreign Body"""

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.lib import colors
from reportlab.platypus import (
    SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
    ListFlowable, ListItem, HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT

OUT = "/tmp/workspace/nasal-fb-guide/output/Nasal_Foreign_Body_Quick_Reference.pdf"

NAVY = colors.HexColor("#1b2a4a")
RED = colors.HexColor("#b3261e")
TEAL = colors.HexColor("#0f6d66")
LIGHT_GREY = colors.HexColor("#f2f2f2")
AMBER_BG = colors.HexColor("#fdecea")

styles = getSampleStyleSheet()

title_style = ParagraphStyle(
    "TitleStyle", parent=styles["Title"], fontSize=19, leading=22,
    textColor=NAVY, alignment=TA_CENTER, spaceAfter=2
)
subtitle_style = ParagraphStyle(
    "SubtitleStyle", parent=styles["Normal"], fontSize=10, leading=12,
    textColor=colors.grey, alignment=TA_CENTER, spaceAfter=10
)
h2 = ParagraphStyle(
    "H2", parent=styles["Heading2"], fontSize=13, leading=15,
    textColor=colors.white, backColor=NAVY, spaceBefore=10, spaceAfter=6,
    leftIndent=4, borderPadding=(4, 4, 4, 4)
)
h3 = ParagraphStyle(
    "H3", parent=styles["Heading3"], fontSize=11, leading=13,
    textColor=NAVY, spaceBefore=6, spaceAfter=3
)
body = ParagraphStyle(
    "Body", parent=styles["Normal"], fontSize=9.2, leading=12.5,
    alignment=TA_LEFT, spaceAfter=3
)
body_small = ParagraphStyle(
    "BodySmall", parent=styles["Normal"], fontSize=8.5, leading=11.5
)
warn_style = ParagraphStyle(
    "Warn", parent=styles["Normal"], fontSize=9.5, leading=13,
    textColor=RED, backColor=AMBER_BG, borderPadding=(6, 6, 6, 6),
    spaceBefore=4, spaceAfter=6
)
cell_style = ParagraphStyle("Cell", parent=styles["Normal"], fontSize=8.6, leading=11)
cell_head = ParagraphStyle("CellHead", parent=styles["Normal"], fontSize=9, leading=11,
                            textColor=colors.white, fontName="Helvetica-Bold")
footer_style = ParagraphStyle("Footer", parent=styles["Normal"], fontSize=7.5,
                               textColor=colors.grey, alignment=TA_CENTER)

def P(text, style=body):
    return Paragraph(text, style)

def bullets(items, style=body_small, bullet_type="bullet"):
    return ListFlowable(
        [ListItem(P(i, style), bulletColor=NAVY) for i in items],
        bulletType=bullet_type, start=None, leftIndent=14, bulletFontSize=8
    )

elements = []

# ---------- Header ----------
elements.append(P("Nasal Foreign Body", title_style))
elements.append(P("Quick Reference Guide — Diagnosis & Management", subtitle_style))
elements.append(HRFlowable(width="100%", thickness=1.2, color=NAVY, spaceAfter=8))

# ---------- Overview ----------
elements.append(P("OVERVIEW", h2))
elements.append(P(
    "Foreign body (FB) impacted in the nasal cavity — most common in children "
    "aged 2&ndash;4 years. Classic presentation: <b>unilateral, foul-smelling, purulent nasal "
    "discharge</b> ± unilateral epistaxis. Also occurs in psychiatric/intellectually disabled adults. "
    "Discharge typically takes &ge;4 days to appear for inert objects, but is <b>immediate</b> with a button battery.",
    body))

# ---------- Red flag box ----------
elements.append(P(
    "&#9888; BUTTON BATTERY = EMERGENCY. Liquefactive alkaline necrosis and septal perforation "
    "can occur within <b>7 hours</b>. Remove immediately. <u>Do NOT instill nasal drops/saline before "
    "removal</u> — electrolyte fluid completes the circuit and worsens the burn.",
    warn_style))

# ---------- Types of FB ----------
elements.append(P("TYPES OF FOREIGN BODIES", h2))
fb_data = [
    [P("Category", cell_head), P("Examples", cell_head), P("Key Point", cell_head)],
    [P("Organic", cell_style), P("Peas, beans, seeds, nuts, corn, paper, sponge, cotton", cell_style),
     P("Swell if irrigated with saline/water", cell_style)],
    [P("Inert inorganic", cell_style), P("Beads, plastic parts, stones, chalk", cell_style),
     P("Can sit for years &rarr; rhinolith formation", cell_style)],
    [P("Reactive inorganic", cell_style), P("Button batteries, magnets", cell_style),
     P("True emergencies — necrosis/perforation risk", cell_style)],
    [P("Live/animate", cell_style), P("Maggots, insects", cell_style),
     P("Kill before attempting removal", cell_style)],
]
fb_table = Table(fb_data, colWidths=[75, 220, 175])
fb_table.setStyle(TableStyle([
    ("BACKGROUND", (0, 0), (-1, 0), NAVY),
    ("GRID", (0, 0), (-1, -1), 0.5, colors.grey),
    ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
    ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, LIGHT_GREY]),
    ("TOPPADDING", (0, 0), (-1, -1), 4),
    ("BOTTOMPADDING", (0, 0), (-1, -1), 4),
]))
elements.append(fb_table)
elements.append(Spacer(1, 6))

# ---------- Clinical features & diagnosis ----------
elements.append(P("CLINICAL FEATURES &amp; DIAGNOSIS", h2))
cf_col1 = [
    P("<b>Clinical features</b>", h3),
    bullets([
        "Local nasal pain (23&ndash;55%)",
        "Unilateral mucopurulent/foul discharge (7&ndash;36%)",
        "Unilateral nasal obstruction",
        "Recurrent unilateral epistaxis",
        "Excoriation of nasal vestibule/rim",
        "Witnessed insertion by parent, OR asymptomatic",
    ]),
]
cf_col2 = [
    P("<b>Diagnostic steps</b>", h3),
    bullets([
        "Anterior rhinoscopy with headlight + nasal speculum (both nostrils)",
        "Decongest mucosa first if oedematous/obscured view",
        "Nasal endoscopy if not visualised anteriorly or FB displaced posteriorly",
        "Plain X-ray only helps for radio-opaque objects (battery = \"halo/double-ring\" sign); negative X-ray does NOT exclude FB",
        "CT only if complication suspected (abscess, skull base extension)",
    ]),
]
cf_table = Table([[cf_col1, cf_col2]], colWidths=[235, 235])
cf_table.setStyle(TableStyle([
    ("VALIGN", (0, 0), (-1, -1), "TOP"),
    ("BOX", (0, 0), (-1, -1), 0.6, colors.grey),
    ("INNERGRID", (0, 0), (-1, -1), 0.6, colors.grey),
    ("LEFTPADDING", (0, 0), (-1, -1), 8),
    ("RIGHTPADDING", (0, 0), (-1, -1), 8),
    ("TOPPADDING", (0, 0), (-1, -1), 6),
    ("BOTTOMPADDING", (0, 0), (-1, -1), 6),
]))
elements.append(cf_table)
elements.append(Spacer(1, 8))

# ---------- Management algorithm ----------
elements.append(P("MANAGEMENT ALGORITHM (STEPWISE)", h2))

steps = [
    ("STEP 1 — Prepare",
     "Restrain child (parent \"hug hold\" or supine, head immobilised). Good lighting + nasal speculum. "
     "Topical vasoconstrictor (phenylephrine/oxymetazoline) + topical anaesthetic (lidocaine) to shrink mucosa and reduce bleeding."),
    ("STEP 2 — Positive pressure (least invasive)",
     "\"Parent's/Mother's kiss\": occlude unaffected nostril, parent seals mouth over child's mouth, gives one sharp puff of air "
     "(success ~50&ndash;60%). Bag-valve-mask can substitute. Older cooperative child: voluntary nose-blowing while occluding other side."),
    ("STEP 3 — Instrumentation",
     "&bull; Hook / bent Jobson-Horne probe — pass behind FB, pull forward (never push posteriorly)<br/>"
     "&bull; Alligator forceps — for FB visible/graspable near anterior nares (risk: fragments friable objects)<br/>"
     "&bull; Foley/Fogarty balloon catheter — pass beyond FB, inflate, withdraw to draw FB out<br/>"
     "&bull; Frazier suction catheter — smooth/friable objects<br/>"
     "&bull; Magnet-tipped probe — for metallic/magnetic FB<br/>"
     "&bull; Avoid irrigation if FB is organic/hygroscopic (rice, beans, sponge) — it will swell"),
    ("STEP 4 — If unsuccessful",
     "Consider procedural sedation (ketamine ~20% of ED cases). Push FB into pharynx under GA and retrieve orally, "
     "or fragment and remove piecemeal. Refer to ENT if: deeply impacted, posteriorly displaced, repeated failed attempts, "
     "or child cannot be safely immobilised."),
    ("STEP 5 — Button battery",
     "Remove immediately (ideally within the hour). No nasal drops before removal. Irrigate area with saline after removal "
     "to dilute residual alkali. Arrange ENT follow-up for delayed septal perforation."),
    ("STEP 6 — Live insect",
     "Kill first with 2% lidocaine or mineral oil, THEN remove with forceps/suction."),
]

step_flow = []
for i, (t, d) in enumerate(steps):
    step_flow.append(P(f"<b>{t}</b>", h3))
    step_flow.append(P(d, body))
elements.append(KeepTogether(step_flow[:4]))
elements.extend(step_flow[4:])
elements.append(Spacer(1, 6))

# ---------- Complications ----------
elements.append(P("COMPLICATIONS", h2))
comp_data = [
    [P("Of the retained FB", cell_head), P("Of removal attempts", cell_head)],
    [P("Chronic sinusitis; rhinolith formation; septal perforation; "
       "pressure/liquefactive necrosis (battery); inferior turbinate hypoplasia; "
       "rare aspiration if displaced posteriorly", cell_style),
     P("Failed removal (most common); epistaxis; mucosal laceration; "
       "fragmentation of friable object; rare septal perforation", cell_style)],
]
comp_table = Table(comp_data, colWidths=[235, 235])
comp_table.setStyle(TableStyle([
    ("BACKGROUND", (0, 0), (-1, 0), TEAL),
    ("GRID", (0, 0), (-1, -1), 0.5, colors.grey),
    ("VALIGN", (0, 0), (-1, -1), "TOP"),
    ("TOPPADDING", (0, 0), (-1, -1), 5),
    ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
]))
elements.append(comp_table)
elements.append(Spacer(1, 8))

# ---------- Differential diagnosis ----------
elements.append(P("DIFFERENTIAL DIAGNOSIS (unilateral nasal symptoms in a child)", h2))
elements.append(bullets([
    "Choanal atresia/stenosis (presents earlier, in infancy)",
    "Unilateral choanal / antrochoanal polyp",
    "Rhinolith (long-standing, calcified FB)",
    "Dental disease / odontogenic sinusitis",
    "Juvenile nasopharyngeal angiofibroma (adolescent males — epistaxis)",
    "Nasal tumour (if symptoms persist despite treatment)",
], style=body))
elements.append(Spacer(1, 4))

# ---------- Key red flags summary ----------
elements.append(P("KEY RED FLAGS — REFER / ACT URGENTLY", h2))
elements.append(bullets([
    "Button battery — remove within the hour, no nasal drops first",
    "Magnet pairs across septum — urgent removal (pressure necrosis)",
    "Failed 2+ attempts, deep or posterior FB — refer ENT",
    "Signs of complication: heavy bleeding, suspected perforation, orbital/facial swelling",
    "Persistent unilateral symptoms after FB removed / no FB found — investigate for tumour",
], style=body))

elements.append(Spacer(1, 10))
elements.append(HRFlowable(width="100%", thickness=0.8, color=colors.grey))
elements.append(Spacer(1, 4))
elements.append(P(
    "Sources: Scott-Brown's Otorhinolaryngology Head &amp; Neck Surgery Vol 2 (Ch.34); "
    "Tintinalli's Emergency Medicine (Ch.123, Ch.244); Textbook of Family Medicine 9e (Ch.18); "
    "K J Lee's Essential Otolaryngology; ROSEN's Emergency Medicine. "
    "Evidence check: Jungbauer WN et al., Int J Pediatr Otorhinolaryngol 2022 (PMID 35561441), systematic review/meta-analysis "
    "on pediatric nasal FB removal by care setting — consistent with stepwise approach above. "
    "For clinical education / exam preparation use only — not a substitute for institutional protocols.",
    footer_style))

def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(colors.grey)
    canvas.drawCentredString(A4[0] / 2.0, 12 * mm, f"Page {doc.page}")
    canvas.restoreState()

doc = SimpleDocTemplate(
    OUT, pagesize=A4,
    topMargin=16 * mm, bottomMargin=16 * mm,
    leftMargin=16 * mm, rightMargin=16 * mm,
    title="Nasal Foreign Body - Quick Reference Guide"
)
doc.build(elements, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF created at:", OUT)
Running Command

cd /tmp/workspace/nasal-fb-guide && python3 build_pdf.py

Running Command

ls -la /tmp/workspace/nasal-fb-guide/output/ && python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/nasal-fb-guide/output/Nasal_Foreign_Body_Quick_Reference.pdf') as pdf: print('Pages:', len(pdf.pages)) "

A 2-page PDF quick reference guide has been generated, covering overview, FB types, clinical features, diagnosis, the full stepwise management algorithm, complications, differential diagnosis, and red-flag alerts (button battery emergency highlighted).

Nasal Foreign Body Quick Reference

PDF Document · PDF

This is a shared conversation. Sign in to Orris to start your own chat.