Make a colorful presentations on anti venom and snake bite management

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/snakebite-pptx && ls /home/daytona/workspace/snโ€ฆ

Writing File

~/snakebite-pptx/create_presentation.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Snake Bite Management & Antivenom";
pres.author = "Medical Education";

// โ”€โ”€ COLOR PALETTE โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
const C = {
  darkGreen:   "0A3D2F",  // dominant background
  midGreen:    "1B6B47",
  accent:      "F4C842",  // golden yellow accent
  red:         "D94040",  // danger/alert
  lightYellow: "FFF8DC",  // light panels
  white:       "FFFFFF",
  lightGreen:  "A8D8A0",
  teal:        "2E8B6A",
  orange:      "F08030",
  darkText:    "1A2E1A",
  cardBg:      "0D4A30",
  cardBorder:  "F4C842",
  subtitleText:"C8E6C9",
  paleGreen:   "E8F5E9",
  paleYellow:  "FFFDE7",
  alertRed:    "B71C1C",
  warningOrange:"E65100",
};

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 1 โ€” TITLE SLIDE
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();

  // Full dark-green background
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });

  // Decorative diagonal accent stripe
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 3.8, w: 10, h: 0.18, fill: { color: C.accent }, line: { type: "none" } });

  // Snake scale hex pattern row (decorative circles)
  for (let i = 0; i < 12; i++) {
    slide.addShape(pres.ShapeType.ellipse, {
      x: i * 0.88 - 0.2, y: 4.1, w: 0.55, h: 0.55,
      fill: { color: i % 2 === 0 ? C.midGreen : C.teal },
      line: { color: C.accent, width: 1 }
    });
  }

  // Top badge
  slide.addShape(pres.ShapeType.roundRect, { x: 3.5, y: 0.22, w: 3, h: 0.55, fill: { color: C.accent }, line: { type: "none" }, rectRadius: 0.15 });
  slide.addText("EMERGENCY MEDICINE", { x: 3.5, y: 0.22, w: 3, h: 0.55, fontSize: 10, bold: true, color: C.darkGreen, align: "center", valign: "middle", margin: 0 });

  // Main title
  slide.addText("๐Ÿ Snake Bite", { x: 0.5, y: 0.9, w: 9, h: 1.2, fontSize: 56, bold: true, color: C.accent, align: "center", fontFace: "Arial Black", glow: { size: 8, opacity: 0.4, color: C.accent } });
  slide.addText("Management & Antivenom", { x: 0.5, y: 1.95, w: 9, h: 0.9, fontSize: 32, bold: true, color: C.white, align: "center", fontFace: "Arial" });

  // Divider line
  slide.addShape(pres.ShapeType.line, { x: 1.5, y: 2.95, w: 7, h: 0, line: { color: C.accent, width: 2 } });

  // Subtitle
  slide.addText("A Comprehensive Clinical Guide to Recognition, Treatment\nand Antivenom Therapy", { x: 1, y: 3.1, w: 8, h: 0.7, fontSize: 14, color: C.subtitleText, align: "center", italic: true });

  // Bottom stats bar
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 4.85, w: 10, h: 0.78, fill: { color: C.cardBg }, line: { type: "none" } });
  const stats = [
    { val: "5.5M", label: "Annual Bites" },
    { val: "~63K", label: "Deaths/Year" },
    { val: "420+", label: "Species Venomous" },
    { val: "WHO", label: "Neglected Tropical Disease" },
  ];
  stats.forEach((s, i) => {
    const x = 0.5 + i * 2.4;
    slide.addText(s.val, { x, y: 4.88, w: 2.2, h: 0.38, fontSize: 18, bold: true, color: C.accent, align: "center", margin: 0 });
    slide.addText(s.label, { x, y: 5.22, w: 2.2, h: 0.28, fontSize: 9, color: C.lightGreen, align: "center", margin: 0 });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 2 โ€” EPIDEMIOLOGY & GLOBAL BURDEN
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.paleGreen } });

  // Left panel
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 3.8, h: 5.625, fill: { color: C.darkGreen }, line: { type: "none" } });

  // Section tag
  slide.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 0.25, w: 2.8, h: 0.42, fill: { color: C.accent }, line: { type: "none" }, rectRadius: 0.1 });
  slide.addText("EPIDEMIOLOGY", { x: 0.2, y: 0.25, w: 2.8, h: 0.42, fontSize: 11, bold: true, color: C.darkGreen, align: "center", valign: "middle", margin: 0 });

  slide.addText("Global\nBurden", { x: 0.2, y: 0.82, w: 3.2, h: 1.2, fontSize: 34, bold: true, color: C.white, align: "center" });

  // Big stat circles
  const leftStats = [
    { n: "1.2โ€“5.5M", l: "Snakebites/year" },
    { n: "63,415", l: "Deaths globally (2019)" },
    { n: "400K+", l: "Envenomations/year" },
  ];
  leftStats.forEach((s, i) => {
    const y = 2.2 + i * 1.05;
    slide.addShape(pres.ShapeType.ellipse, { x: 0.3, y, w: 0.85, h: 0.85, fill: { color: C.accent }, line: { type: "none" } });
    slide.addText(s.n, { x: 1.28, y: y + 0.02, w: 2.4, h: 0.44, fontSize: 15, bold: true, color: C.accent, margin: 0 });
    slide.addText(s.l, { x: 1.28, y: y + 0.44, w: 2.4, h: 0.38, fontSize: 11, color: C.subtitleText, margin: 0 });
  });

  // Right content
  slide.addText("Who Gets Bitten?", { x: 4.1, y: 0.25, w: 5.7, h: 0.55, fontSize: 22, bold: true, color: C.darkGreen });
  slide.addShape(pres.ShapeType.line, { x: 4.1, y: 0.82, w: 5.5, h: 0, line: { color: C.teal, width: 2 } });

  const facts = [
    { icon: "๐ŸŒ", text: "Developing countries in tropical/temperate zones โ€” agriculture, fishing communities" },
    { icon: "๐Ÿฅ", text: "Many victims lack access to healthcare or antivenom in endemic regions" },
    { icon: "๐Ÿ“ˆ", text: "WHO projects 68,799 deaths by 2030 without intervention" },
    { icon: "๐ŸŽฏ", text: "WHO goal: halve snakebite deaths by 2030 through improved access to antivenom" },
    { icon: "โš ๏ธ", text: "Wide estimates reflect poor data collection in most-affected areas" },
  ];
  facts.forEach((f, i) => {
    const y = 1.0 + i * 0.87;
    slide.addShape(pres.ShapeType.roundRect, { x: 4.1, y, w: 5.6, h: 0.76, fill: { color: C.white }, line: { color: C.lightGreen, width: 1 }, rectRadius: 0.1 });
    slide.addText(f.icon, { x: 4.2, y: y + 0.08, w: 0.55, h: 0.55, fontSize: 20, align: "center", margin: 0 });
    slide.addText(f.text, { x: 4.85, y: y + 0.08, w: 4.75, h: 0.58, fontSize: 11.5, color: C.darkText, valign: "middle", margin: 0 });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 3 โ€” SNAKE CLASSIFICATION
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkText } });

  // Header bar
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.midGreen }, line: { type: "none" } });
  slide.addText("๐Ÿ  Venomous Snake Classification", { x: 0.4, y: 0.1, w: 9, h: 0.8, fontSize: 26, bold: true, color: C.white, valign: "middle" });

  // 4 family cards
  const families = [
    {
      name: "Viperidae", color: C.red, sub: "Pit Vipers & True Vipers",
      examples: ["Rattlesnakes (Crotalus)", "Copperheads (Agkistrodon)", "Cottonmouth", "Russell's Viper"],
      venom: "Hemotoxic / Cytotoxic",
      feature: "Triangular head, elliptical pupils, retractable fangs"
    },
    {
      name: "Elapidae", color: C.orange, sub: "Cobras, Kraits, Mambas",
      examples: ["Cobras", "Coral snakes", "Sea snakes", "Kraits", "All Australian venomous snakes"],
      venom: "Neurotoxic",
      feature: "Fixed, grooved fangs โ€” wick venom into victim"
    },
    {
      name: "Lamprophiidae", color: C.teal, sub: "Burrowing Asps",
      examples: ["Atractaspis spp.", "Found in Africa/Middle East"],
      venom: "Cytotoxic",
      feature: "Rear-fanged; can envenomate even if held behind head"
    },
    {
      name: "Colubridae", color: C.midGreen, sub: "Mostly Non-venomous",
      examples: ["Most species harmless", "Boomslang (Africa)", "Twig snakes"],
      venom: "Variable (few toxic)",
      feature: "Largest snake family; only a few clinically significant"
    },
  ];

  families.forEach((f, i) => {
    const x = 0.18 + i * 2.46;
    slide.addShape(pres.ShapeType.roundRect, { x, y: 1.15, w: 2.3, h: 4.25, fill: { color: f.color }, line: { type: "none" }, rectRadius: 0.18 });
    // top label
    slide.addText(f.name, { x, y: 1.22, w: 2.3, h: 0.52, fontSize: 16, bold: true, color: C.white, align: "center", margin: 0 });
    slide.addText(f.sub, { x, y: 1.7, w: 2.3, h: 0.38, fontSize: 9, color: C.white, align: "center", italic: true, margin: 0 });
    // divider
    slide.addShape(pres.ShapeType.line, { x: x + 0.15, y: 2.12, w: 2.0, h: 0, line: { color: C.white, width: 1 } });
    // venom badge
    slide.addShape(pres.ShapeType.roundRect, { x: x + 0.15, y: 2.2, w: 2.0, h: 0.38, fill: { color: C.darkGreen }, line: { type: "none" }, rectRadius: 0.1 });
    slide.addText(f.venom, { x: x + 0.15, y: 2.2, w: 2.0, h: 0.38, fontSize: 10, bold: true, color: C.accent, align: "center", valign: "middle", margin: 0 });
    // examples
    f.examples.forEach((e, j) => {
      slide.addText("โ€ข " + e, { x: x + 0.1, y: 2.68 + j * 0.34, w: 2.15, h: 0.34, fontSize: 9.5, color: C.white, margin: 0 });
    });
    // feature box at bottom
    slide.addShape(pres.ShapeType.roundRect, { x: x + 0.08, y: 5.0, w: 2.18, h: 0.32, fill: { color: "00000040" }, line: { type: "none" }, rectRadius: 0.08 });
    slide.addText(f.feature, { x: x + 0.08, y: 5.0, w: 2.18, h: 0.32, fontSize: 7.5, color: C.lightYellow, italic: true, align: "center", valign: "middle", margin: 2 });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 4 โ€” VENOM COMPOSITION & EFFECTS
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.paleYellow } });

  // Top header
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.95, fill: { color: C.orange }, line: { type: "none" } });
  slide.addText("๐Ÿงช  Venom Composition & Pathophysiology", { x: 0.4, y: 0.08, w: 9, h: 0.8, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  // Left: composition wheel concept (circular badges)
  const components = [
    { name: "Phospholipase A2", effect: "Membrane disruption, hemolysis, neurotoxicity", color: C.red },
    { name: "Hyaluronidase", effect: "Spreads venom through tissues", color: C.orange },
    { name: "Serine Proteases", effect: "Fibrinogenolysis, coagulopathy", color: C.midGreen },
    { name: "L-amino acid oxidase", effect: "Oxidative damage, apoptosis", color: C.teal },
    { name: "Metalloproteinases", effect: "Hemorrhage, tissue necrosis", color: C.alertRed },
  ];

  slide.addText("Pit Viper Venom\n>90% Protein / 50+ Enzymes", { x: 0.2, y: 1.05, w: 4.2, h: 0.7, fontSize: 14, bold: true, color: C.darkGreen, align: "center" });

  components.forEach((c, i) => {
    const y = 1.85 + i * 0.73;
    slide.addShape(pres.ShapeType.roundRect, { x: 0.2, y, w: 4.2, h: 0.65, fill: { color: c.color }, line: { type: "none" }, rectRadius: 0.12 });
    slide.addText(c.name, { x: 0.32, y: y + 0.04, w: 4.0, h: 0.28, fontSize: 12, bold: true, color: C.white, margin: 0 });
    slide.addText(c.effect, { x: 0.32, y: y + 0.3, w: 4.0, h: 0.28, fontSize: 9.5, color: C.lightYellow, italic: true, margin: 0 });
  });

  // Right: systemic effects
  slide.addShape(pres.ShapeType.roundRect, { x: 4.8, y: 1.05, w: 4.95, h: 4.35, fill: { color: C.white }, line: { color: C.orange, width: 2 }, rectRadius: 0.2 });
  slide.addText("Systemic Effects by Venom Type", { x: 4.9, y: 1.15, w: 4.75, h: 0.5, fontSize: 15, bold: true, color: C.darkGreen, align: "center" });
  slide.addShape(pres.ShapeType.line, { x: 5.0, y: 1.68, w: 4.5, h: 0, line: { color: C.orange, width: 1.5 } });

  const effects = [
    { type: "HEMOTOXIC", icon: "๐Ÿฉธ", items: ["DIC & coagulopathy", "Thrombocytopenia", "Fibrinogenolysis", "Hemolysis"] },
    { type: "NEUROTOXIC", icon: "๐Ÿง ", items: ["Neuromuscular blockade", "Ptosis, diplopia", "Respiratory failure", "Seizures"] },
    { type: "CYTOTOXIC", icon: "๐Ÿ”ฅ", items: ["Local tissue necrosis", "Progressive swelling", "Compartment syndrome", "Ecchymosis"] },
  ];

  effects.forEach((e, i) => {
    const y = 1.82 + i * 1.16;
    slide.addShape(pres.ShapeType.roundRect, { x: 4.9, y, w: 1.25, h: 0.35, fill: { color: i === 0 ? C.red : i === 1 ? C.teal : C.orange }, line: { type: "none" }, rectRadius: 0.08 });
    slide.addText(e.icon + " " + e.type, { x: 4.9, y, w: 1.25, h: 0.35, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    e.items.forEach((item, j) => {
      slide.addText("โ–ธ " + item, { x: 6.28, y: y + j * 0.28, w: 3.3, h: 0.28, fontSize: 10.5, color: C.darkText, margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 5 โ€” CLINICAL PRESENTATION
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });

  // Title area
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.midGreen }, line: { type: "none" } });
  slide.addText("๐Ÿฉบ  Clinical Presentation & Severity Grading", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  // Severity grading โ€” 4 horizontal bands
  const grades = [
    {
      grade: "DRY BITE",
      color: C.lightGreen,
      textColor: C.darkText,
      badge: "NONE",
      badgeColor: "4CAF50",
      desc: "Fang marks only โ€” no envenomation",
      features: ["No pain beyond puncture site", "No swelling or erythema", "Normal labs", "No systemic symptoms"],
    },
    {
      grade: "MILD",
      color: C.accent,
      textColor: C.darkText,
      badge: "GRADE I",
      badgeColor: C.accent,
      desc: "Local effects only, non-progressive",
      features: ["Local pain & erythema", "Non-progressive swelling", "Normal coagulation", "No systemic signs"],
    },
    {
      grade: "MODERATE",
      color: C.orange,
      textColor: C.white,
      badge: "GRADE II",
      badgeColor: C.warningOrange,
      desc: "Progressing local + systemic involvement",
      features: ["Clearly progressing swelling", "Nausea, vomiting", "Lab abnormalities (PT/INR)", "Diaphoresis, tachycardia"],
    },
    {
      grade: "SEVERE",
      color: C.alertRed,
      textColor: C.white,
      badge: "GRADE III",
      badgeColor: C.alertRed,
      desc: "Life-threatening systemic envenomation",
      features: ["Neurologic dysfunction", "Respiratory distress", "Cardiovascular instability/shock", "DIC, compartment syndrome"],
    },
  ];

  grades.forEach((g, i) => {
    const x = 0.18 + i * 2.44;
    slide.addShape(pres.ShapeType.roundRect, { x, y: 1.1, w: 2.3, h: 4.3, fill: { color: g.color }, line: { type: "none" }, rectRadius: 0.16 });
    slide.addText(g.grade, { x, y: 1.18, w: 2.3, h: 0.48, fontSize: 14, bold: true, color: g.textColor, align: "center", margin: 0 });
    slide.addShape(pres.ShapeType.roundRect, { x: x + 0.35, y: 1.72, w: 1.6, h: 0.3, fill: { color: g.badgeColor }, line: { type: "none" }, rectRadius: 0.08 });
    slide.addText(g.badge, { x: x + 0.35, y: 1.72, w: 1.6, h: 0.3, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    slide.addText(g.desc, { x: x + 0.08, y: 2.1, w: 2.18, h: 0.55, fontSize: 9.5, color: g.textColor, align: "center", italic: true, margin: 2 });
    slide.addShape(pres.ShapeType.line, { x: x + 0.15, y: 2.68, w: 2.0, h: 0, line: { color: g.textColor, width: 0.5 } });
    g.features.forEach((f, j) => {
      slide.addText("โœ“ " + f, { x: x + 0.1, y: 2.76 + j * 0.35, w: 2.18, h: 0.34, fontSize: 9, color: g.textColor, margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 6 โ€” FIRST AID & PREHOSPITAL MANAGEMENT
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "FFF3E0" } });

  // Header
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.warningOrange }, line: { type: "none" } });
  slide.addText("โ›‘๏ธ  First Aid & Prehospital Management", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  // DO column
  slide.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.12, w: 4.55, h: 4.3, fill: { color: C.white }, line: { color: "4CAF50", width: 2.5 }, rectRadius: 0.18 });
  slide.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.04, w: 1.2, h: 0.38, fill: { color: "4CAF50" }, line: { type: "none" }, rectRadius: 0.1 });
  slide.addText("โœ“  DO", { x: 0.5, y: 1.04, w: 1.2, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });

  const dos = [
    "๐Ÿšจ Call emergency services immediately",
    "๐Ÿ›Œ Keep patient still and calm โ€” immobilize bitten limb below heart level",
    "๐Ÿ’ Remove rings, watches, tight clothing near bite",
    "๐Ÿ“ Mark bite site; measure & record limb circumference every 15 min",
    "๐Ÿš— Transport to hospital as quickly as possible",
    "๐Ÿ“ท Photograph snake if safely possible (don't approach or handle)",
    "๐Ÿฉบ Note time of bite, snake description, symptoms",
  ];
  dos.forEach((d, i) => {
    slide.addText(d, { x: 0.38, y: 1.52 + i * 0.54, w: 4.25, h: 0.5, fontSize: 11, color: C.darkText, valign: "middle", margin: 2 });
  });

  // DON'T column
  slide.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.12, w: 4.55, h: 4.3, fill: { color: C.white }, line: { color: C.alertRed, width: 2.5 }, rectRadius: 0.18 });
  slide.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 1.04, w: 1.6, h: 0.38, fill: { color: C.alertRed }, line: { type: "none" }, rectRadius: 0.1 });
  slide.addText("โœ—  DON'T", { x: 5.5, y: 1.04, w: 1.6, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });

  const donts = [
    "๐Ÿšซ Do NOT incise or suck venom from wound",
    "๐Ÿšซ Do NOT apply tourniquet or pressure bandage (crotalid)",
    "๐Ÿšซ Do NOT apply ice or cold water to bite site",
    "๐Ÿšซ Do NOT give alcohol or pain medications with sedation",
    "๐Ÿšซ Do NOT use electric shock therapy",
    "๐Ÿšซ Do NOT try to catch or kill the snake",
    "๐Ÿšซ Do NOT elevate bitten limb above heart level",
  ];
  donts.forEach((d, i) => {
    slide.addText(d, { x: 5.38, y: 1.52 + i * 0.54, w: 4.25, h: 0.5, fontSize: 11, color: C.darkText, valign: "middle", margin: 2 });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 7 โ€” HOSPITAL ASSESSMENT
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.teal }, line: { type: "none" } });
  slide.addText("๐Ÿฅ  Hospital Assessment โ€” Immediate Priorities", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 23, bold: true, color: C.white, valign: "middle" });

  // 3-column layout
  const cols = [
    {
      title: "Airway, Breathing\n& Circulation",
      icon: "๐Ÿ’จ",
      color: C.red,
      items: [
        "Stabilize airway, breathing, circulation",
        "Continuous cardiac monitoring",
        "Pulse oximetry & oxygen saturation",
        "Establish TWO large-bore IV lines",
        "IV crystalloid bolus 20โ€“40 mL/kg if hypotensive",
        "Contact poison control center",
      ]
    },
    {
      title: "History &\nExamination",
      icon: "๐Ÿ“‹",
      color: C.orange,
      items: [
        "Time and location of bite",
        "Snake description / photo",
        "Symptoms onset & progression",
        "Identify offending species if possible",
        "Measure & mark limb circumference q15 min",
        "Complete physical examination",
      ]
    },
    {
      title: "Laboratory\nInvestigations",
      icon: "๐Ÿ”ฌ",
      color: C.accent,
      items: [
        "CBC with platelets",
        "Blood type and cross-match",
        "Metabolic panel (BMP/CMP)",
        "PT / INR / PTT",
        "Fibrinogen level",
        "FDP, CK, Urinalysis",
      ]
    },
  ];

  cols.forEach((col, i) => {
    const x = 0.2 + i * 3.28;
    slide.addShape(pres.ShapeType.roundRect, { x, y: 1.12, w: 3.1, h: 4.3, fill: { color: C.cardBg }, line: { color: col.color, width: 2 }, rectRadius: 0.18 });
    slide.addText(col.icon, { x, y: 1.18, w: 3.1, h: 0.55, fontSize: 24, align: "center", margin: 0 });
    slide.addText(col.title, { x, y: 1.7, w: 3.1, h: 0.72, fontSize: 14, bold: true, color: col.color, align: "center", margin: 0 });
    slide.addShape(pres.ShapeType.line, { x: x + 0.2, y: 2.45, w: 2.7, h: 0, line: { color: col.color, width: 1 } });
    col.items.forEach((item, j) => {
      slide.addText("โ–ธ " + item, { x: x + 0.12, y: 2.55 + j * 0.46, w: 2.88, h: 0.44, fontSize: 10.5, color: C.white, margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 8 โ€” ANTIVENOM: MECHANISM & TYPES
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "E8F5E9" } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.darkGreen }, line: { type: "none" } });
  slide.addText("๐Ÿ’‰  Antivenom โ€” What It Is & How It Works", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 23, bold: true, color: C.accent, valign: "middle" });

  // Left explainer
  slide.addText("How Antivenom Works", { x: 0.3, y: 1.1, w: 4.5, h: 0.5, fontSize: 17, bold: true, color: C.darkGreen });
  slide.addShape(pres.ShapeType.line, { x: 0.3, y: 1.62, w: 4.3, h: 0, line: { color: C.midGreen, width: 2 } });
  const mechanism = [
    { step: "1", text: "Animals (sheep/horses) immunized with snake venom" },
    { step: "2", text: "Antibodies harvested from animal serum" },
    { step: "3", text: "IgG purified, Fc portion removed (papain digestion)" },
    { step: "4", text: "Fab or F(ab')โ‚‚ fragments isolated โ€” safer, less allergenic" },
    { step: "5", text: "Administered IV โ†’ binds & neutralizes circulating venom" },
  ];
  mechanism.forEach((m, i) => {
    slide.addShape(pres.ShapeType.ellipse, { x: 0.3, y: 1.78 + i * 0.66, w: 0.42, h: 0.42, fill: { color: C.midGreen }, line: { type: "none" } });
    slide.addText(m.step, { x: 0.3, y: 1.78 + i * 0.66, w: 0.42, h: 0.42, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    slide.addText(m.text, { x: 0.85, y: 1.82 + i * 0.66, w: 3.85, h: 0.4, fontSize: 11.5, color: C.darkText, valign: "middle", margin: 0 });
  });

  // Right โ€” 3 product comparison
  slide.addText("Available Antivenoms (North America)", { x: 5.1, y: 1.1, w: 4.6, h: 0.5, fontSize: 15, bold: true, color: C.darkGreen });
  slide.addShape(pres.ShapeType.line, { x: 5.1, y: 1.62, w: 4.5, h: 0, line: { color: C.midGreen, width: 2 } });

  const products = [
    {
      name: "CroFabยฎ", sub: "Crotalidae Polyvalent Immune Fab (Ovine)",
      color: C.teal, textCol: C.white,
      points: ["Small Fab fragments", "From sheep (ovine)", "Shorter half-life", "4โ€“6 vials moderate / 6 vials severe", "~$3,200/vial (2023)"],
    },
    {
      name: "ANAVIPยฎ", sub: "Crotalidae Immune F(ab')โ‚‚ (Equine)",
      color: C.midGreen, textCol: C.white,
      points: ["Larger F(ab')โ‚‚ fragments", "From horses โ€” caution: horse allergy", "LONGER half-life", "10 vials moderate or severe", "Lower late coagulopathy risk"],
    },
  ];

  products.forEach((p, i) => {
    const y = 1.82 + i * 1.8;
    slide.addShape(pres.ShapeType.roundRect, { x: 5.1, y, w: 4.6, h: 1.65, fill: { color: p.color }, line: { type: "none" }, rectRadius: 0.16 });
    slide.addText(p.name, { x: 5.2, y: y + 0.08, w: 4.4, h: 0.45, fontSize: 18, bold: true, color: C.accent, margin: 0 });
    slide.addText(p.sub, { x: 5.2, y: y + 0.5, w: 4.4, h: 0.3, fontSize: 9.5, color: C.white, italic: true, margin: 0 });
    slide.addShape(pres.ShapeType.line, { x: 5.2, y: y + 0.83, w: 4.3, h: 0, line: { color: C.lightYellow, width: 1 } });
    p.points.forEach((pt, j) => {
      const col = j < 2 ? 5.2 : 7.5;
      const row = j < 2 ? y + 0.9 + j * 0.34 : y + 0.9 + (j - 2) * 0.34;
      // 2-column within card
    });
    // simple list
    const half = Math.ceil(p.points.length / 2);
    p.points.slice(0, half).forEach((pt, j) => {
      slide.addText("โ€ข " + pt, { x: 5.2, y: y + 0.9 + j * 0.28, w: 2.2, h: 0.28, fontSize: 9, color: C.white, margin: 0 });
    });
    p.points.slice(half).forEach((pt, j) => {
      slide.addText("โ€ข " + pt, { x: 7.4, y: y + 0.9 + j * 0.28, w: 2.2, h: 0.28, fontSize: 9, color: C.white, margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 9 โ€” ANTIVENOM ADMINISTRATION PROTOCOL
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkText } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.midGreen }, line: { type: "none" } });
  slide.addText("๐Ÿ“‹  Antivenom Administration Protocol", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  // Flowchart steps left column
  const steps = [
    { n: "1", title: "Determine Indication", color: C.teal, text: "Moderateโ€“Severe envenomation OR progressing ecchymosis >10 cm/hr. None/Mild = observe only." },
    { n: "2", title: "Dose Selection", color: C.midGreen, text: "CroFab: 4โ€“6 vials (moderate), 6 vials (severe). ANAVIP: 10 vials (moderate or severe). Dose is NOT weight-based." },
    { n: "3", title: "Preparation", color: C.orange, text: "Reconstitute vials. Dilute in 250 mL normal saline. Administer IV only." },
    { n: "4", title: "Infusion", color: C.red, text: "Start at 25โ€“50 mL/hr for first 10 min. If no reaction โ†’ increase to 250 mL/hr. Provider at bedside throughout." },
    { n: "5", title: "Response Assessment", color: C.teal, text: "At 1 hour: if stabilized/improved โ€” maintenance doses q6h ร— 3 (CroFab). If failed โ†’ repeat initial dose." },
  ];

  steps.forEach((s, i) => {
    const y = 1.1 + i * 0.9;
    slide.addShape(pres.ShapeType.ellipse, { x: 0.2, y: y + 0.08, w: 0.62, h: 0.62, fill: { color: s.color }, line: { type: "none" } });
    slide.addText(s.n, { x: 0.2, y: y + 0.08, w: 0.62, h: 0.62, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    if (i < steps.length - 1) {
      slide.addShape(pres.ShapeType.line, { x: 0.51, y: y + 0.7, w: 0, h: 0.2, line: { color: s.color, width: 2 } });
    }
    slide.addShape(pres.ShapeType.roundRect, { x: 0.98, y, w: 4.35, h: 0.8, fill: { color: C.cardBg }, line: { color: s.color, width: 1.5 }, rectRadius: 0.12 });
    slide.addText(s.title, { x: 1.1, y: y + 0.04, w: 4.1, h: 0.3, fontSize: 12, bold: true, color: s.color, margin: 0 });
    slide.addText(s.text, { x: 1.1, y: y + 0.34, w: 4.1, h: 0.44, fontSize: 9.5, color: C.white, margin: 0 });
  });

  // Right panel โ€” reactions & special notes
  slide.addShape(pres.ShapeType.roundRect, { x: 5.6, y: 1.1, w: 4.2, h: 4.3, fill: { color: C.cardBg }, line: { color: C.accent, width: 2 }, rectRadius: 0.18 });
  slide.addText("โš ๏ธ  Reaction Management", { x: 5.7, y: 1.18, w: 4.0, h: 0.5, fontSize: 15, bold: true, color: C.accent, align: "center" });
  slide.addShape(pres.ShapeType.line, { x: 5.8, y: 1.7, w: 3.9, h: 0, line: { color: C.accent, width: 1 } });

  const reactions = [
    { trigger: "Acute allergic reaction", action: "STOP infusion immediately" },
    { trigger: "", action: "Epinephrine IM or IV (severe hypotension)" },
    { trigger: "", action: "Antihistamines IV + glucocorticoids IV" },
    { trigger: "", action: "Restart antivenom at 5โ€“10 mL/hr once controlled" },
  ];
  reactions.forEach((r, i) => {
    const y = 1.82 + i * 0.52;
    if (r.trigger) {
      slide.addShape(pres.ShapeType.roundRect, { x: 5.72, y, w: 3.96, h: 0.3, fill: { color: C.alertRed }, line: { type: "none" }, rectRadius: 0.07 });
      slide.addText("โšก " + r.trigger, { x: 5.72, y, w: 3.96, h: 0.3, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    } else {
      slide.addText("  โ†ณ " + r.action, { x: 5.72, y, w: 3.96, h: 0.3, fontSize: 10, color: C.lightYellow, valign: "middle", margin: 0 });
    }
  });

  // Serum sickness note
  slide.addShape(pres.ShapeType.roundRect, { x: 5.72, y: 4.0, w: 3.96, h: 1.2, fill: { color: C.orange + "33" }, line: { color: C.orange, width: 1.5 }, rectRadius: 0.12 });
  slide.addText("Serum Sickness (Delayed)", { x: 5.82, y: 4.06, w: 3.76, h: 0.32, fontSize: 12, bold: true, color: C.accent, margin: 0 });
  slide.addText("Occurs 5โ€“14 days post-treatment\nSymptoms: fever, rash, arthralgias, lymphadenopathy\nTreat with steroids + antihistamines", { x: 5.82, y: 4.36, w: 3.76, h: 0.76, fontSize: 9.5, color: C.white, margin: 0 });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 10 โ€” SPECIFIC MANAGEMENT: ELAPID / CORAL SNAKE
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "FFF8F0" } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.alertRed }, line: { type: "none" } });
  slide.addText("๐Ÿ”ด  Elapid (Coral Snake / Cobra) Management", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  // Warning banner
  slide.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.12, w: 9.4, h: 0.68, fill: { color: C.alertRed + "22" }, line: { color: C.alertRed, width: 2 }, rectRadius: 0.12 });
  slide.addText("โš ๏ธ  No antivenom currently available in the United States for coral snake envenomation โ€” Management is SUPPORTIVE", { x: 0.45, y: 1.18, w: 9.1, h: 0.55, fontSize: 12.5, bold: true, color: C.alertRed, align: "center", valign: "middle", margin: 0 });

  const elapidCards = [
    {
      title: "Why Elapids Are Dangerous",
      icon: "๐Ÿง ",
      color: C.orange,
      points: [
        "Fixed, grooved fangs โ€” venom wicked in on bite",
        "Purely neurotoxic venom โ€” NMJ blockade",
        "Onset of symptoms may be DELAYED (6โ€“12 hrs)",
        "Minimal local reaction despite severe systemic toxicity",
        "Ptosis, diplopia, and bulbar palsy = early warning signs",
      ]
    },
    {
      title: "Clinical Features",
      icon: "๐Ÿฉบ",
      color: C.red,
      points: [
        "Ptosis, diplopia, blurred vision",
        "Dysarthria, dysphagia (bulbar palsy)",
        "Descending flaccid paralysis",
        "Respiratory muscle failure (ICU, ventilation)",
        "Seizures (supportive: IV calcium may help)",
      ]
    },
    {
      title: "Treatment Strategy",
      icon: "๐Ÿ’Š",
      color: C.teal,
      points: [
        "Aggressive airway management โ€” early intubation",
        "ICU monitoring for respiratory failure",
        "Cholinergic agonists at first sign of paralysis",
        "IV calcium infusion may reduce seizure onset",
        "No wound excision or local treatment needed",
      ]
    },
  ];

  elapidCards.forEach((card, i) => {
    const x = 0.2 + i * 3.28;
    slide.addShape(pres.ShapeType.roundRect, { x, y: 2.0, w: 3.1, h: 3.42, fill: { color: C.white }, line: { color: card.color, width: 2 }, rectRadius: 0.16 });
    slide.addShape(pres.ShapeType.roundRect, { x, y: 2.0, w: 3.1, h: 0.58, fill: { color: card.color }, line: { type: "none" }, rectRadius: 0.16 });
    slide.addText(card.icon + " " + card.title, { x, y: 2.04, w: 3.1, h: 0.5, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", margin: 2 });
    card.points.forEach((pt, j) => {
      slide.addText("โ–ธ " + pt, { x: x + 0.12, y: 2.68 + j * 0.52, w: 2.88, h: 0.5, fontSize: 10.5, color: C.darkText, valign: "middle", margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 11 โ€” COMPLICATIONS & SPECIAL SITUATIONS
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.red }, line: { type: "none" } });
  slide.addText("โšก  Complications & Special Situations", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 24, bold: true, color: C.white, valign: "middle" });

  const complications = [
    {
      title: "Compartment Syndrome",
      color: C.orange,
      content: [
        "Most effective treatment: ANTIVENOM (not fasciotomy)",
        "Antivenom neutralizes venom โ†’ reduces compartment pressure",
        "Fasciotomy reserved for proven compartment syndrome AFTER adequate antivenom",
        "Mannitol + antivenom may lower compartment pressure",
      ]
    },
    {
      title: "Coagulopathy / DIC",
      color: C.alertRed,
      content: [
        "Monitor: PT/INR, fibrinogen, FDP every 4โ€“6 hrs",
        "Antivenom is primary treatment",
        "FFP/cryoprecipitate for life-threatening bleeding",
        "ANAVIP has lower late coagulopathy recurrence rate",
      ]
    },
    {
      title: "Wound Infection",
      color: C.teal,
      content: [
        "Surprisingly uncommon โ€” tissue changes are usually STERILE",
        "Prophylactic antibiotics NOT recommended (evidence lacking)",
        "Culture-proven infection: treat with organism-directed therapy",
        "Mouth flora: Pseudomonas, Enterobacteriaceae, Staph, Clostridia",
      ]
    },
    {
      title: "Pediatric / Pregnancy Considerations",
      color: C.accent,
      content: [
        "Antivenom is NOT weight-based โ€” dose is the same as adults",
        "Children may have more severe envenomation (smaller body mass)",
        "Fetal monitoring in pregnancy; antivenom not contraindicated",
        "Consider ICU admission for all severe pediatric cases",
      ]
    },
  ];

  complications.forEach((c, i) => {
    const row = Math.floor(i / 2);
    const col = i % 2;
    const x = 0.2 + col * 4.95;
    const y = 1.1 + row * 2.2;
    slide.addShape(pres.ShapeType.roundRect, { x, y, w: 4.7, h: 2.05, fill: { color: C.cardBg }, line: { color: c.color, width: 2 }, rectRadius: 0.16 });
    slide.addShape(pres.ShapeType.rect, { x, y, w: 4.7, h: 0.45, fill: { color: c.color }, line: { type: "none" } });
    slide.addText(c.title, { x: x + 0.12, y: y + 0.05, w: 4.46, h: 0.36, fontSize: 13, bold: true, color: C.white, valign: "middle", margin: 0 });
    c.content.forEach((item, j) => {
      slide.addText("โ€ข " + item, { x: x + 0.12, y: y + 0.52 + j * 0.37, w: 4.46, h: 0.36, fontSize: 10, color: C.white, valign: "middle", margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 12 โ€” MONITORING & FOLLOW-UP
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.paleGreen } });

  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.midGreen }, line: { type: "none" } });
  slide.addText("๐Ÿ“Š  Post-Antivenom Monitoring & Follow-Up", { x: 0.4, y: 0.12, w: 9.2, h: 0.78, fontSize: 23, bold: true, color: C.white, valign: "middle" });

  // Timeline
  const timeline = [
    { time: "0โ€“1 hr", color: C.teal, items: ["Vital signs q15 min", "Limb circumference q15 min", "Cardiac rhythm & Oโ‚‚ sat", "Watch for reaction to antivenom"] },
    { time: "1โ€“4 hrs", color: C.midGreen, items: ["Repeat CBC + coags q4h", "Assess for improvement", "Repeat antivenom dose if progressing", "Consider ICU if severe"] },
    { time: "4โ€“24 hrs", color: C.orange, items: ["Continue maintenance antivenom (CroFab q6h ร— 3)", "Serial limb measurement q1h once stable", "Wound care & pain management", "Discharge criteria assessment"] },
    { time: "5โ€“14 days", color: C.red, items: ["Serum sickness watch", "Rash, fever, arthralgias", "Treat with steroids + antihistamines", "Follow-up with toxicology/surgery"] },
  ];

  timeline.forEach((t, i) => {
    const x = 0.2 + i * 2.45;
    // timeline dot & line
    slide.addShape(pres.ShapeType.ellipse, { x: x + 0.98, y: 1.05, w: 0.5, h: 0.5, fill: { color: t.color }, line: { type: "none" } });
    if (i < timeline.length - 1) {
      slide.addShape(pres.ShapeType.line, { x: x + 1.48, y: 1.3, w: 1.95, h: 0, line: { color: t.color, width: 2 } });
    }
    slide.addText(t.time, { x: x + 0.1, y: 1.62, w: 2.3, h: 0.38, fontSize: 14, bold: true, color: t.color, align: "center", margin: 0 });
    slide.addShape(pres.ShapeType.roundRect, { x: x + 0.1, y: 2.08, w: 2.2, h: 3.3, fill: { color: C.white }, line: { color: t.color, width: 1.5 }, rectRadius: 0.14 });
    t.items.forEach((item, j) => {
      slide.addText("โ–ธ " + item, { x: x + 0.22, y: 2.18 + j * 0.7, w: 2.0, h: 0.65, fontSize: 10, color: C.darkText, margin: 0 });
    });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 13 โ€” KEY TAKEAWAYS / SUMMARY
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });

  // Decorative circles
  slide.addShape(pres.ShapeType.ellipse, { x: -0.8, y: -0.8, w: 3, h: 3, fill: { color: C.midGreen + "44" }, line: { type: "none" } });
  slide.addShape(pres.ShapeType.ellipse, { x: 8.2, y: 3.4, w: 2.5, h: 2.5, fill: { color: C.accent + "22" }, line: { type: "none" } });

  slide.addText("๐Ÿ  Key Takeaways", { x: 0.5, y: 0.18, w: 9, h: 0.72, fontSize: 30, bold: true, color: C.accent, align: "center" });
  slide.addShape(pres.ShapeType.line, { x: 1.5, y: 0.95, w: 7, h: 0, line: { color: C.accent, width: 2 } });

  const takeaways = [
    { icon: "๐ŸŒ", msg: "Snakebite is the world's deadliest neglected tropical disease โ€” 1.2โ€“5.5 million bites/year, ~63,000 deaths" },
    { icon: "๐Ÿ", msg: "Pit vipers (Viperidae) cause hemotoxic/cytotoxic injury; Elapids cause neurotoxic paralysis" },
    { icon: "โ›‘๏ธ", msg: "Prehospital: immobilize limb, remove jewelry, transport fast โ€” NO tourniquet, no incision, no ice" },
    { icon: "๐Ÿ”ฌ", msg: "Grade envenomation: None/Mild/Moderate/Severe โ€” drives antivenom decision" },
    { icon: "๐Ÿ’‰", msg: "CroFabยฎ (Fab, ovine) and ANAVIPยฎ (F(ab')โ‚‚, equine) are first-line antivenoms for Crotalid bites" },
    { icon: "โš ๏ธ", msg: "Dose is NOT weight-based. Always have epinephrine ready for anaphylaxis during infusion" },
    { icon: "๐Ÿฅ", msg: "Antivenom is best treatment for compartment syndrome from snakebite โ€” fasciotomy usually not needed" },
    { icon: "๐Ÿ“‹", msg: "Monitor for serum sickness 5โ€“14 days after antivenom (treat with steroids + antihistamines)" },
  ];

  takeaways.forEach((t, i) => {
    const row = Math.floor(i / 2);
    const col = i % 2;
    const x = 0.25 + col * 5.0;
    const y = 1.1 + row * 1.1;
    slide.addShape(pres.ShapeType.roundRect, { x, y, w: 4.65, h: 1.0, fill: { color: C.cardBg }, line: { color: col === 0 ? C.accent : C.lightGreen, width: 1.5 }, rectRadius: 0.14 });
    slide.addText(t.icon, { x: x + 0.08, y: y + 0.08, w: 0.7, h: 0.84, fontSize: 24, align: "center", valign: "middle", margin: 0 });
    slide.addText(t.msg, { x: x + 0.85, y: y + 0.08, w: 3.72, h: 0.84, fontSize: 10.5, color: C.white, valign: "middle", margin: 0 });
  });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// SLIDE 14 โ€” REFERENCES / END SLIDE
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 4.7, w: 10, h: 0.925, fill: { color: C.cardBg }, line: { type: "none" } });
  slide.addShape(pres.ShapeType.ellipse, { x: 3.5, y: 0.5, w: 3, h: 3, fill: { color: C.midGreen + "33" }, line: { type: "none" } });

  slide.addText("๐Ÿ“š  References & Sources", { x: 0.5, y: 0.2, w: 9, h: 0.65, fontSize: 26, bold: true, color: C.accent, align: "center" });
  slide.addShape(pres.ShapeType.line, { x: 1.5, y: 0.9, w: 7, h: 0, line: { color: C.accent, width: 1.5 } });

  const refs = [
    "Harrison's Principles of Internal Medicine, 22nd Ed. (2025) โ€” Chapter: Disorders Caused by Venomous Snakebites",
    "Sabiston Textbook of Surgery โ€” Chapter 44: Bites and Stings (Antivenom Administration for Crotalid Envenomation)",
    "Tintinalli's Emergency Medicine โ€” Chapter 212: Snakebites (Management of Compartment Syndrome)",
    "WHO Global Snakebite Initiative โ€” Neglected Tropical Disease Action Plan 2019โ€“2030",
    "Gold BS et al. N Engl J Med 2002; Lavonas EJ et al. BMC Emerg Med 2011 (Unified Treatment Algorithm)",
  ];

  refs.forEach((r, i) => {
    slide.addText((i + 1) + ".  " + r, { x: 0.5, y: 1.08 + i * 0.68, w: 9, h: 0.62, fontSize: 11, color: C.white, valign: "middle", margin: 2 });
    if (i < refs.length - 1) {
      slide.addShape(pres.ShapeType.line, { x: 0.5, y: 1.68 + i * 0.68, w: 9, h: 0, line: { color: C.midGreen, width: 0.5 } });
    }
  });

  slide.addText("๐Ÿ  Snake Bite Management & Antivenom  |  Medical Education Series  |  2026", { x: 0, y: 4.75, w: 10, h: 0.62, fontSize: 11, color: C.subtitleText, align: "center", valign: "middle" });
}

// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
// WRITE FILE
// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
pres.writeFile({ fileName: "/home/daytona/workspace/snakebite-pptx/SnakeBite_Antivenom_Management.pptx" })
  .then(() => console.log("โœ…  Presentation saved successfully!"))
  .catch(err => { console.error("โŒ Error:", err); process.exit(1); });
Running Command

cd /home/daytona/workspace/snakebite-pptx && node create_presentation.js 2>&1

Editing File

~/snakebite-pptx/create_presentation.js

Error: String not found in file: '    fill: { color: "00000040" }, line: { type: "none" }, rectRadius: 0.08 });'
Running Command

ls -lh /home/daytona/workspace/snakebite-pptx/

Your presentation is ready! ๐ŸŽ‰

SnakeBite Antivenom Management

Presentation ยท PPTX


Here's what's inside the 14-slide colorful presentation (dark green + golden yellow + red/orange palette):
SlideContent
1Title Slide - Bold header with global stats bar
2Epidemiology - Global burden, 63K deaths/year, WHO goals
3Snake Classification - Viperidae, Elapidae, Lamprophiidae, Colubridae with venom type cards
4Venom Composition - 50+ enzymes, hemotoxic/neurotoxic/cytotoxic effects
5Clinical Severity Grading - Dry bite / Mild / Moderate / Severe with features
6First Aid - DO vs DON'T - Clear red/green two-column layout
7Hospital Assessment - ABCs, history, lab investigations (3-column)
8Antivenom Mechanism & Types - How it's made + CroFab vs ANAVIP comparison
9Antivenom Protocol - Step-by-step dosing flowchart + reaction management
10Elapid/Coral Snake - Neurotoxic features + supportive care (no antivenom in USA)
11Complications - Compartment syndrome, coagulopathy, infection, pediatric cases
12Monitoring Timeline - 0-1hr โ†’ 1-4hr โ†’ 4-24hr โ†’ 5-14 days
13Key Takeaways - 8 golden bullet cards
14References - Harrison's, Sabiston, Tintinalli's, WHO
Content sourced from Harrison's Principles of Internal Medicine (22nd Ed.), Sabiston Textbook of Surgery, and Tintinalli's Emergency Medicine.

Presentation Doesn't mean that adding just colors where's real time images ๐Ÿ˜”

Searching the Web

snake bite wound clinical photos antivenom vial rattlesnake cobra site:wikimedia.org OR site:cdc.gov OR site:nlm.nih.gov free images

Finding Sources
Finding Sources
Searching the Web

rattlesnake bite swelling necrosis clinical photograph snakebite antivenom vial CroFab treatment

Finding Sources
Searching the Web

cobra king cobra viper Russell's viper rattlesnake photos venomous snakes clinical wikimedia commons

Reading File
Running Command

node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://upload.wikโ€ฆ

!

An error occurred (ValidationException) when calling the ConverseStream operation: The model returned the following errors: prompt is too long: 211648 tokens > 200000 maximum

We encountered an error while processing your request. Please try again or reach out to us for help.

โœ‰๏ธhi@orris.care

Take content from Lippincott book and add real time images ๐Ÿ˜” . just adding colors doesn't mean presentation

Asking for Preferences
This is a shared conversation. Sign in to Orris to start your own chat.