Hey, Horace. Can you please explain me that, uh, essentials of FMT? नारायण रेड्डी, 35th edition book, अ, chapter 25, Agricultural Poisons, page number 395 to page number 401 in detail and explain each and everything so I can learn it and memorize it for my exams and write-- also write a 10 marker question. Give me an warnings, give me tricks to learn the, uh, things and I will ace my exams through it. Explain it to me like I am a small child and I do not understand things properly. So, explain it to me. बातचीत की आवाज़
Note: The library has the 36th edition (2026), which is the latest. Your 35th edition content is nearly identical - all key exam facts match.
| # | Poison | What it is | Key word |
|---|---|---|---|
| 1 | Organophosphorus (OP) | Insecticide | "AChE killer" |
| 2 | Carbamates | Insecticide | "Reversible AChE killer" |
| 3 | Chlorates | Weedkiller | "MetHb + hemolysis" |
| 4 | Paraquat | Herbicide | "Lung destroyer" |
| 5 | Aluminum Phosphide (ALP) | Grain preservative | "Garlic smell + no antidote" |
Memory trick for Alkyl vs Aryl: "Alkyl = Actively toxic already. Aryl = Activated by liver first" (Aryl phosphates need liver activation by cytochrome P450 to become toxic!)
Normally:
Acetylcholine → AChE → Choline + Acetic Acid (cleaned up!)
In OP poisoning:
Acetylcholine → AChE is BLOCKED by OP → Acetylcholine BUILDS UP everywhere!
| Effect Type | Receptor | Symptoms | Memory Trick |
|---|---|---|---|
| MUSCARINIC (glands, smooth muscle) | M receptors | SLUDGE | Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis |
| NICOTINIC (skeletal muscle, ganglia) | N receptors | MATCH | Muscle fasciculations, Adrenal stimulation, Tachycardia initially, Cramps, Hypertension |
| CNS | Both | Anxiety, seizures, coma |
🌟 SLUDGE Trick: Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis - these are all muscarinic symptoms. Add to that DUMBELS: Defecation/Diarrhea, Urination, Miosis, Bradycardia/Bronchospasm/Bronchorrhea, Emesis, Lacrimation, Salivation/Sweating.
🌟 Exam trick: "Plasma falls first, but RBC is more accurate for diagnosis"
The two antidotes - remember "A and P"
| Feature | OP | Carbamates |
|---|---|---|
| Mechanism | Irreversible AChE inhibition | Reversible AChE inhibition |
| Treatment with PAM | Yes | NOT needed (usually avoided) |
| Severity | More severe | Less severe, self-limiting |
| Examples | Parathion, Malathion | Carbaryl (Sevin), Aldicarb, Carbofuran |
🌟 Memory trick: "Carbamates = Can reverse = Choose no PAM"
🌟 Memory trick for chlorate treatment: "WASH-MB-STA" Wash stomach → Methylene Blue → Sodium Thiosulphate → Ascorbic acid → dialysis
Paraquat → NADPH-dependent reduction → FREE RADICALS
Free radicals + O₂ → Superoxide + Hydroxyl radicals (OH)
→ Disrupts cell structure and causes cell death
🌟 Paraquat = Pulmonary fibrosis - This is the MOST tested fact about paraquat!
⚠️ WARNING: High-dose oxygen is CONTRAINDICATED in paraquat poisoning - it increases free radical formation and worsens lung damage! This is a COMMON exam trick question.
ALP + moisture/HCl in stomach → PHOSPHINE GAS (PH₃)
Phosphine → inhibits mitochondrial cytochrome c oxidase
→ blocks electron transport chain
→ cellular energy failure → cell death
| Feature | OP | Carbamate | Chlorate | Paraquat | ALP |
|---|---|---|---|---|---|
| Use | Insecticide | Insecticide | Weedkiller | Herbicide | Grain preservative |
| Mechanism | Irreversible AChE inhibition | Reversible AChE inhibition | MetHb + Hemolysis | Free radicals (lung) | Phosphine → mitochondrial block |
| Key symptom | SLUDGE + miosis | Milder SLUDGE | MetHb + renal failure | Pulmonary fibrosis | Cardiac failure + garlic smell |
| Specific antidote | Atropine + PAM | Atropine only | Methylene blue | None | None |
| PAM useful? | YES | NO | No | No | No |
| Smell | Kerosene/garlic | - | - | - | Garlic |
| Key test | Atropine test + AChE | - | MetHb level | - | Silver nitrate paper |
| Main COD | Respiratory failure | - | Renal failure | Respiratory failure/fibrosis | Cardiovascular collapse |
| Trick | What it helps remember |
|---|---|
| SLUDGE | Muscarinic symptoms (Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis) |
| DUMBELS | Full muscarinic picture (D-Defecation, U-Urination, M-Miosis, B-Bradycardia/Bronchospasm, E-Emesis, L-Lacrimation, S-Salivation/Sweating) |
| "A and P" antidotes | Atropine (muscarinic) + PAM/Pralidoxime (nicotinic + reactivation) |
| "Carbamates Can reverse, Choose no PAM" | Reversible + no PAM |
| "Paraquat = Pulmonary Fibrosis + No O₂ + No antidote" | The three NOs of paraquat |
| "ALP = Aluminum + Garlic + No antidote + Grain" | Key ALP facts |
| "Gramoxone = Grass Gone" | Paraquat trade name |
| "Celphos = Cell-phosphide = Grain thief killer" | ALP trade name |
| Plasma falls FIRST, RBC is MORE accurate | Cholinesterase interpretation |
OP Poisoning:
→ Irreversible AChE inhibition
→ SLUDGE (muscarinic) + Fasciculations (nicotinic) + Coma (CNS)
→ Pinpoint pupils, kerosene smell, excessive secretions
→ Antidote: ATROPINE (muscarinic) + PAM (reactivation)
→ Confirm: Atropine test + AChE levels (<50% RBC = poisoned)
Carbamates: Like OP but REVERSIBLE → Atropine only, no PAM
Chlorates: Oxidizing agent → MetHb + Hemolysis + Renal failure
→ Antidote: Methylene blue
Paraquat (Gramoxone): Free radicals → Pulmonary FIBROSIS
→ NO antidote, NO O₂, Fuller's earth
ALP (Celphos): Phosphine gas → Mitochondrial block → Cardiac failure
→ Garlic smell, NO antidote, Magnesium sulphate + Hydrocortisone
Study tip: Read this 3 times. On the 1st read, just understand the story. On the 2nd read, cover the right column and test yourself on each row of the tables. On the 3rd read, write the 10-marker answer from memory!
Can you make a PDF of the above topic you, uh, explained to me? Exact same thing I want, but in a PDF format.
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/fmt-agricultural-poisons && echo "done"
~/fmt-agricultural-poisons/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm, cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/tmp/workspace/fmt-agricultural-poisons/Agricultural_Poisons_FMT_NarayanReddy.pdf"
# ── colours ──────────────────────────────────────────────────────────────────
C_DARK_BLUE = colors.HexColor("#1a237e")
C_RED = colors.HexColor("#b71c1c")
C_AMBER = colors.HexColor("#e65100")
C_GREEN = colors.HexColor("#1b5e20")
C_TEAL = colors.HexColor("#006064")
C_PURPLE = colors.HexColor("#4a148c")
C_LIGHT_BLUE = colors.HexColor("#e3f2fd")
C_LIGHT_RED = colors.HexColor("#ffebee")
C_LIGHT_GREEN = colors.HexColor("#e8f5e9")
C_LIGHT_AMB = colors.HexColor("#fff3e0")
C_LIGHT_PURP = colors.HexColor("#f3e5f5")
C_LIGHT_TEAL = colors.HexColor("#e0f7fa")
C_YELLOW_HL = colors.HexColor("#fff9c4")
C_GREY_BG = colors.HexColor("#f5f5f5")
C_DARK_GREY = colors.HexColor("#424242")
C_MED_GREY = colors.HexColor("#757575")
C_WHITE = colors.white
C_BLACK = colors.black
# ── styles ────────────────────────────────────────────────────────────────────
def build_styles():
base = getSampleStyleSheet()
def s(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
return {
"cover_title": s("cover_title", "Title",
fontSize=26, textColor=C_DARK_BLUE, spaceAfter=6,
alignment=TA_CENTER, fontName="Helvetica-Bold"),
"cover_sub": s("cover_sub",
fontSize=14, textColor=C_DARK_GREY, spaceAfter=4,
alignment=TA_CENTER, fontName="Helvetica"),
"cover_meta": s("cover_meta",
fontSize=10, textColor=C_MED_GREY, spaceAfter=2,
alignment=TA_CENTER, fontName="Helvetica-Oblique"),
"chapter_head": s("chapter_head",
fontSize=18, textColor=C_WHITE, spaceAfter=2,
fontName="Helvetica-Bold", alignment=TA_CENTER,
backColor=C_DARK_BLUE, borderPadding=(8,10,8,10)),
"part_head": s("part_head",
fontSize=15, textColor=C_WHITE, spaceAfter=4, spaceBefore=14,
fontName="Helvetica-Bold", alignment=TA_LEFT,
backColor=C_RED, borderPadding=(6,8,6,8)),
"section_head": s("section_head",
fontSize=13, textColor=C_DARK_BLUE, spaceAfter=4, spaceBefore=10,
fontName="Helvetica-Bold"),
"sub_head": s("sub_head",
fontSize=11, textColor=C_AMBER, spaceAfter=3, spaceBefore=6,
fontName="Helvetica-Bold"),
"body": s("body",
fontSize=10, textColor=C_DARK_GREY, spaceAfter=4,
leading=15, alignment=TA_JUSTIFY, fontName="Helvetica"),
"body_bold": s("body_bold",
fontSize=10, textColor=C_DARK_GREY, spaceAfter=4,
leading=15, fontName="Helvetica-Bold"),
"bullet": s("bullet",
fontSize=10, textColor=C_DARK_GREY, spaceAfter=3,
leading=14, leftIndent=16, fontName="Helvetica",
bulletText="•"),
"trick_box": s("trick_box",
fontSize=10, textColor=C_GREEN, spaceAfter=4,
leading=14, fontName="Helvetica-Bold",
backColor=C_LIGHT_GREEN, borderPadding=(6,8,6,8)),
"warning_box": s("warning_box",
fontSize=10, textColor=C_RED, spaceAfter=4,
leading=14, fontName="Helvetica-Bold",
backColor=C_LIGHT_RED, borderPadding=(6,8,6,8)),
"highlight": s("highlight",
fontSize=10, textColor=C_DARK_GREY, spaceAfter=4,
leading=14, fontName="Helvetica",
backColor=C_YELLOW_HL, borderPadding=(5,8,5,8)),
"code_box": s("code_box",
fontSize=9, textColor=C_DARK_GREY, spaceAfter=4,
leading=13, fontName="Courier",
backColor=C_GREY_BG, borderPadding=(6,8,6,8)),
"q_head": s("q_head",
fontSize=13, textColor=C_WHITE, spaceAfter=4, spaceBefore=10,
fontName="Helvetica-Bold", alignment=TA_LEFT,
backColor=C_PURPLE, borderPadding=(6,8,6,8)),
"footer_note": s("footer_note",
fontSize=8, textColor=C_MED_GREY, spaceAfter=2,
alignment=TA_CENTER, fontName="Helvetica-Oblique"),
}
# ── table helper ──────────────────────────────────────────────────────────────
def styled_table(data, col_widths, header_bg=C_DARK_BLUE, alt_bg=C_LIGHT_BLUE):
ts = TableStyle([
("BACKGROUND", (0,0), (-1,0), header_bg),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("ALIGN", (0,0), (-1,0), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTSIZE", (0,1), (-1,-1), 9),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("TEXTCOLOR", (0,1), (-1,-1), C_DARK_GREY),
("ROWBACKGROUNDS", (0,1), (-1,-1), [C_WHITE, alt_bg]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#bdbdbd")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING",(0,0), (-1,-1), 6),
])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(ts)
return t
# ── build content ─────────────────────────────────────────────────────────────
def build_story(st):
story = []
sp = lambda n=1: Spacer(1, n*4*mm)
hr = lambda c=C_DARK_BLUE, t=1: HRFlowable(width="100%", thickness=t, color=c, spaceAfter=4, spaceBefore=4)
def P(text, style): return Paragraph(text, st[style])
def B(text): return Paragraph(f"• {text}", st["body"])
# ══════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════
story += [
sp(8),
P("🌾 Agricultural Poisons", "cover_title"),
sp(1),
P("Chapter 25 | Pages 395–401", "cover_sub"),
sp(1),
P("The Essentials of Forensic Medicine & Toxicology", "cover_sub"),
P("Dr. K.S. Narayan Reddy | 36th Edition (2026)", "cover_meta"),
sp(2),
hr(C_DARK_BLUE, 2),
sp(1),
P("Complete Study Notes • Memory Tricks • 10-Marker Q&A", "cover_meta"),
P("Prepared for Exam Preparation", "cover_meta"),
sp(10),
P("⚠️ Study Tips: Read once to understand, twice to memorise, third time to write from memory!", "highlight"),
PageBreak(),
]
# ══════════════════════════════════════════════════════
# BIG PICTURE
# ══════════════════════════════════════════════════════
story += [
P("🧠 The Big Picture — What is Chapter 25 About?", "chapter_head"),
sp(1),
P("Imagine a farmer spraying his fields. The chemicals he uses to kill insects and weeds — if a human "
"swallows them, inhales them, or if they touch the skin — these can KILL. Chapter 25 is all about "
"<b>these farming chemicals as poisons</b>. There are 5 major agricultural poisons you must know cold.", "body"),
sp(1),
]
overview_data = [
["#", "Poison", "What It Is", "Key Word / Hook"],
["1", "Organophosphorus (OP)", "Insecticide", "AChE Killer (Irreversible)"],
["2", "Carbamates", "Insecticide", "Reversible AChE Killer"],
["3", "Chlorates", "Weedkiller", "MetHb + Hemolysis"],
["4", "Paraquat", "Herbicide", "Lung Destroyer"],
["5", "Aluminum Phosphide (ALP)", "Grain Preservative", "Garlic Smell + No Antidote"],
]
story.append(styled_table(overview_data, [15*mm, 50*mm, 45*mm, 65*mm]))
story.append(sp(2))
# ══════════════════════════════════════════════════════
# PART 1 — OP POISONS
# ══════════════════════════════════════════════════════
story += [
P("🔴 PART 1: ORGANOPHOSPHORUS (OP) POISONS — THE MOST IMPORTANT!", "part_head"),
sp(1),
P("Think of it like this: Imagine a river called the <b>Acetylcholine River</b>. Normally, a cleaner "
"called <b>AChE (Acetylcholinesterase)</b> cleans the river. OP compounds <b>DESTROY the cleaner</b>, "
"so acetylcholine keeps flooding everywhere. The body goes into overdrive!", "body"),
]
story.append(P("Compounds to Know", "section_head"))
compounds_data = [
["Alkyl Phosphates", "Aryl Phosphates"],
["HETP, TEPP (Tetron), OMPA, Dimefox,\nMalathion (Kill Bug/Bugsolline),\nSulfotepp, Demeton, Trichlorfon",
"Parathion (Nitrostigmine/Follidol) ← most common in India\nParaoxon, Methyl-parathion (Metacide),\nChlorothion, Diazinon (Diazion; Tik 20)"],
]
t = Table(compounds_data, colWidths=[87*mm, 87*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_TEAL),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,0), (-1,-1), 9),
("TEXTCOLOR", (0,1), (-1,-1), C_DARK_GREY),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#bdbdbd")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story += [t, sp(1),
P("🌟 Memory Trick: <b>Alkyl = Already toxic. Aryl = Activated by liver</b> (via Cytochrome P450)", "trick_box"),
sp(1),
]
story += [
P("Absorption, Distribution & Metabolism", "section_head"),
B("Absorbed through: <b>skin, inhalation, mucous membranes, GI tract</b>"),
B("Widely distributed; readily <b>cross placenta</b>"),
B("Metabolism in liver via Cytochrome P450; Aryl types need liver activation"),
B("Mixed with solvent <b>Aromax</b> → causes <b>kerosene-like smell</b> in stomach/vomit"),
B("Excreted in urine; excretion prolonged over a week"),
sp(1),
]
story += [
P("⚡ Mechanism of Action — THE HEART of OP Poisoning", "section_head"),
P("<b>Normally:</b> Acetylcholine → AChE → Choline + Acetic Acid (all cleaned up!)<br/>"
"<b>In OP poisoning:</b> Acetylcholine → AChE is BLOCKED by OP → Acetylcholine BUILDS UP everywhere!<br/>"
"OP binds to AChE <b>IRREVERSIBLY</b> (this is the exam favourite!)", "code_box"),
sp(1),
]
effects_data = [
["Effect Type", "Receptor", "Key Symptoms", "Memory Trick"],
["MUSCARINIC\n(glands, smooth muscle)", "M receptors",
"Salivation, Lacrimation, Urination,\nDefecation, GI cramps, Emesis,\nMiosis, Bradycardia, Bronchospasm",
"SLUDGE\nSalivation, Lacrimation,\nUrination, Defecation,\nGI cramps, Emesis"],
["NICOTINIC\n(skeletal muscle, ganglia)", "N receptors",
"Muscle fasciculations, Adrenal\nstimulation, Tachycardia (initially),\nCramps, Hypertension",
"MATCH:\nMuscle fasciculations,\nAdrenal stim,\nTachycardia, Cramps,\nHypertension"],
["CNS", "Both M + N",
"Anxiety, seizures, coma,\nrespiratory failure",
"—"],
]
story += [
styled_table(effects_data, [40*mm, 28*mm, 60*mm, 47*mm], header_bg=C_RED),
sp(1),
P("🌟 DUMBELS trick for full muscarinic picture: <b>D</b>efecation, <b>U</b>rination, <b>M</b>iosis, "
"<b>B</b>radycardia/Bronchospasm/Bronchorrhoea, <b>E</b>mesis, <b>L</b>acrimation, <b>S</b>alivation/Sweating",
"trick_box"),
sp(1),
]
story += [
P("Diagnosis", "section_head"),
B("<b>Atropine Test:</b> Give 2 mg atropine IV. Normal person → dry mouth, racing heart. "
"OP poisoning → symptoms IMPROVE without atropinization = CONFIRMED!"),
B("<b>Cholinesterase Levels:</b>"),
Paragraph(" • Plasma pseudocholinesterase — more <b>sensitive</b>, falls FIRST",
st["body"]),
Paragraph(" • RBC true cholinesterase — more <b>diagnostic/specific</b>",
st["body"]),
Paragraph(" • RBC AChE <50% of normal = <b>poisoning confirmed</b>",
st["body"]),
Paragraph(" • Plasma returns to normal in <b>7–10 days</b>; untreated: <b>4 weeks</b>",
st["body"]),
P("🌟 Remember: <b>Plasma falls FIRST, RBC is MORE accurate for diagnosis</b>", "trick_box"),
sp(1),
]
story += [
P("Post-Mortem Findings", "section_head"),
B("Kerosene/garlic-like smell from mouth, body cavities, stomach contents"),
B("Pinpoint pupils (miosis)"),
B("Cyanosis"),
B("Froth in airways (lungs)"),
B("Congestion of lungs, liver, brain, kidneys"),
B("Stomach contents smell of kerosene/aromax solvent"),
sp(1),
]
story += [
P("💊 Treatment (Very Important for Exams!)", "section_head"),
P("Step 1 — Remove from exposure", "sub_head"),
B("Remove clothes; wash skin with soap + water, then ethanol + water or alkaline solution"),
B("If eye involved: irrigate all conjunctival surfaces"),
P("Step 2 — Airway", "sub_head"),
B("Keep airway patent; tracheostomy may be needed"),
P("Step 3 — Decontaminate GI (if ingested)", "sub_head"),
B("Stomach wash with <b>1:5,000 potassium permanganate solution</b>"),
B("Activated charcoal 1 g/kg; avoid ipecac"),
B("Cathartic (sorbitol/magnesium citrate) once, unless diarrhoea present"),
P("Step 4 — SPECIFIC ANTIDOTES: Remember 'A and P'", "sub_head"),
]
antidote_data = [
["Drug", "Dose", "Action", "Key Points"],
["ATROPINE\n(Drug A)", "2–4 mg IV initially\n(Peds: 0.05 mg/kg)\nDouble every 10–15 min\nUp to 40–2000 mg/day",
"Blocks muscarinic effects\n(No effect on nicotinic)\nCounteracts CNS effects",
"• End-point = DRY secretions\n NOT pupil size!\n• Avoid if HR >140 bpm\n• Ineffective in severe\n hypoxia/hypotension"],
["PAM / Pralidoxime\n2-PAM\n(Drug P)", "1–2 g IV over 15–30 min\n(Peds: 20–40 mg/kg)\nRepeat after 1–2 hrs",
"REACTIVATES AChE —\nthe ONLY drug that\nreverses the actual block!",
"• Must give EARLY!\n• After 'aging' (24–48 hrs)\n PAM won't work\n• Reduces nicotinic\n symptoms"],
]
story += [
styled_table(antidote_data, [30*mm, 40*mm, 50*mm, 55*mm], header_bg=C_GREEN),
sp(1),
P("⛔ AVOID these drugs: Physostigmine, Edrophonium chloride, Succinylcholine — they WORSEN the situation!",
"warning_box"),
sp(2),
]
# ══════════════════════════════════════════════════════
# PART 2 — CARBAMATES
# ══════════════════════════════════════════════════════
story += [
P("🔵 PART 2: CARBAMATES", "part_head"),
sp(1),
P("Carbamates work the same way as OP — they inhibit AChE — but the key difference is the inhibition "
"is <b>REVERSIBLE</b>. Think of it as a temporary glue vs. OP's permanent superglue.", "body"),
sp(1),
]
carb_data = [
["Feature", "OP Compounds", "Carbamates"],
["Mechanism", "Irreversible AChE inhibition", "REVERSIBLE AChE inhibition"],
["Severity", "More severe, prolonged", "Less severe, self-limiting"],
["PAM (Pralidoxime)", "YES — essential", "NOT needed / usually avoided"],
["Atropine", "YES — essential", "YES — essential"],
["Examples", "Parathion, Malathion", "Carbaryl (Sevin), Aldicarb, Carbofuran"],
]
story += [
styled_table(carb_data, [38*mm, 62*mm, 75*mm], header_bg=C_TEAL),
sp(1),
P("🌟 Memory Trick: 'Carbamates Can reverse — Choose no PAM' (3 C's)", "trick_box"),
sp(2),
]
# ══════════════════════════════════════════════════════
# PART 3 — CHLORATES
# ══════════════════════════════════════════════════════
story += [
P("🟡 PART 3: CHLORATES (Weedkillers)", "part_head"),
sp(1),
P("Think of chlorates as <b>blood cell destroyers</b>. They look like table sugar (sodium chlorate) "
"— so accidental ingestion is common!", "body"),
sp(1),
P("Key Facts", "section_head"),
]
chlorate_facts = [
["Property", "Details"],
["Used as", "Weed killers, match heads, fireworks"],
["Appearance", "Sodium chlorate resembles TABLE SUGAR — accidental ingestion risk!"],
["Fatal Dose", "~20–30 g"],
["Mechanism", "Powerful oxidising agent → attacks all body cells\n"
"Reacts with thiol groups on RBCs → HEMOLYSIS\n"
"Oxidises Hb → METHEMOGLOBIN (can't carry O₂!)\n"
"Potent NEPHROTOXIN; hemolysis releases K⁺ → fatal hyperkalemia"],
]
story += [
styled_table(chlorate_facts, [40*mm, 135*mm], header_bg=C_AMBER),
sp(1),
P("Symptoms (onset 1–4 hours)", "section_head"),
B("Nausea, vomiting, diarrhoea, abdominal pain"),
B("Shallow breathing"),
B("Blood/protein/haemoglobin in urine (haematuria, proteinuria, haemoglobinuria)"),
B("Oliguria/anuria → <b>renal failure</b> (main cause of death)"),
B("<b>Haemolysis + jaundice + hepatic failure</b>"),
B("<b>Methemoglobinaemia</b> — can reach 40% or above"),
B("Agitation, muscular twitchings, convulsions"),
B("Skin/eyes: irritation, redness, burns, ulcers"),
P("Treatment", "section_head"),
]
chlorate_tx = [
["Step", "Treatment"],
["1", "Stomach wash (gastric lavage)"],
["2", "Methylene blue — 25 mL of 1% solution IV (for methemoglobinaemia)"],
["3", "Sodium thiosulphate — 2–5 g in 200 mL of 5% sodium bicarbonate as drink"],
["4", "Ascorbic acid — 1 g every 4 hours (drink or slow IV)"],
["5", "Peritoneal dialysis or haemodialysis"],
["6", "Symptomatic management"],
]
story += [
styled_table(chlorate_tx, [12*mm, 163*mm], header_bg=C_AMBER),
sp(1),
P("🌟 Mnemonic for chlorate treatment: '<b>WASH MB STA</b>' — Wash stomach, Methylene Blue, "
"Sodium Thiosulphate, Ascorbic acid, dialysis", "trick_box"),
sp(2),
]
# ══════════════════════════════════════════════════════
# PART 4 — PARAQUAT
# ══════════════════════════════════════════════════════
story += [
P("🟠 PART 4: PARAQUAT — 'The Lung Killer'", "part_head"),
sp(1),
P("Paraquat is a <b>bipyridylium herbicide</b> (weed killer). It is the most dangerous herbicide known. "
"Once ingested in significant quantity, it almost always kills.", "body"),
sp(1),
]
paraquat_facts = [
["Property", "Details"],
["Trade names", "Gramoxone (brownish liquid, 10–30%); Weedol (brown granules, ~5%)"],
["Use", "Sprayed on weeds BEFORE planting. Becomes inactivated on contact with soil."],
["Main route", "Ingestion (fatalities); inhalational deaths during spraying are VERY RARE"],
["Mechanism", "NADPH-dependent reduction → FREE RADICALS\n"
"Free radicals + O₂ → Superoxide + Hydroxyl radicals (OH·)\n"
"→ Disrupts cell structure and causes cell death\n"
"Lungs concentrate paraquat via polyamine uptake system → lungs are #1 target"],
]
story += [
styled_table(paraquat_facts, [35*mm, 140*mm], header_bg=C_AMBER),
sp(1),
P("Clinical Phases", "section_head"),
]
pq_phases = [
["Phase", "Timing", "Features"],
["Phase 1", "Early (24–48 hrs)", "Nausea, vomiting, diarrhoea, abdominal pain,\nulceration of mouth/throat (corrosive)"],
["Phase 2", "Days 3–14", "ARDS, PULMONARY FIBROSIS (the killer!), renal failure, liver damage"],
["Phase 3", "Late", "Irreversible lung fibrosis → death by respiratory failure"],
]
story += [
styled_table(pq_phases, [25*mm, 35*mm, 115*mm], header_bg=C_AMBER),
sp(1),
P("🌟 Most tested fact: <b>Paraquat = Pulmonary Fibrosis</b>", "trick_box"),
P("⛔ WARNING: HIGH-DOSE OXYGEN IS CONTRAINDICATED IN PARAQUAT POISONING! "
"Oxygen increases free radical formation and WORSENS lung damage. This is a favourite exam trick!",
"warning_box"),
P("Treatment", "section_head"),
B("NO specific antidote (very important exam point!)"),
B("Fuller's earth (bentonite) — adsorbs paraquat in gut"),
B("Gastric lavage"),
B("Haemoperfusion (to remove from blood)"),
B("Immunosuppression: steroids + cyclophosphamide (to slow fibrosis)"),
B("Supportive care"),
P("🌟 'The THREE NOs of Paraquat: No antidote, No O₂ (high dose), No cure if severe'", "trick_box"),
sp(2),
]
# ══════════════════════════════════════════════════════
# PART 5 — ALP
# ══════════════════════════════════════════════════════
story += [
P("🟤 PART 5: ALUMINUM PHOSPHIDE (ALP) — 'The Grain Poison'", "part_head"),
sp(1),
P("ALP is one of the most lethal agricultural poisons in India, especially in rural areas. "
"It is used for preserving stored grains (wheat, rice) against insects and rodents.", "body"),
sp(1),
]
alp_facts = [
["Property", "Details"],
["Trade names", "Celphos, Phostoxin, Quickphos"],
["Formulations", "Tablets (3 g each), pellets (0.6 g each), powder"],
["Fatal Dose", "1 tablet = 3 g — very small, very lethal!"],
["Smell", "GARLIC-LIKE odor (key exam point)"],
["Mechanism", "ALP + moisture/HCl in stomach → Phosphine gas (PH₃)\n"
"Phosphine → inhibits mitochondrial cytochrome c oxidase\n"
"→ blocks electron transport chain → cellular energy failure → cell death"],
["Main cause of death", "CARDIOVASCULAR COLLAPSE (cardiac failure)"],
]
story += [
styled_table(alp_facts, [40*mm, 135*mm], header_bg=C_DARK_GREY),
sp(1),
P("Symptoms", "section_head"),
B("<b>GI:</b> Nausea, vomiting, abdominal pain, GI bleeding"),
B("<b>CVS:</b> Hypotension, arrhythmias, cardiac failure (main cause of death!)"),
B("<b>Respiratory:</b> ARDS, pulmonary oedema, cyanosis"),
B("<b>CNS:</b> Anxiety, restlessness, ataxia, convulsions, coma"),
B("<b>Metabolic:</b> Metabolic acidosis"),
B("Appear within 30 minutes to a few hours of ingestion"),
sp(1),
P("Forensic Test for ALP", "section_head"),
P("<b>Silver Nitrate Paper Test:</b> Phosphine gas turns silver nitrate paper <b>BLACK</b>. "
"This is the important forensic confirmatory test!", "highlight"),
sp(1),
P("Post-Mortem Appearances", "section_head"),
B("Garlic-like odor at mouth, nostrils, and gastric contents"),
B("Blood-stained froth at mouth and nostrils"),
B("Congested mucous membrane of lower oesophagus, stomach, duodenum"),
B("Decreasing congestion in small intestine"),
B("Lungs, liver, spleen, kidneys, brain — all congested"),
B("<b>Centrizonal haemorrhagic necrosis of liver</b>"),
sp(1),
P("Histopathology", "section_head"),
]
histo_data = [
["Organ", "Histopathological Changes"],
["Stomach", "Congestion, oedema, leucocytic infiltration, sloughing of gastric mucosa"],
["Lungs", "Congestion, oedema, desquamation of respiratory epithelium,\nthickened alveoli, lymphocytic infiltration"],
["Kidneys", "Congestion, necrosis, tubular degeneration and regeneration"],
["Adrenals", "Congestion, haemorrhage, necrosis"],
]
story += [
styled_table(histo_data, [30*mm, 145*mm], header_bg=C_DARK_GREY),
sp(1),
P("Treatment (NO specific antidote!)", "section_head"),
]
alp_tx = [
["Step", "Treatment"],
["1", "Gastric lavage with potassium permanganate after endotracheal intubation\n"
"(oxidises phosphine → non-toxic phosphate); repeat 2–3 times"],
["2", "Activated charcoal 100 g orally mixed with SORBITOL (NOT water),\n"
"240 mL per 30 g — to adsorb phosphine"],
["3", "Antacids — reduce symptoms + reduce absorption of phosphine"],
["4", "Liquid paraffin — helps excretion of ALP and phosphine from gut"],
["5", "NO specific antidote"],
["6", "Magnesium sulphate — 1 g IV; then 1–1.5 g every 6 hrs for 5–7 days\n"
"(reduces organ toxicity, corrects hypomagnesaemia + arrhythmias)"],
["7", "Fluids for shock: 4–6 litres in first 3–6 hours (50% normal saline)"],
["8", "Low-dose dopamine: 4–6 mcg/kg/min (cardiac support)"],
["9", "IV Hydrocortisone: 400 mg every 4–6 hours (highly effective; reduces dopamine dose)"],
["10", "Oxygen for hypoxia; IV sodium carbonate for metabolic acidosis"],
["11", "Peritoneal or haemodialysis"],
]
story += [
styled_table(alp_tx, [12*mm, 163*mm], header_bg=C_DARK_GREY),
sp(2),
PageBreak(),
]
# ══════════════════════════════════════════════════════
# MASTER COMPARISON TABLE
# ══════════════════════════════════════════════════════
story += [
P("📊 MASTER COMPARISON TABLE — Exam Gold!", "chapter_head"),
sp(1),
]
master_data = [
["Feature", "OP", "Carbamate", "Chlorate", "Paraquat", "ALP"],
["Use", "Insecticide", "Insecticide", "Weedkiller", "Herbicide", "Grain preservative"],
["Mechanism", "Irreversible\nAChE inhibition", "Reversible\nAChE inhibition",
"MetHb +\nHaemolysis +\nNephrotoxin", "Free radicals\n→ lung damage", "Phosphine\n→ mito block"],
["Key symptom", "SLUDGE +\nMiosis", "Milder SLUDGE", "MetHb +\nRenal failure",
"Pulmonary\nFibrosis", "Cardiac failure\n+ garlic smell"],
["Antidote", "Atropine +\nPAM", "Atropine\nonly", "Methylene\nblue", "NONE", "NONE"],
["PAM useful?", "YES", "NO", "No", "No", "No"],
["Smell", "Kerosene/\ngarlic", "—", "—", "—", "Garlic"],
["Key test", "Atropine test\nAChE levels", "—", "MetHb level", "—", "Silver nitrate\npaper → black"],
["Main COD", "Respiratory\nfailure", "Respiratory\nfailure", "Renal failure", "Respiratory\nfailure/fibrosis",
"Cardiovascular\ncollapse"],
]
story += [
styled_table(master_data, [30*mm, 29*mm, 29*mm, 29*mm, 29*mm, 29*mm]),
sp(2),
]
# ══════════════════════════════════════════════════════
# WARNINGS BOX
# ══════════════════════════════════════════════════════
story += [
P("⚠️ CRITICAL EXAM WARNINGS — Do NOT Get These Wrong!", "chapter_head"),
sp(1),
P("⛔ 1. PARAQUAT + HIGH-DOSE OXYGEN = DANGEROUS! High-dose O₂ increases free radical formation "
"and WORSENS lung damage. Very common trick question.", "warning_box"),
sp(1),
P("⛔ 2. PAM (Pralidoxime) MUST be given EARLY — once 'aging' occurs (AChE-OP bond becomes permanent, "
"~24–48 hrs), PAM won't work. Never give PAM late and expect results.", "warning_box"),
sp(1),
P("⛔ 3. ALP HAS NO ANTIDOTE — pure supportive treatment; very high mortality. "
"Students often write atropine for ALP — WRONG!", "warning_box"),
sp(1),
P("⛔ 4. ATROPINE END-POINT IS DRY SECRETIONS, NOT PUPILS — do not stop atropine based on "
"pupil size. This is the number one clinical error in OP poisoning.", "warning_box"),
sp(1),
P("⛔ 5. CARBAMATES — PAM is usually NOT used/needed (sometimes even avoided in some references). "
"Remember: reversible = no need to reactivate!", "warning_box"),
sp(1),
P("⛔ 6. SODIUM CHLORATE LOOKS LIKE TABLE SUGAR — this is why accidental ingestion is common. "
"A history of 'mistook white powder for sugar' = think chlorate!", "warning_box"),
sp(2),
]
# ══════════════════════════════════════════════════════
# MEMORY TRICKS SUMMARY
# ══════════════════════════════════════════════════════
story += [
P("🧠 MEMORY TRICKS SUMMARY", "chapter_head"),
sp(1),
]
tricks_data = [
["Mnemonic / Trick", "What It Helps You Remember"],
["SLUDGE", "Muscarinic symptoms: Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis"],
["DUMBELS", "Full muscarinic picture: Defecation, Urination, Miosis, Bradycardia/Bronchospasm,\n"
"Emesis, Lacrimation, Salivation/Sweating"],
["'A and P' antidotes", "Atropine (muscarinic block) + PAM/Pralidoxime (nicotinic + reactivation of AChE)"],
["'Carbamates Can reverse —\nChoose no PAM' (3 C's)", "Reversible inhibition; no PAM needed"],
["'THREE NOs of Paraquat'", "No antidote, No high-dose O₂, No cure if severe"],
["'Gramoxone = Grass Gone'", "Trade name for Paraquat"],
["'Celphos = Cell-phosphide'", "Trade name for Aluminum Phosphide"],
["'ALP = Garlic + Grain +\nNo Antidote'", "Three key ALP facts"],
["'Plasma falls FIRST,\nRBC is MORE accurate'", "Interpretation of cholinesterase levels in OP poisoning"],
["'WASH MB STA'", "Chlorate treatment: Wash stomach → Methylene Blue → Sodium Thiosulphate →\nAscorbic acid → dialysis"],
["'Alkyl = Already toxic;\nAryl = Activated by liver'", "Difference between alkyl and aryl phosphates in OP"],
]
story += [
styled_table(tricks_data, [55*mm, 120*mm], header_bg=C_PURPLE, alt_bg=C_LIGHT_PURP),
sp(2),
PageBreak(),
]
# ══════════════════════════════════════════════════════
# 10-MARKER QUESTION
# ══════════════════════════════════════════════════════
story += [
P("✍️ 10-MARKER EXAM QUESTION & MODEL ANSWER", "q_head"),
sp(1),
P("<b>Question:</b> Describe the toxicology of Organophosphorus poisoning. Include its mechanism of "
"action, clinical features, post-mortem findings, and treatment. <i>(10 Marks)</i>", "highlight"),
sp(1),
]
answer_sections = [
("Introduction — 1 Mark",
"Organophosphorus (OP) compounds are esters of phosphoric acid widely used as insecticides in agriculture. "
"They are among the most common causes of poisoning in India. They form two series: "
"(1) Alkyl phosphates (e.g., Malathion, TEPP) and (2) Aryl phosphates (e.g., Parathion/Follidol, Methyl-parathion)."),
("Absorption and Metabolism — 1 Mark",
"OP compounds are absorbed through skin, inhalation, mucous membranes, and the GI tract. They are widely "
"distributed and cross the placenta. Metabolism occurs in the liver via cytochrome P450. Aryl phosphates require "
"liver activation. They are mixed with solvent (Aromax) causing a kerosene-like smell. Excreted in urine over ~1 week."),
("Mechanism of Action — 2 Marks",
"Normally, acetylcholine (ACh) released at nerve synapses is broken down by AChE. OP compounds bind "
"<b>irreversibly</b> to AChE, preventing breakdown of ACh. Accumulated ACh causes:<br/>"
"• <b>Muscarinic effects (SLUDGE):</b> Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis; "
"plus miosis, bradycardia, bronchospasm<br/>"
"• <b>Nicotinic effects:</b> Muscle fasciculations, weakness, hypertension, tachycardia (initially)<br/>"
"• <b>CNS effects:</b> Anxiety, convulsions, coma, respiratory failure"),
("Clinical Features — 1 Mark",
"Onset within minutes to hours. Key features: profuse sweating, hypersalivation, lacrimation, "
"<b>pinpoint pupils (miosis)</b>, bradycardia, bronchospasm, muscle fasciculations, urinary incontinence, "
"convulsions, and death from respiratory failure."),
("Diagnosis — 1 Mark",
"1. <b>Atropine test:</b> 2 mg IV atropine — no atropinisation confirms OP poisoning.<br/>"
"2. <b>Cholinesterase levels:</b> Plasma (sensitive, falls first); RBC (<50% normal confirms poisoning). "
"Plasma normalises in 7–10 days; untreated cases need 4 weeks."),
("Post-Mortem Findings — 1 Mark",
"Kerosene/garlic-like smell; pinpoint pupils; cyanosis; froth in airways; "
"congestion of lungs, liver, kidneys, brain; gastric contents smelling of kerosene/solvent."),
("Treatment — 3 Marks",
"1. Remove from exposure; wash skin with soap, water, and ethanol.<br/>"
"2. Gastric lavage with 1:5,000 KMnO₄ solution; activated charcoal 1 g/kg.<br/>"
"3. <b>Atropine sulphate:</b> 2–4 mg IV initially; double every 10–15 min; up to 40–2,000 mg/day; "
"end-point is dry secretions (NOT pupils).<br/>"
"4. <b>Pralidoxime (2-PAM):</b> 1–2 g IV over 15–30 min; must be given EARLY before aging; reactivates AChE; "
"reduces nicotinic symptoms.<br/>"
"5. AVOID: physostigmine, succinylcholine, edrophonium chloride.<br/>"
"6. Supportive: airway management, tracheostomy if needed, treat seizures."),
]
for title, text in answer_sections:
story += [
P(title, "sub_head"),
P(text, "body"),
sp(1),
]
# ══════════════════════════════════════════════════════
# LAST-NIGHT RECAP
# ══════════════════════════════════════════════════════
story += [
PageBreak(),
P("📌 LAST-NIGHT-BEFORE-EXAM QUICK RECAP CARD", "chapter_head"),
sp(1),
P("OP POISONING:\n"
"→ Irreversible AChE inhibition\n"
"→ SLUDGE (muscarinic) + Fasciculations (nicotinic) + Coma (CNS)\n"
"→ Pinpoint pupils, kerosene smell, excessive secretions\n"
"→ Antidote: ATROPINE (muscarinic) + PAM (reactivation)\n"
"→ Confirm: Atropine test + AChE levels (<50% RBC = poisoned)", "code_box"),
sp(1),
P("CARBAMATES:\n"
"→ Like OP but REVERSIBLE → Atropine only, no PAM needed\n"
"→ Less severe, self-limiting", "code_box"),
sp(1),
P("CHLORATES (Weedkiller):\n"
"→ Oxidising agent → MetHb + Haemolysis + Renal failure\n"
"→ Antidote: Methylene blue\n"
"→ Treatment mnemonic: WASH MB STA", "code_box"),
sp(1),
P("PARAQUAT (Gramoxone, Herbicide):\n"
"→ Free radicals → PULMONARY FIBROSIS\n"
"→ NO antidote, NO high-dose O₂, Fuller's earth\n"
"→ Highest mortality", "code_box"),
sp(1),
P("ALP (Celphos, Grain Preservative):\n"
"→ Phosphine gas → Mitochondrial block → CARDIAC FAILURE\n"
"→ Garlic smell, NO antidote\n"
"→ Treatment: Magnesium sulphate + Hydrocortisone + Supportive", "code_box"),
sp(2),
hr(C_DARK_BLUE, 2),
sp(1),
P("Source: The Essentials of Forensic Medicine and Toxicology, 36th Edition (2026), Dr. K.S. Narayan Reddy, "
"Chapter 25: Agricultural Poisons, Pages 395–401",
"footer_note"),
P("Study tip: Read 3 times. 1st — understand the story. 2nd — cover the right column, test yourself. "
"3rd — write the 10-marker from memory. You will ace your exams!",
"footer_note"),
]
return story
# ── main ──────────────────────────────────────────────────────────────────────
def main():
styles = build_styles()
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=18*mm,
rightMargin=18*mm,
topMargin=20*mm,
bottomMargin=20*mm,
title="Agricultural Poisons — FMT Chapter 25",
author="Narayan Reddy FMT Study Notes",
subject="Forensic Medicine & Toxicology — Agricultural Poisons",
)
story = build_story(styles)
doc.build(story)
print(f"PDF created: {OUTPUT}")
if __name__ == "__main__":
main()
cd /tmp/workspace/fmt-agricultural-poisons && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/fmt-agricultural-poisons/Agricultural_Poisons_FMT_NarayanReddy.pdf
Agricultural Poisons FMT NarayanReddy
PDF Document · PDF