~/ophthalmology/create_ophthal_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
doc = SimpleDocTemplate(
"/home/daytona/workspace/ophthalmology/Ophthalmology_MustKnow_DrAkshata.pdf",
pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle('Title', parent=styles['Title'],
fontSize=20, textColor=colors.HexColor('#1a3c6e'),
spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold')
subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#555555'),
spaceAfter=12, alignment=TA_CENTER)
section_style = ParagraphStyle('Section', parent=styles['Heading1'],
fontSize=13, textColor=colors.white,
backColor=colors.HexColor('#1a3c6e'),
spaceBefore=14, spaceAfter=6,
fontName='Helvetica-Bold',
leftIndent=-5, rightIndent=-5,
borderPad=5)
sub_style = ParagraphStyle('Sub', parent=styles['Heading2'],
fontSize=11, textColor=colors.HexColor('#1a3c6e'),
spaceBefore=8, spaceAfter=4,
fontName='Helvetica-Bold')
body_style = ParagraphStyle('Body', parent=styles['Normal'],
fontSize=9.5, leading=14,
spaceAfter=4, textColor=colors.HexColor('#222222'))
bullet_style = ParagraphStyle('Bullet', parent=styles['Normal'],
fontSize=9.5, leading=14,
leftIndent=14, spaceAfter=3,
textColor=colors.HexColor('#222222'))
highlight_style = ParagraphStyle('Highlight', parent=styles['Normal'],
fontSize=9.5, leading=14,
backColor=colors.HexColor('#fff3cd'),
borderColor=colors.HexColor('#ffc107'),
borderWidth=1, borderPad=4,
spaceAfter=6)
emergency_style = ParagraphStyle('Emergency', parent=styles['Normal'],
fontSize=9.5, leading=14,
backColor=colors.HexColor('#ffe0e0'),
borderColor=colors.HexColor('#cc0000'),
borderWidth=1, borderPad=4,
spaceAfter=6)
mcq_q_style = ParagraphStyle('MCQ_Q', parent=styles['Normal'],
fontSize=10, leading=14, fontName='Helvetica-Bold',
textColor=colors.HexColor('#1a3c6e'),
spaceBefore=8, spaceAfter=3)
mcq_opt_style = ParagraphStyle('MCQ_Opt', parent=styles['Normal'],
fontSize=9.5, leading=13, leftIndent=12, spaceAfter=1)
mcq_ans_style = ParagraphStyle('MCQ_Ans', parent=styles['Normal'],
fontSize=9.5, leading=13,
backColor=colors.HexColor('#e8f5e9'),
borderColor=colors.HexColor('#2e7d32'),
borderWidth=1, borderPad=4,
spaceAfter=6, textColor=colors.HexColor('#1b5e20'))
def tbl(data, col_widths, header=True):
t = Table(data, colWidths=col_widths, repeatRows=1 if header else 0)
style = [
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3c6e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f4ff')]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]
t.setStyle(TableStyle(style))
return t
story = []
# βββ COVER βββ
story.append(Spacer(1, 1*cm))
story.append(Paragraph("π OPHTHALMOLOGY", title_style))
story.append(Paragraph("MUST-KNOW REVISION GUIDE", title_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("For MBBS Interns | Dr. Akshata", subtitle_style))
story.append(Paragraph("Source: Kanski's Clinical Ophthalmology 10e & Wills Eye Manual", subtitle_style))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1a3c6e'), spaceAfter=10))
# βββ 1. VISUAL ACUITY βββ
story.append(Paragraph("1. VISUAL ACUITY", section_style))
va_data = [
['Snellen Notation', 'Meaning'],
['6/6 (20/20)', 'Normal vision'],
['6/12', 'Can read at 6m what normal eye reads at 12m'],
['6/60', 'Top letter only β legal blindness threshold'],
['CF / HM / PL / NPL', 'Counting Fingers / Hand Movements / Perception of Light / No PL'],
]
story.append(tbl(va_data, [7*cm, 9*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("<b>Pinhole test:</b> VA improves β refractive error. No improvement β pathology (cataract, retina, optic nerve)", bullet_style))
# βββ 2. PUPILS βββ
story.append(Paragraph("2. PUPILS β Reflex Arcs", section_style))
story.append(Paragraph("<b>RAPD (Relative Afferent Pupillary Defect) β Swinging Flashlight Test</b>", sub_style))
story.append(Paragraph("β’ RAPD positive = optic nerve lesion on that side", bullet_style))
story.append(Paragraph("β’ Seen in: Optic neuritis, CRAO, severe retinal detachment", bullet_style))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("<b>Horner Syndrome:</b> Ptosis + Miosis + Anhidrosis (sympathetic chain interruption)", bullet_style))
story.append(Paragraph("β’ Causes: Pancoast tumor, carotid dissection, syringomyelia", bullet_style))
# βββ 3. RED EYE βββ
story.append(Paragraph("3. RED EYE β Differentials", section_style))
red_data = [
['Feature', 'Conjunctivitis', 'Keratitis', 'Acute Angle Closure', 'Anterior Uveitis'],
['Pain', 'Gritty', 'Moderate', 'SEVERE + vomiting', 'Dull ache'],
['Vision', 'Normal', 'Reduced', 'Markedly reduced', 'Mildly reduced'],
['Discharge', 'Mucopurulent', 'Watery', 'None', 'None'],
['Pupil', 'Normal', 'Normal', 'Mid-dilated, fixed', 'Miotic, irregular'],
['Cornea', 'Clear', 'Hazy/ulcer', 'STEAMY', 'KPs'],
['IOP', 'Normal', 'Normal', 'VERY HIGH (>40)', 'Low/normal'],
]
story.append(tbl(red_data, [3*cm, 3.2*cm, 3*cm, 3.5*cm, 3.3*cm]))
# βββ 4. CATARACT βββ
story.append(Paragraph("4. CATARACT", section_style))
cat_data = [
['Type', 'Key Feature', 'Association'],
['Nuclear sclerosis', 'Yellow-brown, myopic shift, "second sight"', 'Normal ageing'],
['Cortical', 'Spoke-wheel / cuneiform opacities', 'Ageing, DM'],
['Posterior subcapsular (PSC)', 'Worst glare β at nodal point', 'Steroids, DM, radiation'],
['Congenital', 'Leukocoria (white pupil)', 'Rubella, galactosaemia, Down syndrome'],
]
story.append(tbl(cat_data, [4.5*cm, 6*cm, 5.5*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("<b>Surgery:</b> Phacoemulsification (gold standard) / SICS (rural/high volume)", bullet_style))
story.append(Paragraph("<b>PCO (Posterior Capsule Opacification):</b> Most common post-op complication β Nd:YAG laser capsulotomy", bullet_style))
# βββ 5. GLAUCOMA βββ
story.append(Paragraph("5. GLAUCOMA", section_style))
story.append(Paragraph("<b>Primary Open Angle Glaucoma (POAG):</b>", sub_style))
story.append(Paragraph("β’ Painless, slow, bilateral, peripheral field loss β tunnel vision", bullet_style))
story.append(Paragraph("β’ IOP >21 mmHg (normal 10β21) β measured by Goldmann applanation tonometry", bullet_style))
story.append(Paragraph("β’ Optic disc: CDR >0.6, notching, ISNT rule violated (Inferior > Superior > Nasal > Temporal)", bullet_style))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("<b>Acute Angle Closure β EMERGENCY:</b>", sub_style))
story.append(Paragraph(
"Sudden severe eye pain + headache + nausea/vomiting + halos around lights. "
"Rock hard eyeball, steamy cornea, mid-dilated FIXED pupil.", emergency_style))
story.append(Paragraph("<b>Treatment:</b> IV Acetazolamide 500 mg β Pilocarpine 2% drops β Timolol 0.5% drops β IV Mannitol β Laser Peripheral Iridotomy (LPI)", bullet_style))
story.append(Spacer(1, 0.3*cm))
glauc_data = [
['Drug', 'Class', 'Mechanism', 'Note'],
['Latanoprost', 'Prostaglandin analogue', 'β Uveoscleral outflow', '1st line POAG'],
['Timolol', 'Ξ²-blocker', 'β Aqueous production', 'Avoid in asthma'],
['Brimonidine', 'Ξ±2 agonist', 'β Aqueous + β outflow', 'β'],
['Dorzolamide', 'Topical CAI', 'β Aqueous production', 'β'],
['Pilocarpine', 'Miotic (cholinergic)', 'β Trabecular outflow', 'Acute AAC'],
['Acetazolamide', 'Systemic CAI', 'β Aqueous production', 'Acute AAC, altitude'],
]
story.append(tbl(glauc_data, [3.2*cm, 3.8*cm, 4.5*cm, 2.5*cm]))
# βββ 6. DIABETIC RETINOPATHY βββ
story.append(Paragraph("6. DIABETIC RETINOPATHY", section_style))
dr_data = [
['Stage', 'Features'],
['NPDR β Mild', 'Microaneurysms ONLY (earliest sign)'],
['NPDR β Moderate', '+ Dot-blot hemorrhages, hard exudates, cotton wool spots'],
['NPDR β Severe (4-2-1 rule)', 'Hemorrhages all 4 quadrants / Venous beading 2 quadrants / IRMA 1 quadrant'],
['PDR', 'Neovascularization β NVD (on disc) or NVE (elsewhere)'],
]
story.append(tbl(dr_data, [5.5*cm, 10.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("β’ <b>Most common cause of vision loss in DM</b> = Diabetic Macular Edema (DME)", bullet_style))
story.append(Paragraph("β’ PDR treatment: Panretinal Photocoagulation (PRP) + Intravitreal anti-VEGF", bullet_style))
story.append(Paragraph("β’ DME treatment: Intravitreal anti-VEGF (Ranibizumab/Bevacizumab) + Focal laser", bullet_style))
# βββ 7. RETINAL VASCULAR OCCLUSIONS βββ
story.append(Paragraph("7. RETINAL VASCULAR OCCLUSIONS", section_style))
story.append(Paragraph("<b>CRAO:</b> Sudden painless profound vision loss. Fundus: Cherry red spot + milky white retina. Emergency: ocular massage, lower IOP, urgent refer.", highlight_style))
story.append(Paragraph("<b>CRVO:</b> 'Stormy sunset / blood and thunder' fundus β flame hemorrhages all 4 quadrants, dilated tortuous veins. Risk: Neovascular (rubeotic) glaucoma.", highlight_style))
# βββ 8. RETINAL DETACHMENT βββ
story.append(Paragraph("8. RETINAL DETACHMENT", section_style))
rd_data = [
['Type', 'Cause', 'Feature'],
['Rhegmatogenous', 'Retinal tear/break', 'Most common, myopes, trauma'],
['Tractional', 'Fibrovascular bands', 'DM, sickle cell, ROP'],
['Exudative', 'Fluid under retina (no break)', 'HTN, tumor, uveitis'],
]
story.append(tbl(rd_data, [4.5*cm, 6*cm, 5.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("<b>Symptoms (in order):</b> Flashes (photopsia) β Floaters β Curtain/shadow descending", bullet_style))
story.append(Paragraph("<b>Treatment:</b> Surgical β scleral buckle / vitrectomy / pneumatic retinopexy", bullet_style))
# βββ 9. VISUAL PATHWAY βββ
story.append(Paragraph("9. VISUAL PATHWAY LESIONS", section_style))
vp_data = [
['Lesion Site', 'Field Defect'],
['Optic nerve', 'Monocular blindness (ipsilateral)'],
['Optic chiasm (pituitary tumor)', 'BITEMPORAL HEMIANOPIA'],
['Optic tract', 'Contralateral homonymous hemianopia'],
["Meyer's loop (temporal lobe)", '"Pie in the sky" β upper quadrantanopia'],
['Parietal lobe (optic radiation)', '"Pie on the floor" β lower quadrantanopia'],
['Occipital cortex', 'Homonymous hemianopia with MACULAR SPARING'],
]
story.append(tbl(vp_data, [7*cm, 9*cm]))
# βββ 10. OPTIC NEURITIS βββ
story.append(Paragraph("10. OPTIC NEURITIS", section_style))
story.append(Paragraph("β’ Demyelination β strongly associated with <b>Multiple Sclerosis</b>", bullet_style))
story.append(Paragraph("β’ Unilateral painful vision loss, worsened by eye movement, reduced color vision (red desaturation)", bullet_style))
story.append(Paragraph("β’ <b>RAPD positive</b>", bullet_style))
story.append(Paragraph("β’ <b>Uhthoff's phenomenon</b> β worsens with heat/exercise", bullet_style))
story.append(Paragraph("β’ Treatment: IV Methylprednisolone (speeds recovery, doesn't improve final visual outcome)", bullet_style))
# βββ 11. TRACHOMA βββ
story.append(Paragraph("11. TRACHOMA (India-Relevant)", section_style))
story.append(Paragraph("<b>C. trachomatis</b> β Leading preventable cause of blindness worldwide", body_style))
trachoma_data = [
['Stage', 'Meaning'],
['TF', 'Trachomatous Follicles (>5 follicles in upper tarsal conjunctiva)'],
['TI', 'Trachomatous Inflammation (intense, papillary)'],
['TS', "Trachomatous Scarring (Arlt's line)"],
['TT', 'Trichiasis (lashes touching globe)'],
['CO', 'Corneal Opacity β BLINDNESS'],
]
story.append(tbl(trachoma_data, [2.5*cm, 13.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("<b>Herbert's pits</b> = scarred limbal follicles (pathognomonic)", bullet_style))
story.append(Paragraph("<b>Treatment:</b> Azithromycin 1g single dose | SAFE strategy (Surgery, Antibiotics, Face wash, Environment)", bullet_style))
# βββ 12. DRUGS βββ
story.append(Paragraph("12. DRUGS IN OPHTHALMOLOGY", section_style))
drug_data = [
['Drug', 'Use', 'Key Side Effect'],
['Atropine drops', 'Cycloplegia, uveitis', 'Raises IOP β AVOID in glaucoma'],
['Pilocarpine', 'Glaucoma, AAC', 'Miosis, brow ache'],
['Timolol', 'POAG', 'Bronchoconstriction β avoid in asthma'],
['Latanoprost', 'POAG (1st line)', 'Iris pigmentation, eyelash growth'],
['Acetazolamide', 'AAC, altitude sickness', 'Renal stones, hypokalemia'],
['Fluorescein', 'Corneal ulcer/abrasion staining', 'Stains epithelial defects green'],
['Rose Bengal', 'Dry eye, viral keratitis', 'Stains dead/devitalized cells red'],
]
story.append(tbl(drug_data, [3.5*cm, 5.5*cm, 7*cm]))
# βββ 13. EMERGENCIES βββ
story.append(Paragraph("13. OPHTHALMIC EMERGENCIES", section_style))
em_data = [
['Emergency', 'Hallmark Sign', 'Immediate Action'],
['Acute Angle Closure', 'Rock hard eye, halos, vomiting', 'IV Acetazolamide + Pilocarpine + Refer'],
['CRAO', 'Cherry red spot, sudden painless loss', 'Ocular massage, lower IOP, urgent refer'],
['Chemical Injury', 'History of splash', 'IMMEDIATE COPIOUS IRRIGATION β no delay!'],
['Endophthalmitis', 'Post-op red eye, hypopyon', 'Intravitreal Vancomycin + Ceftazidime'],
['Retinal Detachment', 'Flashes + floaters + curtain', 'Urgent surgery'],
]
story.append(tbl(em_data, [4*cm, 5.5*cm, 6.5*cm]))
# βββ MEMORY AIDS βββ
story.append(Paragraph("β‘ MEMORY AIDS", section_style))
ma_bullets = [
"<b>ISNT rule</b>: Inferior > Superior > Nasal > Temporal (normal optic disc rim)",
"<b>4-2-1 rule</b>: Severe NPDR β high risk of PDR",
"<b>Cherry red spot</b>: CRAO, Tay-Sachs, Niemann-Pick",
"<b>Pinhole improves VA</b> = refractive error",
"<b>Pinhole doesn't improve VA</b> = pathology",
"<b>RAPD (afferent defect)</b> = optic nerve or severe retinal disease",
"<b>Efferent defect</b> = CN III palsy, Horner's",
"<b>PSC cataract</b> = steroids + DM + radiation",
"<b>Leukocoria</b> = congenital cataract / retinoblastoma β always investigate!",
"<b>Uhthoff's phenomenon</b> = optic neuritis worsens with heat",
]
for b in ma_bullets:
story.append(Paragraph(f"β’ {b}", bullet_style))
story.append(PageBreak())
# βββββββββββββββββββββββββββββββββββββββββββ
# MCQ SECTION
# βββββββββββββββββββββββββββββββββββββββββββ
story.append(Paragraph("π OPHTHALMOLOGY β MCQ PRACTICE", title_style))
story.append(Paragraph("20 High-Yield Questions with Answers & Explanations", subtitle_style))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1a3c6e'), spaceAfter=10))
mcqs = [
{
"q": "1. A 65-year-old diabetic patient complains of gradual painless deterioration of vision, worse in bright light and when reading. Slit lamp shows an opacity just anterior to the posterior capsule. What is the diagnosis?",
"opts": ["A. Nuclear sclerotic cataract", "B. Cortical cataract", "C. Posterior subcapsular cataract", "D. Congenital cataract"],
"ans": "C",
"exp": "Posterior subcapsular cataract (PSC) lies just anterior to the posterior capsule. It is associated with DM, steroids, and radiation. Due to its location at the nodal point, it causes worst glare and difficulty reading β symptoms worsened by miosis (bright light, near work)."
},
{
"q": "2. A 55-year-old woman presents with sudden severe right eye pain, headache, vomiting, and halos around lights. Examination reveals a rock-hard eyeball, steamy cornea, and mid-dilated fixed pupil. IOP is 58 mmHg. What is the first drug to administer?",
"opts": ["A. Latanoprost drops", "B. Atropine drops", "C. IV Acetazolamide 500 mg", "D. Timolol drops"],
"ans": "C",
"exp": "This is Acute Angle Closure Glaucoma β an emergency. IV Acetazolamide 500 mg is given first to rapidly reduce aqueous production and lower IOP. Atropine is CONTRAINDICATED as it dilates the pupil and worsens angle closure. Pilocarpine and Timolol are added after."
},
{
"q": "3. On fundoscopy, a patient is found to have microaneurysms, dot-blot hemorrhages, hard exudates, and cotton wool spots but NO neovascularization. What is the stage of diabetic retinopathy?",
"opts": ["A. NPDR β Mild", "B. NPDR β Moderate", "C. NPDR β Severe", "D. Proliferative DR (PDR)"],
"ans": "B",
"exp": "Moderate NPDR = microaneurysms + dot-blot hemorrhages + hard exudates + cotton wool spots (CWS). Mild NPDR has microaneurysms only. Severe NPDR follows the 4-2-1 rule. PDR is defined by neovascularization."
},
{
"q": "4. A patient presents with sudden, painless, profound loss of vision in one eye. Fundoscopy reveals a cherry red spot at the macula with milky white retina. What is the diagnosis?",
"opts": ["A. Central Retinal Vein Occlusion", "B. Central Retinal Artery Occlusion", "C. Vitreous Hemorrhage", "D. Retinal Detachment"],
"ans": "B",
"exp": "CRAO presents with sudden painless profound vision loss. The cherry red spot occurs because the fovea gets its blood supply from choroidal vessels (which are intact), while surrounding retina turns milky-white due to infarction. CRVO shows 'blood and thunder' fundus with hemorrhages in all 4 quadrants."
},
{
"q": "5. A young woman presents with painful loss of vision in her right eye that worsens when she exercises or takes a hot shower. Swinging flashlight test shows RAPD on the right. MRI brain shows periventricular white matter lesions. What is the most likely diagnosis?",
"opts": ["A. CRAO", "B. Acute Angle Closure Glaucoma", "C. Optic Neuritis (Multiple Sclerosis)", "D. Anterior Uveitis"],
"ans": "C",
"exp": "Optic neuritis β demyelination of the optic nerve, strongly associated with MS. Key features: painful vision loss worsened by movement, RAPD positive, red color desaturation, Uhthoff's phenomenon (worsens with heat/exercise). Periventricular plaques on MRI confirm MS."
},
{
"q": "6. A patient with a known pituitary tumor comes to the OPD with visual complaints. Visual field testing is most likely to show which defect?",
"opts": ["A. Monocular blindness", "B. Bitemporal hemianopia", "C. Left homonymous hemianopia", "D. Right upper quadrantanopia"],
"ans": "B",
"exp": "The optic chiasm lies just above the pituitary gland. A pituitary tumor (macroadenoma) compresses the crossing nasal fibers at the chiasm, resulting in bitemporal hemianopia β loss of peripheral vision in BOTH temporal fields."
},
{
"q": "7. Which anti-glaucoma drug works by increasing uveoscleral outflow and is considered first-line for POAG? It is known to cause increased iris pigmentation.",
"opts": ["A. Timolol", "B. Dorzolamide", "C. Latanoprost", "D. Pilocarpine"],
"ans": "C",
"exp": "Latanoprost is a prostaglandin analogue β the first-line drug for POAG. It increases uveoscleral outflow. Side effects include iris pigmentation (brown pigment deposition), increased eyelash growth, and periorbital fat atrophy."
},
{
"q": "8. A child presents with a white pupillary reflex (leukocoria). The MOST important diagnosis to rule out first is:",
"opts": ["A. Congenital cataract", "B. Retinoblastoma", "C. Persistent hyperplastic primary vitreous", "D. Coats disease"],
"ans": "B",
"exp": "While all options can cause leukocoria, Retinoblastoma must be ruled out first as it is a life-threatening malignancy. It is the most common intraocular tumor in children. Any child with leukocoria requires urgent ophthalmological and oncological evaluation."
},
{
"q": "9. A patient is diagnosed with POAG. Fundoscopy shows a cup-to-disc ratio of 0.8 with inferior notching. Normal IOP is:",
"opts": ["A. 5β10 mmHg", "B. 10β21 mmHg", "C. 22β30 mmHg", "D. >30 mmHg"],
"ans": "B",
"exp": "Normal IOP is 10β21 mmHg (measured by Goldmann applanation tonometry). IOP >21 mmHg is considered ocular hypertension. CDR >0.6, notching of the disc rim, and ISNT rule violation are hallmarks of glaucomatous optic disc damage."
},
{
"q": "10. A patient presents with photopsia (flashes of light), followed by floaters, and now describes a 'dark curtain' coming from above. What is the most likely diagnosis?",
"opts": ["A. Vitreous Hemorrhage", "B. Optic Neuritis", "C. Retinal Detachment", "D. Posterior Vitreous Detachment"],
"ans": "C",
"exp": "The classic triad of retinal detachment: Flashes (photopsia due to vitreoretinal traction) β Floaters (vitreous hemorrhage or pigment cells in vitreous) β Curtain/shadow (from the detached retina progressing toward the macula). This is a surgical emergency."
},
{
"q": "11. Which of the following is the earliest sign of diabetic retinopathy on fundoscopy?",
"opts": ["A. Cotton wool spots", "B. Hard exudates", "C. Microaneurysms", "D. Neovascularization"],
"ans": "C",
"exp": "Microaneurysms are the earliest fundoscopic sign of diabetic retinopathy. They appear as tiny red dots due to focal dilatations in retinal capillaries caused by loss of pericytes."
},
{
"q": "12. A college student with recent onset myopia has a nuclear yellow-brown opacity on slit lamp that shows a good red reflex. The patient says they can now read without their glasses. What phenomenon is this?",
"opts": ["A. Uhthoff's phenomenon", "B. Second sight of the aged (myopic shift)", "C. Accommodation spasm", "D. Presbyopia"],
"ans": "B",
"exp": "Nuclear sclerotic cataract causes increased refractive index of the nucleus, leading to myopic shift. Elderly patients who were previously hypermetropic can suddenly read again without glasses β called 'second sight of the aged.' It is a temporary improvement before vision deteriorates."
},
{
"q": "13. A patient has a corneal ulcer. You want to stain it to assess the extent of epithelial loss. Which dye do you use?",
"opts": ["A. Rose Bengal", "B. Indocyanine green", "C. Fluorescein", "D. Trypan blue"],
"ans": "C",
"exp": "Fluorescein stains areas of epithelial defect (e.g., corneal ulcers, abrasions) bright green under cobalt blue light. Rose Bengal stains devitalized/dead cells and mucus β used in dry eye and viral keratitis (herpetic). Trypan blue stains the anterior lens capsule during cataract surgery."
},
{
"q": "14. A patient with CRVO is at risk of developing which serious complication?",
"opts": ["A. Exudative retinal detachment", "B. Neovascular (rubeotic) glaucoma", "C. Central corneal ulcer", "D. Optic atrophy alone"],
"ans": "B",
"exp": "CRVO causes retinal ischemia β release of VEGF β iris neovascularization (rubeosis iridis) β neovascular (rubeotic) glaucoma. This is a dreaded complication requiring urgent anti-VEGF treatment and PRP to prevent angle closure."
},
{
"q": "15. Trachoma is caused by which organism and what is the pathognomonic sign?",
"opts": [
"A. Neisseria gonorrhoeae β conjunctival follicles",
"B. Chlamydia trachomatis β Herbert's pits",
"C. Herpes simplex β dendritic ulcer",
"D. Staphylococcus aureus β Arlt's line alone"
],
"ans": "B",
"exp": "Trachoma is caused by Chlamydia trachomatis (serovars A, B, Ba, C). Herbert's pits are pathognomonic β they are scarred limbal follicles. Arlt's line is a horizontal scar on the upper tarsal conjunctiva (seen in TS stage). Treatment: Azithromycin 1g single dose."
},
{
"q": "16. A patient using topical steroids for 6 weeks develops raised IOP and field defects. What type of glaucoma is this?",
"opts": ["A. Primary Open Angle Glaucoma", "B. Acute Angle Closure Glaucoma", "C. Steroid-induced glaucoma", "D. Pigmentary glaucoma"],
"ans": "C",
"exp": "Topical (and systemic) steroids can cause steroid-induced glaucoma by reducing aqueous outflow through the trabecular meshwork. This is an open-angle mechanism. Dexamethasone carries the highest risk; prednisolone and fluorometholone have lower risk. Stop steroids + manage IOP."
},
{
"q": "17. An asthmatic patient with POAG should NOT be given which anti-glaucoma drug?",
"opts": ["A. Latanoprost", "B. Timolol", "C. Dorzolamide", "D. Brimonidine"],
"ans": "B",
"exp": "Timolol is a non-selective beta-blocker. Even topical Timolol can be systemically absorbed and cause bronchoconstriction. It is CONTRAINDICATED in asthma and COPD. Use prostaglandin analogues (Latanoprost) as first-line instead."
},
{
"q": "18. Occipital lobe lesion causes homonymous hemianopia. What is the characteristic feature that differentiates it from other homonymous hemianopias?",
"opts": ["A. Complete blindness", "B. Macular sparing", "C. Central scotoma", "D. Altitudinal defect"],
"ans": "B",
"exp": "Occipital cortex (V1) lesion causes homonymous hemianopia with macular SPARING because the macular cortex is at the tip of the occipital lobe and has a dual blood supply (MCA + PCA). A lesion (usually PCA stroke) spares the macular representation."
},
{
"q": "19. A post-operative cataract patient comes 3 years after surgery with gradual blurring of vision. Slit lamp shows posterior capsule haze. What is the treatment?",
"opts": ["A. Repeat phacoemulsification", "B. Argon laser trabeculoplasty", "C. Nd:YAG laser capsulotomy", "D. Topical steroids"],
"ans": "C",
"exp": "Posterior Capsule Opacification (PCO) is the most common late complication of cataract surgery. Residual lens epithelial cells proliferate on the posterior capsule (Elschnig pearls). Treatment: Nd:YAG laser posterior capsulotomy β a quick outpatient procedure."
},
{
"q": "20. A chemical splash injury to the eye occurs in the emergency department. What is the MOST important immediate step?",
"opts": [
"A. Check visual acuity first",
"B. Apply antibiotic drops",
"C. Immediate and copious irrigation with normal saline",
"D. Refer to ophthalmology before any treatment"
],
"ans": "C",
"exp": "Chemical eye injury is a TRUE EMERGENCY. Immediate copious irrigation with normal saline (or any clean water available) must begin IMMEDIATELY β even before full history, VA testing, or referral. Every second of delay worsens the injury. Alkali burns (worse than acid) cause liquefactive necrosis and penetrate deeply. Continue irrigation for at least 20β30 minutes."
},
]
for i, mcq in enumerate(mcqs):
story.append(Paragraph(mcq["q"], mcq_q_style))
for opt in mcq["opts"]:
story.append(Paragraph(opt, mcq_opt_style))
story.append(Paragraph(f"β
Answer: {mcq['ans']} | {mcq['exp']}", mcq_ans_style))
# Footer note
story.append(Spacer(1, 1*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#aaaaaa'), spaceAfter=6))
story.append(Paragraph("Prepared for Dr. Akshata | MBBS Internship 2026 | Source: Kanski's Clinical Ophthalmology 10e + Wills Eye Manual", subtitle_style))
doc.build(story)
print("PDF created successfully!")