Dacryocystitis surgery stepswise
dacryocystorhinostomy DCR surgery steps

Two-panel clinical photograph and illustration detailing steps of an endonasal dacryocystorhinostomy (DCR). The top panel is a clinical photograph showing an intraoperative view of the nasal cavity during a surgical procedure. A straight Blakesley forceps is seen with its jaws firmly grasping a mucosal flap on the lateral nasal wall, anterior to the middle turbinate. The operative field is illuminated by a transillumination light probe, highlighting the reddish-pink, vascularized soft tissue and the metallic surgical instrument. The bottom panel provides a schematic representation or endoscopically-guided visualization framed within a dark circular border. This image shows the surgical target area on the nasal mucosa, marked with distinct dark red dotted lines and linear patterns. These markings serve as anatomical guides for the intended mucosal incision or bone removal sites, such as the lacrimal fossa. The background shows characteristic mucosal folds and reflective surfaces typical of the intranasal environment. This visual content illustrates the precise tissue manipulation and preoperative mapping required for successful lacrimal sac exposure in ophthalmic surgery.

This composite educational image illustrates the key surgical steps of an endonasal dacryocystorhinostomy (DCR). Panel A is a clinical photograph showing transillumination of the lateral nasal wall, achieved by a light probe inserted through the canaliculus into the lacrimal sac. Panel B is a corresponding anatomical diagram labeling the spatial relationship between the 'Light Probe' (entering via the upper canaliculus) and the 'Keratome' used to incise the medial wall of the lacrimal sac. Panels C and D provide intraoperative endoscopic views using a nasal speculum. Panel C depicts the incision of the nasal mucosa and exposure of the lacrimal fossa, while Panel D shows the subsequent lacrimal sac flap removal and excision using forceps. The series demonstrates the use of transillumination as a guide for precise osteotomy and sac incision in ophthalmologic and ENT surgery for treating nasolacrimal duct obstruction.

This clinical photograph consists of two panels illustrating steps in an endonasal dacryocystorhinostomy (DCR) procedure. The top panel shows an intraoperative view of the eye where a 20-gauge vitrectomy light probe is being inserted into the superior punctum and upper canaliculus. The probe, a slender metallic instrument with a rounded tip, is directed towards the medial canthal region to reach the lacrimal sac. The lower panel shows a close-up of the periocular region, highlighting the lower eyelid margin and eyelashes. The skin exhibits mild erythema and localized irritation near the medial canthus, consistent with the surgical site or preoperative inflammatory changes. Small, punctate marks are visible on the skin of the lower lid, potentially related to surgical marking or minor trauma. This visual material serves as an educational guide for ophthalmology and otolaryngology students to understand the positioning of transillumination tools used to localize the lacrimal sac during lacrimal bypass surgery.

This composite figure illustrates the surgical steps and outcomes of a modified endoscopic dacryocystorhinostomy (DCR) for treating nasolacrimal duct obstruction. Panel A shows the initial surgical field within the nasal cavity after application of vasoconstrictors. Panel B displays the creation of a 'C'-shaped mucosal and lacrimal sac incision near the lateral bone window, highlighted with an orange curve. Panel C depicts the intraoperative application of a white, porous gelatin sponge at the anastomosis site of the lacrimal sac and nasal mucosa, used as an alternative to suturing. Panel D shows the placement of a conical expansion sponge into the newly created ostium using surgical forceps. Panel E is a coronal dacryocystorhinography (DCRG) image showing a contrast-filled right lacrimal system, confirming patency and appropriate drainage into the nasal cavity. Panel F provides an ex vivo view of the conical expansion sponge next to a surgical ruler for scale, illustrating its tapered shape and attached retrieval string. This educational material is designed for ophthalmology and otolaryngology training, focusing on minimally invasive techniques for lacrimal bypass surgery.

| Nasal drops | Decongestant or saline irrigation to maintain patency |
| Topical antibiotics | Antibiotic-steroid eye drops for 2-4 weeks |
| Stent removal | At 4-6 weeks (or later if canaliculus involved) |
| Follow-up syringing | To confirm patency at stent removal |
| Avoid nose-blowing | For 2 weeks post-operatively |
| Feature | External DCR | Endoscopic DCR |
|---|---|---|
| Scar | Yes (facial scar) | No external scar |
| Lacrimal pump | May be disrupted (MCT detachment) | Preserved |
| Success rate | ~90-95% | ~85-95% (comparable) |
| Revision cases | Possible | Preferred approach |
| Visualisation of sac | Excellent | Excellent with drills |
Convert it into poster form pls with all the steps properly explained
ls -la /tmp/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /tmp/workspace/dcr-poster
~/dcr-poster/create_poster.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.util import Inches, Pt
import copy
# ── Colour palette ─────────────────────────────────────────────────────────────
NAVY = RGBColor(0x0D, 0x2B, 0x55) # header / title background
TEAL = RGBColor(0x00, 0x7B, 0x8A) # section banners
TEAL_LIGHT = RGBColor(0xE0, 0xF4, 0xF6) # step-card background
GOLD = RGBColor(0xF5, 0xA6, 0x23) # step number circle
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TEXT = RGBColor(0x1A, 0x1A, 0x2E)
GREY_LINE = RGBColor(0xCC, 0xCC, 0xCC)
RED = RGBColor(0xC0, 0x39, 0x2B)
GREEN = RGBColor(0x1A, 0x7A, 0x4A)
ORANGE = RGBColor(0xE6, 0x74, 0x1B)
# ── Slide size: A0-ish portrait poster (33.1" × 46.8") ──────────────────────
# Using 24" × 36" — common academic poster, fits well on screen
W_IN = 24
H_IN = 36
prs = Presentation()
prs.slide_width = Inches(W_IN)
prs.slide_height = Inches(H_IN)
slide_layout = prs.slide_layouts[6] # blank
slide = prs.slides.add_slide(slide_layout)
def add_rect(slide, left, top, width, height, fill_color=None, line_color=None, line_width=Pt(0)):
shape = slide.shapes.add_shape(
1, # MSO_SHAPE_TYPE.RECTANGLE
Inches(left), Inches(top), Inches(width), Inches(height)
)
fill = shape.fill
if fill_color:
fill.solid()
fill.fore_color.rgb = fill_color
else:
fill.background()
line = shape.line
if line_color:
line.color.rgb = line_color
line.width = line_width
else:
line.fill.background()
return shape
def add_text_box(slide, left, top, width, height, text, font_size=Pt(14),
bold=False, color=DARK_TEXT, align=PP_ALIGN.LEFT,
wrap=True, italic=False):
txBox = slide.shapes.add_textbox(
Inches(left), Inches(top), Inches(width), Inches(height)
)
tf = txBox.text_frame
tf.word_wrap = wrap
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = font_size
run.font.bold = bold
run.font.color.rgb = color
run.font.italic = italic
return txBox
def add_text_box_multiline(slide, left, top, width, height, lines,
font_size=Pt(13), color=DARK_TEXT,
align=PP_ALIGN.LEFT, bold_first=False,
line_spacing=1.15):
from pptx.util import Pt as pt_util
from pptx.oxml.ns import qn
from lxml import etree
txBox = slide.shapes.add_textbox(
Inches(left), Inches(top), Inches(width), Inches(height)
)
tf = txBox.text_frame
tf.word_wrap = True
for i, line in enumerate(lines):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.alignment = align
# line spacing
from pptx.oxml.ns import qn
pPr = p._p.get_or_add_pPr()
lnSpc = etree.SubElement(pPr, qn('a:lnSpc'))
spcPct = etree.SubElement(lnSpc, qn('a:spcPct'))
spcPct.set('val', str(int(line_spacing * 100000)))
run = p.add_run()
run.text = line
run.font.size = font_size
run.font.color.rgb = color
if bold_first and i == 0:
run.font.bold = True
return txBox
# ═══════════════════════════════════════════════════════════════════════════════
# 1. HEADER BANNER
# ═══════════════════════════════════════════════════════════════════════════════
add_rect(slide, 0, 0, W_IN, 2.8, fill_color=NAVY)
add_text_box(slide, 0.3, 0.18, W_IN - 0.6, 1.1,
"DACRYOCYSTORHINOSTOMY (DCR)",
font_size=Pt(54), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text_box(slide, 0.3, 1.22, W_IN - 0.6, 0.7,
"Surgical Treatment of Dacryocystitis — Step-by-Step Guide",
font_size=Pt(26), bold=False, color=RGBColor(0xAD, 0xD8, 0xE6),
align=PP_ALIGN.CENTER)
add_text_box(slide, 0.3, 1.88, W_IN - 0.6, 0.55,
"External DCR | Endoscopic (Endonasal) DCR | Post-op Care | Complications",
font_size=Pt(18), bold=False, color=GOLD, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════════
# 2. INDICATIONS BAND
# ═══════════════════════════════════════════════════════════════════════════════
add_rect(slide, 0, 2.85, W_IN, 0.55, fill_color=TEAL)
add_text_box(slide, 0.3, 2.88, W_IN - 0.6, 0.48,
"INDICATIONS: Chronic dacryocystitis (NLD obstruction) • Acute dacryocystitis (after infection control) • "
"Mucocoele • Lacrimal sac fistula • Failed probing/syringing",
font_size=Pt(17), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════════
# HELPER: draw a numbered step card
# ═══════════════════════════════════════════════════════════════════════════════
def step_card(slide, col_x, row_y, w, h, step_num, title, bullets,
num_color=GOLD, title_color=TEAL, card_color=TEAL_LIGHT):
# card background
shape = add_rect(slide, col_x, row_y, w, h,
fill_color=card_color,
line_color=TEAL, line_width=Pt(1.5))
# round badge bg
badge_size = 0.52
badge = add_rect(slide, col_x + 0.12, row_y + 0.10,
badge_size, badge_size, fill_color=num_color)
# step number
add_text_box(slide, col_x + 0.12, row_y + 0.10,
badge_size, badge_size,
str(step_num), font_size=Pt(22), bold=True,
color=WHITE, align=PP_ALIGN.CENTER)
# title
add_text_box(slide, col_x + 0.72, row_y + 0.11,
w - 0.82, 0.52,
title, font_size=Pt(17), bold=True,
color=title_color, align=PP_ALIGN.LEFT)
# bullets
bullet_lines = ["• " + b for b in bullets]
add_text_box_multiline(slide, col_x + 0.18, row_y + 0.68,
w - 0.30, h - 0.80,
bullet_lines,
font_size=Pt(13.5), color=DARK_TEXT,
line_spacing=1.18)
# ═══════════════════════════════════════════════════════════════════════════════
# 3. EXTERNAL DCR SECTION
# ═══════════════════════════════════════════════════════════════════════════════
add_rect(slide, 0, 3.48, W_IN, 0.52, fill_color=RED)
add_text_box(slide, 0.3, 3.50, W_IN - 0.6, 0.46,
"PART 1 — EXTERNAL DCR (Classic Open Approach)",
font_size=Pt(22), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# 3-column layout for external steps
COL_W = 7.6
COL_GAP = 0.3
COL1_X = 0.25
COL2_X = COL1_X + COL_W + COL_GAP
COL3_X = COL2_X + COL_W + COL_GAP
EXT_TOP = 4.08
external_steps = [
("Anaesthesia & Positioning",
["GA or LA with sedation",
"Patient supine, head elevated ~20°",
"Nasal packs with epinephrine pledgets",
"Inject 1% lidocaine + 1:100,000 adrenaline at incision site",
"Reduce cardiac output for haemostasis"]),
("Skin Incision",
["Curvilinear incision 10-12 mm medial to medial canthus",
"Start just below the medial canthal tendon, extend ~12-15 mm inferiorly",
"Lynch (curved) incision along side of nose",
"Deepen through skin → subcutaneous tissue → orbicularis oculi"]),
("Exposure of Lacrimal Fossa",
["Identify and retract/ligate the angular vessels",
"Identify medial canthal tendon — partially detach if needed",
"Incise periosteum anterior to the anterior lacrimal crest",
"Elevate periosteum with a periosteal elevator",
"Expose the lacrimal fossa and lacrimal sac"]),
("Osteotomy — Bone Window",
["Perforate the thin lacrimal bone with bone punch or drill",
"Enlarge with Hajek-Koeffler rongeur",
"Window size: minimum 15 × 10 mm",
"Extend from lacrimal crest anteriorly → ethmoid cells posteriorly",
"Nasal mucosa now visible through bony window"]),
("Lacrimal Sac Cannulation",
["Dilate superior and inferior puncta with lacrimal dilator",
"Pass Bowman probe (00) through inferior canaliculus",
"Direct horizontally → then superiorly into the lacrimal sac",
"Probe tents the sac wall to guide safe incision"]),
("Sac & Nasal Mucosal Flaps",
["Incise lacrimal sac with No. 11 or 15 blade (H-shaped/cruciate)",
"Create anterior and posterior lacrimal sac flaps",
"Make corresponding H-shaped incision in nasal mucosa",
"Create and reflect anterior and posterior nasal mucosal flaps"]),
("Flap Anastomosis",
["Posterior flaps (sac + nasal mucosa) sutured first",
"Use 5-0 Vicryl absorbable sutures",
"Then approximate anterior flaps similarly",
"Creates wide mucosal-lined anastomosis between sac and nasal cavity"]),
("Silicone Intubation (if needed)",
["Bicanalicular silicone stents (O'Donoghue tubes)",
"Passed through both puncta → down through new ostium",
"Retrieved from the nose and secured with clip or knot",
"Leave 4-6 weeks (up to 6-9 months for canalicular stenosis)",
"Indicated: tight common canaliculus, revision DCR, functional obstruction"]),
("Wound Closure",
["Close periosteum with absorbable suture",
"Close skin in layers: interrupted or subcuticular sutures",
"Use 6-0 nylon or Prolene",
"Nasal pack placed for 24-48 hours post-op"]),
]
# Row heights for external steps — 3 cols × 3 rows = 9 steps
EXT_ROW_H = 2.10
for i, (title, bullets) in enumerate(external_steps):
col = i % 3
row = i // 3
x = [COL1_X, COL2_X, COL3_X][col]
y = EXT_TOP + row * (EXT_ROW_H + 0.18)
step_card(slide, x, y, COL_W, EXT_ROW_H, i + 1, title, bullets,
num_color=RED, title_color=RED)
# ═══════════════════════════════════════════════════════════════════════════════
# 4. ENDOSCOPIC DCR SECTION
# ═══════════════════════════════════════════════════════════════════════════════
ENDO_START_Y = EXT_TOP + 3 * (EXT_ROW_H + 0.18) + 0.05
add_rect(slide, 0, ENDO_START_Y, W_IN, 0.52, fill_color=TEAL)
add_text_box(slide, 0.3, ENDO_START_Y + 0.02, W_IN - 0.6, 0.46,
"PART 2 — ENDOSCOPIC (ENDONASAL) DCR",
font_size=Pt(22), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
ENDO_TOP = ENDO_START_Y + 0.60
endo_steps = [
("OR Setup & Haemostasis",
["Head extended, side-to-side mobility, monitor opposite surgeon",
"30° endoscope aimed superolaterally",
"Head elevated 30°, reduce cardiac output",
"Inject 1% lidocaine + 1:100,000 epinephrine lateral nasal wall",
"Topical 1:1000 epinephrine neuropatties periodically",
"High endoscopic septoplasty in ~50% of cases"]),
("Nasal Mucosal Flap Elevation",
["Posteriorly pedicled mucoperiosteal flap created",
"No. 15 blade for incisions; sharp-suction Freer elevator for elevation",
"Flap: superior margin 5 mm posterior to MT insertion, 10 mm above axilla",
"Inferior limit 10 mm anterior to uncinate, at superior edge of IT",
"Flap aggressively mobilised off axilla of middle turbinate",
"Rolled back over middle turbinate for exposure"]),
("Bone Removal — Saucerization",
["Forward-biting rongeur (4-mm Hajek-Koeffler or Kerrison punch)",
"Initial purchase by disarticulating lacrimal bone along maxillo-lacrimal suture",
"Remove frontal process of maxilla covering anterior lacrimal sac",
"Agger nasi usually opened during bone removal",
"DCR drill bit used to 'saucerize' remaining bone",
"End point: hemisphere of lacrimal sac sits 'proud' on saucerized bone",
"Round knife flakes off lacrimal bone from posterior sac"]),
("Cannulation of Lacrimal System",
["Dilate both superior and inferior puncta",
"Pass Bowman 00 probe through inferior canaliculus",
"Direct horizontally + slightly posteriorly → then superiorly",
"Probe tents medial sac wall confirming location against bony window",
"Verify adequacy of bone removal via ball probe"]),
("Marsupialization of Lacrimal Sac",
["Spear knife opens sac vertically from top to bottom",
"Ball probe checks bone removal adequacy through sac wall",
"Bellucci scissors release posterior flap at superior and inferior margins",
"Lacrimal mini-sickle knife releases the anterior flap",
"With adequate saucerization: both flaps fall open and stay open"]),
("Flap Trimming & Reinsertion",
["Nasal mucosal flap trimmed to accommodate opened lacrimal sac",
"Square segment removed from anterior flap (sharp Blakesley forceps)",
"Segment size commensurate with the opened sac",
"Ball probe used to manipulate all flaps into final position",
"Mucosal flaps apposed to lacrimal sac flaps — no sutures usually needed"]),
("Lacrimal Intubation (Conditional)",
["Decision based on tightness of common canaliculus on probing",
"Tight grip by common canaliculus → stents indicated",
"O'Donoghue silicone probes passed bicanalicularly",
"Tubes secured tension-free: GelFoam + silicone segment + 2 Liga clips",
"Leave 4-6 weeks minimum; 6-9 months for common canaliculus stenosis",
"Tension-free securing prevents cheese-wiring through puncta"]),
]
ENDO_ROW_H = 2.30
for i, (title, bullets) in enumerate(endo_steps):
col = i % 3
row = i // 3
x = [COL1_X, COL2_X, COL3_X][col]
y = ENDO_TOP + row * (ENDO_ROW_H + 0.18)
step_card(slide, x, y, COL_W, ENDO_ROW_H, i + 1, title, bullets,
num_color=TEAL, title_color=TEAL)
# ═══════════════════════════════════════════════════════════════════════════════
# 5. POST-OP & COMPLICATIONS SECTION (side by side)
# ═══════════════════════════════════════════════════════════════════════════════
POSTOP_Y = ENDO_TOP + 3 * (ENDO_ROW_H + 0.18) + 0.05
# Left: post-op
add_rect(slide, 0, POSTOP_Y, 11.8, 0.50, fill_color=GREEN)
add_text_box(slide, 0.3, POSTOP_Y + 0.03, 11.2, 0.44,
"POST-OPERATIVE CARE",
font_size=Pt(20), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
postop_items = [
("Nasal irrigation", "Saline or decongestant drops to maintain patency"),
("Topical antibiotics", "Antibiotic-steroid eye drops for 2-4 weeks"),
("Stent removal", "At 4-6 weeks (or up to 9 months if canaliculus involved)"),
("Syringing", "Confirm patency at stent removal"),
("Nose-blowing", "Avoid for 2 weeks post-operatively"),
("Follow-up", "Review at 1 week, 4-6 weeks, 3 months"),
]
for i, (k, v) in enumerate(postop_items):
row_y = POSTOP_Y + 0.58 + i * 0.48
add_rect(slide, 0.25, row_y, 11.3, 0.42,
fill_color=RGBColor(0xE8, 0xF8, 0xF0),
line_color=GREEN, line_width=Pt(1.0))
add_text_box(slide, 0.38, row_y + 0.04, 3.5, 0.36,
k, font_size=Pt(14), bold=True, color=GREEN)
add_text_box(slide, 3.90, row_y + 0.04, 7.5, 0.36,
v, font_size=Pt(13.5), color=DARK_TEXT)
# Right: complications
add_rect(slide, 12.1, POSTOP_Y, 11.65, 0.50, fill_color=ORANGE)
add_text_box(slide, 12.2, POSTOP_Y + 0.03, 11.4, 0.44,
"COMPLICATIONS",
font_size=Pt(20), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
complications = [
("Bleeding", "Angular vessel (external) / ethmoid vessels (endoscopic)"),
("Failed ostium", "Inadequate bone removal → scar / granulation tissue"),
("Persistent epiphora", "Most common cause of failure post-DCR"),
("Canalicular injury", "During probing or cannulation"),
("Cheese-wiring", "Stent under tension cutting through lacrimal puncta"),
("Orbital fat prolapse", "Periorbita breached — external approach"),
("Sac-skin fistula", "After I&D of acute abscess without definitive DCR"),
]
for i, (k, v) in enumerate(complications):
row_y = POSTOP_Y + 0.58 + i * 0.48
add_rect(slide, 12.2, row_y, 11.35, 0.42,
fill_color=RGBColor(0xFD, 0xF2, 0xE8),
line_color=ORANGE, line_width=Pt(1.0))
add_text_box(slide, 12.32, row_y + 0.04, 3.5, 0.36,
k, font_size=Pt(14), bold=True, color=ORANGE)
add_text_box(slide, 15.85, row_y + 0.04, 7.5, 0.36,
v, font_size=Pt(13.5), color=DARK_TEXT)
# ═══════════════════════════════════════════════════════════════════════════════
# 6. COMPARISON TABLE
# ═══════════════════════════════════════════════════════════════════════════════
CMP_Y = POSTOP_Y + 0.58 + 7 * 0.48 + 0.15
add_rect(slide, 0, CMP_Y, W_IN, 0.50, fill_color=NAVY)
add_text_box(slide, 0.3, CMP_Y + 0.03, W_IN - 0.6, 0.44,
"EXTERNAL vs ENDOSCOPIC DCR — Comparison",
font_size=Pt(20), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
headers = ["Feature", "External DCR", "Endoscopic DCR"]
col_data = [
("Facial Scar", "Yes", "No"),
("Lacrimal Pump", "May be disrupted","Preserved"),
("Success Rate", "~90-95%", "~85-95%"),
("Revision Cases", "Possible", "Preferred"),
("Bone Visualisation", "Direct", "Endoscopic (drill)"),
("Stent Placement", "Common", "Selective"),
]
TABLE_TOP = CMP_Y + 0.55
CELL_H = 0.40
CELL_WIDTHS = [5.5, 9.25, 9.25]
TABLE_LEFT = 0.0
# header row
hdr_colors = [NAVY, RED, TEAL]
for ci, (hdr, clr) in enumerate(zip(headers, hdr_colors)):
x = TABLE_LEFT + sum(CELL_WIDTHS[:ci])
add_rect(slide, x, TABLE_TOP, CELL_WIDTHS[ci], CELL_H + 0.05, fill_color=clr)
add_text_box(slide, x + 0.15, TABLE_TOP + 0.06, CELL_WIDTHS[ci] - 0.2, CELL_H,
hdr, font_size=Pt(16), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for ri, row in enumerate(col_data):
bg = RGBColor(0xF0, 0xF4, 0xFF) if ri % 2 == 0 else WHITE
for ci, cell_text in enumerate(row):
x = TABLE_LEFT + sum(CELL_WIDTHS[:ci])
y = TABLE_TOP + CELL_H + 0.05 + ri * (CELL_H + 0.04)
add_rect(slide, x, y, CELL_WIDTHS[ci], CELL_H,
fill_color=bg, line_color=GREY_LINE, line_width=Pt(0.75))
align = PP_ALIGN.LEFT if ci == 0 else PP_ALIGN.CENTER
bold = (ci == 0)
add_text_box(slide, x + 0.18, y + 0.06, CELL_WIDTHS[ci] - 0.25, CELL_H,
cell_text, font_size=Pt(14), bold=bold,
color=DARK_TEXT, align=align)
# ═══════════════════════════════════════════════════════════════════════════════
# 7. FOOTER
# ═══════════════════════════════════════════════════════════════════════════════
FOOTER_Y = H_IN - 0.55
add_rect(slide, 0, FOOTER_Y, W_IN, 0.55, fill_color=NAVY)
add_text_box(slide, 0.3, FOOTER_Y + 0.08, W_IN - 0.6, 0.42,
"Sources: Cummings Otolaryngology Head & Neck Surgery (Ch.49) • Kanski's Clinical Ophthalmology 10th Ed • Scott-Brown's Otorhinolaryngology HNS Vol 2",
font_size=Pt(13), bold=False, color=RGBColor(0xAD, 0xD8, 0xE6),
align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════════
# SAVE
# ═══════════════════════════════════════════════════════════════════════════════
out_path = "/tmp/workspace/dcr-poster/DCR_Surgery_Poster.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
cd /tmp/workspace/dcr-poster && python create_poster.py 2>&1
ls -lh /tmp/workspace/dcr-poster/
DCR Surgery Poster
Presentation · PPTX
| Section | Content |
|---|---|
| Header | Title, subtitle, section overview in navy/gold |
| Indications band | All indications for DCR in a teal banner |
| Part 1 - External DCR | 9 colour-coded step cards (red theme) with numbered badges covering: anaesthesia, incision, fossa exposure, osteotomy, cannulation, flap creation, anastomosis, intubation, closure |
| Part 2 - Endoscopic DCR | 7 colour-coded step cards (teal theme): OR setup, mucosal flap, saucerization, cannulation, marsupialization, flap trimming, intubation |
| Post-op Care | 6 rows covering nasal drops, antibiotics, stent removal, syringing, precautions |
| Complications | 7 rows covering bleeding, failed ostium, epiphora, canalicular injury, cheese-wiring, orbital fat prolapse, fistula |
| Comparison Table | External vs Endoscopic - scar, pump, success rate, revision suitability |
| Footer | Source citations |
What are the nutritional eye disorders
Bitot spots xerophthalmia vitamin A deficiency eye

This composite figure illustrates the clinical and diagnostic progression of severe xerophthalmia and keratomalacia secondary to vitamin A deficiency in a 70-year-old male. Panels A, E, and G show clinical photographs highlighting characteristic Bitot's spots (foamy keratinized conjunctival plaques), corneal stromal infiltrates, and advanced keratomalacia with focal bulging (staphyloma formation). Panels B, D, F, H, and J utilize Anterior Segment Optical Coherence Tomography (AS-OCT) to quantify pathology, revealing conjunctival thickening (up to 737 μm), corneal stromal edema (1039 μm), and focal thinning (401 μm). Post-treatment panels (C, D, I, J) demonstrate clinical resolution after vitamin A supplementation and tectonic lamellar keratoplasty, with AS-OCT confirming successful graft adaptation. Histopathological sections (K, L) using HE and PAS stains contrast the diseased cornea against a normal control (M), showing massive epithelial hyperplasia (approximately 20 cell layers), focal keratinization, loss of Bowman's layer, and granular PAS-positive deposits, pathognomonic for squamous metaplasia in the setting of nutritional deficiency.

This composite image presents clinical photographs and Anterior Segment Optical Coherence Tomography (AS-OCT) findings in a case of severe keratomalacia associated with Vitamin A deficiency. Panels A-D focus on the right eye (OD). Panel A shows advanced corneal melting (keratomalacia) characterized by a bulging, whitish corneal surface completely overgrown by vascularized conjunctival tissue (conjunctivalization). Panel C highlights keratinization on the corneal surface, resembling Bitot's spots (arrow). Panels B and D provide AS-OCT cross-sections showing massive corneal thickening (940 μm), epithelial thickening (196 μm), and complete iris-to-cornea attachment (athalamia/anterior synechiae, arrow). Panels E and F focus on the left eye (OS). Panel E demonstrates bulbar conjunctival hyperemia and a hazy peripheral lesion at the 7-8 o'clock position (arrow). Panel F (AS-OCT) confirms slight peripheral corneal thinning to 556 μm in that same region (arrow). This series illustrates the range of ophthalmic manifestations of systemic malnutrition, from early peripheral thinning to end-stage keratectasia and corneal scarring.

This clinical photograph shows a close-up view of the left eye (LE) demonstrating severe keratomalacia, a condition characterized by corneal melting often secondary to severe vitamin A deficiency. The cornea is completely opaque with a dense, whitish, necrotic appearance (leukomalacia) that obscures any view of the underlying iris or pupil. A visible perforation is present, indicating a full-thickness defect in the corneal stroma. The surrounding bulbar and palpebral conjunctiva exhibit significant hyperemia (redness) and inflammation. The eyelids are being held open by surgical retractors to facilitate examination. This visual serves as a critical educational example of advanced xerophthalmia, emphasizing the end-stage ocular manifestations of nutritional deficiency and the potential for irreversible ocular surface destruction.
| Grade | Manifestation |
|---|---|
| XN | Night blindness (nyctalopia) - earliest sign |
| X1A | Conjunctival xerosis |
| X1B | Bitot spots |
| X2 | Corneal xerosis |
| X3A | Corneal ulceration / keratomalacia < 1/3 cornea |
| X3B | Corneal ulceration / keratomalacia ≥ 1/3 cornea |
| XS | Corneal scar |
| XF | Xerophthalmic fundus |

| Nutrient | Deficiency | Key Ocular Feature |
|---|---|---|
| Vitamin A | Xerophthalmia | Night blindness → Bitot spots → Keratomalacia |
| Vitamin B1 (Thiamine) | Beriberi / Wernicke | Ophthalmoplegia, nystagmus |
| Vitamin B2 (Riboflavin) | Ariboflavinosis | Corneal vascularisation, photophobia |
| Vitamin B3 (Niacin) | Pellagra | Photophobia, corneal vascularisation, optic neuritis |
| Vitamin B12 | Pernicious anaemia / dietary | Optic neuropathy, centrocaecal scotoma |
| Folate | Nutritional deficiency | Optic neuropathy (with B12) |
| Vitamin C | Scurvy | Subconjunctival/orbital haemorrhages |
| Vitamin D | Rickets / malabsorption | Hypocalcaemic cataract |
| Vitamin E | Fat malabsorption | Pigmentary retinopathy, ophthalmoplegia |
| Zinc | IBD, alcoholism | Abnormal dark adaptation |