~/snakebite-ppt/create_ppt.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
pres.title = 'Snake Bite Management';
pres.author = 'Medical Education';
// Color palette
const DARK_GREEN = "1B4332";
const MID_GREEN = "2D6A4F";
const LIGHT_GREEN= "52B788";
const ACCENT = "D4A017"; // gold/yellow accent
const WHITE = "FFFFFF";
const LIGHT_BG = "F0FAF4";
const TEXT_DARK = "1B2E22";
const RED = "C0392B";
// ─── Helper: slide with dark header bar ───────────────────────────────────────
function titleSlide(pres, title, subtitle) {
let s = pres.addSlide();
// Full dark background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_GREEN } });
// Gold accent strip
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.5, w: 10, h: 0.2, fill: { color: ACCENT } });
s.addText(title, {
x: 0.5, y: 1.5, w: 9, h: 1.5,
fontSize: 40, bold: true, color: WHITE, align: "center", fontFace: "Calibri"
});
if (subtitle) {
s.addText(subtitle, {
x: 0.5, y: 3.1, w: 9, h: 0.7,
fontSize: 18, color: LIGHT_GREEN, align: "center", fontFace: "Calibri", italic: true
});
}
s.addText("Snake Bite Management", {
x: 0.5, y: 5.1, w: 9, h: 0.4,
fontSize: 11, color: ACCENT, align: "center", fontFace: "Calibri"
});
return s;
}
// ─── Helper: content slide ─────────────────────────────────────────────────────
function contentSlide(pres, title, bullets, opts = {}) {
let s = pres.addSlide();
// Light background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: LIGHT_BG } });
// Header bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: MID_GREEN } });
// Gold left accent
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: ACCENT } });
// Title
s.addText(title, {
x: 0.25, y: 0.12, w: 9.5, h: 0.76,
fontSize: 22, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri", margin: 4
});
// Body bullets
let items = bullets.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < bullets.length - 1, fontSize: 16, color: TEXT_DARK, fontFace: "Calibri" }
}));
s.addText(items, {
x: 0.5, y: 1.15, w: 9, h: 4.2,
valign: "top", lineSpacingMultiple: 1.35
});
return s;
}
// ─── Helper: two-column slide ──────────────────────────────────────────────────
function twoColSlide(pres, title, leftTitle, leftItems, rightTitle, rightItems) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: LIGHT_BG } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: MID_GREEN } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: ACCENT } });
s.addText(title, {
x: 0.25, y: 0.12, w: 9.5, h: 0.76,
fontSize: 22, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri", margin: 4
});
// Divider
s.addShape(pres.ShapeType.rect, { x: 5.05, y: 1.1, w: 0.05, h: 4.3, fill: { color: LIGHT_GREEN } });
// Left column
s.addText(leftTitle, { x: 0.3, y: 1.1, w: 4.6, h: 0.4, fontSize: 14, bold: true, color: MID_GREEN, fontFace: "Calibri" });
let leftBullets = leftItems.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < leftItems.length - 1, fontSize: 14, color: TEXT_DARK, fontFace: "Calibri" }
}));
s.addText(leftBullets, { x: 0.3, y: 1.55, w: 4.6, h: 3.8, valign: "top", lineSpacingMultiple: 1.3 });
// Right column
s.addText(rightTitle, { x: 5.25, y: 1.1, w: 4.5, h: 0.4, fontSize: 14, bold: true, color: MID_GREEN, fontFace: "Calibri" });
let rightBullets = rightItems.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < rightItems.length - 1, fontSize: 14, color: TEXT_DARK, fontFace: "Calibri" }
}));
s.addText(rightBullets, { x: 5.25, y: 1.55, w: 4.5, h: 3.8, valign: "top", lineSpacingMultiple: 1.3 });
return s;
}
// ─── Helper: highlight/alert slide ────────────────────────────────────────────
function alertSlide(pres, title, items, color) {
let s = pres.addSlide();
const bg = color || RED;
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "FFF5F5" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: bg } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: bg } });
s.addText(title, {
x: 0.25, y: 0.12, w: 9.5, h: 0.76,
fontSize: 22, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri", margin: 4
});
let bulletItems = items.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < items.length - 1, fontSize: 16, color: TEXT_DARK, fontFace: "Calibri" }
}));
s.addText(bulletItems, {
x: 0.5, y: 1.15, w: 9, h: 4.2,
valign: "top", lineSpacingMultiple: 1.4
});
return s;
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDES
// ══════════════════════════════════════════════════════════════════════════════
// Slide 1 – Title
titleSlide(pres, "Snake Bite Management", "Emergency Diagnosis & Treatment Guide");
// Slide 2 – Overview / Contents
contentSlide(pres, "Overview", [
"1. Introduction & Epidemiology",
"2. Types of Venomous Snakes",
"3. Pathophysiology of Envenomation",
"4. Clinical Features",
"5. Severity Classification",
"6. First Aid – Do's & Don'ts",
"7. Hospital Assessment",
"8. Investigations",
"9. Anti-Snake Venom (ASV) Therapy",
"10. Supportive & Specific Treatment",
"11. Complications & Discharge",
"12. Prevention & Public Health"
]);
// Slide 3 – Epidemiology
contentSlide(pres, "Epidemiology & Global Burden", [
"~5.4 million snake bites occur worldwide every year",
"~2.7 million envenomations annually",
"~81,000 – 138,000 deaths per year globally",
"India accounts for ~50,000+ deaths annually — highest in the world",
"Sub-Saharan Africa and South/Southeast Asia are most affected",
"Rural agricultural workers and children are highest-risk groups",
"Classified as a Neglected Tropical Disease (NTD) by WHO since 2017",
"Under-reporting is a major challenge in low-income settings"
]);
// Slide 4 – Types of Venomous Snakes (two-column)
twoColSlide(pres,
"Common Venomous Snakes",
"India – Big Four",
[
"Indian Cobra (Naja naja)",
"Russell's Viper (Daboia russelii)",
"Common Krait (Bungarus caeruleus)",
"Saw-Scaled Viper (Echis carinatus)",
"Also: King Cobra, Hump-nosed Pit Viper"
],
"Global Classification",
[
"Elapidae – Cobras, Kraits, Mambas, Coral snakes",
"Viperidae – Vipers, Rattlesnakes, Pit vipers",
"Hydrophiidae – Sea snakes",
"Colubridae – Mostly non-venomous; some rear-fanged",
"500+ species capable of harming humans"
]
);
// Slide 5 – Pathophysiology
contentSlide(pres, "Pathophysiology of Envenomation", [
"Venom is a complex mixture of proteins, enzymes, and peptides",
"Cytotoxins (Vipers): tissue necrosis, local swelling, coagulopathy",
"Neurotoxins (Elapids/Kraits): block neuromuscular junction → paralysis",
"Hemotoxins: consume clotting factors → disseminated intravascular coagulation (DIC)",
"Myotoxins (Sea snakes, some vipers): rhabdomyolysis → renal failure",
"Cardiotoxins: direct myocardial depression, arrhythmias",
"Local: phospholipase A₂ causes cell membrane destruction",
"Systemic spread via lymphatics → bloodstream within minutes"
]);
// Slide 6 – Clinical Features (two-column)
twoColSlide(pres,
"Clinical Features",
"Local Effects",
[
"Pain and burning at bite site",
"Swelling and erythema (within minutes)",
"Blistering and tissue necrosis (cytotoxic)",
"Fang marks (may be absent in Krait bites)",
"Lymphangitis and lymphadenopathy",
"Compartment syndrome (severe cases)"
],
"Systemic Effects",
[
"Neurotoxic: ptosis, diplopia, dysarthria, respiratory paralysis",
"Coagulopathic: bleeding gums, hematemesis, haematuria",
"Cardiovascular: hypotension, arrhythmia, shock",
"Renal: oliguria, haematuria → AKI",
"Myotoxic: myalgia, myoglobinuria, dark urine",
"General: nausea, vomiting, abdominal pain"
]
);
// Slide 7 – Severity Classification
contentSlide(pres, "Severity Classification", [
"Grade 0 – Dry bite: Fang marks only, no envenomation symptoms",
"Grade 1 – Mild: Local swelling/pain, no systemic signs",
"Grade 2 – Moderate: Local swelling >5 cm from bite, mild systemic signs",
"Grade 3 – Severe: Extensive local effects + significant systemic involvement",
"Grade 4 – Critical: Neurotoxicity, coagulopathy, haemodynamic instability",
"Neurotoxic severity – FOUR-point scale: pre-synaptic vs post-synaptic",
"20-Minute Whole Blood Clotting Test (20WBCT): key bedside tool for viper bites",
"Severity guides ASV dosing and ICU admission decisions"
]);
// Slide 8 – First Aid DO's
contentSlide(pres, "First Aid – What TO DO", [
"Stay calm and reassure the patient — panic accelerates venom spread",
"Immobilize the bitten limb — splint and keep at heart level",
"Remove rings, watches, tight clothing near bite site",
"Apply Pressure Immobilization Bandage (PIB) for Elapid bites (NOT vipers)",
"Mark the edge of swelling with pen and note time",
"Carry / transport the patient — minimize walking",
"Transport urgently to nearest hospital with ASV",
"Note snake appearance (color, pattern) or photograph if safe to do so",
"Ensure airway is clear during transport"
]);
// Slide 9 – First Aid DON'Ts (alert/red slide)
alertSlide(pres, "First Aid – What NOT To Do", [
"Do NOT incise, cut, or suck the wound",
"Do NOT apply a tight tourniquet (causes ischemia/gangrene)",
"Do NOT apply ice packs or immerse in cold water",
"Do NOT apply electric shock or herbal remedies",
"Do NOT give aspirin or NSAIDs (worsens bleeding)",
"Do NOT rub the bite site",
"Do NOT give alcohol, coffee, or stimulants",
"Do NOT leave the patient alone",
"Do NOT delay hospital transport to seek traditional healers"
], RED);
// Slide 10 – Hospital Assessment
contentSlide(pres, "Hospital Assessment", [
"Detailed history: time of bite, snake type, first aid given",
"Vital signs: BP, HR, RR, SpO₂, temperature",
"Neurological: ptosis, ophthalmoplegia, limb weakness, GCS",
"Local examination: swelling, necrosis, compartment pressure",
"Haemostatic assessment: 20-Minute Whole Blood Clotting Test (20WBCT)",
"Urine examination: haematuria, myoglobinuria (dark urine)",
"Signs of shock: capillary refill, JVP, skin perfusion",
"Respiratory function: peak flow, accessory muscle use, SpO₂",
"Establish IV access, monitor urine output (catheterise if needed)"
]);
// Slide 11 – Investigations
twoColSlide(pres,
"Investigations",
"Bedside / Urgent",
[
"20-Minute Whole Blood Clotting Test (20WBCT)",
"Blood glucose",
"Urine dipstick (blood, protein)",
"ECG (cardiac monitoring)",
"SpO₂ / ABG if respiratory compromise"
],
"Laboratory",
[
"CBC with platelets",
"PT, aPTT, INR, Fibrinogen, D-dimer",
"BUN, Creatinine (renal function)",
"LFT, serum electrolytes",
"Serum CPK (myotoxicity)",
"Blood group and cross-match",
"Peripheral smear (haemolysis)"
]
);
// Slide 12 – Anti-Snake Venom
contentSlide(pres, "Anti-Snake Venom (ASV) Therapy", [
"ASV is the ONLY specific treatment for systemic envenomation",
"Polyvalent ASV (India) covers Big Four snakes",
"Indications: systemic signs, neurotoxicity, coagulopathy, local necrosis, 20WBCT positive",
"Route: IV infusion (NOT IM) — dilute in 100 mL normal saline, infuse over 30–60 min",
"Initial dose: 8–10 vials (same for adults and children)",
"Repeat 20WBCT after 6 hours — if still incoagulable, repeat 8–10 vials",
"Neurotoxicity non-responding: repeat dose every 1–2 hours up to 30–50 vials",
"Monitor for anaphylaxis: adrenaline 0.5 mg SC/IM ready at bedside",
"Prophylactic: IV hydrocortisone 200 mg + pheniramine maleate 22.75 mg before ASV"
]);
// Slide 13 – ASV Reactions
alertSlide(pres, "ASV Adverse Reactions & Management", [
"Early anaphylactic reaction (within 10–180 min): urticaria, bronchospasm, hypotension",
"Pyrogenic reactions (within 1–2 h): fever, chills, rigors — due to pyrogens",
"Late serum sickness (5–14 days): fever, arthralgia, rash, lymphadenopathy",
"Management of early reactions: STOP infusion immediately",
"Give Adrenaline 0.5 mg IM (1:1000) — thigh injection",
"IV antihistamine and IV corticosteroid",
"Resume ASV at slower rate once stable",
"Late serum sickness: oral prednisolone 5 mg/kg/day × 5 days",
"Reactions do NOT contraindicate continued ASV use in life-threatening envenomation"
], "8B1A1A");
// Slide 14 – Neurotoxic Snake Bite Management
contentSlide(pres, "Management: Neurotoxic Envenomation", [
"Post-synaptic block (Cobra): may respond to neostigmine + atropine",
"Neostigmine test: 1.5–2 mg IM (adults) + atropine 0.6 mg IV — observe 1 hour",
"If pupil dilation or ptosis improves: continue neostigmine 0.5 mg IM/SC every 30 min",
"Pre-synaptic block (Krait, Mamba): neostigmine largely ineffective",
"Airway management is critical — early intubation if SpO₂ falls or swallowing impaired",
"Mechanical ventilation may be required for 1–3 weeks in Krait envenomation",
"Regular monitoring: nerve conduction, peak expiratory flow, GCS",
"Avoid sedatives and neuromuscular blockers unless intubating",
"Recovery is complete if airway maintained during paralysis phase"
]);
// Slide 15 – Haemotoxic/Viper Management
contentSlide(pres, "Management: Haemotoxic (Viper) Envenomation", [
"DIC is the hallmark — give ASV promptly to neutralize haematotoxins",
"Fresh Frozen Plasma (FFP): 15 mL/kg to replenish clotting factors (only after ASV)",
"Platelet transfusion if count <50,000/mm³ with active bleeding",
"Packed Red Blood Cells for significant anaemia (Hb <7 g/dL)",
"Cryoprecipitate if fibrinogen <1 g/L",
"Strict IV site hemostasis — avoid IM injections",
"Wound care: debridement of necrotic tissue; do NOT close wounds primarily",
"Fasciotomy only if intracompartmental pressure >30 mmHg confirmed",
"Monitor urine output hourly — target >0.5 mL/kg/h"
]);
// Slide 16 – Renal Failure Management
contentSlide(pres, "Management: Acute Kidney Injury (AKI)", [
"AKI occurs in viper bites (haemotoxic), sea snake bites (myotoxic), rarely Krait",
"Mechanism: haemoglobinaemia, myoglobinuria, DIC, hypotension",
"Early and aggressive IV fluid resuscitation to maintain urine output",
"IV Sodium Bicarbonate: alkalinize urine to prevent myoglobin tubular deposition",
"Monitor serum creatinine, BUN, electrolytes every 6–12 hours",
"Indications for dialysis: oliguria/anuria, rising creatinine, hyperkalemia, fluid overload",
"Peritoneal dialysis or haemodialysis — both effective",
"Dialysis may be required for weeks; renal recovery is usually complete",
"Avoid nephrotoxic drugs: NSAIDs, aminoglycosides, contrast agents"
]);
// Slide 17 – Wound Care & Local Treatment
twoColSlide(pres,
"Wound & Local Treatment",
"Wound Care",
[
"Clean wound with antiseptic solution",
"Leave bite wound open (do NOT suture)",
"Debride necrotic tissue after 3–5 days",
"Skin grafting may be needed post-necrosis",
"Tetanus prophylaxis (toxoid/TIG)",
"Antibiotics only if secondary infection signs",
"Amoxicillin-clavulanate or metronidazole if anaerobic infection"
],
"Compartment Syndrome",
[
"Tense swelling + pain on passive stretch",
"Compartment pressure >30 mmHg",
"Ensure adequate ASV given first",
"Fasciotomy as last resort",
"Do NOT fasciotomy without ASV (worsens bleeding)",
"Limb elevation and physiotherapy post-treatment"
]
);
// Slide 18 – Special Situations
contentSlide(pres, "Special Situations & Complications", [
"Pregnancy: ASV is safe — treat as normal; fetal monitoring required",
"Children: same ASV dose as adults (venom amount is fixed)",
"Eye exposure (spitting cobra): irrigate with large volumes of water; no ASV needed",
"Sea snake bite: myoglobinuria, AKI; specific sea snake antivenom preferred",
"Dry bite: observe for 12–24 h before discharge; 20WBCT at 0, 6, 12 h",
"Secondary infections: Pseudomonas, Staphylococcus, anaerobes",
"Psychological sequelae: PTSD, fear — address with counseling",
"Long-term: limb deformity, chronic renal disease, skin scarring possible"
]);
// Slide 19 – Prevention
contentSlide(pres, "Prevention & Public Health Measures", [
"Wear footwear and protective clothing in snake-prone areas",
"Use a torch/flashlight when walking at night",
"Do not put hands/feet in unseen areas (logs, rocks, holes)",
"Clear bushes, debris, and rodent burrows around homes",
"Sleep on raised beds with tucked-in mosquito nets",
"Community education on first aid and NOT using harmful remedies",
"Training community health workers to administer ASV in remote areas",
"Ensure ASV supply chain reaches rural primary health centers",
"WHO 2030 target: reduce snakebite deaths and disabilities by 50%",
"National programs in India: NVBDCP snakebite protocol"
]);
// Slide 20 – Summary / Key Messages (dark closing slide)
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_GREEN } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.6, w: 10, h: 0.15, fill: { color: ACCENT } });
s.addText("Key Takeaways", {
x: 0.5, y: 0.3, w: 9, h: 0.7,
fontSize: 26, bold: true, color: ACCENT, align: "center", fontFace: "Calibri"
});
const keys = [
"Immobilize and transport — time to ASV saves lives",
"20WBCT is the single most important bedside test for viper envenomation",
"ASV via IV infusion is the only definitive treatment",
"Early airway management prevents death in neurotoxic bites",
"Do NOT tourniquet, incise, or suck the wound",
"Monitor for ASV reactions — adrenaline must be at bedside",
"AKI is common with vipers — aggressive fluids and early dialysis",
"Prevention, community education, and ASV access save the most lives"
];
let items = keys.map((k, i) => ({
text: "✓ " + k,
options: { breakLine: i < keys.length - 1, fontSize: 15, color: WHITE, fontFace: "Calibri" }
}));
s.addText(items, {
x: 0.7, y: 1.1, w: 8.6, h: 4.1,
valign: "top", lineSpacingMultiple: 1.4
});
}
// ─── Write file ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/snakebite-ppt/Snake_Bite_Management.pptx" })
.then(() => console.log("PPT created successfully!"))
.catch(e => { console.error("Error:", e); process.exit(1); });