Effects of Steroids on eye and other system along with indications and and side effects for MS opthalmology 20 marks exam. Use reliable source and reliable make it in pdf format
mkdir -p /tmp/workspace/steroids-ophthalmology && ls /tmp/workspace/steroids-ophthalmology/
~/steroids-ophthalmology/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib.colors import HexColor, white, black
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 PageBreak
OUTPUT = "/tmp/workspace/steroids-ophthalmology/Steroids_in_Ophthalmology_MS_Exam.pdf"
# Colors
DARK_BLUE = HexColor("#1a3a5c")
MID_BLUE = HexColor("#2e6da4")
LIGHT_BLUE = HexColor("#d6e8f7")
ACCENT = HexColor("#e8f0fb")
GOLD = HexColor("#b8860b")
RED = HexColor("#c0392b")
GREEN = HexColor("#1a7a4a")
LIGHT_GRAY = HexColor("#f4f4f4")
BOX_BORDER = HexColor("#2e6da4")
ORANGE = HexColor("#d35400")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
"Title", parent=styles["Title"],
fontSize=22, textColor=white,
alignment=TA_CENTER, spaceAfter=4, fontName="Helvetica-Bold"
)
subtitle_style = ParagraphStyle(
"Subtitle", parent=styles["Normal"],
fontSize=12, textColor=white,
alignment=TA_CENTER, spaceAfter=2, fontName="Helvetica"
)
h1_style = ParagraphStyle(
"H1", parent=styles["Heading1"],
fontSize=14, textColor=white,
spaceAfter=6, spaceBefore=12, fontName="Helvetica-Bold",
leftIndent=0, borderPadding=(5, 8, 5, 8)
)
h2_style = ParagraphStyle(
"H2", parent=styles["Heading2"],
fontSize=12, textColor=DARK_BLUE,
spaceAfter=4, spaceBefore=8, fontName="Helvetica-Bold",
borderPadding=2
)
h3_style = ParagraphStyle(
"H3", parent=styles["Heading3"],
fontSize=11, textColor=MID_BLUE,
spaceAfter=3, spaceBefore=6, fontName="Helvetica-Bold"
)
body_style = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=10, textColor=black,
spaceAfter=4, spaceBefore=2,
leading=14, alignment=TA_JUSTIFY, fontName="Helvetica"
)
bullet_style = ParagraphStyle(
"Bullet", parent=styles["Normal"],
fontSize=10, textColor=black,
spaceAfter=3, spaceBefore=1,
leading=14, fontName="Helvetica",
leftIndent=14, bulletIndent=4
)
note_style = ParagraphStyle(
"Note", parent=styles["Normal"],
fontSize=9.5, textColor=HexColor("#444444"),
spaceAfter=3, spaceBefore=2,
leading=13, fontName="Helvetica-Oblique",
leftIndent=10
)
source_style = ParagraphStyle(
"Source", parent=styles["Normal"],
fontSize=8.5, textColor=HexColor("#666666"),
spaceAfter=2, spaceBefore=1,
leading=12, fontName="Helvetica-Oblique"
)
warning_style = ParagraphStyle(
"Warning", parent=styles["Normal"],
fontSize=10, textColor=RED,
spaceAfter=3, spaceBefore=2,
leading=14, fontName="Helvetica-Bold"
)
def section_header(text, color=DARK_BLUE):
"""Creates a colored section header box."""
data = [[Paragraph(text, h1_style)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), color),
("TOPPADDING", (0, 0), (-1, -1), 8),
("BOTTOMPADDING", (0, 0), (-1, -1), 8),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("RIGHTPADDING", (0, 0), (-1, -1), 10),
("ROUNDEDCORNERS", [4, 4, 4, 4]),
]))
return t
def two_col_table(headers, rows, col_widths=None):
"""Makes a styled two-column table."""
if col_widths is None:
col_widths = [6*cm, 11*cm]
data = [[Paragraph(h, ParagraphStyle("TH", parent=styles["Normal"],
fontSize=10, fontName="Helvetica-Bold",
textColor=white)) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), ParagraphStyle("TD", parent=styles["Normal"],
fontSize=9.5, fontName="Helvetica", leading=13)) for c in row])
t = Table(data, colWidths=col_widths)
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), DARK_BLUE),
("BACKGROUND", (0, 1), (-1, -1), LIGHT_GRAY),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [white, LIGHT_GRAY]),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#cccccc")),
("TOPPADDING", (0, 0), (-1, -1), 6),
("BOTTOMPADDING", (0, 0), (-1, -1), 6),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("RIGHTPADDING", (0, 0), (-1, -1), 8),
("VALIGN", (0, 0), (-1, -1), "TOP"),
]))
return t
def info_box(title, content_paras, bg=LIGHT_BLUE, border_color=BOX_BORDER):
"""Creates a colored info box with title."""
rows = [[Paragraph(f"<b>{title}</b>", ParagraphStyle("BoxTitle", parent=styles["Normal"],
fontSize=10, fontName="Helvetica-Bold", textColor=DARK_BLUE))]]
for p in content_paras:
rows.append([p])
t = Table(rows, colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), LIGHT_BLUE),
("BACKGROUND", (0, 1), (-1, -1), ACCENT),
("BOX", (0, 0), (-1, -1), 1, border_color),
("LINEBELOW", (0, 0), (-1, 0), 1, border_color),
("TOPPADDING", (0, 0), (-1, -1), 6),
("BOTTOMPADDING", (0, 0), (-1, -1), 6),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("RIGHTPADDING", (0, 0), (-1, -1), 10),
]))
return t
# ============================================================
# BUILD CONTENT
# ============================================================
story = []
# === COVER HEADER ===
cover_data = [[
Paragraph("STEROIDS IN OPHTHALMOLOGY", title_style),
Paragraph("Effects on the Eye & Other Systems | Indications | Side Effects", subtitle_style),
Paragraph("MS Ophthalmology Examination — 20 Marks", subtitle_style),
Paragraph("Sources: Goodman & Gilman's Pharmacology · Kanski's Clinical Ophthalmology · Wills Eye Manual · Scott-Brown's · Family Medicine", subtitle_style),
]]
cover = Table(cover_data, colWidths=[17*cm])
cover.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), DARK_BLUE),
("TOPPADDING", (0, 0), (-1, -1), 18),
("BOTTOMPADDING", (0, 0), (-1, -1), 18),
("LEFTPADDING", (0, 0), (-1, -1), 12),
("RIGHTPADDING", (0, 0), (-1, -1), 12),
]))
story.append(cover)
story.append(Spacer(1, 0.5*cm))
# ============================================================
# SECTION 1: INTRODUCTION
# ============================================================
story.append(section_header("1. INTRODUCTION TO STEROIDS IN OPHTHALMOLOGY", DARK_BLUE))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Glucocorticoids (corticosteroids) are among the most widely used therapeutic agents in ophthalmology. "
"They exert potent anti-inflammatory, immunosuppressive, and anti-proliferative effects by binding to "
"intracellular glucocorticoid receptors, leading to modulation of gene transcription. In ophthalmology, "
"they are available in multiple formulations including topical drops/ointments, periocular injections, "
"intravitreal implants, and systemic preparations.",
body_style
))
story.append(Paragraph(
"Commonly used ophthalmic steroids include: <b>Dexamethasone</b>, <b>Prednisolone acetate</b>, "
"<b>Fluorometholone</b>, <b>Loteprednol etabonate</b>, <b>Difluprednate</b>, and <b>Triamcinolone acetonide</b>.",
body_style
))
story.append(Spacer(1, 0.2*cm))
# ============================================================
# SECTION 2: INDICATIONS
# ============================================================
story.append(section_header("2. INDICATIONS FOR STEROIDS IN OPHTHALMOLOGY", MID_BLUE))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("2.1 Topical / Local Indications", h2_style))
indications_table = two_col_table(
["Condition", "Rationale / Notes"],
[
["Anterior uveitis (iritis/iridocyclitis)", "Reduces anterior segment inflammation; prevent posterior synechiae"],
["Allergic conjunctivitis & vernal keratoconjunctivitis", "Fluorometholone or loteprednol preferred to minimize IOP risk"],
["Giant papillary conjunctivitis", "Reduces papillary hypertrophy and mast cell degranulation"],
["Episcleritis / scleritis", "Topical for episcleritis; systemic often needed for scleritis"],
["Keratitis (non-infectious / immune)", "Stromal keratitis, interstitial keratitis, phlyctenular keratitis"],
["Marginal corneal ulcer", "Hypersensitivity to Staphylococcal exotoxins; short course"],
["Postoperative inflammation", "After cataract, refractive, glaucoma filtering, and corneal surgery"],
["Ocular burns (chemical/thermal)", "Limits inflammatory cascade; used with caution re: melting"],
["Corneal graft rejection prophylaxis", "Long-term topical post-penetrating keratoplasty"],
["Cicatricial pemphigoid (ocular)", "Topical and systemic combined approach"],
["Dry eye syndrome (severe inflammatory)", "Short-term; loteprednol preferred"],
],
col_widths=[6.5*cm, 10.5*cm]
)
story.append(indications_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("2.2 Periocular / Intravitreal Indications", h2_style))
story.append(Paragraph(
"Posterior sub-Tenon's capsule injection and intravitreal routes are used when higher intraocular "
"drug concentrations are required:", body_style
))
for item in [
"Posterior uveitis (sub-Tenon's triamcinolone or systemic)",
"Cystoid macular edema (CME) — diabetic, post-surgical, uveitic",
"Diabetic macular edema (intravitreal dexamethasone implant, fluocinolone implant)",
"Sympathetic ophthalmia",
"Visualization during vitrectomy (intravitreal triamcinolone — marks vitreous)",
"Macular edema secondary to retinal vein occlusion",
"Chronic non-infectious uveitis (fluocinolone acetonide or dexamethasone sustained-release implant)",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("2.3 Systemic Indications", h2_style))
for item in [
"Optic neuritis — IV methylprednisolone pulse followed by oral taper (speeds visual recovery, does NOT improve final VA)",
"Arteritic anterior ischemic optic neuropathy (GCA) — high-dose IV steroids; prevent fellow eye involvement",
"Orbital inflammatory disease (orbital pseudotumor, thyroid eye disease — active phase)",
"Sympathetic ophthalmia",
"Severe ocular cicatricial pemphigoid",
"Vogt-Koyanagi-Harada (VKH) disease",
"Severe posterior uveitis / panuveitis",
"Post-surgical inflammation unresponsive to topical therapy",
"Ocular manifestations of systemic vasculitis (e.g., Wegener's, PAN)",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
story.append(info_box(
"CLINICAL PEARL — Route-specific formulations (Goodman & Gilman)",
[
Paragraph("Dexamethasone 0.1% — steroid-responsive inflammatory conditions of the conjunctiva, cornea, anterior segment, and postoperative inflammation.", note_style),
Paragraph("Difluprednate 0.05% emulsion — ocular pain; postoperative ocular inflammation; uveitis.", note_style),
Paragraph("Fluorometholone 0.1–0.25% — allergic conjunctivitis; vernal KC; keratitis; burns; postoperative inflammation; uveitis.", note_style),
Paragraph("Loteprednol etabonate 0.2–0.5% — allergic conjunctivitis; iritis; cyclitis; keratitis; postoperative inflammation. Metabolized to inactive compounds — LOWEST risk of IOP elevation.", note_style),
Paragraph("Prednisolone acetate 1% — bacterial conjunctivitis; anterior segment inflammation; burns; herpes zoster ophthalmicus; uveitis.", note_style),
]
))
story.append(Spacer(1, 0.3*cm))
# ============================================================
# SECTION 3: OCULAR EFFECTS / SIDE EFFECTS
# ============================================================
story.append(section_header("3. EFFECTS OF STEROIDS ON THE EYE", ORANGE))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Steroids exert both therapeutic and adverse effects on ocular structures. Understanding these is "
"fundamental for safe clinical practice.", body_style
))
# 3.1 GLAUCOMA
story.append(Paragraph("3.1 Steroid-Induced (Steroid-Response) Glaucoma", h2_style))
story.append(Paragraph(
"<b>Mechanism:</b> Steroids reduce the outflow facility of the trabecular meshwork (TM) by increasing "
"deposition of extracellular matrix in the TM, reducing phagocytic activity of TM cells, and "
"upregulating myocilin (MYOC) gene expression — all of which impede aqueous humor outflow, "
"resulting in elevated intraocular pressure (IOP).",
body_style
))
story.append(Paragraph(
"<b>Onset:</b> Typically 2–4 weeks after starting ocular (topical, periocular, intravitreal) steroids. "
"Rarely, an acute IOP rise occurs within hours with systemic IV administration.",
body_style
))
story.append(Paragraph(
"<b>Risk factors for steroid response:</b>",
body_style
))
for item in [
"Primary open-angle glaucoma (POAG) or family history of glaucoma",
"Ocular trauma",
"Diabetes mellitus",
"High myopia",
"African descent",
"Young age (children are particularly susceptible)",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Paragraph(
"<b>Prevalence:</b> In the absence of a family history of open-angle glaucoma, only about 5% of "
"normal individuals show a marked IOP increase. With a positive family history, moderate-to-marked "
"IOP elevations may occur in up to 90% of patients.",
body_style
))
story.append(Paragraph(
"<b>Route of risk (most to least):</b> Intravitreal > periocular injection > topical > oral > inhaled/nasal/dermatological",
body_style
))
story.append(Paragraph(
"<b>Potency of IOP rise:</b> More potent steroids (dexamethasone, difluprednate) cause greater IOP rises "
"compared to weaker steroids (fluorometholone, loteprednol). "
"Loteprednol was specifically designed to reduce (but not eliminate) IOP risk.",
body_style
))
story.append(Paragraph(
"<b>Reversal:</b> IOP typically returns to pretreatment levels after stopping steroids. When IOP elevation is severe, "
"it may persist for months. Loteprednol has the best safety profile.",
body_style
))
story.append(Paragraph(
"<b>Management of steroid-response glaucoma:</b>",
body_style
))
for item in [
"Discontinue or taper steroids if clinically feasible",
"Switch to a weaker steroid (fluorometholone, loteprednol) or steroid-sparing agent (NSAID, cyclosporine)",
"Add topical IOP-lowering agents (beta-blockers, alpha-agonists, carbonic anhydrase inhibitors, prostaglandin analogues)",
"Consider trabeculectomy or tube-shunt if IOP remains uncontrolled",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
# 3.2 CATARACT
story.append(Paragraph("3.2 Steroid-Induced Cataract", h2_style))
story.append(Paragraph(
"Chronic corticosteroid use — topical, systemic, or inhaled — is a well-recognized cause of "
"<b>posterior subcapsular cataract (PSC)</b>. This is the most characteristic steroid-induced lens change.",
body_style
))
story.append(Paragraph(
"Steroids inhibit lens epithelial cell differentiation, alter Na-K ATPase pump function, and may cause "
"accumulation of water and protein aggregation in the posterior subcapsular region.",
body_style
))
for item in [
"Typically bilateral, though may be asymmetric",
"Patients complain of glare and reduced vision in bright light",
"PSC is not dose-dependent in a linear fashion — even low doses over long periods can cause it",
"Children are more susceptible than adults",
"Systemic steroids (prednisolone > 10–15 mg/day for > 1 year) carry significant risk",
"In atopic dermatitis — presenile shield-like anterior or PSC cataracts are common and may be exacerbated by long-term steroid therapy",
"Treatment: Cessation of steroids (does not reverse formed PSC); phacoemulsification + IOL implantation when visually significant",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
# 3.3 SECONDARY INFECTION
story.append(Paragraph("3.3 Masking and Exacerbation of Ocular Infections", h2_style))
story.append(Paragraph(
"Topical steroids suppress the immune response and can mask or worsen infections:",
body_style
))
for item in [
"Herpes simplex keratitis — steroids convert stromal immunity to necrotizing keratitis; geographic ulcers enlarge ('serpentine map'); never use in dendritic epithelial HSV without cover",
"Fungal keratitis — steroids promote rapid hyphal penetration, suppress neutrophil response; can lead to catastrophic corneal melting",
"Acanthamoeba keratitis — misdiagnosis and steroid use worsens prognosis significantly",
"Bacterial keratitis — topical steroids should NOT be initiated by emergency physicians; steroids can accelerate bacterial proliferation",
"Corneal melting (keratolysis) — steroids inhibit collagenase inhibitors; risk of perforation",
"Reactivation of latent TB (systemic steroids) — relevant for orbital and posterior segment disease",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Paragraph(
"<b>Rule:</b> Steroids are CONTRAINDICATED in epithelial herpes simplex keratitis (dendritic/geographic ulcer), "
"fungal keratitis, acanthamoeba keratitis, and bacterial corneal ulcer (without ophthalmologist guidance).",
warning_style
))
story.append(Spacer(1, 0.3*cm))
# 3.4 CORNEAL EFFECTS
story.append(Paragraph("3.4 Other Corneal Effects", h2_style))
for item in [
"Delayed corneal wound healing — steroids inhibit fibroblast proliferation and collagen synthesis; important consideration post-PRK, post-keratoplasty",
"After glaucoma filtering surgery — topical steroids reduce fibroblast infiltration thereby reducing subconjunctival scarring (bleb maintenance — beneficial effect)",
"Corneal thinning and distortion — with prolonged use in chronic diseases (e.g., herpes zoster ophthalmicus)",
"Sterile corneal ulcers — with very prolonged use, especially in dry eye disease",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
# 3.5 RETINAL / POSTERIOR EFFECTS
story.append(Paragraph("3.5 Retinal and Posterior Segment Effects", h2_style))
for item in [
"Central serous chorioretinopathy (CSC) — systemic and topical steroids precipitate/aggravate CSC by altering the fluid balance across the RPE",
"Intravitreal steroid implants — used therapeutically for CME, uveitis, DME; risk includes IOP elevation and cataract formation",
"Exudative AMD — exogenous steroids may promote CNV growth; use with caution",
"Steroid-induced IOP elevation can cause glaucomatous optic nerve damage if undetected",
"Intravitreal triamcinolone — 'pseudohypopyon' (white precipitate in anterior chamber) can occur as a complication",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
# 3.6 OPTIC NERVE / RAISED ICP
story.append(Paragraph("3.6 Optic Nerve and Raised Intracranial Pressure Effects", h2_style))
for item in [
"Steroid withdrawal — may precipitate or worsen benign intracranial hypertension (pseudotumor cerebri), causing papilledema",
"Parenteral steroids for optic neuritis — IV methylprednisolone 1 g/day x 3 days speeds visual recovery but does not improve final visual outcome (ONTT data)",
"Caution in raised ICP — steroids may paradoxically worsen papilledema on withdrawal",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.4*cm))
# ============================================================
# SECTION 4: SYSTEMIC SIDE EFFECTS
# ============================================================
story.append(section_header("4. SYSTEMIC SIDE EFFECTS OF STEROIDS", RED))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Systemic corticosteroids affect virtually every organ system. The severity is related to dose, duration, "
"and potency of the steroid used. Short courses (10–14 days) carry minimal long-term risk; "
"chronic use requires vigilant monitoring.",
body_style
))
story.append(Spacer(1, 0.2*cm))
systemic_se = two_col_table(
["System Affected", "Side Effects"],
[
["Hypothalamic-Pituitary-Adrenal (HPA) Axis",
"Adrenal suppression → Cushing's syndrome (moon face, buffalo hump, central obesity, striae, hirsutism); Adrenal crisis on abrupt withdrawal"],
["Metabolic / Endocrine",
"Hyperglycemia → steroid-induced diabetes; Dyslipidemia; Weight gain; Sodium and water retention; Hypokalaemia"],
["Musculoskeletal",
"Osteoporosis → vertebral/hip fractures; Avascular necrosis (osteonecrosis) of femoral and humeral heads; Proximal myopathy; Myopathy (especially fluorinated steroids)"],
["Cardiovascular",
"Hypertension (fluid retention); Accelerated atherosclerosis; Congestive cardiac failure (fluid overload); Electrolyte imbalances"],
["Gastrointestinal",
"Gastritis; Peptic ulcer disease (potentiated with NSAIDs); GI bleeding; Pancreatitis"],
["Immunological / Infections",
"Immunosuppression → opportunistic infections (TB, fungal, Pneumocystis, CMV); Reactivation of latent TB; Impaired wound healing"],
["Psychiatric / CNS",
"Insomnia; Mood lability and euphoria; Psychosis (steroid psychosis); Depression; Behaviour changes; Pseudotumor cerebri on withdrawal"],
["Dermatological",
"Skin thinning and atrophy; Easy bruising; Poor wound healing; Acne; Hirsutism; Striae distensae"],
["Reproductive / Growth",
"Growth retardation in children; Menstrual irregularities; Reduced fertility"],
["Ocular (systemic route)",
"Posterior subcapsular cataract; Steroid-response glaucoma; Central serous chorioretinopathy"],
],
col_widths=[5*cm, 12*cm]
)
story.append(systemic_se)
story.append(Spacer(1, 0.3*cm))
story.append(info_box(
"Short-term vs. Long-term Side Effect Profile (Scott-Brown's Otorhinolaryngology)",
[
Paragraph("<b>Short-term side effects (common):</b> Gastritis, increased blood sugar, increased appetite, behavioural changes/insomnia/irritability, weight gain, salt and water retention, hypertension.", note_style),
Paragraph("<b>Long-term / severe side effects:</b> Pancreatitis, GI bleeding, cataracts, myopathy, avascular necrosis of humeral and femoral heads, diabetes mellitus, osteoporosis, opportunistic infections.", note_style),
Paragraph("<b>Contraindications to systemic steroid use:</b> Insulin-dependent or poorly controlled diabetes, labile hypertension, active tuberculosis, peptic ulcer disease, prior psychiatric reactions to corticosteroids.", note_style),
]
))
story.append(Spacer(1, 0.3*cm))
# ============================================================
# SECTION 5: STEROIDS IN SPECIFIC OPHTHALMIC DISEASES
# ============================================================
story.append(section_header("5. STEROIDS IN SPECIFIC OPHTHALMIC CONDITIONS", HexColor("#1a6b3c")))
story.append(Spacer(1, 0.2*cm))
conditions = [
("Optic Neuritis", [
"IV methylprednisolone 1 g/day × 3 days, then oral prednisolone 1 mg/kg/day × 11 days",
"Speeds visual recovery by approximately 2 weeks (ONTT — Optic Neuritis Treatment Trial)",
"Does NOT improve final visual acuity at 1 year",
"Reduces risk of second demyelinating event (MS) in the short-term",
"Oral prednisolone alone (without IV course) INCREASED the rate of recurrence — avoid",
]),
("Anterior Uveitis", [
"Topical prednisolone acetate 1% — 1 drop every 1–2 hours initially, then taper",
"Plus cycloplegic/mydriatic (atropine, cyclopentolate) to prevent posterior synechiae",
"Aim: flare 0, cells 0 before tapering steroids",
"Systemic steroids for bilateral severe or recurrent disease",
]),
("Posterior Uveitis / Panuveitis", [
"Sub-Tenon's triamcinolone acetonide injection (40 mg/mL) for unilateral disease",
"Systemic prednisolone 1 mg/kg/day + immunosuppressives (methotrexate, mycophenolate, azathioprine) for bilateral",
"Dexamethasone intravitreal implant (Ozurdex 0.7 mg) — approved for non-infectious uveitis",
"Fluocinolone acetonide implant — for chronic non-infectious posterior uveitis",
]),
("Diabetic Macular Edema (DME)", [
"Intravitreal dexamethasone implant (Ozurdex) — for patients who cannot undergo anti-VEGF",
"Intravitreal triamcinolone — off-label; higher IOP and cataract risk",
"Fluocinolone acetonide implant (Iluvien) — approved for DME; 3-year sustained release",
"Anti-VEGF agents (bevacizumab, ranibizumab, aflibercept) are first-line over steroids for DME",
]),
("Giant Cell Arteritis (GCA)", [
"MEDICAL EMERGENCY — IV methylprednisolone 500 mg–1 g/day × 3 days",
"Goal: prevent involvement of fellow eye (risk of bilateral blindness)",
"Then oral prednisolone 60–80 mg/day with SLOW taper over months to years",
"Monitor ESR, CRP; temporal artery biopsy confirms diagnosis",
]),
("Thyroid Eye Disease (TED)", [
"Active phase (Clinical Activity Score ≥ 3): IV methylprednisolone pulsed therapy (500 mg weekly × 6 weeks, then 250 mg weekly × 6 weeks)",
"Total cumulative dose should not exceed 8 g",
"Orbital decompression for compressive optic neuropathy",
"Inactive phase: Rehabilitative surgery (strabismus, eyelid, decompression)",
]),
("Allergic Conjunctivitis", [
"Topical loteprednol etabonate or fluorometholone — preferred for lowest IOP risk",
"Short-term use (1–2 weeks); not for chronic use",
"Combine with topical antihistamines and mast cell stabilizers for step-down therapy",
]),
]
for cond, points in conditions:
story.append(Paragraph(cond, h3_style))
for p in points:
story.append(Paragraph(f"• {p}", bullet_style))
story.append(Spacer(1, 0.1*cm))
story.append(Spacer(1, 0.3*cm))
# ============================================================
# SECTION 6: CONTRAINDICATIONS
# ============================================================
story.append(section_header("6. CONTRAINDICATIONS", RED))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("6.1 Absolute Contraindications (Topical Ocular Steroids)", h2_style))
for item in [
"Active epithelial herpes simplex keratitis (dendritic/geographic ulcer) — will expand the ulcer dramatically",
"Fungal keratitis or suspected fungal infection",
"Acanthamoeba keratitis",
"Active mycobacterial ocular infections",
"Vaccinia and varicella keratitis without antiviral cover",
]:
story.append(Paragraph(f"⚠ {item}", ParagraphStyle("Warn2", parent=bullet_style, textColor=RED)))
story.append(Paragraph("6.2 Relative Contraindications / Caution", h2_style))
for item in [
"Active bacterial corneal ulcer (only with ophthalmologist supervision and concurrent antibiotic cover)",
"Glaucoma or family history of glaucoma — monitor IOP closely",
"Diabetes mellitus (systemic steroids) — risk of loss of glucose control",
"Peptic ulcer disease — co-prescribe PPI",
"Osteoporosis — co-prescribe bisphosphonates + calcium + Vitamin D",
"Active tuberculosis — anti-TB cover required",
"Prior psychiatric reaction to corticosteroids",
"Children — higher risk of both cataracts and HPA suppression",
"Pregnancy — minimal systemic absorption from topical; systemic steroids use with caution",
]:
story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.3*cm))
# ============================================================
# SECTION 7: MONITORING
# ============================================================
story.append(section_header("7. MONITORING DURING STEROID THERAPY", MID_BLUE))
story.append(Spacer(1, 0.2*cm))
monitoring = two_col_table(
["Parameter", "Frequency / Notes"],
[
["Intraocular Pressure (IOP)", "Baseline before starting; recheck at 2–4 weeks; then every 4–6 weeks on long-term topical therapy"],
["Lens (slit-lamp)", "Baseline; every 6–12 months on chronic therapy; look for PSC"],
["Blood glucose", "Baseline; every 2–4 weeks on systemic steroids (especially in diabetics)"],
["Blood pressure", "At every visit for patients on systemic steroids"],
["Bone mineral density (DEXA)", "Baseline at 3–6 months; annually if on chronic steroids (>3 months)"],
["Serum K+ and Na+", "Baseline and periodically for systemic steroids"],
["HPA axis (short synacthen test)", "Before planned steroid withdrawal in long-term patients"],
["Body weight / BMI", "Monthly for patients on systemic steroids"],
["Optic nerve / visual field", "Every 6 months for patients on long-term topical steroids"],
],
col_widths=[5.5*cm, 11.5*cm]
)
story.append(monitoring)
story.append(Spacer(1, 0.3*cm))
# ============================================================
# SECTION 8: KEY EXAM POINTS SUMMARY
# ============================================================
story.append(section_header("8. HIGH-YIELD EXAM SUMMARY TABLE", DARK_BLUE))
story.append(Spacer(1, 0.2*cm))
summary = two_col_table(
["Key Point", "Detail"],
[
["Most potent topical steroid", "Difluprednate 0.05% (highest anti-inflammatory & IOP risk)"],
["Lowest IOP risk topical steroid", "Loteprednol etabonate (metabolized to inactive metabolites)"],
["Steroid-induced cataract type", "Posterior subcapsular cataract (PSC)"],
["Steroid glaucoma mechanism", "Reduced TM outflow facility (myocilin upregulation, ECM accumulation)"],
["Onset of steroid-response glaucoma", "2–4 weeks (topical); rarely acute (systemic)"],
["IOP risk: family history of POAG", "Up to 90% show IOP elevation (vs. 5% in general population)"],
["Steroid absolutely contraindicated in", "Epithelial HSV keratitis, fungal keratitis, acanthamoeba"],
["Optic neuritis treatment", "IV methylprednisolone 1 g/day × 3 days → speeds recovery, NOT final VA"],
["GCA treatment priority", "High-dose IV steroids IMMEDIATELY → prevent fellow eye blindness"],
["Systemic Cushingoid feature", "Moon face, buffalo hump, striae, central obesity"],
["Post-PRK steroid use", "Topical fluorometholone — reduces haze; used for months"],
["Bleb maintenance after trabeculectomy", "Topical steroids reduce fibrosis — prolonged bleb survival"],
["Intravitreal steroid for chronic uveitis", "Fluocinolone acetonide implant (Retisert) or Ozurdex"],
["Steroid withdrawal danger", "Adrenal crisis; also may unmask pseudotumor cerebri"],
["CSC and steroids", "Systemic steroids precipitate/aggravate central serous chorioretinopathy"],
],
col_widths=[6.5*cm, 10.5*cm]
)
story.append(summary)
story.append(Spacer(1, 0.3*cm))
# ============================================================
# REFERENCES
# ============================================================
story.append(HRFlowable(width="100%", thickness=1, color=MID_BLUE, spaceAfter=8))
story.append(Paragraph("References", h2_style))
refs = [
"Goodman & Gilman's The Pharmacological Basis of Therapeutics, 13th ed. — Chapter 74: Ocular Pharmacology (Glucocorticoids section, Table 74-11, 74-12)",
"Kanski's Clinical Ophthalmology: A Systematic Approach, 10th ed. — Chapter 16: Glaucoma; Chapter 21: Inflammatory Eye Disease",
"The Wills Eye Manual: Office and Emergency Room Diagnosis and Treatment of Eye Disease — Chapter 9.9: Steroid-Response Glaucoma",
"Scott-Brown's Otorhinolaryngology, Head & Neck Surgery, 8th ed. — Chapter 60: Complications of Systemic Steroid Treatment (Box 60.2)",
"Textbook of Family Medicine, 9th ed. — Glaucoma (Steroid-induced section)",
"Optic Neuritis Treatment Trial (ONTT) — Comparative evidence on IV vs. oral methylprednisolone for optic neuritis",
]
for i, r in enumerate(refs, 1):
story.append(Paragraph(f"{i}. {r}", source_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Prepared for MS Ophthalmology Examination | August 2026 | Orris Medical Education",
ParagraphStyle("Footer", parent=styles["Normal"], fontSize=8, textColor=HexColor("#888888"), alignment=TA_CENTER)
))
# ============================================================
# BUILD PDF
# ============================================================
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /tmp/workspace/steroids-ophthalmology && python generate_pdf.py
ls -lh /tmp/workspace/steroids-ophthalmology/Steroids_in_Ophthalmology_MS_Exam.pdf
Steroids in Ophthalmology MS Exam
PDF Document · PDF