Every detail for MBBS level about glaucoma from basics to clinical
glaucoma diagnosis management

| Basis | Types |
|---|---|
| Mechanism | Open-angle vs. Angle-closure |
| Etiology | Primary vs. Secondary |
| Age at onset | Congenital / Infantile / Juvenile / Adult |
GLAUCOMA
├── Primary
│ ├── Primary Open-Angle Glaucoma (POAG)
│ │ └── Normal Tension Glaucoma (NTG) - subset
│ ├── Primary Angle-Closure Glaucoma (PACG)
│ └── Primary Congenital Glaucoma
└── Secondary
├── Open-angle: Pigmentary, Pseudoexfoliation, Steroid-induced, Traumatic
└── Angle-closure: Neovascular, Phacolytic, Phacomorphic, Lens-induced
| Factor | Details |
|---|---|
| IOP | Higher IOP → greater risk; asymmetry ≥4 mmHg is significant |
| Age | More common in older individuals |
| Race | Black individuals: 4× more common, earlier onset, harder to control |
| Family history | Siblings: ~4× risk; offspring: ~2× risk |
| Myopia | Associated with increased incidence and susceptibility |
| Thin cornea (CCT) | Thin central corneal thickness → risk factor |
| Large optic disc | More vulnerable to damage |
| Vascular disease | HTN, cardiovascular disease, vasospasm (migraine), low OPP |
| Anti-VEGF therapy | Repeated intravitreal injections → sustained IOP elevation |
| β-blockers not a risk | Systemic calcium channel blockers may be associated |

| Sign | Description |
|---|---|
| Increased C/D ratio | Cup:Disc ratio >0.6 suspicious; >0.7-0.8 highly suspicious; asymmetry >0.2 between eyes |
| Thinning of NRR | Neuroretinal rim (NRR) thinning, especially inferior > superior > nasal > temporal (ISNT rule - normally Inferior is thickest) |
| Focal NRR notching | Particularly at inferior or superior poles |
| RNFL defects | Wedge-shaped RNFL defects visible with red-free fundus photography |
| Disc haemorrhages | Splinter/flame-shaped haemorrhages at disc margin (Drance haemorrhages) - more common in NTG |
| Vessel changes | Nasalization/baring of circumlinear vessels; "bayonetting" sign at disc margin |
| Laminar dots sign | Exposed lamina cribrosa pores visible through a deep cup |
| Parapapillary atrophy (PPA) | Zone β (inner) is more significant - adjacent to glaucomatous disc |
| Investigation | What it shows |
|---|---|
| Goldmann applanation tonometry | Gold standard for IOP measurement |
| Gonioscopy | Direct visualisation of angle - open angle with visible TM |
| Pachymetry (CCT) | Central corneal thickness - thin CCT underestimates IOP |
| Automated perimetry (HVF) | Visual field defects |
| OCT (Spectral domain) | Quantitative RNFL thickness, GCL analysis, disc parameters |
| HRT (Heidelberg Retina Tomograph) | 3D disc morphometry |
| GDx VCC | RNFL thickness by scanning laser polarimetry |
| Fundus photography | Baseline disc documentation |
| Drug Class | Example | Mechanism | Reduction in IOP |
|---|---|---|---|
| Prostaglandin analogues | Latanoprost, Bimatoprost, Travoprost, Tafluprost | ↑ Uveoscleral outflow (act at FP receptor) | 25-35% |
| β-blockers | Timolol 0.5% (non-selective), Betaxolol (β1-selective) | ↓ AH production (reduce cAMP in ciliary body) | 20-30% |
| α2-agonists | Brimonidine, Apraclonidine | ↓ AH production + ↑ uveoscleral outflow | 20-25% |
| Carbonic anhydrase inhibitors (CAI) | Dorzolamide, Brinzolamide (topical); Acetazolamide (oral) | ↓ AH production (inhibit CA-II in ciliary body) | 15-25% |
| Miotics (cholinergics) | Pilocarpine | ↑ Trabecular outflow (ciliary muscle contraction opens TM spaces) | 20-25% |
| Rho kinase inhibitors | Netarsudil | ↑ Trabecular outflow | 15-20% |
| Mechanism | Description |
|---|---|
| Pupillary block (most common, ~75%) | Aqueous cannot pass from posterior → anterior chamber through pupil → pressure builds posteriorly → iris bombé → peripheral iris pushed against TM |
| Plateau iris | Anteriorly rotated ciliary processes hold peripheral iris forward - angle closes even after iridotomy |
| Phacomorphic | Swollen/thick lens pushes iris forward |
| Malignant (ciliolenticular block) | Aqueous misdirection into vitreous - posterior; often post-surgical |
| Grade | Angle | Structures visible |
|---|---|---|
| Grade 4 (35-45°) | Wide open | Ciliary body visible |
| Grade 3 (25-35°) | Open | Scleral spur visible |
| Grade 2 (20°) | Narrow | Trabeculum visible, NOT scleral spur |
| Grade 1 (10°) | Very narrow | Only Schwalbe line ± top of TM |
| Slit | Extremely narrow | No structures, but no contact |
| Grade 0 (0°) | Closed | Iridocorneal contact |
| Term | Definition |
|---|---|
| PACS (Suspect) | ITC in ≥2 quadrants on gonioscopy, no PAS, no elevated IOP, no disc/field damage |
| PAC | ITC + elevated IOP and/or PAS, but NO glaucomatous damage |
| PACG | PAC + glaucomatous optic disc/field damage |
| Acute congestive attack | Sudden symptomatic IOP elevation due to acute angle closure |
| Drug | Class | MOA | Dose | Key Side Effects | Contraindications |
|---|---|---|---|---|---|
| Latanoprost | PGA (FP agonist) | ↑ Uveoscleral outflow | 1 drop OD (night) | Iris pigmentation (irreversible), lash growth, CME, periocular fat atrophy | Aphakia, uveitic glaucoma (relative) |
| Bimatoprost | Prostamide | ↑ Both outflow pathways | 1 drop OD | Same as above; most potent | Same |
| Travoprost | PGA | ↑ Uveoscleral outflow | 1 drop OD | Same as above | Same |
| Timolol | Non-selective β-blocker | ↓ AH production (↓ cAMP) | 0.5% BD | Bradycardia, bronchospasm, depression, sexual dysfunction, masking of hypoglycaemia | Asthma, COPD, heart block, bradycardia, heart failure |
| Betaxolol | β1-selective blocker | ↓ AH production | 0.5% BD | Less bronchospasm than timolol | Heart block, severe heart failure |
| Brimonidine | Selective α2-agonist | ↓ AH production + ↑ uveoscleral outflow + possible neuroprotection | 0.2% TDS | Allergy, dry mouth, fatigue, CNS depression in infants | Infants (<2 yrs - fatal apnoea), MAOIs |
| Apraclonidine | α2-agonist | ↓ AH production | 0.5-1% TDS | Allergy (up to 40%), tachyphylaxis | Short-term use only |
| Dorzolamide | Topical CAI | ↓ AH production (inhibits CA-II) | 2% TDS | Stinging, superficial punctate keratitis, metallic taste | Sulfonamide allergy (relative) |
| Brinzolamide | Topical CAI | Same | 1% TDS | Less stinging than dorzolamide | Same |
| Acetazolamide | Systemic CAI | ↓ AH production | 250 mg QID or SR 500 mg BD | Paraesthesias (most common), metabolic acidosis, kidney stones, sulfa allergy, aplastic anaemia (rare) | Sulfonamide allergy, kidney/liver failure, sickle cell |
| Pilocarpine | Muscarinic agonist | ↑ Trabecular outflow (ciliary muscle contraction) | 2-4% QID | Miosis, brow ache, accommodative spasm, retinal detachment risk (myopes) | Acute asthma, recent MI |
| Netarsudil | Rho-kinase inhibitor | ↑ Trabecular outflow + ↓ AH production + ↓ episcleral venous pressure | 0.02% OD | Conjunctival hyperaemia, cornea verticillata | - |
| Feature | POAG | PACG (Acute) |
|---|---|---|
| Onset | Insidious | Sudden |
| Symptoms | Asymptomatic (late field loss) | Severe pain, halos, vomiting |
| IOP | Elevated (variable) | Very high (40-80 mmHg) |
| Cornea | Clear | Oedematous (steamy) |
| Anterior chamber | Normal/deep | Shallow |
| Pupil | Normal | Mid-dilated, fixed, oval |
| Angle (gonioscopy) | Open | Closed |
| Fundus | Disc changes when advanced | Disc congested/normal early |
| Race predilection | Black > White | Asian |
| Gender | M = F | F > M |
| Refraction | Myopia association | Hypermetropia association |
| Definitive treatment | IOP-lowering drops/SLT/surgery | Laser iridotomy; phaco |
Make a pharmacology table (PPT) on all glaucoma medications with dosing and contraindications
ls /home/daytona/workspace/ 2>/dev/null && echo "---" && ls /home/daytona/workspace/glaucoma-ppt/ 2>/dev/null || echo "directory not found"
mkdir -p /home/daytona/workspace/glaucoma-ppt
~/glaucoma-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "Glaucoma Pharmacology";
pres.author = "Orris Medical";
// ─── PALETTE ───────────────────────────────────────────────────────────────
const C = {
navy: "0A1E3C", // dominant dark
teal: "0D7377", // primary accent
tealLt: "14AFAA", // lighter teal
sky: "E0F4F4", // very light teal bg
white: "FFFFFF",
gray1: "F4F8F9", // table row alt
gray2: "DDE8EC", // table border / divider
gray3: "8BA6B0", // muted text
orange: "E85D04", // warning / CI highlight
amber: "FFF3CD", // warning row bg
green: "1A7A4A", // go / 1st-line
red: "C0392B", // contraindicated
text: "1C2A35", // body text
thead: "0A1E3C", // table header bg
theadFg: "FFFFFF",
};
// ─── HELPERS ─────────────────────────────────────────────────────────────
function titleBar(slide, title, sub) {
// dark navy bar top
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 13.3, h: 1.0,
fill: { color: C.navy }, line: { color: C.navy }
});
// teal accent stripe
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0.95, w: 13.3, h: 0.06,
fill: { color: C.teal }, line: { color: C.teal }
});
slide.addText(title, {
x: 0.35, y: 0, w: 12.6, h: 0.78, margin: 0,
fontSize: 22, bold: true, color: C.white, valign: "middle"
});
if (sub) {
slide.addText(sub, {
x: 0.35, y: 0.72, w: 12, h: 0.28, margin: 0,
fontSize: 10.5, color: C.tealLt, italic: true, valign: "top"
});
}
// light background for content area
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 1.01, w: 13.3, h: 6.49,
fill: { color: C.white }, line: { color: C.white }
});
}
function footer(slide, pageNum, total) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 7.22, w: 13.3, h: 0.28,
fill: { color: C.navy }, line: { color: C.navy }
});
slide.addText("Glaucoma Pharmacology · MBBS Reference", {
x: 0.3, y: 7.23, w: 10, h: 0.24, margin: 0,
fontSize: 8, color: C.gray3, valign: "middle"
});
slide.addText(`${pageNum} / ${total}`, {
x: 12.0, y: 7.23, w: 1.0, h: 0.24, margin: 0,
fontSize: 8, color: C.gray3, align: "right", valign: "middle"
});
}
// addTable wrapper: cols = [{label, w}], rows = [[cell,...]]
// options: headerBg, altRow, startY, rowH, fontSize
function addTable(slide, cols, rows, opts = {}) {
const {
startY = 1.15, rowH = 0.42, fontSize = 9.5,
headerBg = C.thead, altBg = C.gray1, altBg2 = C.white
} = opts;
const totalW = cols.reduce((s, c) => s + c.w, 0);
const startX = (13.3 - totalW) / 2;
// Header row
let xPos = startX;
cols.forEach(col => {
slide.addShape(pres.shapes.RECTANGLE, {
x: xPos, y: startY, w: col.w, h: rowH,
fill: { color: headerBg }, line: { color: C.gray2, pt: 0.5 }
});
slide.addText(col.label, {
x: xPos, y: startY, w: col.w, h: rowH, margin: [0,4,0,4],
fontSize: fontSize - 0.5, bold: true, color: C.white,
valign: "middle", align: "center", wrap: true
});
xPos += col.w;
});
// Data rows
rows.forEach((row, ri) => {
const bg = ri % 2 === 0 ? altBg : altBg2;
const yPos = startY + rowH * (ri + 1);
xPos = startX;
row.forEach((cell, ci) => {
const cellBg = cell.bg || bg;
slide.addShape(pres.shapes.RECTANGLE, {
x: xPos, y: yPos, w: cols[ci].w, h: rowH,
fill: { color: cellBg }, line: { color: C.gray2, pt: 0.5 }
});
slide.addText(cell.text || cell, {
x: xPos, y: yPos, w: cols[ci].w, h: rowH, margin: [0,4,0,4],
fontSize: cell.fs || fontSize,
bold: cell.bold || false,
color: cell.color || C.text,
valign: "middle", align: cell.align || "left", wrap: true
});
xPos += cols[ci].w;
});
});
}
// ─── TOTAL SLIDES ────────────────────────────────────────────────────────
const TOTAL = 9;
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 1: COVER
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
// Full navy background
s.addShape(pres.shapes.RECTANGLE, {
x:0, y:0, w:13.3, h:7.5, fill:{color:C.navy}, line:{color:C.navy}
});
// Decorative teal side bar
s.addShape(pres.shapes.RECTANGLE, {
x:0, y:0, w:0.22, h:7.5, fill:{color:C.teal}, line:{color:C.teal}
});
// Large teal accent block
s.addShape(pres.shapes.RECTANGLE, {
x:0.22, y:2.8, w:13.08, h:0.08, fill:{color:C.tealLt}, line:{color:C.tealLt}
});
s.addShape(pres.shapes.RECTANGLE, {
x:0.22, y:4.55, w:13.08, h:0.06, fill:{color:C.teal}, line:{color:C.teal}
});
// Eye icon text (unicode)
s.addText("👁", {
x: 0.8, y: 0.7, w: 1.2, h: 1.2, fontSize: 60, align: "center"
});
s.addText("GLAUCOMA", {
x: 0.5, y: 1.1, w: 12.3, h: 1.1,
fontSize: 54, bold: true, color: C.tealLt,
align: "center", charSpacing: 8
});
s.addText("PHARMACOLOGY", {
x: 0.5, y: 2.1, w: 12.3, h: 0.75,
fontSize: 38, bold: true, color: C.white,
align: "center", charSpacing: 4
});
s.addText("Complete Drug Reference with Dosing, Mechanisms & Contraindications", {
x: 1.5, y: 2.95, w: 10.3, h: 0.55,
fontSize: 14, color: C.tealLt, align: "center", italic: true
});
const badges = [
{ label: "6 Drug Classes", x: 1.2 },
{ label: "18+ Agents", x: 4.0 },
{ label: "MBBS Level", x: 6.8 },
{ label: "Exam Ready", x: 9.6 },
];
badges.forEach(b => {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: b.x, y: 3.7, w: 2.4, h: 0.48,
fill: { color: C.teal }, line: { color: C.tealLt }, rectRadius: 0.08
});
s.addText(b.label, {
x: b.x, y: 3.7, w: 2.4, h: 0.48, margin: 0,
fontSize: 11.5, bold: true, color: C.white, align: "center", valign: "middle"
});
});
s.addText("Sources: Kanski's Clinical Ophthalmology 10e · Katzung's Pharmacology 16e · Goodman & Gilman's", {
x: 0.5, y: 4.75, w: 12.3, h: 0.3,
fontSize: 9, color: C.gray3, align: "center"
});
// Slide list
const slideTopics = [
"Overview & Classification", "Prostaglandin Analogues", "Beta-Blockers",
"Alpha-2 Agonists", "Carbonic Anhydrase Inhibitors", "Miotics & Rho-Kinase Inhibitors",
"Hyperosmotic Agents", "Drug Comparison & First-Line Summary"
];
slideTopics.forEach((t, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
s.addText(`${i+1}. ${t}`, {
x: 1.2 + col * 6.0, y: 5.2 + row * 0.44, w: 5.6, h: 0.38, margin: 0,
fontSize: 10, color: C.gray3
});
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 2: OVERVIEW & CLASSIFICATION
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Overview of Glaucoma Drug Classes", "Mechanism-based classification of all IOP-lowering agents");
footer(s, 2, TOTAL);
const cols = [
{ label: "Drug Class", w: 2.6 },
{ label: "Examples", w: 3.0 },
{ label: "Primary Mechanism", w: 3.2 },
{ label: "IOP Reduction", w: 1.5 },
{ label: "Route / Freq.", w: 1.5 },
{ label: "First Line?", w: 1.2 },
];
const rows = [
[
{ text: "Prostaglandin Analogues", bold: true, color: C.navy },
"Latanoprost, Bimatoprost, Travoprost, Tafluprost",
"↑ Uveoscleral outflow (FP receptor agonism)",
{ text: "25–35%", bold: true, color: C.green },
"Topical / OD (nocte)",
{ text: "✔ YES", bold: true, color: C.green }
],
[
{ text: "Beta-Blockers", bold: true, color: C.navy },
"Timolol, Betaxolol, Levobunolol, Carteolol",
"↓ Aqueous humor production (↓ cAMP in ciliary body)",
{ text: "20–30%", bold: true, color: C.teal },
"Topical / BD",
{ text: "✔ YES", bold: true, color: C.green }
],
[
{ text: "Alpha-2 Agonists", bold: true, color: C.navy },
"Brimonidine 0.2%, Apraclonidine 0.5–1%",
"↓ AH production + ↑ uveoscleral outflow",
{ text: "20–25%", bold: true, color: C.teal },
"Topical / BD–TDS",
{ text: "✔ YES*", bold: true, color: C.green }
],
[
{ text: "Carbonic Anhydrase Inhibitors", bold: true, color: C.navy },
"Dorzolamide, Brinzolamide (topical); Acetazolamide (oral)",
"↓ AH production (inhibit CA-II in ciliary epithelium)",
{ text: "15–25%", bold: true, color: C.teal },
"Topical TDS / Oral",
{ text: "✔ Add-on", bold: true, color: C.teal }
],
[
{ text: "Miotics (Cholinergics)", bold: true, color: C.navy },
"Pilocarpine 1–4%, Carbachol",
"↑ Trabecular outflow (ciliary muscle contraction opens TM)",
{ text: "20–25%", bold: true, color: C.teal },
"Topical / QDS",
{ text: "Limited now", color: C.gray3 }
],
[
{ text: "Rho-Kinase Inhibitors", bold: true, color: C.navy },
"Netarsudil 0.02%",
"↑ Trabecular outflow + ↓ AH production + ↓ episcleral VP",
{ text: "15–20%", bold: true, color: C.teal },
"Topical / OD",
{ text: "Add-on / newer", color: C.gray3 }
],
[
{ text: "Hyperosmotic Agents", bold: true, color: C.navy },
"Mannitol 20% IV, Glycerol 50% oral, Isosorbide oral",
"↑ Plasma osmolality → draw fluid from vitreous → ↓ IOP",
{ text: "30–50%", bold: true, color: C.orange },
"IV / Oral (acute)",
{ text: "Acute only", bold: true, color: C.orange }
],
];
addTable(s, cols, rows, { startY: 1.15, rowH: 0.6, fontSize: 9 });
s.addText("* Brimonidine absolutely contraindicated in infants <2 years (apnoea risk)", {
x: 0.3, y: 6.85, w: 12, h: 0.25, margin: 0,
fontSize: 8.5, color: C.orange, italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 3: PROSTAGLANDIN ANALOGUES
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Prostaglandin Analogues (PGA)", "First-line IOP-lowering therapy — most efficacious class");
footer(s, 3, TOTAL);
// Class badge
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 9.5, y: 1.1, w: 3.5, h: 0.45,
fill: { color: C.green }, line: { color: C.green }, rectRadius: 0.07
});
s.addText("FIRST-LINE THERAPY", {
x: 9.5, y: 1.1, w: 3.5, h: 0.45, margin: 0,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle"
});
const cols = [
{ label: "Drug", w: 1.8 },
{ label: "Concentration", w: 1.5 },
{ label: "Dose & Frequency", w: 2.0 },
{ label: "Mechanism", w: 2.8 },
{ label: "Adverse Effects", w: 2.5 },
{ label: "Contraindications", w: 2.4 },
];
const rows = [
[
{ text: "Latanoprost", bold: true, color: C.teal },
"0.005%",
"1 drop OD\n(evening/night)",
"FP receptor agonist → ↑ uveoscleral outflow via MMP-mediated remodelling of ciliary body ECM",
"Iris hyperpigmentation (irreversible), ↑ eyelash growth, periocular skin darkening, CME",
{ text: "Aphakia, pseudophakia with torn capsule, active uveitis (relative)", color: C.red }
],
[
{ text: "Bimatoprost", bold: true, color: C.teal },
"0.01%, 0.03%",
"1 drop OD\n(evening)",
"Prostamide receptor + FP receptor → ↑ both uveoscleral AND trabecular outflow",
"Same as above; most potent; most lash growth (cosmetic use for hypotrichosis)",
{ text: "Same as latanoprost", color: C.red }
],
[
{ text: "Travoprost", bold: true, color: C.teal },
"0.004%",
"1 drop OD\n(evening)",
"Highly selective FP agonist → ↑ uveoscleral outflow",
"Same class effects; preserved formulation may irritate",
{ text: "Same as latanoprost; preservative-free available", color: C.red }
],
[
{ text: "Tafluprost", bold: true, color: C.teal },
"0.0015%",
"1 drop OD\n(evening)",
"FP receptor agonist; preservative-free single-dose unit",
"Fewer local side effects due to preservative-free formulation",
{ text: "Same class; preferred in dry eye patients", color: C.red }
],
];
addTable(s, cols, rows, { startY: 1.63, rowH: 0.7, fontSize: 8.8 });
// Key notes box
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 6.45, w: 12.8, h: 0.68,
fill: { color: C.sky }, line: { color: C.teal, pt: 1 }
});
s.addText([
{ text: "Class Notes: ", options: { bold: true, color: C.navy } },
{ text: "All PGAs act at FP (prostanoid F) receptor. ", options: { color: C.text } },
{ text: "IOP reduction 25–35%. ", options: { color: C.text } },
{ text: "Once-daily dosing (nocte) — increases compliance. ", options: { color: C.text } },
{ text: "Iris pigmentation changes are IRREVERSIBLE — warn patient. ", options: { bold: true, color: C.orange } },
{ text: "Avoid in CME-prone eyes (aphakia, uveitis).", options: { color: C.text } },
], { x: 0.4, y: 6.47, w: 12.5, h: 0.64, margin: [0,4,0,4], fontSize: 8.5, valign: "middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 4: BETA-BLOCKERS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Beta-Adrenergic Blockers", "Reduce aqueous humor production — first-line alternative to PGAs");
footer(s, 4, TOTAL);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 9.5, y: 1.1, w: 3.5, h: 0.45,
fill: { color: C.green }, line: { color: C.green }, rectRadius: 0.07
});
s.addText("FIRST-LINE (if PGA CI)", {
x: 9.5, y: 1.1, w: 3.5, h: 0.45, margin: 0,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle"
});
const cols = [
{ label: "Drug", w: 1.9 },
{ label: "Selectivity", w: 1.6 },
{ label: "Concentration / Dose", w: 2.2 },
{ label: "Mechanism", w: 2.5 },
{ label: "Systemic Adverse Effects", w: 2.5 },
{ label: "Contraindications", w: 2.3 },
];
const rows = [
[
{ text: "Timolol", bold: true, color: C.navy },
{ text: "Non-selective\n(β1 + β2)", color: C.text },
"0.25%, 0.5%\nBD; gel OD",
"↓ cAMP in ciliary body → ↓ aqueous secretion by ~40–50%",
{ text: "Bradycardia, bronchospasm, heart block, hypotension, depression, sexual dysfunction, masking of hypoglycaemia", color: C.red },
{ text: "Asthma, COPD, 2°/3° heart block, bradycardia (<50), decompensated HF, SSSS syndrome", bg: C.amber, color: C.red }
],
[
{ text: "Betaxolol", bold: true, color: C.navy },
{ text: "β1-selective\n(cardioselective)", color: C.green },
"0.25%, 0.5%\nBD",
"↓ aqueous production; β1-selective reduces systemic β2 effects; possible neuroprotection",
"Less bronchospasm than timolol; bradycardia still possible; still can worsen pulmonary sx",
{ text: "2°/3° heart block, bradycardia, decompensated HF; use cautiously in asthma (still not truly safe)", color: C.orange }
],
[
{ text: "Levobunolol", bold: true, color: C.navy },
{ text: "Non-selective\n(β1 + β2)", color: C.text },
"0.25%, 0.5%\nOD or BD",
"Same as timolol; levoisomer form",
"Same systemic risks as timolol",
{ text: "Same as timolol", color: C.red }
],
[
{ text: "Carteolol", bold: true, color: C.navy },
{ text: "Non-selective\n(ISA)", color: C.text },
"1%, 2%\nBD",
"Non-selective β-block + intrinsic sympathomimetic activity (ISA) → less bradycardia",
"Less effect on heart rate due to ISA; bronchospasm still possible",
{ text: "Same as timolol; ISA may reduce cardiac side effects slightly", color: C.orange }
],
[
{ text: "Metipranolol", bold: true, color: C.navy },
{ text: "Non-selective", color: C.text },
"0.1%, 0.3%\nBD",
"Same mechanism as timolol; lower potency",
"Same class effects; uveitis reported rarely",
{ text: "Same as timolol", color: C.red }
],
];
addTable(s, cols, rows, { startY: 1.63, rowH: 0.6, fontSize: 8.5 });
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 6.45, w: 12.8, h: 0.68,
fill: { color: C.amber }, line: { color: C.orange, pt: 1 }
});
s.addText([
{ text: "⚠ Systemic Absorption Warning: ", options: { bold: true, color: C.red } },
{ text: "Topical timolol 0.5% delivers systemic dose sufficient to cause bradycardia/bronchospasm. ", options: { color: C.text } },
{ text: "Nasolacrimal occlusion (NLO) after instillation reduces systemic absorption. ", options: { color: C.text } },
{ text: "Timolol + verapamil → increased risk of complete heart block. ", options: { bold: true, color: C.red } },
{ text: "Maximum local dose ~1 mg/day (tiny vs. oral 10–60 mg).", options: { color: C.text } },
], { x: 0.4, y: 6.47, w: 12.5, h: 0.64, margin: [0,4,0,4], fontSize: 8.5, valign: "middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 5: ALPHA-2 AGONISTS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Alpha-2 Adrenergic Agonists", "Dual mechanism: ↓ aqueous production + ↑ uveoscleral outflow");
footer(s, 5, TOTAL);
const cols = [
{ label: "Drug", w: 1.9 },
{ label: "Concentration / Dose", w: 2.0 },
{ label: "Mechanism", w: 3.0 },
{ label: "Adverse Effects", w: 2.5 },
{ label: "Contraindications", w: 2.2 },
{ label: "Notes", w: 1.7 },
];
const rows = [
[
{ text: "Brimonidine", bold: true, color: C.teal },
"0.1%, 0.15%, 0.2%\nBD–TDS",
"Selective α2 agonist → ↓ AH production (↓ cAMP) + ↑ uveoscleral outflow. Possible neuroprotective effect on RGCs",
"Ocular allergy (10–20%), follicular conjunctivitis, dry mouth, fatigue, headache, drowsiness, CNS depression",
{ text: "INFANTS <2 yrs (FATAL apnoea/CNS depression — absolute CI), MAOIs, severe CV disease", bg: C.amber, color: C.red, bold: true },
{ text: "Drug of choice for add-on; neuroprotection still being studied", color: C.gray3 }
],
[
{ text: "Apraclonidine", bold: true, color: C.teal },
"0.5%, 1%\nTDS (0.5%) or single dose (1%)",
"Less selective α2 agonist (also mild α1) → ↓ AH production; useful for prevention of IOP spike post-laser",
{ text: "HIGH allergy rate (up to 40% long-term), tachyphylaxis (loses efficacy), lid retraction, dry mouth, blanching", color: C.orange },
"MAOIs, tricyclics; NOT suitable for chronic use",
{ text: "Short-term use only; pre/post laser treatment; NOT for chronic glaucoma management", color: C.orange, bold: false }
],
];
addTable(s, cols, rows, { startY: 1.65, rowH: 1.3, fontSize: 9.5 });
// Comparison panel
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 4.55, w: 6.1, h: 1.65,
fill: { color: C.sky }, line: { color: C.teal, pt: 1 }
});
s.addText("Brimonidine vs. Apraclonidine", {
x: 0.4, y: 4.6, w: 5.8, h: 0.35, margin: 0,
fontSize: 11, bold: true, color: C.navy
});
const compItems = [
"Brimonidine: more selective α2, longer-term use, neuroprotection",
"Apraclonidine: less selective, tachyphylaxis limits long-term use",
"Both reduce IOP by ~20–25%",
"Brimonidine preferred for chronic management",
];
compItems.forEach((item, i) => {
s.addText([
{ text: "• ", options: { color: C.teal, bold: true } },
{ text: item, options: { color: C.text } }
], {
x: 0.4, y: 5.0 + i * 0.28, w: 5.8, h: 0.28, margin: [0,4,0,4], fontSize: 9
});
});
// MBBS key fact
s.addShape(pres.shapes.RECTANGLE, {
x: 6.65, y: 4.55, w: 6.4, h: 1.65,
fill: { color: C.amber }, line: { color: C.orange, pt: 1.2 }
});
s.addText("⚠ EXAM HIGH-YIELD", {
x: 6.8, y: 4.6, w: 6.0, h: 0.35, margin: 0,
fontSize: 11, bold: true, color: C.red
});
const examItems = [
"Brimonidine is ABSOLUTELY CONTRAINDICATED in infants <2 years",
"Causes fatal CNS depression and apnoea in neonates/infants",
"Apraclonidine: use only acutely (pre/post-laser) — tachyphylaxis",
"Both contraindicated with MAOIs (hypertensive crisis risk)",
];
examItems.forEach((item, i) => {
s.addText([
{ text: "⚡ ", options: { color: C.red, bold: true } },
{ text: item, options: { color: C.text } }
], {
x: 6.8, y: 5.0 + i * 0.28, w: 6.0, h: 0.28, margin: [0,4,0,4], fontSize: 9
});
});
footer(s, 5, TOTAL);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 6: CARBONIC ANHYDRASE INHIBITORS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Carbonic Anhydrase Inhibitors (CAIs)", "Inhibit CA-II in ciliary epithelium → ↓ aqueous humor secretion by 40–50%");
footer(s, 6, TOTAL);
const cols = [
{ label: "Drug", w: 1.8 },
{ label: "Route", w: 0.9 },
{ label: "Concentration / Dose", w: 2.1 },
{ label: "Mechanism", w: 2.6 },
{ label: "Adverse Effects", w: 2.7 },
{ label: "Contraindications", w: 2.5 },
];
const rows = [
[
{ text: "Dorzolamide", bold: true, color: C.teal },
{ text: "TOPICAL", color: C.green, bold: true },
"2%\nTDS (alone) or BD (combo with timolol)",
"Inhibits CA-II in ciliary epithelium → ↓ HCO3− formation → ↓ Na+/fluid secretion → ↓ AH production",
"Ocular stinging/burning (on instillation), superficial punctate keratitis, blurred vision, bitter metallic taste",
{ text: "Sulfonamide allergy (cross-reactivity), severe renal impairment (accumulation), corneal endothelial disease", color: C.red }
],
[
{ text: "Brinzolamide", bold: true, color: C.teal },
{ text: "TOPICAL", color: C.green, bold: true },
"1%\nTDS",
"Same as dorzolamide; suspension formulation — less stinging due to near-neutral pH",
"Less stinging than dorzolamide (pH 7.5 vs 5.6); blurred vision more common (suspension); bitter taste",
{ text: "Same as dorzolamide; slightly better tolerated", color: C.orange }
],
[
{ text: "Acetazolamide", bold: true, color: C.navy },
{ text: "ORAL / IV", color: C.orange, bold: true },
"250 mg QID (oral)\nor SR 500 mg BD\nor 500 mg IV (acute)",
"Systemic CA inhibition → ↓ AH production. Used in acute angle closure attack. Not for long-term use",
{ text: "Paraesthesias (most common — tingling hands/feet), metabolic acidosis, hypokalaemia, polyuria, renal calculi, aplastic anaemia (rare), Stevens-Johnson syndrome", color: C.red, bold: false },
{ text: "Sulfonamide allergy (absolute), severe hepatic/renal failure, Addison's disease, hypokalaemia, sickle cell anaemia (acidosis risk), first trimester pregnancy", bg: C.amber, color: C.red }
],
[
{ text: "Methazolamide", bold: true, color: C.navy },
{ text: "ORAL", color: C.orange, bold: true },
"25–50 mg BD–TDS",
"Less potent systemic CA inhibitor; fewer renal side effects than acetazolamide",
"Similar to acetazolamide but milder; paraesthesias, fatigue, GI upset",
{ text: "Same as acetazolamide", color: C.red }
],
];
addTable(s, cols, rows, { startY: 1.65, rowH: 0.78, fontSize: 8.5 });
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 6.48, w: 12.8, h: 0.62,
fill: { color: C.sky }, line: { color: C.teal, pt: 1 }
});
s.addText([
{ text: "Key Fact: ", options: { bold: true, color: C.navy } },
{ text: "Topical CAIs (dorzolamide/brinzolamide) preferred for chronic use — fewer systemic effects. ", options: { color: C.text } },
{ text: "Oral acetazolamide reserved for acute attacks and short-term use. ", options: { color: C.text } },
{ text: "Paraesthesias (tingling) = most common side effect of acetazolamide. ", options: { bold: true, color: C.orange } },
{ text: "Both dorzolamide and brinzolamide can be combined with timolol (Cosopt / Azarga).", options: { color: C.text } },
], { x: 0.4, y: 6.5, w: 12.5, h: 0.58, margin: [0,4,0,4], fontSize: 8.5, valign: "middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 7: MIOTICS + RHO-KINASE INHIBITORS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Miotics (Cholinergics) & Rho-Kinase Inhibitors", "Enhance trabecular outflow via different mechanisms");
footer(s, 7, TOTAL);
// --- MIOTICS section header ---
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 1.15, w: 12.8, h: 0.32,
fill: { color: C.teal }, line: { color: C.teal }
});
s.addText("MIOTICS — Muscarinic (Cholinergic) Agonists", {
x: 0.4, y: 1.15, w: 12.5, h: 0.32, margin: 0,
fontSize: 10, bold: true, color: C.white, valign: "middle"
});
const miCols = [
{ label: "Drug", w: 1.8 },
{ label: "Concentration / Dose", w: 2.0 },
{ label: "Mechanism", w: 3.0 },
{ label: "Adverse Effects", w: 3.2 },
{ label: "Contraindications", w: 2.8 },
];
const miRows = [
[
{ text: "Pilocarpine", bold: true, color: C.navy },
"1–4%\nQDS (chronic) / 2% acute angle closure",
"M3 receptor agonist → ciliary muscle contraction → opens trabecular meshwork spaces → ↑ conventional outflow. Also constricts pupil (miosis) → used in angle closure",
"Miosis (dim vision in elderly), accommodative spasm (brow ache), blurred vision, retinal detachment risk in high myopes, systemic: sweating, salivation, bronchospasm",
{ text: "Acute asthma, recent MI, anterior uveitis (pupil constriction worsens synechiae), high myopia (relative — RD risk), iritis", color: C.red }
],
[
{ text: "Carbachol", bold: true, color: C.navy },
"0.75–3%\nBD–TDS",
"Direct cholinergic + indirect (anticholinesterase) → stronger and longer action than pilocarpine",
"Same as pilocarpine; more potent systemic muscarinic effects",
{ text: "Same as pilocarpine; rarely used topically now", color: C.red }
],
];
addTable(s, miCols, miRows, { startY: 1.47, rowH: 0.75, fontSize: 8.8 });
// --- ROKI section header ---
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 3.1, w: 12.8, h: 0.32,
fill: { color: C.navy }, line: { color: C.navy }
});
s.addText("RHO-KINASE (ROCK) INHIBITORS — Novel Class", {
x: 0.4, y: 3.1, w: 12.5, h: 0.32, margin: 0,
fontSize: 10, bold: true, color: C.tealLt, valign: "middle"
});
const rkCols = [
{ label: "Drug", w: 1.8 },
{ label: "Concentration / Dose", w: 2.0 },
{ label: "Mechanism", w: 3.5 },
{ label: "Adverse Effects", w: 3.2 },
{ label: "Contraindications / Notes", w: 2.3 },
];
const rkRows = [
[
{ text: "Netarsudil", bold: true, color: C.teal },
"0.02%\nOD (evening)",
"Rho-kinase inhibitor: ↑ trabecular meshwork outflow by relaxing TM and Schlemm's canal cells + ↓ episcleral venous pressure + ↓ AH production. Triple mechanism",
"Conjunctival hyperaemia (very common ~50%), conjunctival haemorrhage, cornea verticillata (whirl-like deposits — reversible), corneal staining",
{ text: "No absolute CI listed; use in combination when other drugs insufficient. Not established in pregnancy", color: C.gray3 }
],
[
{ text: "Ripasudil", bold: true, color: C.teal },
"0.4%\nBD",
"ROCK1 and ROCK2 inhibitor → same TM relaxation mechanism; also used in corneal endothelial disease",
"Conjunctival hyperaemia, blepharitis, allergic conjunctivitis",
{ text: "Limited availability; used in Japan; emerging data", color: C.gray3 }
],
];
addTable(s, rkCols, rkRows, { startY: 3.42, rowH: 0.78, fontSize: 8.8 });
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 5.1, w: 12.8, h: 0.5,
fill: { color: C.amber }, line: { color: C.orange, pt: 1 }
});
s.addText([
{ text: "Pilocarpine in Acute Angle Closure: ", options: { bold: true, color: C.red } },
{ text: "Do NOT repeat pilocarpine if IOP >40 mmHg — ischaemia of iris sphincter makes it unresponsive. ", options: { color: C.text } },
{ text: "Pilocarpine 2% drops to affected eye, 1% to fellow eye prophylactically.", options: { color: C.text } },
], { x: 0.4, y: 5.12, w: 12.5, h: 0.46, margin: [0,4,0,4], fontSize: 9, valign: "middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 8: HYPEROSMOTIC AGENTS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Hyperosmotic Agents", "Emergency IOP reduction in acute angle closure — NOT for chronic use");
footer(s, 8, TOTAL);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 9.5, y: 1.1, w: 3.5, h: 0.45,
fill: { color: C.orange }, line: { color: C.orange }, rectRadius: 0.07
});
s.addText("ACUTE EMERGENCY USE ONLY", {
x: 9.5, y: 1.1, w: 3.5, h: 0.45, margin: 0,
fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle"
});
const cols = [
{ label: "Drug", w: 1.8 },
{ label: "Route", w: 0.9 },
{ label: "Dose", w: 2.0 },
{ label: "Mechanism", w: 2.8 },
{ label: "Adverse Effects", w: 2.5 },
{ label: "Contraindications", w: 2.3 },
];
const rows = [
[
{ text: "Mannitol 20%", bold: true, color: C.navy },
{ text: "IV", bold: true, color: C.orange },
"1–2 g/kg over 1 hour\n(typical: 250–500 mL of 20% solution)",
"↑ Plasma osmolality → osmotic gradient draws fluid from vitreous into bloodstream → ↓ vitreous volume → ↓ IOP by 30–50%",
{ text: "Headache, nausea, pulmonary oedema (fluid overload), hyponatraemia, renal failure with repeated doses, urinary retention, hyperosmolar state", color: C.orange },
{ text: "Anuria/severe renal failure (cannot excrete), congestive heart failure, pulmonary oedema, severe dehydration, intracranial bleeding (↑ osmolality may worsen)", color: C.red }
],
[
{ text: "Glycerol 50%", bold: true, color: C.navy },
{ text: "ORAL", bold: true, color: C.green },
"1–1.5 g/kg oral\n(~180 mL of 50% solution, chilled with lemon)",
"Osmotic agent — same mechanism. Metabolised to glucose so caloric load",
"Nausea, vomiting (limits use if already vomiting), hyperglycaemia (metabolised to glucose), headache",
{ text: "Diabetes mellitus (metabolised to glucose → severe hyperglycaemia), severe dehydration, anuria", color: C.red }
],
[
{ text: "Isosorbide", bold: true, color: C.navy },
{ text: "ORAL", bold: true, color: C.green },
"1–1.5 g/kg oral",
"Osmotic agent — NOT metabolised to glucose, so safe in diabetics",
"Nausea, headache, less vomiting than glycerol",
{ text: "Anuria; preferred over glycerol in diabetic patients (not converted to glucose)", color: C.orange }
],
[
{ text: "Urea 30%", bold: true, color: C.gray3 },
{ text: "IV", bold: true, color: C.orange },
"1–1.5 g/kg IV",
"Osmotic diuretic — less commonly used; penetrates blood-brain barrier → rebound IOP rise",
"Rebound IOP elevation (BBB penetration), haemolysis, phlebitis at injection site",
{ text: "Severe renal/hepatic disease; largely replaced by mannitol", color: C.red }
],
];
addTable(s, cols, rows, { startY: 1.65, rowH: 0.82, fontSize: 8.5 });
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 6.48, w: 12.8, h: 0.62,
fill: { color: C.sky }, line: { color: C.teal, pt: 1 }
});
s.addText([
{ text: "Clinical Pearl: ", options: { bold: true, color: C.navy } },
{ text: "In acute angle closure, hyperosmotic agents are used when topical drops + oral acetazolamide fail to break the attack. ", options: { color: C.text } },
{ text: "Mannitol is given IV while patient is lying flat. ", options: { color: C.text } },
{ text: "Glycerol is contraindicated in DM (use isosorbide instead). ", options: { bold: true, color: C.orange } },
{ text: "Goal: rapidly reduce IOP to allow corneal clearing for definitive laser iridotomy.", options: { color: C.text } },
], { x: 0.4, y: 6.5, w: 12.5, h: 0.58, margin: [0,4,0,4], fontSize: 8.5, valign: "middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 9: SUMMARY — FIRST-LINE, COMBINATIONS & EXAM MNEMONICS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
titleBar(s, "Summary: First-Line Choices, Fixed Combinations & Exam Points", "Quick-reference for clinical decision-making");
footer(s, 9, TOTAL);
// Left panel — First-line treatment algorithm
s.addShape(pres.shapes.RECTANGLE, {
x: 0.25, y: 1.15, w: 4.1, h: 5.8,
fill: { color: C.sky }, line: { color: C.teal, pt: 1 }
});
s.addText("TREATMENT ALGORITHM\n(POAG)", {
x: 0.3, y: 1.18, w: 4.0, h: 0.45, margin: 0,
fontSize: 11, bold: true, color: C.navy, align: "center", valign: "middle"
});
const steps = [
{ step: "STEP 1", label: "Monotherapy", drug: "Prostaglandin Analogue\n(Latanoprost OD)", color: C.green },
{ step: "STEP 1b", label: "If PGA CI/intolerant", drug: "Timolol 0.5% BD\nor Brimonidine 0.2% BD", color: C.teal },
{ step: "STEP 2", label: "Add-on (if target not met)", drug: "+ CAI (Dorzolamide TDS)\nor + β-blocker", color: C.teal },
{ step: "STEP 3", label: "Triple therapy", drug: "PGA + β-blocker + CAI\n(or fixed combinations)", color: C.orange },
{ step: "STEP 4", label: "Laser / Surgery", drug: "SLT → Trabeculectomy\n→ GDD → CPC", color: C.red },
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 1.68 + i * 0.88, w: 3.8, h: 0.8,
fill: { color: C.white }, line: { color: st.color, pt: 2 }
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 1.68 + i * 0.88, w: 1.0, h: 0.8,
fill: { color: st.color }, line: { color: st.color }
});
s.addText(st.step, {
x: 0.35, y: 1.68 + i * 0.88, w: 1.0, h: 0.8, margin: 0,
fontSize: 8.5, bold: true, color: C.white, align: "center", valign: "middle"
});
s.addText(st.label, {
x: 1.38, y: 1.68 + i * 0.88, w: 2.75, h: 0.28, margin: [0,3,0,3],
fontSize: 7.8, bold: true, color: st.color, valign: "bottom"
});
s.addText(st.drug, {
x: 1.38, y: 1.96 + i * 0.88, w: 2.75, h: 0.48, margin: [0,3,0,3],
fontSize: 7.5, color: C.text, valign: "top"
});
});
// Middle panel — Fixed combinations
s.addShape(pres.shapes.RECTANGLE, {
x: 4.6, y: 1.15, w: 4.0, h: 2.85,
fill: { color: C.white }, line: { color: C.gray2, pt: 1 }
});
s.addShape(pres.shapes.RECTANGLE, {
x: 4.6, y: 1.15, w: 4.0, h: 0.38,
fill: { color: C.navy }, line: { color: C.navy }
});
s.addText("FIXED COMBINATION DROPS", {
x: 4.6, y: 1.15, w: 4.0, h: 0.38, margin: 0,
fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle"
});
const combos = [
["Xalacom", "Latanoprost 0.005% + Timolol 0.5%", "OD"],
["Ganfort", "Bimatoprost 0.03% + Timolol 0.5%", "OD"],
["DuoTrav", "Travoprost 0.004% + Timolol 0.5%", "OD"],
["Cosopt", "Dorzolamide 2% + Timolol 0.5%", "BD"],
["Azarga", "Brinzolamide 1% + Timolol 0.5%", "BD"],
["Combigan", "Brimonidine 0.2% + Timolol 0.5%", "BD"],
["Simbrinza", "Brinzolamide 1% + Brimonidine 0.2%", "TDS"],
];
const comboCols = [
{ label: "Brand", w: 1.2 },
{ label: "Components", w: 2.1 },
{ label: "Freq", w: 0.5 },
];
// header
let xc = 4.7;
comboCols.forEach(c => {
s.addShape(pres.shapes.RECTANGLE, {
x: xc, y: 1.53, w: c.w, h: 0.28,
fill: { color: C.teal }, line: { color: C.gray2, pt: 0.5 }
});
s.addText(c.label, {
x: xc, y: 1.53, w: c.w, h: 0.28, margin: [0,3,0,3],
fontSize: 8, bold: true, color: C.white, align: "center", valign: "middle"
});
xc += c.w;
});
combos.forEach((row, ri) => {
const bg = ri % 2 === 0 ? C.gray1 : C.white;
const ys = 1.81 + ri * 0.28;
xc = 4.7;
comboCols.forEach((c, ci) => {
s.addShape(pres.shapes.RECTANGLE, {
x: xc, y: ys, w: c.w, h: 0.28,
fill: { color: bg }, line: { color: C.gray2, pt: 0.5 }
});
s.addText(row[ci], {
x: xc, y: ys, w: c.w, h: 0.28, margin: [0,3,0,3],
fontSize: ci === 0 ? 8.5 : 8,
bold: ci === 0,
color: ci === 0 ? C.teal : C.text,
valign: "middle"
});
xc += c.w;
});
});
// Right panel — Contraindication summary
s.addShape(pres.shapes.RECTANGLE, {
x: 8.85, y: 1.15, w: 4.2, h: 5.8,
fill: { color: "FEF2F2" }, line: { color: C.red, pt: 1 }
});
s.addShape(pres.shapes.RECTANGLE, {
x: 8.85, y: 1.15, w: 4.2, h: 0.38,
fill: { color: C.red }, line: { color: C.red }
});
s.addText("⚠ KEY CONTRAINDICATIONS", {
x: 8.85, y: 1.15, w: 4.2, h: 0.38, margin: 0,
fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle"
});
const ciData = [
{ drug: "Timolol", ci: "Asthma, COPD, 2°/3° heart block, bradycardia, heart failure" },
{ drug: "Brimonidine", ci: "Infants <2 yrs (fatal apnoea), MAOIs" },
{ drug: "Apraclonidine", ci: "MAOIs; chronic use (tachyphylaxis)" },
{ drug: "Pilocarpine", ci: "Active uveitis, asthma; IOP >40 mmHg in acute AC" },
{ drug: "Acetazolamide", ci: "Sulfa allergy, renal/hepatic failure, sickle cell, hypokalaemia" },
{ drug: "PGAs", ci: "Aphakia, active uveitis, CME-prone eyes" },
{ drug: "Glycerol", ci: "Diabetes mellitus (↑ glucose)" },
{ drug: "Mannitol", ci: "Anuria, CCF, pulmonary oedema" },
{ drug: "Dorzolamide", ci: "Sulfa allergy, corneal endothelial disease" },
];
ciData.forEach((item, i) => {
const ys = 1.6 + i * 0.57;
s.addShape(pres.shapes.RECTANGLE, {
x: 8.95, y: ys, w: 4.0, h: 0.52,
fill: { color: i % 2 === 0 ? "FFF5F5" : "FFFFFF" }, line: { color: "FECACA", pt: 0.5 }
});
s.addText(item.drug, {
x: 8.95, y: ys, w: 4.0, h: 0.22, margin: [0,5,0,5],
fontSize: 8.5, bold: true, color: C.red, valign: "bottom"
});
s.addText(item.ci, {
x: 8.95, y: ys + 0.22, w: 4.0, h: 0.28, margin: [0,5,0,5],
fontSize: 7.8, color: C.text, valign: "top", wrap: true
});
});
// Bottom middle panel — exam mnemonics
s.addShape(pres.shapes.RECTANGLE, {
x: 4.6, y: 4.18, w: 4.0, h: 2.78,
fill: { color: C.white }, line: { color: C.gray2, pt: 1 }
});
s.addShape(pres.shapes.RECTANGLE, {
x: 4.6, y: 4.18, w: 4.0, h: 0.35,
fill: { color: C.teal }, line: { color: C.teal }
});
s.addText("EXAM HIGH-YIELD FACTS", {
x: 4.6, y: 4.18, w: 4.0, h: 0.35, margin: 0,
fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle"
});
const facts = [
"1st-line POAG = Prostaglandin analogue (OD, nocte)",
"Most IOP reduction = Bimatoprost (PGA)",
"Paraesthesias = Most common SE of Acetazolamide",
"Iris colour change = PGAs (irreversible)",
"NO repeat pilocarpine if IOP >40 mmHg",
"Timolol CI = Asthma + Heart block",
"Brimonidine CI = Infants <2 yrs (apnoea)",
"Glycerol CI = Diabetes (use isosorbide instead)",
"Cornea verticillata = Netarsudil SE",
"SLT = Selective Laser Trabeculoplasty (repeatable)",
];
facts.forEach((fact, i) => {
s.addText([
{ text: "• ", options: { color: C.teal, bold: true } },
{ text: fact, options: { color: C.text } }
], {
x: 4.7, y: 4.57 + i * 0.235, w: 3.8, h: 0.235, margin: [0,4,0,4], fontSize: 8.3, valign: "middle"
});
});
}
// ─── WRITE ─────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/glaucoma-ppt/Glaucoma_Pharmacology.pptx" })
.then(() => console.log("✅ Done: /home/daytona/workspace/glaucoma-ppt/Glaucoma_Pharmacology.pptx"))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
cd /home/daytona/workspace/glaucoma-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/glaucoma-ppt/Glaucoma_Pharmacology.pptx
Glaucoma Pharmacology
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Cover - title, badge highlights, contents list |
| 2 | Overview table - all 6 drug classes, mechanisms, IOP reduction %, first-line status |
| 3 | Prostaglandin Analogues - Latanoprost, Bimatoprost, Travoprost, Tafluprost |
| 4 | Beta-Blockers - Timolol, Betaxolol, Levobunolol, Carteolol, Metipranolol |
| 5 | Alpha-2 Agonists - Brimonidine vs. Apraclonidine with exam warning box |
| 6 | Carbonic Anhydrase Inhibitors - Dorzolamide, Brinzolamide, Acetazolamide, Methazolamide |
| 7 | Miotics + Rho-Kinase Inhibitors - Pilocarpine, Netarsudil, Ripasudil |
| 8 | Hyperosmotic Agents - Mannitol, Glycerol, Isosorbide, Urea (acute emergency use) |
| 9 | Summary - Treatment algorithm, fixed combinations (Cosopt, Xalacom, etc.), contraindication panel, 10 exam high-yield facts |
Create a case based study document with 5 rabies clinical scenarios bro