~/neonatology-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/home/daytona/workspace/neonatology-pdf/Neonatology_High_Yield_NEET_PG.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm,
leftMargin=1.8*cm,
topMargin=2*cm,
bottomMargin=2*cm,
)
styles = getSampleStyleSheet()
# Custom styles
TITLE = ParagraphStyle('Title', parent=styles['Title'],
fontSize=22, textColor=colors.HexColor('#1a237e'),
spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold')
SUBTITLE = ParagraphStyle('Subtitle', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#3949ab'),
spaceAfter=4, alignment=TA_CENTER, fontName='Helvetica-Oblique')
H1 = ParagraphStyle('H1', parent=styles['Heading1'],
fontSize=14, textColor=colors.white,
backColor=colors.HexColor('#1a237e'),
spaceBefore=14, spaceAfter=6,
fontName='Helvetica-Bold',
leftIndent=-4, rightIndent=-4,
borderPadding=(4, 6, 4, 6))
H2 = ParagraphStyle('H2', parent=styles['Heading2'],
fontSize=12, textColor=colors.HexColor('#1a237e'),
spaceBefore=10, spaceAfter=4,
fontName='Helvetica-Bold',
borderPadding=(2, 0, 2, 0))
H3 = ParagraphStyle('H3', parent=styles['Heading3'],
fontSize=10.5, textColor=colors.HexColor('#283593'),
spaceBefore=6, spaceAfter=3,
fontName='Helvetica-Bold')
BODY = ParagraphStyle('Body', parent=styles['Normal'],
fontSize=9.5, leading=14,
spaceAfter=3, fontName='Helvetica',
leftIndent=6)
BULLET = ParagraphStyle('Bullet', parent=styles['Normal'],
fontSize=9.5, leading=13,
spaceAfter=2, fontName='Helvetica',
leftIndent=14, bulletIndent=6)
IMPORTANT = ParagraphStyle('Important', parent=styles['Normal'],
fontSize=9.5, leading=13,
backColor=colors.HexColor('#fff9c4'),
borderColor=colors.HexColor('#f9a825'),
borderWidth=1, borderPadding=4,
spaceAfter=4, fontName='Helvetica-Bold',
leftIndent=6)
NOTE = ParagraphStyle('Note', parent=styles['Normal'],
fontSize=9, leading=12,
backColor=colors.HexColor('#e3f2fd'),
borderColor=colors.HexColor('#1565c0'),
borderWidth=0.5, borderPadding=4,
spaceAfter=4, fontName='Helvetica-Oblique',
leftIndent=6)
TABLE_HEADER = [
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a237e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTSIZE', (0,1), (-1,-1), 8.5),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#e8eaf6')]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#9fa8da')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
]
def ts(extra=None):
s = list(TABLE_HEADER)
if extra:
s.extend(extra)
return TableStyle(s)
def h1(text): return Paragraph(f" {text}", H1)
def h2(text): return Paragraph(text, H2)
def h3(text): return Paragraph(text, H3)
def body(text): return Paragraph(text, BODY)
def imp(text): return Paragraph(f"β
{text}", IMPORTANT)
def note(text): return Paragraph(f"π {text}", NOTE)
def sp(h=4): return Spacer(1, h)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#9fa8da'), spaceAfter=4)
def bul(text): return Paragraph(f"β’ {text}", BULLET)
story = []
# βββ COVER βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(60))
story.append(Paragraph("NEONATOLOGY", TITLE))
story.append(Paragraph("High-Yield Summary for NEET PG 2028", SUBTITLE))
story.append(Paragraph("Based on Ghai Essential Pediatrics 10th Edition & Harriet Lane Handbook 23rd Edition", SUBTITLE))
story.append(sp(8))
story.append(HRFlowable(width="80%", thickness=2, color=colors.HexColor('#1a237e'), hAlign='CENTER'))
story.append(sp(8))
story.append(Paragraph("Prepared for: Anasooya C Sudhan", SUBTITLE))
story.append(Paragraph("Kottayam Medical College | Final Year MBBS", SUBTITLE))
story.append(Paragraph("July 2026", SUBTITLE))
story.append(sp(30))
story.append(Paragraph(
"This document covers all high-yield neonatology topics including APGAR scoring, "
"birth asphyxia, HIE, neonatal jaundice, RDS, sepsis, prematurity, congenital anomalies, "
"metabolic disorders, and key drug doses β optimized for NEET PG pattern questions.",
ParagraphStyle('CoverBody', parent=BODY, alignment=TA_CENTER, fontSize=10, textColor=colors.HexColor('#37474f'))))
story.append(PageBreak())
# βββ 1. APGAR SCORE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(h1("1. APGAR SCORE"))
story.append(sp(4))
story.append(imp("APGAR: Appearance, Pulse, Grimace, Activity, Respiration"))
story.append(sp(4))
apgar_data = [
["Sign", "0", "1", "2"],
["Appearance\n(Color)", "Blue/Pale\nall over", "Blue extremities,\npink body", "Completely\npink"],
["Pulse\n(Heart Rate)", "Absent", "< 100 bpm", "> 100 bpm"],
["Grimace\n(Reflex)", "No response", "Grimace", "Cry / Cough /\nSneeze"],
["Activity\n(Muscle tone)", "Limp", "Some flexion", "Active motion"],
["Respiration", "Absent", "Weak / Irregular", "Strong cry"],
]
t = Table(apgar_data, colWidths=[3.5*cm, 3.5*cm, 4*cm, 4*cm])
t.setStyle(ts())
story.append(t)
story.append(sp(6))
score_data = [
["Score", "Interpretation", "Action"],
["7 β 10", "Normal", "Routine care"],
["4 β 6", "Moderate depression", "Stimulation + supplemental Oβ"],
["0 β 3", "Severe depression", "Immediate resuscitation (PPV + CPR)"],
]
t2 = Table(score_data, colWidths=[3*cm, 5*cm, 7*cm])
t2.setStyle(ts())
story.append(t2)
story.append(sp(4))
story.append(note("APGAR at 1 min assesses need for resuscitation; at 5 min assesses response to resuscitation. Score at 10, 15, 20 min if <7 at 5 min."))
story.append(imp("Low 5-min APGAR (<7) predicts neonatal morbidity; NOT a tool to diagnose birth asphyxia alone."))
# βββ 2. NEWBORN RESUSCITATION βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("2. NEWBORN RESUSCITATION (NRP 2020)"))
story.append(sp(4))
story.append(h2("Initial Steps (Golden Minute)"))
story.append(bul("Warm, dry, stimulate β assess breathing + HR within 60 seconds"))
story.append(bul("Delayed cord clamping: β₯30β60 sec for vigorous term & preterm infants"))
story.append(bul("<b>NO</b> routine suctioning for meconium-stained amniotic fluid in vigorous infants"))
story.append(bul("Cord milking: <b>NOT</b> recommended for <28 weeks (risk of IVH)"))
story.append(sp(4))
story.append(h2("ETT Size & Depth (Harriet Lane, 23rd Ed.)"))
ett_data = [
["Gestational Age", "Weight", "ETT Size", "ETT Depth (from lip)"],
["23β24 weeks", "500β600 g", "2.5 mm", "5.5 cm"],
["25β29 weeks", "700β1000 g", "2.5 mm", "6β6.5 cm"],
["30β34 weeks", "1100β1800 g", "2.5β3.0 mm", "7β7.5 cm"],
["35β37 weeks", "1900β2400 g", "3.0β3.5 mm", "8 cm"],
["38β40 weeks", "2500β3100 g", "3.5 mm", "8.5 cm"],
]
t3 = Table(ett_data, colWidths=[3.8*cm, 3.2*cm, 3.2*cm, 4.8*cm])
t3.setStyle(ts())
story.append(t3)
story.append(sp(4))
story.append(imp("Quick formula: ETT depth (cm) = Weight (kg) + 6"))
story.append(bul("If HR <60 after PPV: start chest compressions (3:1 ratio compression:ventilation)"))
story.append(bul("Epinephrine: 0.01β0.03 mg/kg IV (0.1β0.3 mL/kg of 1:10,000) if HR <60 despite CPR"))
# βββ 3. BIRTH ASPHYXIA & HIE ββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("3. BIRTH ASPHYXIA & HYPOXIC ISCHEMIC ENCEPHALOPATHY (HIE)"))
story.append(sp(4))
story.append(h2("Definition"))
story.append(bul("Failure to initiate/sustain breathing at birth due to asphyxia"))
story.append(bul("Results in hypoxia + ischemia β multiorgan damage"))
story.append(sp(4))
story.append(h2("Sarnat Grading of HIE"))
hie_data = [
["Feature", "Grade I (Mild)", "Grade II (Moderate)", "Grade III (Severe)"],
["Level of consciousness", "Hyperalert, irritable", "Lethargic", "Stupor / Coma"],
["Muscle tone", "Normal / slightly β", "Hypotonia", "Flaccid"],
["Seizures", "None", "Frequent", "Rare (decerebrate)"],
["Reflexes", "Hyperreflexia", "Hyporeflexia", "Absent"],
["Autonomic", "Sympathetic predominance", "Parasympathetic", "Both depressed"],
["Duration", "< 24 hours", "2β14 days", "Daysβweeks"],
["Prognosis", "Full recovery", "Partial recovery", "Death / severe disability"],
]
t4 = Table(hie_data, colWidths=[3.8*cm, 3.4*cm, 3.8*cm, 4*cm])
t4.setStyle(ts())
story.append(t4)
story.append(sp(6))
story.append(h2("Treatment"))
story.append(imp("Therapeutic Hypothermia: Gold standard for moderate/severe HIE in β₯36 weeks"))
story.append(bul("Temperature: 33β34Β°C (whole body cooling) for 72 hours"))
story.append(bul("Start within 6 hours of birth"))
story.append(bul("Contraindicated: <36 weeks GA, birth weight <1800g, severe coagulopathy"))
story.append(bul("Other: Treat seizures (phenobarbitone 20 mg/kg IV loading dose)"))
story.append(bul("Avoid hyperoxia, hypoglycemia, hyperthermia"))
# βββ 4. NEONATAL JAUNDICE βββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("4. NEONATAL JAUNDICE (NNJ)"))
story.append(sp(4))
story.append(h2("Physiological vs Pathological"))
nnj_data = [
["Feature", "Physiological", "Pathological"],
["Onset", "Day 2β3", "< 24 hours of life"],
["Peak", "Day 4β5 (term)\nDay 5β7 (preterm)", "Anytime"],
["Resolution", "By day 14 (term)\nBy day 21 (preterm)", "Prolonged / persists"],
["Total bilirubin", "< 12 mg/dL (term)", "> 12 mg/dL term\n> 10 mg/dL preterm"],
["Direct bilirubin", "< 2 mg/dL", "> 2 mg/dL"],
["Rate of rise", "< 5 mg/dL/day", "> 5 mg/dL/day"],
]
t5 = Table(nnj_data, colWidths=[3.8*cm, 4.6*cm, 6.6*cm])
t5.setStyle(ts())
story.append(t5)
story.append(sp(6))
story.append(h2("Management Thresholds (Term Infant)"))
story.append(bul("<b>Phototherapy:</b> Total serum bilirubin β₯ 15 mg/dL (term, low risk, β₯38 wks, >72 hrs age)"))
story.append(bul("<b>Exchange transfusion:</b> β₯ 20β25 mg/dL or rising despite intensive phototherapy"))
story.append(bul("Use AAP hour-specific nomogram (Bhutani curve) for accurate thresholds"))
story.append(sp(4))
story.append(h2("Causes of Pathological Jaundice"))
causes_data = [
["Timing", "Common Causes"],
["< 24 hours", "Hemolytic: Rh incompatibility, ABO incompatibility, G6PD deficiency, TORCH infections"],
["Day 2β3", "Physiological, ABO incompatibility, G6PD deficiency, Polycythemia"],
["Day 4β7", "Breast milk jaundice, Sepsis, Hypothyroidism, Crigler-Najjar"],
["> 2 weeks", "Breast milk jaundice (commonest), Hypothyroidism, Biliary atresia (direct bili β), Cholestasis"],
]
t6 = Table(causes_data, colWidths=[3.5*cm, 11.5*cm])
t6.setStyle(ts())
story.append(t6)
story.append(sp(4))
story.append(imp("Jaundice within first 24 hrs is ALWAYS pathological β think hemolysis!"))
story.append(note("Breast milk jaundice: Appears after day 3β5, peaks week 2β3, may last 3β12 weeks. Continue breastfeeding; interruption only if bilirubin very high."))
# βββ 5. RESPIRATORY DISTRESS SYNDROME ββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("5. RESPIRATORY DISTRESS SYNDROME (RDS / HMD)"))
story.append(sp(4))
story.append(h2("Key Facts"))
story.append(bul("<b>Cause:</b> Surfactant deficiency β Type II pneumocyte immaturity"))
story.append(bul("<b>Most common in:</b> Preterm < 34 weeks (risk β as GA β)"))
story.append(bul("<b>Also in:</b> Infant of Diabetic Mother (IDM) β insulin inhibits surfactant synthesis"))
story.append(sp(4))
story.append(h2("Surfactant"))
story.append(bul("Produced by Type II pneumocytes from ~24 weeks; mature levels by 35β36 weeks"))
story.append(bul("Main component: Dipalmitoyl phosphatidylcholine (DPPC / lecithin)"))
story.append(bul("Lecithin:Sphingomyelin (L:S) ratio > 2.0 = lung maturity"))
story.append(imp("L:S ratio < 2.0 = immature lungs β high risk of RDS"))
story.append(sp(4))
story.append(h2("Silverman-Anderson Score (Severity of Respiratory Distress)"))
sa_data = [
["Sign", "0", "1", "2"],
["Chest retraction", "No retraction", "Upper chest lag", "See-saw movement"],
["Intercostal recession", "None", "Just visible", "Marked"],
["Xiphoid retraction", "None", "Just visible", "Marked"],
["Nares dilatation", "None", "Minimal", "Marked"],
["Expiratory grunt", "None", "Heard by stethoscope", "Audible without stethoscope"],
]
t7 = Table(sa_data, colWidths=[4.2*cm, 3.5*cm, 4*cm, 3.3*cm])
t7.setStyle(ts())
story.append(t7)
story.append(sp(4))
story.append(body("Score: 0 = No distress | 1β3 = Mild | 4β6 = Moderate | 7β10 = Severe"))
story.append(sp(4))
story.append(h2("X-ray Findings"))
story.append(bul("Ground glass appearance (reticulogranular pattern)"))
story.append(bul("Air bronchograms"))
story.append(bul("Bell-shaped (small) chest"))
story.append(bul("White-out in severe cases"))
story.append(sp(4))
story.append(h2("Treatment"))
story.append(bul("<b>Prevention:</b> Antenatal corticosteroids β Betamethasone 12 mg IM Γ 2 doses 24 hrs apart (given if delivery expected at <34 weeks)"))
story.append(bul("<b>Surfactant replacement:</b> 100β200 mg/kg intratracheal β Beractant/Poractant alfa"))
story.append(bul("<b>CPAP:</b> First-line respiratory support (INSURE technique: INtubate-SURfactant-Extubate to CPAP)"))
story.append(bul("<b>Mechanical ventilation:</b> If CPAP fails"))
story.append(imp("INSURE technique = Gold standard approach for RDS management"))
# βββ 6. NEONATAL SEPSIS βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("6. NEONATAL SEPSIS"))
story.append(sp(4))
sep_data = [
["Feature", "Early Onset Sepsis (EOS)", "Late Onset Sepsis (LOS)"],
["Timing", "< 72 hours of birth", "> 72 hours of birth"],
["Common organisms", "GBS (Group B Strep)\nE. coli, Listeria\nKlebsiella", "Staph aureus, CoNS\nKlebsiella, Pseudomonas\nCandida (VLBW)"],
["Source", "Vertical (from mother)", "Horizontal (hospital / community)"],
["Risk factors", "PROM, maternal fever,\nchorioamnionitis, GBS+", "IV lines, intubation,\nprematurity, VLBW"],
["Treatment", "Ampicillin + Gentamicin", "Vancomycin + 3rd gen\ncephalosporin (Cefotaxime)"],
]
t8 = Table(sep_data, colWidths=[3.5*cm, 5.2*cm, 6.3*cm])
t8.setStyle(ts())
story.append(t8)
story.append(sp(6))
story.append(h2("Sepsis Screen (Dx of Exclusion)"))
story.append(bul("Total WBC < 5000 or > 20,000 /ΞΌL"))
story.append(bul("Absolute Neutrophil Count (ANC) < 1800/ΞΌL"))
story.append(bul("<b>Immature:Total neutrophil ratio (I:T ratio) > 0.2</b> β most sensitive"))
story.append(bul("CRP > 10 mg/L (best serial marker)"))
story.append(bul("Micro-ESR > (age in days + 3) mm/hr"))
story.append(bul("Thrombocytopenia < 1,00,000/ΞΌL"))
story.append(imp("Blood culture = Gold standard for diagnosis of neonatal sepsis"))
story.append(note("Neonatal Early-Onset Sepsis (EOS) Calculator (Kaiser Permanente) now preferred over sepsis screen for EOS risk stratification"))
# βββ 7. PRETERM COMPLICATIONS βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("7. PREMATURITY & ASSOCIATED COMPLICATIONS"))
story.append(sp(4))
preterm_data = [
["Complication", "Key Points", "Management"],
["RDS", "Surfactant deficiency\n<34 weeks", "Antenatal steroids,\nsurfactant, CPAP"],
["IVH\n(Intraventricular\nHemorrhage)", "Grade IβIV\n(Papile classification)\nGrade IIIβIV = poor prognosis", "Prevention: Antenatal steroids\nAvoid hyperosmolar solutions"],
["NEC\n(Necrotizing\nEnterocolitis)", "Bell staging IβIII\nX-ray: Pneumatosis\nintestinalis (pathognomonic)", "NPO, NG decompression,\nAmpicillin + Gentamicin +\nMetronidazole; surgery if perforation"],
["PDA\n(Patent Ductus\nArteriosus)", "LβR shunt\nMachinery murmur\n(term), systolic (preterm)", "Indomethacin / Ibuprofen\n(medical closure)\nSurgical ligation if fails"],
["ROP\n(Retinopathy of\nPrematurity)", "Zone IβIII, Stage 1β5\nThreshold: Zone I any stage 3+\nor Zone II Stage 3+", "Laser photocoagulation\nAnti-VEGF (Bevacizumab)\nScreen all <32 wks or <1500g"],
["Apnea of\nprematurity", ">20 sec pause\nor <15 sec + bradycardia", "Caffeine citrate\n(drug of choice)\nCPAP, tactile stimulation"],
["Hypoglycemia", "BG < 40 mg/dL\n(symptomatic <45 mg/dL)", "10% dextrose\n2 mL/kg IV bolus"],
]
t9 = Table(preterm_data, colWidths=[3.2*cm, 5.3*cm, 6.5*cm])
t9.setStyle(ts())
story.append(t9)
story.append(sp(4))
story.append(imp("Pneumatosis intestinalis on X-ray = pathognomonic of NEC"))
story.append(imp("IVH grading: Grade III = blood + hydrocephalus; Grade IV = parenchymal involvement"))
# βββ 8. NEONATAL JAUNDICE - SPECIFIC CONDITIONS βββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("8. HEMOLYTIC DISEASE OF NEWBORN (HDN)"))
story.append(sp(4))
hdn_data = [
["Feature", "Rh Incompatibility", "ABO Incompatibility"],
["Mother", "Rh negative", "Blood group O"],
["Baby", "Rh positive", "A or B"],
["First pregnancy affected?", "No (sensitization 1st preg)", "Yes (naturally occurring Ab)"],
["Severity", "Severe", "Mild to moderate"],
["Hydrops fetalis", "Common", "Rare"],
["Direct Coombs test", "Strongly positive", "Weakly positive"],
["Spherocytes on smear", "Absent", "Present"],
["Prevention (Rh)", "Anti-D immunoglobulin 300 mcg IM at 28 wks + within 72 hrs of delivery", "β"],
]
t10 = Table(hdn_data, colWidths=[4.5*cm, 5.3*cm, 5.2*cm])
t10.setStyle(ts())
story.append(t10)
story.append(sp(4))
story.append(note("Hydrops fetalis: severe fetal anemia β heart failure β generalized edema. Most common cause: Rh isoimmunization. Others: Alpha thalassemia, TORCH, Cardiac defects"))
# βββ 9. METABOLIC DISORDERS IN NEWBORN βββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("9. METABOLIC DISORDERS IN NEWBORN"))
story.append(sp(4))
meta_data = [
["Condition", "Defect", "Key Feature", "Treatment"],
["Hypoglycemia", "BG < 40 mg/dL\n(<45 symptomatic)", "Jitteriness, seizures\nIDM, SGA, preterm", "10% Dextrose\n2 mL/kg IV"],
["Hypocalcemia", "Ca < 7 mg/dL\n(ionized <4 mg/dL)", "Tetany, jitteriness\nSeizures, stridor", "10% Ca gluconate\nIV slowly"],
["Hypomagnesemia", "Mg < 1.5 mg/dL", "Refractory hypocalcemia", "MgSOβ IV/IM"],
["Phenylketonuria\n(PKU)", "Phenylalanine\nhydroxylase deficiency", "Fair skin, blue eyes\nMusty odor, ID", "Phenylalanine-\nrestricted diet"],
["Galactosemia", "GALT deficiency", "Jaundice, hepatomegaly\nCataracts, E. coli sepsis", "Galactose-free diet\n(stop breast milk)"],
["Congenital\nHypothyroidism", "Thyroid dysgenesis\n(commonest)", "Prolonged jaundice,\nLarge tongue, constipation\nUmbilical hernia", "L-Thyroxine ASAP\n(within 2 wks)"],
["CAH (21-hydroxylase\ndeficiency)", "Cortisol/aldosterone\ndeficiency", "Salt-wasting crisis\nVirilization in girls", "Hydrocortisone +\nFludrocortisone"],
["G6PD Deficiency", "G6PD enzyme defect\n(X-linked)", "Triggered by drugs, infection\nHemolytic jaundice", "Avoid triggers\nPhototherapy/exchange"],
]
t11 = Table(meta_data, colWidths=[3.3*cm, 3.3*cm, 4.2*cm, 4.2*cm])
t11.setStyle(ts())
story.append(t11)
story.append(sp(4))
story.append(imp("Newborn screening (Guthrie test / heel-prick): TSH, PKU, Galactosemia, G6PD, CAH β done at 48β72 hours of life"))
# βββ 10. CONGENITAL ANOMALIES βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("10. IMPORTANT CONGENITAL ANOMALIES"))
story.append(sp(4))
anom_data = [
["Anomaly", "Associations / Key Points", "Diagnosis", "Treatment"],
["Tracheo-oesophageal\nFistula (TOF)", "Most common: Type C (blind\nupper pouch + lower fistula)\nSECAL syndrome (VACTERL)", "Inability to pass NG tube\nX-ray: coiled NG tube", "Surgery: anastomosis"],
["Diaphragmatic\nHernia (CDH)", "Left-sided 80%\nBowel in chest\nLung hypoplasia", "Scaphoid abdomen\nAir-fluid levels in chest", "Stabilize first,\nthen surgery"],
["Omphalocoele\nvs Gastroschisis", "Omphalocoele: sac present,\nAss. with chromosomal defects\nGastroschisis: no sac, right side,\nno chromosomal assoc.", "Clinical\nAntenatal USS", "Surgical repair"],
["Hirschsprung\nDisease", "Absence of ganglion cells\nRectosigmoid commonest\nDelayed meconium >48 hrs", "Barium enema\nRectal biopsy (gold std)", "Surgical\n(Swenson's pull-through)"],
["Pyloric Stenosis", "M > F (5:1), first born male\n3β6 weeks of age\nProjectile non-bilious vomiting", "Palpable olive mass\nUSS: Channel >16mm,\nWall >4mm", "IV correction + then\nRamstedt pyloromyotomy"],
["Meconium Ileus", "First sign of Cystic Fibrosis\nFailed to pass meconium\n>48 hrs", "X-ray: soap-bubble sign\nGastrografin enema", "Gastrografin enema\nor surgery"],
["Imperforated\nAnus", "Low (>2 cm): Perineal fistula\nHigh (<2 cm): complex fistula", "Clinical exam\n24 hr lateral X-ray", "Perineal anoplasty\nvs colostomy"],
]
t12 = Table(anom_data, colWidths=[3.2*cm, 4.5*cm, 3.3*cm, 4*cm])
t12.setStyle(ts())
story.append(t12)
# βββ 11. INFECTIONS IN NEONATE ββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("11. INFECTIONS IN NEONATE"))
story.append(sp(4))
story.append(h2("TORCH Infections"))
torch_data = [
["Infection", "Key Feature", "Diagnosis", "Treatment"],
["Toxoplasma", "Chorioretinitis,\nIntracranial calcifications\n(periventricular),\nHydrocephalus (classic triad)", "IgM/IgG serology\nPCR", "Pyrimethamine +\nSulfadiazine +\nFolinic acid"],
["Rubella", "Cataracts, PDA,\nDeafness (classic triad)\nBlueberry muffin rash", "IgM/IgG, PCR", "Supportive\n(prevention: MMR vaccine)"],
["CMV\n(Commonest TORCH)", "Periventricular calcifications\nSensorineural hearing loss\nPetechiae, hepatosplenomegaly", "Urine/saliva CMV\nPCR (gold std)", "Ganciclovir IV\nValganciclovir oral"],
["HSV", "Skin-Eye-Mouth (SEM)\nor disseminated or CNS\nUsually Type 2", "Tzanck smear,\nPCR of vesicles", "Acyclovir IV\n60 mg/kg/day Γ 14β21d"],
["Syphilis\n(Treponema)", "Saddle nose, Hutchinson\nteeth, interstitial keratitis\nSaber shins (late)", "VDRL, TPHA,\nRPR", "Penicillin G IV\nΓ 10β14 days"],
]
t13 = Table(torch_data, colWidths=[2.8*cm, 4.5*cm, 3.3*cm, 4.4*cm])
t13.setStyle(ts())
story.append(t13)
story.append(sp(4))
story.append(imp("CMV = Most common TORCH infection. Most common cause of congenital sensorineural hearing loss."))
story.append(imp("Toxoplasma triad: Chorioretinitis + Hydrocephalus + Intracranial calcifications (PERIVENTRICULAR)"))
story.append(note("Rubella triad: Cataracts + PDA + Deafness (Patent Ductus Arteriosus is the cardiac lesion)"))
story.append(sp(6))
story.append(h2("Neonatal Tetanus"))
story.append(bul("Trismus (lockjaw) + Risus sardonicus + Opisthotonus"))
story.append(bul("Onset day 3β14 of life (mostly day 7 - 'seventh day disease')"))
story.append(bul("Cause: Clostridium tetani via unclean cord cutting"))
story.append(bul("Treatment: Diazepam (drug of choice for spasms), Human TIG, Metronidazole, supportive"))
story.append(imp("Prevention: TT immunization in mother (2 doses in pregnancy, 1 booster if previously immunized)"))
story.append(sp(6))
story.append(h2("Ophthalmia Neonatorum (Neonatal Conjunctivitis)"))
oph_data = [
["Timing", "Organism", "Treatment"],
["Within 24 hours", "Chemical (silver nitrate)", "Saline irrigation"],
["2β5 days", "Neisseria gonorrhoeae", "Ceftriaxone IV/IM"],
["5β14 days", "Chlamydia trachomatis", "Erythromycin oral (14 days)"],
["Any time", "Staphylococcus, E. coli", "Topical antibiotic drops"],
]
t14 = Table(oph_data, colWidths=[3.5*cm, 5*cm, 6.5*cm])
t14.setStyle(ts())
story.append(t14)
story.append(sp(4))
story.append(imp("Prophylaxis: Tetracycline/erythromycin eye ointment at birth (1% silver nitrate no longer recommended due to chemical conjunctivitis)"))
# βββ 12. KEY DRUGS IN NEONATOLOGY βββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("12. KEY DRUGS & DOSES IN NEONATOLOGY"))
story.append(sp(4))
drug_data = [
["Drug", "Indication", "Dose / Route", "Notes"],
["Vitamin K\n(Phytomenadione)", "Prevention of HDN\n(Hemorrhagic Dis. Newborn)", "1 mg IM at birth\n(0.5 mg if <1500g)", "All newborns receive\nroutinely at birth"],
["Surfactant\n(Beractant/Poractant)", "RDS prophylaxis/treatment", "100β200 mg/kg\nintratracheal", "Within 2 hrs of birth\nfor prophylaxis"],
["Caffeine Citrate", "Apnea of prematurity", "Load: 20 mg/kg PO/IV\nMaint: 5 mg/kg/day", "Drug of choice\nfor apnea of prematurity"],
["Indomethacin", "Medical closure of PDA", "0.1β0.25 mg/kg IV\nq12β24h Γ 3 doses", "Contraindicated:\nrenal failure, NEC,\nthrombocytopenia"],
["Ibuprofen", "Medical closure of PDA", "10 mg/kg, then 5 mg/kg\nΓ 2 doses q24h", "Fewer renal SE\nvs indomethacin"],
["Phenobarbitone", "Neonatal seizures", "Load: 20 mg/kg IV\nMaint: 3β5 mg/kg/day", "First line for\nneonatal seizures"],
["Ampicillin\n+ Gentamicin", "Early onset sepsis", "Amp: 50 mg/kg q12h\nGent: 4β5 mg/kg q24β48h", "First-line EOS\n(GBS + gram negatives)"],
["Vancomycin\n+ Cefotaxime", "Late onset sepsis /\nMeningitis", "Vanc: 15 mg/kg q6β12h\nCefotaxime: 50 mg/kg q12h", "Covers MRSA +\ngram negatives"],
["Acyclovir", "Neonatal HSV", "60 mg/kg/day IV Γ· q8h\nΓ 14β21 days", "Start empirically if\nHSV suspected"],
["Anti-D Ig\n(RhoGAM)", "Prevention of Rh\nisoimmunization", "300 mcg IM at 28 wks\n+ within 72 hrs postpartum", "For Rh-negative mothers\nafter sensitizing events"],
["Betamethasone", "Fetal lung maturity", "12 mg IM q24h Γ 2 doses\n(given to mother)", "If delivery <34 weeks\nreduces RDS, IVH, NEC"],
["Prostaglandin E1\n(Alprostadil)", "Duct-dependent\ncongenital heart disease", "0.05β0.1 mcg/kg/min IV", "To keep PDA open in\nductal-dependent CHD"],
["L-Thyroxine", "Congenital\nHypothyroidism", "10β15 mcg/kg/day PO", "Start ASAP\n(within 2 weeks of life)"],
]
t15 = Table(drug_data, colWidths=[3.2*cm, 3.5*cm, 3.8*cm, 4.5*cm])
t15.setStyle(ts())
story.append(t15)
# βββ 13. IMPORTANT NEONATAL REFLEXES βββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("13. NEONATAL REFLEXES"))
story.append(sp(4))
ref_data = [
["Reflex", "Stimulus", "Response", "Disappears by"],
["Moro", "Sudden head drop / loud noise", "Arm abduction-extension,\nthen embrace", "4β6 months"],
["Rooting", "Touch corner of mouth", "Head turns toward stimulus", "3β4 months"],
["Sucking", "Finger/nipple in mouth", "Sucking motion", "4 months"],
["Palmar grasp", "Object in palm", "Fingers close", "4β6 months"],
["Plantar grasp", "Touch plantar surface", "Toes flex", "10β12 months"],
["Babinski", "Stroke lateral sole", "Great toe dorsiflexion\n+ fan toes", "12β18 months\n(persistence = UMN lesion)"],
["Stepping / Walking", "Hold upright, feet touch surface", "Stepping movements", "2β3 months"],
["Tonic Neck\n(Fencing reflex)", "Turn head to one side", "Arm/leg extend same side,\nflex opposite", "4β6 months"],
["Galant", "Stroke paravertebral area", "Trunk curves toward stimulus", "3β6 months"],
["Parachute", "Hold upright, tilt forward", "Arms extend", "Persists throughout life"],
]
t16 = Table(ref_data, colWidths=[3.2*cm, 4*cm, 4.3*cm, 3.5*cm])
t16.setStyle(ts())
story.append(t16)
story.append(sp(4))
story.append(imp("Absent Moro reflex = Erb's palsy (unilateral) or severe neurological injury (bilateral)"))
story.append(imp("Persistent Babinski after 18 months = Upper Motor Neuron lesion"))
# βββ 14. PREMATURITY DEFINITIONS βββββββββββββββββββββββββββββββββββββββββββββ
story.append(sp(8))
story.append(h1("14. PREMATURITY, BIRTH WEIGHT DEFINITIONS & GESTATIONAL AGE"))
story.append(sp(4))
def_data = [
["Term", "Definition"],
["Term neonate", "37β42 completed weeks"],
["Preterm", "< 37 completed weeks"],
["Very preterm", "< 32 weeks"],
["Extremely preterm", "< 28 weeks"],
["Post-term", "> 42 weeks"],
["Low birth weight (LBW)", "< 2500 g"],
["Very low birth weight (VLBW)", "< 1500 g"],
["Extremely low birth weight (ELBW)", "< 1000 g"],
["Small for gestational age (SGA)", "Birth weight < 10th percentile for GA"],
["Large for gestational age (LGA)", "Birth weight > 90th percentile for GA"],
["Appropriate for gestational age (AGA)", "10thβ90th percentile for GA"],
["IUGR", "Failure to reach genetic growth potential\n(subset of SGA, not synonymous)"],
]
t17 = Table(def_data, colWidths=[6*cm, 9*cm])
t17.setStyle(ts())
story.append(t17)
story.append(sp(6))
story.append(h2("Gestational Age Assessment"))
ga_data = [
["Method", "Based on", "Best Used"],
["Naegele's rule", "LMP: Add 9 months + 7 days\nOr LMP + 280 days", "Antenatal (if LMP known)"],
["Ultrasound", "Crown-rump length (most accurate\nif done in 1st trimester <12 wks)", "Best for confirming GA"],
["Dubowitz score", "Neurological + physical maturity criteria", "Postnatal (all infants)"],
["Ballard score\n(simplified)", "12 physical + 6 neurological criteria\nRange: β10 to +50", "Postnatal: 0β96 hrs\n(up to 96 hrs accurate)"],
["New Ballard score", "Extended Ballard\n(includes extremely preterm)", "From 20 weeks GA"],
]
t18 = Table(ga_data, colWidths=[3.5*cm, 5.5*cm, 6*cm])
t18.setStyle(ts())
story.append(t18)
story.append(imp("New Ballard Score = most widely used postnatal method to assess GA"))
# βββ 15. COMMON MNEMONICS βββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(h1("15. NEONATOLOGY MNEMONICS FOR NEET PG"))
story.append(sp(4))
story.append(h2("APGAR"))
story.append(body("<b>A</b>ppearance | <b>P</b>ulse | <b>G</b>rimace | <b>A</b>ctivity | <b>R</b>espiration"))
story.append(sp(4))
story.append(h2("TORCH"))
story.append(body("<b>T</b>oxoplasma | <b>O</b>ther (Syphilis, HBV, VZV, HIV) | <b>R</b>ubella | <b>C</b>MV | <b>H</b>SV"))
story.append(sp(4))
story.append(h2("VACTERL Association"))
story.append(body("<b>V</b>ertebral | <b>A</b>nal atresia | <b>C</b>ardiac | <b>T</b>racheo-<b>E</b>sophageal fistula | <b>R</b>enal | <b>L</b>imb defects"))
story.append(sp(4))
story.append(h2("Causes of Hydrops Fetalis"))
story.append(body("<b>CHIT</b>: <b>C</b>ardiac defects | <b>H</b>emolytic disease | <b>I</b>nfections (TORCH) | <b>T</b>win-twin transfusion"))
story.append(sp(4))
story.append(h2("Criteria for Therapeutic Hypothermia (all must be met)"))
story.append(bul("GA β₯ 36 weeks"))
story.append(bul("Age < 6 hours"))
story.append(bul("pH < 7.0 OR base deficit β₯ 16 mmol/L OR 10-min APGAR β€ 5"))
story.append(bul("Moderate or severe HIE on clinical examination"))
story.append(sp(4))
story.append(h2("Surfactant Composition"))
story.append(body("DPPC (<b>D</b>ipalmitoyl <b>P</b>hosphatidyl<b>C</b>holine) = Main active component"))
story.append(body("Also: Phosphatidylglycerol (PG), Surfactant proteins (SP-A, B, C, D)"))
story.append(sp(4))
story.append(h2("Neonatal Jaundice - Key Numbers"))
nnj_num_data = [
["Parameter", "Value"],
["Physiological jaundice onset", "Day 2β3"],
["Physiological peak (term)", "Day 4β5"],
["Physiological resolution (term)", "Day 14"],
["Physiological resolution (preterm)", "Day 21"],
["Pathological: onset < ", "24 hours"],
["Phototherapy threshold (term, low risk)", "> 15 mg/dL"],
["Exchange transfusion threshold", "> 20β25 mg/dL"],
["L:S ratio for lung maturity", "> 2.0"],
["I:T ratio for sepsis", "> 0.2"],
["Therapeutic hypothermia temperature", "33β34Β°C"],
["Therapeutic hypothermia duration", "72 hours"],
]
t19 = Table(nnj_num_data, colWidths=[9*cm, 6*cm])
t19.setStyle(ts())
story.append(t19)
# βββ FOOTER PAGE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sp(40))
story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#1a237e')))
story.append(sp(10))
story.append(Paragraph("NEET PG 2028 Preparation", ParagraphStyle('foot1', parent=SUBTITLE, fontSize=13, textColor=colors.HexColor('#1a237e'))))
story.append(Paragraph("Neonatology High-Yield Summary", ParagraphStyle('foot2', parent=SUBTITLE, fontSize=11)))
story.append(sp(8))
story.append(Paragraph(
"Sources: Ghai Essential Pediatrics 10th Edition (Vinod K Paul, Arvind Bagga) | "
"Harriet Lane Handbook 23rd Edition (Johns Hopkins Hospital) | "
"Nelson Textbook of Pediatrics | Red Book 2021 (AAP)",
ParagraphStyle('sources', parent=BODY, fontSize=8, textColor=colors.grey, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph(
"Prepared by Orris AI for Anasooya C Sudhan, Kottayam Medical College | July 2026",
ParagraphStyle('credit', parent=BODY, fontSize=8, textColor=colors.grey, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph(
"β This document is for educational purposes only. Always verify drug doses and clinical decisions "
"against current guidelines and institutional protocols.",
ParagraphStyle('disclaimer', parent=BODY, fontSize=8, textColor=colors.HexColor('#c62828'), alignment=TA_CENTER)))
# Build PDF
doc.build(story)
print(f"PDF created successfully: {OUTPUT}")