Create an answer for md forensic medicine exam , on the topic “ foetal development and its Medicolegal significance for 20 marks and foetal circulation and its Medicolegal importance for 20 marks “ . Suggest diagrams and flow charts and skeletal diagrams
FERTILISATION (Week 0)
│
▼
ZYGOTE → MORULA → BLASTOCYST (Week 1)
│
▼
IMPLANTATION (Week 2)
│
▼
EMBRYONIC DISC formed (Week 3)
│
▼
ALL ORGAN SYSTEMS initiated (Weeks 4-8)
Heart beats, limb buds appear, crown-rump length ~3 cm
│
▼
FOETAL PERIOD BEGINS (Week 9)
│
┌────┴──────────────────────────────────────────────────────┐
│ MILESTONES TABLE │
├──────────────┬───────────┬───────────┬────────────────────┤
│ Age (weeks) │ Length │ Weight │ Key Milestone │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 12 │ 8 cm │ 45 g │ Ossification begins│
│ │ │ │ Sex determinable │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 16 │ 14 cm │ 110 g │ Quickening felt │
│ │ │ │ Scalp hair appears │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 20 │ 20 cm │ 340 g │ Vernix caseosa │
│ │ │ │ Lanugo hair │
│ │ │ │ Eyebrows, lashes │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 24 │ 28 cm │ 600 g │ Eyelids fused │
│ │ │ │ Viable (limit) │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 28 │ 35 cm │ 1200 g │ Eyes open │
│ │ │ │ Legally viable │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 32 │ 40 cm │ 1800 g │ Testes descend │
│ │ │ │ (Males) │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 36 │ 45 cm │ 2400 g │ Subcutaneous fat │
│ │ │ │ Nails reach tips │
├──────────────┼───────────┼───────────┼────────────────────┤
│ 38 (Term) │ 50 cm │ 3200 g │ Full-term baby │
└──────────────┴───────────┴───────────┴────────────────────┘
Memory Aid (Haase's Rule): Crown-to-heel length = Month² (for months 1-5) and Month × 5 (for months 5-10). E.g., at month 5: length = 5 × 5 = 25 cm.
OSSIFICATION CENTRE CHART
┌──────────────────────────────────────────────────────────┐
│ AGE │ OSSIFICATION CENTRE │ SIGNIFICANCE │
├──────────────┼───────────────────────────┼───────────────┤
│ 7th month │ Lower femoral epiphysis │ Proof of 7+ │
│ (28 weeks) │ (Béclard's point) │ months, legal │
│ │ Size: 5-6 mm │ viability │
├──────────────┼───────────────────────────┼───────────────┤
│ 9th month │ Upper tibial epiphysis │ Proof of 9+ │
│ (36 weeks) │ (Poland's point) │ months, near │
│ │ Size: 3-4 mm │ term │
├──────────────┼───────────────────────────┼───────────────┤
│ Birth │ Calcaneus, talus, │ Maturity │
│ │ cuboid present │ │
├──────────────┼───────────────────────────┼───────────────┤
│ 3-6 months │ Head of humerus appears │ Postnatal age │
└──────────────┴───────────────────────────┴───────────────┘
KEY FORENSIC OSSIFICATION POINTS:
Skull
├── Frontal bone (2 centres, ossification by 8th month)
├── Parietal bones (present from 3rd month)
└── Sphenoid (partially ossified at term)
Long Bones
├── Femur shaft ossifies: 7th week of embryonic life
├── Lower femoral epiphysis: 36 weeks (BÉCLARD'S POINT ★)
└── Upper tibial epiphysis: 38-40 weeks (POLAND'S POINT ★)
★ = most important medicolegal ossification landmarks
| Feature | Approx. Age |
|---|---|
| Eyelids sealed (fused) | 9-26 weeks |
| Eyelids open | 26-28 weeks |
| Lanugo (fine downy hair) | 20-28 weeks; shed by 36 weeks |
| Vernix caseosa appears | 20 weeks; shed by 40 weeks |
| Ear cartilage soft/absent | <36 weeks |
| Ear cartilage firm, springs back | >36 weeks (maturity) |
| Sole creases (deep) | >38 weeks |
| Nails reaching fingertips | >36 weeks |
| Testes in scrotum | >36 weeks (male) |
| Labia majora covering minora | >36 weeks (female) |
| Breast nodule >5 mm | Term (>38 weeks) |
FLOW CHART: ABORTION - MEDICOLEGAL FRAMEWORK
┌─────────────────────────────────────────────────────────┐
│ ABORTION │
│ (Expulsion of conceptus before viability) │
│ i.e., before 28 weeks │
└───────────────────┬─────────────────────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
SPONTANEOUS INDUCED/CRIMINAL
(Miscarriage)
│
┌───────────────┼───────────────┐
▼ ▼ ▼
LEGAL ILLEGAL THERAPEUTIC
(MTP Act) (Criminal) (Medical grounds)
<20 weeks Any time <20 weeks
<24 weeks
(RCH 2021)
│
▼
FORENSIC EVIDENCE SOUGHT:
- Foetal parts in uteri/drains
- Age of foetus (to confirm abortion)
- Signs of instrumentation
- Drugs/chemicals used
- Products of conception

FLOW CHART: FOETAL CIRCULATION
PLACENTA
(Gas exchange occurs here)
│
▼ (Oxygenated blood)
UMBILICAL VEIN (1 vein, O₂-rich)
│
┌───────┴───────────┐
▼ (50%) ▼ (50%)
DUCTUS VENOSUS HEPATIC SINUSOIDS
(bypasses liver) (portal circulation)
│ │
└─────────┬──────────┘
▼
INFERIOR VENA CAVA (IVC)
(mixed blood - medium O₂)
│
▼
RIGHT ATRIUM
│
┌──────────┴──────────────┐
▼ ▼
FORAMEN OVALE RIGHT VENTRICLE
(2/3 blood shunts (1/3 blood)
to left atrium) │
│ ▼
▼ PULMONARY TRUNK
LEFT ATRIUM │
│ ┌─────────┴──────────┐
▼ ▼ (10%) ▼ (90%)
LEFT VENTRICLE LUNGS DUCTUS ARTERIOSUS
│ (minimal flow) (bypasses lungs)
▼ │
ASCENDING AORTA ▼
│ DESCENDING AORTA
▼ │
Head, Neck, ┌──────────────┼─────────────┐
Upper limbs ▼ ▼ ▼
(Well-oxygenated) VISCERA LOWER LIMBS UMBILICAL ARTERIES (2)
│
▼
PLACENTA
(Deoxygenated blood
returns for re-oxygenation)
| Shunt | Connects | Function | Adult Remnant |
|---|---|---|---|
| Ductus venosus | Umbilical vein → IVC | Bypasses liver; delivers oxygenated blood directly to heart | Ligamentum venosum |
| Foramen ovale | Right atrium → Left atrium | Shunts oxygenated IVC blood to systemic circulation, bypassing lungs | Fossa ovalis |
| Ductus arteriosus | Pulmonary trunk → Descending aorta | Diverts right ventricular output away from vasoconstricted lungs | Ligamentum arteriosum |
| Vessel | Number | Contents | Adult Remnant |
|---|---|---|---|
| Umbilical vein | 1 | Oxygenated blood FROM placenta | Ligamentum teres hepatis (round ligament of liver) |
| Umbilical arteries | 2 | Deoxygenated blood TO placenta | Medial umbilical ligaments (superior vesical arteries retain patency) |
Mnemonic: "AVA" in the umbilical cord - Artery, Vein, Artery (2 arteries, 1 vein)

FIRST BREATH
│
▼
Lungs expand → Pulmonary vascular resistance FALLS markedly
│
▼
Pulmonary blood flow INCREASES
│
▼
Left atrial pressure > Right atrial pressure
│
┌──────┴──────┐
▼ ▼
FORAMEN OVALE DUCTUS ARTERIOSUS
functionally blood flow REVERSES
closes (aorta → pulmonary trunk)
(valve pressed High O₂ + Low PGE₂ →
against septum muscular constriction
secundum) │
▼
Permanent fibrous closure
by 2-3 months (becomes
Ligamentum arteriosum)
UMBILICAL CIRCULATION:
│
▼
Cord clamped → Umbilical arteries constrict immediately
Umbilical vein closes within minutes
Ductus venosus sphincter constricts
│
▼
All placental blood now enters hepatic sinusoids
| Event | Timing |
|---|---|
| Foramen ovale - functional closure | At birth (first breath) |
| Foramen ovale - anatomical closure | 3 months to 1 year |
| Patent Foramen Ovale (PFO) persists | 25-30% of adults (normal variant) |
| Ductus arteriosus - functional closure | 24-48 hours post-birth |
| Ductus arteriosus - 20% closed | End of 24 hours |
| Ductus arteriosus - 80% closed | End of 48 hours |
| Ductus arteriosus - 100% closed | 96 hours (4 days) |
| Ductus arteriosus - permanent (ligamentum arteriosum) | 2-3 months |
| Ductus venosus | Within hours of birth |
| Umbilical vein | Within minutes of birth |
HYDROSTATIC TEST - FLOW CHART
Take lungs from dead neonate
│
▼
Place in water
│
┌──────┴──────────┐
▼ ▼
FLOAT SINK
│ │
▼ ▼
Child BREATHED Child DID NOT
after birth BREATHE / stillborn
(Live birth (Suggests intrauterine
established) death or stillbirth)
│
▼
Subdivide lung lobes
│
▼
Each subdivision floats? → Confirms aeration
│
▼
Microscopy: alveoli expanded?
→ Confirms liveborn
PPHN - FORENSIC SIGNIFICANCE CHART:
PPHN found at autopsy
│
▼
CAUSES:
├── Meconium aspiration (birth asphyxia)
├── Sepsis (Group B Streptococcus)
├── Congenital heart disease
├── Diaphragmatic hernia
└── Idiopathic
│
▼
MEDICOLEGAL IMPLICATION:
Was PPHN due to negligent management?
- Failure to resuscitate → birth asphyxia → PPHN
- Missed sepsis → uncontrolled infection → PPHN
| Finding | Significance |
|---|---|
| Fresh cut / torn cord | Live birth possible; infanticide suspected |
| Naturally separated / ligated cord | Normal neonatal care occurred |
| Thrombosis in umbilical vessels | Intrauterine death |
| Wharton's jelly intact | Recent birth |
| Cord blood available | DNA identification, metabolic disorders |
| Single umbilical artery (only one artery) | Associated with renal agenesis; Potter sequence |
| CHD | Reason tolerated in utero | What happens at birth |
|---|---|---|
| Transposition of great arteries | Both circuits deliver mixed blood via shunts | Shunts close → no mixing → death |
| Hypoplastic left heart | Right ventricle handles all output | Left ventricle must function → cardiac failure |
| Coarctation of aorta | Ductus arteriosus maintains lower body perfusion | DA closes → lower body ischaemia |
| Pulmonary atresia | DA feeds pulmonary circulation | DA closes → severe hypoxia |
| Foetal Structure | Function | Adult Remnant |
|---|---|---|
| Ductus venosus | Bypasses liver | Ligamentum venosum |
| Foramen ovale | Bypasses lungs (R→L shunt) | Fossa ovalis |
| Ductus arteriosus | Bypasses lungs (pulm trunk→aorta) | Ligamentum arteriosum |
| Umbilical vein | O₂-rich blood from placenta | Ligamentum teres hepatis |
| Umbilical arteries | Deoxygenated blood to placenta | Medial umbilical ligaments |
| Allantois | Urine drainage | Median umbilical ligament (urachus) |
| Topic | Medicolegal Issue |
|---|---|
| Foetal age/development | Abortion law, viability, legitimacy, identification |
| Béclard's ossification point | 36 weeks gestation (maturity, legal viability) |
| Hydrostatic test | Live birth vs. stillbirth (infanticide charges) |
| Umbilical cord findings | Live birth, infanticide, intrauterine death |
| Patent DA at autopsy | Prematurity, negligence, RDS |
| PPHN | Birth asphyxia, medical negligence |
| Congenital heart disease | Antenatal care negligence, neonatal death |
| Foetal haemoglobin | Age at death (forensic biochemistry) |
Create a quick reference PDF cheat sheet on ossification centres and medicolegal definitions
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/forensic-cheatsheet && python3 -c "import reportlab; print('reportlab ok')"
~/forensic-cheatsheet/make_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/forensic-cheatsheet/Forensic_Ossification_Cheatsheet.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
NAVY = colors.HexColor("#0D2B55")
CRIMSON = colors.HexColor("#B22222")
GOLD = colors.HexColor("#C8960C")
LTBLUE = colors.HexColor("#D6E8F7")
LTGOLD = colors.HexColor("#FFF8E1")
LTGREEN = colors.HexColor("#E8F5E9")
LTRED = colors.HexColor("#FFEBEE")
WHITE = colors.white
GREY = colors.HexColor("#F0F0F0")
DARKGREY = colors.HexColor("#555555")
MIDBLUE = colors.HexColor("#1A4F8A")
TEAL = colors.HexColor("#00695C")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=12*mm, rightMargin=12*mm,
topMargin=12*mm, bottomMargin=12*mm,
title="Forensic Medicine Quick Reference – Ossification & Medicolegal Definitions",
author="Orris MD Forensics"
)
styles = getSampleStyleSheet()
def S(name, **kw):
"""Helper: clone a base style with overrides."""
base = styles["Normal"]
return ParagraphStyle(name, parent=base, **kw)
# ── Custom styles ────────────────────────────────────────────────────────────
TITLE_STYLE = S("Title",
fontSize=18, leading=22, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
SUBTITLE_STYLE = S("Subtitle",
fontSize=10, leading=13, textColor=LTBLUE,
fontName="Helvetica", alignment=TA_CENTER)
SECTION_STYLE = S("Section",
fontSize=11, leading=14, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_LEFT,
leftIndent=4, spaceBefore=6, spaceAfter=2)
SUBSECTION_STYLE = S("Subsection",
fontSize=9.5, leading=12, textColor=NAVY,
fontName="Helvetica-Bold", spaceBefore=4, spaceAfter=2)
BODY_STYLE = S("Body",
fontSize=8.5, leading=11.5, textColor=colors.black,
fontName="Helvetica", spaceAfter=2)
BULLET_STYLE = S("Bullet",
fontSize=8.5, leading=11.5, textColor=colors.black,
fontName="Helvetica", leftIndent=10, spaceAfter=1,
bulletIndent=4)
NOTE_STYLE = S("Note",
fontSize=7.5, leading=10, textColor=DARKGREY,
fontName="Helvetica-Oblique", leftIndent=6)
MNEMONIC_STYLE = S("Mnemonic",
fontSize=8.5, leading=11, textColor=TEAL,
fontName="Helvetica-Bold", leftIndent=6, spaceAfter=2)
HIGHLIGHT_STYLE = S("Highlight",
fontSize=8.5, leading=11.5, textColor=CRIMSON,
fontName="Helvetica-Bold")
TABLE_HDR = S("TableHdr",
fontSize=8, leading=10, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
TABLE_CELL = S("TableCell",
fontSize=7.8, leading=10, textColor=colors.black,
fontName="Helvetica")
TABLE_CELL_BOLD = S("TableCellBold",
fontSize=7.8, leading=10, textColor=NAVY,
fontName="Helvetica-Bold")
TABLE_CELL_RED = S("TableCellRed",
fontSize=7.8, leading=10, textColor=CRIMSON,
fontName="Helvetica-Bold", alignment=TA_CENTER)
# ── Helpers ──────────────────────────────────────────────────────────────────
def section_header(title, bg=NAVY):
data = [[Paragraph(f" {title}", SECTION_STYLE)]]
t = Table(data, colWidths=[186*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROWPADDING", (0,0), (-1,-1), 4),
("BOX", (0,0), (-1,-1), 0.5, GOLD),
]))
return t
def mini_header(title, bg=MIDBLUE):
data = [[Paragraph(f" {title}", S("mh", parent=SECTION_STYLE, fontSize=9, leading=12))]]
t = Table(data, colWidths=[186*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROWPADDING", (0,0), (-1,-1), 3),
("BOX", (0,0), (-1,-1), 0.3, GOLD),
]))
return t
def make_table(headers, rows, col_widths, row_colors=None, stripe=True):
hdr_row = [Paragraph(h, TABLE_HDR) for h in headers]
data = [hdr_row]
for i, row in enumerate(rows):
styled = []
for j, cell in enumerate(row):
if isinstance(cell, tuple):
styled.append(Paragraph(cell[0], cell[1]))
else:
styled.append(Paragraph(str(cell), TABLE_CELL))
data.append(styled)
t = Table(data, colWidths=col_widths, repeatRows=1)
base_style = [
("BACKGROUND", (0,0), (-1,0), NAVY),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
("ROWPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]
if stripe:
for i in range(1, len(data)):
bg = LTBLUE if i % 2 == 0 else WHITE
base_style.append(("BACKGROUND", (0,i), (-1,i), bg))
t.setStyle(TableStyle(base_style))
return t
def hr():
return HRFlowable(width="100%", thickness=0.5, color=GOLD, spaceAfter=3, spaceBefore=3)
# ─────────────────────────────────────────────────────────────────────────────
# PAGE 1 BUILD
# ─────────────────────────────────────────────────────────────────────────────
story = []
# ── Cover banner ─────────────────────────────────────────────────────────────
banner_data = [[
Paragraph("FORENSIC MEDICINE", TITLE_STYLE),
Paragraph("QUICK REFERENCE CHEAT SHEET", TITLE_STYLE),
]]
banner = Table([[Paragraph("FORENSIC MEDICINE | QUICK REFERENCE CHEAT SHEET", TITLE_STYLE)]],
colWidths=[186*mm])
banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("ROWPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1.5, GOLD),
]))
story.append(banner)
story.append(Paragraph(
"Ossification Centres for Age Estimation • Foetal Development Milestones • Medicolegal Definitions",
SUBTITLE_STYLE))
story.append(Spacer(1, 4*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 1 – HAASE'S RULE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("1. HAASE'S RULE — Crown-to-Heel Length Estimation"))
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
"For the first 5 months: <b>Length (cm) = Month²</b> | "
"For months 5–10: <b>Length (cm) = Month × 5</b>",
BODY_STYLE))
story.append(Spacer(1,1*mm))
haase_headers = ["Month", "Length (cm)", "Weight (approx)", "Key Feature"]
haase_rows = [
["1", "1", "—", "Embryo; heart begins to beat"],
["2", "4", "—", "Limb buds; all organs forming"],
["3", "9", "~45 g", "Ossification begins; sex determinable"],
["4", "16", "~110 g", "Quickening felt; scalp hair"],
["5 ★", "25", "~340 g", "Vernix caseosa; lanugo; eyebrows"],
["6", "30", "~600 g", "Eyelids fused; limit of viability"],
["7 ★", "35", "~1200 g", "Eyes open; Béclard's centre (lower femur)"],
["8", "40", "~1800 g", "Testes begin descent (male)"],
["9 ★", "45", "~2400 g", "Poland's centre (upper tibia); nails reach tips"],
["10 (Term)", "50", "~3200 g", "Ear cartilage firm; sole creases; term"],
]
haase_widths = [18*mm, 28*mm, 36*mm, 104*mm]
story.append(make_table(haase_headers, haase_rows, haase_widths))
story.append(Paragraph("★ = critical medicolegal age points", NOTE_STYLE))
story.append(Spacer(1, 3*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 2 – OSSIFICATION CENTRES TABLE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("2. OSSIFICATION CENTRES — Medicolegal Significance", bg=CRIMSON))
story.append(Spacer(1, 2*mm))
osc_headers = ["Centre", "Location", "Age Appears", "Size at Term", "Medicolegal Significance"]
osc_rows = [
[
("BÉCLARD'S POINT ★★★", TABLE_CELL_RED),
"Lower femoral epiphysis",
"36 weeks (9th month)",
"5–6 mm",
"Proves ≥36 weeks gestation; legal viability established; survives putrefaction"
],
[
("POLAND'S POINT ★★", TABLE_CELL_RED),
"Upper tibial epiphysis",
"38–40 weeks (10th month)",
"3–4 mm",
"Confirms near-term / full-term; used with Béclard's for corroboration"
],
["Calcaneus", "Heel bone", "5th–6th foetal month", "Present at birth", "Confirms >24 weeks; seen on X-ray in foetal remains"],
["Talus", "Ankle bone", "7th–8th foetal month", "Present at birth", "Part of maturity assessment"],
["Cuboid", "Lateral mid-foot", "Near term (38–40 wks)", "Small at birth", "Confirms term birth"],
["Head of humerus", "Proximal humerus", "1st postnatal year (3–6 mo)", "—", "Postnatal age estimation"],
["Capitulum of humerus", "Lateral condyle", "1–2 years postnatal", "—", "Child age estimation in abuse cases"],
["Femoral head", "Proximal femur", "4–6 months postnatal", "—", "Postnatal age / neglect / AVN"],
["Iliac crest", "Pelvis", "Adolescence (~15 yrs)", "—", "Age estimation 15–23 yrs"],
["Medial clavicle epiphysis", "Sternoclavicular joint", "18–20 years", "Fused by 25–30 yrs", "Age 18–30 estimation; most reliable adult marker"],
]
osc_widths = [38*mm, 32*mm, 28*mm, 20*mm, 68*mm]
story.append(make_table(osc_headers, osc_rows, osc_widths))
story.append(Paragraph(
"★★★ BÉCLARD'S POINT is the single most important ossification centre in forensic practice.",
MNEMONIC_STYLE))
story.append(Spacer(1, 2*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 3 – EXTERNAL MATURITY SIGNS
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("3. EXTERNAL SIGNS OF FOETAL MATURITY"))
story.append(Spacer(1, 2*mm))
ext_headers = ["Feature", "Preterm (<36 wks)", "Term (≥38 wks)", "Medicolegal Note"]
ext_rows = [
["Ear cartilage", "Soft, folds easily, stays folded", "Firm, springs back instantly", "Key maturity marker at autopsy"],
["Sole creases", "Absent or only anterior creases", "Deep creases covering entire sole", "Score-based maturity grading"],
["Lanugo hair", "Abundant over body", "Only on shoulders/back", "Shed by 36–38 weeks"],
["Vernix caseosa", "Thick coating", "Minimal or absent", "Protective, shed near term"],
["Nails", "Soft, do not reach fingertips", "Reach or exceed fingertips", "Maturity + overdue if beyond tips"],
["Breast nodule", "<5 mm or absent", "≥7 mm diameter", "Ballard/New Ballard score"],
["Genitalia (M)", "Testes undescended; empty scrotum", "Testes in scrotum; rugae present", "Testes descend ~36 wks"],
["Genitalia (F)", "Labia minora prominent", "Labia majora cover minora completely", "Fat deposition in majora at term"],
["Skin", "Thin, gelatinous, transparent", "Thick, opaque, peeling", "Premature = thin, veins visible"],
["Eyelids", "Fused shut <26 wks", "Open by 26–28 wks", "Fused = severe prematurity"],
]
ext_widths = [28*mm, 42*mm, 42*mm, 74*mm]
story.append(make_table(ext_headers, ext_rows, ext_widths))
story.append(Spacer(1, 3*mm))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 4 – MEDICOLEGAL DEFINITIONS
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("4. ESSENTIAL MEDICOLEGAL DEFINITIONS"))
story.append(Spacer(1, 2*mm))
definitions = [
("VIABILITY",
"Capacity of a foetus to survive independently after delivery. "
"India (MTP Act): 20 weeks (24 wks for special categories under 2021 Amendment). "
"UK: 24 weeks. WHO: 22–24 weeks. Legal (India courts): 28 weeks / ≥1000 g."),
("LIVE BIRTH (WHO)",
"Complete expulsion/extraction from mother of a product of conception that, AFTER separation, "
"breathes OR shows any other evidence of life (heartbeat, pulsation of cord, voluntary muscle movement), "
"regardless of gestational age."),
("STILLBIRTH",
"Birth after 28 completed weeks of gestation of a baby that shows NO sign of life (no breathing, "
"no heartbeat, no voluntary movement). Must be registered. No birth certificate issued (India). "
"Macerated stillbirth = intrauterine death; Fresh stillbirth = intrapartum death."),
("INFANTICIDE",
"Unlawful killing of a newborn infant by wilful act or omission. Under Infanticide Act (UK): "
"mother who kills her child within 12 months of birth while balance of mind disturbed by effects "
"of birth/lactation is guilty of infanticide (not murder). India: Sections 302/304 IPC apply."),
("CONCEALMENT OF BIRTH",
"Disposal of the body of a child after birth to conceal the fact of its birth, whether the child "
"was born alive or dead. India: Section 318 IPC (now Section 319 BNS 2023). Punishable by up to "
"2 years imprisonment ± fine. No need to prove child was born alive."),
("FOETICIDE",
"Willful destruction of a foetus in the uterus. Includes criminal abortion. "
"India: Punishable under Section 312 IPC (illegal abortion) with up to 7 years imprisonment."),
("ABORTION",
"Expulsion of products of conception before viability (before 20–28 weeks depending on jurisdiction). "
"Spontaneous = miscarriage. Induced = may be legal (MTP Act) or illegal (criminal). "
"MTP Act 1971 (amended 2021): Legal abortion up to 20 weeks (routine), up to 24 weeks (special categories)."),
("LEGITIMACY",
"A child is legitimate if born within a valid marriage or within 280 days after dissolution of marriage "
"(presumption). Minimum gestation 210 days (7 months). Maximum accepted by courts: 280–300 days (some "
"courts accepted up to 349 days). DNA testing now definitive."),
("GESTATIONAL AGE",
"Duration of pregnancy calculated from the FIRST DAY of the last menstrual period (LMP). "
"Normal = 280 days (40 weeks) from LMP or 266 days from ovulation/fertilisation. "
"Established by: USG, fundal height, foetal parameters, ossification centres at autopsy."),
("HYDROSTATIC TEST (Docimasia Pulmonum)",
"Medicolegal test for live birth. Principle: foetal lungs are atelectatic (density >1, SINK). "
"After breathing, air expands alveoli (density <1, FLOAT). "
"Positive (floats) = baby breathed after birth. "
"Limitations: putrefaction causes false +ve; CPR/resuscitation causes false +ve; forcible compression causes false -ve."),
("BIRTH ASPHYXIA",
"Failure to establish adequate respiration at birth due to insufficient oxygen (hypoxia) and/or "
"accumulation of CO2 (hypercapnia) and lactic acid. Causes: cord prolapse, placental abruption, "
"obstructed labour, meconium aspiration. Leads to HIE. Medicolegal: major cause of medical negligence claims."),
("MACERATION",
"Post-mortem autolysis of a stillborn foetus retained in utero after intrauterine death. "
"Features: skin slippage, discolouration (reddish-brown), softening of tissues, overlapping skull bones. "
"Takes 12–24 hours to begin; full maceration in 3–5 days. Confirms intrauterine death."),
("MUMMIFICATION (FOETAL)",
"Drying and shrinkage of a foetus retained in utero for prolonged period. "
"Seen in lithopedion (calcified ectopic foetus, years to decades). "
"Forensic importance: establishes retained dead foetus vs. recent delivery."),
("CAPUT SUCCEDANEUM",
"Diffuse oedematous swelling of the scalp crossing suture lines, formed during labour due to "
"pressure of the presenting part. Present at birth, resolves in 1–2 days. "
"Distinguish from cephalhaematoma (subperiosteal, does NOT cross sutures, blood takes weeks to resolve)."),
("BIRTH INJURY",
"Physical injury sustained by neonate during labour and delivery. Includes: cephalhaematoma, "
"intracranial haemorrhage, clavicular fracture (most common), brachial plexus injury (Erb's palsy), "
"facial nerve palsy. Medicolegal: relevant in obstetric negligence claims."),
("TARDIEU'S SPOTS",
"Petechial haemorrhages on visceral pleura, epicardium, and thymic surface due to increased venous "
"pressure during asphyxia. Classic sign of asphyxial death. Also seen in birth asphyxia. "
"Must be distinguished from post-mortem hypostasis."),
("UMBILICAL CORD — FORENSIC",
"Normal cord: 50–55 cm long, 2 arteries + 1 vein (AVA). "
"Single umbilical artery: associated with renal agenesis, trisomy 18. "
"True knot: may cause foetal death. "
"Cord around neck (nuchal cord): present in 20–30% deliveries, usually harmless. "
"Fresh cut/torn cord with live birth features: infanticide suspected."),
("MTP ACT 1971 (AMENDED 2021)",
"Medical Termination of Pregnancy Act (India). "
"Up to 20 weeks: one registered medical practitioner's opinion. "
"20–24 weeks: two practitioners required; only for special categories (rape, incest, foetal abnormality, disability). "
"Beyond 24 weeks: only for substantial foetal abnormality — requires Medical Board approval. "
"Violation: criminal abortion (Section 312–316 IPC)."),
]
def_widths = [42*mm, 144*mm]
def_data = [[Paragraph("TERM", TABLE_HDR), Paragraph("DEFINITION", TABLE_HDR)]]
for i, (term, defn) in enumerate(definitions):
bg = LTGOLD if i % 2 == 0 else WHITE
def_data.append([
Paragraph(term, TABLE_CELL_BOLD),
Paragraph(defn, TABLE_CELL)
])
def_table = Table(def_data, colWidths=def_widths, repeatRows=1)
def_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), NAVY),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
("ROWPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
*[("BACKGROUND", (0, i+1), (-1, i+1), LTGOLD if i % 2 == 0 else WHITE)
for i in range(len(definitions))]
]))
story.append(def_table)
story.append(Spacer(1, 4*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 5 – KEY MNEMONICS
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("5. MNEMONICS & QUICK RECALL", bg=TEAL))
story.append(Spacer(1, 2*mm))
mnem_headers = ["Mnemonic", "What it covers"]
mnem_rows = [
['"Béclard Proves Birth" (BPB)', "Béclard = Proves ≥8 months; Poland = near-Birth (10th month)"],
['"AVA in the cord"', "2 Arteries, 1 Vein, Arteries (single umbilical artery = renal agenesis risk)"],
['"FAVE" shunts', "Foramen ovale, Arteriosus ductus, Venosus ductus = three foetal bypasses"],
['"DV → LV → RA → FO → LA" for oxygenated blood', "Ductus Venosus → IVC → Right Atrium → Foramen Ovale → Left Atrium → Systemic"],
['Haase rule: "Square then Times 5"', "Months 1–5: month², Months 5–10: month × 5 (crown-heel in cm)"],
['"SWIM test" (Hydrostatic test)', "Lungs Swim = baby breathed (live birth); Lungs Sink = stillborn/did not breathe"],
['"Ear springs back at 36"', "Firm ear cartilage that springs back = ≥36 weeks gestation"],
['"210 to 300" gestation window', "Min viability 210 days; normal 280 days; max accepted ~300 days (legitimacy)"],
['"MTP 20-24 Rule"', "Routine abortion ≤20 wks; special categories up to 24 wks (MTP Amendment 2021)"],
['"CAPS" for external maturity', "Creases (sole), Areola, Posture/lanugo, Skin texture = Ballard score components"],
]
mnem_widths = [58*mm, 128*mm]
story.append(make_table(mnem_headers, mnem_rows, mnem_widths))
story.append(Spacer(1, 3*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 6 – ADULT AGE ESTIMATION FROM BONE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("6. ADULT AGE ESTIMATION — KEY SKELETAL MARKERS", bg=colors.HexColor("#4A148C")))
story.append(Spacer(1, 2*mm))
adult_headers = ["Age Range", "Skeletal Marker", "Description"]
adult_rows = [
["15–17 yrs", "Iliac crest epiphysis appears", "Ring apophysis begins ossification"],
["18–20 yrs", "Medial clavicle epiphysis appears", "Most reliable marker for 18+ yrs"],
["20–23 yrs", "Vertebral ring apophysis fuses", "Last vertebral fusion"],
["25–30 yrs", "Medial clavicle fuses completely", "Fusion = >25 yrs; most reliable upper limit"],
["25–35 yrs", "Skull sutures begin closing", "Coronal and sagittal first; unreliable alone"],
["30–45 yrs", "Pubic symphysis changes", "Todd / Suchey-Brooks phases 1–6"],
["35–50 yrs", "Sternal end 4th rib changes", "İşcan method for rib metamorphosis"],
[">40 yrs", "Osteoarthritis changes appear", "Lipping, eburnation, narrowing joint spaces"],
[">50 yrs", "Osteoporosis, trabecular loss", "Cortical thinning; DEXA relevant"],
["Any age", "Dental eruption & wear", "Third molar: >17 yrs; wear pattern for 30+ yrs"],
]
adult_widths = [22*mm, 58*mm, 106*mm]
story.append(make_table(adult_headers, adult_rows, adult_widths))
story.append(Spacer(1, 3*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 7 – FOETAL CIRCULATION QUICK REF
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("7. FOETAL CIRCULATION — SHUNTS & CLOSURE TIMELINE", bg=CRIMSON))
story.append(Spacer(1, 2*mm))
shunt_headers = ["Shunt", "Connects", "Function", "Functional Closure", "Adult Remnant"]
shunt_rows = [
["Ductus venosus", "Umbilical vein → IVC", "Bypasses liver; delivers O₂-rich blood to heart", "Within hours of birth (sphincter)", "Ligamentum venosum"],
["Foramen ovale", "Right atrium → Left atrium", "Bypasses lungs; shunts O₂-rich IVC blood to systemic", "At first breath (L>R atrial pressure)", "Fossa ovalis"],
["Ductus arteriosus", "Pulmonary trunk → Descending aorta", "Bypasses lungs; right ventricular output to aorta", "20% by 24h; 80% by 48h; 100% by 96h", "Ligamentum arteriosum"],
["Umbilical vein", "Placenta → foetal liver/IVC", "Carries oxygenated blood from placenta", "Within minutes of birth", "Ligamentum teres hepatis"],
["Umbilical arteries (×2)", "Foetal iliac arteries → placenta", "Return deoxygenated blood to placenta", "Immediately on cord clamping", "Medial umbilical ligaments"],
]
shunt_widths = [28*mm, 36*mm, 46*mm, 36*mm, 40*mm]
story.append(make_table(shunt_headers, shunt_rows, shunt_widths))
story.append(Spacer(1, 3*mm))
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 8 – IMPORTANT LEGAL PROVISIONS
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_header("8. KEY LEGAL PROVISIONS — INDIA", bg=colors.HexColor("#1B5E20")))
story.append(Spacer(1, 2*mm))
legal_headers = ["Section", "Act", "Offence / Subject", "Punishment"]
legal_rows = [
["312 IPC / 88 BNS", "IPC 1860 / BNS 2023", "Causing miscarriage (criminal abortion)", "Up to 3 yrs; up to 7 yrs if woman objects"],
["313 IPC / 89 BNS", "IPC 1860 / BNS 2023", "Causing miscarriage without woman's consent", "Life imprisonment or 10 yrs + fine"],
["314 IPC / 90 BNS", "IPC 1860 / BNS 2023", "Death caused by abortion attempt", "Up to 10 yrs + fine; life if without consent"],
["315 IPC / 91 BNS", "IPC 1860 / BNS 2023", "Act to prevent child being born alive / causing post-birth death", "Up to 10 yrs + fine"],
["316 IPC / 92 BNS", "IPC 1860 / BNS 2023", "Causing death of quick unborn child (culpable homicide)", "Up to 10 yrs + fine"],
["318 IPC / 94 BNS", "IPC 1860 / BNS 2023", "Concealment of birth by disposal of body", "Up to 2 yrs + fine"],
["302 IPC / 101 BNS", "IPC 1860 / BNS 2023", "Infanticide (murder)", "Death or life imprisonment"],
["MTP Act 1971 (Amended 2021)", "Central Act", "Legal termination of pregnancy", "Legal: ≤20 wks; ≤24 wks (special); >24 wks Board only"],
["PCPNDT Act 1994", "Central Act", "Prohibition of sex determination of foetus", "Up to 3 yrs + fine; 5 yrs repeat offence"],
["Registration of Births & Deaths Act 1969", "Central Act", "Registration of stillbirths and live births", "Mandatory; stillbirth ≥28 wks must be registered"],
]
legal_widths = [32*mm, 30*mm, 72*mm, 52*mm]
story.append(make_table(legal_headers, legal_rows, legal_widths))
story.append(Spacer(1, 3*mm))
# ── Footer note ──────────────────────────────────────────────────────────────
hr()
story.append(hr())
story.append(Paragraph(
"References: Moore – The Developing Human (Clinically Oriented Embryology) | "
"Parikh's Textbook of Medical Jurisprudence, Forensic Medicine & Toxicology | "
"Reddy's Essentials of Forensic Medicine & Toxicology | MTP Act 1971 (Amended 2021) | IPC / BNS 2023",
NOTE_STYLE))
story.append(Paragraph(
"Prepared as exam quick reference only. Always verify against current legislation and standard references.",
NOTE_STYLE))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/forensic-cheatsheet && python3 make_cheatsheet.py 2>&1
ls -lh /home/daytona/workspace/forensic-cheatsheet/Forensic_Ossification_Cheatsheet.pdf
Forensic Ossification Cheatsheet
PDF Document · PDF