Give me a good answer content for above questions using refernce from ks narayana reddy textbook latest edition
| Feature | Entry | Exit |
|---|---|---|
| Size | Smaller | Larger |
| Edges | Inverted | Everted |
| Abrasion collar | Present | Absent |
| Contusion ring | Present | Absent |
| Burning/Tattooing | Present (close range) | Absent |
| Feature | Homicidal | Suicidal | Accidental |
|---|---|---|---|
| Site | Any site | Accessible sites | Any |
| Direction | Variable | Left-to-right (right-handed) | Variable |
| Hesitation cuts | Absent | Present | Absent |
| Clothing cuts | Present | Often absent | Present |
| Multiple wounds | Common | Several trial/tentative cuts | Variable |
| Defense injuries | Common | Absent | Usually absent |
| Hanging | Ligature Strangulation | |
|---|---|---|
| Ligature mark | Oblique, non-continuous | Horizontal, continuous |
| Position | Above thyroid | At/below thyroid |
| Drooling | Present | Absent |
| Face | Pale (partial) or cyanosed (complete) | Cyanosed |
Generate a comprehensive PDF document compiling all 14 topics as a quick reference guide
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/forensic-guide && echo "dir created"
~/forensic-guide/build_pdf.py
#!/usr/bin/env python3
"""
Forensic Medicine Quick Reference Guide PDF
Reference: KS Narayana Reddy - The Essentials of Forensic Medicine and Toxicology, 36th Edition (2026)
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.flowables import KeepInFrame
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
# ── OUTPUT PATH ──────────────────────────────────────────────────────────────
OUT = "/tmp/workspace/forensic-guide/Forensic_Medicine_Quick_Reference_KSNarayanaReddy.pdf"
# ── COLOUR PALETTE ───────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3557") # cover / chapter headers
MED_BLUE = colors.HexColor("#2B6CB0") # section headings
ACCENT = colors.HexColor("#E67E22") # important note highlights
LIGHT_BLUE = colors.HexColor("#EBF4FF") # table header bg
PALE_YELLOW = colors.HexColor("#FFFDE7") # key box bg
PALE_GREEN = colors.HexColor("#F0FFF4") # tip box bg
WHITE = colors.white
BLACK = colors.black
GREY_LINE = colors.HexColor("#CBD5E0")
# ── STYLES ───────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()
def S(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
COVER_TITLE = S("CoverTitle", fontSize=28, textColor=WHITE, leading=36, alignment=TA_CENTER, fontName="Helvetica-Bold")
COVER_SUB = S("CoverSub", fontSize=14, textColor=colors.HexColor("#BEE3F8"), leading=20, alignment=TA_CENTER)
COVER_REF = S("CoverRef", fontSize=10, textColor=colors.HexColor("#90CDF4"), leading=14, alignment=TA_CENTER)
CH_HEADER = S("ChHeader", fontSize=16, textColor=WHITE, leading=22, fontName="Helvetica-Bold", alignment=TA_LEFT)
SECTION_H = S("SectionH", fontSize=13, textColor=DARK_BLUE, leading=18, fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=10)
SUBSECTION_H = S("SubH", fontSize=11, textColor=MED_BLUE, leading=16, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=6)
BODY = S("Body", fontSize=9, textColor=BLACK, leading=14, spaceAfter=3, alignment=TA_JUSTIFY)
BULLET = S("Bullet", fontSize=9, textColor=BLACK, leading=14, leftIndent=14, bulletIndent=4, spaceAfter=2)
SMALL = S("Small", fontSize=8, textColor=colors.HexColor("#4A5568"), leading=12)
IMPORTANT = S("Important", fontSize=9, textColor=colors.HexColor("#7B341E"), leading=14, fontName="Helvetica-Bold",
backColor=colors.HexColor("#FFF5F5"), borderPad=4)
KEY_BOX = S("KeyBox", fontSize=9, textColor=colors.HexColor("#2D3748"), leading=14,
backColor=PALE_YELLOW, borderPad=6, leftIndent=6)
TOC_ENTRY = S("TOCEntry", fontSize=10, textColor=DARK_BLUE, leading=18, leftIndent=6)
TOC_HEAD = S("TOCHead", fontSize=14, textColor=DARK_BLUE, leading=22, fontName="Helvetica-Bold", alignment=TA_CENTER)
PAGE_NUM = S("PageNum", fontSize=8, textColor=colors.grey, alignment=TA_CENTER)
TABLE_HDR = S("TableHdr", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12)
TABLE_CELL = S("TableCell", fontSize=8, textColor=BLACK, leading=12, alignment=TA_LEFT)
FOOTER_STYLE = S("Footer", fontSize=7, textColor=colors.grey, alignment=TA_CENTER)
# ── PAGE TEMPLATE ─────────────────────────────────────────────────────────────
def on_page(canvas, doc):
"""Draw header/footer on every page except cover."""
page = doc.page
if page == 1:
return
W, H = A4
canvas.saveState()
# Header bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, H - 1.2*cm, W, 1.2*cm, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 8)
canvas.setFillColor(WHITE)
canvas.drawString(1.5*cm, H - 0.8*cm, "FORENSIC MEDICINE QUICK REFERENCE")
canvas.drawRightString(W - 1.5*cm, H - 0.8*cm, "KS Narayana Reddy 36th Ed. (2026)")
# Footer
canvas.setFillColor(GREY_LINE)
canvas.rect(0, 0, W, 0.8*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7)
canvas.setFillColor(colors.HexColor("#4A5568"))
canvas.drawCentredString(W/2, 0.25*cm, f"Page {page}")
canvas.restoreState()
# ── HELPER FLOWABLES ──────────────────────────────────────────────────────────
def chapter_header(text, num):
tbl = Table([[Paragraph(f"<b>{num}. {text}</b>", CH_HEADER)]],
colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("ROUNDEDCORNERS", [4, 4, 4, 4]),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
return tbl
def section(text):
return Paragraph(text, SECTION_H)
def subsection(text):
return Paragraph(text, SUBSECTION_H)
def body(text):
return Paragraph(text, BODY)
def bullet(text, indent=0):
style = ParagraphStyle("b2", parent=BULLET, leftIndent=14+indent*12, bulletIndent=4+indent*12)
return Paragraph(f"• {text}", style)
def important(text):
tbl = Table([[Paragraph(f"⚡ {text}", IMPORTANT)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BOX", (0,0), (-1,-1), 0.5, ACCENT),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
]))
return tbl
def key_box(text):
tbl = Table([[Paragraph(f"🔑 {text}", KEY_BOX)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#D69E2E")),
("BACKGROUND", (0,0), (-1,-1), PALE_YELLOW),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
]))
return tbl
def sp(n=4):
return Spacer(1, n)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=GREY_LINE, spaceAfter=4, spaceBefore=4)
def simple_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [17*cm / len(headers)] * len(headers)
data = [[Paragraph(h, TABLE_HDR) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), TABLE_CELL) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.4, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
t.setStyle(TableStyle(style))
return t
# ═══════════════════════════════════════════════════════════════════════════════
# CONTENT BUILDER
# ═══════════════════════════════════════════════════════════════════════════════
def build_story():
story = []
W, H = A4
# ─── COVER PAGE ──────────────────────────────────────────────────────────
cover_bg = Table(
[[Paragraph("FORENSIC MEDICINE", COVER_TITLE)],
[Paragraph("Quick Reference Guide", COVER_SUB)],
[Spacer(1, 0.5*cm)],
[HRFlowable(width="60%", thickness=1, color=colors.HexColor("#4299E1"), spaceAfter=6, spaceBefore=6)],
[Spacer(1, 0.3*cm)],
[Paragraph("All 14 High-Weightage Topics", COVER_SUB)],
[Spacer(1, 0.2*cm)],
[Paragraph("LAQ & SAQ Topics Covered", COVER_SUB)],
[Spacer(1, 1.5*cm)],
[Paragraph("Reference:", COVER_REF)],
[Paragraph("<b>KS Narayana Reddy</b>", ParagraphStyle("cr2", parent=COVER_SUB, fontSize=16, textColor=WHITE, fontName="Helvetica-Bold"))],
[Paragraph("The Essentials of Forensic Medicine and Toxicology", COVER_REF)],
[Paragraph("36th Edition — Latest 2026", COVER_REF)],
[Spacer(1, 2*cm)],
[Paragraph("Includes: BNS/BNSS 2023 • ICD-11 • MTP Act 2021 • Mental Health Act 2017", COVER_REF)],
],
colWidths=[17*cm]
)
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
# Center the cover block
cover_wrapper = Table([[cover_bg]], colWidths=[17*cm])
cover_wrapper.setStyle(TableStyle([("TOPPADDING", (0,0), (-1,-1), 80)]))
story.append(cover_wrapper)
story.append(PageBreak())
# ─── TABLE OF CONTENTS ────────────────────────────────────────────────────
story.append(Paragraph("TABLE OF CONTENTS", TOC_HEAD))
story.append(sp(8))
story.append(HRFlowable(width="100%", thickness=1.5, color=DARK_BLUE))
story.append(sp(6))
laq_topics = [
("1", "Death and Its Causes", "LAQ"),
("2", "Postmortem Changes", "LAQ"),
("3", "Mechanical Asphyxia", "LAQ"),
("4", "Thermal Deaths", "LAQ"),
("5", "Medical Law and Ethics", "LAQ"),
("6", "Mechanical Injuries", "LAQ"),
("7", "Identification", "LAQ"),
("8", "Sexual Offences", "LAQ"),
("9", "Abortion", "LAQ"),
("10", "General Toxicology", "LAQ"),
("11", "Agricultural Poisons", "LAQ"),
]
saq_topics = [
("12", "Legal Procedure / Inquest + Medicolegal Certificates + Autopsy", "SAQ"),
("13", "Anaesthetic Deaths / Starvation / Infant Deaths / Impotence & Sterility / Blood Stains / Firearm Injuries", "SAQ"),
("14", "Virginity, Pregnancy & Delivery / Forensic Psychiatry / Poisons / Corrosives", "SAQ"),
]
story.append(Paragraph("<b>LONG ANSWER QUESTIONS (LAQ)</b>", SECTION_H))
for num, title, _ in laq_topics:
story.append(Paragraph(f"{num}. {title}", TOC_ENTRY))
story.append(sp(8))
story.append(Paragraph("<b>SHORT ANSWER QUESTIONS (SAQ)</b>", SECTION_H))
for num, title, _ in saq_topics:
story.append(Paragraph(f"{num}. {title}", TOC_ENTRY))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 1 — DEATH AND ITS CAUSES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("DEATH AND ITS CAUSES", 1), sp(6),
body("<b>Definition:</b> Thanatology (thanatos = death) studies death in all aspects. <b>Death = irreversible/permanent stoppage of vital functions.</b>"),
sp(4), section("Types of Death"),
simple_table(
["Type", "Definition", "Key Feature"],
[
["Somatic/Clinical", "Irreversible cessation of circulation, respiration, brain function", "Conventional death"],
["Molecular/Cellular", "Death of individual cells after somatic death", "Neurons: 3-5 min; muscle cells: hours"],
["Brain Death", "Irreversible loss of ALL brain function incl. brainstem", "Legal death in many countries"],
["Cortical Death", "Loss of higher functions, brainstem intact", "Persistent vegetative state"],
["Brainstem Death", "Cessation of brainstem reflexes, no spontaneous respiration", "UK/India: basis for certification"],
],
[4.5*cm, 7.5*cm, 5*cm]
),
sp(6), section("ICD-11 Cause of Death Framework"),
simple_table(
["Level", "Definition", "Example"],
[
["Immediate cause", "Final disease/injury directly causing death", "Septicemia"],
["Intermediate cause", "Links underlying to immediate cause", "Extensive burns"],
["Underlying cause", "Initiating event (this is coded in ICD-11)", "Dowry assault by burning"],
["Contributing conditions", "Contributed but not in direct chain", "Diabetes, hypertension"],
],
[4*cm, 7*cm, 6*cm]
),
sp(4),
important("ICD-11 Code for assault by burning = PK80.1 | BNS Sec.46 (IPC S.46): Death = death of a human being"),
sp(4), section("Legal Definitions"),
bullet("BNS Act (S.46, IPC): Death = death of a human being unless context indicates otherwise"),
bullet("Registration of Births & Deaths Act 1969 S.2(b): Death = permanent disappearance of all evidence of life after livebirth"),
sp(4), section("Apparent Death / Suspended Animation"),
body("Vital functions so depressed they cannot be detected. Causes: electric shock, anesthesia, drowning (cold water), narcotic poisoning, profound hypothermia."),
key_box("Signs of death: Cessation of respiration & heartbeat + postmortem changes (lividity, rigor, cooling) confirm death."),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 2 — POSTMORTEM CHANGES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("POSTMORTEM CHANGES", 2), sp(6),
section("Immediate Changes"),
bullet("Cessation of respiration, circulation, muscle activity, sensory functions"),
bullet("Loss of reflexes, relaxation of sphincters, skin pallor"),
sp(4), section("A. Postmortem Cooling (Algor Mortis)"),
bullet("Rate: ~1–1.5°C/hour under average conditions (Rule: 1.5°F per hour for first 12 hrs)"),
bullet("Affected by: ambient temperature, body build, clothing, air movement, submersion"),
sp(4), section("B. Postmortem Staining (Livor Mortis / Hypostasis)"),
bullet("Appears: 1–2 hours after death | Fixed: 6–12 hours (irreversible after fixation)"),
bullet("Blood gravitates to dependent parts → bluish-violet discoloration"),
sp(4),
simple_table(
["Color", "Cause"],
[
["Cherry red", "Carbon monoxide poisoning"],
["Bright red", "HCN/cyanide; refrigerated bodies; cold water bodies"],
["Brownish", "Methaemoglobinaemia (nitrites, aniline dyes, nitrobenzene)"],
["Deep bluish-violet","Asphyxia"],
["Bright pink", "Hypothermia"],
["Greenish-brown", "Septic abortion (Cl. welchii)"],
],
[5*cm, 12*cm]
),
sp(4),
important("ML Importance of hypostasis: Sign of death • Estimates time of death • Indicates body position • Reveals cause of death from color"),
sp(6), section("C. Rigor Mortis"),
bullet("Mechanism: ATP depletion → actin-myosin cross-linking → muscle stiffening"),
bullet("Onset: 1–2 hrs | Complete: 6–12 hrs | Duration: 12–24 hrs | Passes off: 24–48 hrs"),
bullet("Order (Nysten's rule): Jaw & neck → downward progression"),
bullet("Cadaveric spasm: Instant rigor at moment of death → forensic significance (grip on weapon)"),
key_box("Heat ACCELERATES rigor | Cold DELAYS rigor | Strychnine poisoning: marked rigor"),
sp(6), section("Late / Decomposition Changes"),
simple_table(
["Change", "Description", "Medicolegal Significance"],
[
["Putrefaction", "Green stain right iliac fossa (cecum) first, H₂S gas, bloating", "PMI estimation; may destroy evidence"],
["Mummification", "Rapid desiccation in dry, hot, airy conditions", "Body preserved for months-years"],
["Adipocere (grave wax)", "Saponification of body fat in damp/wet environments", "Preserves body shape; useful for ID"],
["Maceration", "Softening in water; fetal death in utero (skin peeling)", "Intrauterine fetal death"],
],
[3.5*cm, 7*cm, 6.5*cm]
),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 3 — MECHANICAL ASPHYXIA
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("MECHANICAL ASPHYXIA", 3), sp(6),
body("<b>Definition:</b> Asphyxia = condition caused by interference with respiration or lack of O₂ in respired air → organs & tissues deprived of O₂ (+ failure to eliminate CO₂) → unconsciousness or death."),
important('"Asphyxia indicates a mode of DYING, rather than a CAUSE of death." — KSN Reddy'),
sp(4), section("Stages of Asphyxia"),
simple_table(
["Stage", "Time", "Features"],
[
["1. Dyspnea", "0–1 min", "Deep labored breathing, BP rises, cyanosis begins"],
["2. Convulsions", "1–2 min", "Generalized convulsions, marked cyanosis, unconsciousness"],
["3. Exhaustion", "2–4 min", "Convulsions cease, deep unconsciousness"],
["4. Respiratory failure","4 min", "Breathing ceases"],
["5. Cardiac failure", "5–10 min", "Heart beats several minutes after respiration stops"],
],
[3.5*cm, 2.5*cm, 11*cm]
),
key_box('Thumb rule: "Breathing stops within 20 seconds of cardiac arrest; heart stops within 20 minutes of stopping breathing"'),
sp(4), section("Types of Mechanical Asphyxia"),
simple_table(
["Type", "Mechanism", "Key Findings"],
[
["Hanging", "Suspension by neck ligature; carotid compression + tracheal compression", "Oblique, non-continuous ligature mark above thyroid; pale face (partial hanging)"],
["Strangulation", "External ligature pressure around neck", "Horizontal, continuous mark at/below thyroid; cyanosed face"],
["Throttling", "Manual compression of neck by hands", "Finger-tip bruises + nail marks on neck; bilateral carotid damage"],
["Smothering", "Closure of nose/mouth by hand, cloth, pillow", "Petechiae on conjunctiva; inner lip abrasions; limited external signs"],
["Choking", "Foreign body in larynx/pharynx", "FB found at autopsy; café coronary in adults"],
["Drowning", "Air passages filled with fluid", "Washerwoman's hands; diatoms in bone marrow = antemortem"],
["Traumatic asphyxia","External chest compression", "Masque écchymotique (purplish-red cyanosis of face/neck)"],
],
[3*cm, 5.5*cm, 8.5*cm]
),
sp(4), section("General PM Findings in Asphyxia"),
bullet("Congestion and cyanosis of face/lips"),
bullet("Petechial hemorrhages (Tardieu spots) — conjunctivae, skin, pleura, pericardium"),
bullet("Lungs: hyperinflated, congested, edematous"),
bullet("Heart: right side dilated; dark fluid blood"),
bullet("Deeply bluish-violet postmortem hypostasis"),
bullet("Frothy fluid at nose/mouth"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 4 — THERMAL DEATHS
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("THERMAL DEATHS", 4), sp(6),
body("<b>Definition:</b> Deaths resulting from systemic and/or local effects of exposure to excessive HEAT or COLD."),
sp(4), section("A. Heat Injuries"),
simple_table(
["Condition", "Mechanism", "Features", "Treatment"],
[
["Heat Cramps\n(Miner's cramps)", "Salt depletion from profuse sweating", "Painful voluntary muscle cramps; normal temp; profuse sweating", "Salt + water replacement"],
["Heat Exhaustion/\nProstration", "Circulatory failure: water + salt loss", "Cold clammy skin; rapid weak pulse; normal temp; dizziness", "Rest; IV fluids; remove from heat"],
["Heat Stroke\n(Hyperpyrexia)", "Hypothalamic thermoregulation failure; rectal temp >41.5°C", "HOT DRY skin; absent sweating (classic); confusion; coma; seizures; DIC", "Rapid cooling; ice packs; IV fluids; ICU"],
],
[3*cm, 4*cm, 5.5*cm, 4.5*cm]
),
sp(4), section("Burns"),
simple_table(
["Degree", "Depth", "Features"],
[
["1st (Superficial)", "Epidermis only", "Erythema, pain, no blisters; heals in 3–5 days"],
["2nd (Partial thickness)", "Epidermis + part dermis", "Blisters, pain, moist surface; heals with scarring"],
["3rd (Full thickness)", "Full dermis", "Leathery, painless (nerve destruction), eschar"],
["4th (Charring)", "Subcutaneous/bone", "Black charring; associated with fire deaths"],
],
[4*cm, 4.5*cm, 8.5*cm]
),
important("Pugilistic attitude = heat-induced flexion of limbs in fire deaths (NOT a sign of fighting!) | Soot in airways = alive during fire (vital reaction) | Rule of Nines: Head 9%, each arm 9%, chest front 9%, abdomen front 9%, upper back 9%, lower back 9%, each thigh 9%, each lower leg+foot 9%, perineum 1%"),
sp(4), section("B. Cold Injuries"),
body("<b>Hypothermia:</b> Oral/axillary temperature <35°C. Hypothalamic temperature regulation lost below 30°C. Women and obese persons tolerate cold better."),
simple_table(
["Condition", "Temperature", "Features"],
[
["Trench/Immersion foot", "5–8°C + dampness", "Prolonged exposure; blisters, ulceration, dry gangrene; military personnel"],
["Frostbite", "<−2.5°C", "Infarction of peripheral digits; edema → redness → necrosis"],
["Systemic Hypothermia", "<35°C", "Shivering → cessation; paradoxical undressing; unconsciousness → death"],
],
[4*cm, 3.5*cm, 9.5*cm]
),
key_box("PM findings in hypothermia: Pink lividity • Wischnewski spots (gastric erosions) • Paradoxical undressing behavior"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 5 — MEDICAL LAW AND ETHICS
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("MEDICAL LAW AND ETHICS", 5), sp(6),
section("Principles of Medical Ethics (BANM)"),
simple_table(
["Principle", "Definition"],
[
["Beneficence", "Act in the patient's best interest"],
["Autonomy", "Patient's right to make informed decisions"],
["Non-maleficence", "'First, do no harm' — Primum non nocere"],
["Justice", "Fair and equitable distribution of healthcare"],
],
[5*cm, 12*cm]
),
sp(4), section("Consent"),
bullet("Valid consent must be: VOLUNTARY + INFORMED + COMPETENT (major, mentally sound)"),
bullet("Informed consent: must explain diagnosis, proposed treatment, risks, alternatives, prognosis"),
bullet("Implied consent: emergencies (unconscious patient)"),
bullet("Therapeutic privilege: withholding information that may seriously harm the patient"),
sp(4), section("Medical Negligence"),
simple_table(
["Element", "Detail"],
[
["3 Ds", "Duty of care + Dereliction of duty + Damage (directly caused)"],
["Bolam Test", "Standard of care expected of a reasonably competent medical professional"],
["Civil", "Compensation; preponderance of evidence"],
["Criminal", "'Gross' negligence required; Jacob Mathew vs State of Punjab (landmark SC case)"],
],
[4*cm, 13*cm]
),
sp(4), section("Inquest"),
simple_table(
["Type", "Authority", "Cases Covered"],
[
["Police Inquest", "Police Sub-Inspector (BNS Sec.194 / CrPC Sec.174)", "Suicide, homicide, accident, suspicious, unknown cause, jail/mental hospital death"],
["Magistrate Inquest", "Executive/Judicial Magistrate", "Dowry death (within 7 yrs of marriage), deaths in custody — MANDATORY"],
["Coroner's Inquest", "Coroner (Mumbai only now)", "Most thorough; jury-based; historical use"],
],
[3.5*cm, 5.5*cm, 8*cm]
),
sp(4),
important("MTP Act 1971 (Amended 2021): ≤20 weeks = 1 doctor | 20-24 weeks = 2 doctors (special categories) | >24 weeks = Medical Board"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 6 — MECHANICAL INJURIES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("MECHANICAL INJURIES", 6), sp(6),
section("Classification of Wounds"),
sp(4),
simple_table(
["Wound Type", "Mechanism", "Features", "Medicolegal Importance"],
[
["Abrasion", "Blunt force; epidermis scraped", "Superficial; heals without scar (unless deep); tail end shows direction", "Point of application of force; patterned/imprint abrasion identifies weapon"],
["Contusion\n(Bruise)", "Blunt force; blood extravasation", "No break in skin; tramline bruise (rod/stick); color changes with age", "Can SHIFT position; tramline = rod; does NOT always indicate exact site"],
["Laceration", "Blunt force; tissue tearing", "Irregular margins; bridging fibers; contamination; no sharp edges", "Weapon identification from pattern; ante-mortem = vital reaction"],
["Incised wound","Sharp edge; cutting", "Longer than deep; clean cut edges; profuse bleeding; no bridging fibers", "Direction of force; length = width of blade"],
["Stab wound", "Pointed weapon; thrusting", "Deeper than long; hilt mark; single/double-edged patterns", "Entry = smaller; double-edged = spindle/fishtail shape"],
["Chop wound", "Heavy sharp weapon (axe/dao)", "Combination incised + lacerated; bone bevelling", "Weapon identification"],
],
[2.5*cm, 3.5*cm, 5*cm, 6*cm]
),
sp(4), section("Regional Injuries — Head"),
bullet("Contre-coup injury: brain injury OPPOSITE to site of impact (moving head stops suddenly)"),
bullet("Bursting fracture: severe blunt force to skull → explosive fracture pattern"),
bullet("Hinge fracture: transverse fracture of base of skull from severe trauma"),
bullet("Extradural hematoma: rupture of middle meningeal artery; lucid interval → deterioration"),
bullet("Subdural hematoma: bridging vein tear; no lucid interval; bilateral in elderly"),
sp(4),
key_box("Ante-mortem vs Postmortem wounds: Vital reaction (inflammation, hemorrhage, healing) = ANTEMORTEM. Absent reaction = postmortem wound."),
sp(4), section("Defense Injuries"),
body("Injuries on ulnar border of forearm, dorsum of hands, fingers — indicate victim tried to ward off blows. Present in homicide, absent in suicide."),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 7 — IDENTIFICATION
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("IDENTIFICATION", 7), sp(6),
section("Methods of Identification"),
simple_table(
["Method", "Basis", "Value"],
[
["Fingerprints", "Friction ridge patterns (loops, whorls, arches)", "No two persons have same prints; Henry system used; AFIS database"],
["DNA Fingerprinting", "STRs (Short Tandem Repeats); mtDNA for maternal lineage", "Most accurate; useful in decomposed/burnt; CODIS database"],
["Dental ID", "Dental records, unique tooth pattern, restorations", "Highly reliable; survives fire/decomposition"],
["Skull-Photo super-\nimposition", "Bharati technique; image matching", "Used in advanced decomposition"],
["Bertillon's system", "Anthropometric measurements", "Obsolete; replaced by fingerprints"],
],
[3.5*cm, 6*cm, 7.5*cm]
),
sp(4), section("Age Determination"),
bullet("Teeth: eruption times (deciduous 6 mths-2 yrs; permanent 6-21 yrs)"),
bullet("Skeleton: epiphyseal fusion (last = medial clavicle ~25 yrs; iliac crest ~25 yrs)"),
bullet("Skull sutures: closure pattern (not reliable alone)"),
bullet("3rd molar (wisdom tooth): erupts 17-25 yrs; 'Key of age'"),
sp(4), section("Sex Determination (Skeletal)"),
simple_table(
["Feature", "Male", "Female"],
[
["Pelvis (MOST RELIABLE)", "Narrow; heart-shaped inlet; acute subpubic angle", "Wide; oval/round inlet; obtuse subpubic angle (>90°)"],
["Skull", "Larger; prominent supraorbital ridges; larger mastoid", "Smaller; smooth; gracile"],
["Stature", "Taller on average", "Shorter on average"],
["Barr bodies", "Absent", "Present in ~20% of nuclei"],
],
[4*cm, 6.5*cm, 6.5*cm]
),
sp(4),
important("Racial ID: Nasal index, cephalic index, prognathism | Identification marks: Scars, tattoos, occupational marks, warts, moles, birthmarks"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 8 — SEXUAL OFFENCES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("SEXUAL OFFENCES", 8), sp(6),
section("Rape — Legal Definition (BNS Sec.63 / IPC Sec.375)"),
bullet("Sexual intercourse by a man with a woman WITHOUT consent or against her will"),
bullet("Penile penetration = essential element"),
bullet("Age of consent = 18 years | Sex with wife <18 yrs = rape"),
bullet("Gang rape (BNS Sec.70): 2 or more persons acting in furtherance of common intention"),
sp(4), section("Medical Examination of Alleged Rape Victim"),
bullet("Must be conducted by FEMALE doctor with female nurse/attendant"),
bullet("Written informed consent essential BEFORE examination"),
bullet("Document: injuries, physical condition, mental state, menstrual history"),
sp(4), section("Evidence Collection"),
simple_table(
["Sample", "Purpose"],
[
["Vaginal swabs (high + low)", "Sperm detection; acid phosphatase; DNA"],
["Nail clippings", "DNA of assailant; debris analysis"],
["Pubic hair combings", "Foreign hair; trace evidence"],
["Blood/Urine", "Alcohol, drugs (drug-facilitated assault)"],
["Clothing", "Seminal stains, blood, fibres"],
],
[6*cm, 11*cm]
),
sp(4), section("Hymen Findings"),
bullet("Fresh tears: lacerations at 6 o'clock position (most common) or 4 & 8 o'clock"),
bullet("Old healed notches: irregular, triangular, at margins"),
bullet("Types of hymen: annular, crescentic, fimbriated, denticular, septate, cribriform, imperforate"),
important("SC India (Lillu alias Rajesh & Anr vs State of Haryana 2013): Two-finger test ABOLISHED. Ruptured hymen does NOT confirm rape. Opinion based on OVERALL examination."),
sp(4), section("Spermatozoa Timelines"),
bullet("Motile in vagina: up to 12 hours"),
bullet("Present (non-motile) in vagina: up to 72-96 hours"),
bullet("Motile in uterus/tubes: longer (up to 4-5 days)"),
sp(4), section("Sodomy (BNS Sec.377)"),
bullet("Anal intercourse; bruising/lacerations at anal margin"),
bullet("Altered rugal folds, dilated anus, sperm may be found"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 9 — ABORTION
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("ABORTION", 9), sp(6),
body("<b>Definition:</b> Expulsion of products of conception BEFORE VIABILITY (before 28 weeks / fetal weight <1000 g)."),
sp(4), section("Types"),
simple_table(
["Type", "Description"],
[
["Spontaneous (Miscarriage)", "Natural expulsion; no criminal intent"],
["Threatened", "Bleeding with closed os; pregnancy may continue"],
["Inevitable", "Open os + bleeding; cannot be prevented"],
["Incomplete", "Partial expulsion; retained products"],
["Missed", "Fetal death without expulsion; empty sac"],
["Criminal", "Intentional termination outside MTP Act guidelines"],
],
[5*cm, 12*cm]
),
sp(4), section("Methods of Criminal Abortion"),
bullet("Mechanical/Local: insertion of instruments, bougie, sounds, foreign bodies; hot fluids; pessaries (most common method)"),
bullet("Systemic: oxytocic drugs — quinine, ergot, castor oil, prostaglandins"),
bullet("Utus paste (obsolete): historically used for criminal abortion"),
sp(4), section("Evidence of Abortion at Autopsy"),
bullet("Enlarged uterus with soft walls + open cervix"),
bullet("Placental/fetal remnants in uterine cavity"),
bullet("Uterine perforations (instrument trauma)"),
bullet("Signs of sepsis: inflamed peritoneum, pus, thrombophlebitis"),
sp(4), section("Complications of Criminal Abortion"),
bullet("Air embolism (most dangerous — immediate death)"),
bullet("Hemorrhage, uterine perforation"),
bullet("Septicemia → pelvic peritonitis"),
bullet("Clostridium welchii infection → greenish-brown hypostasis"),
sp(4),
important("MTP Act 1971 (Amended 2021): ≤20 wks = 1 RMP | 20-24 wks = 2 RMPs (survivors of sexual assault, minors, mental illness, fetal abnormality) | >24 wks = State Medical Board"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 10 — GENERAL TOXICOLOGY
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("GENERAL TOXICOLOGY", 10), sp(6),
body("<b>Definition:</b> Science dealing with poisons — their properties, actions, identification, treatment, and medicolegal relations."),
sp(4), section("Classification of Poisons"),
simple_table(
["Class", "Type", "Examples"],
[
["Corrosives", "Destroy/corrode tissues", "Strong acids (H₂SO₄, HCl, HNO₃); strong alkalis (NaOH, KOH)"],
["Irritants", "Cause local irritation", "Inorganic: arsenic, mercury, antimony | Organic: cantharides, croton oil | Mechanical: glass powder"],
["Neurotic", "CNS depression", "Cerebral: alcohol, opium, chloroform | Spinal: strychnine | Peripheral: curare | Cardiac: aconite, digitalis, HCN"],
["Asphyxiants", "Oxygen deprivation", "CO, CO₂, hydrogen sulphide"],
],
[3*cm, 4.5*cm, 9.5*cm]
),
sp(4), section("Factors Modifying Toxicity"),
bullet("Dose (most important), route of administration (IV > inhalation > oral), physicochemical state"),
bullet("Age (children more sensitive), sex (females more sensitive to alcohol), body weight"),
bullet("Idiosyncrasy, tolerance (addiction), combination effects (synergism / antagonism)"),
bullet("Empty vs full stomach, alimentary/hepatic disease"),
sp(4), section("General Treatment of Poisoning (SLAP)"),
simple_table(
["Step", "Action", "Details"],
[
["S — Stabilize", "ABC management", "Airway, Breathing, Circulation; IV access; O₂"],
["L — Limit absorption", "Prevent further poison entry", "Emesis (ONLY within 1 hr, no corrosives/hydrocarbons); Gastric lavage; Activated charcoal 1g/kg"],
["A — Antidote", "Specific antidote if available","See antidote table below"],
["P — Promote elimination","Hasten excretion", "Forced diuresis; peritoneal/hemodialysis; exchange transfusion"],
],
[3.5*cm, 4*cm, 9.5*cm]
),
sp(4), section("Common Antidotes"),
simple_table(
["Poison", "Antidote"],
[
["Organophosphorus compounds", "Atropine (muscarinic) + Pralidoxime/PAM (reactivator — give EARLY)"],
["Opiates (morphine, heroin)", "Naloxone (IV/IM); repeat doses may be needed"],
["Paracetamol (acetaminophen)", "N-Acetylcysteine (NAC); within 10 hrs most effective"],
["CO poisoning", "100% O₂; hyperbaric O₂ in severe cases"],
["Cyanide (HCN)", "Amyl nitrite (inhale) → Sodium nitrite (IV) → Sodium thiosulphate (IV)"],
["Iron", "Desferrioxamine (chelating agent)"],
["Organochlorines", "Diazepam for seizures; no specific antidote"],
["Benzodiazepines", "Flumazenil"],
["Beta-blockers", "Glucagon"],
["Methanol", "Ethanol or Fomepizole (alcohol dehydrogenase inhibitor)"],
],
[6*cm, 11*cm]
),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 11 — AGRICULTURAL POISONS
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("AGRICULTURAL POISONS", 11), sp(6),
section("Organophosphorus Compounds (OPC)"),
body("Most common pesticide poisoning in India. Examples: Malathion, Parathion, Chlorpyrifos, DDVP, Dimethoate."),
body("<b>Mechanism:</b> Irreversible inhibition of acetylcholinesterase → accumulation of acetylcholine at nerve endings"),
sp(4),
simple_table(
["Effect Type", "Signs/Symptoms (SLUDGE)"],
[
["Muscarinic (SLUDGE)", "Salivation, Lacrimation, Urination, Defecation, GI cramping, Emesis + miosis, bronchospasm, bradycardia"],
["Nicotinic", "Muscle fasciculations, weakness, paralysis (flaccid), tachycardia, hypertension"],
["CNS", "Anxiety, restlessness, seizures, coma, respiratory failure"],
],
[4*cm, 13*cm]
),
important("Treatment: Atropine (antidote for MUSCARINIC effects — large doses needed until atropinization) + Pralidoxime/2-PAM (reactivates cholinesterase — MUST give early before aging) + seizure control"),
sp(4), section("Other Agricultural Poisons"),
simple_table(
["Poison", "Examples", "Mechanism", "Key Feature", "Antidote"],
[
["Organochlorines", "DDT, BHC/Lindane", "CNS stimulation", "Seizures; stored in fat; banned", "Diazepam; no specific antidote"],
["Carbamates", "Sevin, Baygon", "Reversible ChE inhibition", "Shorter duration; self-limiting", "Atropine ONLY; Pralidoxime CONTRAINDICATED"],
["Aluminium Phosphide","Celphos, Phostoxin","Phosphine gas (PH₃) + moisture", "Garlic-like odor; most common suicidal in India","NO specific antidote; mainly supportive"],
["Paraquat", "Gramoxone", "Free radical generation → lung damage","Delayed pulmonary fibrosis; NO O₂ therapy", "Fullers earth; haemoperfusion"],
],
[3*cm, 3*cm, 4*cm, 4*cm, 3*cm]
),
key_box("AlPO₄ (Aluminium Phosphide): Most common cause of PESTICIDE SUICIDE in India | OPC: Most common PESTICIDE POISONING overall"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 12 — SAQ GROUP A: LEGAL PROCEDURE / AUTOPSY / CERTIFICATES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("LEGAL PROCEDURE, MEDICOLEGAL CERTIFICATES & AUTOPSY", 12), sp(6),
section("Inquest — Types and Comparison"),
simple_table(
["Feature", "Police Inquest", "Magistrate Inquest", "Coroner's Inquest"],
[
["Authority", "Police Sub-Inspector", "Executive/Judicial Magistrate", "Coroner (Mumbai only)"],
["BNS Section","Sec.194 (CrPC Sec.174)", "Sec.195/196", "Coroner's Act 1871"],
["Cases", "Suicide, accident, homicide, suspicious, unknown, jail/MH death", "Dowry death (7 yrs), custodial death — MANDATORY", "All suspicious deaths in Mumbai"],
["Doctor role","Medically examine; issue PM report", "PM + inquest", "Expert witness; jury verdict"],
["Thoroughness","Basic", "Thorough", "Most thorough (jury system)"],
],
[3.5*cm, 4*cm, 4.5*cm, 5*cm]
),
sp(4), section("Medicolegal Certificates"),
simple_table(
["Certificate", "Purpose", "Key Points"],
[
["MCCD (Form 4)", "Cause of death certification", "Part I: causal sequence (ICD-11 codes) | Part II: contributing conditions | False certificate = BNS criminal offence"],
["Wound Certificate", "Document injuries for court", "Describe in detail: site, size, shape, margins, depth, age"],
["Fitness Certificate","Certify fitness for work/travel","Based on personal clinical examination"],
["Age Certificate", "Estimate age for medicolegal", "Bone X-ray + dental examination"],
["Mental Certificate","Mental health fitness", "Mental Health Act 2017; only by psychiatrist for certain certificates"],
],
[3.5*cm, 4.5*cm, 9*cm]
),
sp(4), section("Medicolegal (ML) Autopsy"),
bullet("Definition: Postmortem examination conducted for medicolegal/legal purposes to assist courts"),
sp(2), subsection("Objectives of ML Autopsy"),
bullet("Determine CAUSE of death (what killed the person)"),
bullet("Determine MANNER of death (natural / accident / suicide / homicide / undetermined — NASH)"),
bullet("Determine MECHANISM of death (physiological derangement causing death)"),
bullet("Estimate TIME of death (PMI)"),
bullet("IDENTIFY the deceased"),
bullet("Document injuries, disease, toxicological findings"),
bullet("Provide medically accurate evidence for court of law"),
sp(4), subsection("Autopsy Procedure"),
bullet("Step 1 — EXTERNAL examination: identity, clothing, injuries, body build, lividity, rigor"),
bullet("Step 2 — INTERNAL examination: ALL cavities must be opened (cranial + thoracic + abdominal)"),
bullet("Step 3 — SPECIMEN COLLECTION: blood, urine, vitreous humor (best for alcohol), gastric contents, liver, brain"),
important('"A poor or incomplete autopsy is worse than no autopsy at all." — KSN Reddy 36th Ed. | Partial autopsies have NO PLACE in forensic pathology.'),
sp(4), subsection("Autopsy in Special Cases"),
bullet("Decomposed bodies: document external; radiographs; collect bones; DNA samples"),
bullet("Custodial deaths: Magistrate must be present; photographs mandatory; CBI/SIT referral"),
bullet("COVID-19 deaths: Full PPE (N95, double gloves, face shield); aerosol precautions"),
bullet("AIDS/Infection deaths: Universal precautions; double-gloving; cut-resistant gloves"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 13 — SAQ GROUP B
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("ANAESTHETIC DEATHS / STARVATION / INFANT DEATHS / FIREARM INJURIES / BLOOD STAINS / IMPOTENCE", 13), sp(6),
section("Anaesthetic & Operative Deaths"),
simple_table(
["Phase", "Causes"],
[
["Pre-operative", "Undiagnosed cardiac/respiratory disease, hypertension, unrecognized drug interactions"],
["Induction", "Laryngospasm, failed intubation, anaphylaxis to anesthetic agents, rapid IV injection"],
["Maintenance", "Hypoxia, hypotension, cardiac arrhythmias, malignant hyperthermia, venous air embolism"],
["Post-operative", "PE, aspiration pneumonia (Mendelson syndrome), hemorrhage, sepsis, DVT"],
],
[4*cm, 13*cm]
),
important("Malignant Hyperthermia: Genetic muscle disorder; triggered by halothane/succinylcholine; extreme hyperthermia + rigidity; TREAT with DANTROLENE | 3 Ds must be proven for negligence: Duty + Dereliction + Damage"),
sp(6), hr(),
section("Starvation (Inanition)"),
bullet("Progressive weight loss, cachexia, extreme emaciation, electrolyte imbalance, hypoglycemia"),
subsection("PM Findings"),
bullet("Extreme emaciation; parchment-like dry skin; absent subcutaneous fat"),
bullet("Atrophy of ALL organs especially heart muscle — brown atrophy (lipofuscin deposits)"),
bullet("Empty GIT; absent omental fat"),
bullet("Death from cardiac failure or secondary infection"),
key_box("Medicolegal importance: Child/elder neglect and abuse | Deaths in custody | Disaster victims | Anorexia nervosa"),
sp(6), hr(),
section("Infant Deaths & Infanticide"),
subsection("Key Questions at Autopsy"),
bullet("1. Was it a LIVEBIRTH? (most important)"),
bullet("2. Was the child VIABLE (>28 weeks / >1 kg)?"),
bullet("3. What was the CAUSE of death?"),
sp(4),
simple_table(
["Test", "Positive Result (Livebirth)", "Negative (Stillbirth)"],
[
["Hydrostatic Lung Test\n(Raygat's test)", "Lungs FLOAT in water (air entered from respiration)", "Lungs SINK (no air — no breathing)"],
["GIT Air Test", "Air in stomach/intestine (from 1st breath/cry)", "Empty GIT"],
["Lung appearance", "Bright red, crepitant, covers heart", "Pale purple, dense, solid"],
["Umbilical cord", "Vessels contain blood", "Empty vessels"],
],
[4*cm, 6.5*cm, 6.5*cm]
),
important("SIDS: Unexplained infant death 1-12 months during sleep; DIAGNOSIS OF EXCLUSION; peak 2-4 months; full autopsy required"),
sp(6), hr(),
section("Firearm Injuries — Entry vs Exit"),
simple_table(
["Feature", "Entry Wound", "Exit Wound"],
[
["Size", "Smaller (bullet diameter)", "Larger (tumbling + tissue displacement)"],
["Edges", "Inverted (pushed inward)", "Everted (pushed outward)"],
["Abrasion collar", "PRESENT (skin drag)", "Absent"],
["Contusion ring", "Present", "Absent"],
["Burning/Tattooing","Present (at close range)", "Absent"],
["Soiling/Soot", "Present (contact/near contact)","Absent"],
],
[4*cm, 6.5*cm, 6.5*cm]
),
sp(4),
simple_table(
["Range", "Features"],
[
["Contact wound", "Muzzle imprint; stellate laceration; soot INSIDE wound; cherry-red discoloration of muscle (CO)"],
["Near contact", "Soot + burning + tattooing/stippling on skin"],
["Close range (<60cm)","Soot + tattooing only; no burning"],
["Distant (>60cm)", "Only abrasion collar; NO soot, tattooing, or burning"],
],
[4*cm, 13*cm]
),
key_box("Firearm Residue Tests: Dermal Nitrate (paraffin) test — unreliable | AAS (Atomic Absorption Spectrophotometry) — Gold standard | SEM-EDX — best for GSR analysis"),
sp(6), hr(),
section("Blood Stain Examination"),
subsection("Step 1 — Confirm it is blood"),
bullet("Benzidine/Kastle-Meyer test: blue-green color reaction (presumptive)"),
bullet("Luminol test: chemiluminescence; detects blood even after cleaning"),
bullet("Spectroscopic exam: detects hemoglobin absorption bands"),
subsection("Step 2 — Confirm it is HUMAN blood"),
bullet("Precipitin test (Uhlenhuth): antisera to human proteins → precipitation"),
bullet("DNA analysis: gold standard"),
subsection("Step 3 — ABO Grouping"),
bullet("Lattes crust test | Absorption-inhibition test | Absorption-elution test"),
sp(4),
important("Semen ID: Acid phosphatase test (most sensitive screening) | PSA (Prostate Specific Antigen) — highly specific for semen | Florence test: choline iodide crystals (not specific for human semen)"),
sp(6), hr(),
section("Impotence and Sterility"),
simple_table(
["Condition", "Male Causes", "Female Causes"],
[
["Impotence\n(inability to perform sex)", "Organic: hypospadias, trauma, neurological, vascular, endocrine\nFunctional: anxiety, depression\nDrugs: antihypertensives, alcohol", "Not applicable (arousal disorders)"],
["Sterility\n(inability to reproduce)", "Azoospermia, oligospermia\nObstruction (vasectomy, epididymitis)\nEndocrine: hypogonadism\nSystemic: DM, renal failure", "Ovarian: PCOS, POF\nTubal: PID, endometriosis\nUterine: fibroids, Asherman's\nCervical: stenosis, cervicitis"],
],
[4*cm, 6.5*cm, 6.5*cm]
),
key_box("ML Importance: Nullity of marriage (impotence existing before marriage) | Disputed paternity | Sterility as evidence in criminal cases"),
PageBreak(),
]
# ═══════════════════════════════════════════════════════════════════════
# CHAPTER 14 — SAQ GROUP C: VIRGINITY / FORENSIC PSYCHIATRY / POISONS / CORROSIVES
# ═══════════════════════════════════════════════════════════════════════
story += [
chapter_header("VIRGINITY, PREGNANCY, FORENSIC PSYCHIATRY, POISONS & CORROSIVES", 14), sp(6),
section("Virginity & Hymen"),
bullet("Hymen: thin mucous membrane fold at vaginal entrance"),
bullet("Types: annular, crescentic, fimbriated, denticular, septate, cribriform, imperforate"),
bullet("Fresh tears: at 6 o'clock (most common) or 4 & 8 o'clock positions — in recent rape"),
bullet("Old healed notches: irregular, triangular, at margins — healed lacerations"),
important("SC India 2013: Two-finger test ABOLISHED. Ruptured hymen ≠ rape. Opinion based on overall clinical examination, not hymen status alone."),
sp(4), section("Signs of Pregnancy"),
simple_table(
["Category", "Signs"],
[
["Probable signs", "Amenorrhea, morning sickness (nausea/vomiting), breast engorgement, quickening (fetal movement by mother 18-20 wks), Hegar's sign, Braxton-Hicks contractions, uterine enlargement, Goodell's sign, Chadwick's sign (bluish vagina)"],
["Positive signs", "Fetal heart sounds on auscultation, fetal movements palpated by examiner, ultrasound confirmation of fetus (definitive)"],
],
[4*cm, 13*cm]
),
sp(4), section("Signs of Recent Delivery"),
bullet("Lochia (uterine discharge) for 4-6 weeks; initially red (lochia rubra)"),
bullet("Uterine fundus palpable at umbilicus level immediately post-delivery"),
bullet("Dilated cervix; raw placental site (Placental site bleeding)"),
bullet("Breast engorgement; colostrum/milk production"),
bullet("Perineal tears/episiotomy scars"),
sp(6), hr(),
section("Forensic Psychiatry"),
subsection("McNaughten Rules (1843) — Basis of Criminal Insanity Defence"),
body("A person is NOT criminally responsible if at the time of the act:"),
bullet("(1) They did not know the NATURE and QUALITY of the act, OR"),
bullet("(2) If they knew, they did not know it was WRONG"),
important("India uses McNaughten Rules + Irresistible Impulse Test | IPC Sec.84 / BNS Sec.22: 'Act of unsound mind' = defence to criminal charge"),
sp(4),
simple_table(
["Concept", "Definition"],
[
["Fitness to stand trial", "Person must understand nature of proceedings + charges + ability to instruct counsel"],
["Testamentary capacity", "Sound mind to make valid will; know nature of act, extent of property, potential beneficiaries"],
["Mental Health Act 2017", "Right to mental healthcare; advance directives; Sec.115: attempt to suicide = 'person in distress' (NOT criminal)"],
["Irresistible impulse", "Person knows act is wrong but cannot control the impulse (added to McNaughten in India)"],
],
[4.5*cm, 12.5*cm]
),
sp(6), hr(),
section("Key Poisons — High Yield"),
simple_table(
["Poison", "Source/Type", "Key Features", "Diagnosis", "Treatment"],
[
["Arsenic", "Arsenic trioxide (white arsenic)", "Acute: rice water stools, garlic breath, GI necrosis | Chronic: Mees lines, rain-drop pigmentation, peripheral neuropathy", "Marsh test (gold standard), Reinsch test", "BAL (dimercaprol); D-penicillamine; DMSA"],
["Opium/Morphine","Papaver somniferum", "Triad: COMA + PINPOINT PUPILS + RESPIRATORY DEPRESSION", "Urine drug screen", "NALOXONE (IV); supportive; repeat doses"],
["Alcohol (Ethanol)","Fermentation/distillation", "BAC >300 mg/dL = coma; >400-500 = fatal | Legal limit India = 30 mg/100 mL blood | Vitreous humor best post-mortem sample", "Blood/vitreous ethanol level", "Supportive; thiamine IV; dialysis in severe"],
["Strychnine", "Nux vomica seeds", "Opisthotonos; risus sardonicus; reflex tetanic convulsions; CLEAR CONSCIOUSNESS during spasms", "Stas-Otto extraction", "Diazepam; darkness/quiet; airway support"],
["Dhatura\n(Datura)", "Datura stramonium (alkaloids: atropine, hyoscine, hyoscyamine)", "Dry as bone, blind as bat, red as beet, hot as hare, mad as hatter (anticholinergic syndrome)", "Clinical; urine alkaloids", "Physostigmine (reversal); supportive"],
],
[2.5*cm, 3*cm, 5*cm, 3*cm, 3.5*cm]
),
sp(6), hr(),
section("Corrosive Poisons"),
body("<b>Mechanism:</b> Destroy tissues by direct chemical action — coagulative necrosis (acids) or liquefactive necrosis (alkalis)"),
sp(4),
simple_table(
["Acid/Alkali", "Eschar Color", "Distinguishing Feature", "PM Findings"],
[
["Sulfuric acid\n(H₂SO₄ — vitriol)", "Firm, hard, brown-black charred eschar", "Most common acid in India (acid attacks); coffey-colored vomitus", "Extensive corrosion mouth → stomach; perforation possible"],
["Nitric acid\n(HNO₃)", "Yellow staining (xanthoprotein reaction); yellow-brown eschar", "Produces NO₂ fumes; yellow discoloration of skin", "Similar to H₂SO₄; pulmonary edema from fumes"],
["Hydrochloric acid\n(HCl)", "White/grey eschar", "HCl fumes; grey-white staining", "Corrosion of GI tract; pulmonary edema"],
["Strong alkalis\n(NaOH, KOH)", "Soft, soapy, white eschar; deeper penetration", "Greasy/soapy feel to skin; deeper tissue destruction", "Liquefactive necrosis (deeper than acids); bowel loops softened"],
],
[3.5*cm, 4.5*cm, 4.5*cm, 4.5*cm]
),
important("NEVER induce vomiting in corrosive poisoning (secondary esophageal burns) | NEVER neutralize (exothermic reaction adds thermal injury) | Dilution with milk/water ONLY | Late complication: esophageal stricture"),
sp(6), hr(),
section("Medicolegal Aspects of Wounds — Manner Determination"),
simple_table(
["Feature", "Homicidal", "Suicidal", "Accidental"],
[
["Site", "Any site; back common", "Accessible sites (wrist, throat, temple)", "Depends on activity"],
["Hesitation cuts", "Absent", "PRESENT (tentative cuts near main wound)", "Absent"],
["Defense injuries", "PRESENT", "Absent", "Usually absent"],
["Clothing cuts", "Present", "Often absent/minimal", "Present"],
["Direction", "Variable", "L→R in right-handed (throat cut)", "Variable"],
["Scene evidence", "Signs of struggle", "Suicide note; isolated spot", "Contextual"],
],
[3.5*cm, 4.5*cm, 4.5*cm, 4.5*cm]
),
sp(8),
HRFlowable(width="100%", thickness=1.5, color=DARK_BLUE),
sp(4),
Paragraph("Reference: The Essentials of Forensic Medicine and Toxicology, 36th Edition (2026) — KS Narayana Reddy", SMALL),
Paragraph("Includes updated: BNS/BNSS 2023 | ICD-11 | MTP Act 2021 | Mental Health Act 2017 | COVID-19 autopsy guidelines", SMALL),
]
return story
# ═══════════════════════════════════════════════════════════════════════════════
# BUILD PDF
# ═══════════════════════════════════════════════════════════════════════════════
def main():
doc = SimpleDocTemplate(
OUT,
pagesize=A4,
leftMargin=1.5*cm,
rightMargin=1.5*cm,
topMargin=1.8*cm,
bottomMargin=1.5*cm,
title="Forensic Medicine Quick Reference — KS Narayana Reddy 36th Ed.",
author="KS Narayana Reddy",
subject="Forensic Medicine and Toxicology Quick Reference Guide",
creator="Orris Medical AI"
)
story = build_story()
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"✅ PDF created: {OUT}")
if __name__ == "__main__":
main()
cd /tmp/workspace/forensic-guide && python3 build_pdf.py 2>&1
ls -lh /tmp/workspace/forensic-guide/Forensic_Medicine_Quick_Reference_KSNarayanaReddy.pdf
Forensic Medicine Quick Reference KSNarayanaReddy
PDF Document · PDF
| # | Topic | Type |
|---|---|---|
| 1 | Death and Its Causes (ICD-11 framework, types, legal definitions) | LAQ |
| 2 | Postmortem Changes (algor mortis, livor mortis color table, rigor mortis, decomposition) | LAQ |
| 3 | Mechanical Asphyxia (stages, all types comparison table, PM findings) | LAQ |
| 4 | Thermal Deaths (heat cramps/stroke/burns degrees, Rule of Nines, hypothermia/frostbite) | LAQ |
| 5 | Medical Law & Ethics (BANM principles, consent, 3Ds of negligence, Inquest types) | LAQ |
| 6 | Mechanical Injuries (all wound types, regional head injuries, defense injuries) | LAQ |
| 7 | Identification (fingerprints, DNA, sex/age determination tables) | LAQ |
| 8 | Sexual Offences (rape definition, evidence collection, hymen findings, sperm timelines) | LAQ |
| 9 | Abortion (types, methods, evidence, MTP Act 2021) | LAQ |
| 10 | General Toxicology (classification, SLAP treatment, antidotes table) | LAQ |
| 11 | Agricultural Poisons (OPC/SLUDGE, carbamates, AlPO₄, paraquat) | LAQ |
| 12 | Legal Procedure + Autopsy + Medicolegal Certificates | SAQ |
| 13 | Anaesthetic deaths / Starvation / Infant deaths / Firearm injuries / Blood stains / Impotence | SAQ |
| 14 | Virginity-Pregnancy / Forensic Psychiatry (McNaughten) / Poisons / Corrosives | SAQ |