Give me a flowchart for management of snake bite case with photo and
snakebite management flowchart clinical guidelines WHO 2024
snakebite clinical photos fang marks local swelling necrosis envenomation signs
Medical flowchart for snakebite management. Clean clinical flowchart with boxes and arrows. Starting from top: "SNAKEBITE" box → "Prehospital First Aid" (keep calm, immobilize limb, remove jewelry, pressure immobilization bandage for neurotoxic snakes, do NOT cut/suck/tourniquet) → "Transport to Hospital" → "Emergency Assessment: ABCs, Vital Signs, History" → Decision diamond "Evidence of Envenomation?" → YES branch: "Signs present: Local swelling, fang marks, systemic symptoms" → "Investigations: CBC, coagulation profile, renal function, LFTs, urine for blood, ECG" → Decision "Severity grading: Mild/Moderate/Severe?" → three branches (Mild: observe, Moderate: antivenom, Severe: ICU + antivenom) → "Antivenom Administration" → "Monitor for reaction" → "Ongoing supportive care" and NO branch from envenomation: "Observe 6-24 hours, tetanus prophylaxis, wound care, discharge if stable". Professional medical blue and white color scheme.






Note: PIB is contraindicated for Crotalid (pit viper) bites in the US because it concentrates venom locally and increases necrosis. It is only recommended for neurotoxic species.
| Action | Details |
|---|---|
| ABCs | Airway, Breathing, Circulation first |
| IV access | Two large-bore IVs |
| Vital signs | Record and repeat at intervals |
| History | Time of bite, snake description, symptoms onset |
| Wound exam | Measure distance between fang marks (indicates snake size), clean wound gently |
| Mark swelling | Draw outline of ecchymosis/edema with time and date on skin |
| Tetanus | Administer tetanus toxoid |
| Test | Reason |
|---|---|
| CBC + platelet count | Thrombocytopenia, DIC |
| PT, PTT, INR, Fibrinogen | Coagulopathy (up to 30% of Crotalid bites have abnormal coags) |
| Creatinine, BUN | Nephrotoxin-induced AKI, myoglobinuria |
| CPK | Myotoxicity |
| LFTs | Hepatotoxicity |
| Urinalysis | Hematuria, myoglobinuria |
| ECG | Arrhythmia, cardiac monitoring |
| Venom detection kit | Swab wound (Australia/PNG only - do NOT wash wound if kit available) |
| Grade | Features | Management |
|---|---|---|
| Grade 0 | Fang marks only, no envenomation | Observe 6-24 hrs, wound care, discharge |
| Grade 1 - Minimal | Fang marks + pain, 1-5 inches edema/erythema within 12h, no systemic signs | Monitor, possible antivenom |
| Grade 2 - Moderate | Fang marks, edema >12 inches, mild systemic signs (nausea, vomiting, mild coagulopathy) | Antivenom, admit |
| Grade 3 - Severe | Severe swelling, systemic toxicity (hypotension, respiratory failure, DIC, neurotoxicity) | ICU, antivenom, aggressive support |
| Complication | Treatment |
|---|---|
| Airway compromise / neurotoxicity | Elective intubation, mechanical ventilation |
| Acute renal failure | IV fluids, dialysis if severe |
| DIC / coagulopathy | Antivenom first; blood products only if active clinical bleeding |
| Compartment syndrome | Surgical/pediatric surgery consult; fasciotomy if confirmed |
| Wound necrosis | Wound care, surgical debridement |
| Cardiac arrhythmia | Continuous monitoring, ACLS |
| Finding | Action |
|---|---|
| No envenomation after 6-24h observation | Discharge in daylight hours with return precautions |
| Any evidence of envenomation | Admit for minimum 24h monitored bed |
| Severe envenomation / neurotoxicity | ICU admission |
| All envenomed children | Admit regardless of severity |
SNAKEBITE SCENE
|
v
Calm + Immobilize + Remove jewelry + PIB (neurotoxic) + Transport
|
v
ER: ABCs + IV access + Vitals + History + Mark swelling
|
v
Labs: CBC, Coags, Renal, CPK, Urinalysis + ECG + Tetanus
|
v
Envenomation present? ────NO────> Observe 6-24h → Discharge
|YES
v
Grade severity (0-3)
|
├── Grade 0-1: Monitor ± antivenom
├── Grade 2: Antivenom + Admit
└── Grade 3: ICU + Antivenom + Ventilator/Dialysis as needed
|
v
Monitor: Repeat labs, serial marking, watch for reaction
|
v
Improving? → Step down → Discharge with follow-up
Worsening? → Repeat antivenom dose
Create a PDF reference card for field first aid and snakebite symptoms
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /home/daytona/workspace/snakebite-refcard && python3 -c "import reportl…
Give the treatment scenario according to Indian conditionsfor the 4 common snake
India Big Four snakes Russell's viper cobra krait saw-scaled viper treatment guidelines 2024
India snakebite treatment protocol antivenom dose Russell viper krait cobra 20WBCT VIPEREX
https://www.sctimst.ac.in/Post-flood-Management/General-Heal…
common krait bite India clinical features nocturnal ascending paralysis neostigmine atropine treatment
Russell viper India clinical features hemotoxicity AKI DIC treatment antivenom vials 20WBCT protocol


| Feature | Indian Cobra (Naja naja) | Common Krait (Bungarus caeruleus) | Russell's Viper (Daboia russelii) | Saw-Scaled Viper (Echis carinatus) |
|---|---|---|---|---|
| Venom type | Neurotoxic + cytotoxic | Neurotoxic (pre-synaptic) | Vasculotoxic + neurotoxic* | Vasculotoxic (hemotoxic) |
| Local pain/swelling | YES (marked) | NO (minimal/absent) | YES (severe) | YES (moderate) |
| Neurological signs | YES (ptosis, paralysis) | YES (delayed, severe) | Regional (South India) | NO |
| Hemostatic abnormality | NO | May occur (rare) | YES (DIC, bleeding) | YES (coagulopathy) |
| Renal failure (AKI) | NO | NO | YES (common) | NO |
| Response to neostigmine | YES (good) | +/- (partial/poor) | NO | NO |
| Response to ASV | YES | YES | YES | YES |
| 20WBCT useful? | No | No | YES (key test) | YES |
Critical point: Krait acts at pre-synaptic nerve terminals → causes irreversible neurotransmitter depletion → poor response to neostigmine (unlike cobra)
After initial dose, NO additional ASV until 6-hour WBCT. If WBCT >20 min at 6h → repeat 5-10 vials. Continue 6-hourly until clotting restored.
DO NOT use heparin in Russell's viper DIC - trials have shown no benefit and increased harm
In Rajasthan, Sochurek's saw-scaled viper (Echis carinatus sochureki) may show reduced response to standard polyvalent ASV - higher doses may be needed
1. Draw 2 mL fresh venous blood into a CLEAN glass test tube
2. Leave undisturbed for 20 minutes at room temperature
3. Tilt the tube at 20 minutes:
- Blood clotted = NORMAL (no viper venom)
- Blood still liquid (no clot) = ABNORMAL → VIPER ENVENOMATION
4. Repeat at 6 hours after ASV to guide repeat dosing
Plastic tubes CANNOT be used - venous glass tube is required for activation of clotting cascade
| Snake | Initial ASV Dose | Repeat Dosing | Max Dose | Key Monitoring |
|---|---|---|---|---|
| Cobra | 8-10 vials IV | Not routinely needed | ~10-15 vials | Neostigmine response, ABG |
| Krait | 8-10 vials IV | Up to 20 vials total | ~20 vials | Ventilation, neostigmine test |
| Russell's Viper | 10 vials IV | 5-10 vials q6h if WBCT abnormal | 30 vials | 6-hourly WBCT, urine output |
| Saw-Scaled Viper | 5-8 vials IV | 5 vials q6h if WBCT abnormal | ~20-25 vials | 6-hourly WBCT |
Patient presents with snakebite
|
┌────────┴────────┐
Local features? No local features
(swelling/necrosis) (sleeping on floor at night)
| |
↓ ↓
Viper likely KRAIT likely
| → ASV + Ventilate
|
20WBCT at 20 min
|
┌──┴──┐
Non-clotting Clotting normally
| |
VIPER |
| Neurological features?
| |
↓ ┌──┴──┐
Russell's viper Yes No
or Saw-scaled COBRA Dry bite /
| → ASV + Non-venomous
↓ Neostigmine → Observe
ASV 10 vials 24 hours
Repeat WBCT 6h
AKI monitoring
Dialysis if needed
| Pitfall | Correction |
|---|---|
| Giving tourniquet | STOP - causes limb ischemia; use PIB for neurotoxic bites only |
| Traditional healer before hospital - herbs, incisions, sucking | Wastes time; increases wound infection; does not neutralize venom |
| Not identifying krait bite at night - "I was sleeping, nothing bit me" | Always suspect krait if nocturnal onset of abdominal cramps + ptosis |
| Stopping ASV after 10 vials | Repeat WBCT at 6h - Russell's viper may need up to 30 vials |
| Not checking renal function | Russell's viper causes AKI even with adequate ASV; monitor urine output |
| Giving neostigmine for krait | Limited utility in pre-synaptic toxin; ventilator is the priority |
| Assuming polyvalent ASV covers all snakes | Hump-nosed pit viper and Sochurek's saw-scaled viper may not respond |
Create a visual flowchart comparing neurotoxic vs hemotoxic snakebite management
Professional medical split-panel comparison flowchart for snakebite management. Two-column layout side by side. Left column has a green header "NEUROTOXIC SNAKEBITE" with cobra and krait icons. Right column has a red header "HEMOTOXIC SNAKEBITE" with Russell's viper and saw-scaled viper icons. Each column flows top to bottom with connected boxes and arrows. Left column boxes: "Snakes: Cobra (Naja naja) / Krait (Bungarus caeruleus)" → "Venom Mechanism: Post-synaptic (Cobra) / Pre-synaptic (Krait) Acetylcholine blockade" → "Clinical Features: Ptosis, Diplopia, Dysarthria, Dysphagia, Dyspnea, Paralysis | Cobra: local swelling | Krait: NO local swelling" → "20WBCT: NORMAL (clots normally)" → "ASV: 8-10 vials IV polyvalent" → "Neostigmine Test: Atropine 0.6mg + Neostigmine 1.5mg IV | Response = Cobra | No response = Krait" → "Cobra: Continue neostigmine 0.5mg q30min" → "Krait: Calcium gluconate IV + VENTILATOR" → "Monitor: ABG, SpO2, Respiratory rate" → "Discharge when neurology recovered". Right column boxes: "Snakes: Russell's Viper (Daboia russelii) / Saw-Scaled Viper (Echis carinatus)" → "Venom Mechanism: Phospholipases, Proteases, Coagulation factor destruction, Nephrotoxins" → "Clinical Features: Gingival bleeding, Bleeding from IV sites, Ecchymosis, DIC | Russell's: AKI, Shock | Saw-Scaled: NO renal failure" → "20WBCT: ABNORMAL - non-clotting (key test)" → "ASV: Russell's 10 vials IV / Saw-scaled 5-8 vials IV" → "Repeat 20WBCT at 6 hours" → "Still abnormal: Repeat 5-10 vials q6h (max 30 vials Russell's)" → "Russell's Viper: Monitor urine output / Dialysis if AKI" → "Blood products ONLY if active clinical bleeding" → "Discharge when WBCT normal + stable renal function". Center dividing column shows shared steps: "ALL BITES: ABC assessment, IV access, Vitals, Tetanus, Immobilize limb, Transport". Clean clinical design, white background, green and red color coding, professional medical typography.
mkdir -p /home/daytona/workspace/snakebite-refcard && python3 -c "import reportl…
~/snakebite-refcard/build_pdf.py
#!/usr/bin/env python3
"""
Snakebite Neurotoxic vs Hemotoxic Management - PDF Reference Card
"""
import urllib.request
import os
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, Image, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus.flowables import BalancedColumns
OUT = "/home/daytona/workspace/snakebite-refcard/Neurotoxic_vs_Hemotoxic_Snakebite.pdf"
FLOWCHART_URL = "https://cdn.orris.care/image-gen/7fea14714236480c9603e75c08512a97.png"
FLOWCHART_LOCAL = "/home/daytona/workspace/snakebite-refcard/flowchart.png"
# Download flowchart image
print("Downloading flowchart image...")
urllib.request.urlretrieve(FLOWCHART_URL, FLOWCHART_LOCAL)
print(f"Image saved: {os.path.getsize(FLOWCHART_LOCAL)} bytes")
# ── Colour palette ─────────────────────────────────────────────────────────────
C_DARK = colors.HexColor("#1a1a2e")
C_NEURO_BG = colors.HexColor("#1b4332") # deep green
C_NEURO_LT = colors.HexColor("#d8f3dc") # light green
C_HEMO_BG = colors.HexColor("#7b1d1d") # deep red
C_HEMO_LT = colors.HexColor("#fde8e8") # light red
C_SHARED_BG = colors.HexColor("#1a3a5c") # deep blue
C_SHARED_LT = colors.HexColor("#dbeafe") # light blue
C_WARN = colors.HexColor("#7c2d12")
C_WARN_LT = colors.HexColor("#fff7ed")
C_GOLD = colors.HexColor("#b45309")
C_WHITE = colors.white
C_GRAY_LT = colors.HexColor("#f8fafc")
C_GRAY_BD = colors.HexColor("#cbd5e1")
# ── Page setup ─────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUT,
pagesize=A4,
leftMargin=1.2*cm, rightMargin=1.2*cm,
topMargin=1.2*cm, bottomMargin=1.2*cm,
title="Neurotoxic vs Hemotoxic Snakebite Management",
author="Orris Medical Reference",
)
W, H = A4
CW = W - 2.4*cm # usable content width
styles = getSampleStyleSheet()
def sty(name="Normal", **kw):
return ParagraphStyle(name, parent=styles[name], **kw)
title_sty = sty("Heading1", fontSize=17, textColor=C_WHITE, alignment=TA_CENTER,
spaceAfter=2, spaceBefore=0, leading=20, fontName="Helvetica-Bold")
sub_sty = sty("Normal", fontSize=8.5, textColor=C_WHITE, alignment=TA_CENTER,
spaceAfter=0, leading=11)
h2_neuro = sty("Normal", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=14)
h2_hemo = sty("Normal", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=14)
h2_blue = sty("Normal", fontSize=10, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=13)
body = sty("Normal", fontSize=7.8, leading=11, textColor=C_DARK)
body_sm = sty("Normal", fontSize=7.2, leading=10.5, textColor=C_DARK)
bold_sm = sty("Normal", fontSize=7.8, leading=11, textColor=C_DARK, fontName="Helvetica-Bold")
warn_sty = sty("Normal", fontSize=7.5, leading=11, textColor=C_WARN, fontName="Helvetica-Bold")
center_body = sty("Normal", fontSize=7.5, leading=10.5, textColor=C_DARK, alignment=TA_CENTER)
label_sty = sty("Normal", fontSize=6.8, leading=9, textColor=colors.HexColor("#374151"))
story = []
# ══════════════════════════════════════════════════════════════════════════════
# TITLE BANNER
# ══════════════════════════════════════════════════════════════════════════════
title_tbl = Table(
[[Paragraph("🐍 Snakebite Management: Neurotoxic vs Hemotoxic 🐍", title_sty)],
[Paragraph("India Big Four — Clinical Reference Card | Based on MoHFW Standard Treatment Guidelines 2016", sub_sty)]],
colWidths=[CW]
)
title_tbl.setTableStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_DARK),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [6]),
]))
story.append(title_tbl)
story.append(Spacer(1, 5))
# ══════════════════════════════════════════════════════════════════════════════
# FLOWCHART IMAGE
# ══════════════════════════════════════════════════════════════════════════════
img = Image(FLOWCHART_LOCAL, width=CW, height=CW * 0.72)
story.append(img)
story.append(Spacer(1, 6))
# ══════════════════════════════════════════════════════════════════════════════
# SHARED FIRST STEPS banner
# ══════════════════════════════════════════════════════════════════════════════
shared_rows = [
[Paragraph("⬛ SHARED FIRST STEPS — ALL SNAKEBITES", h2_blue)],
[Paragraph(
"1. Keep calm, immobilize limb below heart level | "
"2. Remove jewellery & tight clothing | "
"3. Two large-bore IVs + vital signs | "
"4. Tetanus toxoid | "
"5. PIB bandage (neurotoxic bites ONLY) | "
"6. Rapid transport to hospital",
sty("Normal", fontSize=7.5, leading=10.5, textColor=C_DARK, alignment=TA_CENTER)
)],
]
shared_tbl = Table(shared_rows, colWidths=[CW])
shared_tbl.setTableStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), C_SHARED_BG),
("BACKGROUND", (0,1), (0,1), C_SHARED_LT),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("BOX", (0,0), (-1,-1), 1, C_SHARED_BG),
]))
story.append(shared_tbl)
story.append(Spacer(1, 6))
# ══════════════════════════════════════════════════════════════════════════════
# SIDE-BY-SIDE COMPARISON TABLE
# ══════════════════════════════════════════════════════════════════════════════
half = (CW - 4) / 2
def neuro_hdr(txt):
return Paragraph(txt, sty("Normal", fontSize=9, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=12))
def hemo_hdr(txt):
return Paragraph(txt, sty("Normal", fontSize=9, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=12))
def nb(txt, bold=False):
s = "Helvetica-Bold" if bold else "Helvetica"
return Paragraph(txt, sty("Normal", fontSize=7.5, leading=10.5, textColor=C_DARK, fontName=s))
def hb(txt, bold=False):
s = "Helvetica-Bold" if bold else "Helvetica"
return Paragraph(txt, sty("Normal", fontSize=7.5, leading=10.5, textColor=C_DARK, fontName=s))
rows = [
# headers
[neuro_hdr("🟢 NEUROTOXIC"), hemo_hdr("🔴 HEMOTOXIC")],
# snakes
[nb("<b>Snakes:</b> Indian Cobra (Naja naja)\nCommon Krait (Bungarus caeruleus)"),
hb("<b>Snakes:</b> Russell's Viper (Daboia russelii)\nSaw-Scaled Viper (Echis carinatus)")],
# venom mechanism
[nb("<b>Venom Mechanism:</b>\n• Cobra → Post-synaptic ACh blockade (reversible)\n• Krait → Pre-synaptic neurotransmitter depletion (irreversible)"),
hb("<b>Venom Mechanism:</b>\n• Phospholipases, proteases\n• Destruction of coagulation factors → DIC\n• Nephrotoxins (Russell's only)")],
# onset
[nb("<b>Symptom Onset:</b>\n• Cobra: 30 min – 6 hrs\n• Krait: 6 – 36 hrs (DELAYED, nocturnal)"),
hb("<b>Symptom Onset:</b>\n• Within minutes of bite\n• Rapid local swelling + bleeding")],
# local features
[nb("<b>Local Features:</b>\n• Cobra: Pain, swelling, necrosis\n• Krait: MINIMAL / NO local signs ⚠️"),
hb("<b>Local Features:</b>\n• Intense pain at bite site\n• Rapid swelling, ecchymosis\n• Blistering, necrosis")],
# systemic
[nb("<b>Systemic Features (5Ds + 2Ps):</b>\n• Dyspnea, Dysphonia, Dysarthria\n• Diplopia, Dysphagia\n• Ptosis ← EARLIEST SIGN\n• Paralysis → Respiratory failure"),
hb("<b>Systemic Features:</b>\n• Gingival / IV-site bleeding (pathognomonic)\n• Epistaxis, hemoptysis, hematuria\n• DIC, thrombocytopenia\n• Shock (Russell's)\n• AKI / oliguria (Russell's only)")],
# 20WBCT
[nb("<b>20WBCT Result:</b>\n✅ NORMAL — blood clots\n(No coagulopathy in neurotoxic bites)", bold=False),
hb("<b>20WBCT Result:</b>\n❌ ABNORMAL — blood does NOT clot\nKey bedside diagnostic test → repeat at 6h", bold=False)],
# ASV
[nb("<b>ASV Dose (Polyvalent):</b>\n• 8–10 vials IV in 100–200 mL NS\n• Infuse over 30–60 min\n• Repeat dosing rarely needed"),
hb("<b>ASV Dose (Polyvalent):</b>\n• Russell's Viper: 10 vials IV (start)\n• Saw-Scaled Viper: 5–8 vials IV (start)\n• Repeat 5–10 vials q6h if WBCT still abnormal\n• Russell's max: 30 vials total")],
# specific treatment
[nb("<b>Specific Treatment:</b>\n<b>Neostigmine-Atropine (AN test):</b>\n• Atropine 0.6 mg IV → Neostigmine 1.5 mg IV\n• Repeat neostigmine 0.5 mg q30min × 5 doses\n• Positive = ≥50% ptosis recovery in 1h\n → Continue (COBRA)\n• No response after 3 doses\n → KRAIT: give Calcium gluconate 10 mL IV q6h"),
hb("<b>Specific Treatment:</b>\n<b>Russell's Viper:</b>\n• Strict I/O monitoring (urine output hourly)\n• Dialysis if AKI develops\n• FFP / blood only if ACTIVE bleeding\n• Do NOT give heparin\n<b>Saw-Scaled Viper:</b>\n• Same as above; NO dialysis needed\n• Rajasthan variant may need higher ASV dose")],
# ventilation
[nb("<b>Ventilatory Support:</b>\n• COBRA: Elective intubation early\n (bulbar palsy or SpO2 falling)\n• KRAIT: MANDATORY ventilation\n Duration: 5–7 days or more\n Krait lesion is IRREVERSIBLE"),
hb("<b>Monitoring:</b>\n• Repeat 20WBCT at 6h post-ASV\n• Serum creatinine, BUN daily\n• CBC, coagulation daily\n• Urine output: target >0.5 mL/kg/hr\n• Watch for compartment syndrome")],
# disposition
[nb("<b>Disposition:</b>\n• All neurotoxic bites → ADMIT\n• ICU if any respiratory compromise\n• Discharge when fully recovered"),
hb("<b>Disposition:</b>\n• All viper bites → ADMIT minimum 24–48h\n• ICU if DIC, shock, or AKI\n• Discharge when WBCT normal + stable renal fx")],
]
col_styles = TableStyle([
# header row
("BACKGROUND", (0,0), (0,0), C_NEURO_BG),
("BACKGROUND", (1,0), (1,0), C_HEMO_BG),
# alternating body rows
("BACKGROUND", (0,1), (0,1), C_NEURO_LT),
("BACKGROUND", (1,1), (1,1), C_HEMO_LT),
("BACKGROUND", (0,2), (0,2), C_GRAY_LT),
("BACKGROUND", (1,2), (1,2), C_GRAY_LT),
("BACKGROUND", (0,3), (0,3), C_NEURO_LT),
("BACKGROUND", (1,3), (1,3), C_HEMO_LT),
("BACKGROUND", (0,4), (0,4), C_GRAY_LT),
("BACKGROUND", (1,4), (1,4), C_GRAY_LT),
("BACKGROUND", (0,5), (0,5), C_NEURO_LT),
("BACKGROUND", (1,5), (1,5), C_HEMO_LT),
("BACKGROUND", (0,6), (0,6), colors.HexColor("#e0f2e9")),
("BACKGROUND", (1,6), (1,6), colors.HexColor("#fee2e2")),
("BACKGROUND", (0,7), (0,7), C_NEURO_LT),
("BACKGROUND", (1,7), (1,7), C_HEMO_LT),
("BACKGROUND", (0,8), (0,8), C_GRAY_LT),
("BACKGROUND", (1,8), (1,8), C_GRAY_LT),
("BACKGROUND", (0,9), (0,9), C_NEURO_LT),
("BACKGROUND", (1,9), (1,9), C_HEMO_LT),
("BACKGROUND", (0,10), (0,10), C_GRAY_LT),
("BACKGROUND", (1,10), (1,10), C_GRAY_LT),
("BACKGROUND", (0,11), (0,11), C_NEURO_LT),
("BACKGROUND", (1,11), (1,11), C_HEMO_LT),
# grid
("GRID", (0,0), (-1,-1), 0.5, C_GRAY_BD),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "TOP"),
])
comp_tbl = Table(rows, colWidths=[half, half])
comp_tbl.setTableStyle(col_styles)
story.append(comp_tbl)
story.append(Spacer(1, 7))
# ══════════════════════════════════════════════════════════════════════════════
# 20WBCT BOX
# ══════════════════════════════════════════════════════════════════════════════
wbct_data = [[
Paragraph("🧪 20-MINUTE WHOLE BLOOD CLOTTING TEST (20WBCT) — India Bedside Standard", h2_blue),
],[
Paragraph(
"1. Draw 2 mL fresh venous blood into a CLEAN DRY GLASS tube (NOT plastic) → "
"2. Leave undisturbed at room temperature for 20 min → "
"3. Tilt tube: "
"<b>Blood clots = NORMAL</b> (neurotoxic / non-venomous) | "
"<b>Blood liquid = ABNORMAL → VIPER ENVENOMATION</b> → "
"4. Repeat at 6h post-ASV to guide re-dosing",
sty("Normal", fontSize=7.5, leading=11, textColor=C_DARK, alignment=TA_CENTER)
)
]]
wbct_tbl = Table(wbct_data, colWidths=[CW])
wbct_tbl.setTableStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), C_SHARED_BG),
("BACKGROUND", (0,1),(0,1), C_SHARED_LT),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 8),
("RIGHTPADDING", (0,0),(-1,-1), 8),
("BOX", (0,0),(-1,-1), 1, C_SHARED_BG),
]))
story.append(wbct_tbl)
story.append(Spacer(1, 6))
# ══════════════════════════════════════════════════════════════════════════════
# WARNINGS & KEY RULES
# ══════════════════════════════════════════════════════════════════════════════
warn_data = [[
Paragraph("⚠️ CRITICAL RULES & PITFALLS", sty("Normal", fontSize=9, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER))
],[
Table([
[Paragraph("❌ DO NOT apply tourniquet — causes limb ischemia", body_sm),
Paragraph("❌ DO NOT incise/suck the wound — ineffective & harmful", body_sm)],
[Paragraph("❌ DO NOT use heparin for Russell's viper DIC", body_sm),
Paragraph("❌ DO NOT repeat ASV before 6h in viper bites", body_sm)],
[Paragraph("✅ Krait: VENTILATE early — action is irreversible", sty("Normal", fontSize=7.5,
leading=10.5, textColor=colors.HexColor("#166534"), fontName="Helvetica-Bold")),
Paragraph("✅ Cobra: Neostigmine works — test and continue if positive", sty("Normal",
fontSize=7.5, leading=10.5, textColor=colors.HexColor("#166534"), fontName="Helvetica-Bold"))],
[Paragraph("✅ PIB bandage only for neurotoxic bites (Elapids)", sty("Normal", fontSize=7.5,
leading=10.5, textColor=colors.HexColor("#166534"), fontName="Helvetica-Bold")),
Paragraph("✅ Use GLASS tube for 20WBCT — plastic tubes give false normal", sty("Normal",
fontSize=7.5, leading=10.5, textColor=colors.HexColor("#166534"), fontName="Helvetica-Bold"))],
], colWidths=[half, half], style=TableStyle([
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING", (0,0),(-1,-1), 3),
("LEFTPADDING", (0,0),(-1,-1), 5),
("RIGHTPADDING", (0,0),(-1,-1), 5),
("GRID", (0,0),(-1,-1), 0.3, C_GRAY_BD),
]))
]]
warn_tbl = Table(warn_data, colWidths=[CW])
warn_tbl.setTableStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), C_WARN),
("BACKGROUND", (0,1),(0,1), C_WARN_LT),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 8),
("RIGHTPADDING", (0,0),(-1,-1), 8),
("BOX", (0,0),(-1,-1), 1, C_WARN),
]))
story.append(warn_tbl)
story.append(Spacer(1, 5))
# ══════════════════════════════════════════════════════════════════════════════
# FOOTER
# ══════════════════════════════════════════════════════════════════════════════
footer_tbl = Table([[
Paragraph(
"Sources: MoHFW Standard Treatment Guidelines for Snakebite India 2016 · "
"SCTIMST Indian Snake Bite Protocol · NHM Full Background Document · "
"Generated by Orris AI Medical Reference — July 2026",
sty("Normal", fontSize=6.5, leading=9, textColor=colors.HexColor("#6b7280"), alignment=TA_CENTER)
)
]], colWidths=[CW])
footer_tbl.setTableStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), colors.HexColor("#f3f4f6")),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING", (0,0),(-1,-1), 4),
("LEFTPADDING", (0,0),(-1,-1), 6),
("RIGHTPADDING", (0,0),(-1,-1), 6),
("BOX", (0,0),(-1,-1), 0.5, C_GRAY_BD),
]))
story.append(footer_tbl)
# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"\n✅ PDF created: {OUT}")
print(f" Size: {os.path.getsize(OUT):,} bytes")
cd /home/daytona/workspace/snakebite-refcard && python3 build_pdf.py 2>&1
python3 -c "from reportlab.platypus import Table, TableStyle; t = Table([['a']])…
cd /home/daytona/workspace/snakebite-refcard && sed -i 's/\.setTableStyle(/.setS…
~/snakebite-refcard/build_pdf.py
#!/usr/bin/env python3
"""
Snakebite Neurotoxic vs Hemotoxic Management - PDF Reference Card
"""
import urllib.request, os
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
OUT = "/home/daytona/workspace/snakebite-refcard/Neurotoxic_vs_Hemotoxic_Snakebite.pdf"
FLOWCHART_URL = "https://cdn.orris.care/image-gen/7fea14714236480c9603e75c08512a97.png"
FLOWCHART_LOCAL = "/home/daytona/workspace/snakebite-refcard/flowchart.png"
if not os.path.exists(FLOWCHART_LOCAL):
print("Downloading flowchart image...")
urllib.request.urlretrieve(FLOWCHART_URL, FLOWCHART_LOCAL)
print(f"Image: {os.path.getsize(FLOWCHART_LOCAL):,} bytes")
# Colours
C_DARK = colors.HexColor("#1a1a2e")
C_NEURO_BG = colors.HexColor("#1b4332")
C_NEURO_LT = colors.HexColor("#d8f3dc")
C_HEMO_BG = colors.HexColor("#7b1d1d")
C_HEMO_LT = colors.HexColor("#fde8e8")
C_BLUE_BG = colors.HexColor("#1a3a5c")
C_BLUE_LT = colors.HexColor("#dbeafe")
C_WARN_BG = colors.HexColor("#7c2d12")
C_WARN_LT = colors.HexColor("#fff7ed")
C_GRAY_LT = colors.HexColor("#f8fafc")
C_GRAY_BD = colors.HexColor("#cbd5e1")
C_GREEN_TXT = colors.HexColor("#166534")
C_WHITE = colors.white
W, H = A4
doc = SimpleDocTemplate(OUT, pagesize=A4,
leftMargin=1.2*cm, rightMargin=1.2*cm,
topMargin=1.2*cm, bottomMargin=1.2*cm,
title="Neurotoxic vs Hemotoxic Snakebite Management")
CW = W - 2.4*cm
half = (CW - 4) / 2
styles = getSampleStyleSheet()
def ps(name="Normal", **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
def p(txt, **kw):
return Paragraph(txt, ps(**kw))
def hdr_p(txt, bg):
return Paragraph(txt, ps(fontSize=10, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=13))
def cell(txt, bold=False, sz=7.5, color=None):
fn = "Helvetica-Bold" if bold else "Helvetica"
tc = color or C_DARK
return Paragraph(txt, ps(fontSize=sz, leading=11, textColor=tc, fontName=fn))
def mk_tbl(rows, cw, bg_pairs=None, extra_styles=None):
t = Table(rows, colWidths=cw)
base = [
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 7),
("RIGHTPADDING", (0,0),(-1,-1), 7),
("VALIGN", (0,0),(-1,-1), "TOP"),
("GRID", (0,0),(-1,-1), 0.4, C_GRAY_BD),
]
if bg_pairs:
for (r1,c1),(r2,c2), col in bg_pairs:
base.append(("BACKGROUND",(c1,r1),(c2,r2), col))
if extra_styles:
base.extend(extra_styles)
t.setStyle(TableStyle(base))
return t
story = []
# ── TITLE BANNER ──────────────────────────────────────────────────────────────
t = mk_tbl(
[[p("SNAKEBITE MANAGEMENT: NEUROTOXIC vs HEMOTOXIC",
fontSize=16, textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=20)],
[p("India Big Four | Clinical Reference Card | MoHFW Standard Treatment Guidelines 2016",
fontSize=8.5, textColor=C_WHITE, alignment=TA_CENTER, leading=12)]],
[CW],
bg_pairs=[((0,0),(0,0), C_DARK), ((1,0),(1,0), C_DARK)],
extra_styles=[("GRID",(0,0),(-1,-1),0,C_DARK)]
)
story += [t, Spacer(1,5)]
# ── FLOWCHART IMAGE ───────────────────────────────────────────────────────────
story += [Image(FLOWCHART_LOCAL, width=CW, height=CW*0.72), Spacer(1,6)]
# ── SHARED STEPS ─────────────────────────────────────────────────────────────
t = mk_tbl(
[[p("SHARED FIRST STEPS — ALL SNAKEBITES", fontSize=10, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)],
[p("1. Keep calm, immobilize limb | 2. Remove jewellery/tight clothing "
" | 3. Two large-bore IVs + vitals | 4. Tetanus toxoid "
" | 5. PIB bandage (NEUROTOXIC bites ONLY) | 6. Rapid transport",
fontSize=7.5, textColor=C_DARK, alignment=TA_CENTER, leading=11)]],
[CW],
bg_pairs=[((0,0),(0,0), C_BLUE_BG), ((1,0),(1,0), C_BLUE_LT)],
extra_styles=[("GRID",(0,0),(-1,-1),1,C_BLUE_BG)]
)
story += [t, Spacer(1,6)]
# ── COMPARISON TABLE ──────────────────────────────────────────────────────────
rows = [
# 0 headers
[p("NEUROTOXIC SNAKEBITE", fontSize=11, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER),
p("HEMOTOXIC SNAKEBITE", fontSize=11, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)],
# 1 snakes
[cell("<b>Snakes:</b> Indian Cobra (Naja naja)<br/>Common Krait (Bungarus caeruleus)"),
cell("<b>Snakes:</b> Russell's Viper (Daboia russelii)<br/>Saw-Scaled Viper (Echis carinatus)")],
# 2 venom mechanism
[cell("<b>Venom Mechanism:</b><br/>• Cobra: Post-synaptic ACh blockade (reversible)<br/>"
"• Krait: Pre-synaptic neurotransmitter depletion (IRREVERSIBLE)"),
cell("<b>Venom Mechanism:</b><br/>• Phospholipases, proteases<br/>"
"• Destruction of coagulation factors → DIC<br/>• Nephrotoxins (Russell's only)")],
# 3 onset
[cell("<b>Symptom Onset:</b><br/>• Cobra: 30 min – 6 hrs<br/>"
"• Krait: 6 – 36 hrs (DELAYED — nocturnal bite while sleeping)"),
cell("<b>Symptom Onset:</b><br/>• Within minutes of bite<br/>"
"• Rapid local swelling + systemic bleeding")],
# 4 local
[cell("<b>Local Features:</b><br/>• Cobra: Pain, swelling, necrosis (marked)<br/>"
"• Krait: MINIMAL / NO local signs ⚠️ (deceptive)"),
cell("<b>Local Features:</b><br/>• Intense pain at bite site<br/>"
"• Rapid swelling, ecchymosis, blistering, necrosis")],
# 5 systemic
[cell("<b>Systemic Features (5Ds + 2Ps):</b><br/>"
"• Dyspnea, Dysphonia, Dysarthria, Diplopia, Dysphagia<br/>"
"• Ptosis ← EARLIEST SIGN<br/>• Progressive paralysis → Respiratory failure"),
cell("<b>Systemic Features:</b><br/>"
"• Gingival bleeding, bleeding from IV sites (PATHOGNOMONIC)<br/>"
"• Epistaxis, hemoptysis, hematuria, DIC, thrombocytopenia<br/>"
"• Shock (Russell's) | AKI/oliguria (Russell's ONLY)")],
# 6 20wbct
[cell("<b>20WBCT Result:</b><br/>✅ NORMAL — blood clots<br/>(No coagulopathy in neurotoxic bites)"),
cell("<b>20WBCT Result:</b><br/>❌ ABNORMAL — blood does NOT clot<br/>"
"Key bedside diagnostic test → repeat at 6h post-ASV")],
# 7 asv
[cell("<b>ASV Dose (Polyvalent):</b><br/>• 8–10 vials IV in 100–200 mL NS over 30–60 min<br/>"
"• Repeat dosing rarely needed (no coagulopathy marker)"),
cell("<b>ASV Dose (Polyvalent):</b><br/>• Russell's Viper: 10 vials IV (starting dose)<br/>"
"• Saw-Scaled Viper: 5–8 vials IV (starting dose)<br/>"
"• Repeat 5–10 vials q6h if WBCT still abnormal<br/>"
"• Russell's maximum: 30 vials total")],
# 8 specific
[cell("<b>Neostigmine-Atropine Challenge (AN Test):</b><br/>"
"• Atropine 0.6 mg IV → Neostigmine 1.5 mg IV stat<br/>"
"• Repeat neostigmine 0.5 mg q30min × 5 doses<br/>"
"• POSITIVE (≥50% ptosis recovery in 1h) → COBRA<br/>"
" Continue AN therapy; taper at 1h, 2h, 6h, 12h<br/>"
"• NO RESPONSE after 3 doses → KRAIT<br/>"
" Calcium gluconate 10 mL IV q6h (5–7 days)"),
cell("<b>Russell's Viper Specific:</b><br/>"
"• Strict I/O: target urine output >0.5 mL/kg/hr<br/>"
"• Dialysis (HD/PD) if AKI progresses<br/>"
"• Blood products (FFP/PRBCs) ONLY for active bleeding<br/>"
"• Do NOT give heparin (no benefit, increased harm)<br/>"
"<b>Saw-Scaled Viper:</b> Same protocol; NO dialysis needed<br/>"
"Rajasthan variant may need higher ASV dose")],
# 9 ventilation
[cell("<b>Ventilatory Support:</b><br/>"
"• Cobra: Elective intubation early (bulbar palsy / falling SpO2)<br/>"
"• Krait: MANDATORY mechanical ventilation<br/>"
" Duration: 5–7 days or more (irreversible pre-synaptic lesion)<br/>"
" Ventilator alone can be lifesaving even without ASV"),
cell("<b>Ongoing Monitoring:</b><br/>"
"• 20WBCT at 6h post each ASV dose<br/>"
"• Serum creatinine, BUN daily (Russell's)<br/>"
"• CBC + coagulation panel daily<br/>"
"• Watch for compartment syndrome<br/>"
"• Serial wound marking for edema progression")],
# 10 discharge
[cell("<b>Disposition:</b><br/>• All neurotoxic bites → ADMIT<br/>"
"• ICU if any respiratory compromise<br/>"
"• Discharge when fully neurologically recovered"),
cell("<b>Disposition:</b><br/>• All viper bites → ADMIT minimum 24–48h<br/>"
"• ICU if DIC, shock, or AKI<br/>"
"• Discharge when WBCT normal + stable renal function")],
]
bg = [
((0,0),(0,0), C_NEURO_BG), ((1,0),(1,0), C_HEMO_BG),
((0,1),(0,1), C_NEURO_LT), ((1,1),(1,1), C_HEMO_LT),
((0,2),(0,2), C_GRAY_LT), ((1,2),(1,2), C_GRAY_LT),
((0,3),(0,3), C_NEURO_LT), ((1,3),(1,3), C_HEMO_LT),
((0,4),(0,4), C_GRAY_LT), ((1,4),(1,4), C_GRAY_LT),
((0,5),(0,5), C_NEURO_LT), ((1,5),(1,5), C_HEMO_LT),
((0,6),(0,6), colors.HexColor("#e0f2e9")), ((1,6),(1,6), colors.HexColor("#fee2e2")),
((0,7),(0,7), C_NEURO_LT), ((1,7),(1,7), C_HEMO_LT),
((0,8),(0,8), C_GRAY_LT), ((1,8),(1,8), C_GRAY_LT),
((0,9),(0,9), C_NEURO_LT), ((1,9),(1,9), C_HEMO_LT),
((0,10),(0,10), C_GRAY_LT),((1,10),(1,10), C_GRAY_LT),
]
bg_styles = [("BACKGROUND",(c1,r1),(c2,r2),col) for (r1,c1),(r2,c2),col in bg]
comp = Table(rows, colWidths=[half, half])
comp.setStyle(TableStyle([
*bg_styles,
("GRID", (0,0),(-1,-1), 0.5, C_GRAY_BD),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 7),
("RIGHTPADDING", (0,0),(-1,-1), 7),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
story += [comp, Spacer(1,7)]
# ── 20WBCT BOX ────────────────────────────────────────────────────────────────
t = mk_tbl(
[[p("20-MINUTE WHOLE BLOOD CLOTTING TEST (20WBCT) — India Bedside Gold Standard",
fontSize=10, textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)],
[p("1. Draw 2 mL venous blood into CLEAN DRY GLASS tube (NOT plastic) → "
"2. Leave undisturbed 20 min at room temperature → "
"3. Tilt tube: <b>Clots = NORMAL</b> (no viper venom) | "
"<b>Liquid = ABNORMAL → VIPER ENVENOMATION</b> → "
"4. Repeat at 6h post-ASV to guide re-dosing",
fontSize=7.5, textColor=C_DARK, alignment=TA_CENTER, leading=11)]],
[CW],
bg_pairs=[((0,0),(0,0), C_BLUE_BG), ((1,0),(1,0), C_BLUE_LT)],
extra_styles=[("GRID",(0,0),(-1,-1),1,C_BLUE_BG)]
)
story += [t, Spacer(1,6)]
# ── WARNINGS ─────────────────────────────────────────────────────────────────
warn_inner = Table([
[cell("❌ DO NOT apply tourniquet — causes limb ischemia",sz=7.5),
cell("❌ DO NOT incise/suck the wound — ineffective and harmful",sz=7.5)],
[cell("❌ DO NOT give heparin for Russell's viper DIC",sz=7.5),
cell("❌ DO NOT repeat ASV before 6 hours in viper bites",sz=7.5)],
[cell("✅ Krait: VENTILATE early — lesion is irreversible",sz=7.5,color=C_GREEN_TXT,bold=True),
cell("✅ Cobra: Neostigmine works — test and continue if positive",sz=7.5,color=C_GREEN_TXT,bold=True)],
[cell("✅ PIB bandage for NEUROTOXIC bites (Elapids) ONLY",sz=7.5,color=C_GREEN_TXT,bold=True),
cell("✅ Use GLASS tube for 20WBCT — plastic gives false-normal result",sz=7.5,color=C_GREEN_TXT,bold=True)],
], colWidths=[half,half])
warn_inner.setStyle(TableStyle([
("TOPPADDING",(0,0),(-1,-1),3),("BOTTOMPADDING",(0,0),(-1,-1),3),
("LEFTPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),5),
("GRID",(0,0),(-1,-1),0.3,C_GRAY_BD),
]))
t = Table(
[[p("CRITICAL RULES & PITFALLS", fontSize=10, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)],
[warn_inner]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(0,0),C_WARN_BG),
("BACKGROUND",(0,1),(0,1),C_WARN_LT),
("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8),
("BOX",(0,0),(-1,-1),1,C_WARN_BG),
]))
story += [t, Spacer(1,5)]
# ── FOOTER ────────────────────────────────────────────────────────────────────
ft = Table([[p("Sources: MoHFW Standard Treatment Guidelines for Snakebite India 2016 · "
"SCTIMST Indian Snake Bite Protocol · NHM Full Background Document · "
"Generated by Orris AI Medical Reference — July 2026",
fontSize=6.5, textColor=colors.HexColor("#6b7280"), alignment=TA_CENTER, leading=9)]],
colWidths=[CW])
ft.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1),colors.HexColor("#f3f4f6")),
("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
("LEFTPADDING",(0,0),(-1,-1),6),("RIGHTPADDING",(0,0),(-1,-1),6),
("BOX",(0,0),(-1,-1),0.5,C_GRAY_BD),
]))
story.append(ft)
doc.build(story)
print(f"\nPDF created: {OUT}")
print(f"Size: {os.path.getsize(OUT):,} bytes")
~/snakebite-refcard/build_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/snakebite-refcard/build_pdf.py'
cat > /home/daytona/workspace/snakebite-refcard/build2.py << 'PYEOF' #!/usr/bin/…

Neurotoxic vs Hemotoxic Snakebite
PDF Document · PDF
| Section | Neurotoxic (Green) | Hemotoxic (Red) |
|---|---|---|
| Snakes | Cobra, Krait | Russell's Viper, Saw-Scaled Viper |
| Key mechanism | ACh blockade (post/pre-synaptic) | Coagulation factor destruction + nephrotoxins |
| Hallmark sign | Ptosis (earliest) | Bleeding from IV sites |
| 20WBCT | NORMAL (clots) | ABNORMAL (no clot) |
| ASV dose | 8-10 vials | 10 vials (RV) / 5-8 vials (SSV) |
| Specific drug | Neostigmine + Atropine | Dialysis (RV) + blood products |
| Ventilator | Cobra: elective; Krait: mandatory | Not usually needed |
| Max ASV | ~15-20 vials | Up to 30 vials (Russell's) |
| AKI risk | None | Russell's viper only |
| Re-dosing guide | Clinical response | 6-hourly 20WBCT |
Give me the visual flowchart un which we identify the snake based on symptoms in a different 6
Clean medical diagnostic flowchart on white background. Title at top: "IDENTIFY THE SNAKE FROM SYMPTOMS". Decision tree style with diamond shapes for questions and rounded rectangles for answers. Start box: "Patient bitten by snake". First diamond: "Local swelling at bite site?" YES branch right, NO branch down. YES leads to diamond "Bleeding from gums/IV sites?" YES leads to red box "RUSSELL'S VIPER - Hemotoxic - Give ASV 10 vials + Check 20WBCT". NO from bleeding leads to diamond "Necrosis/tissue death?" YES leads to orange box "INDIAN COBRA - Neurotoxic+Cytotoxic - Give ASV 8-10 vials + Neostigmine". NO from local swelling leads to diamond "Bite occurred at night while sleeping?" YES leads to purple box "COMMON KRAIT - Pre-synaptic neurotoxic - Ventilate immediately". NO leads to diamond "DIC/coagulopathy but NO renal failure?" YES leads to brown box "SAW-SCALED VIPER - Give ASV 5-8 vials". Each final box has snake name bold, venom type, and treatment. Color coded: red for Russell's viper, green for cobra, purple for krait, brown for saw-scaled viper. Professional clinical style, clear arrows, medical typography.
Medical infographic symptom-based snake identification chart. Dark navy blue background. Title in bright yellow: "WHICH SNAKE BIT YOU? - SYMPTOM IDENTIFIER". Four large symptom pathway columns side by side. Column 1 green: Shows eye/ptosis icon, paralysis icon, local swelling icon. Label: "COBRA (Naja naja)" with symptoms listed: Ptosis earliest sign, Local swelling+necrosis, Responds to neostigmine, 20WBCT normal. Column 2 purple: Shows sleeping person icon, no swelling icon, respiratory failure icon. Label: "KRAIT (Bungarus caeruleus)" with: Nocturnal bite, NO local swelling, Delayed 6-36h onset, Pre-synaptic irreversible. Column 3 red: Shows bleeding mouth icon, kidney icon, DIC icon. Label: "RUSSELL'S VIPER (Daboia russelii)": Gingival bleeding, AKI/renal failure, Non-clotting 20WBCT, Shock. Column 4 orange: Shows coagulation icon, no kidney icon, DIC icon. Label: "SAW-SCALED VIPER (Echis carinatus)": Bleeding/DIC, NO renal failure, Non-clotting 20WBCT, Dry arid regions. Each column has the snake illustration at bottom. Bold clean medical icons. Modern clinical design.
Medical algorithm poster. Title: "SYNDROMIC APPROACH TO SNAKE IDENTIFICATION - INDIA". Clean white background with colored sections. Large central question box at top: "What are the FIRST symptoms?". Three main pathways branching down with thick colored arrows. LEFT GREEN PATH labeled "NEUROLOGICAL SYMPTOMS": Ptosis, diplopia, facial drooping, difficulty swallowing, weakness → Sub-question box: "Is there LOCAL SWELLING?" → YES box: "COBRA - post-synaptic - Give Neostigmine + ASV" → NO box: "KRAIT - pre-synaptic - VENTILATE URGENTLY". CENTER RED PATH labeled "BLEEDING SYMPTOMS": Gum bleeding, IV site oozing, non-clotting blood, purpura, ecchymosis → Sub-question: "Is there RENAL FAILURE/oliguria?" → YES: "RUSSELL'S VIPER - ASV 10 vials + Dialysis" → NO: "SAW-SCALED VIPER - ASV 5-8 vials, no dialysis". RIGHT GRAY PATH labeled "DRY BITE / UNCERTAIN": No symptoms after 6h → "Observe 24h, discharge if stable". Bottom row shows 4 snake photographs labeled with names. Professional A4 medical poster format.
Mind map style medical flowchart. White background. Central oval in dark blue: "SNAKEBITE INDIA - IDENTIFY THE SNAKE". Four color-coded branches radiating outward like a compass. NORTH branch in emerald green: "COBRA" with 5 symptom bubbles connected: "Ptosis", "Neck swelling", "Necrosis at bite", "Dysarthria", "Responds to neostigmine". EAST branch in deep purple: "KRAIT" with bubbles: "Nocturnal onset", "No local swelling", "Abdominal cramps first", "Ascending paralysis", "Irreversible - ventilate". SOUTH branch in crimson red: "RUSSELL'S VIPER" with bubbles: "Gum bleeding", "AKI", "20WBCT abnormal", "Shock", "DIC + renal failure". WEST branch in burnt orange: "SAW-SCALED VIPER" with bubbles: "Dry arid area", "Coagulopathy", "20WBCT abnormal", "NO renal failure", "Smaller snake". Between branches: KEY DIFFERENTIATOR boxes: "Neuro vs Hemotoxic?", "Renal failure present?", "Local swelling present?", "Time of bite?". Clean mind map with curved connecting lines, colored labels, modern medical design.
Clinical decision flowchart in the style of a hospital quick reference card. Light gray background. Title banner in dark green: "SNAKE IDENTIFICATION BY CLINICAL FEATURES - STEP BY STEP". Bold red subtitle: "India Big Four - 4 Questions to Identify the Snake". Numbered step boxes connected by arrows: STEP 1 yellow box: "Is 20WBCT (Whole Blood Clotting Test) NORMAL or ABNORMAL?" → NORMAL arrow right goes to STEP 2A. ABNORMAL arrow down goes to STEP 2B. STEP 2A blue box: "NEUROLOGICAL SNAKE (Elapid)" → STEP 3A: "Is there LOCAL SWELLING + NECROSIS?" → YES = "COBRA - Neostigmine + ASV + watch airway" → NO = "KRAIT - VENTILATE NOW, ASV, Calcium gluconate". STEP 2B red box: "VIPER ENVENOMATION confirmed" → STEP 3B: "Is there ACUTE KIDNEY INJURY? (rising creatinine, oliguria)" → YES = "RUSSELL'S VIPER - ASV 10 vials + Dialysis protocol" → NO = "SAW-SCALED VIPER - ASV 5-8 vials, wound care". Bottom summary table with 4 columns for each snake showing: Venom type, 20WBCT, Neostigmine response, Renal failure. Professional hospital chart style with clear numbered steps.
Colorful visual medical infographic. Title at top: "READ THE SYMPTOMS - KNOW THE SNAKE". Creative body-map approach. Central human body silhouette outline. Color coded symptom indicators pointing to body regions with snake identification. HEAD region with green arrows: "Ptosis, Diplopia, Dysarthria, Dysphagia → COBRA or KRAIT". MOUTH region with red arrows: "Gum bleeding, blood in saliva → VIPER (Russell's or Saw-scaled)". CHEST region purple arrows: "Respiratory paralysis, can't breathe → KRAIT (irreversible pre-synaptic)". ARMS/LEGS green arrows: "Ascending weakness, flaccid paralysis → NEUROTOXIC (Cobra/Krait)". BITE SITE orange arrows: "Swelling + Necrosis → COBRA / Russell's Viper" and "No swelling → KRAIT". KIDNEY area red arrows: "Oliguria, AKI → RUSSELL'S VIPER only". BLOOD icons: "Non-clotting blood (20WBCT) → VIPER". Four snake portrait boxes in corners: Cobra top-left green, Krait top-right purple, Russell's Viper bottom-left red, Saw-scaled bottom-right orange. Modern medical infographic style, bright clear colors.
Give me the visual flowchart un which we identify the snake based on symptoms in a different Page
Professional medical diagnostic flowchart on white background. Title bold at top: "IDENTIFY THE SNAKE FROM SYMPTOMS — India Big Four". Decision tree with diamond question shapes and rounded rectangle answer boxes. Flow starts top center: oval "Patient presents after snakebite". Arrow down to diamond "Local swelling + pain at bite site?". YES arrow right leads to diamond "Bleeding from gums, IV sites, non-clotting blood?". YES leads to red rounded box "RUSSELL'S VIPER — Hemotoxic + Nephrotoxic — 20WBCT abnormal, AKI, DIC, Shock". NO from bleeding diamond leads to diamond "Necrosis at site + ptosis?". YES leads to green box "INDIAN COBRA — Neuro+Cytotoxic — Local necrosis, ptosis, responds to neostigmine". NO from local swelling diamond leads to diamond "Bite at night while sleeping? Abdominal cramps on waking?". YES leads to purple box "COMMON KRAIT — Pre-synaptic Neurotoxic — No local swelling, delayed 6-36h, ventilate urgently". NO leads to diamond "Coagulopathy/DIC but NO renal failure? Dry/arid region?". YES leads to orange box "SAW-SCALED VIPER — Hemotoxic — 20WBCT abnormal, no AKI, smaller snake". Each terminal box shows: snake name large bold, venom type italic, key features bullet list. Color-coded arrows. Clean clinical typography. A4 portrait format.
Medical infographic poster, dark navy blue background, bright white and yellow text. Title large at top in yellow: "WHICH SNAKE BIT YOU? READ YOUR SYMPTOMS". Subtitle white: "India Big Four — Symptom Identification Guide". Four tall vertical panels side by side, each a different color. Panel 1 emerald green: Large snake illustration of Indian Cobra at top. Header "COBRA" bold white. Symptom list with checkmark icons: "Ptosis — drooping eyelids (earliest sign)", "Local swelling + necrosis at bite site", "Dysarthria, dysphagia, diplopia", "Responds to NEOSTIGMINE", "20WBCT = NORMAL". Treatment box at bottom: "ASV 8-10 vials + Neostigmine + Atropine". Panel 2 deep purple: Krait snake illustration. Header "KRAIT" bold white. Symptoms: "Nocturnal bite — sleeping on floor", "NO local swelling (deceptive!)", "Wakes with abdominal cramps", "Progressive paralysis 6-36h later", "Pre-synaptic — NO neostigmine response". Treatment: "ASV + MANDATORY VENTILATOR 5-7 days". Panel 3 crimson red: Russell's viper illustration. Header "RUSSELL'S VIPER". Symptoms: "Immediate severe pain + swelling", "Gum bleeding + IV site oozing", "Non-clotting blood (20WBCT abnormal)", "Acute kidney injury / oliguria", "DIC + shock". Treatment: "ASV 10 vials + Dialysis + monitor WBCT". Panel 4 burnt orange: Saw-scaled viper. Header "SAW-SCALED VIPER". Symptoms: "Moderate local swelling", "Coagulopathy, DIC, bleeding", "20WBCT abnormal", "NO renal failure (unlike Russell's)", "Dry arid areas". Treatment: "ASV 5-8 vials, repeat per WBCT". Modern bold medical infographic design.
Medical clinical decision algorithm poster. Clean white background with colorful section blocks. Large bold title at top in dark teal: "SYNDROMIC SNAKE IDENTIFICATION ALGORITHM". Subtitle: "Step-by-step approach using clinical features — India". Three large pathway columns separated by vertical dividers. LEFT COLUMN green header "STEP 1: IS THERE NEUROTOXICITY?": Symptoms listed with icons: eye drooping icon Ptosis, speech bubble Dysarthria, breathing icon Dyspnea, face icon Diplopia. Then arrow down to STEP 2 box: "Is there LOCAL SWELLING + NECROSIS?". Two branches: YES green box "= COBRA — Post-synaptic — Neostigmine works — ASV 8-10 vials + Atropine/Neostigmine + airway watch" and NO purple box "= KRAIT — Pre-synaptic — Neostigmine FAILS — VENTILATE immediately — ASV + Calcium gluconate IV". CENTER COLUMN red header "STEP 1: IS THERE HEMOTOXICITY/BLEEDING?": Symptoms with icons: mouth bleeding Gingival bleeding, drop icon Non-clotting blood, blood tube 20WBCT abnormal, bruise icon Ecchymosis petechiae. Then arrow to STEP 2: "Is there RENAL FAILURE? (Oliguria, rising creatinine)". YES deep red box "= RUSSELL'S VIPER — ASV 10 vials max 30 — Monitor urine output — Dialysis if AKI". NO orange box "= SAW-SCALED VIPER — ASV 5-8 vials — Repeat WBCT 6-hourly — No dialysis needed". RIGHT COLUMN gray header "STEP 1: NO SYMPTOMS IN 6 HOURS?": "Dry bite or non-venomous" → "Observe 24h, tetanus, wound care, discharge if stable". Bottom row: summary table 4 columns each snake with: Local swelling, 20WBCT, Neostigmine, AKI. Hospital reference card style.
Medical mind map flowchart on pure white background. Central large oval in dark blue at center of page: "SNAKEBITE — IDENTIFY THE SNAKE". Four bold color-coded branches radiating outward like compass directions with thick curved arrows. NORTH branch in emerald green labeled "COBRA (Naja naja)": Five symptom bubbles connected in a cluster: oval bubble "Ptosis (earliest)", oval "Neck + face swelling", oval "Necrosis at bite site", oval "Dysarthria + Dysphagia", oval "Neostigmine WORKS". Small treatment tag: "ASV + Neostigmine + Atropine". EAST branch in deep purple labeled "KRAIT (Bungarus caeruleus)": Bubbles: "Bite at night asleep", "NO local swelling", "Abdominal cramps on waking", "Ascending paralysis", "Neostigmine FAILS". Tag: "ASV + VENTILATOR mandatory". SOUTH branch in crimson red labeled "RUSSELL'S VIPER (Daboia russelii)": Bubbles: "Immediate pain + swelling", "Gum/IV site bleeding", "20WBCT non-clotting", "Oliguria — AKI", "DIC + Shock". Tag: "ASV 10-30 vials + Dialysis". WEST branch in amber orange labeled "SAW-SCALED VIPER (Echis carinatus)": Bubbles: "Moderate swelling", "Coagulopathy/DIC", "20WBCT non-clotting", "NO renal failure", "Dry arid habitat". Tag: "ASV 5-8 vials, no dialysis". KEY DIFFERENTIATOR boxes between branches: diamond "Neuro OR Hemotoxic?", diamond "Renal failure?", diamond "Local swelling?", diamond "Time of bite?". Clean modern mind map, colorful, professional medical style.
Hospital quick-reference clinical decision card. Light cream background with clean bold typography. Large title in dark navy: "4 QUESTIONS TO IDENTIFY THE SNAKE — India". Bold red subtitle: "Ask these 4 questions in order". Numbered step boxes in a vertical flow with thick color-coded connecting arrows. BOX 1 bright yellow with dark text, label "QUESTION 1": Large question mark icon. "Perform 20WBCT: Did the blood CLOT within 20 minutes?" TWO large arrow branches: LEFT arrow green "YES — Blood CLOTS" leads to BOX 2A teal: "QUESTION 2A: Are there NEUROLOGICAL symptoms? (Ptosis, ptosis, weakness, paralysis)" → YES leads to green terminal box "COBRA or KRAIT". Subdivided: "Swelling present → COBRA — Neostigmine + ASV". "No swelling, nocturnal → KRAIT — VENTILATE NOW". RIGHT arrow red "NO — Blood does NOT clot" leads to BOX 2B orange: "QUESTION 2B: Is there ACUTE KIDNEY INJURY? (Low urine output, rising creatinine, oliguria)" → YES leads to red terminal "RUSSELL'S VIPER — ASV 10 vials + dialysis". → NO leads to orange terminal "SAW-SCALED VIPER — ASV 5-8 vials". BOTTOM summary comparison mini-table: 5 rows (20WBCT, Neuro, Renal, Neostigmine, Habitat) × 4 columns (Cobra, Krait, Russell's, Saw-scaled) with colored tick/cross icons. Professional clean hospital card A4.
Creative body-map medical infographic on white background. Title in bold dark red at top: "WHERE ARE THE SYMPTOMS? — IDENTIFY THE SNAKE". Centered large human body silhouette outline in the middle of the page. Colored annotation arrows pointing from different body regions outward to labeled boxes. From EYES region: green arrow pointing to green box on left: "PTOSIS (drooping eyelid) = ELAPID. Cobra: ptosis + swelling. Krait: ptosis + NO swelling". From MOUTH region: red arrow to red box right: "BLEEDING GUMS + blood in saliva = VIPER envenomation. Check 20WBCT". From THROAT/NECK: green arrow to green box: "Difficulty speaking, swallowing = COBRA or KRAIT (neurotoxic — cranial nerves affected)". From CHEST/LUNGS: purple arrow to purple box: "Respiratory failure = KRAIT most dangerous. Pre-synaptic — must VENTILATE". From KIDNEYS (lower back): red arrow to red box: "Oliguria, dark urine, AKI = RUSSELL'S VIPER only. Start dialysis protocol". From BITE SITE arm: split arrows. Orange arrow "Severe necrosis + swelling = COBRA/RUSSELL'S". Purple arrow "Minimal/no swelling = KRAIT (deceptive)". From WHOLE BODY: red arrow to "Petechiae, ecchymosis, DIC = VIPER". Bottom 4 quadrant boxes for each snake with small illustrations: Cobra green, Krait purple, Russell's red, Saw-scaled orange. Each shows key distinguishing feature. Modern medical illustration style with body outline central focus.






| Page | Style | Best For |
|---|---|---|
| Page 1 | Decision Tree | Bedside step-by-step decision making |
| Page 2 | Column Panel | Quick visual reference / wall poster |
| Page 3 | Pathway Algorithm | Teaching / lecture slides |
| Page 4 | Mind Map | Revision / study notes |
| Page 5 | 4-Question Card | Emergency pocket guide |
| Page 6 | Body Map | Patient education / clinical orientation |