Give answers
Leavell and Clark (1965) described these within the "Natural History of Disease" framework, with the "Agent-Host-Environment" triad.
| Indicator | Definition |
|---|---|
| Birth rate (CBR) | Live births per 1000 population per year |
| Death rate (CDR) | Deaths per 1000 population per year |
| Fertility rate | Live births per 1000 women aged 15-49 |
| TFR (Total Fertility Rate) | Average children per woman in reproductive age |
| Infant Mortality Rate (IMR) | Deaths under 1 year per 1000 live births |
| Maternal Mortality Ratio (MMR) | Maternal deaths per 1,00,000 live births |
| Forum | Jurisdiction |
|---|---|
| District Consumer Disputes Redressal Forum | Claims up to ₹1 crore (amended: ₹50 lakh) |
| State Consumer Disputes Redressal Commission | ₹1 crore to ₹10 crore |
| National Consumer Disputes Redressal Commission (NCDRC) | Above ₹10 crore |
| Rate | Formula | Significance |
|---|---|---|
| Crude Death Rate (CDR) | (Deaths/Population) × 1000 | Overall mortality |
| Infant Mortality Rate (IMR) | (Deaths <1 yr/Live births) × 1000 | Child health index |
| Neonatal Mortality Rate | (Deaths <28 days/Live births) × 1000 | - |
| Perinatal Mortality Rate | (Stillbirths + Deaths <7 days/Births) × 1000 | - |
| Maternal Mortality Ratio (MMR) | (Maternal deaths/Live births) × 1,00,000 | Women's health |
| Case Fatality Rate (CFR) | (Deaths from disease/Cases of disease) × 100 | Disease severity |
| Vaccine | Disease | Schedule |
|---|---|---|
| BCG | Tuberculosis | At birth |
| OPV 0 | Polio | At birth |
| Hepatitis B | Hepatitis B | At birth, 6, 10, 14 weeks |
| OPV 1,2,3 | Polio | 6, 10, 14 weeks |
| Pentavalent (DPT+HepB+Hib) | Diphtheria, Pertussis, Tetanus, Hep B, Hib | 6, 10, 14 weeks |
| IPV | Polio | 14 weeks, 9-12 months |
| Rotavirus | Rotavirus diarrhea | 6, 10, 14 weeks |
| PCV | Pneumonia | 6, 14 weeks, 9 months |
| Measles-Rubella (MR) | Measles, Rubella | 9-12 months, 16-24 months |
| JE | Japanese Encephalitis | 9-12 months (endemic districts) |
| DPT Booster | Diphtheria, Pertussis, Tetanus | 16-24 months, 5-6 years |
| TT/Td | Tetanus | 10 years, 16 years |
| Vitamin A | Vitamin A deficiency | 9 months, then every 6 months up to 5 years |
| Vaccine | Storage Temperature |
|---|---|
| OPV | -15 to -25°C (freezer) |
| Most other vaccines | +2 to +8°C (refrigerator) |
| Freeze-sensitive vaccines (DPT, Hep B, DT, TT) | Never freeze! Store at 2-8°C |
| Age | Vaccines |
|---|---|
| Birth | BCG, OPV-0, Hepatitis B-0 |
| 6 weeks | OPV-1, Pentavalent-1 (DPT+HepB+Hib), IPV-1, Rotavirus-1, PCV-1 |
| 10 weeks | OPV-2, Pentavalent-2, Rotavirus-2 |
| 14 weeks | OPV-3, Pentavalent-3, IPV-2, Rotavirus-3, PCV-2 |
| 9-12 months | MR-1, PCV Booster, JE-1 (endemic areas), Vitamin A-1 |
| 16-24 months | MR-2, DPT Booster-1, OPV Booster, JE-2, Vitamin A-2 (every 6 months) |
| 5-6 years | DPT Booster-2 |
| 10 years | Td |
| 16 years | Td |
| Pregnant women | TT-1, TT-2 (or Booster) |
| Topic | Key Point to Remember |
|---|---|
| Levels of prevention | Primary (before), Secondary (early detection), Tertiary (rehabilitation) |
| PHC elements | 8 essential elements; Alma Ata 1978 |
| Epidemiology | Agent-Host-Environment triad |
| IMR | Deaths <1 yr per 1000 live births |
| Prevalence | Incidence × Duration |
| ICDS | Launched Oct 2, 1975; 6 services; Anganwadi worker |
| UIP | Launched 1985; BCG at birth |
| RNTCP | DOTS; MDR-TB = resistant to INH + RIF |
| NVBCP | 2003; covers 5 vector-borne diseases |
| AIDS | HIV; CD4<200 = AIDS; ART: TDF+3TC+DTG |
| Malaria | P. falciparum most dangerous; ACT treatment |
| ORS | For cholera/diarrhea; Doxycycline for cholera |
| Cold chain | OPV at -20°C; DPT never freeze |
| HTST | 72°C for 15 seconds |
| Measles | Koplik's spots; Vitamin A; MR vaccine |
| Cholera | Rice water stools; ORS + Doxycycline |
| NHP 2017 | 2.5% GDP on health; UHC |
| Mode of transmission | Droplet <1m; Airborne <5µm; Vector-borne |
Create a pdf
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "Created workspace"
~/chn_notes.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, inch
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
import os
OUTPUT_PATH = "/tmp/workspace/CHN_Public_Health_Notes.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1a3c6e")
MED_BLUE = colors.HexColor("#2563ab")
LIGHT_BLUE = colors.HexColor("#dbeafe")
ACCENT_GRN = colors.HexColor("#16a34a")
ACCENT_ORG = colors.HexColor("#ea580c")
LIGHT_GRN = colors.HexColor("#dcfce7")
LIGHT_ORG = colors.HexColor("#fff7ed")
LIGHT_GREY = colors.HexColor("#f1f5f9")
WHITE = colors.white
TABLE_HDR = colors.HexColor("#1e40af")
TABLE_ALT = colors.HexColor("#eff6ff")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_styles():
s = {}
s['cover_title'] = ParagraphStyle('cover_title',
fontName='Helvetica-Bold', fontSize=26, textColor=WHITE,
alignment=TA_CENTER, leading=34, spaceAfter=8)
s['cover_sub'] = ParagraphStyle('cover_sub',
fontName='Helvetica', fontSize=14, textColor=colors.HexColor("#bfdbfe"),
alignment=TA_CENTER, leading=20, spaceAfter=6)
s['cover_note'] = ParagraphStyle('cover_note',
fontName='Helvetica-Oblique', fontSize=11, textColor=colors.HexColor("#e2e8f0"),
alignment=TA_CENTER, leading=16)
s['h1'] = ParagraphStyle('h1',
fontName='Helvetica-Bold', fontSize=15, textColor=WHITE,
backColor=DARK_BLUE, borderPad=6, leading=20,
spaceBefore=14, spaceAfter=6, leftIndent=-6, rightIndent=-6)
s['h2'] = ParagraphStyle('h2',
fontName='Helvetica-Bold', fontSize=12, textColor=DARK_BLUE,
spaceBefore=10, spaceAfter=4, leading=16,
borderPad=0)
s['h3'] = ParagraphStyle('h3',
fontName='Helvetica-Bold', fontSize=10.5, textColor=MED_BLUE,
spaceBefore=7, spaceAfter=3, leading=14)
s['body'] = ParagraphStyle('body',
fontName='Helvetica', fontSize=9.5, textColor=colors.HexColor("#1e293b"),
leading=14, spaceAfter=4, alignment=TA_JUSTIFY)
s['bullet'] = ParagraphStyle('bullet',
fontName='Helvetica', fontSize=9.5, textColor=colors.HexColor("#1e293b"),
leading=14, spaceAfter=2, leftIndent=14, firstLineIndent=-10)
s['sub_bullet'] = ParagraphStyle('sub_bullet',
fontName='Helvetica', fontSize=9, textColor=colors.HexColor("#334155"),
leading=13, spaceAfter=2, leftIndent=28, firstLineIndent=-10)
s['highlight'] = ParagraphStyle('highlight',
fontName='Helvetica-Bold', fontSize=9.5, textColor=ACCENT_ORG,
leading=14, spaceAfter=3, leftIndent=14, firstLineIndent=-10)
s['footer'] = ParagraphStyle('footer',
fontName='Helvetica', fontSize=8, textColor=colors.grey,
alignment=TA_CENTER)
s['toc_entry'] = ParagraphStyle('toc_entry',
fontName='Helvetica', fontSize=10, textColor=DARK_BLUE,
leading=16, spaceAfter=2, leftIndent=10)
s['toc_title'] = ParagraphStyle('toc_title',
fontName='Helvetica-Bold', fontSize=13, textColor=DARK_BLUE,
alignment=TA_CENTER, spaceBefore=8, spaceAfter=10)
return s
S = make_styles()
# ── Helper builders ───────────────────────────────────────────────────────────
def h1(text):
return Paragraph(f" {text}", S['h1'])
def h2(text):
return Paragraph(text, S['h2'])
def h3(text):
return Paragraph(text, S['h3'])
def body(text):
return Paragraph(text, S['body'])
def bul(text, sub=False):
style = S['sub_bullet'] if sub else S['bullet']
return Paragraph(f"• {text}", style)
def hl(text):
return Paragraph(f"★ {text}", S['highlight'])
def sp(h=4):
return Spacer(1, h)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#cbd5e1"), spaceAfter=6)
def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE):
data = [[Paragraph(text, ParagraphStyle('box', fontName='Helvetica',
fontSize=9.5, textColor=DARK_BLUE, leading=14))]]
t = Table(data, colWidths=[165*mm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('BOX', (0,0), (-1,-1), 1, border),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
return t
def make_table(headers, rows, col_widths=None):
if col_widths is None:
w = 165*mm / len(headers)
col_widths = [w]*len(headers)
header_row = [Paragraph(h, ParagraphStyle('th', fontName='Helvetica-Bold',
fontSize=9, textColor=WHITE, leading=12)) for h in headers]
data = [header_row]
for i, row in enumerate(rows):
bg = TABLE_ALT if i % 2 == 0 else WHITE
data.append([Paragraph(str(c), ParagraphStyle('td', fontName='Helvetica',
fontSize=9, textColor=colors.HexColor("#1e293b"), leading=12)) for c in row])
t = Table(data, colWidths=col_widths)
style = TableStyle([
('BACKGROUND', (0,0), (-1,0), TABLE_HDR),
('ROWBACKGROUNDS', (0,1), (-1,-1), [TABLE_ALT, WHITE]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#cbd5e1")),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('VALIGN', (0,0), (-1,-1), 'TOP'),
])
t.setStyle(style)
return t
# ── Cover page ────────────────────────────────────────────────────────────────
def cover_page():
elems = []
# big coloured banner
banner_data = [[
Paragraph("Community Health Nursing", S['cover_title']),
Paragraph("& Public Health", S['cover_title']),
Paragraph("Complete Study Notes", S['cover_sub']),
Spacer(1, 10),
Paragraph("36 Topics | Exam-Ready Reference", S['cover_note']),
Spacer(1, 6),
Paragraph("UIP · ICDS · NVBCP · RNTCP · AIDS · Malaria · Cholera · Cancer · Epidemiology & More",
S['cover_note']),
]]
banner = Table([[Paragraph(
"<br/><br/><font size='28'><b>Community Health Nursing</b></font><br/>"
"<font size='16' color='#bfdbfe'>& Public Health</font><br/><br/>"
"<font size='14' color='#e2e8f0'>Complete Study Notes</font><br/><br/>"
"<font size='10' color='#94a3b8'>36 Topics | Exam-Ready Reference</font><br/>"
"<font size='9' color='#7dd3fc'>UIP · ICDS · NVBCP · RNTCP · AIDS · Malaria · Cholera · Cancer · Epidemiology</font><br/><br/>",
ParagraphStyle('cov', fontName='Helvetica-Bold', fontSize=28,
textColor=WHITE, alignment=TA_CENTER, leading=36)
)]], colWidths=[165*mm])
banner.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
('TOPPADDING', (0,0), (-1,-1), 50),
('BOTTOMPADDING', (0,0), (-1,-1), 50),
('ROWHEIGHT', (0,0), (-1,-1), 240),
]))
elems.append(banner)
elems.append(sp(20))
# topic grid
topics = [
"Levels of Prevention", "PHC Principles & Staffing", "Epidemiology",
"Population Control", "Demography", "Water Pollution",
"Water Purification", "Noise Pollution", "Consumer Protection Act",
"Mortality/Incidence/Prevalence", "Food-Borne Diseases", "Home Visiting",
"Immunization", "UIP", "NVBCP",
"RNTCP", "ICDS", "AIDS",
"Malaria", "Women Empowerment", "National Policy",
"Nutritional Programs", "CHN Principles & Functions", "Health Education",
"Measles", "Cancer", "Cholera",
"Sewage Management", "Solid Waste Mgmt", "HTST",
"Cold Chain", "Immunization Schedule", "Types of Ventilation",
"Family Planning", "Family Health", "Mode of Transmission",
]
rows = [topics[i:i+3] for i in range(0, len(topics), 3)]
tdata = []
for row in rows:
tdata.append([Paragraph(t, ParagraphStyle('tt', fontName='Helvetica',
fontSize=8.5, textColor=DARK_BLUE, alignment=TA_CENTER, leading=12)) for t in row])
tbl = Table(tdata, colWidths=[55*mm, 55*mm, 55*mm])
tbl.setStyle(TableStyle([
('ROWBACKGROUNDS', (0,0), (-1,-1), [LIGHT_BLUE, WHITE]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#bfdbfe")),
('LEFTPADDING', (0,0), (-1,-1), 4),
('RIGHTPADDING', (0,0), (-1,-1), 4),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elems.append(tbl)
elems.append(PageBreak())
return elems
# ── All content ───────────────────────────────────────────────────────────────
def all_content():
E = []
# ── 1. Levels of Prevention ──────────────────────────────────────────────
E += [h1("1. Levels of Prevention"), sp(4)]
E += [info_box("Based on Leavell & Clark (1965) — Natural History of Disease framework "
"(Agent–Host–Environment triad)"), sp(6)]
lvl_rows = [
["Primary", "Before disease occurs", "Vaccination, health education, sanitation, iodized salt, condom use"],
["Secondary", "Early detection & prompt treatment", "Screening (Pap smear, blood sugar), mass surveys, case finding"],
["Tertiary", "Reduce disability; restore function", "Rehabilitation, physiotherapy, prosthetics, cardiac rehab"],
]
E += [make_table(["Level", "Timing", "Examples"],
lvl_rows, [30*mm, 50*mm, 85*mm]), sp(6)]
# ── 2. PHC ───────────────────────────────────────────────────────────────
E += [PageBreak(), h1("2. Primary Health Care (PHC)"), sp(4)]
E += [h2("Principles (Alma-Ata Declaration, 1978)"), sp(2)]
for p in ["Equitable distribution of health services",
"Community participation", "Intersectoral coordination",
"Appropriate technology",
"Promotive, preventive, curative & rehabilitative care"]:
E.append(bul(p))
E += [sp(4), h2("8 Essential Elements (mnemonic: SAFE CAMP / ISHI-MCEF)"), sp(2)]
for el in ["Safe water & basic sanitation", "Adequate nutrition & food supply",
"Maternal & child health including family planning",
"Immunization against major infectious diseases",
"Essential drugs at all times",
"Common diseases & injuries: prevention & treatment",
"Health education on prevailing health problems",
"Mental health"]:
E.append(bul(el))
E += [sp(4), h2("Staffing Pattern (India)"), sp(2)]
staff_rows = [
["Sub-centre", "1 ANM + 1 Male Health Worker", "3,000–5,000 (plain); 1,000–3,000 (hilly)"],
["PHC", "1 MO + 14 paramedical staff", "20,000–30,000 population"],
["CHC", "4 specialists + 21 paramedical staff", "80,000–1,20,000 population"],
]
E += [make_table(["Level", "Staff", "Population Coverage"],
staff_rows, [30*mm, 65*mm, 70*mm]), sp(4)]
E += [h2("Nurse's Role at PHC"), sp(2)]
for r in ["Health educator & counsellor", "ANC, PNC, delivery services",
"Immunization & cold chain maintenance",
"Home visiting & case follow-up",
"Record-keeping and reporting",
"Referral of complicated cases",
"Community mobilization"]:
E.append(bul(r))
# ── 3. Epidemiology ──────────────────────────────────────────────────────
E += [PageBreak(), h1("3. Epidemiology"), sp(4)]
E += [info_box("<b>Definition (Last):</b> Study of the distribution and determinants of health-related "
"states in specified populations, and application to control of health problems."), sp(6)]
E += [h2("Types"), sp(2)]
for t in ["<b>Descriptive:</b> Who, When, Where (Person, Place, Time)",
"<b>Analytical:</b> Why & How — case-control, cohort studies",
"<b>Experimental:</b> RCTs, field trials, community trials"]:
E.append(bul(t))
E += [sp(4), h2("Epidemiological Triad"), sp(2)]
E += [info_box("Agent + Host + Environment — breaking any link prevents disease"), sp(4)]
E += [h2("Key Measures"), sp(2)]
epi_rows = [
["Attack rate", "Cases / Population at risk × 100"],
["Secondary attack rate", "Cases in contacts / Total contacts × 100"],
["Case fatality rate (CFR)", "Deaths from disease / Cases of disease × 100"],
["Relative risk (RR)", "Incidence in exposed / Incidence in unexposed"],
["Odds ratio (OR)", "Used in case-control studies"],
]
E += [make_table(["Measure", "Formula / Note"], epi_rows, [65*mm, 100*mm])]
# ── 4. Population Control ────────────────────────────────────────────────
E += [PageBreak(), h1("4. Population Control"), sp(4)]
E += [body("India launched the <b>National Family Planning Programme in 1952</b> — "
"the first country to have a national programme. Renamed RCH Programme in 1997."), sp(4)]
E += [h2("Key Measures"), sp(2)]
for m in ["Raising legal age of marriage (18 girls / 21 boys)",
"Female education & empowerment",
"MTP Act 1971 — medical termination of pregnancy",
"Contraceptive services (IUD, OCP, condoms, sterilization)",
"Economic incentives for small families"]:
E.append(bul(m))
E += [sp(4), h2("Goals"), sp(2)]
E += [info_box("TFR target: 2.1 | NRR target: 1 (replacement level) | "
"Population stabilization target: 2045")]
# ── 5. Demography ────────────────────────────────────────────────────────
E += [PageBreak(), h1("5. Demography"), sp(4)]
E += [body("Scientific study of human population — size, structure, distribution & change."), sp(4)]
dem_rows = [
["CBR (Crude Birth Rate)", "Live births / Population × 1000", "India ~18 (2023)"],
["CDR (Crude Death Rate)", "Deaths / Population × 1000", "India ~7 (2023)"],
["IMR", "Deaths <1 yr / Live births × 1000", "India ~27 (2022)"],
["MMR", "Maternal deaths / Live births × 1,00,000", "India ~97 (2018-20)"],
["TFR", "Avg children per woman (15–49 yrs)", "India 2.0 (NFHS-5)"],
["Sex ratio", "Females per 1000 males", "India 940 (Census 2011)"],
]
E += [make_table(["Indicator", "Formula", "India Value"],
dem_rows, [50*mm, 75*mm, 40*mm]), sp(6)]
E += [h2("Demographic Transition Theory (Notestein)"), sp(2)]
dt_rows = [
["Stage 1", "High BR + High DR", "Stable/slow growth — primitive societies"],
["Stage 2", "High BR + Falling DR", "Rapid population growth"],
["Stage 3", "Falling BR + Low DR", "Slow growth"],
["Stage 4", "Low BR + Low DR", "Stable/declining — developed countries"],
]
E += [make_table(["Stage", "Rates", "Characteristics"],
dt_rows, [20*mm, 50*mm, 95*mm])]
E += [sp(4), info_box("<b>India is in Stage 2–3 transition.</b>")]
# ── 6. Water Pollution ───────────────────────────────────────────────────
E += [PageBreak(), h1("6. Water Pollution"), sp(4)]
E += [h2("Sources"), sp(2)]
for s in ["<b>Industrial:</b> Heavy metals (Pb, Hg), acids, chemicals",
"<b>Agricultural:</b> Pesticides, fertilizers, nitrates",
"<b>Domestic:</b> Sewage, detergents, human waste",
"<b>Natural:</b> Volcanic activity, algal blooms"]:
E.append(bul(s))
E += [sp(4), h2("Indicator of Fecal Contamination"), sp(2)]
E += [info_box("<b>E. coli / Coliform bacteria</b> — indicator organisms. "
"WHO standard: 0 coliforms per 100 mL drinking water. MPN test used."), sp(4)]
E += [h2("Health Effects"), sp(2)]
wp_rows = [
["Biological pollutants", "Cholera, Typhoid, Dysentery, Hepatitis A, Polio"],
["Excess fluoride", "Dental & skeletal fluorosis"],
["Excess arsenic", "Arsenicosis (skin lesions, cancer)"],
["Excess nitrate", "Methemoglobinemia — 'Blue baby syndrome' in infants"],
["Heavy metals", "Lead poisoning (neural damage), Mercury (Minamata disease)"],
]
E += [make_table(["Pollutant", "Effect"], wp_rows, [60*mm, 105*mm])]
# ── 7. Water Purification Methods ────────────────────────────────────────
E += [PageBreak(), h1("7. Water Purification Methods"), sp(4)]
E += [h2("Steps in Treatment"), sp(2)]
for step in ["<b>Sedimentation:</b> Plain or with coagulant (Alum — Al₂SO₄) to form floc",
"<b>Filtration:</b> Slow sand filter (0.1–0.3 m/hr; Schmutzdecke biological layer — 98-99% bacteria removal) | Rapid sand filter (5–15 m/hr; needs coagulation & backwashing)",
"<b>Disinfection:</b> Chlorination (most widely used), Boiling, UV, Ozonation, Iodination"]:
E.append(bul(step))
E += [sp(4), h2("Chlorination (Most Important)"), sp(2)]
E += [info_box("Residual chlorine: <b>0.5 mg/L after 1-hour contact</b>. "
"Breakpoint chlorination: excess Cl₂ added to destroy all organic matter. "
"Agents: Cl₂ gas, bleaching powder Ca(OCl)₂, chloramine."), sp(4)]
E += [h2("Pasteurization Methods"), sp(2)]
past_rows = [
["HTST", "72°C for 15 seconds", "Most common in modern dairies; kills TB, Brucella, Salmonella"],
["LTLT", "63°C for 30 minutes", "Batch pasteurization; older method"],
["UHT", "135–150°C for 2–6 sec", "Shelf-stable milk; all pathogens destroyed"],
]
E += [make_table(["Method", "Temp/Time", "Notes"], past_rows, [25*mm, 45*mm, 95*mm])]
# ── 8. Noise Pollution ───────────────────────────────────────────────────
E += [PageBreak(), h1("8. Noise Pollution"), sp(4)]
E += [info_box("Unit: <b>Decibel (dB)</b> — logarithmic scale. "
"Pain threshold: 140 dB. Industrial exposure limit (8 hr): 90 dB."), sp(6)]
noise_rows = [
["Normal conversation", "60 dB"],
["Traffic", "70–90 dB"],
["Jackhammer / Machinery", "100–120 dB"],
["Jet aircraft", "120–140 dB"],
["WHO outdoor daytime limit", "<55 dB"],
["WHO indoor limit", "<35 dB"],
]
E += [make_table(["Source / Standard", "Level"], noise_rows, [100*mm, 65*mm]), sp(6)]
E += [h2("Health Effects"), sp(2)]
for e in ["<b>Auditory:</b> Noise-Induced Hearing Loss (NIHL), tinnitus, acoustic trauma",
"<b>Non-auditory:</b> Hypertension, sleep disturbance, stress, cardiovascular disease, impaired concentration"]:
E.append(bul(e))
E += [sp(4), h2("Control"), sp(2)]
for c in ["Engineering controls — noise barriers, insulation",
"Administrative controls — shift rotation",
"PPE — ear plugs (20–30 dB reduction), ear muffs (30–40 dB reduction)",
"Legislation — Environment Protection Act; Noise Pollution Rules 2000 (India)"]:
E.append(bul(c))
# ── 9. Consumer Protection Act ───────────────────────────────────────────
E += [PageBreak(), h1("9. Consumer Protection Act (1986, Amended 2019)"), sp(4)]
E += [h2("6 Consumer Rights"), sp(2)]
for r in ["Right to Safety", "Right to Information",
"Right to Choose", "Right to be Heard",
"Right to Seek Redressal", "Right to Consumer Education"]:
E.append(bul(r))
E += [sp(4), h2("Three-Tier Redressal Machinery"), sp(2)]
cpa_rows = [
["District Forum", "Up to ₹50 lakh"],
["State Commission", "₹50 lakh – ₹2 crore"],
["NCDRC (National)", "Above ₹2 crore"],
]
E += [make_table(["Forum", "Pecuniary Jurisdiction"], cpa_rows, [90*mm, 75*mm]), sp(4)]
E += [info_box("<b>2019 Amendment:</b> CCPA established | E-commerce included | "
"Product liability introduced | Jurisdiction limits revised.")]
# ── 10. Mortality, Incidence, Prevalence ─────────────────────────────────
E += [PageBreak(), h1("10. Mortality, Incidence & Prevalence Rate"), sp(4)]
E += [h2("Key Mortality Measures"), sp(2)]
mort_rows = [
["Crude Death Rate (CDR)", "Deaths / Population × 1000"],
["Infant Mortality Rate (IMR)", "Deaths <1 yr / Live births × 1000"],
["Neonatal Mortality Rate", "Deaths <28 days / Live births × 1000"],
["Perinatal Mortality Rate", "Stillbirths + Deaths <7 days / Births × 1000"],
["Maternal Mortality Ratio (MMR)", "Maternal deaths / Live births × 1,00,000"],
["Case Fatality Rate (CFR)", "Deaths from disease / Cases × 100"],
]
E += [make_table(["Measure", "Formula"], mort_rows, [75*mm, 90*mm]), sp(6)]
E += [h2("Incidence Rate"), sp(2)]
E += [body("<b>New cases</b> in a defined population during a specific time. Measures <b>risk</b> of developing disease. Used for acute diseases."), sp(2)]
E += [info_box("Formula: New cases / Population at risk at start × 1000"), sp(6)]
E += [h2("Prevalence Rate"), sp(2)]
E += [body("<b>Existing cases (old + new)</b> at a given point in time. Measures <b>burden</b> of disease. Used for chronic diseases."), sp(2)]
E += [info_box("Formula: Existing cases / Total population × 1000<br/><br/>"
"<b>Key Relationship:</b> Prevalence = Incidence × Duration of disease")]
# ── 11. Food-Borne Diseases ──────────────────────────────────────────────
E += [PageBreak(), h1("11. Food-Borne Diseases"), sp(4)]
fbd_rows = [
["Salmonellosis", "Salmonella spp.", "Food infection", "6–48 hrs", "Diarrhea, fever, vomiting"],
["Staphylococcal", "S. aureus toxin", "Intoxication", "1–6 hrs", "Vomiting prominent; heat-stable toxin"],
["Botulism", "C. botulinum toxin", "Intoxication", "12–36 hrs", "Descending paralysis; canned foods; MOST DANGEROUS"],
["Bacillus cereus", "B. cereus", "Both", "1–5 hrs (emetic) / 8–16 hrs (diarrheal)", "Rice (emetic); meat/vegs (diarrheal)"],
["Cholera", "V. cholerae", "Infection", "Few hrs–5 days", "Rice water stools"],
["Aflatoxin", "Aspergillus flavus", "Chemical", "Variable", "Hepatotoxic; nuts/grains"],
]
E += [make_table(["Disease", "Agent", "Type", "Onset", "Key Features"],
fbd_rows, [30*mm, 35*mm, 22*mm, 30*mm, 48*mm]), sp(4)]
E += [h2("Prevention"), sp(2)]
for p in ["Proper cooking (internal temp >74°C)",
"Refrigeration <5°C",
"Handwashing & personal hygiene",
"Avoid cross-contamination",
"HACCP (Hazard Analysis Critical Control Points)",
"FSSAI — Food Safety and Standards Act, 2006"]:
E.append(bul(p))
# ── 12. Home Visiting ────────────────────────────────────────────────────
E += [PageBreak(), h1("12. Home Visiting"), sp(4)]
E += [body("Providing health care and education to individuals and families in their own homes."), sp(4)]
E += [h2("Purposes"), sp(2)]
for p in ["Assess home environment, hygiene, sanitation",
"Health education and counseling",
"Follow-up of TB patients, ANC, postnatal cases",
"Case detection and referral",
"Monitor child growth (IMNCI)",
"Care of disabled, elderly, terminally ill"]:
E.append(bul(p))
E += [sp(4), h2("Steps in Home Visit"), sp(2)]
for i, s in enumerate(["Preparation — review records, prepare bag",
"Introduction — establish rapport",
"Assessment — observe home, interview family",
"Implementation — health care & education",
"Recording — document findings",
"Evaluation — follow-up planning"], 1):
E.append(bul(f"<b>Step {i}:</b> {s}"))
E += [sp(4), h2("Bag Technique"), sp(2)]
E += [info_box("Bag placed on clean surface (newspaper). Never touch contaminated surfaces. "
"Antiseptic solution kept outside. Priority: patient safety + nurse safety.")]
# ── 13. Immunization ────────────────────────────────────────────────────
E += [PageBreak(), h1("13. Immunization"), sp(4)]
E += [h2("Types"), sp(2)]
imm_rows = [
["Active", "Body produces own antibodies after vaccine", "Long-lasting (years–lifetime)"],
["Passive", "Ready-made antibodies given (antiserum, Ig)", "Immediate but short-lived (weeks–months)"],
]
E += [make_table(["Type", "Mechanism", "Duration"], imm_rows, [25*mm, 90*mm, 50*mm]), sp(4)]
E += [h2("Types of Vaccines"), sp(2)]
vac_rows = [
["Live attenuated", "BCG, OPV, MMR, Varicella", "Cannot give in immunocompromised patients"],
["Killed/Inactivated", "IPV, Hepatitis A, Influenza, Rabies", "Safe in immunocompromised"],
["Toxoid", "DT, TT (diphtheria, tetanus)", "Chemically inactivated toxin"],
["Subunit/Recombinant", "Hepatitis B, HPV", "Only antigen, very safe"],
["Conjugate", "Hib, Pneumococcal, Meningococcal", "Antigen + carrier protein"],
]
E += [make_table(["Type", "Examples", "Key Point"],
vac_rows, [40*mm, 65*mm, 60*mm])]
# ── 14. UIP ─────────────────────────────────────────────────────────────
E += [PageBreak(), h1("14. Universal Immunization Programme (UIP)"), sp(4)]
E += [info_box("<b>Launched 1985</b> (expanded from EPI 1978). Target: 90% coverage in all districts. "
"Covers all infants and pregnant women."), sp(6)]
uip_rows = [
["BCG", "Tuberculosis", "At birth"],
["OPV-0", "Polio", "At birth"],
["Hepatitis B-0", "Hepatitis B", "At birth"],
["OPV 1,2,3 + Pentavalent 1,2,3", "Polio, DPT, Hep B, Hib", "6, 10, 14 weeks"],
["IPV 1", "Polio (injectable)", "14 weeks"],
["Rotavirus 1,2,3", "Rotavirus diarrhea", "6, 10, 14 weeks"],
["PCV 1,2", "Pneumococcal disease", "6, 14 weeks"],
["MR-1, PCV Booster, JE-1", "Measles-Rubella, Pneumococcal, JE", "9–12 months"],
["Vitamin A-1", "Vitamin A deficiency", "9 months"],
["MR-2, DPT Booster-1, OPV Booster", "MR, DPT, Polio", "16–24 months"],
["DPT Booster-2", "Diphtheria, Pertussis, Tetanus", "5–6 years"],
["Td", "Tetanus, Diphtheria", "10 years and 16 years"],
]
E += [make_table(["Vaccine", "Disease Prevented", "Schedule"],
uip_rows, [60*mm, 55*mm, 50*mm])]
# ── 15. NVBCP ────────────────────────────────────────────────────────────
E += [PageBreak(), h1("15. NVBCP — National Vector Borne Disease Control Programme"), sp(4)]
E += [info_box("<b>Launched 2003–04</b> by merging separate disease programs. "
"Ministry of Health & Family Welfare, India."), sp(6)]
E += [h2("Diseases Covered"), sp(2)]
nvbcp_rows = [
["Malaria", "Anopheles (female) mosquito", "Blood smear; RDT (HRP2)"],
["Dengue & Chikungunya", "Aedes aegypti mosquito", "NS1 antigen, IgM/IgG ELISA"],
["Japanese Encephalitis (JE)", "Culex mosquito", "IgM in CSF/serum"],
["Lymphatic Filariasis", "Culex mosquito", "Microfilaria, ICT card test"],
["Kala-azar (VL)", "Phlebotomus sandfly", "rK39 antigen test, spleen biopsy"],
]
E += [make_table(["Disease", "Vector", "Diagnosis"],
nvbcp_rows, [45*mm, 50*mm, 70*mm]), sp(4)]
E += [h2("Vector Control Strategies"), sp(2)]
for s in ["<b>Chemical:</b> IRS (Indoor Residual Spraying) with DDT / pyrethroid; LLIN (Long-Lasting Insecticidal Nets)",
"<b>Biological:</b> <i>Bacillus thuringiensis israelensis</i> (Bti) for larvae; Gambusia fish (larval predator)",
"<b>Environmental:</b> Source reduction, elimination of breeding sites, drainage"]:
E.append(bul(s))
# ── 16. RNTCP ────────────────────────────────────────────────────────────
E += [PageBreak(), h1("16. RNTCP / NTEP (National TB Elimination Programme)"), sp(4)]
E += [info_box("<b>RNTCP launched 1997.</b> Renamed <b>NTEP</b> in 2020. "
"Goal: Eliminate TB by <b>2025</b> (5 years ahead of global SDG target of 2030). "
"India accounts for ~26% of global TB burden."), sp(6)]
E += [h2("DOTS — Core Strategy"), sp(2)]
E += [body("Directly Observed Treatment Short-course: Treatment observer watches patient swallow drugs. "
"Prevents default and drug resistance."), sp(4)]
E += [h2("Treatment Regimens"), sp(2)]
tb_rows = [
["DS-TB (Drug Sensitive)", "2HRZE / 4HR", "Isoniazid (H), Rifampicin (R), Pyrazinamide (Z), Ethambutol (E)"],
["MDR-TB", "Resistant to H + R", "Bedaquiline-based regimen (BPaL, BPaLM) — 6–9 months"],
["XDR-TB", "MDR + resistant to FQ + second-line injectables", "Newer drugs: Bedaquiline, Linezolid, Pretomanid"],
]
E += [make_table(["Type", "Regimen", "Notes"], tb_rows, [35*mm, 35*mm, 95*mm]), sp(4)]
E += [h2("Key Initiatives"), sp(2)]
for k in ["<b>Nikshay Portal:</b> Online TB notification and patient tracking",
"<b>Nikshay Poshan Yojana:</b> ₹500/month to TB patients for nutrition",
"<b>Universal Drug Susceptibility Testing (UDST)</b> for all TB patients",
"<b>DRTB Centres / DOTS Plus Sites</b> for MDR/XDR TB management"]:
E.append(bul(k))
# ── 17. ICDS ─────────────────────────────────────────────────────────────
E += [PageBreak(), h1("17. ICDS — Integrated Child Development Services"), sp(4)]
E += [info_box("<b>Launched: October 2, 1975</b> (Gandhi Jayanti). "
"Implementing agency: Ministry of Women and Child Development. "
"World's largest child development programme."), sp(6)]
E += [h2("Target Beneficiaries"), sp(2)]
for t in ["Children 0–6 years",
"Pregnant and lactating mothers",
"Adolescent girls (Sabla/Kishori Shakti Yojana)"]:
E.append(bul(t))
E += [sp(4), h2("6 Services (ICDS Package)"), sp(2)]
icds_rows = [
["1. Supplementary Nutrition (SNP)", "≥500 cal/day for children; 600 cal for pregnant women"],
["2. Immunization", "Under UIP; AWW coordinates"],
["3. Health Checkup", "Growth monitoring, screening for disease"],
["4. Referral Services", "To higher health facilities"],
["5. Pre-school Education (NFE)", "Children 3–6 years at Anganwadi"],
["6. Nutrition & Health Education", "For mothers and adolescent girls"],
]
E += [make_table(["Service", "Details"], icds_rows, [70*mm, 95*mm]), sp(4)]
E += [info_box("<b>Key Worker:</b> Anganwadi Worker (AWW) — 1 AWW per 400–800 population. "
"Delivery point: Anganwadi Centre.<br/>"
"<b>POSHAN Abhiyaan (2018):</b> National Nutrition Mission — reduce stunting, wasting, undernutrition, anemia.")]
# ── 18. AIDS ─────────────────────────────────────────────────────────────
E += [PageBreak(), h1("18. AIDS — Acquired Immune Deficiency Syndrome"), sp(4)]
E += [info_box("<b>Agent:</b> HIV (Human Immunodeficiency Virus) — Retrovirus (RNA virus). "
"HIV-1 (global) and HIV-2 (West Africa, less virulent). "
"<b>Window period:</b> 3 weeks – 3 months (avg. 6–8 weeks)."), sp(6)]
E += [h2("Transmission"), sp(2)]
for t in ["<b>Sexual contact</b> — most common route globally and in India",
"<b>Blood/blood products</b> — transfusion, sharing needles (IDU)",
"<b>Mother-to-child (MTCT)</b> — pregnancy, labor, or breastfeeding",
"<b>NOT transmitted by:</b> casual contact, food, water, mosquitoes, saliva (casual)"]:
E.append(bul(t))
E += [sp(4), h2("Pathophysiology"), sp(2)]
E += [body("HIV attacks <b>CD4+ T lymphocytes</b> via <b>gp120</b> binding to CD4 receptor and CCR5/CXCR4 co-receptors. "
"Normal CD4: 500–1500 cells/µL. <b>CD4 <200 cells/µL = AIDS-defining.</b>"), sp(4)]
E += [h2("WHO Clinical Staging"), sp(2)]
aids_rows = [
["Stage 1", "Asymptomatic, persistent generalized lymphadenopathy"],
["Stage 2", "Minor mucocutaneous manifestations (seborrheic dermatitis, oral ulcers)"],
["Stage 3", "Severe weight loss, chronic diarrhea, pulmonary TB, oral candidiasis"],
["Stage 4 (AIDS)", "PCP, CMV, Toxoplasmosis, Kaposi's sarcoma, Cryptococcal meningitis"],
]
E += [make_table(["Stage", "Features"], aids_rows, [20*mm, 145*mm]), sp(4)]
E += [h2("Diagnosis & Treatment"), sp(2)]
for d in ["<b>Screening:</b> ELISA (3-test NACO protocol)",
"<b>Confirmatory:</b> Western Blot",
"<b>Monitoring:</b> CD4 count + Viral Load",
"<b>ART (first-line India/WHO):</b> TDF + 3TC + DTG (Tenofovir + Lamivudine + Dolutegravir)",
"<b>Test and Treat:</b> ART for all patients regardless of CD4 count",
"<b>PMTCT:</b> ART for all pregnant women to prevent MTCT"]:
E.append(bul(d))
# ── 19. Malaria ──────────────────────────────────────────────────────────
E += [PageBreak(), h1("19. Malaria"), sp(4)]
E += [info_box("<b>Agent:</b> Plasmodium (Protozoan). <b>Vector:</b> Female Anopheles mosquito (bites dusk to dawn). "
"Most dangerous: <i>P. falciparum</i>. Most common in India: <i>P. vivax</i>."), sp(6)]
mal_rows = [
["P. vivax", "48 hrs", "Tertian fever; relapse (hypnozoites in liver)"],
["P. falciparum", "Irregular", "Most dangerous; cerebral malaria, blackwater fever"],
["P. malariae", "72 hrs", "Quartan fever; nephrotic syndrome"],
["P. ovale", "48 hrs", "Rare; relapse like P. vivax"],
]
E += [make_table(["Species", "Fever Cycle", "Key Features"],
mal_rows, [35*mm, 25*mm, 105*mm]), sp(4)]
E += [h2("Classic Paroxysm"), sp(2)]
E += [info_box("Cold stage (chills, rigors) → Hot stage (high fever 40–41°C) → Sweating stage (profuse sweating, temp drops)"), sp(4)]
E += [h2("Diagnosis"), sp(2)]
for d in ["<b>Gold standard:</b> Peripheral blood smear (thick & thin)",
"<b>RDT:</b> HRP2 antigen test for P. falciparum",
"<b>PCR:</b> Most sensitive; species identification"]:
E.append(bul(d))
E += [sp(4), h2("Treatment (NVBCP India)"), sp(2)]
treat_rows = [
["P. vivax", "Chloroquine (3 days) + Primaquine (14 days)", "Primaquine kills hypnozoites (radical cure). CI in G6PD deficiency & pregnancy."],
["P. falciparum", "ACT: Artesunate + SP or Artemether-Lumefantrine", "Primaquine single dose (Day 2) for gametocyte clearance"],
["Severe malaria", "IV Artesunate", "ICU care; monitor for complications"],
]
E += [make_table(["Species", "Treatment", "Notes"],
treat_rows, [30*mm, 60*mm, 75*mm])]
# ── 20. Women Empowerment ────────────────────────────────────────────────
E += [PageBreak(), h1("20. Women Empowerment"), sp(4)]
E += [h2("Key Legislation (India)"), sp(2)]
leg_rows = [
["Domestic Violence Act", "2005", "Protection from physical, emotional, economic abuse"],
["PCPNDT Act", "1994", "Prevent sex-selective abortions; ban prenatal sex determination"],
["POSH Act", "2013", "Sexual harassment at workplace; ICC mandatory"],
["Maternity Benefit Act", "1961 (amended 2017)", "26 weeks paid maternity leave"],
["Equal Remuneration Act", "1976", "Equal pay for equal work"],
["Dowry Prohibition Act", "1961", "Prohibition of giving/taking dowry"],
]
E += [make_table(["Legislation", "Year", "Key Provision"],
leg_rows, [55*mm, 35*mm, 75*mm]), sp(4)]
E += [h2("Government Programs"), sp(2)]
for p in ["<b>Beti Bachao Beti Padhao (BBBP):</b> Save the girl child, educate girls",
"<b>PMMVY (Pradhan Mantri Matru Vandana Yojana):</b> ₹5000 maternity benefit",
"<b>One Stop Centre (Sakhi):</b> For women facing violence",
"<b>Kishori Shakti Yojana / SABLA:</b> Empowerment of adolescent girls",
"<b>Mahila Shakti Kendras:</b> Community engagement at village level"]:
E.append(bul(p))
# ── 21. National Policy ──────────────────────────────────────────────────
E += [PageBreak(), h1("21. National Policy"), sp(4)]
pol_rows = [
["National Health Policy (NHP)", "2017", "UHC, 2.5% GDP on health, Health & Wellness Centres, IMR 28, MMR 100"],
["National Population Policy", "2000", "Stabilize population by 2045; TFR 2.1; NRR 1"],
["National Nutrition Policy", "1993", "Combat malnutrition; ICDS strengthening"],
["National Policy for Children", "2013", "Rights-based approach; holistic child development"],
["National Mental Health Policy", "2014", "Mental health for all; DMHP expansion"],
["National Policy on Older Persons", "1999", "Welfare of elderly; national programme"],
["National AIDS Policy", "2002", "Prevention, care & support; reduce stigma"],
]
E += [make_table(["Policy", "Year", "Key Goals"],
pol_rows, [55*mm, 15*mm, 95*mm]), sp(4)]
E += [info_box("<b>NHP 2017 Targets:</b> IMR → 28/1000 | MMR → 100/1,00,000 | "
"Health expenditure → 2.5% GDP | UHC by 2030")]
# ── 22. National Nutritional Programme ──────────────────────────────────
E += [PageBreak(), h1("22. National Nutritional Programme"), sp(4)]
nut_rows = [
["ICDS", "1975", "Children 0–6 yrs & mothers; 6 services via Anganwadi"],
["Mid-Day Meal (PM POSHAN)", "1995", "Free cooked meal in govt schools Class I–VIII; 450–700 cal"],
["PDS / NFSA", "2013", "5 kg grain/person/month at subsidized rates"],
["National IDA Prophylaxis Programme", "Ongoing", "IFA supplementation for children, women, adolescents; WIFS"],
["NIDDCP", "Ongoing", "Universal salt iodization (15 ppm at household); prevent IDD"],
["Vitamin A Supplementation", "Ongoing", "6 months–5 years every 6 months; 1 lakh IU (9 months), 2 lakh IU (18 months–5 yrs)"],
["POSHAN Abhiyaan", "2018", "Reduce stunting, wasting, undernutrition & anemia — convergence platform"],
]
E += [make_table(["Programme", "Year", "Key Details"],
nut_rows, [50*mm, 18*mm, 97*mm])]
# ── 23. CHN ──────────────────────────────────────────────────────────────
E += [PageBreak(), h1("23. Community Health Nursing (CHN)"), sp(4)]
E += [info_box("<b>Definition:</b> Branch of nursing combining professional nursing with public health principles "
"to promote, protect, and preserve the health of a community. <b>Community is the client.</b>"), sp(6)]
E += [h2("Principles"), sp(2)]
for p in ["Community as the unit of care (not just the individual)",
"Prevention is the primary focus",
"Epidemiological approach to problem identification",
"Continuity of care across life span",
"Interprofessional & intersectoral collaboration",
"Cultural competence and sensitivity",
"Respect for individual and community rights"]:
E.append(bul(p))
E += [sp(4), h2("Qualities of a CHN Nurse"), sp(2)]
for q in ["Good communication and teaching skills",
"Empathy, patience, non-judgmental attitude",
"Leadership, initiative, and self-direction",
"Physical and mental fitness",
"Critical thinking and problem-solving"]:
E.append(bul(q))
E += [sp(4), h2("10 Key Functions"), sp(2)]
for i, f in enumerate(["Health education and counseling",
"Care delivery (ANC, PNC, immunization, wound care)",
"Home visiting and follow-up",
"Case finding and screening",
"Referral to appropriate care level",
"Coordination with health team and community leaders",
"Rehabilitation of disabled persons",
"Community health surveys and research",
"Advocacy for community health needs",
"Record-keeping and reporting"], 1):
E.append(bul(f"<b>{i}.</b> {f}"))
# ── 24. Health Education ─────────────────────────────────────────────────
E += [PageBreak(), h1("24. Health Education"), sp(4)]
E += [info_box("<b>Definition (WHO):</b> Process of providing learning experiences that influence knowledge, "
"attitudes, and practices related to health."), sp(6)]
E += [h2("Principles"), sp(2)]
for p in ["Credibility of the educator", "Relevance to learner's need",
"Feedback and reinforcement", "Active participation",
"Individualization", "Learning by doing"]:
E.append(bul(p))
E += [sp(4), h2("Methods"), sp(2)]
he_rows = [
["Individual", "Counseling, interview, home visit, bedside teaching"],
["Group", "Lecture, demonstration, group discussion, role play, symposium, panel discussion, buzz session"],
["Mass (Community)", "Radio, TV, newspapers, posters, billboards, puppet shows, exhibitions, mobile vans"],
]
E += [make_table(["Category", "Methods"], he_rows, [35*mm, 130*mm]), sp(4)]
E += [h2("Audio-Visual Aids (AVA)"), sp(2)]
for a in ["<b>Projected:</b> Slides, film, OHP, LCD projector",
"<b>Non-projected:</b> Posters, charts, flannel board, flip chart, models, specimens",
"<b>Combined:</b> TV, video, interactive multimedia"]:
E.append(bul(a))
# ── 25. Measles ──────────────────────────────────────────────────────────
E += [PageBreak(), h1("25. Measles"), sp(4)]
E += [info_box("<b>Agent:</b> Paramyxovirus (RNA). <b>IP:</b> 10–14 days. "
"<b>Infectivity:</b> 4 days before to 4 days after rash. "
"<b>Transmission:</b> Droplet and direct contact."), sp(6)]
E += [h2("Clinical Features"), sp(2)]
for f in ["<b>Prodrome (3–4 days):</b> High fever + 3 C's: Cough, Coryza, Conjunctivitis",
"<b>Koplik's spots:</b> Bluish-white spots on buccal mucosa — PATHOGNOMONIC; appear 1–2 days before rash",
"<b>Rash:</b> Maculopapular; starts at forehead, spreads cephalocaudally; lasts 3–5 days"]:
E.append(bul(f))
E += [sp(4), h2("Complications"), sp(2)]
comp_rows = [
["Pneumonia", "Most common cause of death from measles"],
["Encephalitis", "1 per 1000 cases; most dangerous neurological complication"],
["Otitis media", "Common secondary bacterial infection"],
["Malnutrition worsening", "Especially in developing countries"],
["SSPE", "Subacute Sclerosing Panencephalitis — rare, years after infection"],
]
E += [make_table(["Complication", "Notes"], comp_rows, [50*mm, 115*mm]), sp(4)]
E += [h2("Treatment & Prevention"), sp(2)]
E += [info_box("Treatment: Supportive + <b>Vitamin A</b> (2 lakh IU for >1 yr; 1 lakh IU for 6–12 months)<br/>"
"Prevention: <b>MR/MMR vaccine</b> — 9–12 months (1st dose) and 16–24 months (2nd dose) under UIP")]
# ── 26. Cancer ───────────────────────────────────────────────────────────
E += [PageBreak(), h1("26. Cancer"), sp(4)]
E += [h2("CAUTION Warning Signs"), sp(2)]
caution = [
("C", "Change in bowel or bladder habits"),
("A", "A sore that does not heal"),
("U", "Unusual bleeding or discharge"),
("T", "Thickening or lump in breast or elsewhere"),
("I", "Indigestion or difficulty swallowing"),
("O", "Obvious change in wart or mole"),
("N", "Nagging cough or hoarseness"),
]
for letter, meaning in caution:
E.append(bul(f"<b>{letter}</b> — {meaning}"))
E += [sp(4), h2("Common Cancers in India"), sp(2)]
can_rows = [
["Women", "Cervical (most common), Breast, Ovarian, Colorectal"],
["Men", "Oral cavity, Lung, Esophagus, Colorectal, Stomach"],
]
E += [make_table(["Gender", "Common Cancers"], can_rows, [25*mm, 140*mm]), sp(4)]
E += [h2("Prevention Strategies"), sp(2)]
for p in ["<b>Primary:</b> Smoking cessation, HPV vaccination, healthy diet, avoid alcohol",
"<b>Secondary:</b> Cervical screening (Pap smear, VIA/VILI), Breast (BSE, mammography), Colorectal (colonoscopy)",
"<b>Tertiary:</b> Surgery, chemo, radiotherapy, hormonal therapy, palliative care"]:
E.append(bul(p))
E += [sp(4), info_box("<b>NPCDCS:</b> National Programme for Prevention and Control of Cancer, Diabetes, CVD and Stroke — launched 2010.")]
# ── 27. Cholera ──────────────────────────────────────────────────────────
E += [PageBreak(), h1("27. Cholera"), sp(4)]
E += [info_box("<b>Agent:</b> Vibrio cholerae O1 (El Tor biotype) and O139. "
"<b>Toxin:</b> Cholera toxin activates adenylate cyclase → ↑cAMP → hypersecretion of Cl⁻ & water. "
"<b>IP:</b> Few hours to 5 days (usually 1–3 days). <b>Route:</b> Fecal-oral; contaminated water."), sp(6)]
E += [h2("Clinical Features"), sp(2)]
for f in ["<b>'Rice water' stools:</b> Copious, watery, odorless — CHARACTERISTIC",
"Profuse watery diarrhea — up to 20 L/day in severe cases",
"Projectile vomiting (without nausea initially)",
"Rapid dehydration: sunken eyes, poor skin turgor, 'washerwoman's hands'",
"<b>'Cholera voice'</b> (aphonia from dehydration), muscle cramps",
"Shock and death if untreated"]:
E.append(bul(f))
E += [sp(4), h2("Treatment"), sp(2)]
chol_rows = [
["ORS (Oral Rehydration Therapy)", "CORNERSTONE of treatment; WHO-ORS formula"],
["IV Ringer's Lactate", "For severe dehydration and shock"],
["Antibiotics", "Doxycycline (single dose — drug of choice); Azithromycin (children & pregnant women)"],
["Zinc", "Supplementation for children"],
]
E += [make_table(["Treatment", "Notes"], chol_rows, [65*mm, 100*mm]), sp(4)]
E += [info_box("<b>Prevention:</b> Safe water, sanitation, OCV vaccine (Shanchol/Dukoral). Notifiable disease.")]
# ── 28. Sewage Management ────────────────────────────────────────────────
E += [PageBreak(), h1("28. Sewage Management"), sp(4)]
E += [h2("Key Definitions"), sp(2)]
E += [info_box("<b>BOD (Biological Oxygen Demand):</b> O₂ required by microorganisms to decompose organic matter in water. "
"High BOD = highly polluted water.<br/>"
"<b>COD (Chemical Oxygen Demand):</b> Total O₂ required for all chemical oxidation. Always > BOD."), sp(6)]
E += [h2("Sewage Treatment Stages"), sp(2)]
sew_rows = [
["Primary (Physical)", "Screening, grit removal, plain sedimentation", "Removes 30–40% BOD; primary sludge"],
["Secondary (Biological)", "Trickling filter, activated sludge process, oxidation ponds", "Removes 85–90% BOD"],
["Tertiary (Advanced)", "Filtration, chlorination, UV, nutrient removal", "For recycling; removes remaining BOD/nutrients"],
["Sludge Treatment", "Anaerobic digestion, dewatering, incineration", "Biogas production; sludge as manure"],
]
E += [make_table(["Stage", "Methods", "Outcome"],
sew_rows, [40*mm, 70*mm, 55*mm]), sp(4)]
E += [h2("Rural Excreta Disposal"), sp(2)]
for m in ["Pit latrine, pour-flush latrine, VIP (Ventilated Improved Pit) latrine",
"Biogas toilet",
"<b>Swachh Bharat Mission (SBM):</b> ODF (Open Defecation Free) India — declared Oct 2, 2019"]:
E.append(bul(m))
# ── 29. Solid Waste Management ───────────────────────────────────────────
E += [PageBreak(), h1("29. Solid Waste Management"), sp(4)]
E += [h2("Methods of Disposal"), sp(2)]
swm_rows = [
["Open dumping", "Crude; most common in developing countries; <b>most unsanitary</b>"],
["Sanitary landfill", "Waste compacted + covered with soil daily; leachate & gas collection; most acceptable for general waste"],
["Incineration", "900–1200°C; reduces volume 90%; MANDATORY for biomedical waste; produces dioxins"],
["Composting", "Aerobic decomposition of organic waste; produces humus; vermicomposting"],
["Recycling", "Reduces landfill volume; conserves resources"],
]
E += [make_table(["Method", "Details"], swm_rows, [40*mm, 125*mm]), sp(4)]
E += [h2("Biomedical Waste — Colour Coding (BMW Rules 2016)"), sp(2)]
bio_rows = [
["Yellow", "Anatomical, pharmaceutical, chemical waste", "Incineration"],
["Red", "Contaminated plastic (IV sets, syringes without needles)", "Autoclaving/chemical treatment"],
["White/Translucent", "Sharps (needles, blades, glass)", "Needle cutter/shredder → secured landfill"],
["Blue", "Glassware, metallic implants", "Autoclaving → recycling"],
]
E += [make_table(["Colour", "Contents", "Disposal"],
bio_rows, [25*mm, 90*mm, 50*mm])]
# ── 30. HTST ─────────────────────────────────────────────────────────────
E += [PageBreak(), h1("30. HTST Pasteurization"), sp(4)]
E += [info_box("<b>HTST = High Temperature Short Time</b><br/>"
"Milk heated to <b>72°C for 15 seconds</b>, then rapidly cooled to <b><10°C</b>.<br/>"
"Kills: M. tuberculosis, Brucella, Salmonella, Listeria, E. coli.<br/>"
"Does NOT sterilize. Nutritional quality largely preserved. Most widely used in dairy industry."), sp(6)]
htst_rows = [
["LTLT (Low Temp, Long Time)", "63°C for 30 minutes", "Batch pasteurization; older method"],
["HTST (High Temp, Short Time)", "72°C for 15 seconds", "Continuous flow; most common modern method"],
["UHT (Ultra High Temp)", "135–150°C for 2–6 sec", "Shelf-stable (6 months without refrigeration)"],
["Sterilization", "121°C for 15 min (autoclave)", "Used for surgical instruments, NOT routine milk"],
]
E += [make_table(["Method", "Temp/Time", "Notes"], htst_rows, [55*mm, 45*mm, 65*mm])]
# ── 31. Cold Chain ───────────────────────────────────────────────────────
E += [PageBreak(), h1("31. Cold Chain"), sp(4)]
E += [info_box("<b>Definition:</b> System of storage and transport of vaccines at recommended temperatures "
"from point of manufacture to point of use. Break in cold chain = loss of vaccine potency."), sp(6)]
E += [h2("Temperature Requirements"), sp(2)]
cc_rows = [
["OPV", "-15 to -25°C", "Deep Freezer; most sensitive to heat"],
["BCG, Measles, MMR", "+2 to +8°C", "ILR (refrigerator); do not freeze"],
["DPT, DT, TT, Hepatitis B", "+2 to +8°C", "Freeze-sensitive — NEVER FREEZE; discard if frozen"],
]
E += [make_table(["Vaccine", "Temperature", "Equipment / Key Point"],
cc_rows, [35*mm, 30*mm, 100*mm]), sp(4)]
E += [h2("Cold Chain Equipment"), sp(2)]
cce_rows = [
["Deep Freezer (DF)", "State/District", "-20°C; stores OPV"],
["ILR (Ice-Lined Refrigerator)", "PHC/CHC", "+2–8°C; holds cold 12–24 hrs without power"],
["Cold Box", "District/CHC", "Transport; 24–72 hours with ice packs"],
["Vaccine Carrier", "Sub-centre/Session", "Transport to outreach; 4–6 hours"],
["Ice Packs (conditioned)", "All levels", "Conditioned at +2–8°C before use (prevents freezing)"],
]
E += [make_table(["Equipment", "Level", "Key Feature"],
cce_rows, [60*mm, 35*mm, 70*mm]), sp(4)]
E += [h2("Monitoring Tools"), sp(2)]
for m in ["<b>VVM (Vaccine Vial Monitor):</b> Heat-sensitive patch on vial. Inner square lighter = usable; same/darker = discard.",
"<b>Cold Chain Monitor (CCM):</b> Detects cumulative heat exposure during transport",
"<b>Freeze Watch Indicator:</b> Detects if vaccine has been frozen (for freeze-sensitive vaccines)",
"<b>Shake Test:</b> Detects freeze-damage in DPT, TT, DT, Hepatitis B"]:
E.append(bul(m))
# ── 32. Immunization Schedule ────────────────────────────────────────────
E += [PageBreak(), h1("32. Immunization Schedule — India NIS"), sp(4)]
nis_rows = [
["At Birth", "BCG, OPV-0, Hepatitis B-0"],
["6 Weeks", "OPV-1, Pentavalent-1 (DPT+HepB+Hib), IPV-1, Rotavirus-1, PCV-1"],
["10 Weeks", "OPV-2, Pentavalent-2, Rotavirus-2"],
["14 Weeks", "OPV-3, Pentavalent-3, IPV-2, Rotavirus-3, PCV-2"],
["9–12 Months", "MR-1, PCV Booster, JE-1 (endemic areas), Vitamin A-1 (1 lakh IU)"],
["16–24 Months", "MR-2, DPT Booster-1, OPV Booster, JE-2, Vitamin A-2 (2 lakh IU)"],
["5–6 Years", "DPT Booster-2"],
["10 Years", "Td (Tetanus-diphtheria)"],
["16 Years", "Td"],
["Pregnant Women", "TT-1 (early pregnancy), TT-2 (4 wks after TT-1) or Booster if vaccinated within 3 yrs"],
]
E += [make_table(["Age", "Vaccines Given"], nis_rows, [40*mm, 125*mm]), sp(4)]
E += [info_box("<b>Key:</b> Pentavalent = DPT + Hepatitis B + Hib (5-in-1). "
"IPV added to UIP in 2015. Rotavirus and PCV added subsequently. "
"JE vaccine given only in endemic districts.")]
# ── 33. Types of Ventilation ─────────────────────────────────────────────
E += [PageBreak(), h1("33. Types of Ventilation"), sp(4)]
E += [h2("Natural Ventilation"), sp(2)]
for v in ["Air movement driven by temperature difference and wind pressure",
"Stack effect: Hot air rises; exits from upper openings, drawing cool air from below",
"Cross ventilation: Openings on opposite walls",
"Minimum window area: 10–20% of floor area"]:
E.append(bul(v))
E += [sp(4), h2("Artificial / Mechanical Ventilation"), sp(2)]
vent_rows = [
["Plenum system", "Air pumped IN at positive pressure", "Exits through cracks; used in clean areas"],
["Exhaust system", "Air sucked OUT at negative pressure", "Used in industries with fumes; isolation rooms (airborne)"],
["Balanced system", "Equal supply + exhaust", "Most efficient; operation theatres"],
]
E += [make_table(["System", "Principle", "Use"],
vent_rows, [35*mm, 60*mm, 70*mm]), sp(4)]
E += [h2("Minimum Standards"), sp(2)]
for s in ["Air space per person: <b>14 cubic meters</b> (WHO)",
"CO₂ level: must not exceed <b>0.1% (1000 ppm)</b>",
"Humidity: 40–60%",
"Temperature: 18–24°C",
"<b>OT:</b> Positive pressure; HEPA filters; laminar airflow; 15–20 air changes/hr",
"<b>Airborne isolation rooms:</b> Negative pressure; 6–12 air changes/hr; HEPA"]:
E.append(bul(s))
# ── 34. Family Planning ──────────────────────────────────────────────────
E += [PageBreak(), h1("34. Family Planning"), sp(4)]
fp_rows = [
["Barrier — Male condom", "88–98%", "Also prevents STIs; widely available"],
["Barrier — Female condom", "79–95%", "Woman-controlled"],
["Combined OCP", "91–99%", "Estrogen + Progestin; daily pill"],
["DMPA (Depo-Provera)", "94–99%", "Injection every 3 months"],
["Copper IUD (CuT-380A)", ">99%", "10 years; also emergency contraception"],
["Emergency Contraception", "75–85%", "Levonorgestrel 1.5 mg within 72 hours"],
["Vasectomy (NSV)", ">99%", "No-Scalpel Vasectomy; local anesthesia; permanent"],
["Tubectomy (Minilap/Laparoscopic)", ">99%", "More common than vasectomy in India; permanent"],
["LAM", "98–99%", "Lactational Amenorrhoea Method; <6 months postpartum"],
]
E += [make_table(["Method", "Efficacy", "Key Notes"],
fp_rows, [60*mm, 20*mm, 85*mm]), sp(4)]
E += [info_box("<b>PPIUCD:</b> Post-partum IUCD insertion within 48 hours of delivery. "
"<b>Mission Parivar Vikas:</b> Focused on high TFR districts in UP, Bihar, Rajasthan, MP, Chhattisgarh, Jharkhand.")]
# ── 35. Family Health ────────────────────────────────────────────────────
E += [PageBreak(), h1("35. Family Health"), sp(4)]
E += [h2("Types of Family"), sp(2)]
for f in ["<b>Nuclear:</b> Husband + wife + unmarried children",
"<b>Joint:</b> Multi-generational under one roof",
"<b>Extended:</b> Nuclear + other relatives",
"<b>Single-parent:</b> One parent + children"]:
E.append(bul(f))
E += [sp(4), h2("Duvall's Family Life Cycle (8 Stages)"), sp(2)]
duvall = [
("1", "Beginning family", "Married couple, no children"),
("2", "Childbearing family", "Oldest child 0–30 months"),
("3", "Family with preschool children", "2.5–6 years"),
("4", "Family with school-age children", "6–13 years"),
("5", "Family with teenagers", "13–20 years"),
("6", "Launching young adults", "First to last child leaving home"),
("7", "Middle-age family", "Empty nest to retirement"),
("8", "Aging family", "Retirement to death of both spouses"),
]
E += [make_table(["Stage", "Name", "Characteristics"],
[[s,n,c] for s,n,c in duvall], [15*mm, 55*mm, 95*mm]), sp(4)]
E += [h2("Family Assessment Tools"), sp(2)]
for t in ["<b>Genogram:</b> Diagram of family structure and relationships across generations",
"<b>Ecomap:</b> Family's relationships with community and external systems",
"<b>Family APGAR (Smilkstein):</b> Adaptation, Partnership, Growth, Affection, Resolve — measures family function"]:
E.append(bul(t))
# ── 36. Mode of Transmission ─────────────────────────────────────────────
E += [PageBreak(), h1("36. Mode of Transmission"), sp(4)]
E += [h2("Direct Transmission"), sp(2)]
for d in ["<b>Direct contact:</b> Touching, kissing, sexual intercourse (STIs, HSV, syphilis)",
"<b>Droplet:</b> Sneezing/coughing within <b><1 meter</b> — Influenza, Meningococcal, Pertussis, Diphtheria",
"<b>Inoculation:</b> Bites, scratches, needle-stick (Rabies, HIV, HBV)",
"<b>Transplacental (vertical):</b> TORCH infections (Rubella, CMV, Toxoplasma, Syphilis), HIV, HBV"]:
E.append(bul(d))
E += [sp(4), h2("Indirect Transmission"), sp(2)]
for i in ["<b>Vehicle-borne:</b> Contaminated food (Salmonella, Staph), water (Cholera, Typhoid, Hep A), fomites (Conjunctivitis), blood products (HIV, HBV/HCV)",
"<b>Airborne (droplet nuclei <5 µm):</b> Particles remain suspended in air — TB (M. tuberculosis), Varicella, Measles, Influenza",
"<b>Vector-borne — Mechanical:</b> Housefly carrying Typhoid organisms on body (no multiplication)",
"<b>Vector-borne — Biological:</b> Organism multiplies/develops within vector (essential life cycle)"]:
E.append(bul(i))
E += [sp(4), h2("Biological Vector Summary"), sp(2)]
vec_rows = [
["Malaria", "Female Anopheles mosquito", "Sporozoites injected; erythrocytic cycle in blood"],
["Dengue / Chikungunya", "Aedes aegypti mosquito", "Daytime biter"],
["Filaria (LF)", "Culex mosquito", "Microfilariae; nocturnal periodicity"],
["JE", "Culex mosquito", "Pigs and birds are reservoir hosts"],
["Kala-azar", "Phlebotomus sandfly", "Sand fly bite; promastigotes injected"],
["Plague", "Xenopsylla cheopis (rat flea)", "Yersinia pestis; rat → flea → human"],
["Typhus", "Body louse (Pediculus)", "Rickettsia prowazekii; louse feces"],
]
E += [make_table(["Disease", "Vector", "Notes"],
vec_rows, [40*mm, 55*mm, 70*mm]), sp(6)]
E += [info_box("<b>Chain of Infection:</b> Agent → Reservoir → Portal of Exit → Mode of Transmission "
"→ Portal of Entry → Susceptible Host.<br/>"
"Breaking ANY link in the chain prevents disease spread.")]
# ── Quick Reference Summary ───────────────────────────────────────────────
E += [PageBreak(), h1("QUICK REFERENCE SUMMARY"), sp(4)]
qr_rows = [
["Levels of Prevention", "Primary (before), Secondary (early Dx), Tertiary (rehab)"],
["PHC elements", "8 essential elements; Alma-Ata 1978"],
["Epidemiology", "Agent-Host-Environment triad; descriptive, analytical, experimental"],
["IMR", "Deaths <1 yr per 1000 live births; India ~27"],
["Prevalence = Incidence × Duration", "Prevalence measures burden; Incidence measures risk"],
["ICDS", "Launched Oct 2, 1975; 6 services; Anganwadi Worker"],
["UIP", "Launched 1985; BCG at birth; Pentavalent at 6/10/14 weeks"],
["RNTCP/NTEP", "DOTS strategy; Eliminate TB 2025; MDR = resistant to H + R"],
["NVBCP", "2003; covers 5 vector-borne diseases; Anopheles → Malaria"],
["AIDS", "HIV; gp120 → CD4; CD4 <200 = AIDS; ART: TDF+3TC+DTG"],
["Malaria (P. falciparum)", "ACT treatment; most dangerous; cerebral malaria; blackwater fever"],
["Cholera", "Rice water stools; ORS + Doxycycline; V. cholerae O1"],
["Measles", "Koplik spots + 3C's; Vitamin A; MR vaccine 9 & 16 months"],
["Cold chain", "OPV at -20°C; DPT/TT/HepB NEVER freeze; VVM monitors heat"],
["HTST", "72°C for 15 seconds; then cool <10°C"],
["Noise limit (industrial)", "90 dB for 8-hour exposure"],
["Consumer Protection", "3-tier: District < ₹50L → State → NCDRC; 6 rights"],
["NHP 2017", "2.5% GDP on health; UHC; IMR 28, MMR 100 targets"],
["Mode of transmission", "Droplet <1 m; Airborne <5 µm; Vector-borne (bio vs mechanical)"],
["Family planning", "Vasectomy (NSV); Tubectomy; CuT-380A (10 yrs); DMPA (3 months)"],
]
E += [make_table(["Topic", "Key Point to Remember"], qr_rows, [65*mm, 100*mm])]
return E
# ── Page template with header/footer ─────────────────────────────────────────
def build_pdf():
doc = SimpleDocTemplate(
OUTPUT_PATH,
pagesize=A4,
leftMargin=20*mm, rightMargin=20*mm,
topMargin=18*mm, bottomMargin=18*mm,
title="Community Health Nursing & Public Health Notes",
author="Orris Study Notes",
subject="CHN, Public Health, Nursing Exam Preparation",
)
def on_page(canvas, doc):
canvas.saveState()
# Header line
canvas.setStrokeColor(DARK_BLUE)
canvas.setLineWidth(1.5)
canvas.line(20*mm, A4[1]-14*mm, A4[0]-20*mm, A4[1]-14*mm)
canvas.setFont("Helvetica-Bold", 7)
canvas.setFillColor(DARK_BLUE)
canvas.drawString(20*mm, A4[1]-11*mm, "Community Health Nursing & Public Health — Complete Study Notes")
canvas.setFont("Helvetica", 7)
canvas.setFillColor(colors.grey)
canvas.drawRightString(A4[0]-20*mm, A4[1]-11*mm, f"Page {doc.page}")
# Footer line
canvas.setStrokeColor(colors.HexColor("#cbd5e1"))
canvas.setLineWidth(0.5)
canvas.line(20*mm, 13*mm, A4[0]-20*mm, 13*mm)
canvas.setFont("Helvetica", 7)
canvas.setFillColor(colors.grey)
canvas.drawCentredString(A4[0]/2, 8*mm, "UIP · ICDS · NVBCP · RNTCP · AIDS · Malaria · Cholera · Cancer · Epidemiology · CHN")
canvas.restoreState()
story = cover_page() + all_content()
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT_PATH}")
build_pdf()
cd /tmp/workspace && python chn_notes.py 2>&1
ls -lh /tmp/workspace/CHN_Public_Health_Notes.pdf
CHN Public Health Notes
PDF Document · PDF