~/child-health-nursing/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 mm, cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
# Colors
DARK_BLUE = colors.HexColor('#1a3a6b')
MED_BLUE = colors.HexColor('#2563a8')
LIGHT_BLUE = colors.HexColor('#dbeafe')
ACCENT = colors.HexColor('#e63946')
GREEN = colors.HexColor('#15803d')
LIGHT_GREEN= colors.HexColor('#dcfce7')
ORANGE = colors.HexColor('#ea580c')
LIGHT_ORANGE = colors.HexColor('#ffedd5')
YELLOW_BG = colors.HexColor('#fefce8')
GRAY = colors.HexColor('#6b7280')
LIGHT_GRAY = colors.HexColor('#f3f4f6')
WHITE = colors.white
BLACK = colors.black
PAGE_W, PAGE_H = A4
MARGIN = 1.5 * cm
styles = getSampleStyleSheet()
# Custom styles
def S(name, **kw):
return ParagraphStyle(name, **kw)
style_cover_title = S('CoverTitle',
fontSize=26, textColor=WHITE, alignment=TA_CENTER,
fontName='Helvetica-Bold', leading=32, spaceAfter=6)
style_cover_sub = S('CoverSub',
fontSize=14, textColor=colors.HexColor('#bfdbfe'),
alignment=TA_CENTER, fontName='Helvetica', leading=20, spaceAfter=4)
style_cover_info = S('CoverInfo',
fontSize=11, textColor=WHITE,
alignment=TA_CENTER, fontName='Helvetica', leading=16)
style_unit = S('Unit',
fontSize=13, textColor=WHITE, fontName='Helvetica-Bold',
alignment=TA_LEFT, leading=18, leftIndent=6)
style_h1 = S('H1',
fontSize=12, textColor=DARK_BLUE, fontName='Helvetica-Bold',
spaceBefore=8, spaceAfter=4, leading=16)
style_h2 = S('H2',
fontSize=11, textColor=MED_BLUE, fontName='Helvetica-Bold',
spaceBefore=6, spaceAfter=3, leading=14)
style_h3 = S('H3',
fontSize=10, textColor=ORANGE, fontName='Helvetica-Bold',
spaceBefore=4, spaceAfter=2, leading=13)
style_body = S('Body',
fontSize=9, textColor=BLACK, fontName='Helvetica',
leading=13, spaceAfter=2)
style_bullet = S('Bullet',
fontSize=9, textColor=BLACK, fontName='Helvetica',
leading=12, leftIndent=12, spaceAfter=1,
bulletIndent=4, bulletText='•')
style_key = S('Key',
fontSize=9, textColor=DARK_BLUE, fontName='Helvetica-Bold',
leading=12, spaceAfter=1, leftIndent=4)
style_note = S('Note',
fontSize=8.5, textColor=colors.HexColor('#991b1b'),
fontName='Helvetica-BoldOblique', leading=12,
leftIndent=8, spaceAfter=2)
style_footer = S('Footer',
fontSize=7.5, textColor=GRAY, alignment=TA_CENTER,
fontName='Helvetica', leading=10)
def unit_header(text):
data = [[Paragraph(text, style_unit)]]
t = Table(data, colWidths=[PAGE_W - 2*MARGIN])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('ROUNDEDCORNERS', [4,4,4,4]),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
]))
return t
def section_header(text, bg=LIGHT_BLUE, fg=DARK_BLUE):
p = Paragraph(text, S('sh', fontSize=10, textColor=fg,
fontName='Helvetica-Bold', leading=14,
leftIndent=4))
data = [[p]]
t = Table(data, colWidths=[PAGE_W - 2*MARGIN])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('LINEBELOW', (0,0), (-1,-1), 1, fg),
]))
return t
def highlight_box(text, bg=YELLOW_BG, border=ORANGE):
p = Paragraph(text, S('hb', fontSize=9, textColor=colors.HexColor('#92400e'),
fontName='Helvetica-Bold', leading=13))
data = [[p]]
t = Table(data, colWidths=[PAGE_W - 2*MARGIN])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('BOX', (0,0), (-1,-1), 1.5, border),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 10),
]))
return t
def make_table(headers, rows, col_widths=None, header_bg=MED_BLUE):
avail = PAGE_W - 2*MARGIN
if col_widths is None:
col_widths = [avail / len(headers)] * len(headers)
hdr_style = S('th', fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold', leading=12)
cell_style = S('td', fontSize=8.5, textColor=BLACK, fontName='Helvetica', leading=11)
data = [[Paragraph(h, hdr_style) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), cell_style) for c in row])
t = Table(data, colWidths=col_widths)
ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), header_bg),
('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, LIGHT_GRAY]),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#d1d5db')),
('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(ts)
return t
def bp(text):
return Paragraph(text, style_bullet)
def b(text):
return Paragraph(text, style_body)
def h1(text):
return Paragraph(text, style_h1)
def h2(text):
return Paragraph(text, style_h2)
def h3(text):
return Paragraph(text, style_h3)
def sp(n=4):
return Spacer(1, n)
def note(text):
return Paragraph(' ' + text, style_note)
# ─── PAGE EVENTS ──────────────────────────────────────────────────────────────
PAGE_NUM = [0]
def on_page(canvas, doc):
PAGE_NUM[0] += 1
w, h = A4
# Footer bar
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, w, 22, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont('Helvetica', 7.5)
canvas.drawCentredString(w/2, 7,
f'Child Health Nursing II | BSc Nursing 6th Semester | ABVMU (INC Syllabus) | Page {PAGE_NUM[0]}')
# Top accent line
canvas.setFillColor(ACCENT)
canvas.rect(0, h - 4, w, 4, fill=1, stroke=0)
canvas.restoreState()
def on_first_page(canvas, doc):
pass # Cover page handles its own decoration
# ─── BUILD ────────────────────────────────────────────────────────────────────
OUTPUT = '/home/daytona/workspace/child-health-nursing/Child_Health_Nursing_II_Notes.pdf'
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=MARGIN + 10, bottomMargin=MARGIN + 10,
title='Child Health Nursing II - Quick Reference Notes',
author='Vaibhav | BSc Nursing 6th Sem'
)
story = []
# ══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════════════════
avail = PAGE_W - 2*MARGIN
cover_content = [
Spacer(1, 1.5*cm),
Paragraph('CHILD HEALTH NURSING II', style_cover_title),
Paragraph('Quick Reference Notes', style_cover_sub),
Spacer(1, 0.5*cm),
Paragraph('BSc Nursing - 6th Semester', style_cover_info),
Paragraph('ABVMU | INC Curriculum', style_cover_info),
Spacer(1, 0.4*cm),
Paragraph('Prepared for: Vaibhav', style_cover_info),
Spacer(1, 2*cm),
]
cover_data = [[item] for item in cover_content]
# Use a single-cell table as the cover card
cover_inner = []
for item in cover_content:
cover_inner.append(item)
cover_box_data = [cover_inner]
# Actually, build a table with a blue background for the whole cover
cover_title_p = Paragraph('CHILD HEALTH NURSING II', style_cover_title)
cover_sub_p = Paragraph('Quick Reference Notes', style_cover_sub)
cover_info1 = Paragraph('BSc Nursing - 6th Semester', style_cover_info)
cover_info2 = Paragraph('ABVMU | INC Curriculum', style_cover_info)
cover_student = Paragraph('Prepared for: Vaibhav', style_cover_info)
# Units list on cover
units_style = S('us', fontSize=10.5, textColor=colors.HexColor('#bfdbfe'),
fontName='Helvetica', leading=17, alignment=TA_CENTER)
units_text = (
'Unit I: Cardiovascular, Hematological, GI, GU & Nervous System<br/>'
'Unit II: Orthopedic, Eye, Ear, Skin & Communicable Diseases<br/>'
'Unit III: Behavioral, Social & Psychiatric Problems<br/>'
'Unit IV: Challenged Children & Welfare Services'
)
cover_table = Table(
[[cover_title_p],
[cover_sub_p],
[Spacer(1, 0.3*cm)],
[cover_info1],
[cover_info2],
[Spacer(1, 0.3*cm)],
[cover_student],
[Spacer(1, 0.8*cm)],
[Paragraph(units_text, units_style)],
[Spacer(1, 1*cm)],
[Paragraph('July 2026 | Exam Preparation Edition', style_cover_info)],
],
colWidths=[avail]
)
cover_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('ROUNDEDCORNERS', [8,8,8,8]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
('LINEABOVE', (0,8), (-1,8), 1, colors.HexColor('#3b82f6')),
('LINEBELOW', (0,8), (-1,8), 1, colors.HexColor('#3b82f6')),
]))
story.append(Spacer(1, 2*cm))
story.append(cover_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# UNIT I: CARDIOVASCULAR SYSTEM
# ══════════════════════════════════════════════════════════════════════════════
story.append(unit_header('UNIT I | Cardiovascular, Hematological, GI, GU & Nervous System'))
story.append(sp(8))
# --- CHD ---
story.append(section_header('A. CARDIOVASCULAR SYSTEM - Congenital Heart Diseases (CHD)'))
story.append(sp(4))
story.append(h2('1. Acyanotic CHD (L->R Shunt - No cyanosis initially)'))
chd_acyanotic = make_table(
['Condition', 'Key Feature', 'Murmur / Sign'],
[
['ASD (Atrial Septal Defect)', 'Hole between atria; more common in females', 'Systolic ejection murmur, fixed split S2'],
['VSD (Ventricular Septal Defect)', 'MOST COMMON CHD; hole between ventricles', 'Harsh pansystolic murmur, left sternal border'],
['PDA (Patent Ductus Arteriosus)', 'Ductus fails to close after birth; common in premature infants', 'Continuous machinery murmur; bounding pulse'],
],
col_widths=[5*cm, 8*cm, 6.5*cm]
)
story.append(chd_acyanotic)
story.append(sp(6))
story.append(h2('2. Cyanotic CHD (R->L Shunt - Central cyanosis)'))
story.append(highlight_box('TOF (Tetralogy of Fallot) = MOST COMMON Cyanotic CHD', bg=LIGHT_BLUE, border=MED_BLUE))
story.append(sp(3))
tof_table = make_table(
['4 Defects of TOF', 'Clinical Features', 'Nursing Management'],
[
['1. VSD\n2. Pulmonary Stenosis\n3. Overriding Aorta\n4. Right Ventricular Hypertrophy',
'- Central cyanosis (blue baby)\n- Clubbing of fingers/toes\n- Squatting position (relief)\n- Tet spells (hypercyanotic spells)\n- Polycythemia',
'- Knee-chest position during Tet spells\n- O2 therapy\n- Propranolol for spells\n- Surgical correction (BT shunt -> total repair)\n- Monitor O2 sat']
],
col_widths=[5.5*cm, 6*cm, 8*cm]
)
story.append(tof_table)
story.append(sp(6))
story.append(h2('3. Rheumatic Fever (RF)'))
story.append(h3('Jones Criteria (Diagnosis requires: 2 Major OR 1 Major + 2 Minor + evidence of strep infection)'))
rf_table = make_table(
['MAJOR Criteria', 'MINOR Criteria'],
[['Carditis', 'Fever'],
['Polyarthritis (migratory)', 'Elevated ESR / CRP'],
['Sydenham\'s Chorea', 'Prolonged PR interval on ECG'],
['Erythema Marginatum', 'Leukocytosis'],
['Subcutaneous Nodules', 'History of previous RF']],
col_widths=[9*cm, 10.5*cm],
header_bg=ACCENT
)
story.append(rf_table)
story.append(sp(3))
story.append(bp('<b>Treatment:</b> Benzathine Penicillin IM (drug of choice), Aspirin for arthritis, bed rest, monthly penicillin prophylaxis'))
story.append(sp(6))
story.append(h2('4. Congestive Cardiac Failure (CCF) in Children'))
story.append(bp('<b>Signs:</b> Tachycardia, tachypnea, hepatomegaly, periorbital/pedal edema, poor feeding, sweating during feeds'))
story.append(bp('<b>Treatment:</b> Digoxin (positive inotrope), Furosemide (diuretic), ACE inhibitors, fluid/salt restriction'))
story.append(sp(8))
# --- HEMATOLOGICAL ---
story.append(section_header('B. HEMATOLOGICAL CONDITIONS', bg=LIGHT_GREEN, fg=GREEN))
story.append(sp(4))
hema_table = make_table(
['Condition', 'Key Features', 'Management'],
[
['Hemophilia A\n(Factor VIII deficiency)\nX-linked recessive',
'Prolonged bleeding, hemarthrosis (joint bleeding), bruising, males affected, females carriers',
'Factor VIII replacement, RICE for bleeds, avoid IM injections, avoid aspirin'],
['Hemophilia B\n(Factor IX deficiency)',
'Similar to Hemophilia A, Christmas disease',
'Factor IX concentrate'],
['Thalassemia Major\n(Autosomal recessive)',
'Severe anemia, hepatosplenomegaly, chipmunk facies, frontal bossing, target cells on smear',
'Blood transfusion every 3-4 weeks + Deferoxamine (iron chelation); BMT is curative'],
['ALL (Leukemia)\nMost common childhood cancer',
'Pallor, fatigue, recurrent infections, bleeding, bone pain, lymphadenopathy, hepatosplenomegaly',
'Chemotherapy: Induction > Consolidation > Maintenance'],
['ITP',
'Petechiae, purpura, bruising; NO organomegaly; autoimmune platelet destruction',
'Steroids, IVIG; splenectomy for severe/refractory'],
['Iron Deficiency Anemia\n(Most common anemia)',
'Pallor, fatigue, koilonychia (spoon nails), pica, irritability',
'Ferrous sulfate 6 mg/kg/day, dietary iron (jaggery, green leafy vegetables)'],
],
col_widths=[4.5*cm, 7.5*cm, 7.5*cm],
header_bg=GREEN
)
story.append(hema_table)
story.append(sp(8))
# --- GI ---
story.append(section_header('C. GASTROINTESTINAL SYSTEM', bg=LIGHT_ORANGE, fg=ORANGE))
story.append(sp(4))
story.append(h2('Congenital GI Malformations'))
gi_table = make_table(
['Condition', 'Key Feature', 'Management'],
[
['Cleft Lip & Palate', 'Incomplete fusion; feeding difficulty, speech problems', 'Lip repair: 3 months (Rule of 10s - 10 wks, 10 lbs, Hb 10g); Palate: 18 months'],
['Hypertrophic Pyloric Stenosis', 'Hypertrophied pylorus; projectile vomiting (non-bilious); olive-shaped RUQ mass; more in males', 'Ramstedt Pyloromyotomy (surgery); correct electrolytes first'],
['Hirschsprung\'s Disease (Megacolon)', 'Absence of ganglion cells in distal colon; chronic constipation, abdominal distension', 'Colostomy then pull-through surgery'],
['Anorectal Malformations', 'Imperforate anus; no meconium passage', 'Emergency colostomy -> definitive repair'],
['Intussusception', 'Telescoping of bowel; currant jelly stool, colicky pain, sausage-shaped mass', 'Hydrostatic / pneumatic reduction; surgery if fails'],
],
col_widths=[5*cm, 7*cm, 7.5*cm],
header_bg=ORANGE
)
story.append(gi_table)
story.append(sp(4))
story.append(h2('Protein Energy Malnutrition (PEM)'))
pem_table = make_table(
['Feature', 'Kwashiorkor (Protein deficiency)', 'Marasmus (Total calorie deficiency)'],
[
['Age', '1-3 years', '< 1 year'],
['Edema', 'Present (pitting)', 'Absent'],
['Appearance', 'Moon face, pot belly, skin lesions (flaky paint)', '"Old man" face, skin and bones, wasting'],
['Hair', 'Flag sign (alternating light/dark bands)', 'Sparse'],
['Weight', 'May seem normal due to edema', 'Severe wasting (< 60% expected)'],
['Treatment', 'High protein + calories', 'Gradual calorie repletion, prevent refeeding syndrome'],
],
col_widths=[3*cm, 8*cm, 8.5*cm],
header_bg=ORANGE
)
story.append(pem_table)
story.append(sp(8))
story.append(PageBreak())
# --- GU ---
story.append(unit_header('UNIT I (continued) | GU System & Nervous System'))
story.append(sp(8))
story.append(section_header('D. GENITOURINARY SYSTEM'))
story.append(sp(4))
gu_table = make_table(
['Condition', 'Key Features', 'Management'],
[
['Nephrotic Syndrome',
'Triad: Massive proteinuria + Hypoalbuminemia + Edema (periorbital in morning)\nFrothy urine, lipiduria',
'Prednisolone (first-line), low salt/protein diet, diuretics, treat infections'],
['Acute Glomerulonephritis (AGN)',
'Triad: Hematuria (smoky/cola-colored urine) + Hypertension + Oliguria\nFollows Strep infection (1-3 weeks after throat/skin infection)',
'Penicillin, antihypertensives, fluid restriction, diuretics, dialysis if needed'],
['Wilms Tumor (Nephroblastoma)',
'Most common renal tumor in children (peak 2-4 years)\nLarge painless abdominal mass\nIMPORTANT: DO NOT palpate repeatedly!',
'Nephrectomy + chemotherapy (+/- radiotherapy)\nAvoid palpation to prevent tumor spread'],
['Hypospadias',
'Urethral opening on VENTRAL (under) surface of penis',
'Surgery: do NOT circumcise (foreskin needed for repair)'],
['Epispadias',
'Urethral opening on DORSAL (top) surface of penis',
'Surgical correction'],
],
col_widths=[4.5*cm, 7.5*cm, 7.5*cm]
)
story.append(gu_table)
story.append(sp(8))
# --- NERVOUS ---
story.append(section_header('E. NERVOUS SYSTEM', bg=LIGHT_GREEN, fg=GREEN))
story.append(sp(4))
ns_table = make_table(
['Condition', 'Description & Features', 'Nursing Care'],
[
['Spina Bifida',
'Incomplete closure of neural tube\nOcculta: skin-covered (mild)\nCystica: sac present (meningocele/myelomeningocele)',
'Protect sac with moist saline dressing\nProne position\nWatch for infection, hydrocephalus\nMonitor bladder/bowel function'],
['Hydrocephalus',
'Accumulation of CSF in ventricles\nEnlarged head circumference\nSunset sign (eyes deviated down)\nBulging anterior fontanelle\nIrritability, high-pitched cry',
'VP (Ventriculoperitoneal) shunt\nMeasure head circumference daily\nMonitor for ICP signs\nPost-shunt: watch for infection, blockage'],
['Meningitis',
'Bacterial: fever, neck stiffness, Kernig\'s sign (+), Brudzinski\'s sign (+)\nPhotophobia, headache, bulging fontanelle in infants\nPetechial rash in meningococcal',
'IV antibiotics (Ceftriaxone - drug of choice)\nIsolation precautions\nDexamethasone (reduce inflammation)\nReduce stimulation (quiet, dim room)'],
['Cerebral Palsy',
'Non-progressive motor disorder due to brain damage (before/during/after birth)\nSpastic (most common), Athetoid, Ataxic\nDelay in motor milestones',
'Physiotherapy, occupational therapy, speech therapy\nAssistive devices\nAnticonvulsants if seizures\nMultidisciplinary approach'],
['Febrile Seizures',
'Most common: 6 months - 5 years\nGeneralized tonic-clonic, < 15 min\nAssociated with fever > 38C\nBenign; rarely epilepsy',
'Safety: padded sides, nothing in mouth\nTurn child to side (recovery position)\nO2 if needed\nDiazepam PR / IV for prolonged seizures\nTreat underlying fever'],
],
col_widths=[4*cm, 7*cm, 8.5*cm],
header_bg=GREEN
)
story.append(ns_table)
story.append(sp(8))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# UNIT II
# ══════════════════════════════════════════════════════════════════════════════
story.append(unit_header('UNIT II | Orthopedic, Eye, Ear, Skin & Communicable Diseases'))
story.append(sp(8))
story.append(section_header('A. ORTHOPEDIC DISORDERS'))
story.append(sp(4))
ortho_table = make_table(
['Condition', 'Key Features', 'Management'],
[
['Club Foot (Talipes Equinovarus)',
'Most common congenital foot deformity\nFoot in plantarflexion, inversion, adduction',
'PONSETI METHOD: Serial casting (6-8 weeks) then Achilles tenotomy -> Denis Browne splint\nSurgery if conservative fails'],
['CDH/DDH (Congenital Dislocation of Hip)',
'Ortolani test: positive click (reduction)\nBarlow test: positive (dislocation)\nAsymmetric skin folds, limited abduction\nLimping in older child',
'Infant: Pavlik harness (0-6 months)\nOlder: Traction then closed/open reduction\nHip spica cast'],
['Fractures in Children',
'Greenstick fracture most common (incomplete)\nSalter-Harris classification for growth plate injuries',
'Splinting, casting; rarely surgery in children'],
],
col_widths=[5*cm, 7*cm, 7.5*cm]
)
story.append(ortho_table)
story.append(sp(6))
story.append(section_header('B. COMMUNICABLE DISEASES IN CHILDREN', bg=LIGHT_ORANGE, fg=ORANGE))
story.append(sp(4))
comm_table = make_table(
['Disease', 'Agent', 'Incubation', 'Characteristic Sign', 'Treatment'],
[
['Measles (Rubeola)', 'Paramyxovirus', '10-12 days', 'Koplik spots (white patches on buccal mucosa)\nMaculopapular rash: head -> toe\n3 Cs: Cough, Coryza, Conjunctivitis', 'Supportive + Vitamin A'],
['Chickenpox (Varicella)', 'Varicella zoster virus', '14-21 days', 'Vesicular rash - centripetal (trunk first)\nAll stages simultaneously\n"Dew drop on rose petal"', 'Acyclovir, calamine lotion, antihistamines'],
['Mumps', 'Paramyxovirus', '14-21 days', 'Parotid gland swelling (parotitis)\nPainful swelling below ear', 'Supportive, soft diet'],
['Rubella (German Measles)', 'Togavirus', '14-21 days', 'Fine maculopapular rash\nPostauricular lymphadenopathy', 'Supportive; MMR vaccine prevention'],
['Whooping Cough (Pertussis)', 'Bordetella pertussis', '7-14 days', 'Paroxysmal cough + inspiratory whoop\n"Whooping" sound, post-tussive vomiting', 'Erythromycin, DPT vaccine'],
['Typhoid', 'Salmonella typhi', '10-14 days', 'Rose spots on abdomen\nStep-ladder fever, relative bradycardia', 'Ciprofloxacin / Azithromycin'],
['Diphtheria', 'Corynebacterium diphtheriae', '2-5 days', 'Pseudomembrane on throat (greyish)\n"Bull neck" appearance', 'Antitoxin + Penicillin/Erythromycin; DPT vaccine'],
],
col_widths=[3.5*cm, 3.5*cm, 2.5*cm, 5.5*cm, 4.5*cm],
header_bg=ORANGE
)
story.append(comm_table)
story.append(sp(8))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# UNIT III
# ══════════════════════════════════════════════════════════════════════════════
story.append(unit_header('UNIT III | Behavioral, Social & Psychiatric Problems in Children'))
story.append(sp(8))
story.append(section_header('A. COMMON BEHAVIORAL DISORDERS'))
story.append(sp(4))
behav_table = make_table(
['Disorder', 'Description', 'Management'],
[
['Enuresis', 'Bed-wetting after age 5 (involuntary urination)', 'Bladder training, star chart, restrict fluids before bed, Imipramine (drug)'],
['Encopresis', 'Fecal soiling after age 4', 'Bowel training, high fiber diet, biofeedback'],
['Temper Tantrums', 'Emotional outbursts; peak in toddlers (2-3 years)', 'Ignore behavior, consistency, positive reinforcement, avoid triggers'],
['Thumb Sucking', 'Common and normal till age 4', 'Reassurance to parents; dental guard if persistent beyond 4 years'],
['Nail Biting', 'Anxiety-related habit', 'Behavioral therapy, identify stressors'],
['School Phobia', 'Anxiety/fear about attending school', 'Gradual re-introduction, counseling, family therapy'],
['Juvenile Delinquency', 'Persistent antisocial behavior in adolescents', 'Counseling, rehabilitation, family and social support'],
['Learning Disability', 'Difficulty in reading (dyslexia), writing (dysgraphia), math (dyscalculia)', 'Special education, IEP, supportive classroom environment'],
],
col_widths=[4*cm, 6*cm, 9.5*cm]
)
story.append(behav_table)
story.append(sp(6))
story.append(section_header('B. PSYCHIATRIC DISORDERS IN CHILDREN', bg=LIGHT_GREEN, fg=GREEN))
story.append(sp(4))
psych_table = make_table(
['Disorder', 'Key Features', 'Management'],
[
['Autism Spectrum Disorder (ASD)',
'Impaired social interaction & communication\nRepetitive/stereotyped behaviors\nDiagnosis usually by age 3\n"Cannot" make eye contact',
'ABA (Applied Behavior Analysis) - FIRST LINE\nSpeech therapy, occupational therapy\nRisperidone for behavioral symptoms'],
['ADHD',
'Inattention, hyperactivity, impulsivity\nIn multiple settings (school + home)\nMore in boys (3:1)',
'Methylphenidate (Ritalin) - drug of choice\nBehavior therapy + parental training\nStructured environment'],
['Childhood Depression',
'Persistent sadness, loss of interest\nPoor sleep, appetite changes, withdrawal\nMay present as somatic complaints in children',
'Psychotherapy (CBT first-line)\nSSRIs (Fluoxetine approved for children)\nFamily therapy'],
['PTSD',
'After trauma (abuse, disaster, accident)\nFlashbacks, nightmares, hypervigilance, avoidance',
'Trauma-focused CBT\nGroup therapy\nSSRIs'],
['Childhood Schizophrenia',
'Rare; hallucinations (usually auditory), delusions, disorganized speech\nInsidious onset',
'Antipsychotics (Haloperidol, Risperidone)\nPsychotherapy + family support'],
['Conversion Reaction',
'Physical symptoms (paralysis, blindness, seizures) with NO organic cause\nTriggered by psychological stress',
'Psychotherapy\nRemove secondary gains\nFamily education'],
],
col_widths=[4.5*cm, 6.5*cm, 8.5*cm],
header_bg=GREEN
)
story.append(psych_table)
story.append(sp(6))
story.append(b('<b>Child Guidance Clinic:</b> Multidisciplinary team (psychiatrist, psychologist, social worker, pediatric nurse) providing assessment, counseling, family therapy and school consultation for children with behavioral/psychiatric problems.'))
story.append(sp(8))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# UNIT IV
# ══════════════════════════════════════════════════════════════════════════════
story.append(unit_header('UNIT IV | Challenged Children & Social/Welfare Services'))
story.append(sp(8))
story.append(section_header('A. TYPES OF CHALLENGED CHILDREN'))
story.append(sp(4))
story.append(h2('1. Intellectually Disabled (Mental Retardation)'))
id_table = make_table(
['Category', 'IQ Range', 'Functional Level'],
[
['Mild', '50-70', 'Educable; can live independently with support'],
['Moderate', '35-50', 'Trainable; simple tasks, supervised living'],
['Severe', '20-35', 'Needs continuous support'],
['Profound', 'Below 20', 'Totally dependent'],
],
col_widths=[5*cm, 4*cm, 10.5*cm]
)
story.append(id_table)
story.append(sp(4))
story.append(h2('2. Down Syndrome (Trisomy 21) - Most Common Cause of Intellectual Disability'))
down_table = make_table(
['Clinical Features', 'Associated Problems'],
[
['Flat facial profile, small nose\nEpicanthal folds (upward slanting eyes)\nSimian crease (single palmar crease)\nProtruding tongue, hypotonia\nShort stature, small ears',
'Congenital heart disease (40% - ASD/VSD most common)\nDuodenal atresia ("double bubble" sign)\nHypothyroidism\nIncreased risk of ALL (leukemia)\nAlzheimer\'s disease in adulthood'],
],
col_widths=[8*cm, 11.5*cm]
)
story.append(down_table)
story.append(sp(6))
story.append(section_header('B. SOCIAL & WELFARE SERVICES FOR CHALLENGED CHILDREN', bg=LIGHT_ORANGE, fg=ORANGE))
story.append(sp(4))
welfare_table = make_table(
['Organization/Act', 'Role'],
[
['ICDS (Integrated Child Development Services)', 'Nutrition, immunization, health check-ups, preschool education for children 0-6 years'],
['RCI (Rehabilitation Council of India)', 'Regulates training of rehabilitation professionals; certifies special educators'],
['PWD Act 1995 (Persons with Disabilities)', 'Ensures rights, education, employment, barrier-free environment for disabled persons'],
['National Trust Act 1999', 'Welfare of persons with autism, cerebral palsy, intellectual disability, multiple disabilities'],
['NIMH (National Institute for Mentally Handicapped)', 'Training, research, service for intellectually disabled; now NIEPID'],
['Special Schools', 'Education for visually impaired (Braille), hearing impaired (sign language), intellectually disabled'],
['Sheltered Workshops', 'Supervised employment for disabled adults'],
['POCSO Act 2012', 'Protection of Children from Sexual Offences'],
],
col_widths=[7*cm, 12.5*cm],
header_bg=ORANGE
)
story.append(welfare_table)
story.append(sp(8))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# HIGH YIELD QUICK REFERENCE
# ══════════════════════════════════════════════════════════════════════════════
story.append(unit_header('HIGH-YIELD QUICK REFERENCE | Exam Essentials'))
story.append(sp(8))
story.append(highlight_box('MUST KNOW FACTS - These are the most frequently tested points in exams!'))
story.append(sp(6))
qr_table = make_table(
['Topic', 'Key Fact'],
[
['Most common CHD', 'VSD (Ventricular Septal Defect)'],
['Most common CYANOTIC CHD', 'Tetralogy of Fallot (TOF)'],
['TOF - 4 defects', 'VSD + Pulmonary Stenosis + Overriding Aorta + RVH'],
['TOF - Position during Tet spell', 'Knee-chest position (squatting)'],
['Rheumatic fever - drug of choice', 'Benzathine Penicillin IM'],
['Hemophilia A - deficiency', 'Factor VIII'],
['Hemophilia B - deficiency', 'Factor IX (Christmas disease)'],
['Most common anemia in children', 'Iron Deficiency Anemia'],
['Thalassemia - drug for iron overload', 'Deferoxamine (Desferrioxamine) - iron chelation'],
['Thalassemia - curative treatment', 'Bone Marrow Transplantation (BMT)'],
['Most common childhood cancer', 'ALL (Acute Lymphoblastic Leukemia)'],
['Nephrotic syndrome - first-line drug', 'Prednisolone (corticosteroids)'],
['AGN urine color', 'Smoky / cola-colored (due to hematuria)'],
['Wilms Tumor - critical nursing point', 'DO NOT palpate abdomen repeatedly!'],
['Hypospadias - nursing point', 'Do NOT circumcise (foreskin needed for repair)'],
['Hydrocephalus - surgical treatment', 'VP Shunt (Ventriculoperitoneal shunt)'],
['Spina bifida nursing position', 'Prone position; protect sac with moist dressing'],
['Meningitis - drug of choice', 'Ceftriaxone IV'],
['Meningitis signs', 'Kernig\'s sign + Brudzinski\'s sign + Neck stiffness'],
['Club foot - treatment method', 'Ponseti method (serial casting)'],
['CDH/DDH in infants', 'Pavlik harness'],
['Pyloric stenosis - surgery', 'Ramstedt Pyloromyotomy'],
['Cleft lip repair time', 'Rule of 10s: 10 weeks, 10 lbs, Hb 10 g/dL'],
['Measles - diagnostic sign', 'Koplik spots (on buccal mucosa)'],
['Measles - vitamin supplement', 'Vitamin A (prevents complications)'],
['Chickenpox rash pattern', 'Centripetal (trunk first); all stages simultaneously'],
['Whooping cough - treatment', 'Erythromycin; preventable by DPT vaccine'],
['Autism - first-line therapy', 'ABA (Applied Behavior Analysis)'],
['ADHD - drug of choice', 'Methylphenidate (Ritalin)'],
['Down syndrome - karyotype', 'Trisomy 21 (47 chromosomes)'],
['Down syndrome - single palmar crease', 'Simian crease (transverse palmar crease)'],
['Kwashiorkor vs Marasmus - edema', 'Kwashiorkor: EDEMA present; Marasmus: NO edema'],
['ITP - distinguishing feature', 'Thrombocytopenia with NO organomegaly'],
],
col_widths=[9*cm, 10.5*cm],
header_bg=ACCENT
)
story.append(qr_table)
story.append(sp(8))
# Important long questions
story.append(section_header('IMPORTANT LONG QUESTIONS FOR EXAM', bg=LIGHT_BLUE, fg=DARK_BLUE))
story.append(sp(4))
lq_list = [
'1. Describe the nursing management of a child with Tetralogy of Fallot (TOF)',
'2. Write about pathophysiology, clinical features and nursing care of Nephrotic Syndrome',
'3. Describe nursing management of a child with Leukemia (ALL)',
'4. Write about Autism Spectrum Disorder - features, diagnosis and management',
'5. Describe the management of a child with Hydrocephalus including post-operative care',
'6. Write about communicable diseases in children with prevention and nursing management',
'7. Describe behavioral problems in children and role of the nurse',
'8. Compare Kwashiorkor and Marasmus with nursing management',
'9. Write about Thalassemia Major - pathophysiology, complications and management',
'10. Describe social welfare services available for challenged children in India',
]
for q in lq_list:
story.append(bp(q))
story.append(sp(6))
# Closing box
closing_box_data = [[
Paragraph(
'<b>Best of Luck, Vaibhav!</b><br/>You have prepared well. Stay calm, read each question carefully, and write structured answers. You\'ve got this!',
S('cl', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold',
leading=16, alignment=TA_CENTER)
)
]]
closing_box = Table(closing_box_data, colWidths=[avail])
closing_box.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), ACCENT),
('ROUNDEDCORNERS', [6,6,6,6]),
('TOPPADDING', (0,0), (-1,-1), 12),
('BOTTOMPADDING', (0,0), (-1,-1), 12),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
]))
story.append(closing_box)
# ─── BUILD ────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")