Snake bite management flashcards in which includes how to identify type of snap for measure snake in india with there symptom and give a treatment with from standard book
mkdir -p /home/daytona/workspace/snakebite-flashcards && ls /home/daytona/workspace/snakebite-flashcards/
~/snakebite-flashcards/generate.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Snake Bite Management in India - Flashcards";
pres.author = "Medical Education";
// ─── COLOUR PALETTE ────────────────────────────────────────────
const C = {
darkGreen: "1A4731", // dominant bg for headers
midGreen: "2D6A4F",
accentGold: "F4A50D",
lightMint: "D8F3DC",
white: "FFFFFF",
offWhite: "F8FBF9",
red: "C0392B",
orange: "E67E22",
blue: "1A5276",
lightBlue: "D6EAF8",
purple: "6C3483",
lightPurple: "E8DAEF",
teal: "117A65",
lightTeal: "D0ECE7",
darkText: "1A1A1A",
grayText: "555555",
};
// ─── HELPER: TITLE SLIDE ────────────────────────────────────────
function titleSlide(title, subtitle) {
let sl = pres.addSlide();
// bg
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
// accent bar
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 4.2, w: 10, h: 0.18, fill: { color: C.accentGold } });
// emoji/icon area
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.5, y: 0.5, w: 1.2, h: 1.2, fill: { color: C.accentGold }, rectRadius: 0.2 });
sl.addText("🐍", { x: 0.5, y: 0.45, w: 1.2, h: 1.2, fontSize: 38, align: "center", valign: "middle" });
sl.addText(title, { x: 2, y: 0.5, w: 7.5, h: 1.4, fontSize: 34, bold: true, color: C.white, valign: "middle", margin: 0 });
sl.addText(subtitle, { x: 2, y: 2.0, w: 7.5, h: 1.0, fontSize: 18, color: C.lightMint, italic: true, margin: 0 });
sl.addText("Sources: Park's Textbook of Preventive & Social Medicine | Pye's Surgical Handicraft | Goldman-Cecil Medicine", {
x: 0.5, y: 4.5, w: 9, h: 0.6, fontSize: 10, color: C.accentGold, align: "center", margin: 0
});
}
// ─── HELPER: SECTION DIVIDER ────────────────────────────────────
function sectionDivider(emoji, number, title, subtitle) {
let sl = pres.addSlide();
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.midGreen } });
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.25, h: 5.625, fill: { color: C.accentGold } });
sl.addText(emoji, { x: 1, y: 0.8, w: 2, h: 2, fontSize: 72, align: "center", margin: 0 });
sl.addText(`SECTION ${number}`, { x: 3.2, y: 1.0, w: 6.5, h: 0.6, fontSize: 14, color: C.accentGold, bold: true, charSpacing: 4, margin: 0 });
sl.addText(title, { x: 3.2, y: 1.7, w: 6.5, h: 1.4, fontSize: 30, bold: true, color: C.white, margin: 0 });
sl.addText(subtitle, { x: 3.2, y: 3.2, w: 6.5, h: 0.9, fontSize: 15, color: C.lightMint, italic: true, margin: 0 });
}
// ─── HELPER: FLASHCARD (QUESTION/ANSWER STYLE) ──────────────────
function flashcard(qBgColor, aBgColor, question, questionEmoji, answers, footerNote) {
let sl = pres.addSlide();
// LEFT panel - QUESTION
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 3.8, h: 5.625, fill: { color: qBgColor } });
sl.addText("QUESTION", { x: 0.15, y: 0.2, w: 3.5, h: 0.4, fontSize: 10, bold: true, color: C.white, charSpacing: 3, margin: 0 });
sl.addShape(pres.shapes.RECTANGLE, { x: 0.15, y: 0.65, w: 3.5, h: 0.04, fill: { color: C.white }, line: { color: C.white } });
sl.addText(questionEmoji, { x: 0.3, y: 0.85, w: 3.2, h: 1.1, fontSize: 44, align: "center", margin: 0 });
sl.addText(question, { x: 0.2, y: 2.0, w: 3.4, h: 3.1, fontSize: 14, bold: true, color: C.white, valign: "top", wrap: true, margin: 0 });
// RIGHT panel - ANSWER
sl.addShape(pres.shapes.RECTANGLE, { x: 3.8, y: 0, w: 6.2, h: 5.625, fill: { color: aBgColor } });
sl.addText("ANSWER", { x: 3.95, y: 0.2, w: 5.9, h: 0.4, fontSize: 10, bold: true, color: C.grayText, charSpacing: 3, margin: 0 });
sl.addShape(pres.shapes.RECTANGLE, { x: 3.95, y: 0.65, w: 5.8, h: 0.04, fill: { color: C.grayText }, line: { color: C.grayText } });
// Answers
sl.addText(answers, { x: 3.95, y: 0.8, w: 5.85, h: 4.5, fontSize: 12, color: C.darkText, valign: "top", wrap: true, margin: 4 });
if (footerNote) {
sl.addShape(pres.shapes.RECTANGLE, { x: 3.8, y: 5.2, w: 6.2, h: 0.42, fill: { color: qBgColor } });
sl.addText(footerNote, { x: 3.9, y: 5.22, w: 6.0, h: 0.38, fontSize: 9.5, color: C.white, italic: true, margin: 0 });
}
}
// ─── HELPER: INFO CARD (for identification/symptoms) ────────────
function infoCard(headerBg, title, emoji, rows, footerText) {
let sl = pres.addSlide();
// header
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: headerBg } });
sl.addText(emoji + " " + title, { x: 0.3, y: 0.12, w: 9.4, h: 0.8, fontSize: 22, bold: true, color: C.white, valign: "middle", margin: 0 });
// content rows
let yPos = 1.25;
const rowH = 0.73;
rows.forEach((row, i) => {
const bg = i % 2 === 0 ? C.offWhite : C.white;
sl.addShape(pres.shapes.RECTANGLE, { x: 0.2, y: yPos, w: 9.6, h: rowH, fill: { color: bg }, line: { color: "E0E0E0", pt: 0.5 } });
sl.addText(row.label, { x: 0.35, y: yPos + 0.05, w: 3.0, h: rowH - 0.1, fontSize: 11, bold: true, color: headerBg, valign: "middle", margin: 0 });
sl.addText(row.value, { x: 3.4, y: yPos + 0.05, w: 6.2, h: rowH - 0.1, fontSize: 11, color: C.darkText, valign: "middle", wrap: true, margin: 0 });
yPos += rowH + 0.04;
});
if (footerText) {
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.2, w: 10, h: 0.42, fill: { color: headerBg } });
sl.addText(footerText, { x: 0.3, y: 5.22, w: 9.4, h: 0.38, fontSize: 9.5, color: C.white, italic: true, margin: 0 });
}
}
// ─── HELPER: SNAKE PROFILE CARD ─────────────────────────────────
function snakeProfile(accentColor, lightBg, snakeName, commonName, family, venom, identification, symptoms, antivenom) {
let sl = pres.addSlide();
// Top strip
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.9, fill: { color: accentColor } });
sl.addText("🐍 " + snakeName, { x: 0.3, y: 0.05, w: 9, h: 0.8, fontSize: 20, bold: true, color: C.white, valign: "middle", margin: 0 });
// Common name badge
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.3, y: 0.95, w: 9.4, h: 0.5, fill: { color: lightBg }, rectRadius: 0.08 });
sl.addText(commonName + " | " + family, { x: 0.4, y: 0.97, w: 9.2, h: 0.46, fontSize: 12, italic: true, color: accentColor, valign: "middle", margin: 0 });
// 3-column layout
const colW = 3.0;
const headers = ["🔍 Identification", "⚠️ Venom Type", "🩸 Symptoms"];
const contents = [identification, venom, symptoms];
const colors = [accentColor, C.red, C.orange];
headers.forEach((h, i) => {
const x = 0.2 + i * 3.25;
sl.addShape(pres.shapes.RECTANGLE, { x, y: 1.55, w: colW, h: 0.45, fill: { color: colors[i] } });
sl.addText(h, { x: x + 0.05, y: 1.57, w: colW - 0.1, h: 0.41, fontSize: 11, bold: true, color: C.white, valign: "middle", margin: 0 });
sl.addShape(pres.shapes.RECTANGLE, { x, y: 2.0, w: colW, h: 2.9, fill: { color: lightBg }, line: { color: "D0D0D0", pt: 0.5 } });
sl.addText(contents[i], { x: x + 0.1, y: 2.1, w: colW - 0.2, h: 2.7, fontSize: 10.5, color: C.darkText, valign: "top", wrap: true, margin: 0 });
});
// Antivenom footer
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.05, w: 10, h: 0.575, fill: { color: accentColor } });
sl.addText("💉 Antivenom: " + antivenom, { x: 0.3, y: 5.07, w: 9.4, h: 0.52, fontSize: 11, color: C.white, bold: true, margin: 0 });
}
// ─── HELPER: TREATMENT STEP CARD ────────────────────────────────
function treatmentCard(bgColor, lightBg, title, emoji, steps) {
let sl = pres.addSlide();
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: bgColor } });
sl.addText(emoji + " " + title, { x: 0.3, y: 0.1, w: 9.4, h: 0.8, fontSize: 22, bold: true, color: C.white, valign: "middle", margin: 0 });
let y = 1.1;
steps.forEach((step, i) => {
const sh = step.long ? 0.72 : 0.62;
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.2, y, w: 0.55, h: sh - 0.05, fill: { color: bgColor }, rectRadius: 0.1 });
sl.addText(String(i + 1), { x: 0.2, y: y, w: 0.55, h: sh - 0.05, fontSize: 15, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
sl.addShape(pres.shapes.RECTANGLE, { x: 0.85, y, w: 8.95, h: sh - 0.05, fill: { color: lightBg }, line: { color: "E0E0E0", pt: 0.5 } });
sl.addText(step.text, { x: 1.0, y: y + 0.05, w: 8.7, h: sh - 0.15, fontSize: 11.5, color: C.darkText, valign: "middle", wrap: true, margin: 0 });
y += sh + 0.04;
});
}
// ─── HELPER: COMPARISON TABLE ────────────────────────────────────
function comparisonTable(title, emoji, headerBg, cols, rows) {
let sl = pres.addSlide();
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: headerBg } });
sl.addText(emoji + " " + title, { x: 0.3, y: 0.1, w: 9.4, h: 0.8, fontSize: 22, bold: true, color: C.white, valign: "middle", margin: 0 });
const colW = 9.6 / cols.length;
// Column headers
cols.forEach((col, i) => {
sl.addShape(pres.shapes.RECTANGLE, { x: 0.2 + i * colW, y: 1.05, w: colW, h: 0.5, fill: { color: headerBg }, line: { color: C.white, pt: 1 } });
sl.addText(col, { x: 0.25 + i * colW, y: 1.07, w: colW - 0.1, h: 0.46, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
});
// Rows
rows.forEach((row, ri) => {
const bg = ri % 2 === 0 ? C.offWhite : C.white;
const rowH = 0.62;
const y = 1.57 + ri * rowH;
row.forEach((cell, ci) => {
sl.addShape(pres.shapes.RECTANGLE, { x: 0.2 + ci * colW, y, w: colW, h: rowH, fill: { color: ci === 0 ? C.lightMint : bg }, line: { color: "D0D0D0", pt: 0.5 } });
sl.addText(cell, { x: 0.28 + ci * colW, y: y + 0.04, w: colW - 0.16, h: rowH - 0.08, fontSize: 10, color: ci === 0 ? C.darkGreen : C.darkText, bold: ci === 0, valign: "middle", wrap: true, margin: 0 });
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE CREATION BEGINS
// ═══════════════════════════════════════════════════════════════
// ── SLIDE 1: Title ──────────────────────────────────────────────
titleSlide("SNAKE BITE MANAGEMENT IN INDIA", "Flashcards for Identification · Symptoms · Treatment");
// ── SECTION 1: Epidemiology ──────────────────────────────────────
sectionDivider("📊", "1", "Epidemiology & Overview", "Why snake bite matters in India");
infoCard(C.darkGreen, "SNAKE BITE — Public Health Facts (India)", "📊", [
{ label: "Annual Deaths (India)", value: "≥45,000 per year — highest in the world" },
{ label: "Global Burden", value: "~5 million bites/year worldwide; 94,000–125,000 deaths; ~400,000 amputations" },
{ label: "Who is at Risk?", value: "Rural agricultural workers, farmers, hunters — occupational exposure" },
{ label: "When?", value: "Peak during rice planting/harvesting; Russell's viper bites common in South-East Asia during these periods" },
{ label: "Non-venomous Bites", value: "70% of all snake bites in India are from non-venomous species; only 50% of venomous bites actually envenomate" },
{ label: "Key Concern", value: "Delayed access to treatment and suboptimal care are main causes of mortality" },
], "Source: Park's Textbook of Preventive & Social Medicine | Goldman-Cecil Medicine");
// ── SECTION 2: Identification ────────────────────────────────────
sectionDivider("🔍", "2", "Identifying Venomous Snakes in India", "The 'Big Four' + other medically important species");
infoCard(C.blue, "HOW TO IDENTIFY A VENOMOUS SNAKE — General Features", "🔍", [
{ label: "Fang Marks", value: "Two distinct puncture marks (fang marks) vs. row of small teeth marks (non-venomous). May have single fang mark if one fang penetrated." },
{ label: "Head Shape", value: "Vipers: triangular/arrowhead head. Elapids (cobra/krait): more oval/rounded head" },
{ label: "Pupils", value: "Vipers: elliptical (cat-like) pupils. Elapids: round pupils" },
{ label: "Scales", value: "Vipers: keeled (rough) scales. Elapids: smooth scales" },
{ label: "Tail", value: "Vipers: short, stubby tail. Cobras/kraits: tapered tail" },
{ label: "Behavior at Bite", value: "Immediate pain + swelling → Viper. Mild/no immediate pain → Elapid (cobra/krait)" },
], "Source: Pye's Surgical Handicraft, 22nd Ed | Park's Preventive Medicine");
// ── Snake Profile 1: Indian Cobra ──────────────────────────────
snakeProfile(
C.blue, C.lightBlue,
"Naja naja — Indian Cobra",
"Common name: Spectacled Cobra / Nag | Family: Elapidae",
"Elapidae",
"NEUROTOXIC (post-synaptic)\nBlocks acetylcholine at neuromuscular junction → flaccid paralysis\nAlso cytotoxic in some subspecies",
"• Spectacled/binocular mark on hood\n• Hood spreads when threatened\n• Smooth, rounded head\n• 1.2–1.8 m long\n• Brown/cream/black coloration\n• Diurnal + nocturnal",
"• Minimal/moderate local pain & swelling\n• Onset: 0.5–8 hours\n• Ptosis (first sign!)\n• Diplopia, dysarthria\n• Dysphagia, drooling\n• Flaccid descending paralysis\n• Respiratory failure\n• Local necrosis possible",
"Polyvalent Anti-Snake Venom (ASV) — Indian polyvalent covers Naja naja. IV infusion."
);
// ── Snake Profile 2: Indian Krait ──────────────────────────────
snakeProfile(
C.purple, C.lightPurple,
"Bungarus caeruleus — Indian Krait",
"Common name: Common Krait / Blue Krait | Family: Elapidae",
"Elapidae",
"POWERFUL NEUROTOXIN\n(α + β bungarotoxins)\nPre-synaptic AND post-synaptic blockade\nMore potent than cobra neurotoxin",
"• Black/dark blue with white crossbands\n• Triangular cross-section body\n• Glossy, smooth scales\n• Hexagonal vertebral scales enlarged\n• 0.9–1.7 m long\n• Nocturnal; sluggish during day",
"• PAINLESS bite — often mistaken for insect bite or may not wake sleeping victim!\n• Local swelling ABSENT or minimal\n• Delayed onset: 1–8 hours\n• Abdominal pain, cramps\n• Ptosis, ophthalmoplegia\n• Ascending paralysis\n• Respiratory arrest\n• High mortality if untreated",
"Polyvalent ASV (Indian polyvalent). Neostigmine + atropine as adjunct. Ventilatory support critical."
);
// ── Snake Profile 3: Russell's Viper ───────────────────────────
snakeProfile(
C.red, "#FADBD8",
"Daboia russelii — Russell's Viper",
"Common name: Chain Viper / Koriwala | Family: Viperidae",
"Viperidae",
"CYTOTOXIC + HAEMOTOXIC\nProcoagulant → Consumption coagulopathy (DIC)\nNephrotoxic → Acute kidney injury\nMyotoxic (in Indian/Sri Lankan subspecies)",
"• Chain-like row of dark brown oval spots on body\n• Triangular head, distinct neck\n• Heavy-bodied, 1.0–1.5 m\n• Loud hissing when disturbed\n• Keeled scales\n• Prominent heat-sensing pits\n• Diurnal in cool weather, nocturnal in heat",
"• SEVERE local pain and swelling within minutes\n• Hemorrhagic blisters\n• Non-clotting blood (DIC)\n• Gum bleeding, hemoptysis\n• Hematuria, hematemesis\n• Bilateral ptosis (in Indian subspecies)\n• Rhabdomyolysis\n• Acute kidney injury (major cause of AKI in Myanmar)\n• Shock, hypotension",
"Polyvalent ASV. Fresh frozen plasma NOT helpful for Russell's viper coagulopathy. Dialysis for AKI."
);
// ── Snake Profile 4: Saw-Scaled Viper ──────────────────────────
snakeProfile(
C.orange, "#FDEBD0",
"Echis carinatus — Saw-Scaled / Carpet Viper",
"Common name: Phoorsa / Carpet Viper | Family: Viperidae",
"Viperidae",
"HAEMOTOXIC\nVery potent procoagulant enzymes\n→ DIC / consumption coagulopathy\n→ Spontaneous systemic bleeding",
"• Small (0.3–0.6 m), slender\n• Pear-shaped head with rostral horn\n• Distinctive 'serrated' lateral scales that produce rasping sound when coiled\n• Brown/gray with white arrow mark on head\n• Nocturnal; common in dry, rocky terrain",
"• Severe local pain, swelling, bruising\n• Persistent bleeding from fang marks\n• Spontaneous bleeding: gums, nose, GI tract\n• Gingival bleeding (early sign)\n• Non-clotting blood (20WBCT positive)\n• Haematuria\n• Shock and DIC\n• CNS bleeding rare but possible",
"Polyvalent ASV. Monitor 20-min whole blood clotting test (20WBCT) every 6h. Repeat ASV until clotting restored."
);
// ── SECTION 3: Venom Types & Syndromes ────────────────────────
sectionDivider("⚗️", "3", "Venom Types & Clinical Syndromes", "Neurotoxic · Haemotoxic · Cytotoxic");
comparisonTable(
"Venom Syndromes: Comparison of Key Features", "⚗️", C.teal,
["Feature", "Neurotoxic (Elapids)", "Haemotoxic (Vipers)", "Cytotoxic (Cobras/Vipers)"],
[
["Local Pain", "Mild / ABSENT (krait)", "SEVERE, immediate", "Moderate–severe"],
["Local Swelling", "Minimal / ABSENT (krait)", "Extensive, rapid", "Present + necrosis"],
["Fang Marks", "May be invisible", "Clear, bleeding persists", "Present"],
["Key Early Sign", "Ptosis (lid droop)", "Bleeding gums / non-clotting blood", "Tissue necrosis"],
["Coagulopathy", "ABSENT", "PRESENT (DIC)", "Variable"],
["Paralysis", "Descending → respiratory failure", "ABSENT / mild", "Possible if systemic"],
["Rhabdomyolysis", "Sea snakes, Russell's viper (India)", "Russell's viper", "Occasional"],
["AKI", "Rare", "Russell's viper, Echis", "Variable"],
["Key Test", "Vital signs, ptosis check", "20WBCT — 20 min clot test", "Local wound assessment"],
]
);
// ── SECTION 4: Diagnosis ─────────────────────────────────────────
sectionDivider("🩺", "4", "Diagnosis & Assessment", "History · Examination · Bedside Tests");
flashcard(
C.darkGreen, C.offWhite,
"What are the EARLY CLUES of SEVERE envenomation?",
"🚨",
[
{ text: "Early Clues of SEVERE Envenomation\n", options: { bold: true, fontSize: 13, breakLine: true, color: C.red } },
{ text: "• Snake identified as very dangerous species\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Rapid extension of local swelling from bite site\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Early tender enlargement of regional lymph nodes\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Systemic symptoms: collapse, shock, nausea, vomiting, diarrhoea\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Severe headache, 'heaviness' of eyelids, pathological drowsiness\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Early ptosis or ophthalmoplegia\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Spontaneous systemic bleeding (gums, nose, GI)\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "• Dark brown/black urine (haemoglobinuria/myoglobinuria)\n\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "Earliest sign of paralysis: PTOSIS", options: { bold: true, fontSize: 12, color: C.red } },
],
"Park's PSM | Pye's Surgical Handicraft, 22nd Ed"
);
infoCard(C.teal, "BEDSIDE DIAGNOSTIC TESTS for Snake Bite", "🧪", [
{ label: "20WBCT", value: "20-Minute Whole Blood Clotting Test: Place few mL venous blood in clean dry glass tube. Leave 20 min at room temp. Non-clotting = defibrination = viperid envenomation. Repeat every 6h post-antivenom." },
{ label: "Urine Dipstick", value: "Blood/protein on dipstick → haemoglobinuria or myoglobinuria. Myoglobin gives +ve haemoglobin reaction. Dark mahogany/cola urine → rhabdomyolysis." },
{ label: "Urine Output", value: "Monitor hourly. Oliguria (<0.5 mL/kg/h) → AKI from Russell's viper or Echis." },
{ label: "Ptosis Check", value: "Ask patient to look upward — failure of lid retraction causing 'hooding' of pupil = earliest sign of neurotoxic paralysis" },
{ label: "CBC / Haematocrit", value: "WBC >20,000/μL suggests systemic envenomation. Falling haematocrit → haemolysis or bleeding." },
{ label: "ECG", value: "Useful in cardiovascular assessment; some venoms cause arrhythmia or hypotension" },
], "Source: Pye's Surgical Handicraft 22nd Ed | Park's PSM");
// ── SECTION 5: First Aid ──────────────────────────────────────────
sectionDivider("🏃", "5", "First Aid Management", "Government of India National Protocol 2007");
treatmentCard(C.darkGreen, C.lightMint, "FIRST AID — DO's (India National Protocol 2007)", "✅", [
{ text: "REASSURE the patient: 70% of all snake bites are from non-venomous species; only 50% of bites by venomous species actually envenomate. Panic increases venom absorption." },
{ text: "IMMOBILIZE the bitten limb: Splint like a fractured limb. Use bandages/cloth to hold splints — NOT to block blood supply. Reduces muscle contractions that enhance venom absorption." },
{ text: "PRESSURE IMMOBILIZATION BANDAGE: Apply only for identified neurotoxic elapid or sea snake bites (krait/cobra). Firm crepe bandage + splint from bite site upward. Delays life-threatening neurotoxicity until intubation possible." },
{ text: "REMOVE constricting items: Rings, bracelets, watches, tight footwear from bitten limb before swelling begins." },
{ text: "TRANSPORT URGENTLY to nearest health facility — as quickly, comfortably and passively as possible (carry patient; minimize exertion)." },
{ text: "MONITOR: Note time of bite, progression of symptoms, identify snake if safely possible (do NOT handle live/dead snake with bare hands)." },
]);
treatmentCard(C.red, "#FADBD8", "FIRST AID — DON'Ts (Harmful Traditional Practices)", "❌", [
{ text: "Do NOT incise, excise, cauterize, or suck the wound. Do NOT apply ice packs. These cause more tissue damage and delay transfer to care." },
{ text: "Do NOT give alcoholic beverages or stimulants — they are vasodilators that speed up venom absorption." },
{ text: "Do NOT use tight tourniquets or constricting bands (except for confirmed neurotoxic elapid/sea snake bite — see Do's). Tourniquets cause ischaemia and necrosis." },
{ text: "Do NOT apply electric shocks, herbal poultices, chemicals, or any topical remedies." },
{ text: "Do NOT give aspirin or NSAIDs for pain (they cause bleeding). Use paracetamol or codeine only.", long: true },
{ text: "Do NOT perform skin/conjunctival sensitivity tests for antivenom — they have NO predictive value.", long: true },
]);
// ── SECTION 6: Antivenom ──────────────────────────────────────────
sectionDivider("💉", "6", "Antivenom Therapy", "The mainstay of treatment");
infoCard(C.midGreen, "INDICATIONS FOR ANTIVENOM (ASV)", "💉", [
{ label: "Systemic Envenomation", value: "Haemostatic abnormalities: spontaneous bleeding, non-clotting blood (20WBCT+), DIC; Neurotoxicity: ptosis, ophthalmoplegia, paralysis; Cardiovascular: hypotension, shock, arrhythmia; AKI (oliguria, haematuria)" },
{ label: "Local Envenomation", value: "Known necrotic venom + swelling >50% of bitten limb; rapid progression of swelling; bites on digits or tight fascial compartments" },
{ label: "Other Systemic Signs", value: "WBC >20,000/μL; acidosis; rhabdomyolysis (elevated CK/myoglobinuria)" },
{ label: "Indian Polyvalent ASV", value: "Covers all 4 species of 'Big Four': Naja naja, Bungarus caeruleus, Daboia russelii, Echis carinatus. Initial dose: minimum 5 × 10 mL ampoules (50 mL). Children = same dose as adults." },
{ label: "Route & Rate", value: "IV infusion is preferred. Dilute in normal saline. Give slowly initially (watch for reactions). NOT by local injection into bite site." },
{ label: "Repeat Dosing", value: "Assess clinical response. Repeat within 1h if life-threatening signs persist (respiratory paralysis, shock). For procoagulant venom: repeat every 6h until 20WBCT normalizes." },
], "Source: Pye's Surgical Handicraft 22nd Ed | Park's PSM");
flashcard(
C.midGreen, C.offWhite,
"How do you manage ANTIVENOM REACTIONS?",
"⚠️",
[
{ text: "EARLY (Anaphylactic) Reactions", options: { bold: true, fontSize: 12.5, breakLine: true, color: C.red } },
{ text: "Onset: 10 min – 2 hours after starting ASV\n", options: { fontSize: 11, breakLine: true } },
{ text: "Features: urticaria, itching, tachycardia, fever, coughing, vomiting\n\n", options: { fontSize: 11, breakLine: true } },
{ text: "Treatment: Adrenaline 0.1% (1:1000, 1 mg/mL)\n", options: { fontSize: 11, breakLine: true } },
{ text: " Adult: 0.5–1.0 mL SC/IM (or very slow IV if severe)\n", options: { fontSize: 11, breakLine: true } },
{ text: " Child: 0.01 mL/kg SC/IM\n", options: { fontSize: 11, breakLine: true } },
{ text: "+ Chlorpheniramine maleate IV (adult 10 mg, child 0.2 mg/kg)\n\n", options: { fontSize: 11, breakLine: true } },
{ text: "LATE (Serum Sickness) Reactions\n", options: { bold: true, fontSize: 12.5, breakLine: true, color: C.orange } },
{ text: "Onset: 5–24 days post-treatment\n", options: { fontSize: 11, breakLine: true } },
{ text: "Features: fever, urticaria, lymphadenopathy, arthralgias, albuminuria\n", options: { fontSize: 11, breakLine: true } },
{ text: "Treatment: Antihistamine (mild); Prednisolone 5 mg QID × 5d adult, 0.7 mg/kg/d × 5d child\n", options: { fontSize: 11, breakLine: true } },
],
"Source: Pye's Surgical Handicraft, 22nd Ed"
);
// ── SECTION 7: Supportive Treatment ──────────────────────────────
sectionDivider("🏥", "7", "Supportive & Definitive Treatment", "Hospital management protocol");
treatmentCard(C.blue, C.lightBlue, "HOSPITAL MANAGEMENT — Step-by-Step Protocol", "🏥", [
{ text: "OBSERVATION: Admit ALL snake bite patients for minimum 24h (except reliably identified non-venomous species). Record time of bite, snake ID, symptom progression hourly." },
{ text: "IV ACCESS + MONITORING: Establish IV access. Monitor BP, pulse, RR, urine output hourly. Baseline: 20WBCT, CBC, urine stix, haematocrit, ECG." },
{ text: "AIRWAY & VENTILATION: Neurotoxic paralysis → artificial ventilation (manual Ambu bag or mechanical). Endotracheal intubation with cuffed tube. Antivenom may act too slowly to prevent respiratory arrest — do not wait." },
{ text: "ANTIVENOM (ASV): Give per indications (see Section 6). Premedicate with SC epinephrine 0.25 mL (1:1000) in adults to reduce anaphylaxis risk. Dilute in NS. Slow initial infusion." },
{ text: "NEOSTIGMINE + ATROPINE: For post-synaptic neurotoxicity (cobra bites). Neostigmine 0.02 mg/kg IM + Atropine 0.6 mg IV. May reverse ptosis and paralysis if post-synaptic (NOT useful for pre-synaptic toxins like krait)." },
{ text: "SHOCK MANAGEMENT: IV fluid challenge — 250–500 mL 0.9% saline (adults). Vasopressors if unresponsive. Monitor urine output." },
]);
treatmentCard(C.teal, C.lightTeal, "SPECIFIC COMPLICATIONS MANAGEMENT", "🔧", [
{ text: "RESPIRATORY PARALYSIS: Mechanical ventilation; keep ventilated until adequate neuromuscular recovery. May require days to weeks for krait bites." },
{ text: "ACUTE KIDNEY INJURY (Russell's viper/Echis): Conservative fluid management, monitor urine output, avoid nephrotoxins. Haemodialysis/peritoneal dialysis if severe oliguria persists." },
{ text: "DIC / COAGULOPATHY: Repeat ASV every 6h until 20WBCT normalizes. Fresh Frozen Plasma is NOT helpful for Russell's viper coagulopathy. Do NOT give aspirin or NSAIDs." },
{ text: "LOCAL NECROSIS: Antibiotics + tetanus prophylaxis if wound is necrotic, infected, or manipulated. Surgical debridement for established necrosis. Physiotherapy for sequelae." },
{ text: "RHABDOMYOLYSIS: IV fluids to maintain urine output >1 mL/kg/h. Alkalinize urine. Monitor CK, potassium, calcium. Treat hyperkalaemia urgently (cardiac risk)." },
{ text: "WOUND CARE: Do NOT incise. Drain blisters containing serosanguinous fluid only if under pressure causing pain. Skin/conjunctival sensitivity tests for ASV are NOT recommended." },
]);
// ── SECTION 8: 20WBCT Quick Reference ───────────────────────────
flashcard(
C.teal, C.offWhite,
"How to perform the 20-Minute Whole Blood Clotting Test (20WBCT)?",
"🧪",
[
{ text: "20-Minute Whole Blood Clotting Test (20WBCT)\n\n", options: { bold: true, fontSize: 13, breakLine: true, color: C.teal } },
{ text: "Procedure:\n", options: { bold: true, fontSize: 12, breakLine: true } },
{ text: "1. Collect 2–3 mL venous blood\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "2. Place in a clean, dry glass test tube (GLASS is essential)\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "3. Leave undisturbed at room temperature for exactly 20 minutes\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "4. Tilt the tube — if blood does NOT clot → DEFIBRINATION\n\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "Interpretation:\n", options: { bold: true, fontSize: 12, breakLine: true } },
{ text: "✓ Clotted = NORMAL (no coagulopathy)\n", options: { fontSize: 11.5, breakLine: true, color: C.teal } },
{ text: "✗ Non-clotting = Viperid envenomation → Give ASV\n\n", options: { fontSize: 11.5, breakLine: true, color: C.red } },
{ text: "Post-ASV Monitoring:\n", options: { bold: true, fontSize: 12, breakLine: true } },
{ text: "Repeat every 6 hours until clotting is restored. Late recurrence of envenomation possible — observe 3–5 days.", options: { fontSize: 11 } },
],
"Source: Pye's Surgical Handicraft 22nd Ed | Park's PSM | Goldman-Cecil Medicine"
);
// ── SECTION 9: Quick Reference Summary Table ───────────────────
sectionDivider("📋", "8", "Quick Reference Summary", "The Big Four — India at a Glance");
comparisonTable(
"India's BIG FOUR — Rapid Identification & Management", "📋", C.darkGreen,
["Snake", "Identification Clue", "Key Symptom", "Treatment Priority"],
[
["Indian Cobra\n(Naja naja)", "Hood with spectacle mark; expands when threatened", "Ptosis → descending paralysis; local swelling possible", "ASV + neostigmine/atropine; ventilatory support"],
["Indian Krait\n(B. caeruleus)", "Black/white crossbands; painless bite; nocturnal", "PAINLESS bite; absent local swelling; respiratory arrest at night", "ASV (limited effect); mechanical ventilation often needed for days"],
["Russell's Viper\n(D. russelii)", "Chain of dark oval spots; loud hissing", "Severe pain, DIC, AKI, bilateral ptosis (India)", "ASV; dialysis for AKI; NO FFP for coagulopathy"],
["Saw-Scaled Viper\n(E. carinatus)", "Small, rasping sound from scales; dry/rocky habitat", "Persistent bleeding from bite; gum bleeding; DIC", "ASV; repeat until 20WBCT normalizes every 6h"],
]
);
// ── Final Summary Flashcard ────────────────────────────────────
flashcard(
C.darkGreen, C.offWhite,
"What is the MNEMONIC for snake bite FIRST AID in India?",
"💡",
[
{ text: "Remember: 'REST A MOMENT'\n\n", options: { bold: true, fontSize: 13, breakLine: true, color: C.darkGreen } },
{ text: "R — REASSURE patient (70% bites non-venomous)\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "E — EXAMINE for fang marks, swelling, signs of envenomation\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "S — SPLINT and IMMOBILIZE the bitten limb\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "T — TRANSPORT urgently, keep patient still\n\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "A — AVOID tourniquets, incisions, suction, ice, alcohol\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "M — MONITOR vitals, urine output, 20WBCT\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "O — OXYGEN + airway if paralysis develops\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "M — MONITOR response to antivenom (ASV)\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "E — EPINEPHRINE ready for antivenom reactions\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "N — NEOSTIGMINE + atropine for cobra ptosis/paralysis\n", options: { fontSize: 11.5, breakLine: true } },
{ text: "T — TRANSFER if not improving after antivenom", options: { fontSize: 11.5 } },
],
"India National Snake Bite Protocol 2007 | Park's PSM | Pye's Surgical Handicraft"
);
// ── End slide ──────────────────────────────────────────────────
{
let sl = pres.addSlide();
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 2.3, w: 10, h: 0.1, fill: { color: C.accentGold } });
sl.addText("🐍", { x: 4.1, y: 0.4, w: 1.8, h: 1.5, fontSize: 60, align: "center" });
sl.addText("Snake Bite Management — India", { x: 1, y: 1.95, w: 8, h: 0.7, fontSize: 22, bold: true, color: C.white, align: "center", margin: 0 });
sl.addText("Sources:", { x: 1, y: 2.8, w: 8, h: 0.45, fontSize: 14, bold: true, color: C.accentGold, align: "center", margin: 0 });
sl.addText([
{ text: "1. Park's Textbook of Preventive & Social Medicine (23rd Ed)\n", options: { breakLine: true } },
{ text: "2. Pye's Surgical Handicraft, 22nd Edition\n", options: { breakLine: true } },
{ text: "3. Goldman-Cecil Medicine (International Edition)\n", options: { breakLine: true } },
{ text: "4. India National Snake Bite Protocol (Government of India, 2007)", options: {} },
], { x: 1, y: 3.3, w: 8, h: 1.6, fontSize: 12, color: C.lightMint, align: "center", valign: "middle", margin: 0 });
}
// ── Write file ─────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/snakebite-flashcards/SnakeBite_India_Flashcards.pptx" })
.then(() => console.log("Done: SnakeBite_India_Flashcards.pptx"))
.catch(err => console.error("Error:", err));
cd /home/daytona/workspace/snakebite-flashcards && node generate.js 2>&1
ls -lh /home/daytona/workspace/snakebite-flashcards/
SnakeBite India Flashcards
Presentation · PPTX
| Snake | Key ID Feature |
|---|---|
| Indian Cobra (Naja naja) | Spectacle mark on hood; expands when threatened |
| Indian Krait (Bungarus caeruleus) | Black/white crossbands; painless bite; nocturnal |
| Russell's Viper (Daboia russelii) | Chain of dark oval spots; loud hissing |
| Saw-Scaled Viper (Echis carinatus) | Small; rasping sound from keeled scales |