Explain pterygium in details for long answer questions

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Loading Image
Loading Image
Loading Image
I now have all the material needed for a comprehensive long-answer response. Let me compile it.

PTERYGIUM - Comprehensive Long Answer


Definition

A pterygium (plural: pterygia; from Greek pteryx = wing) is a triangular fibrovascular sub-epithelial ingrowth of degenerative bulbar conjunctival tissue that advances over the limbus onto the cornea, dissecting into the plane normally occupied by Bowman's layer. The word refers to its characteristic wing-shaped morphology.
  • Kanski's Clinical Ophthalmology, p. 215
  • Robbins, Cotran & Kumar Pathologic Basis of Disease, p. 1207

Epidemiology

  • More common in individuals living in equatorial/tropical regions (the "pterygium belt" between 37°N and 37°S latitude)
  • Strongly associated with chronic UV light exposure, particularly UV-B radiation
  • Other risk factors: chronic surface dryness, dust, wind, outdoor occupations (farmers, fishermen, sailors)
  • Tends to run in families (possible genetic predisposition)
  • Males slightly more affected than females

Etiopathogenesis

The exact mechanism is not fully understood but several factors are implicated:
1. UV-B radiation is the primary trigger, causing:
  • Elastotic degeneration of deep conjunctival layers (subepithelial collagen)
  • Fibrovascular tissue proliferation
  • Limbal stem cell dysfunction - UV damage to limbal stem cells allows conjunctival epithelium to migrate onto the cornea (the "stem cell hypothesis")
2. Limbal stem cell deficiency theory: UV radiation damages limbal basal epithelial cells. This breaks down the "barrier function" of the limbus, allowing fibrovascular tissue to invade the cornea.
3. Matrix metalloproteinases (MMPs): Overexpression of MMPs (especially MMP-1, MMP-2, MMP-3) leads to degradation of the extracellular matrix and facilitates invasion of Bowman's layer.
4. Cytokines and growth factors: Overexpression of vascular endothelial growth factor (VEGF), TGF-β, and fibroblast growth factor promotes angiogenesis and fibroblast proliferation.
5. Tumor suppressor gene alterations: Mutations in p53 have been found in pterygium cells, supporting a proliferative/neoplastic element to the disease.
  • Wills Eye Manual, p. 193

Pathology / Histology

On histological examination, pterygium shows:
  • Elastotic degenerative changes in vascularized subepithelial stromal collagen (the subepithelial stroma looks like elastic fibers but stains differently - hence "elastotic degeneration")
  • Vascularized fibrous tissue replacing Bowman's layer of the cornea
  • Epithelial hyperplasia overlying the lesion
  • Inflammatory cell infiltrate (lymphocytes, plasma cells)
  • Goblet cell changes in the overlying epithelium
  • Submitting excised tissue for pathology is recommended - occasionally, precursors of actinic-induced neoplasms (SCC, melanoma) are detected
  • Kanski's Clinical Ophthalmology, p. 215
  • Robbins, Cotran & Kumar, p. 1207
Histology and clinical appearances of pterygium - (A) Histology showing elastotic degenerative changes in vascularized subepithelial stroma; (B) pterygium showing cap, head, body and Stocker line; (C) inflamed pterygium; (D) pseudopterygium secondary to chemical burn
Fig. from Kanski's Clinical Ophthalmology: (A) Histology; (B) parts of pterygium + Stocker line; (C) inflamed pterygium; (D) pseudopterygium

Anatomy of a Pterygium - Three Parts

A pterygium consists of three distinct zones:
PartDescription
Cap (apex)Avascular halo-like zone at the advancing edge; contains Fuchs islets
HeadVascularized, elevated portion on the cornea at the limbus
BodyFleshy, triangular, vascularized portion on the bulbar conjunctiva
Fuchs islets: Small discrete whitish flecks consisting of clusters of pterygial epithelial cells at the advancing edge.
Stocker line: A linear epithelial iron (hemosiderin) deposition in the corneal epithelium anterior to the head of the pterygium. Its presence suggests a more slowly growing lesion.
  • Kanski's Clinical Ophthalmology, p. 215
Clinical photo of pterygium - nasal fibrovascular growth encroaching onto the cornea
Wills Eye Manual, Fig. 4.9.1: Pterygium - nasal fibrovascular tissue extending onto cornea

Clinical Features

Location

  • Almost always located at the 3-o'clock or 9-o'clock perilimbal position (interpalpebral fissure)
  • Typically nasal side (medial canthus) > temporal side
  • Can be bilateral

Symptoms

  • Small lesions: usually asymptomatic
  • Irritation and grittiness - caused by a "dellen" effect (localized corneal drying at the advancing edge due to disruption of the precorneal tear film)
  • Foreign body sensation
  • Redness and inflammation (pterygitis - acute inflammation of pterygium)
  • Decreased/blurred vision - due to:
    • Obscuring of the visual axis by a large pterygium
    • Induced corneal astigmatism (with-the-rule, typically)
  • Contact lens intolerance - edge lift of the pterygium causes symptoms at an earlier stage
  • Cosmetic concern - the fleshy growth is conspicuous

Signs on Slit-Lamp Examination

  • Wing-shaped fibrovascular fold on the interpalpebral conjunctiva extending onto the cornea
  • No associated corneal thinning below the lesion (unlike pseudopterygium)
  • Stocker line (iron line) anterior to the head
  • Fuchs islets at the cap
  • Della (localized corneal thinning/drying at the edge) may be present
  • Extensive/recurrent lesions may show subconjunctival fibrosis extending to the fornices causing restricted ocular excursion
  • Wills Eye Manual, pp. 191-192
  • Rosen's Emergency Medicine, p. 888

Grading

Pterygia are clinically graded based on extent of corneal encroachment:
  • Grade 1 (Atrophic): Thin, translucent; details of underlying episcleral vessels visible through it
  • Grade 2 (Intermediate): Partially obscures underlying episcleral vessels
  • Grade 3 (Fleshy/Active): Thick, opaque; completely obscures underlying episcleral vessels
Some grading systems also classify by proximity to visual axis (Grades T1-T3 based on corneal involvement).

Difference Between Pterygium and Pseudopterygium

FeaturePterygiumPseudopterygium
OriginPrimary degenerative conditionCaused by an acute episode (chemical burn, corneal ulcer, trauma, cicatrizing conjunctivitis)
LocationAlways at horizontal meridian (3 or 9 o'clock)Can be at any position
Corneal attachmentAlong its entire lengthOnly at apex (head)
Probe testProbe cannot be passed under lesion at limbusProbe can be passed under the lesion at the limbus (free from limbal attachment)
HistoryNo inciting eventHistory of causative episode
  • Kanski's Clinical Ophthalmology, p. 215

Investigations

  • Slit-lamp examination: Confirms diagnosis; assess size, vascularity, extent of corneal involvement
  • Keratometry / Corneal topography: Quantifies induced astigmatism
  • Refraction: Document visual acuity and astigmatic error
  • Excision biopsy (histopathology): Recommended for all excised specimens to rule out OSSN (Ocular Surface Squamous Neoplasia), SCC, or melanoma precursors

Differential Diagnosis

ConditionDistinguishing Features
PingueculaYellow-white conjunctival deposit adjacent to limbus; does NOT encroach onto the cornea
PseudopterygiumFollows acute injury; probe test positive; can be at any meridian
Conjunctival Intraepithelial Neoplasia (CIN)Jelly-like, velvety, leukoplakic; not necessarily wing-shaped; not always at 3/9 o'clock; biopsy distinguishes
Limbal dermoidCongenital, rounded white lesion, usually inferotemporal
Squamous cell carcinomaIrregular, vascularized, often gelatinous; more common in elderly; biopsy required
Peripheral hypertrophic subepithelial corneal degenerationBilateral; mainly in Caucasian women; elevated subepithelial opacities
Episcleritis/ScleritisDiffuse or sectoral inflammation without corneal tissue growth
  • Wills Eye Manual, p. 192

Treatment

A. Medical / Conservative Management

  1. UV protection: Ultraviolet-blocking sunglasses or goggles outdoors (most important preventive measure)
  2. Artificial tears: Preservative-free, 4-8 times per day to reduce irritation
  3. For inflamed pterygium:
    • Mild inflammation: Artificial tears QID
    • Moderate-severe inflammation: Mild topical steroid (fluorometholone 0.1%, loteprednol 0.2-0.5% QID), or NSAID drops (ketorolac 0.4-0.5% QID), or topical antihistamine ± mast cell stabilizer (olopatadine, ketotifen)
  4. For delle: Artificial tear ointment every 2 hours
  5. Contact lens adjustment if applicable

B. Surgical Management

Indications for surgery:
  • Pterygium threatening the visual axis
  • Significant induced astigmatism
  • Excessive irritation not controlled medically
  • Interference with contact lens wear
  • Cosmetic concern
  • Prior to cataract or refractive surgery

Surgical Techniques

1. Bare Sclera Excision
  • Pterygium excised from cornea and conjunctiva leaving bare sclera
  • Simple, quick technique
  • Major disadvantage: Very high recurrence rate (~80%), often with more aggressive regrowth than the original
  • Largely abandoned as a standalone procedure
2. Conjunctival Autograft (preferred technique)
  • Pterygium excised; a donor conjunctival patch harvested from the superior or upper-temporal para-limbal region
  • Graft sutured into position using 10-0 nylon sutures (or secured with tissue fibrin glue - e.g., TISSEEL - shorter operating time, less postoperative irritation)
  • Recurrence rate significantly reduced (to ~5-15%)
  • Graft can also be secured with fibrin glue instead of sutures
3. Amniotic Membrane Graft
  • Used as alternative to conjunctival autograft
  • Useful when conjunctiva is insufficient (bilateral disease, prior surgery)
  • Also reduces recurrence
4. Peripheral Lamellar Keratoplasty
  • For deep lesions involving stromal scarring

Adjuvant Anti-proliferative Agents

Mitomycin C (MMC):
  • Alkylating antineoplastic agent applied intraoperatively or postoperatively (topically)
  • Inhibits fibroblast proliferation and neovascularization
  • Reduces recurrence, especially for recurrent pterygia
  • Risk: Corneoscleral thinning or necrosis (more common with higher doses/longer exposure)
  • More commonly reserved for recurrent pterygia
Beta-irradiation (Sr-90):
  • Strontium-90 applied postoperatively
  • Inhibits fibroblast proliferation
  • Alternative to MMC
  • Kanski's Clinical Ophthalmology, p. 216
  • Wills Eye Manual, pp. 193-194
Surgical treatment of pterygium: (A) removal of pterygium head showing edges of incision; (B) preparation of conjunctival autograft; (C) graft sutured into position
Fig. from Kanski's Clinical Ophthalmology: Surgical treatment of pterygium

Recurrence

  • Bare sclera excision alone: ~80% recurrence
  • Conjunctival autograft: ~5-15% recurrence
  • Autograft + MMC: Even lower recurrence
  • Recurrent pterygia are often more vascular and aggressive
  • Risk factors for recurrence: young age, active inflammation, UV re-exposure, incomplete excision

Complications

ComplicationNotes
Visual axis obscurationAdvanced/large pterygia
Corneal astigmatismIrregular, typically with-the-rule
Corneal scarringAfter deep invasion
Restricted ocular motilitySubconjunctival fibrosis in extensive/recurrent disease
Recurrence post-surgeryEspecially after bare sclera technique
Corneoscleral thinning/necrosisComplication of MMC
Malignant transformationRare; OSSN/SCC may be found on histopathology

Summary Table

FeatureDetails
DefinitionTriangular fibrovascular ingrowth of conjunctiva over the limbus onto the cornea
Site3 o'clock or 9 o'clock; usually nasal
CauseChronic UV-B exposure; elastotic degeneration
HistologyElastotic degeneration of vascularized subepithelial stroma
PartsCap (apex), Head, Body
Special signsStocker line (iron line), Fuchs islets, dellen
SymptomsIrritation, redness, decreased vision, astigmatism
Key DDxPseudopterygium, pinguecula, OSSN/CIN, limbal dermoid
TreatmentUV protection, lubricants, steroids; Surgery (conjunctival autograft preferred)
AdjuvantMitomycin C, beta-irradiation to reduce recurrence
Recurrence~80% bare sclera; ~5-15% with autograft

Sources:
  • Kanski's Clinical Ophthalmology: A Systematic Approach, 10th ed., pp. 215-216
  • Wills Eye Manual, 8th ed., pp. 191-194
  • Rosen's Emergency Medicine, pp. 888-889
  • Robbins, Cotran & Kumar: Pathologic Basis of Disease, p. 1207

Create a quick reference PDF summary of pterygium diagnosis and management

Reading File
Running Command

ls /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls /tmp/workspace/

Running Command

mkdir -p /tmp/workspace/pterygium-pdf && python3 << 'EOF' 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, KeepTogether) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate from reportlab.lib.colors import HexColor # ── Colour palette ────────────────────────────────────────────────────────── TEAL = HexColor("#0D6E85") TEAL_LIGHT = HexColor("#E8F4F7") ORANGE = HexColor("#E8762B") ORANGE_LT = HexColor("#FEF3EB") GREEN = HexColor("#2E7D32") GREEN_LT = HexColor("#E8F5E9") RED = HexColor("#C62828") RED_LT = HexColor("#FFEBEE") GREY_DARK = HexColor("#263238") GREY_MID = HexColor("#546E7A") GREY_LT = HexColor("#ECEFF1") WHITE = colors.white # ── Document setup ─────────────────────────────────────────────────────────── out = "/tmp/workspace/pterygium-pdf/Pterygium_Quick_Reference.pdf" doc = SimpleDocTemplate(out, pagesize=A4, topMargin=2*cm, bottomMargin=1.8*cm, leftMargin=1.6*cm, rightMargin=1.6*cm) W = A4[0] - 3.2*cm # usable width # ── Styles ─────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() def S(name, **kw): return ParagraphStyle(name, **kw) title_s = S("title_s", fontName="Helvetica-Bold", fontSize=20, textColor=WHITE, leading=24, alignment=TA_CENTER) sub_s = S("sub_s", fontName="Helvetica", fontSize=9, textColor=WHITE, leading=12, alignment=TA_CENTER) sec_s = S("sec_s", fontName="Helvetica-Bold", fontSize=10.5, textColor=WHITE, leading=14, spaceBefore=0, spaceAfter=0) body_s = S("body_s", fontName="Helvetica", fontSize=8.5, textColor=GREY_DARK, leading=12, spaceBefore=1, spaceAfter=1) bold_s = S("bold_s", fontName="Helvetica-Bold", fontSize=8.5, textColor=GREY_DARK, leading=12) small_s = S("small_s", fontName="Helvetica", fontSize=7.5, textColor=GREY_MID, leading=11) bullet_s = S("bullet_s", fontName="Helvetica", fontSize=8.5, textColor=GREY_DARK, leading=12, leftIndent=10, bulletIndent=0) red_s = S("red_s", fontName="Helvetica-Bold", fontSize=8.5, textColor=RED) green_s = S("green_s", fontName="Helvetica-Bold", fontSize=8.5, textColor=GREEN) orange_s = S("orange_s", fontName="Helvetica-Bold", fontSize=8.5, textColor=ORANGE) tip_s = S("tip_s", fontName="Helvetica-Oblique", fontSize=8, textColor=HexColor("#4A148C"), leading=11, leftIndent=6) foot_s = S("foot_s", fontName="Helvetica", fontSize=7, textColor=GREY_MID, leading=10, alignment=TA_CENTER) # ── Helper: section header ─────────────────────────────────────────────────── def sec_header(text, bg=TEAL, width=W): tbl = Table([[Paragraph(text, sec_s)]], colWidths=[width]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("ROUNDEDCORNERS", [3, 3, 3, 3]), ])) return tbl def spacer(h=4): return Spacer(1, h) def bullet(text, style=bullet_s): return Paragraph(f"• {text}", style) def hr(c=TEAL_LIGHT): return HRFlowable(width="100%", thickness=1, color=c, spaceAfter=3, spaceBefore=3) # ── Title banner ───────────────────────────────────────────────────────────── title_tbl = Table([ [Paragraph("PTERYGIUM", title_s)], [Paragraph("Quick Reference: Diagnosis & Management", sub_s)], ], colWidths=[W]) title_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), TEAL), ("TOPPADDING", (0,0), (-1,-1), 12), ("BOTTOMPADDING", (0,0), (-1,-1), 10), ("LEFTPADDING", (0,0), (-1,-1), 10), ("ROUNDEDCORNERS",[4,4,4,4]), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 1 — DEFINITION & PATHOLOGY (2-col) # ══════════════════════════════════════════════════════════════════════════════ def_rows = [ [Paragraph("<b>Definition</b>", bold_s), Paragraph("Triangular fibrovascular sub-epithelial ingrowth of degenerative bulbar conjunctival tissue advancing over the limbus onto the cornea, dissecting into the Bowman layer plane.", body_s)], [Paragraph("<b>Location</b>", bold_s), Paragraph("3-o'clock or 9-o'clock (interpalpebral fissure); usually <b>nasal &gt; temporal</b>; can be bilateral.", body_s)], [Paragraph("<b>Aetiology</b>", bold_s), Paragraph("Chronic <b>UV-B radiation</b> exposure → elastotic degeneration of subepithelial stroma → limbal stem cell dysfunction → conjunctival invasion. Also: dryness, dust, wind, genetic predisposition.", body_s)], [Paragraph("<b>Histology</b>", bold_s), Paragraph("Elastotic degeneration of vascularised subepithelial collagen; fibroblast proliferation; inflammatory infiltrate; overlying epithelial hyperplasia. p53 mutations noted.", body_s)], ] def_tbl = Table(def_rows, colWidths=[2.6*cm, W-2.6*cm]) def_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 3), ("RIGHTPADDING", (0,0), (-1,-1), 3), ("ROWBACKGROUNDS",(0,0), (-1,-1), [WHITE, GREY_LT]), ("LINEBELOW", (0,0), (-1,-1), 0.3, GREY_LT), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 2 — ANATOMY OF PTERYGIUM # ══════════════════════════════════════════════════════════════════════════════ anatomy_data = [ [Paragraph("<b>Part</b>", bold_s), Paragraph("<b>Description</b>", bold_s)], [Paragraph("Cap (apex)", body_s), Paragraph("Avascular halo at the advancing edge; contains <b>Fuchs islets</b> (whitish clusters of pterygial epithelial cells)", body_s)], [Paragraph("Head", body_s), Paragraph("Vascularised, elevated zone on the cornea at the limbus; <b>Stocker line</b> (iron deposition) lies anterior to it — suggests slow growth", body_s)], [Paragraph("Body", body_s), Paragraph("Fleshy, triangular, vascularised portion on the bulbar conjunctiva", body_s)], ] anat_tbl = Table(anatomy_data, colWidths=[2.8*cm, W-2.8*cm]) anat_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL_LIGHT), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, TEAL_LIGHT]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, TEAL_LIGHT), ("BOX", (0,0), (-1,-1), 0.5, TEAL), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 3 — CLINICAL FEATURES (2-column layout: symptoms | signs) # ══════════════════════════════════════════════════════════════════════════════ half = (W - 0.4*cm) / 2 sym_inner = [ [Paragraph("SYMPTOMS", S("sh", fontName="Helvetica-Bold", fontSize=9, textColor=ORANGE, leading=12))] ] syms = [ "Asymptomatic (small lesions)", "Irritation & grittiness (dellen effect)", "Foreign body sensation", "Redness / pterygitis (acute flare)", "Blurred vision — visual axis obscuration", "Corneal astigmatism (with-the-rule)", "Contact lens intolerance", "Cosmetic concern", ] sym_tbl = Table( [[Paragraph("SYMPTOMS", S("sh2", fontName="Helvetica-Bold", fontSize=9, textColor=ORANGE))]] + [[bullet(s)] for s in syms], colWidths=[half] ) sym_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), ORANGE_LT), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 6), ("BOX", (0,0), (-1,-1), 0.5, ORANGE), ("LINEBELOW", (0,0), (0,0), 1, ORANGE), ])) signs = [ "Wing-shaped fibrovascular fold", "Always at 3 or 9 o'clock position", "Stocker iron line anterior to head", "Fuchs islets at the cap", "Della (localised corneal drying/thinning)", "No corneal thinning beneath lesion", "Restricted ocular motility (severe/recurrent)", ] sign_tbl = Table( [[Paragraph("SIGNS", S("sh3", fontName="Helvetica-Bold", fontSize=9, textColor=TEAL))]] + [[bullet(s)] for s in signs], colWidths=[half] ) sign_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), TEAL_LIGHT), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 6), ("BOX", (0,0), (-1,-1), 0.5, TEAL), ("LINEBELOW", (0,0), (0,0), 1, TEAL), ])) sym_sign_combined = Table([[sym_tbl, sign_tbl]], colWidths=[half, half], hAlign="LEFT", spaceBefore=0) sym_sign_combined.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("LEFTPADDING", (0,0), (-1,-1), 0), ("RIGHTPADDING", (0,0), (-1,-1), 0), ("TOPPADDING", (0,0), (-1,-1), 0), ("BOTTOMPADDING",(0,0), (-1,-1), 0), ("INNERGRID", (0,0), (-1,-1), 0, WHITE), ("COLPADDING", (0,0), (0,-1), 0, 4), ])) # Spacer column trick symsign_outer = Table([[sym_tbl, Spacer(0.4*cm, 1), sign_tbl]], colWidths=[half, 0.4*cm, half]) symsign_outer.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("LEFTPADDING", (0,0), (-1,-1), 0), ("RIGHTPADDING", (0,0), (-1,-1), 0), ("TOPPADDING", (0,0), (-1,-1), 0), ("BOTTOMPADDING",(0,0), (-1,-1), 0), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 4 — PTERYGIUM vs PSEUDOPTERYGIUM # ══════════════════════════════════════════════════════════════════════════════ psp_data = [ [Paragraph("<b>Feature</b>", bold_s), Paragraph("<b>True Pterygium</b>", bold_s), Paragraph("<b>Pseudopterygium</b>", bold_s)], [Paragraph("Origin", body_s), Paragraph("Degenerative/UV", body_s), Paragraph("Post-injury (chemical burn, ulcer, trauma, cicatrising conjunctivitis)", body_s)], [Paragraph("Location", body_s), Paragraph("Always horizontal (3 or 9 o'clock)", body_s), Paragraph("Any meridian", body_s)], [Paragraph("Corneal attachment", body_s), Paragraph("Along entire undersurface", body_s), Paragraph("Only at apex (head)", body_s)], [Paragraph("Probe test", body_s), Paragraph("Probe CANNOT pass under limbal area", body_s), Paragraph("Probe CAN pass under lesion at limbus", body_s)], [Paragraph("History", body_s), Paragraph("No inciting event", body_s), Paragraph("Prior acute episode", body_s)], ] cw3 = [2.2*cm, (W-2.2*cm)/2, (W-2.2*cm)/2] psp_tbl = Table(psp_data, colWidths=cw3) psp_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREY_DARK), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_LT]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, GREY_LT), ("BOX", (0,0), (-1,-1), 0.5, GREY_DARK), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 5 — DIFFERENTIAL DIAGNOSIS # ══════════════════════════════════════════════════════════════════════════════ ddx_data = [ [Paragraph("<b>Condition</b>", bold_s), Paragraph("<b>Key Distinguishing Feature</b>", bold_s)], [Paragraph("Pinguecula", body_s), Paragraph("Yellow-white conjunctival deposit ADJACENT to limbus; does NOT extend onto cornea", body_s)], [Paragraph("CIN / OSSN", red_s), Paragraph("Jelly-like / velvety / leukoplakic; not wing-shaped; not always at 3/9 o'clock — <b>BIOPSY required</b>", body_s)], [Paragraph("Pseudopterygium", body_s), Paragraph("History of acute injury; probe passes under at limbus; any meridian", body_s)], [Paragraph("Squamous Cell Ca.", red_s), Paragraph("Irregular, gelatinous, vascularised; elderly Caucasians; biopsy required", body_s)], [Paragraph("Limbal dermoid", body_s), Paragraph("Congenital; rounded white lesion; usually inferotemporal", body_s)], [Paragraph("Episcleritis", body_s), Paragraph("Diffuse or sectoral scleral redness; no corneal tissue ingrowth", body_s)], ] ddx_tbl = Table(ddx_data, colWidths=[3.5*cm, W-3.5*cm]) ddx_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), RED), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, RED_LT]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, RED_LT), ("BOX", (0,0), (-1,-1), 0.5, RED), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 6 — GRADING # ══════════════════════════════════════════════════════════════════════════════ grade_data = [ [Paragraph("<b>Grade</b>", bold_s), Paragraph("<b>Appearance</b>", bold_s), Paragraph("<b>Episcleral Vessels</b>", bold_s)], [Paragraph("1 — Atrophic", body_s), Paragraph("Thin, translucent", body_s), Paragraph("Clearly visible through it", body_s)], [Paragraph("2 — Intermediate", body_s), Paragraph("Partially opaque", body_s), Paragraph("Partially obscured", body_s)], [Paragraph("3 — Fleshy/Active", body_s), Paragraph("Thick, opaque, raised", body_s), Paragraph("Completely obscured", body_s)], ] cw_g = [3*cm, (W-3*cm)/2, (W-3*cm)/2] grade_tbl = Table(grade_data, colWidths=cw_g) grade_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREY_MID), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREEN_LT, HexColor("#FFF9C4"), RED_LT]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("BOX", (0,0), (-1,-1), 0.5, GREY_MID), ("LINEBELOW", (0,0), (-1,-1), 0.3, GREY_LT), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 7 — INVESTIGATIONS # ══════════════════════════════════════════════════════════════════════════════ inv_list = [ ("<b>Slit-lamp examination</b>", "Confirms diagnosis; assesses size, vascularity, corneal involvement, Stocker line, dellen"), ("<b>Keratometry / Corneal topography</b>", "Quantifies induced corneal astigmatism"), ("<b>Refraction / Visual acuity</b>", "Baseline and serial monitoring"), ("<b>Excision biopsy (histopathology)</b>", "Recommended for ALL excised specimens — rule out OSSN / SCC / melanoma precursors"), ] inv_data = [[Paragraph(a, bold_s), Paragraph(b, body_s)] for a, b in inv_list] inv_tbl = Table(inv_data, colWidths=[4.5*cm, W-4.5*cm]) inv_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("ROWBACKGROUNDS",(0,0), (-1,-1), [TEAL_LIGHT, WHITE]), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, TEAL_LIGHT), ("BOX", (0,0), (-1,-1), 0.5, TEAL), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 8 — MANAGEMENT # ══════════════════════════════════════════════════════════════════════════════ # Medical med_data = [ [Paragraph("UV protection", bold_s), Paragraph("UV-blocking sunglasses / goggles — MOST IMPORTANT preventive measure", body_s)], [Paragraph("Lubrication", bold_s), Paragraph("Preservative-free artificial tears 4-8×/day", body_s)], [Paragraph("Mild inflammation", bold_s), Paragraph("Artificial tears QID", body_s)], [Paragraph("Mod–severe inflammation", bold_s), Paragraph("Topical steroid (fluorometholone 0.1% or loteprednol 0.2–0.5% QID) OR NSAID (ketorolac 0.4% QID) OR antihistamine/mast-cell stabiliser (olopatadine, ketotifen)", body_s)], [Paragraph("Dellen", bold_s), Paragraph("Artificial tear ointment every 2 hours", body_s)], ] med_tbl = Table(med_data, colWidths=[3.8*cm, W-3.8*cm]) med_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("ROWBACKGROUNDS",(0,0), (-1,-1), [WHITE, GREEN_LT]), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, GREEN_LT), ("BOX", (0,0), (-1,-1), 0.5, GREEN), ])) # Surgical indications ind_list = [ "Threatening visual axis", "Significant induced astigmatism", "Excessive irritation unresponsive to medical therapy", "Contact lens interference", "Cosmetic concern", "Pre-cataract or pre-refractive surgery", ] ind_tbl = Table([[bullet(i)] for i in ind_list], colWidths=[W]) ind_tbl.setStyle(TableStyle([ ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("BACKGROUND", (0,0), (-1,-1), ORANGE_LT), ("BOX", (0,0), (-1,-1), 0.5, ORANGE), ])) # Surgical techniques & recurrence surg_data = [ [Paragraph("<b>Technique</b>", bold_s), Paragraph("<b>Procedure</b>", bold_s), Paragraph("<b>Recurrence</b>", bold_s)], [Paragraph("Bare sclera excision", body_s), Paragraph("Pterygium excised, sclera left bare", body_s), Paragraph("~80% — NOT recommended alone", red_s)], [Paragraph("Conjunctival autograft ✓", green_s), Paragraph("Pterygium excised + superior/upper-temporal conjunctival patch grafted with 10-0 nylon or fibrin glue (TISSEEL)", body_s), Paragraph("~5–15% — PREFERRED", green_s)], [Paragraph("Amniotic membrane graft", body_s), Paragraph("Alternative when conjunctiva insufficient (bilateral disease, prior surgery)", body_s), Paragraph("Similar to autograft", body_s)], [Paragraph("Peripheral lamellar keratoplasty", body_s), Paragraph("For deep lesions with stromal scarring", body_s), Paragraph("N/A", body_s)], ] cw_s = [3.5*cm, W-3.5*cm-2.5*cm, 2.5*cm] surg_tbl = Table(surg_data, colWidths=cw_s) surg_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREY_DARK), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_LT]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, GREY_LT), ("BOX", (0,0), (-1,-1), 0.5, GREY_DARK), ])) # Adjuvants adj_data = [ [Paragraph("<b>Agent</b>", bold_s), Paragraph("<b>Mechanism</b>", bold_s), Paragraph("<b>Notes</b>", bold_s)], [Paragraph("Mitomycin C (MMC)", body_s), Paragraph("Alkylating agent; inhibits fibroblast proliferation & neovascularisation", body_s), Paragraph("Intraoperative application; mainly for recurrent pterygia; risk: corneoscleral thinning/necrosis", body_s)], [Paragraph("Beta-irradiation (Sr-90)", body_s), Paragraph("Inhibits fibroblast proliferation", body_s), Paragraph("Postoperative application; alternative to MMC", body_s)], ] adj_tbl = Table(adj_data, colWidths=[3*cm, (W-3*cm)/2, (W-3*cm)/2]) adj_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), HexColor("#4A148C")), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, HexColor("#F3E5F5")]), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, HexColor("#F3E5F5")), ("BOX", (0,0), (-1,-1), 0.5, HexColor("#4A148C")), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 9 — KEY CLINICAL PEARLS # ══════════════════════════════════════════════════════════════════════════════ pearls = [ "Stocker line (iron line) anterior to pterygium head = SLOW growth; its absence = active/fast growth", "Probe test distinguishes true pterygium (probe CANNOT pass) from pseudopterygium (probe CAN pass) at the limbus", "Bare sclera excision alone has ~80% recurrence — always combine with conjunctival autograft ± MMC", "Atypical / aggressive / recurrent pterygium → excision biopsy mandatory to exclude OSSN/SCC", "MMC reserved for recurrent cases — increased risk of corneoscleral necrosis", "Advise UV-protective sunglasses to ALL patients — primary prevention and post-surgery recurrence reduction", "Pre-cataract/refractive surgery: remove pterygium first to allow accurate biometry and stable refraction", ] pearl_rows = [[bullet(p, tip_s)] for p in pearls] pearl_tbl = Table(pearl_rows, colWidths=[W]) pearl_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), HexColor("#F3E5F5")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 8), ("BOX", (0,0), (-1,-1), 0.8, HexColor("#4A148C")), ("LINEBELOW", (0,0), (-1,-1), 0.3, HexColor("#E1BEE7")), ])) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 10 — FOLLOW-UP # ══════════════════════════════════════════════════════════════════════════════ fu_data = [ [Paragraph("Asymptomatic / stable", bold_s), Paragraph("Review every 1–2 years", body_s)], [Paragraph("Active / growing", bold_s), Paragraph("Measure and photograph every 3–12 months; monitor approach to visual axis", body_s)], [Paragraph("Topical steroid use", bold_s), Paragraph("Check IOP after a few weeks; taper and stop once inflammation settles", body_s)], [Paragraph("Post-surgery", bold_s), Paragraph("Reinforce UV protection; watch for recurrence (most within 6 months)", body_s)], ] fu_tbl = Table(fu_data, colWidths=[3.8*cm, W-3.8*cm]) fu_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("ROWBACKGROUNDS",(0,0), (-1,-1), [TEAL_LIGHT, WHITE]), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,-1), 0.3, TEAL_LIGHT), ("BOX", (0,0), (-1,-1), 0.5, TEAL), ])) # ══════════════════════════════════════════════════════════════════════════════ # BUILD STORY # ══════════════════════════════════════════════════════════════════════════════ story = [ title_tbl, spacer(8), sec_header("📌 DEFINITION, AETIOLOGY & PATHOLOGY", TEAL), spacer(3), def_tbl, spacer(8), sec_header("🔬 ANATOMY OF PTERYGIUM — THREE PARTS", ORANGE), spacer(3), anat_tbl, spacer(8), sec_header("🩺 CLINICAL FEATURES", GREEN), spacer(3), symsign_outer, spacer(8), sec_header("⚖️ TRUE PTERYGIUM vs PSEUDOPTERYGIUM", GREY_DARK), spacer(3), psp_tbl, spacer(8), sec_header("🔍 DIFFERENTIAL DIAGNOSIS", RED), spacer(3), ddx_tbl, spacer(8), sec_header("📊 GRADING (CLINICAL)", GREY_MID), spacer(3), grade_tbl, spacer(8), sec_header("🧪 INVESTIGATIONS", TEAL), spacer(3), inv_tbl, spacer(8), sec_header("💊 MANAGEMENT — MEDICAL", GREEN), spacer(3), med_tbl, spacer(8), sec_header("🔪 MANAGEMENT — SURGICAL INDICATIONS", ORANGE), spacer(3), ind_tbl, spacer(8), sec_header("🔪 SURGICAL TECHNIQUES & RECURRENCE RATES", GREY_DARK), spacer(3), surg_tbl, spacer(8), sec_header("⚗️ ADJUVANT ANTI-PROLIFERATIVE AGENTS", HexColor("#4A148C")), spacer(3), adj_tbl, spacer(8), sec_header("💡 KEY CLINICAL PEARLS", HexColor("#4A148C")), spacer(3), pearl_tbl, spacer(8), sec_header("📅 FOLLOW-UP", TEAL), spacer(3), fu_tbl, spacer(10), Paragraph("Sources: Kanski's Clinical Ophthalmology 10th ed. | Wills Eye Manual 8th ed. | Rosen's Emergency Medicine | Robbins & Cotran Pathologic Basis of Disease", foot_s), ] doc.build(story) print("PDF created:", out) EOF

Your quick-reference PDF is ready:

Pterygium Quick Reference

PDF Document · PDF


The PDF covers all the key exam-relevant content across 10 colour-coded sections:
SectionContent
Definition, Aetiology & PathologyUV-B, elastotic degeneration, p53 mutations, histology
AnatomyCap/Head/Body, Stocker line, Fuchs islets
Clinical FeaturesSymptoms vs Signs side-by-side
True vs PseudopterygiumProbe test, location, attachment, history
Differential DiagnosisPinguecula, CIN/OSSN, SCC, limbal dermoid
GradingGrades 1-3 (atrophic → fleshy)
InvestigationsSlit-lamp, topography, biopsy
Medical ManagementUV protection, lubricants, steroids, NSAIDs
Surgical ManagementIndications, techniques, recurrence rates, adjuvants (MMC, beta-irradiation)
Clinical Pearls & Follow-upStocker line significance, probe test, MMC caution
This is a shared conversation. Sign in to Orris to start your own chat.