I am an ophthalmology resident PG in 2nd year I have my test on glaucoma scheduled on 24th June 2026
| Section | Topic |
|---|---|
| 1-2 | Definition, Classification (full diagram) |
| 3 | Aqueous dynamics, IOP physiology, normal ranges |
| 4 | POAG - risk factors, disc signs, ISNT rule, VF progression, key trials |
| 5 | NTG - vascular pathogenesis, neuroimaging indications, management |
| 6 | PACG spectrum - mechanisms, AACG emergency protocol step-by-step |
| 7 | Secondary glaucomas (PXG, Pigmentary, NVG, Steroid, Phacolytic, Malignant, Angle recession) |
| 8 | Investigations - tonometry types, gonioscopy (Shaffer grading), perimetry, OCT, CCT |
| 9 | All drug classes with mechanism, potency, side effects, contraindications |
| 10 | Laser procedures (LPI, SLT, ALT, cyclodiode) |
| 11 | Surgery - trabeculectomy steps, MMC/5-FU, GDD, MIGS, goniotomy |
| 12 | Special glaucomas (Congenital, Sturge-Weber, Plateau iris) |
| 13-14 | Neuroprotection + All key trials (OHTS, EMGT, AGIS, EAGLE, LiGHT, CNTGS) |
| 15-16 | Mnemonics + 20 high-yield exam summary points |
Make a PDF of this study guide for offline access
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist"
mkdir -p /home/daytona/workspace/glaucoma-study-guide && python3 -c "import reportlab; print('reportlab ok')" && python3 -c "from reportlab.lib import colors; print('colors ok')"
~/glaucoma-study-guide/build_pdf.py
#!/usr/bin/env python3
"""Glaucoma Study Guide PDF Generator"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.tableofcontents import TableOfContents
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import datetime
OUTPUT = "/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1a3a5c")
TEAL = colors.HexColor("#1a7a7a")
GOLD = colors.HexColor("#d4820a")
LIGHT_BG = colors.HexColor("#eef4fb")
WARN_BG = colors.HexColor("#fff8e1")
WARN_BDR = colors.HexColor("#f0a500")
TABLE_HDR = colors.HexColor("#1a3a5c")
TABLE_ALT = colors.HexColor("#dce8f5")
RED_ALERT = colors.HexColor("#c0392b")
GREEN_OK = colors.HexColor("#1e8449")
LIGHT_GREY= colors.HexColor("#f5f5f5")
MED_GREY = colors.HexColor("#7f8c8d")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent='Normal', **kwargs):
s = ParagraphStyle(name, parent=styles[parent], **kwargs)
return s
# Title
S_TITLE = make_style('MyTitle', 'Title',
fontSize=26, textColor=NAVY, spaceAfter=4,
fontName='Helvetica-Bold', alignment=TA_CENTER)
S_SUBTITLE = make_style('MySubtitle', 'Normal',
fontSize=12, textColor=TEAL, spaceAfter=2, alignment=TA_CENTER)
S_META = make_style('MyMeta', 'Normal',
fontSize=9, textColor=MED_GREY, spaceAfter=14, alignment=TA_CENTER)
# Section heading (numbered)
S_H1 = make_style('MyH1', 'Heading1',
fontSize=14, textColor=colors.white, spaceAfter=6, spaceBefore=14,
fontName='Helvetica-Bold', backColor=NAVY,
leftIndent=-6, rightIndent=-6, borderPadding=(4,6,4,8))
# Sub-heading
S_H2 = make_style('MyH2', 'Heading2',
fontSize=11, textColor=NAVY, spaceAfter=4, spaceBefore=8,
fontName='Helvetica-Bold', borderPadding=(2,0,2,0))
# Sub-sub-heading
S_H3 = make_style('MyH3', 'Heading3',
fontSize=10, textColor=TEAL, spaceAfter=3, spaceBefore=5,
fontName='Helvetica-Bold')
# Body text
S_BODY = make_style('MyBody', 'Normal',
fontSize=9, leading=13, spaceAfter=4, alignment=TA_JUSTIFY,
fontName='Helvetica')
# Bullet
S_BULLET = make_style('MyBullet', 'Normal',
fontSize=9, leading=12, leftIndent=14, firstLineIndent=-10,
spaceAfter=2, fontName='Helvetica')
S_BULLET2 = make_style('MyBullet2', 'Normal',
fontSize=8.5, leading=11, leftIndent=26, firstLineIndent=-10,
spaceAfter=2, fontName='Helvetica', textColor=colors.HexColor("#2c3e50"))
# Highlight / tip box
S_TIP = make_style('MyTip', 'Normal',
fontSize=9, leading=12, backColor=WARN_BG,
leftIndent=8, rightIndent=8, borderPadding=(5,5,5,5),
fontName='Helvetica', spaceAfter=6)
# Code / monospace
S_CODE = make_style('MyCode', 'Code',
fontSize=8, leading=11, fontName='Courier',
backColor=LIGHT_GREY, leftIndent=8, borderPadding=(4,4,4,4))
S_FOOTER = make_style('Footer', 'Normal',
fontSize=7.5, textColor=MED_GREY, alignment=TA_CENTER)
# ── Helper builders ──────────────────────────────────────────────────────────
def h1(text):
return Paragraph(text, S_H1)
def h2(text):
return Paragraph(f"<b>{text}</b>", S_H2)
def h3(text):
return Paragraph(text, S_H3)
def p(text):
return Paragraph(text, S_BODY)
def b(text, level=1):
style = S_BULLET if level == 1 else S_BULLET2
bullet = "•" if level == 1 else "◦"
return Paragraph(f"{bullet} {text}", style)
def tip(text, label="KEY POINT"):
return Paragraph(f"<b>⚑ {label}:</b> {text}", S_TIP)
def sp(h=4):
return Spacer(1, h)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#ccd6e0"), spaceAfter=4, spaceBefore=4)
def make_table(data, col_widths=None, has_header=True):
t = Table(data, colWidths=col_widths, repeatRows=1 if has_header else 0)
style_cmds = [
('FONTNAME', (0,0), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 8),
('LEADING', (0,0), (-1,-1), 10),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, TABLE_ALT]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#b0c4de")),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING',(0,0), (-1,-1), 4),
]
if has_header:
style_cmds += [
('BACKGROUND', (0,0), (-1,0), TABLE_HDR),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8.5),
]
t.setStyle(TableStyle(style_cmds))
return t
# ── Page template with header/footer ─────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
w, h = A4
# Header bar
canvas.setFillColor(NAVY)
canvas.rect(0, h - 22*mm, w, 22*mm, fill=1, stroke=0)
canvas.setFillColor(colors.white)
canvas.setFont("Helvetica-Bold", 9)
canvas.drawString(1.5*cm, h - 13*mm, "GLAUCOMA STUDY GUIDE | Ophthalmology PG Year 2")
canvas.setFont("Helvetica", 8)
canvas.drawRightString(w - 1.5*cm, h - 13*mm, f"Exam: 24 June 2026")
# Teal accent line below header
canvas.setFillColor(TEAL)
canvas.rect(0, h - 24*mm, w, 2*mm, fill=1, stroke=0)
# Footer
canvas.setFillColor(MED_GREY)
canvas.setFont("Helvetica", 7.5)
canvas.drawString(1.5*cm, 10*mm, "Sources: Kanski's Clinical Ophthalmology 10e | Wills Eye Manual | Katzung Pharmacology | Goldman-Cecil Medicine")
canvas.drawRightString(w - 1.5*cm, 10*mm, f"Page {doc.page}")
canvas.setFillColor(TEAL)
canvas.rect(0, 8*mm, w, 0.5*mm, fill=1, stroke=0)
canvas.restoreState()
def on_first_page(canvas, doc):
canvas.saveState()
w, h = A4
# Full navy header band
canvas.setFillColor(NAVY)
canvas.rect(0, h - 60*mm, w, 60*mm, fill=1, stroke=0)
canvas.setFillColor(TEAL)
canvas.rect(0, h - 62*mm, w, 2.5*mm, fill=1, stroke=0)
# Footer
canvas.setFillColor(MED_GREY)
canvas.setFont("Helvetica", 7.5)
canvas.drawString(1.5*cm, 10*mm, "Sources: Kanski's Clinical Ophthalmology 10e | Wills Eye Manual | Katzung Pharmacology | Goldman-Cecil Medicine")
canvas.drawRightString(w - 1.5*cm, 10*mm, "Page 1")
canvas.setFillColor(TEAL)
canvas.rect(0, 8*mm, w, 0.5*mm, fill=1, stroke=0)
canvas.restoreState()
# ── Document ─────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=3.2*cm, bottomMargin=2.4*cm,
title="Glaucoma Study Guide – Ophthalmology PG Year 2",
author="Orris Medical Assistant",
subject="Glaucoma – Comprehensive Exam Preparation"
)
story = []
# ═══════════════════════════════════════════════════════════════════════════
# COVER
# ═══════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 2.5*cm))
story.append(Paragraph("GLAUCOMA", make_style('Cover1','Normal',
fontSize=40, textColor=colors.white, fontName='Helvetica-Bold', alignment=TA_CENTER)))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("COMPREHENSIVE STUDY GUIDE", make_style('Cover2','Normal',
fontSize=16, textColor=TEAL, fontName='Helvetica-Bold', alignment=TA_CENTER, letterSpacing=2)))
story.append(Spacer(1, 6*mm))
story.append(Paragraph("Ophthalmology Postgraduate — Year 2", make_style('CoverSub','Normal',
fontSize=11, textColor=colors.HexColor("#a8c6e0"), alignment=TA_CENTER)))
story.append(Paragraph("Exam Date: 24 June 2026", make_style('CoverDate','Normal',
fontSize=10, textColor=GOLD, alignment=TA_CENTER, fontName='Helvetica-Bold')))
story.append(Spacer(1, 1.8*cm))
# Cover info box
cover_data = [
["16 Sections", "Full Mechanisms", "Key Trials", "Mnemonics"],
["Classification\nPathophysiology", "Pharmacology\nLaser & Surgery", "OHTS · EMGT · AGIS\nEAGLE · LiGHT", "ISNT · PALE FISH\nFLASH · CAP MO"],
]
cover_tbl = Table(cover_data, colWidths=[3.9*cm]*4)
cover_tbl.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), TEAL),
('BACKGROUND', (0,1), (-1,1), colors.HexColor("#1a2e40")),
('TEXTCOLOR', (0,0), (-1,-1), colors.white),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (-1,1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,0), 9),
('FONTSIZE', (0,1), (-1,1), 8),
('LEADING', (0,0), (-1,-1), 11),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('GRID', (0,0), (-1,-1), 0.5, TEAL),
]))
story.append(cover_tbl)
story.append(Spacer(1, 1.2*cm))
story.append(Paragraph(
"Prepared from: Kanski's Clinical Ophthalmology 10th Ed. | Wills Eye Manual | "
"Katzung's Basic & Clinical Pharmacology 16th Ed. | Goldman-Cecil Medicine | Goodman & Gilman's",
make_style('CoverSrc','Normal', fontSize=8, textColor=colors.HexColor("#7faabf"), alignment=TA_CENTER)))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 1 – DEFINITION & OVERVIEW
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("SECTION 1 — DEFINITION & OVERVIEW"))
story.append(p("<b>Glaucoma</b> is a group of conditions sharing a common <b>chronic progressive optic neuropathy</b> with:"))
for item in [
"Characteristic morphological changes at the optic nerve head (ONH) and RNFL",
"Progressive <b>retinal ganglion cell (RGC) death</b>",
"Associated visual field loss",
"<b>IOP is the key modifiable risk factor</b> (but not the only one)"
]:
story.append(b(item))
story.append(sp())
story.append(tip("Goal of treatment: Slow the rate of progression throughout a patient's lifetime to maintain visual function and quality of life at a sustainable cost.", "GOAL"))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 2 – CLASSIFICATION
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("SECTION 2 — CLASSIFICATION"))
story.append(h2("Primary Glaucomas"))
classif_data = [
["Type", "Open-Angle", "Angle-Closure"],
["Primary", "POAG, NTG, OHT", "Acute PACG, Chronic PACG, PACS"],
["Congenital", "Primary Congenital Glaucoma (PCG)", "Secondary (Sturge-Weber, NF1)"],
["Secondary\nOpen-Angle", "Pseudoexfoliation, Pigmentary,\nSteroid-induced, Inflammatory,\nAngle recession", "—"],
["Secondary\nAngle-Closure", "—", "Neovascular, Phacomorphic,\nPhacolytic, Malignant,\nCiliolenticular block"],
]
story.append(make_table(classif_data, col_widths=[3.2*cm, 7*cm, 7*cm]))
story.append(sp(6))
story.append(h2("Epidemiology (Kanski's 10e)"))
epi_bullets = [
"Affects <b>2–3% of people over 40 years</b>; up to 50% may be undiagnosed",
"<b>2nd leading cause of blindness</b> worldwide",
"POAG: Most common in White, Hispanic, Black individuals (prevalence ~16% in Black >70 yrs)",
"PACG: Up to <b>50% of cases worldwide</b>; high prevalence in <b>Asian descent</b>",
"NTG: More common in Japanese populations; females affected more",
]
for item in epi_bullets:
story.append(b(item))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 3 – AQUEOUS HUMOR DYNAMICS
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("SECTION 3 — AQUEOUS HUMOR DYNAMICS & IOP"))
story.append(h2("Aqueous Production"))
story.append(p("Produced by the <b>ciliary body non-pigmented epithelium</b> via:"))
for item in ["<b>Active secretion</b> (Na⁺/K⁺ ATPase — dominant pathway)", "Ultrafiltration", "Simple diffusion"]:
story.append(b(item))
story.append(h2("Outflow Pathways"))
outflow_data = [
["Pathway", "Route", "% Total Outflow"],
["Conventional (Trabecular)", "TM → Schlemm's canal → aqueous veins → episcleral veins", "~80–85%"],
["Uveoscleral (Non-conventional)", "AC → ciliary muscle → suprachoroidal space → sclera", "~15–20%"],
]
story.append(make_table(outflow_data, col_widths=[4*cm, 9.5*cm, 3*cm]))
story.append(sp(4))
story.append(h2("Normal IOP"))
for item in [
"Normal range: <b>10–21 mmHg</b> (mean ~16 mmHg, SD ~3 mmHg)",
"Diurnal variation: <b>3–5 mmHg</b> (peaks in early morning)",
"Factors raising IOP: supine position, Valsalva, tight neckwear, systemic steroids",
"~50% of POAG patients have <b>normal IOP at any single screening</b>",
]:
story.append(b(item))
story.append(sp(4))
story.append(h2("Ocular Hypertension (OHT)"))
story.append(p("IOP >21 mmHg <b>without</b> glaucomatous ONH or VF damage"))
story.append(tip("OHTS: Untreated OHT → 9.5% cumulative POAG risk at 5 yrs. Treatment (↓IOP ≥20%) → 4.4%. Thin CCT is the STRONGEST single predictor of conversion.", "OHTS TRIAL"))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 4 – POAG
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 4 — PRIMARY OPEN-ANGLE GLAUCOMA (POAG)"))
story.append(h2("Definition"))
story.append(p("Chronic, progressive optic neuropathy of <b>adult onset</b> with:"))
for item in [
"RNFL thinning and glaucomatous optic nerve damage",
"Characteristic visual field loss as damage progresses",
"<b>Open</b> anterior chamber angle on gonioscopy",
"No identifiable cause (distinguishes from secondary glaucoma)",
"IOP is a key modifiable risk factor",
]:
story.append(b(item))
story.append(h2("Risk Factors"))
rf_data = [
["Risk Factor", "Details"],
["Raised IOP", "Most important modifiable RF"],
["Thin CCT", "Strongest predictor in OHTS; each 40 μm thinner → 3× risk"],
["Black African descent", "Higher prevalence, earlier onset, faster progression"],
["Age", "Prevalence rises sharply after 60"],
["Family history", "~10× increased risk in 1st-degree relatives"],
["High myopia", "Optic disc more susceptible"],
["Obstructive sleep apnea", "Vascular mechanism"],
["Low systemic BP", "Reduced ocular perfusion pressure"],
["Pseudoexfoliation", "Strongest secondary risk factor"],
]
story.append(make_table(rf_data, col_widths=[5.5*cm, 11*cm]))
story.append(sp(6))
story.append(h2("Optic Disc Signs in POAG"))
story.append(h3("ISNT Rule"))
story.append(tip("Normal NRR thickness: Inferior > Superior > Nasal > Temporal. ANY violation of this rule = suspect glaucoma.", "ISNT RULE"))
disc_signs = [
"<b>C/D ratio increase</b> — documented progression is always significant; vertical C/D ≥0.7 suspicious; asymmetry >0.2 between eyes significant",
"<b>Notching of NRR</b> — most commonly inferotemporal → corresponds to arcuate scotoma (Bjerrum area)",
"<b>RNFL defects</b> — wedge-shaped nerve fiber layer dropout (best seen with red-free photography)",
"<b>Disc hemorrhages</b> — flame-shaped at disc margin, usually inferotemporal; risk factor for progression; MORE COMMON in NTG",
"<b>Parapapillary atrophy (PPA)</b> — Beta zone (inner, chorioretinal atrophy) correlates with RNFL loss",
"<b>Nasalization of vessels</b> — 'bayoneting' sign, baring of circumlinear vessels",
"<b>Pallor</b> — should be proportionate to cupping; disproportionate pallor → suspect non-glaucomatous optic neuropathy",
]
for item in disc_signs:
story.append(b(item))
story.append(h2("Morphological Subtypes of Glaucomatous Disc Damage"))
morph_data = [
["Type", "Appearance", "Clinical Association"],
["Focal ischaemic", "Localized sup/inf notching", "Localized VF defects, early fixation threat"],
["Myopic disc", "Tilted/oblique disc + temporal crescent PPA", "Dense sup/inf scotomas; younger males"],
["Sclerotic", "Shallow saucerized cup, gently sloping NRR", "Older patients, systemic vascular disease"],
["Concentrically enlarging", "Uniform NRR thinning (serial monitoring)", "Diffuse VF loss; high IOP at presentation"],
]
story.append(make_table(morph_data, col_widths=[3.8*cm, 6*cm, 6.7*cm]))
story.append(sp(6))
story.append(h2("Visual Field Defects — Chronological Progression"))
vf_prog = [
"1. Isolated <b>paracentral scotoma</b> (within 10° of fixation)",
"2. <b>Nasal step</b> (respects horizontal meridian — nasal raphe anatomy)",
"3. <b>Bjerrum/Arcuate scotoma</b> (10–20° from fixation, Bjerrum's area)",
"4. <b>Double arcuate (ring) scotoma</b>",
"5. <b>Temporal island</b> + <b>Central island</b> (advanced stage)",
"6. Total field loss (blindness)",
]
for item in vf_prog:
story.append(b(item))
story.append(tip("HFA 24-2 pattern: Standard for glaucoma (24° temporal, 30° nasal). 10-2 used in advanced disease to monitor central island and split fixation.", "PERIMETRY"))
story.append(h2("Key Clinical Trials for POAG"))
trial_data = [
["Trial", "Key Finding"],
["OHTS", "OHT: thin CCT = strongest predictor; treatment reduces 5-yr risk 9.5%→4.4%"],
["EMGT", "Mean MD loss/yr: HTG -1.31, NTG -0.36, PXEG -3.13 dB; each 1 mmHg reduction ≈ 10% less progression risk"],
["AGIS", "IOP consistently <18 mmHg → minimal VF progression"],
["CIGS", "Surgery better IOP control; medications better initial VF"],
["LiGHT (2019)", "SLT as first-line therapy: superior to or equivalent to drops; may prevent more progression"],
]
story.append(make_table(trial_data, col_widths=[4.5*cm, 12*cm]))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 5 – NTG
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 5 — NORMAL TENSION GLAUCOMA (NTG)"))
story.append(p("<b>NTG (Low-Tension Glaucoma):</b> Glaucomatous ONH and VF changes with IOP consistently <b>≤21 mmHg</b>"))
story.append(h2("Pathogenesis — Beyond IOP"))
for item in [
"Vascular insufficiency — impaired optic nerve head blood flow",
"<b>Nocturnal systemic hypotension</b> (BP dip at night) — strongly implicated",
"Systemic vasospasm: migraine, Raynaud's phenomenon",
"Obstructive sleep apnea",
"Autoimmune mechanisms",
"OPA1 gene mutation (dominant optic atrophy overlap)",
]:
story.append(b(item))
story.append(h2("Distinctive Features vs POAG"))
ntg_diff = [
["Feature", "NTG", "POAG"],
["IOP", "≤21 mmHg", "Often elevated (but not always)"],
["Disc hemorrhages", "MORE common", "Less common"],
["VF defects", "Deeper, steeper, closer to fixation", "Typically more peripheral initially"],
["Progression without Rx", "~50% DON'T progress at 5–7 yrs", "More likely to progress"],
["Prevalence", "Higher in Japanese/female", "Highest in Black populations"],
]
story.append(make_table(ntg_diff, col_widths=[3.5*cm, 5.5*cm, 7.5*cm]))
story.append(sp(6))
story.append(h2("Neuroimaging Indications in NTG — MUST KNOW"))
story.append(tip(
"Refer for MRI/CT if any of: (1) VA loss disproportionate to cupping, "
"(2) Colour vision loss on Ishihara, (3) VF loss NOT consistent with RNFL dropout, "
"(4) Pallor of neuroretinal rim, (5) Rapid progression despite normal pressure.",
"NEUROIMAGING RULE"))
story.append(h2("Specific Investigations in NTG"))
for item in [
"<b>24-hour ambulatory BP monitoring</b> — exclude nocturnal hypotension",
"Carotid duplex imaging — exclude carotid stenosis",
"Blood tests: B12, folate, FBC, ESR/CRP, syphilis, Lyme disease, ACE level, protein electrophoresis, autoantibodies",
]:
story.append(b(item))
story.append(h2("Treatment"))
for item in [
"<b>Demonstrate progression before treating</b> — 50% stable without treatment",
"<b>Prostaglandins</b> — usual first choice",
"<b>Brimonidine</b> — possible neuroprotective effect (alpha-2 agonism activates survival pathways)",
"<b>Betaxolol</b> (selective beta-1 blocker) — preferred over timolol if beta-blocker chosen; less nocturnal BP dip risk",
"<b>SLT</b> — reasonable first-line option",
"CNTGS: 30% IOP reduction reduces NTG progression",
]:
story.append(b(item))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 6 – PACG
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 6 — PRIMARY ANGLE-CLOSURE GLAUCOMA (PACG)"))
story.append(h2("Spectrum of Primary Angle Closure Disease"))
spectrum_data = [
["Stage", "Definition"],
["PACS (Suspect)", "Narrow angle, no PAS, normal IOP, no ONH/VF damage"],
["PAC", "Narrow angle + IOP >21 mmHg or PAS; no ONH/VF damage"],
["PACG", "Narrow angle + glaucomatous ONH and/or VF damage"],
["Acute PACG (AACG)", "Sudden symptomatic attack with acutely raised IOP"],
]
story.append(make_table(spectrum_data, col_widths=[4.5*cm, 12*cm]))
story.append(sp(6))
story.append(h2("Mechanisms of Angle Closure"))
mech_data = [
["Mechanism", "Location", "Key Examples"],
["Relative pupillary block", "At pupil (iris-lens apposition)", "PACG — most common; aqueous cannot pass from PC to AC"],
["Plateau iris", "Anterior segment", "Anteriorly rotated ciliary processes keep iris against TM"],
["Phacomorphic", "Intumescent lens", "Large lens pushes iris-lens diaphragm forward"],
["Neovascular", "Angle", "Fibrovascular membrane from DM/CRVO pulls angle closed"],
["Malignant / Ciliolenticular block", "Posterior segment", "Aqueous misdirected into vitreous; shallow AC despite patent PI"],
]
story.append(make_table(mech_data, col_widths=[3.8*cm, 4.5*cm, 8.2*cm]))
story.append(sp(6))
story.append(h2("AACG — Risk Factors"))
story.append(tip("'FLASH': Female sex, Lens (hyperopia/thick), Age (older), Shallow AC, Heredity/family history", "MNEMONIC"))
story.append(p("<b>Precipitants:</b> dim illumination, reading, topical mydriatics, systemic anticholinergics (antihistamines, antidepressants), topiramate/sulfonamides"))
story.append(h2("AACG — Clinical Features"))
story.append(h3("Symptoms"))
for s in ["Severe ocular pain", "Blurred vision", "Coloured halos around lights (corneal edema)", "Frontal headache", "Nausea and vomiting"]:
story.append(b(s))
story.append(h3("Signs"))
for s in [
"<b>Critical triad:</b> Closed angle + Acutely raised IOP + Microcystic corneal edema",
"Fixed, <b>mid-dilated pupil</b> (4–6 mm, vertically oval)",
"Ciliary injection",
"Shallow anterior chamber",
"Fellow eye: narrow/occludable angle (in primary etiology)",
]:
story.append(b(s))
story.append(h2("AACG Emergency Management"))
story.append(tip("Use mnemonic: 'Top CAP MO' — Topicals → CAI → Pressure-lowering recheck → Mannitol → Operative/Laser PI", "AACG MANAGEMENT"))
aacg_steps = [
["Step", "Action", "Notes"],
["1", "Topical meds (stat)", "Timolol 0.5% + Apraclonidine 1% or Brimonidine 0.2% + Dorzolamide 2%\nPilocarpine 1–2% (controversial; now omitted by some)"],
["2", "Systemic CAI", "Acetazolamide 500 mg IV or PO\n⚠ CI in sulfonamide allergy and sulfonamide-induced closure"],
["3", "Recheck IOP", "After 1 hour; repeat topicals if needed"],
["4", "Osmotic agent (if refractory)", "Mannitol 1–2 g/kg IV over 45 min\n⚠ CI: CHF, renal disease, intracranial bleeding"],
["5", "Definitive", "YAG Laser Peripheral Iridotomy (PI) once cornea clears (1–5 days)\nFellow eye: prophylactic PI (40–80% chance of attack in 5–10 yrs)"],
]
story.append(make_table(aacg_steps, col_widths=[1.2*cm, 4.5*cm, 10.8*cm]))
story.append(sp(6))
story.append(h2("Special Scenarios"))
special_data = [
["Scenario", "Key Points"],
["Topiramate/sulfonamide-induced", "Bilateral closure; STOP drug; cycloplegia (atropine); NO CAIs; NO PI; IV steroids if severe"],
["Phacomorphic glaucoma", "Medical control first → lens extraction as definitive treatment"],
["Aphakic/pseudophakic pupillary block", "Do NOT use pilocarpine; use mydriatics + cycloplegics"],
["Plateau iris (after patent PI)", "Persistent narrow angle despite PI → Argon laser iridoplasty (ALPI)"],
]
story.append(make_table(special_data, col_widths=[4.5*cm, 12*cm]))
story.append(sp(6))
story.append(tip("EAGLE Study: Clear lens extraction is MORE effective and cost-effective than laser PI in PAC with IOP >29 mmHg or in PACG.", "EAGLE TRIAL"))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 7 – SECONDARY GLAUCOMAS
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 7 — SECONDARY GLAUCOMAS (HIGH YIELD)"))
story.append(h2("7.1 Pseudoexfoliation Glaucoma (PXG)"))
for item in [
"<b>Most common identifiable cause</b> of open-angle glaucoma worldwide",
"Fibrillar exfoliative material on: anterior lens capsule (classic pattern: central disc + peripheral ring with clear zone), ciliary processes, iris, TM",
"TM obstruction → aqueous outflow blockade",
"<b>Worst natural history</b> (EMGT: −3.13 dB/yr); marked IOP fluctuations",
"Weak zonules → risk of lens subluxation during phacoemulsification",
"Poor pupil dilation — use iris hooks; pupil stretching risky",
"Good response to prostaglandins; poor response to miotics",
]:
story.append(b(item))
story.append(h2("7.2 Pigmentary Glaucoma"))
for item in [
"Pigment Dispersion Syndrome (PDS) → pigmentary glaucoma",
"Mechanism: <b>Reverse pupillary block</b> — iris rubs against zonule packets → pigment released",
"<b>Krukenberg spindle</b> on corneal endothelium (vertical, spindle-shaped pigment deposit)",
"TM: dense brown hyperpigmentation band (Sampaolesi line)",
"Iris: radial, spoke-like transillumination defects",
"Typical patient: young, <b>myopic male</b>",
"Exercise and dilation → increased pigment release → IOP spikes",
"Pilocarpine: helps reverse pupillary block (thickens iris, reduces iris-zonule contact)",
]:
story.append(b(item))
story.append(h2("7.3 Neovascular Glaucoma (NVG)"))
story.append(p("<b>Causes of retinal ischemia:</b> Proliferative DM > CRVO > Ocular ischemic syndrome"))
for item in [
"VEGF secreted from ischemic retina → <b>rubeosis iridis</b> (neovascularization of iris/angle)",
"Initially: open angle with vessel tufts at pupil margin and angle",
"Later: fibrovascular membrane contracts → <b>PAS formation</b> → angle closure",
"Treatment: Anti-VEGF (immediate IOP lowering), PRP, glaucoma drainage device",
"Trabeculectomy has poor prognosis in NVG",
]:
story.append(b(item))
story.append(h2("7.4 Steroid-Induced Glaucoma"))
for item in [
"Mechanism: Steroids → ↑ GAG accumulation in TM → ↓ aqueous outflow facility",
"Route potency: Topical > periocular > systemic; inhaled steroids can also raise IOP",
"IOP rise typically occurs within <b>2–6 weeks</b> of starting steroids",
"Risk factors: POAG/family Hx, connective tissue disease, myopia, diabetes",
"Treatment: Stop steroid (use fluorometholone/loteprednol — lower responder rate) + IOP-lowering medications",
]:
story.append(b(item))
story.append(h2("7.5 Phacolytic Glaucoma"))
for item in [
"<b>Hypermature/Morgagnian cataract</b> — lens proteins leak through intact capsule",
"Large macrophages engorged with lens material clog TM → open-angle mechanism",
"Severe inflammation in AC; white fluffy material visible",
"Treatment: Medical (steroids + IOP lowering) → <b>lens extraction</b> (definitive)",
]:
story.append(b(item))
story.append(h2("7.6 Angle Recession Glaucoma"))
for item in [
"Blunt trauma → tear in ciliary body face between longitudinal and circular muscles",
"TM damaged → late-onset open-angle glaucoma (can present <b>decades</b> after injury)",
"Gonioscopy: Wide angle (>180° recession on uninvolved side), irregular angle",
"Always perform gonioscopy after blunt ocular trauma",
]:
story.append(b(item))
story.append(h2("7.7 Malignant Glaucoma (Ciliolenticular Block)"))
story.append(tip(
"Malignant glaucoma: Shallow AC + high IOP + PATENT PI. Distinguishes from pupillary block (PI relieves pupillary block but NOT malignant glaucoma).",
"KEY DIFFERENTIATOR"))
for item in [
"Usually post-filtration surgery; more common in small hyperopic eyes or post-PACG",
"Aqueous misdirected into vitreous/lens zonule spaces → pushes lens-iris diaphragm anteriorly",
"Treatment: Cycloplegia (atropine 1% QID — mainstay), hyperosmotic agents, YAG laser vitreous face disruption, pars plana vitrectomy",
]:
story.append(b(item))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 8 – INVESTIGATIONS
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 8 — GLAUCOMA INVESTIGATIONS"))
story.append(h2("8.1 Tonometry"))
tono_data = [
["Method", "Principle", "Notes"],
["Goldmann Applanation (GAT)", "Force to flatten 3.06 mm diameter area", "Gold standard; affected by CCT and corneal rigidity"],
["Non-contact (NCT/air puff)", "Air puff flattens cornea", "Screening only; less accurate; no anesthesia"],
["Schiotz indentation", "Weight plunger indents cornea", "Old; affected by axial length; still tested"],
["Perkins", "Same as GAT", "Portable; supine patients, children, OR"],
["Tonopen", "Electronic strain gauge", "Irregular corneas; portable"],
["Pascal DCT", "Contour matching", "Less CCT-dependent"],
["iCare (rebound)", "Rebound principle", "No anesthesia; excellent for children"],
]
story.append(make_table(tono_data, col_widths=[4*cm, 5*cm, 7.5*cm]))
story.append(sp(4))
story.append(tip(
"CCT effect on GAT: Each 10 μm ABOVE average CCT (~545 μm) → IOP OVERestimated ~0.7 mmHg. "
"Thin cornea = falsely LOW reading; Thick cornea = falsely HIGH reading.",
"CCT CORRECTION"))
story.append(h2("8.2 Gonioscopy"))
story.append(p("<b>Essential for:</b> Differentiating open vs. angle-closure; identifying secondary causes; assessing extent of PAS"))
story.append(h3("Gonioscopic Landmarks (anterior to posterior)"))
for item in ["Schwalbe's line (anterior TM border — posterior cornea)", "Trabecular meshwork (pigmented posterior TM most important)", "Scleral spur (white, most posterior TM landmark)", "Ciliary band (brownish — most posterior structure)", "Iris root"]:
story.append(b(item))
story.append(h3("Shaffer Grading"))
shaffer_data = [
["Grade", "Angle Width", "Closure Risk"],
["4", "35–45°", "Impossible — wide open"],
["3", "25–35°", "Unlikely"],
["2", "20°", "Possible"],
["1", "<10°", "Probable"],
["0", "Closed (0°)", "Closure present"],
]
story.append(make_table(shaffer_data, col_widths=[2*cm, 4*cm, 10.5*cm]))
story.append(sp(4))
story.append(p("<b>Indentation (dynamic) gonioscopy:</b> Distinguishes <b>appositional</b> (pushed open by indentation) from <b>synechial/PAS</b> closure (cannot be opened)"))
story.append(h2("8.3 Perimetry (Visual Field Testing)"))
perim_data = [
["Pattern", "Coverage", "Use"],
["24-2 (Humphrey)", "Central 24° temporal, 30° nasal", "Standard glaucoma monitoring"],
["30-2", "Central 30° all directions", "Alternative; covers more peripheral"],
["10-2", "Central 10° radius", "Advanced glaucoma; monitoring central island; split fixation"],
["FF-120", "Central + peripheral", "Neurological defects"],
]
story.append(make_table(perim_data, col_widths=[3.5*cm, 5*cm, 8*cm]))
story.append(sp(4))
story.append(h3("Global Indices"))
for item in [
"<b>Mean Deviation (MD):</b> Average deviation from age-matched normal (dB); negative = worse",
"<b>Pattern SD (PSD):</b> Irregularity of field loss — elevated in focal loss (e.g. arcuate scotoma)",
"<b>VFI:</b> 0–100%; 100% = perfect; used for trend analysis",
"<b>GHT (Glaucoma Hemifield Test):</b> Compares upper/lower hemifields — 'Outside normal limits' is significant",
"<b>Reliability criteria:</b> Fixation losses >20%, false positives >15%, false negatives >33% → unreliable test",
]:
story.append(b(item))
story.append(h2("8.4 OCT (Optical Coherence Tomography)"))
for item in [
"Spectral Domain OCT (SD-OCT) is now standard",
"Measures: RNFL thickness, GCL (ganglion cell layer), macular volume",
"<b>Most sensitive area for early detection:</b> Inferotemporal RNFL",
"<b>Structural changes precede functional (VF) loss</b> by several years — OCT detects earlier",
"Colour-coded probability maps: Green = normal, Yellow = borderline, Red = outside normal limits",
]:
story.append(b(item))
story.append(h2("8.5 Central Corneal Thickness (CCT)"))
story.append(p("Measured by <b>ultrasound pachymetry</b> or optical methods (Orbscan/Pentacam). Average ~545 μm."))
story.append(p("Essential for: IOP interpretation, risk stratification in OHT (OHTS)"))
story.append(h2("8.6 Other Imaging"))
for item in [
"<b>HRT (Heidelberg Retina Tomograph):</b> Confocal scanning laser; 3D disc analysis; Moorfields Regression Analysis (MRA)",
"<b>GDx (Scanning laser polarimetry):</b> RNFL thickness via birefringence; TSNIT pattern",
"<b>Fundus photography:</b> Baseline documentation; red-free for RNFL",
]:
story.append(b(item))
story.append(h3("Disc Magnification Correction Factors"))
lens_data = [
["Lens", "Correction Factor"],
["Volk 60D", "×0.88–1.0"],
["Volk 78D", "×1.1"],
["Volk 90D", "×1.3"],
["Goldmann 3-mirror", "×1.27"],
]
story.append(make_table(lens_data, col_widths=[5*cm, 5*cm], has_header=True))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 9 – MEDICATIONS
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 9 — ANTI-GLAUCOMA MEDICATIONS"))
drug_data = [
["Drug Class", "Examples", "Mechanism", "IOP ↓", "Key Side Effects / CI"],
["Prostaglandin\nAnalogues (PGA)",
"Latanoprost\nBimatoprost\nTravoprost\nTafluprost",
"↑ Uveoscleral outflow\n(FP receptor agonist)",
"25–35%\n(most potent)",
"Iris pigmentation, eyelash growth (hypertrichosis),\nperiorbital fat atrophy, conjunctival hyperemia,\nCME (aphakic/pseudophakic — caution)"],
["Beta-Blockers",
"Timolol (non-selective)\nBetaxolol (β1-selective)",
"↓ Aqueous production\n(β2-blockade in ciliary body)",
"20–30%",
"Bradycardia, bronchospasm\nCI: Asthma, COPD, heart block\nBetaxolol: safer in respiratory disease"],
["Alpha-2\nAgonists",
"Brimonidine 0.2%\nApraclonidine 1%",
"↓ Aqueous production\n+ ↑ Uveoscleral outflow",
"20–25%",
"Follicular conjunctivitis (up to 30%), dry mouth,\nfatigue/sedation\nCI: Infants/neonates (CNS depression, apnea, bradycardia)"],
["Carbonic\nAnhydrase\nInhibitors (CAI)",
"Topical: Dorzolamide,\nBrinzolamide\nOral: Acetazolamide,\nMethazolamide",
"↓ Aqueous production\n(inhibit CA II/IV in\nciliary body epithelium)",
"15–20%",
"Topical: stinging, metallic taste, corneal edema\nOral: paresthesias, GI upset, renal stones, hypokalemia,\nagranulocytosis/aplastic anemia (rare)\nCI: Sulfonamide allergy"],
["Miotics\n(Cholinergics)",
"Pilocarpine 1–4%\nCarbachol",
"↑ Conventional outflow\n(TM tensioning via\nciliary muscle contraction)",
"20–25%",
"Brow ache (especially early), accommodative spasm,\nmiosis (poor night driving), retinal detachment risk\nCI: Aphakic/pseudophakic pupillary block"],
["Rho-kinase\nInhibitors",
"Netarsudil",
"↑ Conventional outflow\n(↓ TM cell contractility)\n+ ↓ Episcleral venous\npressure",
"15–20%",
"Conjunctival hyperemia, corneal verticillata\n(whorl-like deposits), subconjunctival hemorrhage"],
["NO-donating\nPGA",
"Latanoprostene\nbunod",
"↑ Uveoscleral + conventional\noutflow (dual mechanism)",
"~PGA",
"Similar to prostaglandin analogues"],
]
story.append(make_table(drug_data, col_widths=[2.8*cm, 3.2*cm, 3.5*cm, 1.7*cm, 5.3*cm]))
story.append(sp(8))
story.append(h2("Key Pharmacology Points"))
pharma_key = [
"<b>First-line:</b> Prostaglandin analogue (once daily, highest efficacy, best compliance)",
"<b>Alternate first-line:</b> Topical beta-blocker (timolol)",
"<b>PGA timing:</b> Given at <b>night</b> (circadian rhythm optimization)",
"<b>Two drops:</b> Wait <b>5 minutes</b> between instillation to prevent washout of first drop",
"<b>Brimonidine:</b> May have additional neuroprotective effect — preferred in NTG (alpha-2 agonism activates RGC survival pathways)",
"<b>Betaxolol:</b> Beta-1 selective — preferred beta-blocker when respiratory disease a concern; also less nocturnal BP dip (NTG-friendly)",
"<b>Acetazolamide:</b> Oral CAI for acute AACG or inadequate topical control; <b>CI in sulfonamide allergy</b>",
"<b>Pilocarpine CI</b> in aphakic/pseudophakic pupillary block (can worsen); use cautiously in retinal tears",
]
for item in pharma_key:
story.append(b(item))
story.append(h2("Common Fixed-Dose Combinations"))
combo_data = [
["Combination", "Trade Name (example)", "Use"],
["Timolol + Dorzolamide", "Cosopt", "BB + CAI; reduces drop burden"],
["Timolol + Brimonidine", "Combigan", "BB + alpha-2 agonist"],
["Timolol + Latanoprost", "Xalacom", "BB + PGA (morning use)"],
["Timolol + Bimatoprost", "Ganfort", "BB + PGA"],
["Netarsudil + Latanoprost", "Rocklatan", "Dual novel mechanism"],
]
story.append(make_table(combo_data, col_widths=[5.5*cm, 4.5*cm, 6.5*cm]))
story.append(sp(4))
story.append(tip(
"PGA side effects mnemonic: 'PALE FISH' — Periorbital fat atrophy, Arterial BP (minor), "
"Lash hypertrichosis, Eyelid darkening, Fore (uveitis-rare), Iris color change, "
"Superficial punctate keratitis, Hyperemia (conjunctival)", "MNEMONIC: PALE FISH"))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 10 – LASER
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 10 — LASER PROCEDURES IN GLAUCOMA"))
laser_data = [
["Procedure", "Indication", "Laser Type", "Mechanism", "Notes"],
["Laser Peripheral\nIridotomy (LPI/PI)",
"PACG, PACS (prophylaxis),\nPost-AACG (fellow eye)",
"Nd:YAG\n(± argon)",
"Creates full-thickness iris hole →\nequalizes PC/AC pressure\n→ opens angle",
"Fellow eye risk: 40–80% AACG in 5–10 yrs without treatment.\nRepeat if blockage."],
["Selective Laser\nTrabeculoplasty\n(SLT)",
"POAG (1st or 2nd line),\nOHT, NTG",
"Q-switched\nNd:YAG 532 nm",
"Selectively targets pigmented TM\ncells → biological response\n→ ↑ trabecular outflow",
"Repeatable (unlike ALT).\nLiGHT trial: first-line superior/equivalent to drops.\n~6–8 mmHg IOP reduction.\nEffect lasts 2–5 years."],
["Argon Laser\nTrabeculoplasty\n(ALT)",
"POAG (older procedure)",
"Argon",
"Burns in TM → scarring and\ncollagen contraction →\nopens adjacent areas",
"Not reliably repeatable.\nReplaced by SLT in most centers."],
["Argon Laser\nIridoplasty\n(ALPI)",
"Plateau iris syndrome,\nPI-failed PACG",
"Argon",
"Peripheral iris burns → iris\nstroma shrinks → opens\nangle mechanically",
"Burns placed in far periphery.\nDoes not create hole through iris."],
["Diode Laser\nCyclodestruction\n(Cyclodiode)",
"Refractory/end-stage\nglaucoma",
"Diode 810 nm",
"Destroys ciliary body\nepithelium → ↓ aqueous\nproduction",
"Last resort; risk of hypotony, phthisis.\nRepeat treatment possible."],
["YAG Laser\nVitreolysis",
"Malignant glaucoma",
"Nd:YAG",
"Disrupts anterior vitreous\nface → redirects aqueous\nforward",
"First-line non-surgical option for\nmalignant glaucoma after cycloplegia fails."],
]
story.append(make_table(laser_data, col_widths=[3.2*cm, 3*cm, 2.2*cm, 4.5*cm, 3.6*cm]))
story.append(sp(8))
story.append(tip(
"LiGHT Trial (2019): SLT as first-line therapy was non-inferior and possibly superior to eye drops as initial treatment for POAG/OHT. "
"At 3 years, 74% of SLT group needed no drops. SLT should be offered as first-line treatment.",
"LiGHT TRIAL"))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 11 – SURGERY
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 11 — SURGICAL PROCEDURES"))
story.append(h2("11.1 Trabeculectomy (Standard Filtration Surgery)"))
story.append(tip("Gold standard for IOP reduction in medically/laser uncontrolled glaucoma", "GOLD STANDARD"))
story.append(h3("Principle"))
story.append(p("Creates a guarded scleral fistula allowing subconjunctival drainage → filtered bleb formation under the conjunctiva"))
story.append(h3("Surgical Steps (Kanski's 10e)"))
trab_steps = [
"1. Conjunctival flap (fornix-based or limbus-based)",
"2. Lamellar scleral flap (~50% scleral thickness), 3×3–4 mm, rectangular/trapezoid/triangular",
"3. Flap dissected anteriorly to clear cornea",
"4. Paracentesis in temporal peripheral clear cornea (anterior chamber access)",
"5. Anterior chamber entered along trapdoor base",
"6. <b>Deep scleral block excised</b> using Kelly punch (creates sclerostomy)",
"7. <b>Peripheral iridectomy</b> (prevents iris prolapse into sclerostomy; may be omitted in pseudophakic)",
"8. Superficial scleral flap sutured (releasable or lysable sutures)",
"9. BSS injected through paracentesis to test fistula patency",
"10. Conjunctiva/Tenon sutured; bleb checked for leakage",
"11. Atropine 1% drop; subconjunctival steroid + antibiotic injection",
]
for step in trab_steps:
story.append(b(step))
story.append(h3("Antimetabolites — Preventing Bleb Failure"))
anti_data = [
["Agent", "Potency", "Indication", "Key Complications"],
["Mitomycin C (MMC)", "More potent\n(alkylating agent)", "Higher-risk cases: young, Afro-Caribbean, prior surgery/inflammation, aphakia, neovascular", "Avascular bleb, bleb leak, hypotony maculopathy, late blebitis/endophthalmitis"],
["5-Fluorouracil (5-FU)", "Less potent\n(antimetabolite)", "Moderate-risk; intraoperative or postoperative subconj injections", "Persistent corneal epithelial defect, bleb leakage, less durable than MMC"],
]
story.append(make_table(anti_data, col_widths=[3.2*cm, 2.8*cm, 5.5*cm, 5*cm]))
story.append(sp(4))
story.append(h3("Complications"))
for item in [
"<b>Early:</b> Hypotony, flat AC, choroidal detachment, hyphema, wound leak, infection",
"<b>Late:</b> Bleb failure (fibrosis), bleb leak, blebitis (up to 5%/yr with MMC), <b>late endophthalmitis</b> (lifelong risk — highest of any glaucoma surgery)",
"Malignant glaucoma (especially in small hyperopic/PACG eyes)",
]:
story.append(b(item))
story.append(h2("11.2 Ex-PRESS Mini-Shunt"))
for item in [
"Valveless titanium MRI-compatible stent inserted under scleral flap (modified trabeculectomy)",
"No punch sclerostomy; no peripheral iridectomy required",
"Lower rates of hypotony and hyphema vs standard trabeculectomy",
"Equivalent IOP control to standard trabeculectomy",
"Not suitable in primary angle-closure without concurrent/prior cataract surgery",
]:
story.append(b(item))
story.append(h2("11.3 Glaucoma Drainage Devices (GDD / Tube Shunts)"))
gdd_data = [
["Device", "Valve?", "Plate Size", "Best For"],
["Ahmed Glaucoma Valve", "Yes (flow-restrictor)", "Medium (184 mm²)", "Early pressure control; NVG, uveitis, pediatric"],
["Baerveldt Implant", "No (needs ligation)", "Large (250–350 mm²)", "Better long-term IOP control; requires ligature initially"],
["Molteno", "No", "Various", "Historical; still used in some centers"],
]
story.append(make_table(gdd_data, col_widths=[3.5*cm, 3*cm, 3.5*cm, 6.5*cm]))
story.append(sp(4))
story.append(p("<b>Indications:</b> Failed trabeculectomy, NVG, uveitic glaucoma, congenital glaucoma (failed initial surgery), ICE syndrome"))
story.append(h2("11.4 MIGS (Minimally Invasive Glaucoma Surgery)"))
migs_data = [
["Category", "Examples", "Notes"],
["TM bypass (ab interno)", "iStent, Hydrus microstent", "Increases outflow through Schlemm's canal; lowest risk; often combined with cataract surgery"],
["Subconjunctival (ab interno)", "Xen gel stent, PRESERFLO", "Creates bleb like trabeculectomy but less invasive"],
["Suprachoroidal", "Cypass (withdrawn due to safety)", "Uveoscleral outflow enhancement"],
["TM incision", "GATT, Viscocanalostomy", "Opens Schlemm's canal over 360°"],
]
story.append(make_table(migs_data, col_widths=[4*cm, 4.5*cm, 8*cm]))
story.append(sp(4))
story.append(p("<b>MIGS key concept:</b> Less IOP reduction than trabeculectomy, but significantly lower complication profile. Best for mild-moderate glaucoma or combined with phaco."))
story.append(h2("11.5 Goniotomy / Trabeculotomy (Congenital Glaucoma)"))
for item in [
"<b>Goniotomy:</b> Ab interno incision through TM under gonioscopic view; requires <b>clear cornea</b>",
"<b>Trabeculotomy:</b> External approach; probe through Schlemm's canal; can be done with <b>cloudy cornea</b>",
"Combined trabeculotomy-trabeculectomy: used in more severe/refractory congenital cases",
]:
story.append(b(item))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 12 – SPECIAL GLAUCOMAS
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 12 — SPECIAL GLAUCOMAS"))
story.append(h2("12.1 Primary Congenital Glaucoma (PCG)"))
story.append(p("<b>Mechanism:</b> Trabeculodysgenesis — failure of normal TM development"))
story.append(h3("Classic Triad (must know)"))
story.append(tip("Buphthalmos + Epiphora (tearing) + Photophobia/Blepharospasm", "CLASSIC TRIAD"))
for item in [
"<b>Buphthalmos:</b> Enlarged, 'ox eye' — axial length increases (child's cornea/sclera more elastic than adult)",
"<b>Haab's striae:</b> Horizontal/oblique breaks in Descemet's membrane from corneal stretching; <b>pathognomonic</b>",
"Corneal edema (cloudy cornea), high IOP",
"Presentation: Birth to 3 years (most in first year)",
"Genetics: Some autosomal recessive (CYP1B1 gene mutations)",
"<b>Treatment: SURGICAL is primary</b> — Goniotomy (if clear cornea) or Trabeculotomy; medical is only adjunct",
]:
story.append(b(item))
story.append(h2("12.2 Sturge-Weber Syndrome"))
for item in [
"Sporadic, congenital phacomatosis (encephalotrigeminal angiomatosis)",
"Glaucoma ipsilateral to facial hemangioma in <b>~30%</b>",
"<b>60%</b> develop glaucoma before age 2 (buphthalmos); remainder any age",
"Mechanism (infants): Trabeculodysgenesis; (older): Raised episcleral venous pressure from AV communication in episcleral hemangioma",
"Surgery risk: High risk of <b>choroidal effusion and suprachoroidal hemorrhage</b> (reduced IOP → uveal expansion)",
]:
story.append(b(item))
story.append(h2("12.3 Plateau Iris Syndrome"))
for item in [
"Anteriorly rotated ciliary processes maintain peripheral iris contact with TM despite patent PI",
"Gonioscopy: 'Double hump' sign; angle remains narrow/closes after PI",
"UBM (ultrasound biomicroscopy) is diagnostic",
"Treatment: <b>Argon laser iridoplasty (ALPI)</b> — burns in far periphery shrink iris stroma",
]:
story.append(b(item))
story.append(h2("12.4 Iridocorneal Endothelial (ICE) Syndrome"))
for item in [
"Unilateral, females >males, middle age",
"Corneal endothelial proliferation → membrane over angle → angle closure (PAS)",
"Variants: Essential iris atrophy, Chandler syndrome, Iris nevus (Cogan-Reese) syndrome",
"No treatment cures; GDD usually required for glaucoma",
]:
story.append(b(item))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 13-14 – TRIALS & NEUROPROTECTION
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 13 — KEY CLINICAL TRIALS"))
big_trial_data = [
["Trial", "Full Name", "Key Findings"],
["OHTS", "Ocular Hypertension Treatment Study",
"• OHT: 9.5%→4.4% POAG conversion risk with treatment\n• Thin CCT = strongest single predictor of conversion\n• Validated 5-yr risk prediction model"],
["EMGT", "Early Manifest Glaucoma Trial",
"• MD loss/yr: HTG -1.31, NTG -0.36, PXEG -3.13 dB\n• Each 1 mmHg ↓ → ~10% ↓ progression risk\n• Risk factors: high IOP, pseudoexfoliation, bilateral disease, worse MD, older age"],
["AGIS", "Advanced Glaucoma Intervention Study",
"• IOP consistently <18 mmHg at ALL visits → minimal VF progression\n• ALT first in Blacks; trabeculectomy first in Whites → better outcomes"],
["CNTGS", "Collaborative Normal-Tension Glaucoma Study",
"• 30% IOP reduction reduces NTG progression\n• Even at 'normal' IOP, lowering further helps"],
["EAGLE", "Effectiveness of Early Lens Extraction",
"• Clear lens extraction + IOL > Laser PI in PAC (IOP >29) or PACG\n• More cost-effective and greater efficacy than LPI"],
["LiGHT", "Laser in Glaucoma and Ocular Hypertension",
"• SLT as first-line: non-inferior/superior to drops (2019)\n• 74% in SLT group needed no drops at 3 years\n• Fewer disease progression events in SLT group"],
["CIGTS", "Collaborative Initial Glaucoma Treatment Study",
"• Initial surgery: better IOP control\n• Initial medications: better initial VF and less cataract\n• Long-term outcomes similar"],
]
story.append(make_table(big_trial_data, col_widths=[2*cm, 5*cm, 9.5*cm]))
story.append(sp(8))
story.append(h1("SECTION 14 — NEUROPROTECTION & FUTURE"))
story.append(h2("Current Status"))
story.append(p("<b>IOP reduction</b> remains the ONLY proven neuroprotective strategy in glaucoma. All other approaches are experimental."))
np_data = [
["Agent/Strategy", "Evidence", "Status"],
["IOP reduction (all modalities)", "Proven in multiple RCTs", "Current standard of care"],
["Brimonidine (alpha-2 agonist)", "Activates survival pathways; some clinical evidence", "Used clinically (NTG)"],
["Memantine (NMDA antagonist)", "Studied in large RCT — NEGATIVE result", "Not recommended"],
["Ginkgo biloba", "Some small studies, inconclusive", "Not recommended"],
["Rho-kinase inhibitors (Netarsudil)", "Novel TM + episcleral mechanism", "FDA-approved 2017"],
["Gene therapy", "Ongoing trials (MYOC, OPTN)", "Experimental"],
["Stem cell therapy", "Preclinical/early trials", "Experimental"],
["Tau/Amyloid-beta targeting", "RGC death overlap with neurodegenerative disease", "Research phase"],
]
story.append(make_table(np_data, col_widths=[5*cm, 6*cm, 5.5*cm]))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 15-16 – MNEMONICS & HIGH-YIELD SUMMARY
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(h1("SECTION 15 — MNEMONICS"))
mnem_data = [
["Mnemonic", "Stands For", "Meaning"],
["ISNT", "I-S-N-T", "Normal NRR order: Inferior > Superior > Nasal > Temporal\n(Violation = suspect glaucoma)"],
["PALE FISH", "PGA side effects",
"Periorbital fat atrophy | Arterial BP (minor) | Lash hypertrichosis\nEyelid darkening | F (uveitis, rare) | Iris color change\nSuperficial punctate keratitis | Hyperemia (conjunctival)"],
["FLASH", "PACG risk factors", "Female | Lens (hyperopia, thick) | Age (older)\nShallow AC | Heredity (family history)"],
["Top CAP MO", "AACG management sequence",
"Topicals → CAI (acetazolamide) → Prone/pressure recheck\nMannitol (if refractory) → Operative/Laser PI (definitive)"],
["BEJING rule\n(pigmentary)", "Features of pigmentary glaucoma",
"B: Krukenberg spindle on cornea\nE: Exercise/exertion raises IOP\nJ: Young myopic males\nI: Iris transillumination defects\nN: Normal-appearing (open) angle initially\nG: Glaucoma (pigmentary)"],
]
story.append(make_table(mnem_data, col_widths=[2.8*cm, 3.5*cm, 10.2*cm]))
story.append(sp(8))
story.append(h1("SECTION 16 — 20 HIGH-YIELD EXAM POINTS"))
story.append(tip("Read these the morning of your exam — 24 June 2026", "EXAM DAY QUICK REVIEW"))
hiyield = [
"1. <b>IOP normal range: 10–21 mmHg</b>; diurnal variation 3–5 mmHg (peaks morning)",
"2. <b>CCT</b> is the strongest single predictor of OHT → POAG conversion (OHTS)",
"3. <b>ISNT rule violation</b> = suspect glaucoma; vertical C/D asymmetry >0.2 = significant",
"4. <b>Disc hemorrhage</b> = risk factor for progression; more common in NTG; usually inferotemporal",
"5. <b>NTG:</b> 50% DON'T progress without treatment — demonstrate progression before treating",
"6. <b>NTG neuroimaging</b> if: colour vision loss, VA loss disproportionate to cupping, rapid progression at normal IOP, rim pallor",
"7. <b>AACG precipitants:</b> dim light, reading, topical mydriatics, systemic anticholinergics, topiramate",
"8. <b>Topiramate angle-closure:</b> BILATERAL; NO PI; NO CAIs; use cycloplegia (atropine) + stop drug",
"9. <b>Prostaglandins:</b> once daily (at night), most potent (~25–35% IOP reduction), uveoscleral outflow",
"10. <b>Pilocarpine CI</b> in aphakic/pseudophakic pupillary block; caution with retinal tears/RD risk",
"11. <b>LiGHT Trial:</b> SLT is first-line treatment — 74% needed no drops at 3 years",
"12. <b>EAGLE Study:</b> Clear lens extraction > LPI in PAC (IOP >29) or PACG",
"13. <b>Trabeculectomy:</b> Kelly punch for sclerostomy; peripheral iridectomy; bleb is endpoint; releasable sutures",
"14. <b>MMC > 5-FU</b> in potency; blebitis risk up to 5%/yr with MMC; lifelong endophthalmitis risk",
"15. <b>Congenital glaucoma Rx: SURGERY first</b> (goniotomy if clear cornea / trabeculotomy if cloudy); Haab's striae = horizontal breaks in Descemet's",
"16. <b>Pseudoexfoliation = worst EMGT prognosis</b> (−3.13 dB/yr); poor pupil dilation; weak zonules",
"17. <b>Angle recession glaucoma:</b> Delayed presentation decades after blunt trauma; always do gonioscopy post-trauma",
"18. <b>Malignant glaucoma:</b> Shallow AC + high IOP + PATENT PI; treat with cycloplegia first (atropine)",
"19. <b>Ahmed valve</b> has flow-restricting valve; <b>Baerveldt</b> = no valve, larger plate, better long-term IOP",
"20. <b>Brimonidine CI in infants/neonates:</b> Crosses BBB → CNS depression, apnea, bradycardia",
]
for item in hiyield:
story.append(Paragraph(item, S_BULLET))
story.append(sp(2))
story.append(sp(12))
story.append(hr())
story.append(Paragraph(
"Compiled from: Kanski's Clinical Ophthalmology: A Systematic Approach 10th Edition | "
"Wills Eye Manual | Katzung's Basic & Clinical Pharmacology 16th Edition | "
"Goldman-Cecil Medicine | Goodman & Gilman's Pharmacological Basis of Therapeutics",
S_FOOTER))
story.append(Paragraph(f"Generated: {datetime.date.today().strftime('%d %B %Y')} | For educational use only", S_FOOTER))
# ── Build ────────────────────────────────────────────────────────────────────
doc.build(story,
onFirstPage=on_first_page,
onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/glaucoma-study-guide && python3 build_pdf.py 2>&1
ls -lh /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.pdf
Glaucoma Study Guide PG2
PDF Document · PDF
| Feature | Details |
|---|---|
| Cover page | Navy/teal branded with exam date and source list |
| 16 sections | All content from the study guide |
| Colour-coded headers | Navy section headers, teal sub-headings for easy navigation |
| Tables throughout | Drug class table, trial table, Shaffer grading, disc subtypes, laser procedures, AACG management steps, MIGS, GDD devices |
| Highlighted tip boxes | Key mnemonics, exam alerts, and critical rules (ISNT, OHTS, EAGLE, LiGHT) |
| Running header/footer | Every page shows "Glaucoma Study Guide |
| Section 16 (exam-day) | 20 high-yield bullet points to read the morning of 24 June |
It is not downloadable make it in pdf form
which pandoc && pandoc --version | head -1; which wkhtmltopdf; python3 -c "import weasyprint; print('weasyprint ok')" 2>/dev/null; ls -la /home/daytona/workspace/glaucoma-study-guide/
pandoc --list-output-formats | grep -i pdf; pdflatex --version | head -1 2>/dev/null; xelatex --version | head -1 2>/dev/null; lualatex --version | head -1 2>/dev/null
pandoc --list-output-formats; python3 -c "import weasyprint; print('weasyprint ok')" 2>&1; python3 -c "from xhtml2pdf import pisa; print('xhtml2pdf ok')" 2>&1
pandoc --pdf-engine=typst --version 2>&1 | head -3; which typst 2>/dev/null; pandoc -t pdf --list-extensions 2>&1 | head -5
python3 -c "from fpdf import FPDF; print('fpdf2 ok')" 2>&1; python3 -c "import fpdf; print(fpdf.__version__)" 2>&1
# Try pandoc HTML -> PDF via context (ConTeXt) which context 2>/dev/null || echo "no context" # Try generating HTML first then converting python3 -c " from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 c = canvas.Canvas('/tmp/test_rl.pdf', pagesize=A4) c.drawString(100, 700, 'Test PDF') c.save() print('reportlab canvas works') " 2>&1 # Verify existing PDF is a real PDF head -c 8 /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.pdf | xxd
python3 -c " with open('/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.pdf','rb') as f: header = f.read(8) print('Header bytes:', header) print('Is PDF:', header.startswith(b'%PDF')) "
cp "/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.pdf" "/home/daytona/workspace/glaucoma-study-guide/glaucoma_study_guide.pdf" ls -lh /home/daytona/workspace/glaucoma-study-guide/glaucoma_study_guide.pdf # Also check page count python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/glaucoma-study-guide/glaucoma_study_guide.pdf') print(f'Pages: {len(r.pages)}') print(f'Title: {r.metadata.title}') "
glaucoma study guide
PDF Document · PDF
/home/daytona/workspace/glaucoma-study-guide/glaucoma_study_guide.pdfYes facing issue
ls /home/daytona/skills/docx/scripts/office/ && node --version && npm list -g docx 2>/dev/null | head -3
~/glaucoma-study-guide/build_docx.js
"use strict";
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, Header, Footer, TabStopType, TabStopPosition,
PageBreak, TableOfContents
} = require("docx");
const fs = require("fs");
const OUT = "/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx";
// ─── Colours ────────────────────────────────────────────────────────────────
const NAVY = "1A3A5C";
const TEAL = "1A7A7A";
const GOLD = "D4820A";
const LBLUE = "DCE8F5";
const YELLOW = "FFF8E1";
const WHITE = "FFFFFF";
const RED = "C0392B";
// ─── Helpers ─────────────────────────────────────────────────────────────────
function h1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 240, after: 120 },
shading: { type: ShadingType.SOLID, color: NAVY, fill: NAVY },
children: [new TextRun({ text, bold: true, color: WHITE, size: 28, font: "Calibri" })]
});
}
function h2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 160, after: 80 },
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: TEAL } },
children: [new TextRun({ text, bold: true, color: NAVY, size: 24, font: "Calibri" })]
});
}
function h3(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_3,
spacing: { before: 120, after: 60 },
children: [new TextRun({ text, bold: true, color: TEAL, size: 22, font: "Calibri" })]
});
}
function p(runs) {
if (typeof runs === "string") {
runs = [new TextRun({ text: runs, size: 20, font: "Calibri" })];
}
return new Paragraph({ spacing: { after: 80 }, children: runs });
}
function bullet(text, level = 0) {
const runs = [];
// Handle **bold** markers
const parts = text.split(/(\*\*[^*]+\*\*)/g);
for (const part of parts) {
if (part.startsWith("**") && part.endsWith("**")) {
runs.push(new TextRun({ text: part.slice(2, -2), bold: true, size: 20, font: "Calibri" }));
} else if (part) {
runs.push(new TextRun({ text: part, size: 20, font: "Calibri" }));
}
}
return new Paragraph({
bullet: { level },
spacing: { after: 60 },
children: runs
});
}
function numbered(text, num) {
const runs = [];
const parts = text.split(/(\*\*[^*]+\*\*)/g);
for (const part of parts) {
if (part.startsWith("**") && part.endsWith("**")) {
runs.push(new TextRun({ text: part.slice(2, -2), bold: true, size: 20, font: "Calibri" }));
} else if (part) {
runs.push(new TextRun({ text: part, size: 20, font: "Calibri" }));
}
}
return new Paragraph({
numbering: { reference: "num-list", level: 0 },
spacing: { after: 60 },
children: runs
});
}
function tip(label, text) {
return new Paragraph({
spacing: { before: 120, after: 120 },
shading: { type: ShadingType.SOLID, color: YELLOW, fill: YELLOW },
border: {
left: { style: BorderStyle.THICK, size: 12, color: GOLD }
},
children: [
new TextRun({ text: `⚑ ${label}: `, bold: true, color: GOLD, size: 20, font: "Calibri" }),
new TextRun({ text, size: 20, font: "Calibri" })
]
});
}
function spacer() {
return new Paragraph({ spacing: { after: 120 }, children: [new TextRun("")] });
}
function pageBreak() {
return new Paragraph({ children: [new TextRun({ break: 1 })] });
}
// ─── Table builder ────────────────────────────────────────────────────────────
function makeTable(rows, colWidths) {
const tableRows = rows.map((row, rIdx) => {
const cells = row.map((cell, cIdx) => {
const isHeader = rIdx === 0;
const cellText = String(cell);
const lines = cellText.split("\n");
const cellParas = lines.map(line => {
const runs = [];
const parts = line.split(/(\*\*[^*]+\*\*)/g);
for (const part of parts) {
if (part.startsWith("**") && part.endsWith("**")) {
runs.push(new TextRun({ text: part.slice(2, -2), bold: true, color: isHeader ? WHITE : "000000", size: isHeader ? 19 : 18, font: "Calibri" }));
} else if (part) {
runs.push(new TextRun({ text: part, bold: isHeader, color: isHeader ? WHITE : "2C3E50", size: isHeader ? 19 : 18, font: "Calibri" }));
}
}
return new Paragraph({
spacing: { after: 40 },
children: runs.length ? runs : [new TextRun({ text: "", size: 18 })]
});
});
return new TableCell({
shading: isHeader
? { type: ShadingType.SOLID, color: NAVY, fill: NAVY }
: rIdx % 2 === 0
? { type: ShadingType.SOLID, color: LBLUE, fill: LBLUE }
: { type: ShadingType.SOLID, color: WHITE, fill: WHITE },
verticalAlign: VerticalAlign.TOP,
width: colWidths ? { size: colWidths[cIdx], type: WidthType.DXA } : undefined,
children: cellParas,
margins: { top: 80, bottom: 80, left: 100, right: 100 }
});
});
return new TableRow({ children: cells });
});
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: tableRows,
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
left: { style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
right: { style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
insideH:{ style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
insideV:{ style: BorderStyle.SINGLE, size: 4, color: "B0C4DE" },
}
});
}
// ─── Cover page ────────────────────────────────────────────────────────────
function coverPage() {
return [
spacer(), spacer(), spacer(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 80 },
shading: { type: ShadingType.SOLID, color: NAVY, fill: NAVY },
children: [new TextRun({ text: "GLAUCOMA", bold: true, color: WHITE, size: 72, font: "Calibri" })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 80 },
shading: { type: ShadingType.SOLID, color: NAVY, fill: NAVY },
children: [new TextRun({ text: "COMPREHENSIVE STUDY GUIDE", bold: true, color: TEAL, size: 32, font: "Calibri" })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 60 },
shading: { type: ShadingType.SOLID, color: NAVY, fill: NAVY },
children: [new TextRun({ text: "Ophthalmology Postgraduate — Year 2", color: "A8C6E0", size: 24, font: "Calibri" })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 400 },
shading: { type: ShadingType.SOLID, color: NAVY, fill: NAVY },
children: [new TextRun({ text: "Exam Date: 24 June 2026", bold: true, color: GOLD, size: 24, font: "Calibri" })]
}),
makeTable([
["Classification\n& Pathophysiology", "Pharmacology\n& Mechanisms", "Key Clinical\nTrials", "Mnemonics\n& High-Yield"],
["16 Sections", "All drug classes\nwith side effects", "OHTS · EMGT · AGIS\nEAGLE · LiGHT", "ISNT · PALE FISH\nFLASH · Top CAP MO"]
]),
spacer(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 60 },
children: [new TextRun({ text: "Sources: Kanski's Clinical Ophthalmology 10e | Wills Eye Manual | Katzung's Pharmacology 16e | Goldman-Cecil Medicine", color: "7FAABF", size: 16, font: "Calibri" })]
}),
pageBreak()
];
}
// ════════════════════════════════════════════════════════════════════════════
// BUILD CONTENT
// ════════════════════════════════════════════════════════════════════════════
const children = [];
// Cover
children.push(...coverPage());
// ── SECTION 1 ────────────────────────────────────────────────────────────────
children.push(h1("SECTION 1 — DEFINITION & OVERVIEW"));
children.push(p([new TextRun({ text: "Glaucoma", bold: true, size: 20, font: "Calibri" }), new TextRun({ text: " is a group of conditions sharing a common ", size: 20, font: "Calibri" }), new TextRun({ text: "chronic progressive optic neuropathy", bold: true, size: 20, font: "Calibri" }), new TextRun({ text: " characterised by:", size: 20, font: "Calibri" })]));
children.push(bullet("Characteristic morphological changes at the optic nerve head (ONH) and RNFL"));
children.push(bullet("Progressive **retinal ganglion cell (RGC) death**"));
children.push(bullet("Associated visual field loss"));
children.push(bullet("**IOP is the key modifiable risk factor** (but not the only one)"));
children.push(spacer());
children.push(tip("GOAL", "Slow the rate of progression throughout a patient's lifetime to maintain visual function and quality of life at a sustainable cost."));
// ── SECTION 2 ────────────────────────────────────────────────────────────────
children.push(h1("SECTION 2 — CLASSIFICATION"));
children.push(makeTable([
["Type", "Open-Angle", "Angle-Closure"],
["Primary", "POAG, NTG, OHT", "Acute PACG, Chronic PACG, PACS"],
["Congenital/Developmental", "Primary Congenital Glaucoma (PCG)\nCYP1B1 mutations", "Secondary (Sturge-Weber, NF1)"],
["Secondary Open-Angle", "Pseudoexfoliation, Pigmentary, Steroid-induced, Inflammatory, Angle recession", "—"],
["Secondary Angle-Closure", "—", "Neovascular, Phacomorphic, Phacolytic, Malignant (ciliolenticular block)"]
]));
children.push(spacer());
children.push(h2("Epidemiology"));
children.push(bullet("Affects **2–3% of people over 40 years**; up to 50% undiagnosed"));
children.push(bullet("**2nd leading cause of blindness** worldwide"));
children.push(bullet("POAG: Most common in White, Hispanic, **Black** individuals (prevalence ~16% in Black >70 yrs)"));
children.push(bullet("PACG: Up to **50% of cases worldwide**; especially **Asian descent**"));
children.push(bullet("NTG: More common in Japanese populations; females affected more"));
// ── SECTION 3 ────────────────────────────────────────────────────────────────
children.push(h1("SECTION 3 — AQUEOUS HUMOR DYNAMICS & IOP"));
children.push(h2("Aqueous Production"));
children.push(p("Produced by the ciliary body non-pigmented epithelium via:"));
children.push(bullet("**Active secretion** (Na+/K+ ATPase — dominant pathway)"));
children.push(bullet("Ultrafiltration"));
children.push(bullet("Simple diffusion"));
children.push(h2("Outflow Pathways"));
children.push(makeTable([
["Pathway", "Route", "% Total Outflow"],
["Conventional (Trabecular)", "TM → Schlemm's canal → aqueous veins → episcleral veins", "~80–85%"],
["Uveoscleral (Non-conventional)", "AC → ciliary muscle → suprachoroidal space → sclera", "~15–20%"]
]));
children.push(spacer());
children.push(h2("Normal IOP"));
children.push(bullet("Normal range: **10–21 mmHg** (mean ~16 mmHg, SD ~3 mmHg)"));
children.push(bullet("Diurnal variation: **3–5 mmHg** (peaks early morning)"));
children.push(bullet("~50% of POAG patients have **normal IOP at any single screening**"));
children.push(tip("OHTS TRIAL", "Untreated OHT: 9.5% cumulative POAG conversion at 5 yrs. Treatment reduces to 4.4%. Thin CCT = STRONGEST single predictor of conversion."));
// ── SECTION 4 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 4 — PRIMARY OPEN-ANGLE GLAUCOMA (POAG)"));
children.push(h2("Definition"));
children.push(p("Chronic, progressive optic neuropathy of adult onset with open anterior chamber angle and no secondary cause."));
children.push(h2("Risk Factors"));
children.push(makeTable([
["Risk Factor", "Details"],
["**Raised IOP**", "Most important modifiable risk factor"],
["**Thin CCT**", "Strongest predictor in OHTS; each 40 μm thinner → ~3× increased risk"],
["Black African descent", "Higher prevalence, earlier onset, faster progression"],
["Age", "Prevalence rises sharply after 60 years"],
["Family history", "~10× increased risk in 1st-degree relatives"],
["High myopia", "Optic disc more susceptible to IOP damage"],
["Pseudoexfoliation", "Strongest identifiable secondary risk factor"],
["Low systemic BP / OSA", "Reduced ocular perfusion pressure"]
]));
children.push(spacer());
children.push(h2("ISNT Rule"));
children.push(tip("ISNT RULE", "Normal NRR thickness order: Inferior > Superior > Nasal > Temporal. ANY violation = suspect glaucoma."));
children.push(h2("Optic Disc Signs"));
children.push(bullet("**C/D ratio increase** — vertical C/D ≥0.7 suspicious; asymmetry >0.2 between eyes significant"));
children.push(bullet("**Notching of NRR** — most commonly inferotemporal → corresponds to arcuate scotoma"));
children.push(bullet("**RNFL defects** — wedge-shaped nerve fibre layer dropout (red-free photography)"));
children.push(bullet("**Disc haemorrhages** — flame-shaped at disc margin, inferotemporal; risk factor for progression; more common in NTG"));
children.push(bullet("**Beta-zone PPA** (peripapillary atrophy) — correlates with RNFL loss"));
children.push(bullet("**Pallor disproportionate to cupping** — suspect non-glaucomatous optic neuropathy"));
children.push(h2("Morphological Subtypes of Glaucomatous Disc"));
children.push(makeTable([
["Type", "Appearance", "Association"],
["Focal ischaemic", "Localised sup/inf notching", "Localised VF defects; early fixation threat"],
["Myopic disc", "Tilted/oblique + temporal crescent PPA", "Dense sup/inf scotomas; young males"],
["Sclerotic", "Shallow saucerized cup, sloping NRR", "Older patients; systemic vascular disease"],
["Concentrically enlarging", "Uniform NRR thinning (serial monitoring)", "Diffuse VF loss; high IOP at presentation"]
]));
children.push(spacer());
children.push(h2("Visual Field Progression (Chronological)"));
children.push(bullet("1. Isolated paracentral scotoma (within 10° of fixation)"));
children.push(bullet("2. Nasal step (respects horizontal meridian)"));
children.push(bullet("3. Bjerrum/Arcuate scotoma (10–20° from fixation — Bjerrum's area)"));
children.push(bullet("4. Double arcuate (ring) scotoma"));
children.push(bullet("5. Temporal island + Central island (advanced)"));
children.push(bullet("6. Total field loss"));
children.push(tip("PERIMETRY", "HFA 24-2: standard glaucoma monitoring. 10-2: advanced disease / central island monitoring. GHT 'Outside normal limits' = significant."));
children.push(h2("Key POAG Trials"));
children.push(makeTable([
["Trial", "Key Finding"],
["OHTS", "OHT: thin CCT = strongest predictor; treatment reduces 5-yr conversion 9.5%→4.4%"],
["EMGT", "MD loss/yr: HTG -1.31, NTG -0.36, PXEG -3.13 dB; each 1 mmHg ↓ ≈ 10% less progression risk"],
["AGIS", "IOP consistently <18 mmHg at ALL visits → minimal VF progression"],
["LiGHT (2019)", "SLT as first-line: 74% needed no drops at 3 years; may prevent more progression events"]
]));
// ── SECTION 5 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 5 — NORMAL TENSION GLAUCOMA (NTG)"));
children.push(p("NTG = glaucomatous ONH and VF damage with IOP consistently ≤21 mmHg. Also called Low-Tension Glaucoma (LTG)."));
children.push(h2("Pathogenesis — Beyond IOP"));
children.push(bullet("Vascular insufficiency — impaired ONH blood flow"));
children.push(bullet("**Nocturnal systemic hypotension** (BP dip at night) — strongly implicated"));
children.push(bullet("Systemic vasospasm: migraine, Raynaud's phenomenon"));
children.push(bullet("Obstructive sleep apnea"));
children.push(bullet("Autoimmune mechanisms; OPA1 gene mutation overlap"));
children.push(h2("NTG vs POAG — Key Differences"));
children.push(makeTable([
["Feature", "NTG", "POAG"],
["IOP", "≤21 mmHg", "Often elevated (but not always)"],
["Disc haemorrhages", "MORE common", "Less common"],
["VF defects", "Deeper, steeper, closer to fixation", "More peripheral initially"],
["Untreated progression", "~50% stable at 5–7 yrs", "More likely to progress"],
["Demographics", "Japanese; females", "Highest in Black populations"]
]));
children.push(spacer());
children.push(tip("NEUROIMAGING RULE", "Refer for MRI if: (1) VA loss disproportionate to cupping, (2) Colour vision loss on Ishihara, (3) VF loss NOT consistent with RNFL dropout, (4) Pallor of neuroretinal rim, (5) Rapid progression despite normal IOP."));
children.push(h2("NTG-Specific Investigations"));
children.push(bullet("**24-hour ambulatory BP monitoring** — exclude nocturnal hypotension"));
children.push(bullet("Carotid duplex imaging"));
children.push(bullet("Blood tests: B12, folate, FBC, ESR/CRP, syphilis serology, Lyme, ACE level, protein electrophoresis, autoantibodies"));
children.push(h2("Treatment"));
children.push(bullet("**Demonstrate progression before treating** — 50% stable without treatment (CNTGS)"));
children.push(bullet("**Prostaglandins** — usual first choice"));
children.push(bullet("**Brimonidine** — possible neuroprotective effect (activates RGC survival pathways)"));
children.push(bullet("**Betaxolol** (selective β1) — preferred beta-blocker; less nocturnal BP dip risk"));
children.push(bullet("CNTGS: 30% IOP reduction reduces NTG progression"));
// ── SECTION 6 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 6 — PRIMARY ANGLE-CLOSURE GLAUCOMA (PACG)"));
children.push(h2("Spectrum of Disease"));
children.push(makeTable([
["Stage", "Definition"],
["PACS (Suspect)", "Narrow angle; no PAS; normal IOP; no ONH/VF damage"],
["PAC", "Narrow angle + IOP >21 mmHg or PAS; no ONH/VF damage"],
["PACG", "Narrow angle + glaucomatous ONH and/or VF damage"],
["Acute PACG (AACG)", "Sudden symptomatic attack with acutely raised IOP"]
]));
children.push(spacer());
children.push(h2("Risk Factors"));
children.push(tip("MNEMONIC: FLASH", "Female sex | Lens (hyperopia, thick) | Age (older) | Shallow AC | Heredity/family history"));
children.push(p("Precipitants: dim illumination, reading, topical mydriatics, systemic anticholinergics (antihistamines, antidepressants), topiramate/sulfonamides"));
children.push(h2("AACG — Clinical Features"));
children.push(h3("Symptoms"));
children.push(bullet("Severe ocular pain + frontal headache"));
children.push(bullet("Blurred vision + **coloured halos** around lights (corneal oedema)"));
children.push(bullet("Nausea and vomiting"));
children.push(h3("Signs (Critical Triad)"));
children.push(tip("CRITICAL SIGNS", "Closed angle + Acutely raised IOP + Microcystic corneal oedema. Also: fixed mid-dilated pupil (4–6 mm, vertically oval), ciliary injection, shallow AC."));
children.push(h2("AACG Emergency Management"));
children.push(tip("MNEMONIC: Top CAP MO", "Topicals → CAI (acetazolamide) → Pressure recheck → Mannitol (if refractory) → Operative/Laser PI (definitive)"));
children.push(makeTable([
["Step", "Action", "Notes"],
["1", "Topical medications (stat)", "Timolol 0.5% + Apraclonidine 1% (or Brimonidine 0.2%) + Dorzolamide 2%. Pilocarpine 1–2% (now controversial; omitted by some)"],
["2", "Systemic CAI", "Acetazolamide 500 mg IV or PO. CI: sulfonamide allergy and sulfonamide-induced closure"],
["3", "Recheck IOP", "After 1 hour; repeat topicals if needed"],
["4", "Osmotic agent (if refractory)", "Mannitol 1–2 g/kg IV over 45 min. CI: CHF, renal disease, intracranial bleeding"],
["5", "Definitive", "YAG Laser Peripheral Iridotomy (PI) once cornea clears (1–5 days). Fellow eye: prophylactic PI (40–80% chance of AACG in 5–10 years)"]
]));
children.push(spacer());
children.push(h2("Special Scenarios"));
children.push(makeTable([
["Scenario", "Management"],
["Topiramate/sulfonamide-induced", "Bilateral closure. STOP drug. Cycloplegia (atropine 1%). NO CAIs. NO PI. IV steroids if severe supraciliary effusion"],
["Phacomorphic glaucoma", "Medical IOP control first → lens extraction (definitive)"],
["Aphakic/pseudophakic pupillary block", "Do NOT use pilocarpine. Use mydriatics + cycloplegics"],
["Plateau iris (after patent PI)", "Persistent narrow angle → Argon Laser Iridoplasty (ALPI)"]
]));
children.push(tip("EAGLE TRIAL", "Clear lens extraction is MORE effective and cost-effective than laser PI in PAC (IOP >29 mmHg) or PACG."));
// ── SECTION 7 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 7 — SECONDARY GLAUCOMAS"));
children.push(h2("7.1 Pseudoexfoliation Glaucoma (PXG)"));
children.push(bullet("**Most common identifiable cause** of open-angle glaucoma worldwide"));
children.push(bullet("Classic lens sign: central disc + peripheral ring with clear zone between (anterior lens capsule)"));
children.push(bullet("**Worst natural history** — EMGT: −3.13 dB/yr; marked IOP fluctuations"));
children.push(bullet("Weak zonules → risk of lens subluxation during phacoemulsification; iris hooks often needed"));
children.push(bullet("Poor pupil dilation; good response to prostaglandins"));
children.push(h2("7.2 Pigmentary Glaucoma"));
children.push(bullet("Mechanism: **Reverse pupillary block** — iris rubs against zonule packets → pigment released into AC"));
children.push(bullet("**Krukenberg spindle** on corneal endothelium (vertical, spindle-shaped brown pigment)"));
children.push(bullet("Iris: radial spoke-like transillumination defects; TM: dense brown hyperpigmentation"));
children.push(bullet("Typical patient: young **myopic male**"));
children.push(bullet("Exercise/dilation → pigment release → IOP spikes; pilocarpine helps (reverses reverse pupillary block)"));
children.push(h2("7.3 Neovascular Glaucoma (NVG)"));
children.push(bullet("Causes: Proliferative DM > CRVO > Ocular ischaemic syndrome → retinal ischaemia → VEGF release"));
children.push(bullet("**Rubeosis iridis** → fibrovascular membrane → PAS → angle closure"));
children.push(bullet("Treatment: Anti-VEGF (immediate), PRP, GDD. Trabeculectomy rarely successful."));
children.push(h2("7.4 Steroid-Induced Glaucoma"));
children.push(bullet("Mechanism: Steroids → ↑ GAG accumulation in TM → ↓ outflow facility"));
children.push(bullet("Route potency: **Topical > periocular > systemic**; inhaled steroids can also raise IOP"));
children.push(bullet("IOP rise typically within **2–6 weeks** of starting steroids"));
children.push(bullet("Risk factors: POAG/family history, myopia, diabetes, connective tissue disease"));
children.push(h2("7.5 Phacolytic Glaucoma"));
children.push(bullet("**Hypermature cataract** → lens proteins leak through intact capsule → macrophages clog TM"));
children.push(bullet("Acute onset: severe inflammation, white flare in AC, high IOP"));
children.push(bullet("Treatment: Medical (steroids + IOP lowering) → **lens extraction** (definitive)"));
children.push(h2("7.6 Angle Recession Glaucoma"));
children.push(bullet("Blunt trauma → tear in ciliary body face → TM damage → late-onset open-angle glaucoma"));
children.push(bullet("Can present **decades** after the original injury"));
children.push(bullet("Always perform gonioscopy after blunt ocular trauma"));
children.push(h2("7.7 Malignant Glaucoma (Ciliolenticular Block)"));
children.push(tip("KEY DIFFERENTIATOR", "Shallow AC + high IOP + PATENT PI = malignant glaucoma. Patent PI distinguishes from pupillary block."));
children.push(bullet("Aqueous misdirected into vitreous → pushes lens-iris diaphragm anteriorly"));
children.push(bullet("Treatment: Cycloplegia (atropine 1% QID), hyperosmotic agents, YAG vitreolysis, pars plana vitrectomy"));
// ── SECTION 8 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 8 — GLAUCOMA INVESTIGATIONS"));
children.push(h2("8.1 Tonometry"));
children.push(makeTable([
["Method", "Principle", "Notes"],
["**Goldmann Applanation (GAT)**", "Force to flatten 3.06 mm diameter", "Gold standard; affected by CCT and corneal rigidity"],
["Non-contact (NCT/air puff)", "Air puff flattens cornea", "Screening only; less accurate"],
["Schiotz indentation", "Weight plunger indents cornea", "Old method; affected by axial length"],
["Perkins", "Same as GAT", "Portable; supine/children/OR"],
["Pascal DCT", "Contour matching", "Less CCT-dependent"],
["iCare (rebound)", "Rebound principle — no anaesthesia", "Excellent for children; irregular corneas"]
]));
children.push(tip("CCT CORRECTION", "Each 10 μm ABOVE average CCT (~545 μm) → IOP OVERestimated ~0.7 mmHg. Thin cornea = falsely LOW reading; thick cornea = falsely HIGH reading."));
children.push(h2("8.2 Gonioscopy"));
children.push(p("Essential for: Differentiating open vs angle-closure; identifying secondary causes; assessing extent of PAS"));
children.push(h3("Landmarks (anterior to posterior)"));
children.push(bullet("Schwalbe's line (anterior TM border)"));
children.push(bullet("Trabecular meshwork (pigmented posterior TM)"));
children.push(bullet("Scleral spur (white; most posterior TM landmark)"));
children.push(bullet("Ciliary band (most posterior)"));
children.push(bullet("Iris root"));
children.push(h3("Shaffer Grading System"));
children.push(makeTable([
["Grade", "Angle Width", "Closure Risk"],
["4", "35–45°", "Impossible — wide open"],
["3", "25–35°", "Unlikely"],
["2", "20°", "Possible"],
["1", "<10°", "Probable"],
["0", "Closed (0°)", "Closure present"]
]));
children.push(spacer());
children.push(p("**Indentation (dynamic) gonioscopy:** Distinguishes appositional (pushed open) from synechial/PAS closure (cannot be opened)"));
children.push(h2("8.3 Perimetry"));
children.push(makeTable([
["Pattern", "Coverage", "Use"],
["24-2 (Humphrey)", "Central 24° temporal, 30° nasal", "Standard glaucoma monitoring"],
["30-2", "Central 30°", "Alternative; more peripheral coverage"],
["10-2", "Central 10° radius", "Advanced glaucoma; monitoring central island"],
["FF-120", "Central + peripheral", "Neurological field defects"]
]));
children.push(spacer());
children.push(bullet("**Mean Deviation (MD):** Average deviation from normal (dB); negative = worse"));
children.push(bullet("**PSD:** Irregularity of field loss — elevated with focal defects"));
children.push(bullet("**GHT (Glaucoma Hemifield Test):** 'Outside normal limits' = significant"));
children.push(bullet("Reliability: FP >15%, FN >33%, FL >20% = unreliable test"));
children.push(h2("8.4 OCT"));
children.push(bullet("SD-OCT measures RNFL thickness, GCL, macular volume"));
children.push(bullet("**Most sensitive area: Inferotemporal RNFL**"));
children.push(bullet("Structural changes (OCT) precede functional changes (VF) by years"));
children.push(h2("8.5 CCT"));
children.push(p("Measured by ultrasound pachymetry or optical methods (Orbscan/Pentacam). Average ~545 μm. Essential for IOP interpretation and OHT risk stratification."));
children.push(h2("8.6 Disc Lens Correction Factors"));
children.push(makeTable([
["Lens", "Correction Factor"],
["Volk 60D", "×0.88–1.0"],
["Volk 78D", "×1.1"],
["Volk 90D", "×1.3"],
["Goldmann 3-mirror", "×1.27"]
]));
// ── SECTION 9 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 9 — ANTI-GLAUCOMA MEDICATIONS"));
children.push(makeTable([
["Drug Class", "Examples", "Mechanism", "IOP ↓", "Key Side Effects / CI"],
["**Prostaglandin Analogues (PGA)**", "Latanoprost\nBimatoprost\nTravoprost\nTafluprost", "↑ Uveoscleral outflow\n(FP receptor agonist)", "25–35%\n(most potent)", "Iris pigmentation change, eyelash hypertrichosis, periorbital fat atrophy, conjunctival hyperemia, CME (aphakic — caution)"],
["**Beta-Blockers**", "Timolol (non-selective)\nBetaxolol (β1-selective)", "↓ Aqueous production\n(β2-blockade in ciliary body)", "20–30%", "Bradycardia, bronchospasm\nCI: Asthma, COPD, heart block\nBetaxolol: safer in respiratory disease"],
["**Alpha-2 Agonists**", "Brimonidine 0.2%\nApraclonidine 1%", "↓ Aqueous production\n+ ↑ Uveoscleral outflow", "20–25%", "Follicular conjunctivitis (up to 30%), dry mouth, sedation\nCI: Infants/neonates (CNS depression, apnea, bradycardia)"],
["**CAIs (Topical)**", "Dorzolamide\nBrinzolamide", "↓ Aqueous production\n(inhibit CA II/IV in ciliary body)", "15–20%", "Stinging, metallic taste, corneal decompensation (endothelial disease)"],
["**CAIs (Oral)**", "Acetazolamide\nMethazolamide", "Same as topical", "15–20%", "Paresthesias, GI upset, renal stones, hypokalemia, aplastic anaemia\nCI: Sulfonamide allergy"],
["**Miotics (Cholinergics)**", "Pilocarpine 1–4%\nCarbachol", "↑ Conventional outflow\n(TM tensioning via ciliary muscle)", "20–25%", "Brow ache, accommodative spasm, miosis (poor night driving), RD risk\nCI: Aphakic/pseudophakic pupillary block"],
["**Rho-kinase Inhibitors**", "Netarsudil", "↑ Conventional outflow\n↓ Episcleral venous pressure", "15–20%", "Conjunctival hyperemia, corneal verticillata, subconjunctival haemorrhage"]
]));
children.push(spacer());
children.push(h2("Key Pharmacology Points"));
children.push(bullet("**First-line:** Prostaglandin analogue (once daily at night, highest efficacy)"));
children.push(bullet("**Two drops:** Wait **5 minutes** between instillations to prevent washout"));
children.push(bullet("**Brimonidine:** Possible neuroprotective effect — preferred in NTG"));
children.push(bullet("**Betaxolol:** β1-selective — preferred beta-blocker in respiratory disease; less nocturnal BP dip"));
children.push(bullet("**Acetazolamide:** Used acutely in AACG; CI in sulfonamide allergy"));
children.push(bullet("**Pilocarpine CI** in aphakic/pseudophakic pupillary block"));
children.push(tip("MNEMONIC: PALE FISH", "PGA side effects: Periorbital fat atrophy | Arterial BP (minor) | Lash hypertrichosis | Eyelid darkening | Fore (uveitis, rare) | Iris colour change | Superficial punctate keratitis | Hyperaemia (conjunctival)"));
// ── SECTION 10 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 10 — LASER PROCEDURES IN GLAUCOMA"));
children.push(makeTable([
["Procedure", "Indication", "Mechanism", "Key Notes"],
["**Laser PI (LPI)**", "PACG, PACS (prophylaxis), post-AACG fellow eye", "Creates full-thickness iris hole → equalises PC/AC pressure → opens angle", "Fellow eye: 40–80% AACG risk in 5–10 yrs without treatment"],
["**SLT**", "POAG (1st/2nd line), OHT, NTG", "Q-switched Nd:YAG 532 nm → selectively targets pigmented TM cells → ↑ trabecular outflow", "Repeatable. LiGHT trial: first-line non-inferior to drops. Effect lasts 2–5 yrs. ~6–8 mmHg IOP reduction"],
["**ALT**", "POAG (older procedure)", "Burns in TM → scarring → opens adjacent areas", "Not reliably repeatable. Replaced by SLT in most centres"],
["**ALPI (Iridoplasty)**", "Plateau iris syndrome; PI-failed PACG", "Far peripheral iris burns → stroma shrinks → mechanically opens angle", "Does NOT create hole through iris"],
["**Cyclodiode**", "Refractory/end-stage glaucoma", "Destroys ciliary body epithelium → ↓ aqueous production", "Last resort. Risk of hypotony, phthisis. Repeatable."],
["**YAG Vitreolysis**", "Malignant glaucoma", "Disrupts anterior vitreous face → redirects aqueous forward", "First non-surgical option after cycloplegia fails"]
]));
children.push(tip("LiGHT TRIAL", "SLT as first-line therapy was non-inferior/superior to drops for POAG/OHT. At 3 years, 74% of SLT group needed no drops. SLT should be offered as first-line option."));
// ── SECTION 11 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 11 — SURGICAL PROCEDURES"));
children.push(h2("11.1 Trabeculectomy — Gold Standard Filtration Surgery"));
children.push(p("Principle: Guarded scleral fistula allows subconjunctival aqueous drainage → bleb formation."));
children.push(h3("Surgical Steps (Kanski's 10e)"));
const trabSteps = [
"Conjunctival flap (fornix-based or limbus-based)",
"Lamellar scleral flap (~50% thickness), 3×3–4 mm, rectangular/trapezoid/triangular",
"Flap dissected anteriorly to clear cornea",
"Paracentesis in temporal peripheral clear cornea",
"Anterior chamber entered along trapdoor base",
"**Deep scleral block excised using Kelly punch** (creates sclerostomy)",
"**Peripheral iridectomy** created (prevents iris prolapse; may be omitted in pseudophakic)",
"Scleral flap sutured — releasable or lysable sutures",
"BSS injected through paracentesis to test fistula patency",
"Conjunctiva/Tenon sutured; irrigation repeated to form bleb",
"Atropine 1% drop; subconjunctival steroid + antibiotic"
];
trabSteps.forEach(s => children.push(bullet(s)));
children.push(h3("Antimetabolites"));
children.push(makeTable([
["Agent", "Potency", "Indication", "Complications"],
["**Mitomycin C (MMC)**", "More potent (alkylating agent)", "High-risk cases: young, Afro-Caribbean, prior surgery/inflammation, aphakia, NVG", "Avascular bleb, hypotony maculopathy, blebitis (up to 5%/yr), **late endophthalmitis**"],
["**5-Fluorouracil (5-FU)**", "Less potent (antimetabolite)", "Moderate risk; intraop or postop subconjunctival injections", "Persistent corneal epithelial defect, bleb leakage"]
]));
children.push(h3("Complications"));
children.push(bullet("**Early:** Hypotony, flat AC, choroidal detachment, hyphema, wound leak, infection"));
children.push(bullet("**Late:** Bleb failure, bleb leak, **blebitis** (up to 5%/yr with MMC), **late endophthalmitis** (lifelong risk — highest of any glaucoma surgery)"));
children.push(bullet("Malignant glaucoma (especially small hyperopic/PACG eyes)"));
children.push(h2("11.2 Glaucoma Drainage Devices (GDD / Tube Shunts)"));
children.push(makeTable([
["Device", "Valve?", "Key Feature", "Best For"],
["**Ahmed Glaucoma Valve**", "YES (flow restrictor)", "Controls early hypotony", "NVG, uveitis, paediatric, early pressure control"],
["**Baerveldt Implant**", "NO (needs ligation)", "Larger plate (250–350 mm²); better long-term IOP", "Better long-term IOP control after initial ligation period"],
["Molteno", "NO", "Historical; still used in some centres", "Various refractory glaucomas"]
]));
children.push(spacer());
children.push(h2("11.3 MIGS (Minimally Invasive Glaucoma Surgery)"));
children.push(makeTable([
["Category", "Examples", "Notes"],
["TM bypass (ab interno)", "iStent, Hydrus microstent", "Lowest risk; often combined with phacoemulsification"],
["Subconjunctival (ab interno)", "Xen gel stent, PRESERFLO", "Creates subconjunctival bleb; less invasive than trabeculectomy"],
["TM incision", "GATT, Viscocanalostomy", "Opens Schlemm's canal 360°"]
]));
children.push(h2("11.4 Congenital Glaucoma Surgery"));
children.push(bullet("**Goniotomy:** Ab interno incision through TM; requires **clear cornea**"));
children.push(bullet("**Trabeculotomy:** External approach via Schlemm's canal; usable with **cloudy cornea**"));
children.push(bullet("Combined trabeculotomy-trabeculectomy for more severe/refractory cases"));
// ── SECTION 12 ────────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 12 — SPECIAL GLAUCOMAS"));
children.push(h2("12.1 Primary Congenital Glaucoma (PCG)"));
children.push(tip("CLASSIC TRIAD", "Buphthalmos (enlarged eye) + Epiphora (tearing) + Photophobia/Blepharospasm"));
children.push(bullet("Mechanism: **Trabeculodysgenesis** — failure of normal TM development"));
children.push(bullet("**Haab's striae:** Horizontal/oblique breaks in Descemet's membrane — **pathognomonic**"));
children.push(bullet("Presentation: Birth to 3 years (most in first year)"));
children.push(bullet("Genetics: Some AR (CYP1B1 gene mutations)"));
children.push(bullet("**Treatment: SURGICAL is primary** — Goniotomy or Trabeculotomy. Medical therapy is adjunct only."));
children.push(h2("12.2 Sturge-Weber Syndrome"));
children.push(bullet("Sporadic, congenital phacomatosis (encephalotrigeminal angiomatosis)"));
children.push(bullet("Glaucoma ipsilateral to facial haemangioma in **~30%**; 60% develop before age 2 (buphthalmos)"));
children.push(bullet("Mechanisms: Trabeculodysgenesis (infants) OR raised episcleral venous pressure (older patients)"));
children.push(bullet("Surgery risk: High risk of **choroidal effusion and suprachoroidal haemorrhage** (sudden IOP drop → uveal expansion)"));
children.push(h2("12.3 Plateau Iris Syndrome"));
children.push(bullet("Anteriorly rotated ciliary processes keep peripheral iris against TM despite patent PI"));
children.push(bullet("Gonioscopy: 'Double hump' sign — angle remains narrow/closes after PI"));
children.push(bullet("UBM (ultrasound biomicroscopy) is diagnostic"));
children.push(bullet("Treatment: **Argon Laser Iridoplasty (ALPI)**"));
// ── SECTION 13-14 ────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 13 — KEY CLINICAL TRIALS"));
children.push(makeTable([
["Trial", "Full Name", "Key Findings"],
["**OHTS**", "Ocular Hypertension Treatment Study", "OHT: 9.5%→4.4% POAG conversion with treatment. Thin CCT = strongest single predictor. Validated 5-yr risk prediction model."],
["**EMGT**", "Early Manifest Glaucoma Trial", "MD loss/yr: HTG -1.31, NTG -0.36, PXEG -3.13 dB. Each 1 mmHg ↓ → ~10% ↓ progression risk. Risk factors: high IOP, pseudoexfoliation, bilateral disease, worse MD, older age."],
["**AGIS**", "Advanced Glaucoma Intervention Study", "IOP consistently <18 mmHg at ALL visits → minimal VF progression. ALT first in Blacks; trabeculectomy first in Whites → better outcomes."],
["**CNTGS**", "Collaborative Normal-Tension Glaucoma Study", "30% IOP reduction reduces NTG progression. Even at 'normal' IOP, further lowering helps."],
["**EAGLE**", "Effectiveness of Early Lens Extraction", "Clear lens extraction + IOL > Laser PI in PAC (IOP >29 mmHg) or PACG. More cost-effective and greater efficacy."],
["**LiGHT**", "Laser in Glaucoma and Ocular Hypertension", "SLT as first-line: non-inferior/superior to drops (2019). 74% in SLT group needed no drops at 3 years. Fewer disease progression events in SLT group."],
["**CIGTS**", "Collaborative Initial Glaucoma Treatment Study", "Initial surgery: better IOP control. Initial medications: better initial VF. Long-term outcomes similar."]
]));
children.push(spacer());
children.push(h1("SECTION 14 — NEUROPROTECTION & FUTURE"));
children.push(makeTable([
["Agent/Strategy", "Evidence", "Status"],
["**IOP reduction (all modalities)**", "Proven in multiple RCTs", "Current standard of care — ONLY proven neuroprotective strategy"],
["**Brimonidine**", "Activates RGC survival pathways; some clinical evidence", "Used clinically, especially NTG"],
["Memantine", "Large RCT — NEGATIVE result", "Not recommended"],
["Rho-kinase inhibitors (Netarsudil)", "Novel TM + episcleral venous pressure mechanism", "FDA-approved 2017"],
["Gene therapy", "Ongoing trials (MYOC, OPTN)", "Experimental"],
["Stem cell therapy", "Preclinical/early trials", "Experimental"]
]));
// ── SECTION 15-16 ────────────────────────────────────────────────────────────
children.push(pageBreak());
children.push(h1("SECTION 15 — MNEMONICS"));
children.push(makeTable([
["Mnemonic", "Stands For", "Meaning"],
["**ISNT**", "Normal NRR order", "Inferior > Superior > Nasal > Temporal (violation = suspect glaucoma)"],
["**PALE FISH**", "PGA side effects", "Periorbital fat atrophy | Arterial BP | Lash hypertrichosis | Eyelid darkening | Fore (uveitis) | Iris colour change | Superficial keratitis | Hyperaemia"],
["**FLASH**", "PACG risk factors", "Female | Lens (hyperopia) | Age | Shallow AC | Heredity"],
["**Top CAP MO**", "AACG management", "Topicals → CAI (acetazolamide) → Pressure recheck → Mannitol → Operative/Laser PI"]
]));
children.push(spacer());
children.push(h1("SECTION 16 — 20 HIGH-YIELD EXAM POINTS"));
children.push(tip("EXAM DAY", "Read these 20 points the morning of 24 June 2026."));
const hiyield = [
"**IOP normal range: 10–21 mmHg**; diurnal variation 3–5 mmHg (peaks morning)",
"**CCT** is the strongest single predictor of OHT → POAG conversion (OHTS)",
"**ISNT rule violation** = suspect glaucoma; vertical C/D asymmetry >0.2 = significant",
"**Disc haemorrhage** = risk factor for progression; more common in NTG; usually inferotemporal",
"**NTG: 50% DON'T progress** without treatment — demonstrate progression before treating",
"**NTG neuroimaging** if: colour vision loss, VA loss disproportionate to cupping, rapid progression at normal IOP, rim pallor",
"**AACG precipitants:** dim light, reading, topical mydriatics, systemic anticholinergics, topiramate",
"**Topiramate angle-closure: BILATERAL; NO PI; NO CAIs**; use cycloplegia (atropine) + stop drug",
"**Prostaglandins:** once daily (at NIGHT), most potent (~25–35% IOP reduction), ↑ uveoscleral outflow",
"**Pilocarpine CI** in aphakic/pseudophakic pupillary block; caution with retinal tears/RD risk",
"**LiGHT Trial:** SLT is first-line — 74% needed no drops at 3 years",
"**EAGLE Study:** Clear lens extraction > LPI in PAC (IOP >29) or PACG",
"**Trabeculectomy:** Kelly punch for sclerostomy; peripheral iridectomy; releasable sutures; bleb is endpoint",
"**MMC > 5-FU** in potency; blebitis risk up to 5%/yr with MMC; lifelong endophthalmitis risk",
"**Congenital glaucoma Rx: SURGERY first** (goniotomy if clear cornea / trabeculotomy if cloudy); Haab's striae = pathognomonic",
"**Pseudoexfoliation = worst EMGT prognosis** (−3.13 dB/yr); poor pupil dilation; weak zonules",
"**Angle recession glaucoma:** Can present decades after blunt trauma; always do gonioscopy post-trauma",
"**Malignant glaucoma:** Shallow AC + high IOP + PATENT PI; treat with cycloplegia (atropine) first",
"**Ahmed valve** has flow-restricting valve; **Baerveldt** = no valve, larger plate, better long-term IOP control",
"**Brimonidine CI in infants/neonates:** Crosses BBB → CNS depression, apnea, bradycardia"
];
hiyield.forEach((item, i) => children.push(bullet(`${i+1}. ${item}`)));
children.push(spacer());
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
border: { top: { style: BorderStyle.SINGLE, size: 4, color: TEAL } },
spacing: { before: 200, after: 80 },
children: [new TextRun({ text: "Sources: Kanski's Clinical Ophthalmology 10e | Wills Eye Manual | Katzung's Pharmacology 16e | Goldman-Cecil Medicine | Goodman & Gilman's", color: "7F8C8D", size: 16, font: "Calibri" })]
}));
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Generated: 16 June 2026 | For educational use only", color: "7F8C8D", size: 16, font: "Calibri" })]
}));
// ── Build Document ───────────────────────────────────────────────────────────
const doc = new Document({
numbering: {
config: [{
reference: "num-list",
levels: [{
level: 0,
format: "decimal",
text: "%1.",
alignment: AlignmentType.LEFT
}]
}]
},
styles: {
paragraphStyles: [
{
id: "Heading1",
name: "Heading 1",
basedOn: "Normal",
next: "Normal",
run: { size: 28, bold: true, color: WHITE, font: "Calibri" },
paragraph: { spacing: { before: 240, after: 120 } }
}
]
},
sections: [{
properties: {
page: {
margin: { top: 1080, bottom: 1080, left: 1080, right: 1080 }
}
},
headers: {
default: new Header({
children: [new Paragraph({
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: TEAL } },
spacing: { after: 80 },
children: [
new TextRun({ text: "GLAUCOMA STUDY GUIDE | Ophthalmology PG Year 2 | Exam: 24 June 2026", bold: true, color: NAVY, size: 16, font: "Calibri" })
]
})]
})
},
footers: {
default: new Footer({
children: [new Paragraph({
border: { top: { style: BorderStyle.SINGLE, size: 4, color: TEAL } },
alignment: AlignmentType.CENTER,
spacing: { before: 80 },
children: [
new TextRun({ text: "Sources: Kanski's Clinical Ophthalmology 10e | Wills Eye Manual | Katzung Pharmacology 16e — Page ", color: "7F8C8D", size: 16, font: "Calibri" }),
new TextRun({ children: [PageNumber.CURRENT], color: "7F8C8D", size: 16, font: "Calibri" }),
new TextRun({ text: " of ", color: "7F8C8D", size: 16, font: "Calibri" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], color: "7F8C8D", size: 16, font: "Calibri" })
]
})]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync(OUT, buffer);
console.log("DOCX created:", OUT);
}).catch(err => {
console.error("Error:", err);
process.exit(1);
});
cd /home/daytona/workspace/glaucoma-study-guide && node build_docx.js 2>&1
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx 2>&1 && ls -lh /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx
# Quick manual validation — check it's a valid ZIP with Word XML python3 -c " import zipfile, os path = '/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx' size = os.path.getsize(path) print(f'File size: {size/1024:.1f} KB') with zipfile.ZipFile(path) as z: names = z.namelist() print('Contains word/document.xml:', 'word/document.xml' in names) print('Contains [Content_Types].xml:', '[Content_Types].xml' in names) print('Total parts:', len(names)) # Count paragraphs roughly xml = z.read('word/document.xml').decode('utf-8') print('Paragraph count (approx):', xml.count('<w:p ') + xml.count('<w:p>')) "
python3 /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-to pdf /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx --outdir /home/daytona/workspace/glaucoma-study-guide/ 2>&1
# Try a clean output path mkdir -p /home/daytona/workspace/glaucoma-study-guide/out python3 /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-to pdf /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx --outdir /home/daytona/workspace/glaucoma-study-guide/out/ 2>&1 ls -lh /home/daytona/workspace/glaucoma-study-guide/out/ 2>/dev/null
# Try soffice directly with absolute path soffice --headless --convert-to pdf --outdir /tmp/ /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_PG2.docx 2>&1 ls -lh /tmp/Glaucoma_Study_Guide_PG2.pdf 2>/dev/null
cp /tmp/Glaucoma_Study_Guide_PG2.pdf /home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_Final.pdf python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_Final.pdf') print(f'Pages: {len(r.pages)}') import os size = os.path.getsize('/home/daytona/workspace/glaucoma-study-guide/Glaucoma_Study_Guide_Final.pdf') print(f'Size: {size/1024:.1f} KB') # Read first page text snippet print('Page 1 preview:', r.pages[0].extract_text()[:200]) "
Glaucoma Study Guide Final
PDF Document · PDF
Glaucoma Study Guide PG2
Word Document · DOCX
Can you give me long answers that can be asked with marking scheme
| Risk Factor | Significance |
|---|---|
| Raised IOP | Most important modifiable RF |
| Thin CCT | Strongest single predictor (OHTS); underestimates true IOP |
| Black African descent | 16% prevalence in >70 yrs; earlier, faster progression |
| Age | Prevalence rises sharply after 60 |
| Family history | ~10× increased risk in 1st-degree relatives |
| High myopia | More susceptible optic disc |
| Pseudoexfoliation | Strongest identifiable secondary RF |
| OSA, low systemic BP | Reduced ocular perfusion pressure |
| Drug Class | Mechanism | IOP Reduction |
|---|---|---|
| Prostaglandin analogues (1st line) | ↑ Uveoscleral outflow (FP receptor) | 25–35% |
| Beta-blockers (Timolol) | ↓ Aqueous production (β2 blockade) | 20–30% |
| Alpha-2 agonists (Brimonidine) | ↓ Production + ↑ uveoscleral outflow | 20–25% |
| Topical CAIs (Dorzolamide) | ↓ Aqueous production (CA II/IV inhibition) | 15–20% |
| Miotics (Pilocarpine) | ↑ Conventional outflow (TM tensioning) | 20–25% |
| Rho-kinase inhibitors (Netarsudil) | ↑ Conventional outflow + ↓ episcleral venous pressure | 15–20% |
| Section | Marks |
|---|---|
| Definition | 1 |
| Pathophysiology (IOP-dependent + independent + anatomical basis) | 4 |
| Risk factors (table with key factors) | 2 |
| Clinical features (symptoms + disc signs + VF progression) | 2 |
| Investigations (Tonometry, Gonioscopy, Perimetry, OCT, CCT) | 4 |
| Management (Target IOP + Drugs + Laser + Surgery) | 7 |
| TOTAL | 20 |
| Pathway | Route | % Total |
|---|---|---|
| Conventional (trabecular) | TM → Schlemm's canal → collector channels → aqueous veins → episcleral veins | 80–85% |
| Uveoscleral (non-conventional) | AC → ciliary muscle interstices → suprachoroidal space → sclera | 15–20% |
| Class | Agent | Mechanism | IOP reduction |
|---|---|---|---|
| Prostaglandin analogues | Latanoprost, Bimatoprost | ↑ Uveoscleral outflow via FP receptors | 25–35% |
| Beta-blockers | Timolol, Betaxolol (β1) | ↓ Aqueous production (β2 blockade in ciliary body) | 20–30% |
| Alpha-2 agonists | Brimonidine | ↓ Aqueous production + ↑ uveoscleral outflow | 20–25% |
| Topical CAIs | Dorzolamide, Brinzolamide | Inhibit CA II/IV → ↓ active secretion | 15–20% |
| Oral CAIs | Acetazolamide | Same as topical | 15–20% |
| Miotics | Pilocarpine | ↑ Conventional outflow by ciliary muscle contraction | 20–25% |
| Rho-kinase inhibitors | Netarsudil | ↑ Conventional outflow + ↓ episcleral venous pressure | 15–20% |
| Section | Marks |
|---|---|
| Anatomy of aqueous humor (production + composition) | 1 |
| Outflow pathways (conventional + uveoscleral + TM structure) | 2 |
| Physiology of IOP (Goldmann equation, normal values, diurnal variation) | 2 |
| Pathophysiology of raised IOP (open-angle + angle-closure + secondary) | 4 |
| Clinical assessment (tonometry + gonioscopy) | 2 |
| Medical management (mechanism table, all classes) | 3 |
| Laser management (SLT, ALT, PI, iridoplasty, cyclodiode) | 2 |
| Surgical management (trabeculectomy steps + GDD + MIGS) | 4 |
| TOTAL | 20 |
| Open-Angle | Angle-Closure | |
|---|---|---|
| Primary | POAG, NTG, OHT | PACS, PAC, PACG (acute, chronic) |
| Congenital | PCG (trabeculodysgenesis) | Sturge-Weber, NF1-associated |
| Secondary | PXG, Pigmentary, Steroid-induced, Inflammatory, Angle recession | Neovascular, Phacomorphic, Phacolytic, Malignant |
| Scenario | Management |
|---|---|
| Topiramate-induced (bilateral) | STOP drug; cycloplegia (atropine 1%); NO CAIs (sulfonamide CI); NO PI; IV steroids if large effusion |
| Phacomorphic glaucoma | Medical control first → lens extraction (definitive) |
| Aphakic/pseudophakic pupillary block | Do NOT use pilocarpine; use mydriatics + cycloplegics (cyclopentolate + phenylephrine) |
| Plateau iris (after patent PI) | ALPI (argon laser iridoplasty) |
| Malignant glaucoma | Cycloplegia (atropine 1%), hyperosmotic agents, YAG vitreolysis, pars plana vitrectomy |
| Section | Marks |
|---|---|
| Classification of glaucoma (table format) | 3 |
| Spectrum of angle closure disease (PACS → PACG) | 1 |
| Pathophysiology (pupillary block mechanism + risk factors + precipitants) | 2 |
| Clinical features (symptoms + critical triad + additional signs including glaukomflecken) | 4 |
| Investigations (tonometry, gonioscopy, slit lamp, UBM) | 2 |
| Emergency management (topicals + systemic CAI + mannitol + LPI + fellow eye) | 6 |
| Special situations (topiramate, phacomorphic, pseudophakic, plateau iris, malignant) | 2 |
| TOTAL | 20 |
| Feature | MMC | 5-FU |
|---|---|---|
| Mechanism | Alkylating agent | Antimetabolite |
| Potency | More potent | Less potent |
| Application | Intraoperative only | Intraop or postop injections |
| Main risk | Avascular bleb, endophthalmitis | Corneal epithelial defect |
| Duration | 1–5 min contact | Repeated injections |
| Complication | Cause | Management |
|---|---|---|
| Hypotony | Over-drainage through scleral flap | Pressure patching, releasable suture tightening, AC reformation |
| Flat anterior chamber | Hypotony; wound leak; choroidal detachment | AC reformation with viscoelastic; repair wound |
| Choroidal detachment | Hypotony → uveal expansion | Conservative; systemic steroids; drainage if severe |
| Hyphema | Intraoperative bleeding from sclerostomy | Usually resolves; AC washout if dense |
| Wound leak | Conjunctival defect | Pressure patch; Seidel positive; re-suture |
| Shallow/flat AC + raised IOP | Malignant glaucoma; pupillary block | Cycloplegia; YAG vitreolysis; vitrectomy |
| Infection (early endophthalmitis) | Intraoperative contamination | Intravitreal antibiotics; vitrectomy |
| Complication | Details |
|---|---|
| Bleb failure (encapsulated/Tenon's cyst) | Fibrotic encapsulation (Tenon's capsule) within 2–8 weeks; firm, raised bleb; elevated IOP; treatment: needling with 5-FU |
| Bleb leak | Late perforation of thin avascular bleb (MMC-associated); Seidel positive; hypotonous; risk of endophthalmitis; treatment: tissue adhesive, patch graft, re-suture |
| Blebitis | Superficial infection of bleb without vitreous involvement; pain, discharge, white bleb; incidence up to 5%/yr with MMC; Rx: intensive topical + systemic antibiotics |
| Late endophthalmitis | Deep infection involving vitreous; most serious; lifelong risk; patients MUST be warned; requires intravitreal antibiotics ± vitrectomy |
| Cataract progression | Accelerated by hypotony, inflammation, intraoperative lens touch |
| Diplopia | Superior rectus/oblique involvement from subconjunctival fibrosis or bridle suture |
| Bleb dysaesthesia | Irritating overhanging bleb impinging on cornea |
| Section | Marks |
|---|---|
| Definition and principle | 1 |
| Indications (4–5 valid points) | 2 |
| Preoperative preparation | 1 |
| Surgical technique — step by step (all 13 steps) | 6 |
| Antimetabolites — MMC and 5-FU (mechanism, application, comparison, indications, complications) | 4 |
| Early complications (at least 5) | 3 |
| Late complications (at least 5 including blebitis and endophthalmitis) | 3 |
| TOTAL | 20 |
| Type | Key Feature | Management |
|---|---|---|
| Pigmentary | Krukenberg spindle, spoke-like iris TID, young myopic male; reverse pupillary block | Pilocarpine (reverses pupillary block), SLT, trabeculectomy |
| Steroid-induced | IOP rise 2–6 weeks after steroids; ↑ TM GAGs | Stop steroid; substitute fluorometholone; medical/surgical IOP lowering |
| Phacolytic | Hypermature cataract; macrophages clog TM | Medical → lens extraction |
| Angle recession | Decades after blunt trauma; torn ciliary face | Gonioscopy; medical; trabeculectomy |
| Section | Marks |
|---|---|
| Classification of secondary glaucoma (pre-trabecular, trabecular, post-trabecular, angle-closure) | 3 |
| NVG aetiology and pathophysiology (VEGF, 3 stages) | 2 |
| NVG clinical features | 2 |
| NVG management (anti-VEGF + PRP + GDD) | 4 |
| PXG pathogenesis (LOXL1, PXM, zonular weakness) | 2 |
| PXG clinical features (lens capsule pattern + TM + poor dilation) | 2 |
| PXG management (including surgical precautions) | 3 |
| Other secondary glaucomas (brief) | 2 |
| TOTAL | 20 |
| Feature | NTG | POAG |
|---|---|---|
| IOP | ≤21 mmHg | Often elevated |
| Disc haemorrhages | More common (frequent recurrence) | Less common |
| VF defects | Deeper, steeper-edged, closer to fixation | More peripheral initially |
| Beta-zone PPA | More extensive | Less extensive |
| Vertical C/D asymmetry | Often greater | Variable |
| Focal disc damage | More common (focal ischaemic pattern) | All patterns |
| Untreated progression | ~50% stable at 5–7 years | More likely to progress |
| Race | Japanese, females | Black populations (highest) |
| Migraine/Raynaud's | More prevalent | Not specifically |
| Disc pallor > cupping | May be seen | Uncommon |
| Section | Marks |
|---|---|
| Definition (IOP ≤21 + glaucoma changes + open angle + exclusion of secondary causes) | 1 |
| Epidemiology | 1 |
| Pathogenesis (vascular + structural + neurological) | 4 |
| Clinical features/differences from POAG (table format) | 4 |
| Investigations (standard + NTG-specific + neuroimaging indications) | 4 |
| Management (when to treat + IOP lowering + brimonidine/betaxolol rationale + vascular risk + surgery) | 6 |
| TOTAL | 20 |
| Section | Marks |
|---|---|
| Clinical features (symptoms + disc signs + VF progression) | 4 |
| Investigations (tonometry + gonioscopy + perimetry + OCT) | 3 |
| Prostaglandin analogues (mechanism + SE including PALE FISH mnemonic) | 3 |
| Beta-blockers (mechanism + SE + betaxolol distinction + CI) | 2 |
| Alpha-2 agonists (mechanism + neuroprotection + CI in infants) | 2 |
| CAIs topical + oral (mechanism + SE + CI in sulfonamide allergy) | 2 |
| Miotics (mechanism + SE + CI) | 1 |
| Rho-kinase inhibitors (mechanism + SE) | 1 |
| TOTAL | 20 |
| Section | Marks |
|---|---|
| Definition | 1 |
| Aetiology and genetics (trabeculodysgenesis + CYP1B1) | 2 |
| Classic triad (Buphthalmos + Epiphora + Photophobia) with details | 3 |
| Investigations (EUA, tonometry, gonioscopy, corneal diameter, optic disc) | 2 |
| Surgical management (goniotomy vs. trabeculotomy — indications + technique + others) | 5 |
| Medical management (adjunct role + brimonidine CI in infants) | 1 |
| Sturge-Weber (features + glaucoma mechanism + surgical risk) | 2 |
| Aniridia (PAX6 + WAGR + mechanism) | 1.5 |
| Neurofibromatosis + Axenfeld-Rieger + Peter's (brief) | 2.5 |
| TOTAL | 20 |
| VF Defect | Description | Anatomical Basis |
|---|---|---|
| Baring of the blind spot | Extension of the physiological blind spot; earliest change | Adjacent arcuate fibres affected |
| Paracentral scotoma | Isolated scotoma within 10° of fixation; may be above or below fixation | Focal arcuate fibre damage at disc |
| Nasal step | Scotoma respects the horizontal meridian; superior > inferior more common | Arcuate fibres do not cross horizontal raphe |
| Seidel's scotoma | Comma-shaped extension from blind spot along arcuate path | Arcuate fibre bundle damage |
| Arcuate (Bjerrum) scotoma | Complete arc from blind spot to nasal raphe (10–20° from fixation) — Bjerrum's area | Full arcuate bundle damage |
| Double arcuate (ring) scotoma | Both superior and inferior arcuate scotomas | Both superior and inferior arcuate bundle damage |
| Altitudinal defect | Loss of superior or inferior half field | Advanced arcuate damage |
| Temporal island | Only temporal VF remains; very advanced | Central fibres damaged, peripheral arcuate fibres spared |
| Central island | Only central fixation area remains; late | Peripheral complete loss; papillomacular bundle last to go |
| Tubular/tunnel vision | Very small central + temporal island | End-stage |
| Grade | Angle width | Anatomical structures visible | Closure risk |
|---|---|---|---|
| 4 | 35–45° | All structures visible | Impossible |
| 3 | 25–35° | Ciliary band visible | Unlikely |
| 2 | 20° | Scleral spur visible | Possible |
| 1 | <10° | TM only visible | Probable |
| 0 | Closed | No structures visible | Present |
| Condition | Gonioscopic finding |
|---|---|
| POAG | Open angle; normal TM; may show increased pigmentation in older patients |
| NTG | Open angle; normal TM |
| PACG | Narrow angle; iris bombe; PAS in chronic cases |
| Pseudoexfoliation | Dense TM pigmentation; Sampaolesi line (pigment anterior to Schwalbe's) |
| Pigmentary glaucoma | Dense homogeneous TM pigmentation (denser than PXG); Sampaolesi line |
| NVG | Neovascularization of angle; PAS in advanced cases |
| Angle recession | Wide, irregular angle; torn ciliary face; iridodialysis |
| Sturge-Weber | Blood in Schlemm's canal (raised episcleral venous pressure) |
| Tonometer | Principle | Advantages | Disadvantages |
|---|---|---|---|
| Perkins | Same as GAT (portable) | Supine patients, children, OR, bedside | Examiner skill needed |
| Non-contact (air-puff/NCT) | Air puff deforms cornea → optically detected | No contact, no anaesthetic, no risk of infection | Less accurate; affected by corneal properties; head movements |
| Schiotz | Indentation of cornea by calibrated weight | Simple, portable, cheap | Affected by axial length, ocular rigidity; historical use |
| Tonopen (electronic) | Applanation strain gauge | Irregular corneas, unusual situations, children | Less accurate than GAT |
| Pascal DCT (Dynamic Contour) | Contour-matching (not applanation) | Less affected by CCT; measures OPA (ocular pulse amplitude) | Expensive; technically demanding |
| iCare (rebound) | Probe briefly touches cornea; deceleration measured | No anaesthetic; excellent for children; quick | Less accurate at extremes; affected by probe alignment |
| Section | Marks |
|---|---|
| Anatomical basis of VF defects (arcuate fibres, horizontal raphe, papillomacular bundle) | 2 |
| Visual field defects in progression order (table with 8–10 types) | 3 |
| Perimetry (HFA patterns + global indices + reliability criteria + progression analysis) | 2 |
| Gonioscopy definition and principle (total internal reflection, contact lens) | 1 |
| Gonioscopy lens types (direct — Koeppe; indirect — Goldmann, Zeiss 4-mirror) | 1 |
| Gonioscopic landmarks (6 structures, anterior to posterior) | 1.5 |
| Grading systems (Shaffer in detail + Spaeth brief) | 1.5 |
| Dynamic gonioscopy (appositional vs synechial) | 0.5 |
| Gonioscopic findings in specific conditions | 1.5 |
| GAT — principle (Imbert-Fick) + technique + sources of error | 2 |
| Other tonometers (table) | 2 |
| CCT and IOP correction (clinical importance + OHTS) | 1 |
| IOP monitoring (diurnal phasing, OPA) | 1 |
| TOTAL | 20 |
| Procedure | Laser Type | Primary Indication |
|---|---|---|
| Selective Laser Trabeculoplasty (SLT) | Q-switched Nd:YAG 532 nm | POAG, OHT, NTG — ↑ conventional outflow |
| Argon Laser Trabeculoplasty (ALT) | Argon 488/514 nm | POAG (older procedure) |
| Laser Peripheral Iridotomy (LPI/PI) | Nd:YAG ± Argon | Angle-closure glaucoma, PACS |
| Argon Laser Iridoplasty (ALPI) | Argon | Plateau iris syndrome |
| Diode Laser Cyclodestruction | Diode 810 nm | Refractory/end-stage glaucoma |
| YAG Laser Vitreolysis | Nd:YAG | Malignant glaucoma |
| Laser Suture Lysis | Nd:YAG or Argon | Post-trabeculectomy IOP titration |
| Section | Marks |
|---|---|
| Overview table of all laser procedures | 3 |
| SLT — laser parameters (532 nm, Q-switched, nanosecond, spot size) | 1 |
| SLT — mechanism (selective photothermal, melanin, biological TM remodelling) | 1 |
| SLT — indications including first-line status | 1 |
| SLT — technique (pre-treatment, lens, spots, energy endpoint, post-laser) | 2 |
| SLT — results (LiGHT trial details, 74% no drops, 2–5 year duration, repeatable) | 1.5 |
| SLT — complications | 0.5 |
| LPI — principle (bypass pupil, equalise PC/AC pressure) | 1 |
| LPI — indications (AACG + PAC + fellow eye + PACS) | 1 |
| LPI — technique (pilocarpine pre-treatment, lens, YAG parameters, position, endpoint) | 2 |
| LPI — argon + YAG combined technique | 0.5 |
| LPI — patency assessment | 0.5 |
| LPI — complications (IOP spike, hyphema, dysphotopsia) | 0.5 |
| LPI — limitations/failures (plateau iris, PAS, EAGLE trial) | 1 |
| TOTAL | 20 |
| Q# | Question Topic | Key Areas Tested |
|---|---|---|
| Q1 | POAG — Pathophysiology, Features, Investigations, Management | Ganglion cell loss, ISNT, disc signs, VF progression, GAT, OCT, SLT, drugs, trabeculectomy |
| Q2 | Aqueous Humor Dynamics + Raised IOP Management | Production, outflow pathways, Goldmann equation, all treatment modalities |
| Q3 | Classification + AACG Management | Full classification, pupillary block, AACG emergency protocol, LPI, special scenarios |
| Q4 | Trabeculectomy | Indications, 13-step technique, MMC vs 5-FU, early + late complications |
| Q5 | Secondary Glaucomas — NVG + PXG | Classification, VEGF/rubeosis pathophysiology, PXM lens sign, LOXL1, surgical precautions |
| Q6 | Normal Tension Glaucoma | Vascular pathogenesis, NTG vs POAG differences, neuroimaging indications, brimonidine/betaxolol rationale |
| Q7 | Clinical Features + Anti-Glaucoma Pharmacology | All 6 drug classes — mechanism, SE, CI; PALE FISH mnemonic |
| Q8 | Primary Congenital Glaucoma + Developmental Syndromes | BEP triad, Haab's striae, goniotomy vs trabeculotomy, brimonidine CI in infants, Sturge-Weber, Aniridia, Axenfeld-Rieger |
| Q9 | VF Changes + Gonioscopy + Tonometry | 10 VF defects, HFA patterns + global indices, gonioscopic landmarks + grading, GAT principle + sources of error, CCT correction |
| Q10 | Laser Procedures — SLT + LPI | LiGHT trial, 532 nm mechanism, TM remodelling, LPI technique, EAGLE trial, plateau iris failure |