Create a clean, minimal educational pocket guide that explains the topic in the simplest way possible for students. Use a pure white background, modern typography, and a handwritten classroom notes aesthetic. Keep slides visually uncluttered with short bullet points, simple diagrams, highlighted keywords, flowcharts, and easy-to-understand explanations. Each slide should focus on one core concept only. Use color sparingly for emphasis (like blue, black, and soft yellow highlights). Add quick summaries, memory tricks, and real-world examples wherever helpful. Maintain a premium Apple-style minimal design while making the information feel like organized study notes rather than a corporate presentation. The goal is to help students quickly grasp and remember the topic without feeling overwhelmed.
cd /home/daytona/workspace && python3 -c " import pdfplumber pdf_path = '/home/daytona/workspace/attachments/0e06decf-eedb-4f2c-a1fa-9ca6d4b23740/Pharma all majors (Tables) (1).pdf' with pdfplumber.open(pdf_path) as pdf: print(f'Total pages: {len(pdf.pages)}') # Extract first few pages to understand structure for i, page in enumerate(pdf.pages[:5]): print(f'\\n=== PAGE {i+1} ===') text = page.extract_text() if text: print(text[:2000]) tables = page.extract_tables() if tables: print(f' [Tables found: {len(tables)}]') for t in tables[:1]: for row in t[:5]: print(row) "
cd /home/daytona/workspace && python3 -c " import pdfplumber pdf_path = '/home/daytona/workspace/attachments/0e06decf-eedb-4f2c-a1fa-9ca6d4b23740/Pharma all majors (Tables) (1).pdf' with pdfplumber.open(pdf_path) as pdf: print(f'Total pages: {len(pdf.pages)}') # Get all page headings to understand the full structure for i, page in enumerate(pdf.pages): text = page.extract_text() if text: # Get first line only first_line = text.strip().split('\n')[0] print(f'Page {i+1}: {first_line[:100]}') "
cd /home/daytona/workspace && python3 -c " import pdfplumber, json pdf_path = '/home/daytona/workspace/attachments/0e06decf-eedb-4f2c-a1fa-9ca6d4b23740/Pharma all majors (Tables) (1).pdf' data = {} with pdfplumber.open(pdf_path) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() or '' data[f'page_{i+1}'] = text[:3000] # cap per page with open('/home/daytona/workspace/pharma_content.json', 'w') as f: json.dump(data, f, indent=2) print('Done. File size:', len(json.dumps(data))) " 2>&1
only generate autonomic nervous system pharmocology
cd /home/daytona/workspace && python3 -c " import pdfplumber pdf_path = '/home/daytona/workspace/attachments/0e06decf-eedb-4f2c-a1fa-9ca6d4b23740/Pharma all majors (Tables) (1).pdf' with pdfplumber.open(pdf_path) as pdf: # ANS pages are 1-6 based on earlier scan for i in range(6): page = pdf.pages[i] text = page.extract_text() print(f'\\n========== PAGE {i+1} ==========') print(text) "
ls /home/daytona/workspace/ && ls /home/daytona/skills/pptx/
mkdir -p /home/daytona/workspace/ans-pharma && ls /home/daytona/workspace/ans-pharma
~/ans-pharma/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "ANS Pharmacology Pocket Guide";
pres.author = "Student Study Guide";
// ─── DESIGN TOKENS ───────────────────────────────────────────────
const C = {
white: "FFFFFF",
black: "1A1A2E",
blue: "1E5FA8",
blueLt: "2979CC",
teal: "0D7C8F",
yellow: "FFF3B0",
yBorder: "F5C518",
gray: "6B7280",
grayLt: "F4F6F9",
red: "E03B3B",
green: "1E8A4A",
purple: "6B3FA0",
orange: "E07B2A",
ink: "2D2D2D",
};
const FONT = "Segoe UI";
const FONT_H = "Segoe UI Semibold";
// ─── HELPER FUNCTIONS ────────────────────────────────────────────
// Add a slim top accent bar (used on every content slide)
function addAccentBar(slide, color) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.07, fill: { color: color || C.blue }, line: { type: "none" } });
}
// Section tag pill (top-left small label)
function addTag(slide, label, color) {
slide.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 0.18, w: label.length * 0.085 + 0.3, h: 0.28, fill: { color: color || C.blue }, line: { type: "none" }, rectRadius: 0.04 });
slide.addText(label, { x: 0.35, y: 0.18, w: label.length * 0.085 + 0.3, h: 0.28, fontSize: 7.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
}
// Slide heading
function addTitle(slide, title, y) {
slide.addText(title, { x: 0.35, y: y || 0.58, w: 9.3, h: 0.52, fontSize: 22, bold: true, color: C.black, fontFace: FONT_H, align: "left", margin: 0 });
}
// Thin horizontal rule
function addRule(slide, y, color) {
slide.addShape(pres.ShapeType.line, { x: 0.35, y: y || 1.12, w: 9.3, h: 0, line: { color: color || C.blue, width: 1.2 } });
}
// Yellow highlight box
function addHighlight(slide, text, x, y, w, h, opts) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: C.yellow }, line: { color: C.yBorder, width: 1.2 }, rectRadius: 0.06 });
slide.addText(text, Object.assign({ x, y, w, h, fontSize: 10.5, color: C.ink, fontFace: FONT, align: "center", valign: "middle", bold: false }, opts || {}));
}
// Blue info box
function addBox(slide, text, x, y, w, h, bgColor, txtColor, opts) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: bgColor || C.grayLt }, line: { color: bgColor ? bgColor : C.blue, width: 0.8 }, rectRadius: 0.07 });
slide.addText(text, Object.assign({ x: x + 0.12, y, w: w - 0.24, h, fontSize: 10, color: txtColor || C.ink, fontFace: FONT, valign: "middle", wrap: true }, opts || {}));
}
// Bullet list helper
function bullets(items, size, color) {
return items.map((t, i) => [
{ text: " ", options: { fontSize: size || 11, color: C.blue, bold: true } },
{ text: t, options: { fontSize: size || 11, color: color || C.ink, breakLine: i < items.length - 1 } }
]).flat();
}
// Drug pill chip
function drugPill(slide, name, x, y, color) {
const w = Math.max(name.length * 0.085 + 0.25, 1.1);
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h: 0.27, fill: { color: color || C.blue }, line: { type: "none" }, rectRadius: 0.06 });
slide.addText(name, { x, y, w, h: 0.27, fontSize: 8, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
return w + 0.08;
}
// Memory trick box
function addMemBox(slide, text) {
slide.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 4.98, w: 9.3, h: 0.42, fill: { color: "FFF8DC" }, line: { color: C.yBorder, width: 1 }, rectRadius: 0.06 });
slide.addText([
{ text: "💡 Memory: ", options: { bold: true, color: C.orange, fontSize: 9.5 } },
{ text: text, options: { color: C.ink, fontSize: 9.5 } }
], { x: 0.35, y: 4.98, w: 9.3, h: 0.42, fontFace: FONT, valign: "middle", margin: [0, 0.12] });
}
// ─── SLIDE BUILDER FUNCTIONS ──────────────────────────────────────
// ══════════════════════════════════════════════
// SLIDE 1 – COVER
// ══════════════════════════════════════════════
function slideCover() {
const s = pres.addSlide();
// Deep navy background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "0D1B3E" }, line: { type: "none" } });
// Accent stripe
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.blue }, line: { type: "none" } });
// Dot grid (decorative)
for (let r = 0; r < 6; r++) for (let c = 0; c < 18; c++) {
s.addShape(pres.ShapeType.ellipse, { x: 0.8 + c * 0.52, y: 0.35 + r * 0.82, w: 0.04, h: 0.04, fill: { color: "FFFFFF", transparency: 82 }, line: { type: "none" } });
}
// Title
s.addText("Autonomic Nervous System", { x: 0.5, y: 1.1, w: 9, h: 0.65, fontSize: 36, bold: true, color: "FFFFFF", fontFace: FONT_H, align: "center", charSpacing: 1 });
s.addText("PHARMACOLOGY", { x: 0.5, y: 1.75, w: 9, h: 0.5, fontSize: 28, bold: false, color: "6AABFF", fontFace: FONT, align: "center", charSpacing: 6 });
// Divider
s.addShape(pres.ShapeType.line, { x: 2.5, y: 2.4, w: 5, h: 0, line: { color: "3A72C4", width: 1.5 } });
// Sub text
s.addText("Pocket Study Guide · Student Edition", { x: 0.5, y: 2.55, w: 9, h: 0.4, fontSize: 13, color: "8AADDB", fontFace: FONT, align: "center" });
// Topics
const topics = ["Cholinergic Agonists", "Cholinergic Antagonists", "Ganglionic Blockers", "NM Blocking Agents", "Adrenergic Agonists", "Adrenergic Antagonists"];
topics.forEach((t, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 1.0 + col * 2.85;
const y = 3.3 + row * 0.55;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.55, h: 0.38, fill: { color: "152A5A" }, line: { color: "2F5FAA", width: 0.8 }, rectRadius: 0.06 });
s.addText(t, { x, y, w: 2.55, h: 0.38, fontSize: 9.5, color: "A8C8FF", fontFace: FONT, align: "center", valign: "middle", margin: 0 });
});
// Page tag
s.addText("ANS PHARMACOLOGY", { x: 0.5, y: 5.2, w: 9, h: 0.25, fontSize: 7.5, color: "3A72C4", fontFace: FONT, align: "center", charSpacing: 4 });
}
// ══════════════════════════════════════════════
// SLIDE 2 – ANS OVERVIEW
// ══════════════════════════════════════════════
function slideANSOverview() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.blue);
addTag(s, "OVERVIEW", C.blue);
addTitle(s, "The Autonomic Nervous System — At a Glance");
addRule(s, 1.15);
// Two-column layout
// LEFT – PNS
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 4.3, h: 3.52, fill: { color: "F0F8FF" }, line: { color: C.blue, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 4.3, h: 0.36, fill: { color: C.blue }, line: { type: "none" } });
s.addText("PARASYMPATHETIC (PNS)", { x: 0.35, y: 1.28, w: 4.3, h: 0.36, fontSize: 10.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText([
{ text: " Rest & Digest\n", options: { bold: true, color: C.blue, fontSize: 10 } },
{ text: " Neurotransmitter: ", options: { bold: true, color: C.ink, fontSize: 9.5 } },
{ text: "Acetylcholine (ACh)\n", options: { color: C.ink, fontSize: 9.5 } },
{ text: " Receptors: ", options: { bold: true, color: C.ink, fontSize: 9.5 } },
{ text: "Muscarinic (M) + Nicotinic (N)\n\n", options: { color: C.ink, fontSize: 9.5 } },
{ text: " Heart rate ↓\n", options: { color: C.blue, fontSize: 9.5 } },
{ text: " GIT motility ↑\n", options: { color: C.blue, fontSize: 9.5 } },
{ text: " Gland secretion ↑\n", options: { color: C.blue, fontSize: 9.5 } },
{ text: " Pupil constriction (miosis)\n", options: { color: C.blue, fontSize: 9.5 } },
{ text: " Bronchospasm", options: { color: C.blue, fontSize: 9.5 } },
], { x: 0.45, y: 1.72, w: 4.08, h: 3.0, fontFace: FONT, valign: "top" });
// RIGHT – SNS
s.addShape(pres.ShapeType.roundRect, { x: 5.35, y: 1.28, w: 4.3, h: 3.52, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 5.35, y: 1.28, w: 4.3, h: 0.36, fill: { color: C.red }, line: { type: "none" } });
s.addText("SYMPATHETIC (SNS)", { x: 5.35, y: 1.28, w: 4.3, h: 0.36, fontSize: 10.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText([
{ text: " Fight or Flight\n", options: { bold: true, color: C.red, fontSize: 10 } },
{ text: " Neurotransmitter: ", options: { bold: true, color: C.ink, fontSize: 9.5 } },
{ text: "Noradrenaline (NE)\n", options: { color: C.ink, fontSize: 9.5 } },
{ text: " Receptors: ", options: { bold: true, color: C.ink, fontSize: 9.5 } },
{ text: "α1, α2, β1, β2 adrenoceptors\n\n", options: { color: C.ink, fontSize: 9.5 } },
{ text: " Heart rate ↑\n", options: { color: C.red, fontSize: 9.5 } },
{ text: " Vasoconstriction (α1)\n", options: { color: C.red, fontSize: 9.5 } },
{ text: " Bronchodilation (β2)\n", options: { color: C.red, fontSize: 9.5 } },
{ text: " Pupil dilation (mydriasis)\n", options: { color: C.red, fontSize: 9.5 } },
{ text: " Glycogenolysis ↑", options: { color: C.red, fontSize: 9.5 } },
], { x: 5.45, y: 1.72, w: 4.08, h: 3.0, fontFace: FONT, valign: "top" });
// Bottom center arrow connector
s.addText("DRUGS act by mimicking, blocking, or modulating these signals", { x: 0.35, y: 4.95, w: 9.3, h: 0.4, fontSize: 9, color: C.gray, fontFace: FONT, align: "center", italic: true });
addMemBox(s, '"Rest & Digest = Para. | Fight & Flight = Sympathetic"');
}
// ══════════════════════════════════════════════
// SLIDE 3 – CHOLINERGIC RECEPTOR MAP
// ══════════════════════════════════════════════
function slideCholinergicReceptors() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.teal);
addTag(s, "CHOLINERGIC SYSTEM", C.teal);
addTitle(s, "Cholinergic Receptors — Quick Reference");
addRule(s, 1.15, C.teal);
// MUSCARINIC box
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 5.9, h: 3.5, fill: { color: "F0FAF8" }, line: { color: C.teal, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 5.9, h: 0.34, fill: { color: C.teal }, line: { type: "none" } });
s.addText("MUSCARINIC (M1–M5)", { x: 0.35, y: 1.28, w: 5.9, h: 0.34, fontSize: 10.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const mRows = [
["M1", "Neurons, gastric glands", "↑ secretion, CNS excitation"],
["M2", "Heart", "↓ HR, ↓ conduction"],
["M3", "Smooth muscle, glands", "Contraction, ↑ secretion"],
["M4", "CNS", "Modulation"],
["M5", "CNS", "Dopamine release"],
];
const mColW = [0.4, 1.9, 2.8];
const mColX = [0.5, 0.98, 2.96];
mRows.forEach((row, r) => {
const y = 1.72 + r * 0.48;
const bg = r % 2 === 0 ? "E8F5F3" : "F0FAF8";
s.addShape(pres.ShapeType.rect, { x: 0.35, y, w: 5.9, h: 0.46, fill: { color: bg }, line: { type: "none" } });
row.forEach((cell, c) => {
s.addText(cell, { x: mColX[c], y, w: mColW[c], h: 0.46, fontSize: 9, color: c === 0 ? C.teal : C.ink, fontFace: FONT, bold: c === 0, valign: "middle" });
});
});
// NICOTINIC box
s.addShape(pres.ShapeType.roundRect, { x: 6.55, y: 1.28, w: 3.1, h: 3.5, fill: { color: "F5F0FF" }, line: { color: C.purple, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.55, y: 1.28, w: 3.1, h: 0.34, fill: { color: C.purple }, line: { type: "none" } });
s.addText("NICOTINIC (N)", { x: 6.55, y: 1.28, w: 3.1, h: 0.34, fontSize: 10.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText([
{ text: "Nm (Muscle-type)\n", options: { bold: true, color: C.purple, fontSize: 9.5 } },
{ text: " Neuromuscular junction\n", options: { fontSize: 9, color: C.ink } },
{ text: " Depolarization → muscle contraction\n\n", options: { fontSize: 9, color: C.ink } },
{ text: "Nn (Neural-type)\n", options: { bold: true, color: C.purple, fontSize: 9.5 } },
{ text: " Autonomic ganglia\n", options: { fontSize: 9, color: C.ink } },
{ text: " Both PNS + SNS\n\n", options: { fontSize: 9, color: C.ink } },
{ text: "Ligand-gated\nNa⁺/K⁺ channels", options: { bold: true, fontSize: 8.5, color: C.gray } },
], { x: 6.65, y: 1.68, w: 2.9, h: 3.0, fontFace: FONT, valign: "top" });
addMemBox(s, '"Muscarinic = GLAND+HEART+SMOOTH M. | Nicotinic = GANGLIA+NMJ"');
}
// ══════════════════════════════════════════════
// SLIDE 4 – CHOLINERGIC AGONISTS CLASSIFICATION
// ══════════════════════════════════════════════
function slideCholinoAgonistClass() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.teal);
addTag(s, "CHOLINERGIC AGONISTS", C.teal);
addTitle(s, "Classification & Mechanism of Action");
addRule(s, 1.15, C.teal);
// Left – Direct Acting
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 4.5, h: 3.55, fill: { color: "F0FAF8" }, line: { color: C.teal, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 4.5, h: 0.34, fill: { color: C.teal }, line: { type: "none" } });
s.addText("DIRECT ACTING — Bind ACh receptors directly", { x: 0.35, y: 1.28, w: 4.5, h: 0.34, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
// Choline esters sub-group
s.addText("Choline Esters", { x: 0.5, y: 1.72, w: 4.1, h: 0.28, fontSize: 10, bold: true, color: C.teal, fontFace: FONT });
const cesters = ["Acetylcholine (ACh)", "Bethanechol — bladder/bowel", "Carbachol — glaucoma", "Methacholine"];
cesters.forEach((d, i) => {
s.addText(" • " + d, { x: 0.5, y: 2.02 + i * 0.3, w: 4.1, h: 0.28, fontSize: 9, color: C.ink, fontFace: FONT });
});
s.addText("Alkaloids", { x: 0.5, y: 3.27, w: 4.1, h: 0.28, fontSize: 10, bold: true, color: C.teal, fontFace: FONT });
s.addText(" • Pilocarpine — glaucoma", { x: 0.5, y: 3.55, w: 4.1, h: 0.28, fontSize: 9, color: C.ink, fontFace: FONT });
// Right – Indirect Acting
s.addShape(pres.ShapeType.roundRect, { x: 5.15, y: 1.28, w: 4.5, h: 3.55, fill: { color: "FFF5F8" }, line: { color: C.purple, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.28, w: 4.5, h: 0.34, fill: { color: C.purple }, line: { type: "none" } });
s.addText("INDIRECT ACTING — Inhibit AChE enzyme", { x: 5.15, y: 1.28, w: 4.5, h: 0.34, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText("Reversible (Intermediate)", { x: 5.3, y: 1.72, w: 4.2, h: 0.28, fontSize: 10, bold: true, color: C.purple, fontFace: FONT });
const rev = ["Physostigmine", "Neostigmine", "Pyridostigmine", "Edrophonium (short)", "Donepezil / Rivastigmine / Galantamine"];
rev.forEach((d, i) => {
s.addText(" • " + d, { x: 5.3, y: 2.02 + i * 0.27, w: 4.2, h: 0.26, fontSize: 9, color: C.ink, fontFace: FONT });
});
s.addText("Irreversible (Long-acting)", { x: 5.3, y: 3.44, w: 4.2, h: 0.28, fontSize: 10, bold: true, color: C.red, fontFace: FONT });
s.addText(" • Parathion, Malathion (organophosphates)", { x: 5.3, y: 3.72, w: 4.2, h: 0.28, fontSize: 9, color: C.red, fontFace: FONT });
s.addText(" • Echothiophate, Isofluorophate", { x: 5.3, y: 4.0, w: 4.2, h: 0.28, fontSize: 9, color: C.red, fontFace: FONT });
addMemBox(s, '"Direct = Mimic ACh | Indirect = Save ACh by blocking its breakdown"');
}
// ══════════════════════════════════════════════
// SLIDE 5 – CHOLINERGIC AGONISTS EFFECTS & USES
// ══════════════════════════════════════════════
function slideCholinoAgonistEffects() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.teal);
addTag(s, "CHOLINERGIC AGONISTS", C.teal);
addTitle(s, "Pharmacological Effects & Therapeutic Uses");
addRule(s, 1.15, C.teal);
// Effects grid - 4 organ boxes
const organs = [
{ name: "❤️ Heart", effects: ["↓ HR (bradycardia)", "↓ Conduction velocity", "↓ Cardiac output"], color: "FFF0F0", border: C.red },
{ name: "🫁 Smooth Muscle", effects: ["↑ GIT motility", "↑ Bronchial tone", "Sphincter relaxation"], color: "F0FAF8", border: C.teal },
{ name: "💧 Glands", effects: ["↑ Salivary secretion", "↑ Gastric secretion", "↑ Lacrimal/Bronchial"], color: "F0F5FF", border: C.blue },
{ name: "👁 Eye", effects: ["Miosis (pupil constriction)", "↓ IOP (intraocular pressure)", "Spasm of accommodation"], color: "FFF8E0", border: C.orange },
];
organs.forEach((o, i) => {
const x = 0.35 + (i % 2) * 4.7;
const y = 1.28 + Math.floor(i / 2) * 1.7;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.42, h: 1.55, fill: { color: o.color }, line: { color: o.border, width: 1 }, rectRadius: 0.07 });
s.addText(o.name, { x: x + 0.12, y, w: 4.2, h: 0.32, fontSize: 9.5, bold: true, color: C.black, fontFace: FONT, valign: "middle" });
o.effects.forEach((e, j) => {
s.addText(" · " + e, { x: x + 0.12, y: y + 0.34 + j * 0.36, w: 4.18, h: 0.34, fontSize: 9, color: C.ink, fontFace: FONT, valign: "middle" });
});
});
// Therapeutic uses
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 4.64, w: 9.3, h: 0.72, fill: { color: C.yellow }, line: { color: C.yBorder, width: 1 }, rectRadius: 0.07 });
s.addText("KEY THERAPEUTIC USES:", { x: 0.5, y: 4.64, w: 2.2, h: 0.72, fontSize: 9, bold: true, color: C.ink, fontFace: FONT, valign: "middle" });
s.addText([
{ text: "Myasthenia Gravis", options: { bold: true, color: C.teal } },
{ text: " (Neostigmine Rx, Edrophonium Dx) · " },
{ text: "Glaucoma", options: { bold: true, color: C.teal } },
{ text: " (Pilocarpine) · " },
{ text: "Bladder/Bowel", options: { bold: true, color: C.teal } },
{ text: " (Bethanechol) · " },
{ text: "Atropine OD", options: { bold: true, color: C.teal } },
{ text: " (Physostigmine)" }
], { x: 2.78, y: 4.64, w: 6.8, h: 0.72, fontSize: 9, color: C.ink, fontFace: FONT, valign: "middle" });
}
// ══════════════════════════════════════════════
// SLIDE 6 – CHOLINERGIC AGONISTS S/E & REVERSAL
// ══════════════════════════════════════════════
function slideCholinoAgonistSE() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.teal);
addTag(s, "CHOLINERGIC AGONISTS", C.teal);
addTitle(s, "Side Effects, Contraindications & Reversal");
addRule(s, 1.15, C.teal);
// DUMBELS mnemonic box
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 5.5, h: 3.55, fill: { color: "F0FAF8" }, line: { color: C.teal, width: 1.4 }, rectRadius: 0.09 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 5.5, h: 0.34, fill: { color: C.teal }, line: { type: "none" } });
s.addText("SIDE EFFECTS — The DUMBELS Mnemonic", { x: 0.35, y: 1.28, w: 5.5, h: 0.34, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const dumbels = [
["D", "Diarrhea"],
["U", "Urination (incontinence)"],
["M", "Miosis"],
["B", "Bronchospasm, Bradycardia"],
["E", "Emesis, Excitation (skeletal m.)"],
["L", "Lacrimation"],
["S", "Salivation, Sweating"],
];
dumbels.forEach((row, i) => {
const y = 1.72 + i * 0.42;
s.addShape(pres.ShapeType.roundRect, { x: 0.5, y, w: 0.34, h: 0.34, fill: { color: C.teal }, line: { type: "none" }, rectRadius: 0.04 });
s.addText(row[0], { x: 0.5, y, w: 0.34, h: 0.34, fontSize: 11, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText(row[1], { x: 0.92, y, w: 4.8, h: 0.34, fontSize: 9.5, color: C.ink, fontFace: FONT, valign: "middle" });
});
// Right – Reversal + CI
s.addShape(pres.ShapeType.roundRect, { x: 6.15, y: 1.28, w: 3.5, h: 1.65, fill: { color: "FFF0E8" }, line: { color: C.orange, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.15, y: 1.28, w: 3.5, h: 0.34, fill: { color: C.orange }, line: { type: "none" } });
s.addText("REVERSAL OF OPC POISONING", { x: 6.15, y: 1.28, w: 3.5, h: 0.34, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText([
{ text: "1. Atropine", options: { bold: true, color: C.orange, fontSize: 10 } },
{ text: " — blocks muscarinic effects\n", options: { fontSize: 9, color: C.ink } },
{ text: "2. Pralidoxime (2-PAM)", options: { bold: true, color: C.orange, fontSize: 10 } },
{ text: " — reactivates AChE\n (use EARLY, before aging)", options: { fontSize: 9, color: C.ink } },
], { x: 6.27, y: 1.68, w: 3.26, h: 1.2, fontFace: FONT, valign: "top" });
s.addShape(pres.ShapeType.roundRect, { x: 6.15, y: 3.08, w: 3.5, h: 1.75, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.15, y: 3.08, w: 3.5, h: 0.34, fill: { color: C.red }, line: { type: "none" } });
s.addText("CONTRAINDICATIONS", { x: 6.15, y: 3.08, w: 3.5, h: 0.34, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const ciList = ["Bronchial asthma", "Hyperthyroidism", "Peptic ulcer", "Coronary insufficiency", "GIT/urinary obstruction", "Parkinsonism"];
ciList.forEach((c, i) => {
s.addText(" ✕ " + c, { x: 6.27, y: 3.48 + i * 0.28, w: 3.26, h: 0.26, fontSize: 8.5, color: C.red, fontFace: FONT });
});
addMemBox(s, '"DUMBELS = all the cholinergic side effects you need to know"');
}
// ══════════════════════════════════════════════
// SLIDE 7 – CHOLINERGIC ANTAGONISTS (ANTIMUSCARINICS)
// ══════════════════════════════════════════════
function slideAntimuscarinics() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.orange);
addTag(s, "CHOLINERGIC ANTAGONISTS", C.orange);
addTitle(s, "Antimuscarinic Drugs — Classification");
addRule(s, 1.15, C.orange);
const groups = [
{ label: "Natural Alkaloids", drugs: ["Atropine", "Hyoscine (Scopolamine)"], color: C.orange },
{ label: "Semisynthetic", drugs: ["Homatropine", "Ipratropium bromide (asthma)", "Tiotropium bromide"], color: C.blue },
{ label: "Mydriatics", drugs: ["Cyclopentolate", "Tropicamide", "Eucatropine"], color: C.teal },
{ label: "Antisecretory / Antispasmodic", drugs: ["Propantheline", "Glycopyrrolate", "Pirenzepine (M1 selective)"], color: C.purple },
{ label: "Vesicle-selective (Bladder)", drugs: ["Oxybutynin", "Tolterodine", "Flavoxate"], color: C.green },
{ label: "Antiparkinsonian", drugs: ["Trihexyphenidyl (Benzhexol)", "Benztropine", "Biperiden"], color: C.gray },
];
groups.forEach((g, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.35 + col * 3.17;
const y = 1.28 + row * 1.68;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.98, h: 1.52, fill: { color: "FAFAFA" }, line: { color: g.color, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x, y, w: 2.98, h: 0.3, fill: { color: g.color }, line: { type: "none" } });
s.addText(g.label, { x, y, w: 2.98, h: 0.3, fontSize: 8.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
g.drugs.forEach((d, j) => {
s.addText(" · " + d, { x: x + 0.1, y: y + 0.34 + j * 0.37, w: 2.78, h: 0.35, fontSize: 8.5, color: C.ink, fontFace: FONT, valign: "middle" });
});
});
addMemBox(s, '"Competitive antagonists — block ACh from binding muscarinic receptors (overcome with high ACh)"');
}
// ══════════════════════════════════════════════
// SLIDE 8 – ANTIMUSCARINIC EFFECTS
// ══════════════════════════════════════════════
function slideAntimuscarinicsEffects() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.orange);
addTag(s, "CHOLINERGIC ANTAGONISTS", C.orange);
addTitle(s, "Antimuscarinic Effects — Organ by Organ");
addRule(s, 1.15, C.orange);
const organs = [
{ icon: "👁", name: "Eye", effects: "Mydriasis (↑ pupil)\nCycloplegia (no near focus)\n↑ IOP | ↓ Lacrimation" },
{ icon: "❤️", name: "Heart", effects: "Low dose: Bradycardia\nHigh dose: Tachycardia\n(vagal block → ↑ HR)" },
{ icon: "💊", name: "GIT", effects: "↓ Motility\n↓ Gastric secretion\nRelaxed smooth muscle" },
{ icon: "🫧", name: "Urinary Tract", effects: "Detrusor relaxation\n↑ Sphincter tone\n→ Urinary retention" },
{ icon: "💧", name: "Secretions", effects: "↓ Saliva → Dry mouth\n↓ Sweat → Hyperthermia\n↓ Bronchial secretions" },
{ icon: "🫁", name: "Respiratory", effects: "Bronchodilation\n↓ Mucus secretion\n(useful in asthma Rx)" },
];
organs.forEach((o, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.35 + col * 3.17;
const y = 1.28 + row * 1.72;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.98, h: 1.55, fill: { color: "FFF7F0" }, line: { color: C.orange, width: 1 }, rectRadius: 0.08 });
s.addText(o.icon + " " + o.name, { x: x + 0.12, y, w: 2.76, h: 0.38, fontSize: 10, bold: true, color: C.orange, fontFace: FONT, valign: "middle" });
s.addText(o.effects, { x: x + 0.12, y: y + 0.38, w: 2.76, h: 1.12, fontSize: 8.5, color: C.ink, fontFace: FONT, valign: "top" });
});
addMemBox(s, '"Hot as a hare, Blind as a bat, Dry as a bone, Red as a beet, Mad as a hatter" — Atropine toxicity');
}
// ══════════════════════════════════════════════
// SLIDE 9 – ANTIMUSCARINIC USES & CONTRAINDICATIONS
// ══════════════════════════════════════════════
function slideAntimuscarinicsUseCI() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.orange);
addTag(s, "CHOLINERGIC ANTAGONISTS", C.orange);
addTitle(s, "Therapeutic Uses & Contraindications");
addRule(s, 1.15, C.orange);
// Uses
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 5.7, h: 3.55, fill: { color: "FFF7F0" }, line: { color: C.orange, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 5.7, h: 0.34, fill: { color: C.orange }, line: { type: "none" } });
s.addText("THERAPEUTIC USES", { x: 0.35, y: 1.28, w: 5.7, h: 0.34, fontSize: 10.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const uses = [
["Smooth muscle spasms", "Atropine — intestinal, biliary, renal colic"],
["Bronchial asthma", "Ipratropium (between attacks), Atropine (acute)"],
["GIT diseases", "Pirenzepine — peptic ulcer / hyperacidity"],
["Ophthalmology", "Exam, glasses fitting, eye inflammation"],
["Vestibular disorders", "Hyoscine — motion sickness"],
["OPC poisoning", "Atropine (antidote)"],
["Parkinson's disease", "Trihexyphenidyl, Benztropine"],
["Pre-anesthetic medication", "↓ secretions, prevent bradycardia"],
["Urinary urgency", "Oxybutynin, Tolterodine — post-op urology"],
];
uses.forEach((u, i) => {
const y = 1.72 + i * 0.37;
s.addText([
{ text: " · " + u[0] + ": ", options: { bold: true, color: C.orange, fontSize: 9 } },
{ text: u[1], options: { color: C.ink, fontSize: 8.5 } },
], { x: 0.47, y, w: 5.45, h: 0.35, fontFace: FONT, valign: "middle" });
});
// Contraindications
s.addShape(pres.ShapeType.roundRect, { x: 6.3, y: 1.28, w: 3.35, h: 3.55, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.3, y: 1.28, w: 3.35, h: 0.34, fill: { color: C.red }, line: { type: "none" } });
s.addText("CONTRAINDICATED IN", { x: 6.3, y: 1.28, w: 3.35, h: 0.34, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const cis = [
"Glaucoma (↑ IOP risk)",
"Prostatic hypertrophy",
"CHF with tachycardia",
"Infants (hyperthermia risk)",
"Urinary retention",
];
cis.forEach((c, i) => {
s.addText(" ✕ " + c, { x: 6.42, y: 1.74 + i * 0.46, w: 3.1, h: 0.42, fontSize: 9, color: C.red, fontFace: FONT, valign: "middle" });
});
addMemBox(s, '"AVOID atropine in Glaucoma, Prostate enlargement, and Infants"');
}
// ══════════════════════════════════════════════
// SLIDE 10 – GANGLIONIC BLOCKERS
// ══════════════════════════════════════════════
function slideGanglionicBlockers() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.purple);
addTag(s, "GANGLIONIC BLOCKERS", C.purple);
addTitle(s, "Antinicotinic Drugs — Ganglionic Blockers");
addRule(s, 1.15, C.purple);
// MOA
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 9.3, h: 0.7, fill: { color: "F5F0FF" }, line: { color: C.purple, width: 1 }, rectRadius: 0.07 });
s.addText([
{ text: "MOA: ", options: { bold: true, color: C.purple, fontSize: 10.5 } },
{ text: "Block nerve impulse transmission across BOTH sympathetic AND parasympathetic ganglia → mixed autonomic blockade", options: { color: C.ink, fontSize: 10 } },
], { x: 0.5, y: 1.28, w: 9.1, h: 0.7, fontFace: FONT, valign: "middle" });
// Drugs
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 2.1, w: 3.0, h: 2.55, fill: { color: "FAFAFA" }, line: { color: C.purple, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 2.1, w: 3.0, h: 0.3, fill: { color: C.purple }, line: { type: "none" } });
s.addText("DRUGS", { x: 0.35, y: 2.1, w: 3.0, h: 0.3, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText("Competitive (Non-depol.):", { x: 0.5, y: 2.48, w: 2.7, h: 0.28, fontSize: 9.5, bold: true, color: C.purple, fontFace: FONT });
["Hexamethonium", "Trimethaphan", "Mecamylamine"].forEach((d, i) => {
s.addText(" · " + d, { x: 0.5, y: 2.78 + i * 0.3, w: 2.7, h: 0.28, fontSize: 9, color: C.ink, fontFace: FONT });
});
s.addText("Depolarizing blockers:", { x: 0.5, y: 3.72, w: 2.7, h: 0.28, fontSize: 9.5, bold: true, color: C.red, fontFace: FONT });
["Nicotine (large dose)", "Anticholinesterases (large)"].forEach((d, i) => {
s.addText(" · " + d, { x: 0.5, y: 4.02 + i * 0.3, w: 2.7, h: 0.28, fontSize: 9, color: C.red, fontFace: FONT });
});
// Effects
s.addShape(pres.ShapeType.roundRect, { x: 3.55, y: 2.1, w: 3.0, h: 2.55, fill: { color: "FAFAFA" }, line: { color: C.blue, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 3.55, y: 2.1, w: 3.0, h: 0.3, fill: { color: C.blue }, line: { type: "none" } });
s.addText("EFFECTS", { x: 3.55, y: 2.1, w: 3.0, h: 0.3, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const effects = ["↓ BP (orthostatic hypotension)", "Tachycardia", "Constipation", "Urinary retention", "Mydriasis, Cycloplegia", "↓ Salivation/Sweating"];
effects.forEach((e, i) => {
s.addText(" · " + e, { x: 3.7, y: 2.48 + i * 0.36, w: 2.75, h: 0.34, fontSize: 9, color: C.ink, fontFace: FONT });
});
// Uses + Nicotine toxicity
s.addShape(pres.ShapeType.roundRect, { x: 6.75, y: 2.1, w: 2.9, h: 2.55, fill: { color: "FAFAFA" }, line: { color: C.teal, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.75, y: 2.1, w: 2.9, h: 0.3, fill: { color: C.teal }, line: { type: "none" } });
s.addText("USES / TOXICOLOGY", { x: 6.75, y: 2.1, w: 2.9, h: 0.3, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const uses2 = ["Hypertensive crisis", "Controlled hypotension", "Pulmonary edema with ↑ BP", "Peripheral artery spasm"];
uses2.forEach((u, i) => {
s.addText(" · " + u, { x: 6.88, y: 2.48 + i * 0.33, w: 2.65, h: 0.3, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
s.addText("Nicotine toxicity:", { x: 6.88, y: 3.66, w: 2.65, h: 0.28, fontSize: 9, bold: true, color: C.red, fontFace: FONT });
s.addText("↑ HR/BP (blocks PNS)\n↑ Thrombosis (TXA2)", { x: 6.88, y: 3.94, w: 2.65, h: 0.55, fontSize: 8.5, color: C.red, fontFace: FONT });
addMemBox(s, '"Ganglion blockers = block BOTH PNS + SNS ganglia → unpredictable mixed effects"');
}
// ══════════════════════════════════════════════
// SLIDE 11 – NM BLOCKING AGENTS
// ══════════════════════════════════════════════
function slideNMBA() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.purple);
addTag(s, "NEUROMUSCULAR BLOCKERS", C.purple);
addTitle(s, "Neuromuscular Blocking Agents (NMBAs)");
addRule(s, 1.15, C.purple);
// Two main types
// NON-DEPOLARIZING
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 4.5, h: 3.58, fill: { color: "F8F0FF" }, line: { color: C.purple, width: 1.3 }, rectRadius: 0.09 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 4.5, h: 0.38, fill: { color: C.purple }, line: { type: "none" } });
s.addText("NON-DEPOLARIZING", { x: 0.35, y: 1.28, w: 4.5, h: 0.38, fontSize: 11, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText("Mechanism:", { x: 0.5, y: 1.74, w: 4.2, h: 0.28, fontSize: 9.5, bold: true, color: C.purple, fontFace: FONT });
s.addText("Competitive antagonist of NM nicotinic receptors →\nblocks Na⁺ channel → no depolarization", { x: 0.5, y: 2.02, w: 4.2, h: 0.52, fontSize: 9, color: C.ink, fontFace: FONT });
s.addText("Paralysis order (small → large):", { x: 0.5, y: 2.58, w: 4.2, h: 0.28, fontSize: 9.5, bold: true, color: C.purple, fontFace: FONT });
s.addText("Eye/Face → Limbs → Neck/Trunk → Intercostals → Diaphragm", { x: 0.5, y: 2.86, w: 4.2, h: 0.38, fontSize: 8.5, color: C.ink, fontFace: FONT });
s.addText("Drugs:", { x: 0.5, y: 3.28, w: 4.2, h: 0.24, fontSize: 9.5, bold: true, color: C.purple, fontFace: FONT });
["Tubocurarine", "Pancuronium", "Vecuronium", "Atracurium", "Metocurine"].forEach((d, i) => {
s.addText(" · " + d, { x: 0.5, y: 3.54 + i * 0.26, w: 4.2, h: 0.24, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
// DEPOLARIZING
s.addShape(pres.ShapeType.roundRect, { x: 5.15, y: 1.28, w: 4.5, h: 3.58, fill: { color: "F0FAF8" }, line: { color: C.teal, width: 1.3 }, rectRadius: 0.09 });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.28, w: 4.5, h: 0.38, fill: { color: C.teal }, line: { type: "none" } });
s.addText("DEPOLARIZING", { x: 5.15, y: 1.28, w: 4.5, h: 0.38, fontSize: 11, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText("Mechanism:", { x: 5.3, y: 1.74, w: 4.2, h: 0.28, fontSize: 9.5, bold: true, color: C.teal, fontFace: FONT });
s.addText("Mimics ACh but acts LONGER → sustained depolarization\n→ Na⁺ channels inactivate → depolarization block", { x: 5.3, y: 2.02, w: 4.2, h: 0.52, fontSize: 9, color: C.ink, fontFace: FONT });
s.addText("Paralysis order (large → small):", { x: 5.3, y: 2.58, w: 4.2, h: 0.28, fontSize: 9.5, bold: true, color: C.teal, fontFace: FONT });
s.addText("Chest/Abdomen → Mastication/Face → Larynx/Pharynx\n(Recovery in reverse order)", { x: 5.3, y: 2.86, w: 4.2, h: 0.38, fontSize: 8.5, color: C.ink, fontFace: FONT });
s.addText("Drugs:", { x: 5.3, y: 3.28, w: 4.2, h: 0.24, fontSize: 9.5, bold: true, color: C.teal, fontFace: FONT });
["Succinylcholine (Suxamethonium) — rapid onset", "Decamethonium"].forEach((d, i) => {
s.addText(" · " + d, { x: 5.3, y: 3.54 + i * 0.3, w: 4.2, h: 0.28, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
s.addText("Reversal: Neostigmine (only for non-depol.)", { x: 5.3, y: 4.18, w: 4.2, h: 0.28, fontSize: 8.5, bold: true, color: C.orange, fontFace: FONT });
addMemBox(s, '"Non-depol = competitive block (reversible with neostigmine) | Depol = phase block (no reversal agent)"');
}
// ══════════════════════════════════════════════
// SLIDE 12 – NMBA USES & S/E
// ══════════════════════════════════════════════
function slideNMBAUsesSE() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.purple);
addTag(s, "NEUROMUSCULAR BLOCKERS", C.purple);
addTitle(s, "NMBA — Uses, Side Effects & Contraindications");
addRule(s, 1.15, C.purple);
// Uses
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 4.0, h: 3.55, fill: { color: "F8F0FF" }, line: { color: C.purple, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 4.0, h: 0.32, fill: { color: C.purple }, line: { type: "none" } });
s.addText("THERAPEUTIC USES (Both)", { x: 0.35, y: 1.28, w: 4.0, h: 0.32, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const uses3 = ["Surgical anesthesia (muscle relaxation)", "Endotracheal intubation & endoscopy", "ECT — prevent trauma/convulsions", "Ophthalmic surgery", "Tetanus & epilepsy", "Ventilator control", "Premedication"];
uses3.forEach((u, i) => {
s.addText(" · " + u, { x: 0.5, y: 1.68 + i * 0.41, w: 3.75, h: 0.38, fontSize: 8.5, color: C.ink, fontFace: FONT, valign: "middle" });
});
// SE non-depol
s.addShape(pres.ShapeType.roundRect, { x: 4.55, y: 1.28, w: 2.5, h: 3.55, fill: { color: "FAFAFA" }, line: { color: C.blue, width: 1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 4.55, y: 1.28, w: 2.5, h: 0.32, fill: { color: C.blue }, line: { type: "none" } });
s.addText("S/E: Non-Depol.", { x: 4.55, y: 1.28, w: 2.5, h: 0.32, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const se1 = ["Dizziness", "Muscle weakness", "Hypoxia / resp. paralysis", "Hypotension", "Tachycardia", "Bronchospasm", "↓ GIT tone"];
se1.forEach((e, i) => {
s.addText(" · " + e, { x: 4.68, y: 1.68 + i * 0.41, w: 2.24, h: 0.38, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
// SE depol
s.addShape(pres.ShapeType.roundRect, { x: 7.25, y: 1.28, w: 2.4, h: 3.55, fill: { color: "FAFAFA" }, line: { color: C.teal, width: 1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 7.25, y: 1.28, w: 2.4, h: 0.32, fill: { color: C.teal }, line: { type: "none" } });
s.addText("S/E: Depol.", { x: 7.25, y: 1.28, w: 2.4, h: 0.32, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const se2 = ["Post-op muscle pain", "Bradycardia", "↑ K⁺ (hyperkalemia)", "↑ IOP", "Prolonged paralysis", "Apnea", "Malignant hyperthermia"];
se2.forEach((e, i) => {
s.addText(" · " + e, { x: 7.38, y: 1.68 + i * 0.41, w: 2.14, h: 0.38, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
addMemBox(s, '"Succinylcholine risk: Malignant hyperthermia + hyperkalemia → avoid in burns, trauma, myopathy"');
}
// ══════════════════════════════════════════════
// SLIDE 13 – ADRENERGIC RECEPTORS
// ══════════════════════════════════════════════
function slideAdrenergicReceptors() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.red);
addTag(s, "ADRENERGIC SYSTEM", C.red);
addTitle(s, "Adrenergic Receptors — Quick Map");
addRule(s, 1.15, C.red);
const receptors = [
{ name: "α1", location: "Blood vessels, eye, bladder neck", effects: "Vasoconstriction, mydriasis, ↑ sphincter tone", color: "E03B3B" },
{ name: "α2", location: "Presynaptic nerve terminals, platelets", effects: "↓ NE release (auto-receptor), platelet aggregation, ↓ insulin", color: "B02828" },
{ name: "β1", location: "Heart, kidney (JGA)", effects: "↑ HR, ↑ contractility, ↑ renin secretion", color: "1E5FA8" },
{ name: "β2", location: "Bronchi, uterus, blood vessels", effects: "Bronchodilation, uterine relaxation, vasodilation, glycogenolysis", color: "2979CC" },
];
receptors.forEach((r, i) => {
const y = 1.28 + i * 1.02;
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y, w: 9.3, h: 0.93, fill: { color: "FAFAFA" }, line: { color: "#" + r.color, width: 1 }, rectRadius: 0.07 });
// Receptor label pill
s.addShape(pres.ShapeType.roundRect, { x: 0.45, y: y + 0.22, w: 0.62, h: 0.48, fill: { color: r.color }, line: { type: "none" }, rectRadius: 0.06 });
s.addText(r.name, { x: 0.45, y: y + 0.22, w: 0.62, h: 0.48, fontSize: 14, bold: true, color: C.white, fontFace: FONT_H, align: "center", valign: "middle", margin: 0 });
// Location
s.addText([
{ text: "Location: ", options: { bold: true, fontSize: 9.5, color: "#" + r.color } },
{ text: r.location, options: { fontSize: 9.5, color: C.gray } },
], { x: 1.22, y, w: 4.2, h: 0.93, fontFace: FONT, valign: "middle" });
// Effects
s.addText([
{ text: "Effects: ", options: { bold: true, fontSize: 9.5, color: "#" + r.color } },
{ text: r.effects, options: { fontSize: 9.5, color: C.ink } },
], { x: 5.5, y, w: 4.0, h: 0.93, fontFace: FONT, valign: "middle" });
});
addMemBox(s, '"α1 = constrict vessels | α2 = inhibit release | β1 = heart beats | β2 = breathe & relax"');
}
// ══════════════════════════════════════════════
// SLIDE 14 – ADRENERGIC AGONISTS CLASSIFICATION
// ══════════════════════════════════════════════
function slideAdrenoAgonistClass() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.red);
addTag(s, "ADRENERGIC AGONISTS", C.red);
addTitle(s, "Adrenergic Agonists — Classification");
addRule(s, 1.15, C.red);
const groups = [
{ label: "α1 – Agonists", drugs: ["Phenylephrine (nasal decongestant)", "Methoxamine"], color: C.red, effects: "Vasoconstriction, ↑ BP, Mydriasis" },
{ label: "α2 – Agonists", drugs: ["Clonidine", "α-methylnoradrenaline"], color: "B02828", effects: "↓ NE release, ↓ BP, Sedation" },
{ label: "β1 – Agonists", drugs: ["Dobutamine (CHF)", "Prenalterol"], color: C.blue, effects: "↑ HR, ↑ Contractility" },
{ label: "β2 – Agonists", drugs: ["Salbutamol", "Terbutaline", "Salmeterol (LABA)", "Formoterol (LABA)"], color: C.teal, effects: "Bronchodilation, Uterine relaxation" },
{ label: "α + β (Non-selective)", drugs: ["Adrenaline (Epinephrine)", "Noradrenaline", "Isoproterenol (β1+β2)"], color: C.orange, effects: "Mixed: ↑ HR, vasoconstriction/dilation" },
{ label: "α-β Mixed", drugs: ["Ephedrine", "Dopamine (dose-dependent)"], color: C.purple, effects: "Indirect + direct action" },
];
groups.forEach((g, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.35 + col * 3.17;
const y = 1.28 + row * 1.74;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.98, h: 1.58, fill: { color: "FAFAFA" }, line: { color: g.color, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x, y, w: 2.98, h: 0.3, fill: { color: g.color }, line: { type: "none" } });
s.addText(g.label, { x, y, w: 2.98, h: 0.3, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText(g.effects, { x: x + 0.1, y: y + 0.32, w: 2.78, h: 0.28, fontSize: 8, color: g.color, fontFace: FONT, italic: true });
g.drugs.forEach((d, j) => {
if (j < 3) s.addText(" · " + d, { x: x + 0.1, y: y + 0.62 + j * 0.3, w: 2.78, h: 0.28, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
});
addMemBox(s, '"Adrenaline = α+β1+β2 | Noradrenaline = α+β1 | Isoprenaline = β1+β2 | Salbutamol = β2 only"');
}
// ══════════════════════════════════════════════
// SLIDE 15 – ADRENALINE (KEY DRUG)
// ══════════════════════════════════════════════
function slideAdrenaline() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.red);
addTag(s, "KEY DRUG FOCUS", C.red);
addTitle(s, "Adrenaline (Epinephrine) — The Prototype");
addRule(s, 1.15, C.red);
// MOA
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 9.3, h: 0.52, fill: { color: "FFF0F0" }, line: { color: C.red, width: 1 }, rectRadius: 0.06 });
s.addText([
{ text: "Receptors: ", options: { bold: true, color: C.red, fontSize: 10 } },
{ text: "α1, α2, β1, β2 (all adrenoceptors) | ", options: { color: C.ink, fontSize: 10 } },
{ text: "Route: ", options: { bold: true, color: C.red, fontSize: 10 } },
{ text: "IV, IM, SC, Inhalation, Topical", options: { color: C.ink, fontSize: 10 } },
], { x: 0.5, y: 1.28, w: 9.1, h: 0.52, fontFace: FONT, valign: "middle" });
// Effects by receptor
const effectBoxes = [
{ label: "α1 Effects", effects: ["Vasoconstriction", "↑ BP", "Mydriasis"], color: C.red },
{ label: "α2 Effects", effects: ["↓ NE release", "↓ Insulin"], color: "B02828" },
{ label: "β1 Effects", effects: ["↑ HR", "↑ Contractility", "↑ Cardiac output"], color: C.blue },
{ label: "β2 Effects", effects: ["Bronchodilation", "Uterine relax.", "Vasodilation"], color: C.teal },
];
effectBoxes.forEach((b, i) => {
const x = 0.35 + i * 2.35;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.94, w: 2.2, h: 1.6, fill: { color: "FAFAFA" }, line: { color: b.color, width: 1.1 }, rectRadius: 0.07 });
s.addShape(pres.ShapeType.rect, { x, y: 1.94, w: 2.2, h: 0.3, fill: { color: b.color }, line: { type: "none" } });
s.addText(b.label, { x, y: 1.94, w: 2.2, h: 0.3, fontSize: 9, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
b.effects.forEach((e, j) => {
s.addText(" · " + e, { x: x + 0.08, y: 2.28 + j * 0.38, w: 2.04, h: 0.36, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
});
// Therapeutic uses
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 3.66, w: 5.4, h: 1.12, fill: { color: C.yellow }, line: { color: C.yBorder, width: 1 }, rectRadius: 0.07 });
s.addText("USES:", { x: 0.5, y: 3.66, w: 0.85, h: 1.12, fontSize: 9.5, bold: true, color: C.ink, fontFace: FONT, valign: "middle" });
s.addText([
{ text: "Anaphylactic shock · ", options: { bold: true, color: C.red } },
{ text: "Acute asthma · " },
{ text: "Open-angle glaucoma · ", options: { bold: true, color: C.teal } },
{ text: "Cardiac arrest · " },
{ text: "Add to local anesthetics", options: { bold: true, color: C.blue } },
{ text: " (↓ systemic absorption)" },
], { x: 1.38, y: 3.66, w: 4.25, h: 1.12, fontSize: 9, color: C.ink, fontFace: FONT, valign: "middle" });
// S/E
s.addShape(pres.ShapeType.roundRect, { x: 5.95, y: 3.66, w: 3.7, h: 1.12, fill: { color: "FFF0F0" }, line: { color: C.red, width: 1 }, rectRadius: 0.07 });
s.addText("S/E: headache, restlessness, ↑ BP, palpitation, anxiety", { x: 6.08, y: 3.66, w: 3.45, h: 1.12, fontSize: 9, color: C.red, fontFace: FONT, valign: "middle" });
addMemBox(s, '"1st line drug for Anaphylaxis — 0.5 mg IM (thigh) STAT"');
}
// ══════════════════════════════════════════════
// SLIDE 16 – ADRENERGIC AGONISTS USES & CI
// ══════════════════════════════════════════════
function slideAdrenoAgonistUsesCI() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.red);
addTag(s, "ADRENERGIC AGONISTS", C.red);
addTitle(s, "Drug-Specific Uses & Contraindications");
addRule(s, 1.15, C.red);
const usesData = [
{ drug: "Adrenaline", use: "Anaphylaxis, acute asthma, glaucoma, cardiac arrest", color: C.red },
{ drug: "Noradrenaline", use: "Shock (vasopressor)", color: "B02828" },
{ drug: "Dobutamine", use: "Congestive heart failure (CHF)", color: C.blue },
{ drug: "Dopamine", use: "Cardiogenic / septic shock, CHF", color: C.purple },
{ drug: "Phenylephrine", use: "Nasal decongestant, ocular exam", color: C.orange },
{ drug: "Salbutamol", use: "Bronchial asthma (β2), premature labor", color: C.teal },
{ drug: "Isoproterenol", use: "Bronchodilator, cardiac stimulant", color: C.green },
{ drug: "Clonidine", use: "Hypertension (central α2 agonist)", color: "6B3FA0" },
];
usesData.forEach((u, i) => {
const y = 1.3 + i * 0.42;
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y, w: 9.3, h: 0.37, fill: { color: i % 2 === 0 ? "F9FAFB" : "FFFFFF" }, line: { color: u.color, width: 0.6 }, rectRadius: 0.04 });
s.addShape(pres.ShapeType.roundRect, { x: 0.45, y: y + 0.04, w: 1.65, h: 0.29, fill: { color: u.color }, line: { type: "none" }, rectRadius: 0.04 });
s.addText(u.drug, { x: 0.45, y: y + 0.04, w: 1.65, h: 0.29, fontSize: 8.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText(u.use, { x: 2.22, y, w: 7.3, h: 0.37, fontSize: 9, color: C.ink, fontFace: FONT, valign: "middle" });
});
// CI box
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 4.8, w: 9.3, h: 0.54, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1 }, rectRadius: 0.06 });
s.addText([
{ text: "C/I for α-agonists: ", options: { bold: true, color: C.red, fontSize: 9.5 } },
{ text: "Hypertension, Hyperthyroidism, DM, Pregnancy ", options: { color: C.ink, fontSize: 9 } },
{ text: " | C/I for β-agonists: ", options: { bold: true, color: C.blue, fontSize: 9.5 } },
{ text: "CHF, Hyperlipidemia, Angina", options: { color: C.ink, fontSize: 9 } },
], { x: 0.5, y: 4.8, w: 9.1, h: 0.54, fontFace: FONT, valign: "middle" });
}
// ══════════════════════════════════════════════
// SLIDE 17 – ALPHA BLOCKERS
// ══════════════════════════════════════════════
function slideAlphaBlockers() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.orange);
addTag(s, "ADRENERGIC ANTAGONISTS", C.orange);
addTitle(s, "Alpha (α) Blockers");
addRule(s, 1.15, C.orange);
// MOA
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 9.3, h: 0.48, fill: { color: "FFF7F0" }, line: { color: C.orange, width: 1 }, rectRadius: 0.06 });
s.addText("MOA: Inhibit adrenergic response at α-receptors → ↓ vasoconstriction → ↓ peripheral resistance → ↓ BP", { x: 0.5, y: 1.28, w: 9.1, h: 0.48, fontSize: 9.5, color: C.ink, fontFace: FONT, valign: "middle" });
// Non-selective
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.88, w: 4.5, h: 1.6, fill: { color: "FFF7F0" }, line: { color: C.orange, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.88, w: 4.5, h: 0.3, fill: { color: C.orange }, line: { type: "none" } });
s.addText("NON-SELECTIVE (α1 + α2)", { x: 0.35, y: 1.88, w: 4.5, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
[["Phenoxybenzamine", "Non-competitive (irreversible)"], ["Phentolamine", "Competitive"], ["Ergotamine", "Partial agonist"], ["Tolazoline, Chlorpromazine", ""]].forEach((d, i) => {
s.addText(" · " + d[0] + (d[1] ? " — " + d[1] : ""), { x: 0.5, y: 2.24 + i * 0.31, w: 4.25, h: 0.29, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
// Selective
s.addShape(pres.ShapeType.roundRect, { x: 5.15, y: 1.88, w: 4.5, h: 1.6, fill: { color: "FFF7F0" }, line: { color: C.orange, width: 1.1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.88, w: 4.5, h: 0.3, fill: { color: C.orange }, line: { type: "none" } });
s.addText("SELECTIVE α1-BLOCKERS", { x: 5.15, y: 1.88, w: 4.5, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
["Prazosin", "Terazosin", "Doxazosin", "Tamsulosin (prostate-selective)", "Alfuzosin"].forEach((d, i) => {
s.addText(" · " + d, { x: 5.3, y: 2.24 + i * 0.29, w: 4.25, h: 0.27, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
// Effects | Uses | SE 3-column
const col3 = [
{ title: "EFFECTS", items: ["↓ vasoconstriction (α1 block)", "↑ NE release (α2 block)", "↑ HR / Cardiac output", "↑ Cardiac output", "Miosis"], color: C.blue },
{ title: "THERAPEUTIC USES", items: ["Hypertension (Prazosin)", "Pheochromocytoma (Phentolamine)", "Peripheral vascular disease", "BPH (Tamsulosin)", "Erectile dysfunction"], color: C.teal },
{ title: "SIDE EFFECTS", items: ["Postural hypotension ⭐", "Palpitation / tachycardia", "↓ Ejaculation / Impotence", "Nasal stuffiness", "Miosis"], color: C.red },
];
col3.forEach((col, i) => {
const x = 0.35 + i * 3.17;
s.addShape(pres.ShapeType.roundRect, { x, y: 3.62, w: 2.98, h: 1.72, fill: { color: "FAFAFA" }, line: { color: col.color, width: 1 }, rectRadius: 0.07 });
s.addShape(pres.ShapeType.rect, { x, y: 3.62, w: 2.98, h: 0.28, fill: { color: col.color }, line: { type: "none" } });
s.addText(col.title, { x, y: 3.62, w: 2.98, h: 0.28, fontSize: 8.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
col.items.forEach((item, j) => {
s.addText(" · " + item, { x: x + 0.1, y: 3.94 + j * 0.28, w: 2.78, h: 0.26, fontSize: 8, color: C.ink, fontFace: FONT });
});
});
addMemBox(s, '"α1-selective blockers (prazosin etc.) = less tachycardia than non-selective blockers"');
}
// ══════════════════════════════════════════════
// SLIDE 18 – BETA BLOCKERS
// ══════════════════════════════════════════════
function slideBetaBlockers() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.blue);
addTag(s, "ADRENERGIC ANTAGONISTS", C.blue);
addTitle(s, "Beta (β) Blockers — Classification");
addRule(s, 1.15, C.blue);
// 3 subgroups
const groups = [
{
label: "Non-Selective (β1 + β2)", color: C.blue,
sub: "Without ISA: Propranolol, Timolol, Nadolol, Sotalol, Carteolol\nWith ISA: Oxprenolol, Pindolol, Alprenolol\nWith vasodilation: Carvedilol, Dilevalol"
},
{
label: "Cardioselective (β1-selective)", color: C.teal,
sub: "Atenolol, Metoprolol, Bisoprolol,\nAcebutolol, Betaxolol, Esmolol,\nNebivolol, Celiprolol"
},
{
label: "α + β Blockers", color: C.purple,
sub: "Labetalol\n(blocks both α and β receptors)"
},
];
groups.forEach((g, i) => {
const x = 0.35 + i * 3.17;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.28, w: 2.98, h: 1.72, fill: { color: "F5F5FF" }, line: { color: g.color, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x, y: 1.28, w: 2.98, h: 0.3, fill: { color: g.color }, line: { type: "none" } });
s.addText(g.label, { x, y: 1.28, w: 2.98, h: 0.3, fontSize: 8.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText(g.sub, { x: x + 0.12, y: 1.62, w: 2.74, h: 1.3, fontSize: 8.5, color: C.ink, fontFace: FONT, valign: "top" });
});
// β1 block effects
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 3.14, w: 4.5, h: 2.22, fill: { color: "F0F5FF" }, line: { color: C.blue, width: 1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 3.14, w: 4.5, h: 0.3, fill: { color: C.blue }, line: { type: "none" } });
s.addText("β1 BLOCKADE EFFECTS", { x: 0.35, y: 3.14, w: 4.5, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
["↓ HR (neg. chronotropy)", "↓ Contractility (neg. inotropy)", "↓ Conduction velocity", "↓ Renin secretion", "↓ Cardiac output"].forEach((e, i) => {
s.addText(" · " + e, { x: 0.5, y: 3.5 + i * 0.37, w: 4.25, h: 0.35, fontSize: 9, color: C.ink, fontFace: FONT });
});
// β2 block effects
s.addShape(pres.ShapeType.roundRect, { x: 5.15, y: 3.14, w: 4.5, h: 2.22, fill: { color: "FFF0F0" }, line: { color: C.red, width: 1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 3.14, w: 4.5, h: 0.3, fill: { color: C.red }, line: { type: "none" } });
s.addText("β2 BLOCKADE EFFECTS (Unwanted!)", { x: 5.15, y: 3.14, w: 4.5, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
["Bronchoconstriction → avoid in asthma!", "Vasoconstriction → cold extremities", "Uterine contraction", "↓ Glucose tolerance (DM risk)", "↑ TG, ↓ HDL"].forEach((e, i) => {
s.addText(" · " + e, { x: 5.3, y: 3.5 + i * 0.37, w: 4.25, h: 0.35, fontSize: 9, color: i === 0 ? C.red : C.ink, fontFace: FONT, bold: i === 0 });
});
}
// ══════════════════════════════════════════════
// SLIDE 19 – BETA BLOCKERS USES & CI
// ══════════════════════════════════════════════
function slideBetaBlockersUsesCI() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.blue);
addTag(s, "ADRENERGIC ANTAGONISTS", C.blue);
addTitle(s, "Beta Blockers — Therapeutic Uses & Contraindications");
addRule(s, 1.15, C.blue);
// Uses
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.28, w: 5.5, h: 3.58, fill: { color: "F0F5FF" }, line: { color: C.blue, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.28, w: 5.5, h: 0.32, fill: { color: C.blue }, line: { type: "none" } });
s.addText("THERAPEUTIC USES", { x: 0.35, y: 1.28, w: 5.5, h: 0.32, fontSize: 10, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
const uses4 = [
"Hypertension (1st line)",
"Angina pectoris",
"Tachyarrhythmias",
"Post-MI (cardioprotection)",
"CHF — Carvedilol, Bisoprolol, Metoprolol",
"Obstructive cardiomyopathy",
"Pheochromocytoma (+ α-blocker)",
"Thyrotoxicosis (↓ symptoms)",
"Glaucoma (Timolol eye drops)",
"Migraine prophylaxis (Propranolol)",
"Anxiety (performance anxiety)",
"Esophageal varices / cirrhosis",
"Alcohol withdrawal",
];
uses4.forEach((u, i) => {
s.addText(" · " + u, { x: 0.5, y: 1.67 + i * 0.3, w: 5.25, h: 0.28, fontSize: 8.5, color: C.ink, fontFace: FONT });
});
// S/E
s.addShape(pres.ShapeType.roundRect, { x: 6.05, y: 1.28, w: 3.6, h: 1.9, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.05, y: 1.28, w: 3.6, h: 0.3, fill: { color: C.red }, line: { type: "none" } });
s.addText("SIDE EFFECTS", { x: 6.05, y: 1.28, w: 3.6, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
["Bradycardia", "CHF precipitation", "Cold extremities", "Bronchoconstriction", "Insomnia, depression", "Fatigue / weakness", "Rebound hypertension on withdrawal"].forEach((e, i) => {
s.addText(" · " + e, { x: 6.18, y: 1.64 + i * 0.28, w: 3.34, h: 0.26, fontSize: 8.5, color: i === 6 ? C.red : C.ink, fontFace: FONT, bold: i === 6 });
});
// CI
s.addShape(pres.ShapeType.roundRect, { x: 6.05, y: 3.3, w: 3.6, h: 1.56, fill: { color: "FFF5F5" }, line: { color: C.red, width: 1.2 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.rect, { x: 6.05, y: 3.3, w: 3.6, h: 0.3, fill: { color: C.red }, line: { type: "none" } });
s.addText("CONTRAINDICATIONS", { x: 6.05, y: 3.3, w: 3.6, h: 0.3, fontSize: 9.5, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
["CHF (acute)", "COPD / Bronchial Asthma ⭐", "Bradycardia / Heart block", "DM (masks hypoglycemia)"].forEach((e, i) => {
s.addText(" ✕ " + e, { x: 6.18, y: 3.66 + i * 0.3, w: 3.34, h: 0.28, fontSize: 8.5, color: C.red, fontFace: FONT });
});
addMemBox(s, '"Never stop β-blockers abruptly → rebound hypertension / angina (taper slowly)"');
}
// ══════════════════════════════════════════════
// SLIDE 20 – RAPID REVIEW / CHEAT SHEET
// ══════════════════════════════════════════════
function slideCheatSheet() {
const s = pres.addSlide();
s.background = { color: C.white };
addAccentBar(s, C.blue);
addTag(s, "EXAM CHEAT SHEET", C.blue);
addTitle(s, "ANS Pharmacology — Rapid Review");
addRule(s, 1.15, C.blue);
const rows = [
{ drug: "Pilocarpine", type: "Cholinomimetic", use: "Glaucoma", se: "Miosis, bronchospasm", color: C.teal },
{ drug: "Neostigmine", type: "AChE inhibitor", use: "Myasthenia gravis Rx", se: "DUMBELS", color: C.teal },
{ drug: "Edrophonium", type: "AChE inhibitor (short)", use: "MG diagnosis", se: "DUMBELS (brief)", color: C.teal },
{ drug: "Atropine", type: "Antimuscarinic", use: "OPC poisoning, premed.", se: "Dry mouth, tachy, mydriasis", color: C.orange },
{ drug: "Ipratropium", type: "Antimuscarinic", use: "Asthma (prophylaxis)", se: "Dry mouth, minimal systemic", color: C.orange },
{ drug: "Succinylcholine", type: "Depolarizing NMBA", use: "Rapid intubation", se: "Malignant hyperthermia, ↑K+", color: C.purple },
{ drug: "Adrenaline", type: "α+β agonist", use: "Anaphylaxis (1st line)", se: "↑ BP, palpitation, anxiety", color: C.red },
{ drug: "Salbutamol", type: "β2 agonist", use: "Acute bronchospasm", se: "Tremor, tachycardia", color: C.red },
{ drug: "Propranolol", type: "Non-selective β-blocker", use: "HTN, angina, arrhythmia", se: "Bronchoconstriction ⚠", color: C.blue },
{ drug: "Prazosin", type: "α1 selective blocker", use: "HTN, BPH", se: "1st-dose postural hypotension", color: C.orange },
];
// Header
["Drug", "Type", "Main Use", "Key S/E"].forEach((h, i) => {
const xs = [0.35, 2.0, 4.18, 7.15];
const ws = [1.55, 2.08, 2.88, 2.5];
s.addText(h, { x: xs[i], y: 1.18, w: ws[i], h: 0.28, fontSize: 8.5, bold: true, color: C.gray, fontFace: FONT, valign: "middle" });
});
s.addShape(pres.ShapeType.line, { x: 0.35, y: 1.46, w: 9.3, h: 0, line: { color: C.blue, width: 1 } });
rows.forEach((r, i) => {
const y = 1.5 + i * 0.39;
const bg = i % 2 === 0 ? "F9FAFB" : "FFFFFF";
s.addShape(pres.ShapeType.rect, { x: 0.35, y, w: 9.3, h: 0.37, fill: { color: bg }, line: { type: "none" } });
// Drug name pill
s.addShape(pres.ShapeType.roundRect, { x: 0.38, y: y + 0.05, w: 1.5, h: 0.27, fill: { color: r.color }, line: { type: "none" }, rectRadius: 0.04 });
s.addText(r.drug, { x: 0.38, y: y + 0.05, w: 1.5, h: 0.27, fontSize: 8, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle", margin: 0 });
s.addText(r.type, { x: 2.02, y, w: 2.06, h: 0.37, fontSize: 8, color: C.gray, fontFace: FONT, valign: "middle" });
s.addText(r.use, { x: 4.2, y, w: 2.84, h: 0.37, fontSize: 8, color: C.ink, fontFace: FONT, valign: "middle", bold: true });
s.addText(r.se, { x: 7.17, y, w: 2.46, h: 0.37, fontSize: 7.5, color: r.se.includes("⚠") ? C.red : C.gray, fontFace: FONT, valign: "middle" });
});
}
// ══════════════════════════════════════════════
// SLIDE 21 – BACK COVER
// ══════════════════════════════════════════════
function slideBackCover() {
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "0D1B3E" }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.blue }, line: { type: "none" } });
for (let r = 0; r < 6; r++) for (let c = 0; c < 18; c++) {
s.addShape(pres.ShapeType.ellipse, { x: 0.8 + c * 0.52, y: 0.35 + r * 0.82, w: 0.04, h: 0.04, fill: { color: "FFFFFF", transparency: 82 }, line: { type: "none" } });
}
s.addText("Key Mnemonics", { x: 1, y: 0.6, w: 8, h: 0.45, fontSize: 18, bold: true, color: "6AABFF", fontFace: FONT_H, align: "center" });
s.addShape(pres.ShapeType.line, { x: 2, y: 1.1, w: 6, h: 0, line: { color: "3A72C4", width: 1 } });
const mnemonics = [
["DUMBELS", "Cholinergic S/E — Diarrhea, Urination, Miosis, Bronchospasm, Excitation, Lacrimation, Salivation"],
['"Hot as a hare…"', 'Atropine toxicity — Hot, Blind, Dry, Red, Mad'],
["α1 = Constrict", "Blood vessels, pupil dilation, bladder sphincter contraction"],
["β1 = Heart", "Beats faster, stronger, releases Renin"],
["β2 = Lungs + Uterus", "Bronchodilates, relaxes uterus"],
["Succinylcholine ⚠", "Malignant hyperthermia + hyperkalemia → risky in burns/trauma"],
];
mnemonics.forEach((m, i) => {
const y = 1.25 + i * 0.67;
s.addShape(pres.ShapeType.roundRect, { x: 0.8, y, w: 8.4, h: 0.55, fill: { color: "152A5A" }, line: { color: "2F5FAA", width: 0.6 }, rectRadius: 0.05 });
s.addText([
{ text: m[0] + " ", options: { bold: true, color: "6AABFF", fontSize: 9.5 } },
{ text: m[1], options: { color: "AACEFF", fontSize: 9 } },
], { x: 1.0, y, w: 8.0, h: 0.55, fontFace: FONT, valign: "middle" });
});
s.addText("ANS PHARMACOLOGY · STUDENT POCKET GUIDE", { x: 0.5, y: 5.2, w: 9, h: 0.25, fontSize: 7.5, color: "3A72C4", fontFace: FONT, align: "center", charSpacing: 3 });
}
// ─── BUILD ALL SLIDES ─────────────────────────
slideCover();
slideANSOverview();
slideCholinergicReceptors();
slideCholinoAgonistClass();
slideCholinoAgonistEffects();
slideCholinoAgonistSE();
slideAntimuscarinics();
slideAntimuscarinicsEffects();
slideAntimuscarinicsUseCI();
slideGanglionicBlockers();
slideNMBA();
slideNMBAUsesSE();
slideAdrenergicReceptors();
slideAdrenoAgonistClass();
slideAdrenaline();
slideAdrenoAgonistUsesCI();
slideAlphaBlockers();
slideBetaBlockers();
slideBetaBlockersUsesCI();
slideCheatSheet();
slideBackCover();
pres.writeFile({ fileName: "/home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pptx" })
.then(() => console.log("Done: ANS_Pharmacology_Pocket_Guide.pptx"))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/ans-pharma && node build.js 2>&1
ls -lh /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pptx
ANS Pharmacology Pocket Guide
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Cover — dark navy, premium design |
| 2 | ANS Overview — PNS vs SNS side-by-side |
| 3 | Cholinergic Receptors — Muscarinic (M1–M5) + Nicotinic |
| 4 | Cholinergic Agonists — Classification & MOA |
| 5 | Cholinergic Agonists — Effects organ-by-organ |
| 6 | Cholinergic Agonists — DUMBELS mnemonic + Reversal (Pralidoxime) |
| 7 | Antimuscarinic Drugs — Classification grid |
| 8 | Antimuscarinic Effects — 6-organ breakdown |
| 9 | Antimuscarinics — Uses + Contraindications |
| 10 | Ganglionic Blockers — MOA, drugs, effects, nicotine toxicity |
| 11 | NM Blocking Agents — Non-depol vs Depol (mechanism + paralysis order) |
| 12 | NMBAs — Uses, side effects, Succinylcholine warnings |
| 13 | Adrenergic Receptors — α1, α2, β1, β2 quick map |
| 14 | Adrenergic Agonists — Full classification |
| 15 | Adrenaline Focus — Prototype drug breakdown |
| 16 | Adrenergic Agonists — Drug-specific uses & CI |
| 17 | Alpha Blockers — Non-selective vs Selective α1 |
| 18 | Beta Blockers — Classification + β1/β2 blockade effects |
| 19 | Beta Blockers — Uses, S/E, contraindications |
| 20 | Rapid Review Cheat Sheet — 10 key drugs in one table |
| 21 | Back cover — All key mnemonics (DUMBELS, "Hot as a hare", receptor rules) |
what is the pasword of the pptx i want convert into pdf
cd /home/daytona/workspace/ans-pharma && libreoffice --headless --convert-to pdf ANS_Pharmacology_Pocket_Guide.pptx --outdir . 2>&1
mkdir -p /home/daytona/workspace/ans-pharma/output && libreoffice --headless --convert-to pdf /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pptx --outdir /home/daytona/workspace/ans-pharma/output 2>&1
cp /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pptx /tmp/ans.pptx && libreoffice --headless --convert-to pdf /tmp/ans.pptx --outdir /tmp/ 2>&1 && ls -lh /tmp/ans.pdf
cp /tmp/ans.pdf /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pdf && ls -lh /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pdf
ANS Pharmacology Pocket Guide
PDF Document · PDF
basically this ai is useless cause your pptx pdf both are not opening
file /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pptx && file /home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pdf && python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/ans-pharma/ANS_Pharmacology_Pocket_Guide.pdf') print('PDF pages:', len(r.pages)) print('PDF encrypted:', r.is_encrypted) "
ANS Pharmacology Pocket Guide
PDF Document · PDF
ANS Pharmacology Pocket Guide
Presentation · PPTX
first send this information text form only
| Subtype | Location | Effect |
|---|---|---|
| M1 | Neurons, gastric glands | ↑ secretion, CNS excitation |
| M2 | Heart | ↓ HR, ↓ conduction |
| M3 | Smooth muscle, glands | Contraction, ↑ secretion |
| M4 | CNS | Modulation |
| M5 | CNS | Dopamine release |
| Organ | Effect |
|---|---|
| Eye | Mydriasis, cycloplegia (no near focus), ↑ IOP, ↓ lacrimation |
| Heart | Low dose → bradycardia; High dose → tachycardia (vagal block) |
| GIT | ↓ motility, ↓ gastric secretion |
| Urinary tract | Detrusor relaxation, ↑ sphincter tone → urinary retention |
| Secretions | ↓ saliva (dry mouth), ↓ sweat (hyperthermia), ↓ bronchial secretion |
| Respiratory | Bronchodilation, ↓ mucus secretion |
| CNS | Stimulant (overdose) or depressant (antiemetic — hyoscine) |
| Receptor | Location | Effects |
|---|---|---|
| α1 | Blood vessels, eye, bladder | Vasoconstriction, mydriasis, ↑ sphincter tone, ↑ BP |
| α2 | Presynaptic terminals, platelets | ↓ NE release, platelet aggregation, ↓ insulin secretion |
| β1 | Heart, kidney (JGA) | ↑ HR, ↑ contractility, ↑ renin secretion |
| β2 | Bronchi, uterus, vessels | Bronchodilation, uterine relaxation, vasodilation, glycogenolysis |
| Drug | Use |
|---|---|
| Adrenaline | Anaphylaxis, acute asthma, glaucoma, cardiac arrest |
| Noradrenaline | Shock (vasopressor) |
| Dobutamine | Congestive heart failure (CHF) |
| Dopamine | Cardiogenic/septic shock, CHF |
| Phenylephrine | Nasal decongestant, ocular examination |
| Salbutamol | Bronchial asthma, premature labor |
| Isoproterenol | Bronchodilator, cardiac stimulant |
| Clonidine | Hypertension (central α2 agonist) |
| Drug | Class | Main Use | Key Side Effect |
|---|---|---|---|
| Pilocarpine | Cholinomimetic (direct) | Glaucoma | Miosis, bronchospasm |
| Neostigmine | AChE inhibitor | Myasthenia gravis (Rx) | DUMBELS |
| Edrophonium | AChE inhibitor (short) | MG diagnosis | DUMBELS (brief) |
| Atropine | Antimuscarinic | OPC poisoning, pre-med | Dry mouth, tachy, mydriasis |
| Ipratropium | Antimuscarinic | Asthma (prophylaxis) | Dry mouth (minimal systemic) |
| Succinylcholine | Depolarizing NMBA | Rapid intubation | Malignant hyperthermia, ↑K⁺ |
| Adrenaline | α+β agonist | Anaphylaxis (1st line) | ↑ BP, palpitation, anxiety |
| Salbutamol | β2 agonist | Acute bronchospasm | Tremor, tachycardia |
| Propranolol | Non-selective β-blocker | HTN, angina, arrhythmia | Bronchoconstriction ⚠ |
| Prazosin | α1-selective blocker | HTN, BPH | 1st-dose postural hypotension |
| Clonidine | α2 agonist (central) | Hypertension | Sedation, dry mouth |
| Dopamine | Dose-dependent α+β | Shock, CHF | ↑ HR, arrhythmias |