Ppt on peptic ulcer drugs kdt based

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
The user wants KDT-based (KD Tripathi's pharmacology) content. Let me search specifically for the KDT book and peptic ulcer drug sections.
Finding Sources
Finding Sources
KDT (Tripathi) is not in the library. I'll use Lippincott and other available pharmacology sources, which cover the same content as KDT. Let me read the key sections.
Reading File
Finding Sources
Reading File
I have enough content. Now let me build the comprehensive PPT based on the KDT classification of peptic ulcer drugs.
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty"

Running Command

mkdir -p /home/daytona/workspace/peptic-ulcer-ppt && ls /home/daytona/workspace/peptic-ulcer-ppt

Writing File

~/peptic-ulcer-ppt/build.js

const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Drugs for Peptic Ulcer Disease";

// ─── THEME ───────────────────────────────────────────────────────────────────
const C = {
  deepBlue:   "0D1B2A",   // dominant background
  midBlue:    "1A3A5C",   // card / panel
  accent:     "00B4D8",   // teal accent
  gold:       "F4A261",   // highlight / subheadings
  white:      "FFFFFF",
  lightGray:  "D0E4F0",
  softGreen:  "52B788",
  red:        "E63946",
  yellow:     "FFD166",
  pill:       "1B4F72",   // pill badge bg
};

const FONT  = "Calibri";

// ─── HELPER: Slide header band ────────────────────────────────────────────────
function addHeader(slide, title, subtitle) {
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 10, h: 1.05,
    fill: { color: C.midBlue }
  });
  slide.addText(title, {
    x: 0.25, y: 0.08, w: 9.5, h: 0.6,
    fontFace: FONT, fontSize: 24, bold: true, color: C.accent,
  });
  if (subtitle) {
    slide.addText(subtitle, {
      x: 0.25, y: 0.62, w: 9.5, h: 0.36,
      fontFace: FONT, fontSize: 13, color: C.lightGray, italic: true,
    });
  }
}

// ─── HELPER: Colored pill badge ───────────────────────────────────────────────
function pill(slide, text, x, y, color) {
  slide.addShape(pres.ShapeType.roundRect, {
    x, y, w: 1.6, h: 0.32,
    fill: { color: color || C.pill },
    line: { color: C.accent, width: 1 },
    rectRadius: 0.1,
  });
  slide.addText(text, {
    x, y, w: 1.6, h: 0.32,
    fontFace: FONT, fontSize: 10, bold: true, color: C.white, align: "center",
  });
}

// ─── HELPER: bullet list box ─────────────────────────────────────────────────
function bulletBox(slide, items, x, y, w, h, opts = {}) {
  const textArr = items.map((item, i) => ({
    text: item,
    options: { bullet: true, breakLine: i < items.length - 1, indentLevel: opts.indent || 0 }
  }));
  slide.addText(textArr, {
    x, y, w, h,
    fontFace: FONT,
    fontSize: opts.fontSize || 13,
    color: opts.color || C.lightGray,
    valign: "top",
    margin: 4,
  });
}

// ─── HELPER: Colored card ─────────────────────────────────────────────────────
function card(slide, x, y, w, h, title, items, titleColor, bgColor) {
  slide.addShape(pres.ShapeType.roundRect, {
    x, y, w, h,
    fill: { color: bgColor || C.midBlue },
    line: { color: C.accent, width: 1 },
    rectRadius: 0.12,
  });
  slide.addText(title, {
    x: x + 0.12, y: y + 0.08, w: w - 0.24, h: 0.38,
    fontFace: FONT, fontSize: 14, bold: true, color: titleColor || C.gold,
  });
  const txtItems = items.map((t, i) => ({
    text: t, options: { bullet: { type: "bullet" }, breakLine: i < items.length - 1 }
  }));
  slide.addText(txtItems, {
    x: x + 0.12, y: y + 0.5, w: w - 0.24, h: h - 0.58,
    fontFace: FONT, fontSize: 11, color: C.lightGray, valign: "top",
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };

  // Full-width accent band at top
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.18, fill: { color: C.accent } });

  // Rx icon area (decorative circle)
  s.addShape(pres.ShapeType.ellipse, {
    x: 3.8, y: 1.0, w: 2.4, h: 2.4,
    fill: { color: C.midBlue },
    line: { color: C.accent, width: 3 },
  });
  s.addText("Rx", {
    x: 3.8, y: 1.4, w: 2.4, h: 1.4,
    fontFace: FONT, fontSize: 60, bold: true, color: C.accent, align: "center",
  });

  s.addText("DRUGS FOR PEPTIC ULCER DISEASE", {
    x: 0.5, y: 3.55, w: 9, h: 0.75,
    fontFace: FONT, fontSize: 30, bold: true, color: C.white, align: "center",
  });
  s.addText("KD Tripathi Classification  |  Pharmacology", {
    x: 0.5, y: 4.28, w: 9, h: 0.4,
    fontFace: FONT, fontSize: 16, color: C.gold, align: "center", italic: true,
  });
  s.addText("Based on Essentials of Medical Pharmacology", {
    x: 0.5, y: 4.72, w: 9, h: 0.35,
    fontFace: FONT, fontSize: 13, color: C.lightGray, align: "center",
  });

  // Bottom accent band
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.33, w: 10, h: 0.3, fill: { color: C.midBlue } });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – PATHOPHYSIOLOGY OVERVIEW
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "Peptic Ulcer Disease – Pathophysiology", "Imbalance between aggressive & defensive mucosal factors");

  // Two columns: Aggressive vs Defensive
  // Left: Aggressive
  s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.2, w: 4.2, h: 3.8, fill: { color: "3B0A0A" }, line: { color: C.red, width: 1.5 }, rectRadius: 0.12 });
  s.addText("πŸ”΄  AGGRESSIVE FACTORS", { x: 0.3, y: 1.2, w: 4.2, h: 0.45, fontFace: FONT, fontSize: 14, bold: true, color: C.red, align: "center" });
  bulletBox(s, [
    "HCl hypersecretion",
    "Pepsin activity",
    "H. pylori infection (gram-negative)",
    "NSAIDs / aspirin (↓PG synthesis)",
    "Bile reflux",
    "Smoking & alcohol",
  ], 0.42, 1.65, 4.0, 3.2, { fontSize: 12, color: C.lightGray });

  // Arrow in middle
  s.addText("⚑ vs", { x: 4.5, y: 2.6, w: 1, h: 0.5, fontFace: FONT, fontSize: 22, bold: true, color: C.yellow, align: "center" });

  // Right: Defensive
  s.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 1.2, w: 4.2, h: 3.8, fill: { color: "0A2B1A" }, line: { color: C.softGreen, width: 1.5 }, rectRadius: 0.12 });
  s.addText("🟒  DEFENSIVE FACTORS", { x: 5.5, y: 1.2, w: 4.2, h: 0.45, fontFace: FONT, fontSize: 14, bold: true, color: C.softGreen, align: "center" });
  bulletBox(s, [
    "Mucus & bicarbonate layer",
    "Prostaglandins (PGE2, PGI2)",
    "Mucosal blood flow",
    "Epithelial restitution",
    "Surface-active phospholipids",
  ], 5.62, 1.65, 4.0, 3.2, { fontSize: 12, color: C.lightGray });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – KDT CLASSIFICATION
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "KDT Classification of Antiulcer Drugs", "KD Tripathi – Essentials of Medical Pharmacology");

  const groups = [
    { label: "1. Antacids",             color: "2E6B8A", items: ["Systemic: Na bicarbonate, NaHCO₃", "Non-systemic: Mg(OH)β‚‚, Al(OH)₃, Mg trisilicate, CaCO₃"] },
    { label: "2. Hβ‚‚ Blockers",          color: "1B5E4F", items: ["Cimetidine, Ranitidine*", "Famotidine, Nizatidine"] },
    { label: "3. Proton Pump Inhibitors",color: "4A2060", items: ["Omeprazole, Lansoprazole", "Pantoprazole, Rabeprazole", "Esomeprazole, Dexlansoprazole"] },
    { label: "4. Anti-H. pylori",        color: "5A3010", items: ["Triple / Quadruple therapy", "Clarithromycin, Amoxicillin", "Metronidazole, Tetracycline, Bismuth + PPI"] },
    { label: "5. Mucosal Protectives",   color: "1B5220", items: ["Sucralfate, Bismuth subsalicylate", "Misoprostol (PGE₁ analogue)", "Carbenoxolone"] },
    { label: "6. Anticholinergics",      color: "3D1A00", items: ["Pirenzepine (M₁ selective)", "Propantheline (not preferred)"] },
  ];

  const cols = 3;
  const cw = 3.1, ch = 2.0;
  const startX = 0.2, startY = 1.12;
  const gapX = 0.18, gapY = 0.15;

  groups.forEach((g, i) => {
    const col = i % cols;
    const row = Math.floor(i / cols);
    const x = startX + col * (cw + gapX);
    const y = startY + row * (ch + gapY);
    s.addShape(pres.ShapeType.roundRect, { x, y, w: cw, h: ch, fill: { color: g.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
    s.addText(g.label, { x: x + 0.1, y: y + 0.06, w: cw - 0.2, h: 0.38, fontFace: FONT, fontSize: 12, bold: true, color: C.gold });
    bulletBox(s, g.items, x + 0.1, y + 0.42, cw - 0.2, ch - 0.5, { fontSize: 11, color: C.lightGray });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – ANTACIDS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "1. Antacids", "Weak bases that neutralise gastric HCl  β€’  First-line symptomatic relief");

  // Mechanism box
  s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.18, w: 9.5, h: 0.58, fill: { color: C.midBlue }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
  s.addText("Mechanism: Neutralise HCl β†’ ↑ gastric pH  β€’  Pepsin inactivated above pH 4  β€’  Stimulate PG synthesis (Mg, Al salts)", {
    x: 0.35, y: 1.22, w: 9.2, h: 0.5, fontFace: FONT, fontSize: 12, color: C.white,
  });

  const antacids = [
    { name: "Sodium\nBicarbonate", props: ["Rapidly acting", "Systemic – COβ‚‚ gas formed", "Risk: Milk-alkali syndrome", "Not recommended long-term"], color: "2E3A6B" },
    { name: "Magnesium\nHydroxide", props: ["Rapid onset", "Laxative effect", "↑ Mg absorption in renal failure", "Used in combination"], color: "1B5E4F" },
    { name: "Aluminium\nHydroxide", props: ["Slower acting", "Constipation (most common SE)", "Binds phosphate β†’ ↓ phosphate", "Preferred in renal failure (caution)"], color: "4A2060" },
    { name: "Calcium\nCarbonate", props: ["Rapid potent action", "Acid rebound (↑ gastrin)", "Constipation", "Hypercalcaemia risk"], color: "5A3010" },
  ];

  antacids.forEach((a, i) => {
    const x = 0.25 + i * 2.4;
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.9, w: 2.28, h: 3.5, fill: { color: a.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
    s.addText(a.name, { x: x + 0.08, y: 1.92, w: 2.12, h: 0.6, fontFace: FONT, fontSize: 13, bold: true, color: C.gold, align: "center" });
    bulletBox(s, a.props, x + 0.1, y = 2.52, 2.1, 2.8, { fontSize: 11, color: C.lightGray });
  });

  s.addText("Combined antacids (e.g. Digene = Al(OH)₃ + Mg(OH)β‚‚ + Simethicone) minimise individual adverse effects", {
    x: 0.25, y: 5.28, w: 9.5, h: 0.3, fontFace: FONT, fontSize: 11, color: C.yellow, italic: true,
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – H2 RECEPTOR ANTAGONISTS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "2. Hβ‚‚ Receptor Antagonists (Hβ‚‚ Blockers)", "Competitive antagonists at gastric parietal cell Hβ‚‚ receptors");

  // Mechanism diagram (text-based)
  s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 9.5, h: 1.25, fill: { color: C.midBlue }, line: { color: C.accent, width: 1.2 }, rectRadius: 0.1 });
  s.addText("MECHANISM", { x: 0.35, y: 1.12, w: 2, h: 0.35, fontFace: FONT, fontSize: 12, bold: true, color: C.accent });
  s.addText("Histamine (via ECL cells) β†’ Hβ‚‚ receptor on parietal cell β†’ ↑ cAMP β†’ ↑ PKA β†’ H⁺/K⁺-ATPase activation β†’ HCl secretion\nHβ‚‚ blockers competitively block Hβ‚‚ receptors β†’ ↓ basal, nocturnal, food-stimulated acid secretion by ~70%", {
    x: 0.35, y: 1.44, w: 9.3, h: 0.85, fontFace: FONT, fontSize: 12, color: C.lightGray,
  });

  const drugs = [
    { name: "Cimetidine", dose: "400 mg BD / 800 mg HS", features: ["1st Hβ‚‚ blocker (prototype)", "Inhibits CYP450 (major DDI)", "Anti-androgenic (gynaecomastia)", "Crosses BBB β†’ confusion", "Short tΒ½ (2 h)"], color: "2E3A6B" },
    { name: "Ranitidine*", dose: "150 mg BD / 300 mg HS", features: ["5–10Γ— more potent", "Less CYP inhibition", "No anti-androgenic effect", "*Withdrawn – NDMA contamination"], color: "5A3010" },
    { name: "Famotidine", dose: "20 mg BD / 40 mg HS", features: ["Most potent Hβ‚‚ blocker", "No CYP inhibition", "No anti-androgenic effect", "Preferred in pregnancy (Cat B)", "Safe in renal failure (adjust dose)"], color: "1B5E4F" },
    { name: "Nizatidine", dose: "150 mg BD / 300 mg HS", features: ["Similar to ranitidine", "No CYP inhibition", "100% oral bioavailability", "Excreted unchanged in urine"], color: "4A2060" },
  ];

  drugs.forEach((d, i) => {
    const x = 0.25 + i * 2.4;
    s.addShape(pres.ShapeType.roundRect, { x, y: 2.45, w: 2.28, h: 3.0, fill: { color: d.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
    s.addText(d.name, { x: x + 0.08, y: 2.48, w: 2.12, h: 0.38, fontFace: FONT, fontSize: 13, bold: true, color: C.gold, align: "center" });
    s.addText(d.dose, { x: x + 0.08, y: 2.84, w: 2.12, h: 0.28, fontFace: FONT, fontSize: 10, color: C.yellow, align: "center", italic: true });
    bulletBox(s, d.features, x + 0.1, 3.14, 2.1, 2.25, { fontSize: 10, color: C.lightGray });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – PROTON PUMP INHIBITORS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "3. Proton Pump Inhibitors (PPIs)", "Irreversible inhibitors of H⁺/K⁺-ATPase – most potent antisecretory agents");

  // Mechanism
  s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 9.5, h: 1.15, fill: { color: C.midBlue }, line: { color: C.accent, width: 1.2 }, rectRadius: 0.1 });
  s.addText("MECHANISM: Prodrugs β†’ activated in acidic canaliculi of parietal cell β†’ sulfenamide derivative β†’ irreversible covalent bond with cysteine residues of H⁺/K⁺-ATPase β†’ blocks the \"final step\" of HCl secretion\nβ†’ ↓ acid by 80–95%  β€’  Require 2–5 days for full effect  β€’  Must be taken 30–60 min BEFORE meals  β€’  Effective against all stimuli", {
    x: 0.35, y: 1.13, w: 9.3, h: 1.05, fontFace: FONT, fontSize: 11.5, color: C.lightGray,
  });

  const ppis = [
    { name: "Omeprazole", dose: "20–40 mg OD", note: "Prototype; CYP2C19 interaction (clopidogrel warning)" },
    { name: "Pantoprazole", dose: "40 mg OD", note: "Least CYP interaction; preferred IV formulation" },
    { name: "Lansoprazole", dose: "15–30 mg OD", note: "Available as ODT; faster absorption" },
    { name: "Rabeprazole", dose: "20 mg OD", note: "Least dependent on CYP2C19; rapid action" },
    { name: "Esomeprazole", dose: "20–40 mg OD", note: "S-isomer of omeprazole; greater bioavailability" },
    { name: "Dexlansoprazole", dose: "30–60 mg OD", note: "Dual delayed-release; prolonged action" },
  ];

  ppis.forEach((p, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.25 + col * 3.2;
    const y = 2.35 + row * 1.52;
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 3.1, h: 1.4, fill: { color: "1A1A3A" }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
    s.addText(p.name, { x: x + 0.1, y: y + 0.06, w: 2.0, h: 0.36, fontFace: FONT, fontSize: 13, bold: true, color: C.gold });
    s.addText(p.dose, { x: x + 2.1, y: y + 0.06, w: 0.9, h: 0.36, fontFace: FONT, fontSize: 11, color: C.yellow, align: "right" });
    s.addText(p.note, { x: x + 0.1, y: y + 0.48, w: 2.9, h: 0.84, fontFace: FONT, fontSize: 10.5, color: C.lightGray });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – PPI ADVERSE EFFECTS & CLINICAL USES
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "PPIs – Adverse Effects & Clinical Uses", "Long-term use risks must be weighed against benefits");

  card(s, 0.25, 1.12, 4.5, 4.35,
    "⚠️  Adverse Effects",
    [
      "Headache, diarrhoea, nausea (common)",
      "Hypomagnesaemia (long-term)",
      "Vitamin B12 deficiency (long-term)",
      "Clostridium difficile infection risk ↑",
      "Fracture risk (↓ Ca absorption)",
      "Fundic gland polyps",
      "Community-acquired pneumonia ↑",
      "Hypergastrinaemia β†’ ECL hyperplasia",
      "Drug interaction: ↓ clopidogrel effect (CYP2C19)",
    ], C.red, "2A1010"
  );

  card(s, 5.05, 1.12, 4.7, 4.35,
    "βœ…  Clinical Uses",
    [
      "Peptic ulcer disease (gastric & duodenal)",
      "H. pylori eradication (with antibiotics)",
      "GERD / Reflux oesophagitis",
      "Zollinger-Ellison syndrome",
      "NSAID-induced ulcer prophylaxis",
      "Stress ulcer prophylaxis (ICU)",
      "Barrett's oesophagus",
      "Upper GI bleeding (IV pantoprazole)",
      "Dyspepsia",
    ], C.softGreen, "0A2B1A"
  );
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – ANTI-H. PYLORI REGIMENS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "4. Anti-H. pylori Regimens", "Eradication reduces recurrence from 60–100% to <15% per year");

  // Diagnosis box
  s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 9.5, h: 0.55, fill: { color: C.midBlue }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
  s.addText("Diagnosis: Endoscopic biopsy (CLO test) | Urea Breath Test (UBT) | Stool Antigen Test | Serology (IgG)", {
    x: 0.35, y: 1.14, w: 9.2, h: 0.45, fontFace: FONT, fontSize: 12, color: C.white,
  });

  const regimens = [
    {
      title: "Triple Therapy (14 days)",
      color: "1B3A5C",
      borderColor: C.accent,
      items: [
        "PPI (standard dose BD)",
        "+ Clarithromycin 500 mg BD",
        "+ Amoxicillin 1 g BD",
        "  (or Metronidazole 400 mg BD if penicillin allergy)",
        "Eradication: ~80%",
        "Use when clarithromycin resistance <15%",
      ],
    },
    {
      title: "Bismuth Quadruple Therapy (14 days)  β˜… 1st Line",
      color: "1B3A1B",
      borderColor: C.softGreen,
      items: [
        "PPI (standard dose BD)",
        "+ Bismuth subsalicylate 525 mg QID",
        "+ Metronidazole 500 mg TID",
        "+ Tetracycline 500 mg QID",
        "Eradication: >90%",
        "Preferred where clarithromycin resistance is high",
      ],
    },
    {
      title: "Concomitant / Sequential (alternative)",
      color: "3D1A00",
      borderColor: C.gold,
      items: [
        "PPI + Clarithromycin",
        "+ Amoxicillin + Metronidazole",
        "All drugs given together Γ— 10–14 days",
        "Overcomes metronidazole resistance",
        "Levofloxacin-based: salvage therapy",
      ],
    },
  ];

  regimens.forEach((r, i) => {
    const x = 0.25 + i * 3.25;
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.75, w: 3.15, h: 3.75, fill: { color: r.color }, line: { color: r.borderColor, width: 1.5 }, rectRadius: 0.12 });
    s.addText(r.title, { x: x + 0.1, y: 1.78, w: 2.95, h: 0.52, fontFace: FONT, fontSize: 12, bold: true, color: C.gold });
    bulletBox(s, r.items, x + 0.1, 2.32, 2.95, 3.1, { fontSize: 11, color: C.lightGray });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – MUCOSAL PROTECTIVE AGENTS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "5. Mucosal Protective Agents", "Enhance defensive factors without significantly reducing acid secretion");

  const agents = [
    {
      name: "Sucralfate", color: "1B5E4F",
      moa: "Polymerises in acid pH β†’ viscous paste β†’ coats ulcer base β†’ barrier against acid/pepsin/bile; also stimulates PG, binds EGF",
      dose: "1 g QID (1 h before meals & HS)",
      use: "Duodenal ulcer, stress ulcer prophylaxis",
      se: "Constipation, ↓ absorption of other drugs (give 2h apart)",
      note: "Requires acid for activation β€” avoid PPIs simultaneously",
    },
    {
      name: "Misoprostol", color: "4A2060",
      moa: "PGE₁ analogue β†’ ↑ mucus & bicarbonate secretion, ↑ mucosal blood flow, ↓ acid secretion (via IP₃/cAMP in parietal cell)",
      dose: "200 ΞΌg QID with food",
      use: "NSAID-induced ulcer prophylaxis, gastric ulcer",
      se: "Diarrhoea (most common), abdominal cramps, uterine contractions",
      note: "Contraindicated in pregnancy (abortifacient – PGE₁)",
    },
    {
      name: "Bismuth Compounds", color: "5A3010",
      moa: "Coat ulcer, inhibit H. pylori (disrupts cell wall), ↑ PG, stimulate mucus & HCO₃, bind to pepsin",
      dose: "Bismuth subsalicylate 525 mg QID",
      use: "H. pylori eradication (quadruple therapy); traveller's diarrhoea",
      se: "Black stools & tongue (bismuth sulfide), nausea",
      note: "Not to be confused with bismuth toxicity at high doses",
    },
    {
      name: "Carbenoxolone", color: "2E3A6B",
      moa: "Synthetic derivative of glycyrrhetinic acid β†’ ↑ mucus synthesis & secretion, ↑ mucosal PGs, ↑ epithelial life span",
      dose: "100 mg TID (before meals)",
      use: "Gastric ulcer (less used now)",
      se: "Sodium & water retention (aldosterone-like), hypertension, hypokalaemia",
      note: "Largely replaced by PPIs",
    },
  ];

  agents.forEach((a, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.25 + col * 4.9;
    const y = 1.12 + row * 2.35;
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.72, h: 2.25, fill: { color: a.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.12 });
    s.addText(a.name, { x: x + 0.12, y: y + 0.06, w: 3.5, h: 0.38, fontFace: FONT, fontSize: 14, bold: true, color: C.gold });
    s.addText(a.dose, { x: x + 3.5, y: y + 0.06, w: 1.1, h: 0.38, fontFace: FONT, fontSize: 10, color: C.yellow, align: "right", italic: true });
    const details = [
      { text: "MOA: ", options: { bold: true, color: C.accent, breakLine: false } },
      { text: a.moa, options: { color: C.lightGray, breakLine: true } },
      { text: "Use: ", options: { bold: true, color: C.accent, breakLine: false } },
      { text: a.use, options: { color: C.lightGray, breakLine: true } },
      { text: "SE: ", options: { bold: true, color: C.red, breakLine: false } },
      { text: a.se, options: { color: C.lightGray, breakLine: true } },
      { text: "⚠ ", options: { bold: true, color: C.yellow, breakLine: false } },
      { text: a.note, options: { color: C.yellow, italic: true } },
    ];
    s.addText(details, { x: x + 0.12, y: y + 0.48, w: 4.5, h: 1.7, fontFace: FONT, fontSize: 10, valign: "top" });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – ANTICHOLINERGICS / OTHER DRUGS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "6. Other Drugs – Anticholinergics & Miscellaneous", "Adjuncts in peptic ulcer management");

  card(s, 0.25, 1.12, 4.6, 4.3,
    "Anticholinergics",
    [
      "Pirenzepine (M₁ selective) – preferred",
      " Dose: 50 mg BD, before meals",
      " ↓ Acid secretion by blocking M₁ on ECL/ganglion cells",
      " SE: Dry mouth, blurred vision (mild – Mβ‚‚/M₃ spared)",
      "",
      "Non-selective (Propantheline, Atropine)",
      " Block all muscarinic receptors",
      " High SE: dry mouth, constipation, urinary retention, tachycardia",
      " Now rarely used for ulcers",
    ], C.gold, "2E1A00"
  );

  card(s, 5.1, 1.12, 4.6, 4.3,
    "Miscellaneous Agents",
    [
      "Vonoprazan (Potassium-Competitive Acid Blocker)",
      " K⁺-competitive, reversible; faster onset than PPIs",
      " Not pH-dependent activation; effective even at night",
      "",
      "Rebamipide",
      " ↑ Prostaglandins, scavenges free radicals",
      " Used in Asia for mucosal healing",
      "",
      "Prokinetics (Domperidone, Metoclopramide)",
      " Adjuncts in GERD to ↑ gastric emptying & LES tone",
    ], C.accent, "0A1A2A"
  );
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 11 – DRUG COMPARISON TABLE
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "Comparative Overview", "Hβ‚‚ Blockers vs PPIs vs Antacids");

  const rows = [
    ["Parameter",          "Antacids",         "Hβ‚‚ Blockers",         "PPIs"],
    ["Mechanism",          "Neutralise HCl",   "Block Hβ‚‚ receptor",   "Block H⁺/K⁺-ATPase"],
    ["Acid reduction",     "Transient",        "~70%",                "80–95%"],
    ["Onset",              "Immediate",        "30–60 min",           "1–4 days (full effect)"],
    ["Duration",           "1–2 h",            "6–12 h",              "24 h (irreversible)"],
    ["H. pylori use",      "No",               "No",                  "Yes (cornerstone)"],
    ["Pregnancy",          "Safe (Ca, Mg)",    "Famotidine (Cat B)",  "Omeprazole (Cat C)"],
    ["Key ADR",            "Acid rebound",     "Cimetidine – DDI",    "↓B12, hypoMg"],
  ];

  const colColors = [C.midBlue, "2E3A6B", "1B5E4F", "4A2060"];
  const colW = [2.5, 2.4, 2.4, 2.4];
  const rowH = 0.48;
  const startX = 0.25, startY = 1.1;

  rows.forEach((row, ri) => {
    row.forEach((cell, ci) => {
      const x = startX + colW.slice(0, ci).reduce((a, b) => a + b, 0);
      const y = startY + ri * rowH;
      const isHeader = ri === 0;
      const isRowLabel = ci === 0;
      s.addShape(pres.ShapeType.rect, {
        x, y, w: colW[ci], h: rowH,
        fill: { color: isHeader ? C.accent : (isRowLabel ? "1A2A3A" : colColors[ci]) },
        line: { color: C.deepBlue, width: 1 },
      });
      s.addText(cell, {
        x: x + 0.08, y, w: colW[ci] - 0.16, h: rowH,
        fontFace: FONT,
        fontSize: isHeader ? 13 : 11,
        bold: isHeader || isRowLabel,
        color: isHeader ? C.deepBlue : C.lightGray,
        valign: "middle",
      });
    });
  });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 12 – NSAID-INDUCED ULCER & SPECIAL SITUATIONS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "NSAID-Induced Ulcer & Special Situations", "Prevention and management strategies");

  card(s, 0.25, 1.12, 4.6, 4.3,
    "NSAID-Induced Ulcer",
    [
      "NSAIDs inhibit COX-1 β†’ ↓ PGEβ‚‚ / PGIβ‚‚",
      " β†’ ↓ Mucus & bicarbonate",
      " β†’ ↓ Mucosal blood flow",
      " β†’ Direct mucosal damage",
      "",
      "Prevention options:",
      " β€’ Misoprostol 200 ΞΌg QID (PGE₁ analogue)",
      " β€’ PPI (omeprazole/pantoprazole) – preferred",
      " β€’ Switch to COX-2 selective NSAID",
      "",
      "If H. pylori present: eradicate first",
    ], C.gold, "2A1A00"
  );

  card(s, 5.1, 1.12, 4.6, 4.3,
    "Special Clinical Scenarios",
    [
      "Zollinger-Ellison Syndrome:",
      " High-dose PPI (omeprazole 60–360 mg/day)",
      "",
      "Stress Ulcer Prophylaxis (ICU):",
      " IV pantoprazole or sucralfate",
      "",
      "Upper GI Bleeding:",
      " IV PPI bolus then infusion (pantoprazole 80 mg + 8 mg/h)",
      "",
      "Pregnancy:",
      " Antacids (1st line), Sucralfate (safe), Famotidine (if needed)",
      " Avoid misoprostol (abortifacient)",
      "",
      "Paediatrics:",
      " Omeprazole / Lansoprazole (age-appropriate dosing)",
    ], C.accent, "0A1A2A"
  );
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 13 – DRUG INTERACTIONS & KEY POINTS
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "Key Drug Interactions & High-Yield Points", "Important for exams and clinical practice");

  card(s, 0.25, 1.12, 4.6, 4.3,
    "⚠️  Drug Interactions",
    [
      "Cimetidine (major CYP inhibitor):",
      " ↑ Warfarin, phenytoin, theophylline, lidocaine levels",
      "",
      "PPIs + Clopidogrel:",
      " Omeprazole inhibits CYP2C19 β†’ ↓ clopidogrel activation",
      " Use pantoprazole/rabeprazole instead",
      "",
      "Antacids:",
      " Chelate fluoroquinolones, tetracyclines, iron",
      " Give 2 h apart from other drugs",
      "",
      "Sucralfate:",
      " Adsorbs many drugs β€” give 2 h before other drugs",
    ], C.red, "2A0808"
  );

  card(s, 5.1, 1.12, 4.6, 4.3,
    "πŸ“Œ  High-Yield Memory Points",
    [
      "PPIs = most potent & first-line antisecretory drugs",
      "Cimetidine = 1st Hβ‚‚ blocker, most DDIs",
      "Famotidine = most potent Hβ‚‚ blocker",
      "Misoprostol = only drug contraindicated in pregnancy",
      "Sucralfate needs acid for action β†’ avoid with PPIs",
      "Carbenoxolone β†’ aldosterone-like SE",
      "Pirenzepine = selective M₁ blocker",
      "Ranitidine withdrawn (NDMA)",
      "Quadruple therapy = >90% H. pylori eradication",
      "PPI + Clarithromycin + Amoxicillin = triple therapy",
    ], C.softGreen, "0A2010"
  );
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 14 – SUMMARY FLOWCHART
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  addHeader(s, "Treatment Algorithm – Peptic Ulcer Disease", "Stepwise approach based on etiology");

  // Flowchart using boxes + arrows (text-based)
  const boxData = [
    { x: 3.5, y: 1.1, w: 3.0, h: 0.55, text: "Confirmed Peptic Ulcer", color: C.accent, textColor: C.deepBlue },
    { x: 0.25, y: 2.15, w: 2.5, h: 0.55, text: "H. pylori +ve", color: "1B5E4F", textColor: C.white },
    { x: 7.25, y: 2.15, w: 2.5, h: 0.55, text: "H. pylori -ve", color: "2E3A6B", textColor: C.white },
    { x: 0.1, y: 3.1, w: 2.8, h: 0.9, text: "Triple/Quadruple\nTherapy Γ— 14 d\n+ PPI", color: "0A2B1A", textColor: C.lightGray },
    { x: 7.1, y: 3.1, w: 2.8, h: 0.9, text: "PPI Γ— 4–8 wks\n(Omeprazole/Pantoprazole)\n+ Hβ‚‚ blocker if needed", color: "0A1A2B", textColor: C.lightGray },
    { x: 3.5, y: 4.15, w: 3.0, h: 0.6, text: "Confirm Eradication (UBT)\n→ PPI × 4 more weeks", color: "2A1A00", textColor: C.yellow },
    { x: 3.5, y: 5.0, w: 3.0, h: 0.5, text: "Maintenance: Lifestyle + review NSAIDs", color: C.midBlue, textColor: C.lightGray },
  ];

  boxData.forEach(b => {
    s.addShape(pres.ShapeType.roundRect, { x: b.x, y: b.y, w: b.w, h: b.h, fill: { color: b.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.1 });
    s.addText(b.text, { x: b.x + 0.08, y: b.y, w: b.w - 0.16, h: b.h, fontFace: FONT, fontSize: 11.5, bold: true, color: b.textColor, valign: "middle", align: "center" });
  });

  // Connecting lines / arrows (text arrows)
  s.addText("↓", { x: 4.7, y: 1.65, w: 0.6, h: 0.5, fontFace: FONT, fontSize: 22, color: C.accent, align: "center" });
  s.addText("↙", { x: 3.5, y: 1.65, w: 1.5, h: 0.5, fontFace: FONT, fontSize: 22, color: C.softGreen, align: "center" });
  s.addText("β†˜", { x: 5.0, y: 1.65, w: 1.5, h: 0.5, fontFace: FONT, fontSize: 22, color: C.accent, align: "center" });
  s.addText("↓", { x: 1.2, y: 4.0, w: 0.6, h: 0.35, fontFace: FONT, fontSize: 18, color: C.softGreen, align: "center" });
  s.addText("↓", { x: 8.2, y: 4.0, w: 0.6, h: 0.35, fontFace: FONT, fontSize: 18, color: C.accent, align: "center" });
  s.addText("↓ ↓", { x: 4.5, y: 4.76, w: 1.0, h: 0.3, fontFace: FONT, fontSize: 16, color: C.yellow, align: "center" });
}

// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 15 – THANK YOU
// ═════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.deepBlue };
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.18, fill: { color: C.accent } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.45, w: 10, h: 0.18, fill: { color: C.accent } });

  s.addShape(pres.ShapeType.ellipse, { x: 3.8, y: 0.8, w: 2.4, h: 2.4, fill: { color: C.midBlue }, line: { color: C.gold, width: 2 } });
  s.addText("βœ“", { x: 3.8, y: 0.9, w: 2.4, h: 2.2, fontFace: FONT, fontSize: 70, color: C.softGreen, align: "center" });

  s.addText("Thank You", { x: 0.5, y: 3.3, w: 9, h: 0.7, fontFace: FONT, fontSize: 40, bold: true, color: C.white, align: "center" });
  s.addText("KD Tripathi – Essentials of Medical Pharmacology", {
    x: 0.5, y: 4.05, w: 9, h: 0.4, fontFace: FONT, fontSize: 15, color: C.gold, align: "center", italic: true,
  });
  s.addText("Lippincott Illustrated Reviews: Pharmacology  |  Katzung's Basic and Clinical Pharmacology", {
    x: 0.5, y: 4.45, w: 9, h: 0.35, fontFace: FONT, fontSize: 12, color: C.lightGray, align: "center",
  });
}

// Write file
pres.writeFile({ fileName: "/home/daytona/workspace/peptic-ulcer-ppt/Peptic_Ulcer_Drugs_KDT.pptx" })
  .then(() => console.log("DONE"))
  .catch(e => { console.error(e); process.exit(1); });
Running Command

cd /home/daytona/workspace/peptic-ulcer-ppt && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/peptic-ulcer-ppt/Peptic_Ulcer_Drugs_KDT.pptx

Your PPT is ready! πŸŽ‰

Peptic Ulcer Drugs KDT

Presentation Β· PPTX


πŸ“‹ What's Inside (15 Slides)

SlideContent
1Title Slide – Drugs for Peptic Ulcer Disease (KDT-based)
2Pathophysiology – Aggressive vs Defensive factors
3KDT Classification – All 6 groups in color-coded cards
4Antacids – Systemic vs Non-systemic, 4 drugs compared
5Hβ‚‚ Blockers – Mechanism + all 4 drugs (dose, features, SE)
6Proton Pump Inhibitors – MOA + all 6 PPIs with doses
7PPI Adverse Effects & Clinical Uses – Long-term risks
8Anti-H. pylori Regimens – Triple, Quadruple, Concomitant
9Mucosal Protective Agents – Sucralfate, Misoprostol, Bismuth, Carbenoxolone
10Anticholinergics & Miscellaneous – Pirenzepine, Vonoprazan, Rebamipide
11Comparison Table – Antacids vs Hβ‚‚ Blockers vs PPIs
12NSAID-Induced Ulcer & Special Situations – Pregnancy, ZES, ICU
13Drug Interactions & High-Yield Points – Exam essentials
14Treatment Algorithm Flowchart – H. pylori +ve vs -ve
15Thank You / References
Design: Deep navy blue theme with teal accents and gold highlights β€” professional and easy to read.

Try again

Asking for Preferences

What would you like me to change or improve?

Asking for Preferences

Which theme style?

Got it β€” warm orange/red academic theme. Building now.
Writing File

~/peptic-ulcer-ppt/build2.js

const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Drugs for Peptic Ulcer Disease – KDT";

// ─── WARM ORANGE/RED ACADEMIC PALETTE ────────────────────────────────────────
const C = {
  cream:      "FFF8F0",   // dominant slide background
  warmWhite:  "FFFFFF",
  darkBrown:  "2C1503",   // text / dominant dark
  rust:       "C0392B",   // primary accent (red)
  orange:     "E67E22",   // secondary accent
  amber:      "F39C12",   // highlight / subheadings
  burntSiena: "A04000",   // card tops / headers
  teal:       "1A7A7A",   // contrast accent
  softGreen:  "27AE60",
  charcoal:   "3D3D3D",
  lightRust:  "F5D5CC",   // card background
  lightAmber: "FEF0D9",   // alt card bg
  midBrown:   "7B3A10",
  darkRed:    "7B0A0A",
  parchment:  "FAF0E0",   // slide bg variant
};

const FONT = "Georgia";
const FONT2 = "Calibri";

// ─── HELPERS ──────────────────────────────────────────────────────────────────

function addHeader(slide, title, sub) {
  // Red diagonal band at top
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.rust } });
  // Orange accent strip
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 10, h: 0.12, fill: { color: C.amber } });
  slide.addText(title, {
    x: 0.3, y: 0.08, w: 9.4, h: 0.58,
    fontFace: FONT, fontSize: 23, bold: true, color: C.warmWhite,
  });
  if (sub) {
    slide.addText(sub, {
      x: 0.3, y: 0.66, w: 9.4, h: 0.3,
      fontFace: FONT2, fontSize: 12, color: C.lightAmber, italic: true,
    });
  }
}

function roundCard(slide, x, y, w, h, title, titleColor, bgColor, borderColor) {
  slide.addShape(pres.ShapeType.roundRect, {
    x, y, w, h,
    fill: { color: bgColor || C.lightAmber },
    line: { color: borderColor || C.orange, width: 1.5 },
    rectRadius: 0.14,
  });
  slide.addShape(pres.ShapeType.roundRect, {
    x, y, w, h: 0.44,
    fill: { color: borderColor || C.orange },
    line: { color: borderColor || C.orange, width: 0 },
    rectRadius: 0.14,
  });
  slide.addText(title, {
    x: x + 0.12, y: y + 0.04, w: w - 0.24, h: 0.36,
    fontFace: FONT, fontSize: 13, bold: true, color: titleColor || C.warmWhite,
  });
}

function bulletBox(slide, items, x, y, w, h, opts = {}) {
  const arr = items.map((t, i) => ({
    text: t,
    options: { bullet: true, breakLine: i < items.length - 1 },
  }));
  slide.addText(arr, {
    x, y, w, h,
    fontFace: FONT2, fontSize: opts.fontSize || 12,
    color: opts.color || C.charcoal,
    valign: "top", margin: 4,
  });
}

function labelValue(slide, label, value, x, y, w) {
  slide.addText([
    { text: label + " ", options: { bold: true, color: C.rust } },
    { text: value, options: { color: C.charcoal } },
  ], { x, y, w, h: 0.35, fontFace: FONT2, fontSize: 11.5 });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.darkBrown };

  // Top decorative bars
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.22, fill: { color: C.rust } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0.22, w: 10, h: 0.1, fill: { color: C.amber } });

  // Bottom bars
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.3, w: 10, h: 0.1, fill: { color: C.amber } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.4, w: 10, h: 0.22, fill: { color: C.rust } });

  // Central circle
  s.addShape(pres.ShapeType.ellipse, { x: 3.5, y: 0.7, w: 3.0, h: 3.0, fill: { color: C.rust }, line: { color: C.amber, width: 3 } });
  s.addText("πŸ’Š", { x: 3.5, y: 0.8, w: 3.0, h: 2.8, fontSize: 64, align: "center", valign: "middle" });

  // Title block
  s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 3.8, w: 9.4, h: 1.4, fill: { color: C.burntSiena }, line: { color: C.amber, width: 2 }, rectRadius: 0.12 });
  s.addText("DRUGS FOR PEPTIC ULCER DISEASE", {
    x: 0.3, y: 3.86, w: 9.4, h: 0.65,
    fontFace: FONT, fontSize: 28, bold: true, color: C.warmWhite, align: "center",
  });
  s.addText("KD Tripathi Classification  Β·  Essentials of Medical Pharmacology", {
    x: 0.3, y: 4.5, w: 9.4, h: 0.38,
    fontFace: FONT2, fontSize: 14, color: C.amber, align: "center", italic: true,
  });
  s.addText("Pharmacology  |  Academic Presentation", {
    x: 0.3, y: 4.9, w: 9.4, h: 0.28,
    fontFace: FONT2, fontSize: 11, color: C.lightRust, align: "center",
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 2 – PATHOPHYSIOLOGY
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.parchment };
  addHeader(s, "Peptic Ulcer Disease – Pathophysiology", "Imbalance of aggressive vs. defensive mucosal factors");

  // Left: Aggressive
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.25, w: 4.3, h: 4.1, fill: { color: C.lightRust }, line: { color: C.rust, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.25, w: 4.3, h: 0.52, fill: { color: C.rust }, line: { color: C.rust, width: 0 }, rectRadius: 0.14 });
  s.addText("AGGRESSIVE FACTORS", { x: 0.3, y: 1.28, w: 4.1, h: 0.42, fontFace: FONT, fontSize: 14, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "HCl hypersecretion (parietal cells)",
    "Pepsin (proteolytic enzyme)",
    "H. pylori infection (gram-negative rod)",
    "NSAIDs & Aspirin β†’ ↓ PG synthesis",
    "Bile salts reflux",
    "Smoking, alcohol",
    "Stress & corticosteroids",
  ], 0.3, 1.82, 4.1, 3.45, { fontSize: 12, color: C.darkRed });

  // VS
  s.addShape(pres.ShapeType.ellipse, { x: 4.4, y: 2.85, w: 1.2, h: 0.75, fill: { color: C.amber }, line: { color: C.rust, width: 1.5 } });
  s.addText("VS", { x: 4.4, y: 2.85, w: 1.2, h: 0.75, fontFace: FONT, fontSize: 18, bold: true, color: C.warmWhite, align: "center", valign: "middle" });

  // Right: Defensive
  s.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 1.25, w: 4.3, h: 4.1, fill: { color: "DFF2E9" }, line: { color: C.softGreen, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 1.25, w: 4.3, h: 0.52, fill: { color: C.softGreen }, line: { color: C.softGreen, width: 0 }, rectRadius: 0.14 });
  s.addText("DEFENSIVE FACTORS", { x: 5.6, y: 1.28, w: 4.1, h: 0.42, fontFace: FONT, fontSize: 14, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Mucus layer (viscous bicarbonate gel)",
    "Bicarbonate secretion (surface cells)",
    "Mucosal blood flow (Oβ‚‚ & nutrients)",
    "Prostaglandins – PGEβ‚‚ & PGIβ‚‚",
    "Tight epithelial junctions",
    "Epithelial restitution (rapid repair)",
    "Surface-active phospholipids",
  ], 5.6, 1.82, 4.1, 3.45, { fontSize: 12, color: "1A5C35" });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 3 – KDT CLASSIFICATION
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "KDT Classification of Antiulcer Drugs", "6 major groups β€” KD Tripathi's Essentials of Medical Pharmacology");

  const groups = [
    { num: "1", title: "Antacids",                 drugs: "Systemic: NaHCO₃\nNon-systemic: Mg(OH)β‚‚, Al(OH)₃\nMg trisilicate, CaCO₃", bg: "FDE8D8", border: C.rust },
    { num: "2", title: "Hβ‚‚ Blockers",              drugs: "Cimetidine (prototype)\nRanitidine* (withdrawn)\nFamotidine  Β·  Nizatidine", bg: "FEF0CC", border: C.amber },
    { num: "3", title: "Proton Pump Inhibitors",   drugs: "Omeprazole, Lansoprazole\nPantoprazole, Rabeprazole\nEsomeprazole, Dexlansoprazole", bg: "F9E4D4", border: C.orange },
    { num: "4", title: "Anti-H. pylori Drugs",     drugs: "Amoxicillin, Clarithromycin\nMetronidazole, Tetracycline\nBismuth compounds + PPI", bg: "D9EFE4", border: C.softGreen },
    { num: "5", title: "Mucosal Protectives",       drugs: "Sucralfate\nMisoprostol (PGE₁ analogue)\nBismuth subsalicylate\nCarbenoxolone", bg: "DDEEF9", border: C.teal },
    { num: "6", title: "Anticholinergics",          drugs: "Pirenzepine (M₁ selective)\nPropantheline (non-selective)\n[adjuncts – rarely used]", bg: "EDE0F5", border: "7B4BA0" },
  ];

  const cw = 3.0, ch = 2.0;
  groups.forEach((g, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.25 + col * (cw + 0.28);
    const y = 1.2 + row * (ch + 0.18);

    s.addShape(pres.ShapeType.roundRect, { x, y, w: cw, h: ch, fill: { color: g.bg }, line: { color: g.border, width: 2 }, rectRadius: 0.14 });
    // Number badge
    s.addShape(pres.ShapeType.ellipse, { x: x + 0.1, y: y + 0.08, w: 0.42, h: 0.42, fill: { color: g.border }, line: { color: g.border, width: 0 } });
    s.addText(g.num, { x: x + 0.1, y: y + 0.08, w: 0.42, h: 0.42, fontFace: FONT, fontSize: 14, bold: true, color: C.warmWhite, align: "center", valign: "middle" });
    s.addText(g.title, { x: x + 0.6, y: y + 0.1, w: cw - 0.72, h: 0.38, fontFace: FONT, fontSize: 13, bold: true, color: C.darkBrown });
    s.addShape(pres.ShapeType.line, { x: x + 0.1, y: y + 0.56, w: cw - 0.2, h: 0, line: { color: g.border, width: 1, dashType: "dash" } });
    s.addText(g.drugs, { x: x + 0.1, y: y + 0.62, w: cw - 0.2, h: ch - 0.74, fontFace: FONT2, fontSize: 11, color: C.charcoal, valign: "top" });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 4 – ANTACIDS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "1. Antacids", "Weak bases that neutralise HCl  Β·  pH rises above 3.5 β†’ pepsin inactivated");

  // Mechanism banner
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 9.6, h: 0.55, fill: { color: C.lightAmber }, line: { color: C.amber, width: 1.5 }, rectRadius: 0.1 });
  s.addText("Mechanism: Neutralise HCl β†’ ↑ gastric pH  |  Pepsin activity ↓ at pH >4  |  Mg & Al salts also stimulate PG synthesis", {
    x: 0.3, y: 1.26, w: 9.4, h: 0.45, fontFace: FONT2, fontSize: 12, color: C.darkBrown,
  });

  const cols = [
    { name: "Sodium\nBicarbonate", dose: "0.6–2 g PRN", props: ["Rapidly acting systemic antacid", "Gas (COβ‚‚) formation β€” belching", "Milk-alkali syndrome (chronic)", "Systemic alkalosis risk", "Not for long-term use"], bg: "FDE8D8", border: C.rust },
    { name: "Magnesium\nHydroxide", dose: "0.3–1 g PRN", props: ["Rapid potent action", "Non-systemic (poorly absorbed)", "Osmotic laxative effect", "↑ Mg absorbed β†’ toxicity in CRF", "Used in combination antacids"], bg: "FEF0CC", border: C.amber },
    { name: "Aluminium\nHydroxide", dose: "0.6–1 g PRN", props: ["Slower, sustained action", "Non-systemic antacid", "Constipation (most common SE)", "Binds phosphate (used in CRF)", "Adsorbs pepsin & bile salts"], bg: "F9E4D4", border: C.orange },
    { name: "Calcium\nCarbonate", dose: "0.5–2 g PRN", props: ["Most potent & rapid antacid", "Acid rebound (↑ gastrin)", "Constipation", "Hypercalcaemia, nephrolithiasis", "Milk-alkali syndrome"], bg: "DDEEF9", border: C.teal },
  ];

  cols.forEach((c, i) => {
    const x = 0.2 + i * 2.42;
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.85, w: 2.32, h: 3.6, fill: { color: c.bg }, line: { color: c.border, width: 1.5 }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.85, w: 2.32, h: 0.7, fill: { color: c.border }, line: { color: c.border, width: 0 }, rectRadius: 0.12 });
    s.addText(c.name, { x: x + 0.08, y: 1.88, w: 2.16, h: 0.62, fontFace: FONT, fontSize: 12.5, bold: true, color: C.warmWhite, align: "center", valign: "middle" });
    s.addText(c.dose, { x: x + 0.08, y: 2.6, w: 2.16, h: 0.28, fontFace: FONT2, fontSize: 10.5, color: C.burntSiena, align: "center", italic: true });
    bulletBox(s, c.props, x + 0.1, 2.92, 2.12, 2.45, { fontSize: 10.5, color: C.charcoal });
  });

  s.addText("Tip: Combination antacids (e.g. Digene = Al(OH)₃ + Mg(OH)β‚‚ + Simethicone) balance constipation vs laxative effects", {
    x: 0.2, y: 5.5, w: 9.6, h: 0.26, fontFace: FONT2, fontSize: 10.5, color: C.burntSiena, italic: true,
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 5 – H2 BLOCKERS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "2. Hβ‚‚ Receptor Antagonists", "Competitive antagonists at Hβ‚‚ receptors of parietal cells");

  // MOA box
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 9.6, h: 1.0, fill: { color: C.lightAmber }, line: { color: C.amber, width: 1.5 }, rectRadius: 0.1 });
  s.addText("MECHANISM", { x: 0.35, y: 1.25, w: 1.8, h: 0.3, fontFace: FONT, fontSize: 12, bold: true, color: C.rust });
  s.addText("Histamine (from ECL cells) β†’ Hβ‚‚ receptor on parietal cell β†’ ↑ cAMP β†’ ↑ PKA β†’ activates H⁺/K⁺-ATPase β†’ HCl secretion\nHβ‚‚ blockers: Competitively block Hβ‚‚ receptors β†’ ↓ acid by ~70%  (basal, nocturnal & food-stimulated acid)", {
    x: 0.35, y: 1.52, w: 9.4, h: 0.64, fontFace: FONT2, fontSize: 11.5, color: C.darkBrown,
  });

  const drugs = [
    { name: "Cimetidine", dose: "400 mg BD\nor 800 mg HS", features: ["1st Hβ‚‚ blocker (prototype)", "Inhibits CYP1A2, 2C9, 2D6, 3A4", "↑ Warfarin, phenytoin, theophylline", "Anti-androgenic: gynaecomastia", "Crosses BBB β†’ confusion (elderly)", "Inhibits tubular creatinine secretion"], bg: C.lightRust, border: C.rust },
    { name: "Ranitidine*", dose: "150 mg BD\nor 300 mg HS", features: ["5–10Γ— more potent than cimetidine", "Minimal CYP inhibition", "No anti-androgenic effects", "➜ Withdrawn (NDMA contamination)", "Famotidine now preferred"], bg: "F5E6C8", border: C.amber },
    { name: "Famotidine", dose: "20 mg BD\nor 40 mg HS", features: ["Most potent Hβ‚‚ blocker", "No CYP inhibition", "No anti-androgenic effects", "Safe: Pregnancy Cat B", "Dose adjust in renal failure"], bg: "D9F0EC", border: C.teal },
    { name: "Nizatidine", dose: "150 mg BD\nor 300 mg HS", features: ["Similar to ranitidine in potency", "No CYP inhibition", "Highest oral bioavailability (~100%)", "Excreted unchanged in urine", "Least studied of the group"], bg: "E4EEF9", border: "4A7AB0" },
  ];

  drugs.forEach((d, i) => {
    const x = 0.2 + i * 2.42;
    s.addShape(pres.ShapeType.roundRect, { x, y: 2.28, w: 2.32, h: 3.25, fill: { color: d.bg }, line: { color: d.border, width: 1.5 }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.roundRect, { x, y: 2.28, w: 2.32, h: 0.62, fill: { color: d.border }, line: { color: d.border, width: 0 }, rectRadius: 0.12 });
    s.addText(d.name, { x: x + 0.08, y: 2.3, w: 2.16, h: 0.38, fontFace: FONT, fontSize: 13, bold: true, color: C.warmWhite, align: "center" });
    s.addText(d.dose, { x: x + 0.08, y: 2.66, w: 2.16, h: 0.36, fontFace: FONT2, fontSize: 9.5, color: C.burntSiena, align: "center", italic: true });
    bulletBox(s, d.features, x + 0.1, 3.05, 2.12, 2.42, { fontSize: 10, color: C.charcoal });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 6 – PPIs MECHANISM & DRUGS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "3. Proton Pump Inhibitors (PPIs)", "Most potent antisecretory drugs  ·  Irreversible H⁺/K⁺-ATPase inhibitors");

  // Mechanism
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 9.6, h: 1.12, fill: { color: C.lightAmber }, line: { color: C.orange, width: 1.5 }, rectRadius: 0.1 });
  s.addText("MECHANISM", { x: 0.35, y: 1.25, w: 1.8, h: 0.3, fontFace: FONT, fontSize: 12, bold: true, color: C.rust });
  s.addText(
    "Prodrugs β†’ absorbed in small intestine β†’ reach parietal cell canaliculi β†’ activated (sulfenamide) at acidic pH β†’ " +
    "irreversible covalent bond with cysteine residues of H⁺/K⁺-ATPase\n" +
    "β†’ Blocks FINAL COMMON PATHWAY  Β·  ↓ HCl by 80–95%  Β·  Must be taken 30–60 min BEFORE meals  Β·  2–5 days for full effect",
    { x: 0.35, y: 1.52, w: 9.4, h: 0.76, fontFace: FONT2, fontSize: 11.5, color: C.darkBrown }
  );

  const ppis = [
    { name: "Omeprazole",      dose: "20–40 mg OD",  note: "Prototype PPI; inhibits CYP2C19 β†’ clopidogrel interaction (avoid co-use)", bg: "FDE8D8", border: C.rust },
    { name: "Pantoprazole",    dose: "40 mg OD",     note: "Least CYP interaction; IV form available β†’ preferred in GI bleeds", bg: "FEF0CC", border: C.amber },
    { name: "Lansoprazole",    dose: "15–30 mg OD",  note: "ODT (orally disintegrating tablet); faster absorption; also available for paediatrics", bg: "F9E4D4", border: C.orange },
    { name: "Rabeprazole",     dose: "20 mg OD",     note: "Least dependent on CYP2C19 polymorphism; faster onset of action", bg: "D9F0E4", border: C.softGreen },
    { name: "Esomeprazole",    dose: "20–40 mg OD",  note: "S-isomer of omeprazole; greater bioavailability; once-daily dosing", bg: "DDEEF9", border: C.teal },
    { name: "Dexlansoprazole", dose: "30–60 mg OD",  note: "Dual delayed-release; two peak plasma concentrations; prolonged acid control", bg: "EDE0F5", border: "7B4BA0" },
  ];

  ppis.forEach((p, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.2 + col * 3.25;
    const y = 2.42 + row * 1.6;
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 3.12, h: 1.52, fill: { color: p.bg }, line: { color: p.border, width: 1.5 }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 3.12, h: 0.44, fill: { color: p.border }, line: { color: p.border, width: 0 }, rectRadius: 0.12 });
    s.addText(p.name, { x: x + 0.1, y: y + 0.04, w: 2.0, h: 0.36, fontFace: FONT, fontSize: 13, bold: true, color: C.warmWhite });
    s.addText(p.dose, { x: x + 2.0, y: y + 0.04, w: 1.0, h: 0.36, fontFace: FONT2, fontSize: 10, color: C.warmWhite, align: "right", italic: true });
    s.addText(p.note, { x: x + 0.1, y: y + 0.5, w: 2.9, h: 0.95, fontFace: FONT2, fontSize: 10.5, color: C.charcoal, valign: "top" });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 7 – PPIs: ADRs & USES
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "PPIs – Adverse Effects & Clinical Uses", "Weigh long-term risks against therapeutic benefits");

  // Adverse effects card
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 4.25, fill: { color: "FDE8D8" }, line: { color: C.rust, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.rust }, line: { color: C.rust, width: 0 }, rectRadius: 0.14 });
  s.addText("⚠  ADVERSE EFFECTS", { x: 0.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Headache, diarrhoea, nausea (common)",
    "Hypomagnesaemia β†’ tetany, arrhythmia",
    "Vitamin B12 deficiency (long-term)",
    "C. difficile infection risk ↑",
    "Osteoporosis / fracture risk",
    "Fundic gland polyps",
    "Hypergastrinaemia β†’ ECL cell hyperplasia",
    "Community-acquired pneumonia ↑",
    "CKD risk (long-term use data)",
    "DDI: Omeprazole ↓ clopidogrel (CYP2C19)",
  ], 0.32, 1.78, 4.38, 3.62, { fontSize: 11.5, color: C.darkRed });

  // Clinical uses card
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 4.25, fill: { color: "D9F2E4" }, line: { color: C.softGreen, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.softGreen }, line: { color: C.softGreen, width: 0 }, rectRadius: 0.14 });
  s.addText("βœ”  CLINICAL USES", { x: 5.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Peptic ulcer disease (duodenal & gastric)",
    "H. pylori eradication (cornerstone drug)",
    "GERD / Reflux oesophagitis",
    "Zollinger-Ellison syndrome (high-dose)",
    "NSAID-induced ulcer prophylaxis",
    "Stress ulcer prophylaxis (ICU)",
    "Barrett's oesophagus",
    "Upper GI bleeding (IV pantoprazole)",
    "Non-ulcer dyspepsia",
    "Laryngopharyngeal reflux",
  ], 5.32, 1.78, 4.38, 3.62, { fontSize: 11.5, color: "1A5C35" });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 8 – ANTI-H. PYLORI
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "4. Anti-H. pylori Regimens", "Eradication β†’ recurrence ↓ from 60–100% to <15%/year");

  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 9.6, h: 0.48, fill: { color: C.lightAmber }, line: { color: C.amber, width: 1 }, rectRadius: 0.1 });
  s.addText("Diagnosis: Endoscopic CLO test | Urea Breath Test (UBT) | Stool Antigen Test | Serology (IgG β€” low specificity)", {
    x: 0.3, y: 1.26, w: 9.4, h: 0.38, fontFace: FONT2, fontSize: 12, color: C.darkBrown,
  });

  const regs = [
    {
      title: "Triple Therapy  (Γ—14 days)",
      border: C.teal, bg: "DDEEF9",
      lines: [
        "PPI (standard dose) BD",
        "+ Clarithromycin 500 mg BD",
        "+ Amoxicillin 1 g BD",
        "  (or Metronidazole 400 mg BD if PCN allergy)",
        "Eradication rate: ~80%",
        "Use where clarithromycin resistance <15%",
        "Prior macrolide exposure β†’ avoid",
      ],
    },
    {
      title: "Bismuth Quadruple  (Γ—14 days)  β˜… 1st Line",
      border: C.softGreen, bg: "D9F2E4",
      lines: [
        "PPI (standard dose) BD",
        "+ Bismuth subsalicylate 525 mg QID",
        "+ Metronidazole 500 mg TID",
        "+ Tetracycline 500 mg QID",
        "Eradication rate: >90%",
        "Preferred where clarithromycin resistance is high",
        "First-line per ACG/AGA guidelines",
      ],
    },
    {
      title: "Salvage / Levofloxacin Therapy",
      border: C.orange, bg: "F9EED8",
      lines: [
        "PPI + Levofloxacin 500 mg OD",
        "+ Amoxicillin 1 g BD Γ— 14 days",
        "After failed first-line treatment",
        "Concomitant therapy: PPI + Clarithromycin",
        "  + Amoxicillin + Metronidazole Γ— 10–14 d",
        "Rifabutin-based: last resort",
      ],
    },
  ];

  regs.forEach((r, i) => {
    const x = 0.2 + i * 3.25;
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.78, w: 3.12, h: 3.75, fill: { color: r.bg }, line: { color: r.border, width: 2 }, rectRadius: 0.14 });
    s.addShape(pres.ShapeType.roundRect, { x, y: 1.78, w: 3.12, h: 0.56, fill: { color: r.border }, line: { color: r.border, width: 0 }, rectRadius: 0.14 });
    s.addText(r.title, { x: x + 0.1, y: 1.81, w: 2.92, h: 0.48, fontFace: FONT, fontSize: 12, bold: true, color: C.warmWhite });
    bulletBox(s, r.lines, x + 0.12, 2.38, 2.9, 3.08, { fontSize: 11, color: C.charcoal });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 9 – MUCOSAL PROTECTIVE AGENTS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "5. Mucosal Protective Agents", "Enhance defensive factors β€” no significant acid reduction");

  const agents = [
    {
      name: "Sucralfate", dose: "1 g QID (1 h before meals & HS)", bg: "FDE8D8", border: C.rust,
      moa: "In acid pH β†’ polymerises β†’ viscous paste β†’ coats ulcer crater β†’ barrier vs acid/pepsin/bile; stimulates PG, binds EGF",
      use: "Duodenal ulcer, stress ulcer prophylaxis",
      se: "Constipation; adsorbs other drugs (give 2 h apart)",
      note: "Needs acid for activation β€” avoid simultaneous PPIs",
    },
    {
      name: "Misoprostol", dose: "200 ΞΌg QID with meals", bg: "FEF0CC", border: C.amber,
      moa: "PGE₁ analogue β†’ Gs-coupled β†’ ↑ mucus & HCO₃ secretion, ↑ mucosal blood flow, ↓ acid secretion (inhibits H⁺/K⁺-ATPase via ↓ cAMP)",
      use: "NSAID-induced ulcer prophylaxis; gastric ulcer",
      se: "Diarrhoea (most common), abdominal cramps, uterine contractions",
      note: "⚠ Contraindicated in pregnancy β€” potent abortifacient",
    },
    {
      name: "Bismuth Subsalicylate", dose: "525 mg QID", bg: "D9F2E4", border: C.softGreen,
      moa: "Coats ulcer surface; kills H. pylori (disrupts cell wall & inhibits urease); ↑ mucus & PG; binds pepsin",
      use: "H. pylori eradication (quadruple); traveller's diarrhoea",
      se: "Black stools & tongue (bismuth sulphide β€” harmless), nausea",
      note: "Salicylate component β€” avoid in aspirin allergy / children (Reye's)",
    },
    {
      name: "Carbenoxolone", dose: "100 mg TID before meals", bg: "DDEEF9", border: C.teal,
      moa: "Liquorice derivative β†’ ↑ mucus quality & quantity, ↑ mucosal PGs, prolongs surface cell lifespan",
      use: "Gastric ulcer (now largely obsolete)",
      se: "Na & water retention (aldosterone-like), hypertension, hypokalaemia, oedema",
      note: "Replaced by PPIs; use with aldosterone antagonist (spironolactone)",
    },
  ];

  agents.forEach((a, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.2 + col * 4.95;
    const y = 1.2 + row * 2.35;
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.75, h: 2.25, fill: { color: a.bg }, line: { color: a.border, width: 1.5 }, rectRadius: 0.14 });
    s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.75, h: 0.48, fill: { color: a.border }, line: { color: a.border, width: 0 }, rectRadius: 0.14 });
    s.addText(a.name, { x: x + 0.12, y: y + 0.05, w: 2.8, h: 0.38, fontFace: FONT, fontSize: 13, bold: true, color: C.warmWhite });
    s.addText(a.dose, { x: x + 2.88, y: y + 0.05, w: 1.78, h: 0.38, fontFace: FONT2, fontSize: 9.5, color: C.warmWhite, align: "right", italic: true });
    const detail = [
      { text: "MOA: ", options: { bold: true, color: C.rust, breakLine: false } },
      { text: a.moa, options: { color: C.charcoal, breakLine: true } },
      { text: "Use: ", options: { bold: true, color: C.burntSiena, breakLine: false } },
      { text: a.use, options: { color: C.charcoal, breakLine: true } },
      { text: "SE: ", options: { bold: true, color: C.rust, breakLine: false } },
      { text: a.se, options: { color: C.charcoal, breakLine: true } },
      { text: "⚠ ", options: { bold: true, color: C.amber, breakLine: false } },
      { text: a.note, options: { color: C.midBrown, italic: true } },
    ];
    s.addText(detail, { x: x + 0.12, y: y + 0.52, w: 4.52, h: 1.65, fontFace: FONT2, fontSize: 10, valign: "top" });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 10 – ANTICHOLINERGICS & MISC
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "6. Anticholinergics & Miscellaneous Drugs", "Adjuncts β€” largely replaced by PPIs");

  // Left: Anticholinergics
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 4.25, fill: { color: C.lightRust }, line: { color: C.rust, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.rust }, line: { color: C.rust, width: 0 }, rectRadius: 0.14 });
  s.addText("Anticholinergics", { x: 0.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Pirenzepine (M₁ SELECTIVE β€” preferred)",
    "  Dose: 50 mg BD before meals",
    "  Blocks M₁ on ECL cells & ganglion cells",
    "  ↓ Acid secretion; spares Mβ‚‚ (heart) & M₃ (glands)",
    "  SE: dry mouth, blurred vision (mild)",
    "",
    "Propantheline (Non-selective)",
    "  Blocks all muscarinic receptors",
    "  SE: dry mouth, urinary retention,",
    "  constipation, tachycardia (severe)",
    "  ✘ Largely abandoned for ulcer therapy",
  ], 0.32, 1.78, 4.38, 3.65, { fontSize: 11, color: C.darkRed });

  // Right: Miscellaneous
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 4.25, fill: { color: "EAF4FB" }, line: { color: C.teal, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.teal }, line: { color: C.teal, width: 0 }, rectRadius: 0.14 });
  s.addText("Miscellaneous / Newer Agents", { x: 5.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Vonoprazan (P-CAB)",
    "  Potassium-competitive acid blocker",
    "  Reversible K⁺-competitive inhibition of H⁺/K⁺-ATPase",
    "  Not pH-dependent for activation (unlike PPIs)",
    "  Faster onset; effective day-1; controls nocturnal acid",
    "",
    "Rebamipide",
    "  ↑ PG synthesis, scavenges ROS, enhances mucin",
    "  Used adjunctively in Asia",
    "",
    "Prokinetics (Domperidone, Metoclopramide)",
    "  Adjuncts in GERD: ↑ LES tone, ↑ gastric emptying",
  ], 5.32, 1.78, 4.38, 3.65, { fontSize: 11, color: "0A3040" });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 11 – COMPARISON TABLE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "Comparative Overview", "Antacids  Β·  Hβ‚‚ Blockers  Β·  PPIs β€” at a glance");

  const rows = [
    ["Parameter",          "Antacids",             "Hβ‚‚ Blockers",          "PPIs"],
    ["Mechanism",          "Neutralise HCl",       "Block Hβ‚‚ receptor",    "Irreversible H⁺/K⁺-ATPase block"],
    ["Acid reduction",     "Transient ↓",          "~70%",                 "80–95%"],
    ["Onset",              "Immediate",            "30–60 min",            "1–4 days (full effect)"],
    ["Duration",           "1–2 hours",            "6–12 hours",           "24 h (irreversible enzyme)"],
    ["H. pylori use",      "No",                   "No",                   "Yes (cornerstone)"],
    ["GERD first-line",    "Symptomatic only",     "Mild GERD",            "Moderate–Severe GERD"],
    ["Pregnancy",          "Mg, Ca, Al (safe)",    "Famotidine (Cat B)",   "Omeprazole (Cat C)"],
    ["Key ADR",            "Acid rebound (CaCO₃)", "Cimetidine DDIs",      "↓B12, hypoMg, C. diff"],
  ];

  const colW = [2.6, 2.3, 2.3, 2.5];
  const rowH = 0.46;
  const hdrColors = [C.rust, C.burntSiena, C.amber, C.orange];
  const rowBgOdd  = "FFF5EC";
  const rowBgEven = "FDE8D8";

  rows.forEach((row, ri) => {
    row.forEach((cell, ci) => {
      const x = 0.2 + colW.slice(0, ci).reduce((a, b) => a + b, 0);
      const y = 1.2 + ri * rowH;
      const isHdr = ri === 0;
      const isLabel = ci === 0;
      s.addShape(pres.ShapeType.rect, {
        x, y, w: colW[ci], h: rowH,
        fill: { color: isHdr ? hdrColors[ci] : (isLabel ? C.lightAmber : (ri % 2 === 0 ? rowBgOdd : rowBgEven)) },
        line: { color: "CCBBAA", width: 0.8 },
      });
      s.addText(cell, {
        x: x + 0.08, y, w: colW[ci] - 0.16, h: rowH,
        fontFace: isHdr ? FONT : FONT2,
        fontSize: isHdr ? 13 : 11,
        bold: isHdr || isLabel,
        color: isHdr ? C.warmWhite : C.charcoal,
        valign: "middle",
        wrap: true,
      });
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 12 – NSAID ULCER & SPECIAL SITUATIONS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "NSAID-Induced Ulcer & Special Situations", "Prevention strategies and high-risk scenarios");

  // NSAID
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 4.22, fill: { color: "FDE8D8" }, line: { color: C.rust, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.rust }, line: { color: C.rust, width: 0 }, rectRadius: 0.14 });
  s.addText("NSAID-Induced Ulcer", { x: 0.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "NSAIDs inhibit COX-1 β†’ ↓ PGEβ‚‚ / PGIβ‚‚",
    "β†’ ↓ Mucus & bicarbonate secretion",
    "β†’ ↓ Mucosal blood flow",
    "β†’ Direct mucosal damage (acidic NSAIDs)",
    "",
    "Prevention / Management:",
    "β€’ PPI (omeprazole / pantoprazole) β€” PREFERRED",
    "β€’ Misoprostol 200 ΞΌg QID (FDA approved)",
    "β€’ Switch to COX-2 selective NSAID (celecoxib)",
    "β€’ Hβ‚‚ blocker (less effective than PPI)",
    "β€’ If H. pylori +ve: eradicate first",
    "β€’ Lowest effective NSAID dose for shortest duration",
  ], 0.32, 1.78, 4.38, 3.58, { fontSize: 11, color: C.darkRed });

  // Special situations
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 4.22, fill: { color: "EAF4FB" }, line: { color: C.teal, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.teal }, line: { color: C.teal, width: 0 }, rectRadius: 0.14 });
  s.addText("Special Clinical Scenarios", { x: 5.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Zollinger-Ellison Syndrome:",
    " High-dose PPI (60–360 mg omeprazole/day)",
    "",
    "Stress Ulcer (ICU): IV pantoprazole / sucralfate",
    "",
    "Upper GI Bleeding:",
    " IV PPI bolus 80 mg then 8 mg/h infusion Γ— 72 h",
    "",
    "Pregnancy:",
    " Antacids (1st line) β†’ Sucralfate β†’ Famotidine",
    " Avoid misoprostol (abortifacient)",
    "",
    "Paediatrics: Omeprazole / Lansoprazole ODT",
    "",
    "Renal failure: Famotidine (dose-adjust); avoid Mg antacid",
  ], 5.32, 1.78, 4.38, 3.58, { fontSize: 11, color: "0A3040" });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 13 – DRUG INTERACTIONS & HIGH-YIELD
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "Drug Interactions & High-Yield Exam Points", "Clinically significant interactions to remember");

  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 4.22, fill: { color: C.lightRust }, line: { color: C.rust, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.rust }, line: { color: C.rust, width: 0 }, rectRadius: 0.14 });
  s.addText("⚠  Drug Interactions", { x: 0.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.warmWhite });
  bulletBox(s, [
    "Cimetidine (CYP inhibitor):",
    " ↑ Warfarin, phenytoin, theophylline,",
    " lidocaine, diazepam, propranolol",
    "",
    "PPI + Clopidogrel:",
    " Omeprazole inhibits CYP2C19 β†’ ↓ clopidogrel",
    " Use pantoprazole / rabeprazole instead",
    "",
    "Antacids + Other Drugs:",
    " Chelate fluoroquinolones, tetracyclines, iron",
    " Separate by at least 2 hours",
    "",
    "Sucralfate: adsorbs drugs β€” give 2 h before",
    "Misoprostol: potentiates oxytocics",
  ], 0.32, 1.78, 4.38, 3.58, { fontSize: 11, color: C.darkRed });

  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 4.22, fill: { color: C.lightAmber }, line: { color: C.amber, width: 2 }, rectRadius: 0.14 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.22, w: 4.6, h: 0.52, fill: { color: C.amber }, line: { color: C.amber, width: 0 }, rectRadius: 0.14 });
  s.addText("πŸ“Œ  High-Yield Memory Points", { x: 5.32, y: 1.25, w: 4.36, h: 0.44, fontFace: FONT, fontSize: 13.5, bold: true, color: C.darkBrown });
  bulletBox(s, [
    "PPIs = most potent antisecretory drugs (1st line)",
    "Cimetidine = 1st Hβ‚‚ blocker; most drug interactions",
    "Famotidine = most potent Hβ‚‚ blocker",
    "Omeprazole = prototype PPI (CYP2C19 DDI)",
    "Pantoprazole = safest PPI (fewest DDIs); IV available",
    "Misoprostol = contraindicated in pregnancy",
    "Sucralfate = needs acid; give apart from other drugs",
    "Carbenoxolone β†’ aldosterone-like effects",
    "Pirenzepine = selective M₁ blocker",
    "Ranitidine = withdrawn (NDMA contamination)",
    "Quadruple therapy β†’ >90% H. pylori eradication",
  ], 5.32, 1.78, 4.38, 3.58, { fontSize: 11, color: C.darkBrown });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 14 – TREATMENT ALGORITHM
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.cream };
  addHeader(s, "Treatment Algorithm – Peptic Ulcer Disease", "Tailored approach based on etiology");

  // Central diagnosis box
  s.addShape(pres.ShapeType.roundRect, { x: 3.3, y: 1.18, w: 3.4, h: 0.58, fill: { color: C.rust }, line: { color: C.amber, width: 2 }, rectRadius: 0.1 });
  s.addText("Confirmed Peptic Ulcer", { x: 3.3, y: 1.18, w: 3.4, h: 0.58, fontFace: FONT, fontSize: 13, bold: true, color: C.warmWhite, align: "center", valign: "middle" });

  // Arrow down
  s.addText("β–Ό", { x: 4.7, y: 1.76, w: 0.6, h: 0.3, fontSize: 16, color: C.rust, align: "center" });

  // Test box
  s.addShape(pres.ShapeType.roundRect, { x: 2.8, y: 2.06, w: 4.4, h: 0.52, fill: { color: C.lightAmber }, line: { color: C.amber, width: 1.5 }, rectRadius: 0.1 });
  s.addText("Test for H. pylori  (UBT / Stool Ag / Biopsy)", { x: 2.8, y: 2.06, w: 4.4, h: 0.52, fontFace: FONT2, fontSize: 12, bold: true, color: C.darkBrown, align: "center", valign: "middle" });

  // Branches
  s.addText("POSITIVE  β—€", { x: 0.4, y: 2.62, w: 2.3, h: 0.36, fontFace: FONT2, fontSize: 12, bold: true, color: C.softGreen });
  s.addText("β–Ά  NEGATIVE", { x: 7.3, y: 2.62, w: 2.3, h: 0.36, fontFace: FONT2, fontSize: 12, bold: true, color: C.teal });

  // H. pylori +ve branch
  s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 3.0, w: 4.1, h: 1.62, fill: { color: "DFF2E9" }, line: { color: C.softGreen, width: 1.5 }, rectRadius: 0.1 });
  s.addText("Quadruple / Triple Therapy × 14 days\n+ PPI (standard dose)\n→ Confirm eradication (UBT at 4 wks)\n→ PPI × 4 more weeks post-eradication", { x: 0.32, y: 3.04, w: 3.86, h: 1.52, fontFace: FONT2, fontSize: 11.5, color: "1A5C35" });

  // H. pylori -ve branch
  s.addShape(pres.ShapeType.roundRect, { x: 5.7, y: 3.0, w: 4.1, h: 1.62, fill: { color: "DDEEF9" }, line: { color: C.teal, width: 1.5 }, rectRadius: 0.1 });
  s.addText("PPI Γ— 4–8 weeks (omeprazole/pantoprazole)\n+ Hβ‚‚ blocker (if PPI not tolerated)\nIf NSAID-induced: add misoprostol or stop NSAID\nReview contributing factors (NSAIDs, smoking)", { x: 5.82, y: 3.04, w: 3.86, h: 1.52, fontFace: FONT2, fontSize: 11.5, color: "0A2B4A" });

  // Bottom
  s.addShape(pres.ShapeType.roundRect, { x: 2.4, y: 4.72, w: 5.2, h: 0.72, fill: { color: C.lightAmber }, line: { color: C.orange, width: 1.5 }, rectRadius: 0.1 });
  s.addText("Maintenance:  Lifestyle modification  Β·  Avoid NSAIDs  Β·  Stop smoking  Β·  Reduce alcohol", { x: 2.52, y: 4.76, w: 4.96, h: 0.62, fontFace: FONT2, fontSize: 11.5, color: C.darkBrown, align: "center", valign: "middle" });
  s.addText("β–²          β–²", { x: 3.0, y: 4.56, w: 4.0, h: 0.22, fontSize: 14, color: C.orange, align: "center" });
}

// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 15 – SUMMARY & THANK YOU
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.background = { color: C.darkBrown };

  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.2, fill: { color: C.rust } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0.2, w: 10, h: 0.1, fill: { color: C.amber } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.3, w: 10, h: 0.1, fill: { color: C.amber } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.4, w: 10, h: 0.22, fill: { color: C.rust } });

  // Quick summary box
  s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 0.42, w: 9.4, h: 3.35, fill: { color: C.burntSiena }, line: { color: C.amber, width: 2 }, rectRadius: 0.14 });
  s.addText("Summary", { x: 0.5, y: 0.48, w: 3, h: 0.42, fontFace: FONT, fontSize: 18, bold: true, color: C.amber });

  const sumData = [
    ["1. Antacids",              "Neutralise HCl; symptomatic relief; NaHCO₃ (systemic), Al/Mg/Ca salts (non-systemic)"],
    ["2. Hβ‚‚ Blockers",          "~70% acid ↓; Cimetidine (DDI risk); Famotidine (most potent, safest)"],
    ["3. PPIs",                  "80–95% acid ↓; irreversible; most potent; cornerstone of PUD & GERD therapy"],
    ["4. Anti-H. pylori",        "Quadruple (>90% eradication) or Triple therapy with PPI backbone"],
    ["5. Mucosal Protectives",   "Sucralfate (coat), Misoprostol (PGE₁), Bismuth, Carbenoxolone (↑mucus)"],
    ["6. Anticholinergics",      "Pirenzepine (M₁ selective); mostly obsolete; replaced by PPIs"],
  ];

  sumData.forEach((row, i) => {
    s.addText([
      { text: row[0] + ":  ", options: { bold: true, color: C.amber } },
      { text: row[1], options: { color: C.lightAmber } },
    ], { x: 0.5, y: 0.94 + i * 0.45, w: 9.1, h: 0.42, fontFace: FONT2, fontSize: 11.5 });
  });

  s.addText("Thank You", { x: 0.5, y: 3.88, w: 9, h: 0.65, fontFace: FONT, fontSize: 34, bold: true, color: C.warmWhite, align: "center" });
  s.addText("Reference: KD Tripathi β€” Essentials of Medical Pharmacology (8th Ed.)", {
    x: 0.5, y: 4.52, w: 9, h: 0.32, fontFace: FONT2, fontSize: 12, color: C.amber, align: "center", italic: true,
  });
  s.addText("Supplemented with Lippincott Illustrated Reviews: Pharmacology & Katzung's Basic and Clinical Pharmacology", {
    x: 0.5, y: 4.84, w: 9, h: 0.28, fontFace: FONT2, fontSize: 10.5, color: C.lightRust, align: "center",
  });
}

// ─── WRITE FILE ─────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/peptic-ulcer-ppt/Peptic_Ulcer_Drugs_KDT_v2.pptx" })
  .then(() => console.log("DONE"))
  .catch(e => { console.error(e); process.exit(1); });
Your credits are exhausted. Your daily credits reset tomorrow, or you can purchase a top-up for more.
This is a shared conversation. Sign in to Orris to start your own chat.