Prevention of neonatal tetanus.
"neonatal tetanus" AND prevention
neonatal tetanus prevention WHO guidelines vaccination
| Dose | Timing | Protection |
|---|---|---|
| TT1 | As early as possible in pregnancy | Minimal individual protection |
| TT2 | At least 1 month after TT1; at least 3 weeks before delivery | ~80% protection for 3 years |
| Dose | When Given | Duration of Protection |
|---|---|---|
| TT1 | Contact/ANC | None |
| TT2 | 4 weeks after TT1 | 1-3 years |
| TT3 | 6 months after TT2 | 5 years |
| TT4 | 1 year after TT3 | 10 years |
| TT5 | 1 year after TT4 | Life-long (>20 years) |
| Strategy | Target | Mechanism |
|---|---|---|
| TT immunization (2 doses) | Pregnant women | Passive transfer of maternal IgG to fetus |
| TT for all women of reproductive age | High-risk areas | Herd immunity, sustained protection |
| Five Cleans / clean delivery | Birth attendant + mother | Prevent cord contamination with spores |
| Home delivery kits | TBAs | Provide clean instruments |
| Institutional delivery promotion | Communities | Sterile environment, trained staff |
| Tetanus antitoxin at birth | Neonates of unimmunized mothers | Passive prophylaxis if born at risk |
| Surveillance | Health system | Identify gaps, high-risk districts |
Make pdf
mkdir -p /tmp/workspace/neonatal-tetanus && ls /tmp/workspace/neonatal-tetanus/
~/neonatal-tetanus/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/tmp/workspace/neonatal-tetanus/Prevention_of_Neonatal_Tetanus.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2.2*cm, rightMargin=2.2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Prevention of Neonatal Tetanus",
author="Orris Medical Reference",
subject="Preventive Medicine – Neonatal Tetanus"
)
W = A4[0] - 4.4*cm # usable width
# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1a3a5c")
MID_BLUE = colors.HexColor("#2e6da4")
LIGHT_BLUE = colors.HexColor("#dbe9f8")
TEAL = colors.HexColor("#0e7c7b")
LIGHT_TEAL = colors.HexColor("#d4f0ef")
ORANGE = colors.HexColor("#d9600a")
LIGHT_GREY = colors.HexColor("#f4f6f8")
MID_GREY = colors.HexColor("#c8cdd3")
WHITE = colors.white
BLACK = colors.HexColor("#1a1a1a")
# ── Styles ──────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
title_style = S("DocTitle",
fontSize=22, leading=28, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
subtitle_style = S("DocSub",
fontSize=11, leading=14, textColor=colors.HexColor("#cce0f5"),
fontName="Helvetica", alignment=TA_CENTER)
h1 = S("H1",
fontSize=13, leading=17, textColor=WHITE,
fontName="Helvetica-Bold", spaceAfter=0, spaceBefore=0,
leftIndent=0)
h2 = S("H2",
fontSize=11, leading=14, textColor=DARK_BLUE,
fontName="Helvetica-Bold", spaceBefore=14, spaceAfter=4)
body = S("Body",
fontSize=9.5, leading=14, textColor=BLACK,
fontName="Helvetica", alignment=TA_JUSTIFY,
spaceBefore=4, spaceAfter=4)
bullet = S("Bullet",
fontSize=9.5, leading=14, textColor=BLACK,
fontName="Helvetica", leftIndent=16, firstLineIndent=-10,
spaceBefore=2, spaceAfter=2)
bold_body = S("BoldBody",
fontSize=9.5, leading=14, textColor=BLACK,
fontName="Helvetica-Bold")
note_style = S("Note",
fontSize=8.5, leading=12, textColor=colors.HexColor("#555555"),
fontName="Helvetica-Oblique", alignment=TA_LEFT)
golden_style = S("Golden",
fontSize=9.5, leading=14, textColor=ORANGE,
fontName="Helvetica-Bold", alignment=TA_JUSTIFY)
# ── Helper: section header bar ───────────────────────────────────────────────
def section_header(text, color=DARK_BLUE):
tbl = Table([[Paragraph(text, h1)]], colWidths=[W])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [4]),
]))
return tbl
def bullet_item(text):
return Paragraph(f"<bullet>•</bullet> {text}", bullet)
def sp(h=6):
return Spacer(1, h)
# ── Build story ──────────────────────────────────────────────────────────────
story = []
# ── Title block ──────────────────────────────────────────────────────────────
title_tbl = Table(
[[Paragraph("Prevention of Neonatal Tetanus", title_style)],
[Paragraph("A Comprehensive Preventive Medicine Reference", subtitle_style)]],
colWidths=[W]
)
title_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 18),
("BOTTOMPADDING", (0,0), (-1,-1), 18),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("ROUNDEDCORNERS", [6]),
]))
story.append(title_tbl)
story.append(sp(12))
# Source note
story.append(Paragraph(
"<i>Source: Park's Textbook of Preventive and Social Medicine | "
"Creasy & Resnik's Maternal-Fetal Medicine | Rosen's Emergency Medicine | WHO MNTE Programme</i>",
note_style))
story.append(sp(10))
story.append(HRFlowable(width=W, thickness=1.5, color=MID_BLUE))
story.append(sp(10))
# ── 1. Overview ──────────────────────────────────────────────────────────────
story.append(section_header("1. Overview"))
story.append(sp(8))
story.append(Paragraph(
"Neonatal tetanus (NT) – also called <i>tetanus neonatorum</i> – is caused by <i>Clostridium tetani</i> "
"spores introduced through the umbilical cord during unclean delivery. It is the second leading cause "
"of death among EPI target diseases (after measles) in developing countries, with a case-fatality rate "
"of 80-100% without high-quality treatment. It is <b>nearly 100% preventable</b> through two "
"complementary pillars: maternal immunization and clean delivery practices.", body))
story.append(sp(4))
# Key facts box
facts = [
["Key Epidemiological Facts"],
["Global NT deaths: ~787,000 (1988) → ~34,000 (2015) = 96% reduction (WHO)"],
["Elimination target: < 1 case per 1,000 live births per district"],
["Occurs almost exclusively where maternal immunization is inadequate & cord care is unclean"],
["C. tetani spores are environmentally persistent — eradication is NOT possible; only elimination"],
]
facts_tbl = Table(facts, colWidths=[W])
facts_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), TEAL),
("TEXTCOLOR", (0,0), (0,0), WHITE),
("FONTNAME", (0,0), (0,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (0,0), 10),
("BACKGROUND", (0,1), (-1,-1), LIGHT_TEAL),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 9),
("LEADING", (0,1), (-1,-1), 13),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#9ececa")),
]))
story.append(facts_tbl)
story.append(sp(12))
# ── 2. Maternal Immunization ─────────────────────────────────────────────────
story.append(section_header("2. Maternal Immunization with Tetanus Toxoid-Containing Vaccines (TTCV)"))
story.append(sp(8))
story.append(Paragraph(
"Tetanus toxoid (TT) protects both the mother and her newborn through "
"transplacental transfer of maternal IgG antibodies. It is the cornerstone of NT prevention.", body))
story.append(sp(6))
story.append(Paragraph("A. Unimmunized Pregnant Women — Two-Dose Primary Course", h2))
tt_data = [
["Dose", "Timing", "Protection Conferred"],
["TT1", "As early as possible in pregnancy", "Minimal individual protection"],
["TT2", "≥ 1 month after TT1; ≥ 3 weeks before delivery\n(India: 16–36 weeks; 1–2 month interval)", "~80% for ≈ 3 years"],
]
tt_tbl = Table(tt_data, colWidths=[W*0.10, W*0.52, W*0.38])
tt_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("LEADING", (0,0), (-1,-1), 13),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), WHITE),
("GRID", (0,0), (-1,-1), 0.5, MID_GREY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(tt_tbl)
story.append(sp(6))
# Golden rule
golden_box = Table([[Paragraph(
"Golden Rule: No pregnant woman should be denied even ONE dose of TT if she presents late "
"in pregnancy. There is no evidence that tetanus toxoid is harmful to the fetus.", golden_style)]],
colWidths=[W])
golden_box.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#fff3e0")),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("BOX", (0,0), (-1,-1), 1.5, ORANGE),
]))
story.append(golden_box)
story.append(sp(8))
story.append(Paragraph("B. Previously Immunized Pregnant Women", h2))
story.append(bullet_item("A single <b>booster dose</b> is sufficient."))
story.append(bullet_item("Booster is <b>not</b> needed at every consecutive pregnancy — risk of hyper-immunization and side effects."))
story.append(sp(8))
story.append(Paragraph("C. WHO Recommended Lifetime 6-Dose Schedule", h2))
who_data = [
["Dose", "When Given", "Duration of Protection"],
["TT1", "First contact / ANC", "None"],
["TT2", "4 weeks after TT1", "1–3 years"],
["TT3", "6 months after TT2", "5 years"],
["TT4", "1 year after TT3", "10 years"],
["TT5", "1 year after TT4", "Life-long (> 20 years)"],
]
who_tbl = Table(who_data, colWidths=[W*0.10, W*0.45, W*0.45])
who_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("LEADING", (0,0), (-1,-1), 13),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, MID_GREY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(who_tbl)
story.append(sp(6))
story.append(Paragraph(
"Women who received 6 TTCV doses during childhood, or 5 doses with the last within 10 years, "
"do <b>not</b> need additional doses during pregnancy.", body))
story.append(sp(8))
story.append(Paragraph("D. High-Risk Area Strategy", h2))
story.append(Paragraph(
"In areas where NT incidence is high and ANC coverage is low, the primary 2-dose course "
"should be extended to <b>all women of childbearing age (15–49 years)</b>, not just pregnant women. "
"Women of reproductive age in high-risk districts (HRDs) are targeted with <b>3 properly spaced "
"TTCV doses</b> through specially organized supplementary immunization activities.", body))
story.append(sp(12))
# ── 3. Five Cleans ───────────────────────────────────────────────────────────
story.append(section_header("3. Clean Delivery Practices — The \"Five Cleans\"", color=TEAL))
story.append(sp(8))
story.append(Paragraph(
"Training traditional birth attendants (TBAs) in clean delivery practices alone can reduce "
"NT deaths by <b>up to 90%</b>. The core principle is the <b>Five Cleans</b> (<i>Panch Safai</i>):", body))
story.append(sp(6))
cleans = [
["#", "Clean Element", "Details"],
["1", "Clean Hands", "Birth attendant washes hands thoroughly with soap and water before delivery"],
["2", "Clean Delivery Surface", "A clean mat or cloth placed under the mother"],
["3", "Clean Blade", "A new or sterilized blade used to cut the umbilical cord"],
["4", "Clean Cord Tie", "Sterile or clean ligature for tying the cord stump"],
["5", "Clean Cord Care", "Nothing applied to the cord stump — no dung, soil, ash, ghee, or any traditional application"],
]
cleans_tbl = Table(cleans, colWidths=[W*0.06, W*0.22, W*0.72])
cleans_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("LEADING", (0,0), (-1,-1), 13),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_TEAL, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#9ececa")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (1,-1), "Helvetica-Bold"),
("TEXTCOLOR", (0,1), (0,-1), TEAL),
]))
story.append(cleans_tbl)
story.append(sp(6))
story.append(Paragraph(
"Provision of <b>home delivery kits</b> (containing a clean blade, clean cord tie, and instructions) "
"supports these practices in resource-limited settings where institutional delivery is not feasible.", body))
story.append(sp(12))
# ── 4. Passive Protection ────────────────────────────────────────────────────
story.append(section_header("4. Passive Protection of the Newborn"))
story.append(sp(8))
story.append(Paragraph(
"If a newborn is delivered to an unimmunized mother (who did not receive 2 doses of TT during "
"pregnancy), passive protection can be provided as a <b>fallback measure</b>:", body))
story.append(sp(4))
passive_data = [
["Agent", "Dose", "Timing", "Note"],
["Tetanus Antitoxin\n(heterologous serum)", "750 IU", "Within 6 hours of birth",
"Not a substitute for maternal immunization; emergency fallback only"],
]
passive_tbl = Table(passive_data, colWidths=[W*0.25, W*0.12, W*0.27, W*0.36])
passive_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("LEADING", (0,0), (-1,-1), 13),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("GRID", (0,0), (-1,-1), 0.5, MID_GREY),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(passive_tbl)
story.append(sp(12))
# ── 5. WHO MNTE ──────────────────────────────────────────────────────────────
story.append(section_header("5. WHO Maternal and Neonatal Tetanus Elimination (MNTE) Programme", color=colors.HexColor("#4a235a")))
story.append(sp(8))
story.append(Paragraph(
"The MNTE programme was established in <b>1999</b>. Elimination is defined as "
"<b>< 1 case per 1,000 live births per district</b>. It employs a <b>four-pronged strategy</b>:", body))
story.append(sp(6))
mnte_data = [
["Strategy", "Description"],
["1. Clean Delivery & Cord Care",
"Prevent infection during and after the delivery process through hygienic obstetric practices"],
["2. Routine TTCV Vaccination",
"Systematic vaccination of pregnant women attending ANC with TT-containing vaccines"],
["3. Supplemental Immunization Campaigns",
"Targeting all women of reproductive age in high-risk districts with 3 properly spaced TTCV doses"],
["4. Strengthened Surveillance",
"Identify women at risk, reasons for risk, and potential geographic clustering of cases"],
]
mnte_tbl = Table(mnte_data, colWidths=[W*0.35, W*0.65])
mnte_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#4a235a")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("LEADING", (0,0), (-1,-1), 13),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#f3eaf7"), WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#c9a8d4")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
]))
story.append(mnte_tbl)
story.append(sp(12))
# ── 6. India MNTE ────────────────────────────────────────────────────────────
story.append(section_header("6. India's MNT Elimination Strategy", color=colors.HexColor("#8b1a1a")))
story.append(sp(8))
story.append(Paragraph(
"India achieved official MNT elimination certification in <b>May 2015</b>. "
"Key strategies employed:", body))
story.append(sp(4))
india_items = [
"Acceleration of TT immunization through the WHO-recommended <b>high-risk district approach</b>",
"Systematic TT vaccination of all pregnant women at ANC visits",
"<b>Janani Suraksha Yojana (JSY)</b> — conditional cash transfer scheme to incentivize institutional delivery",
"Intensive 3-week refresher training for all skilled birth attendants (ANMs, midwives, TBAs)",
"Distribution of <b>disposable delivery kits</b> to skilled birth attendants for each pregnancy",
"Engagement of <b>>896,000 ASHA workers</b> to generate community demand for health services",
"Operationalization of sub-centres and CHCs for <b>24/7 obstetric and neonatal care</b>",
"Setting up Newborn Care Corners, Special Neonatal Care Units, and Newborn Stabilization Units",
"Village Health and Nutrition Days integrating vaccination of children, adolescents, and pregnant women",
"<b>Janani Shishu Suraksha Karyakram (2011)</b> — free delivery and neonatal care entitlements",
]
for item in india_items:
story.append(bullet_item(item))
story.append(sp(6))
result_tbl = Table([[Paragraph(
"Result: Safe deliveries rose from 52% (2007) to 76% (2009). "
"By December 2014, 30 of 36 states/UTs were validated for MNT elimination.",
S("Res", fontSize=9.5, leading=14, textColor=colors.HexColor("#8b1a1a"),
fontName="Helvetica-Bold"))]],
colWidths=[W])
result_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#fdf0f0")),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("BOX", (0,0), (-1,-1), 1.5, colors.HexColor("#8b1a1a")),
]))
story.append(result_tbl)
story.append(sp(12))
# ── 7. Summary Table ─────────────────────────────────────────────────────────
story.append(section_header("7. Summary of All Prevention Strategies"))
story.append(sp(8))
summary_data = [
["Strategy", "Target Population", "Mechanism"],
["TT immunization (2 doses)", "Pregnant women", "Passive IgG transfer across placenta to fetus"],
["TT for all women of reproductive age", "Women 15–49 yrs in HRDs", "Sustained herd immunity; prevents future pregnancies being unprotected"],
["Five Cleans / clean delivery", "Birth attendant + mother", "Prevents cord contamination with C. tetani spores"],
["Home delivery kits", "TBAs / home deliveries", "Provides clean instruments where facility delivery unavailable"],
["Institutional delivery promotion", "Communities / rural women", "Sterile environment + skilled staff"],
["Tetanus antitoxin at birth", "Neonates of unimmunized mothers", "Passive prophylaxis within 6 hours — emergency fallback"],
["Supplemental immunization campaigns", "HRDs with low ANC coverage", "Rapidly boost population immunity"],
["Surveillance & monitoring", "Health system", "Identify gaps, high-risk districts, clustering"],
]
sum_tbl = Table(summary_data, colWidths=[W*0.30, W*0.30, W*0.40])
sum_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("LEADING", (0,0), (-1,-1), 12),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, MID_GREY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(sum_tbl)
story.append(sp(12))
# ── 8. References ─────────────────────────────────────────────────────────────
story.append(HRFlowable(width=W, thickness=1, color=MID_GREY))
story.append(sp(6))
story.append(Paragraph("<b>References</b>", h2))
refs = [
"Park K. Park's Textbook of Preventive and Social Medicine, 25th ed. Banarsidas Bhanot; 2019.",
"Creasy RK, Resnik R et al. Maternal-Fetal Medicine: Principles and Practice, 8th ed. Elsevier; 2019.",
"Marx JA et al. Rosen's Emergency Medicine: Concepts and Clinical Practice, 9th ed. Elsevier; 2020.",
"WHO. Maternal and Neonatal Tetanus Elimination (MNTE) Programme. who.int, 2023.",
"Yusuf N et al. Progress and barriers towards maternal and neonatal tetanus elimination in the remaining 12 countries. Lancet Glob Health. 2021;9(11):e1500–e1509. PMID 34678200.",
"WHO. Tetanus vaccines: WHO position paper, February 2017. Wkly Epidemiol Rec. 2017;92(6):53–76.",
]
for i, r in enumerate(refs, 1):
story.append(Paragraph(f"{i}. {r}", note_style))
story.append(sp(2))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/neonatal-tetanus && python generate_pdf.py
Prevention of Neonatal Tetanus
PDF Document · PDF