Howll I complete my studies on papper 1 and 2 in 12 days
| Day | Topic | What to Cover |
|---|---|---|
| Day 1 | Basic concepts in Community Medicine | Definition, scope, levels of prevention (primary/secondary/tertiary), natural history of disease, spectrum of disease, iceberg concept, agent-host-environment triad |
| Day 2 | Sociology + Health promotion & education | Social determinants of health, social groups, culture and health, health behavior, IEC, KAP studies, PRECEDE model, media in health education |
| Day 3 | Environment including Entomology | Air/water/soil pollution, housing, vector biology - mosquitoes (Anopheles, Culex, Aedes), flies, lice, fleas, rodents, control measures |
| Day 4 | Biomedical waste management + Occupational health | BMW categories & color coding, disposal methods, occupational hazards, industrial diseases (silicosis, asbestosis, lead poisoning), workers health |
| Day 5 | Nutrition, Genetics & Essential Medicines | PEM, micronutrient deficiencies (iodine, iron, Vit A, D), nutritional assessment, Mendelian genetics, screening programs, WHO essential medicines concept, rational drug use |
| Day 6 | Basic Epidemiology including screening + Demography, Biostatistics & Vital Statistics | Study designs (cross-sectional, cohort, case-control, RCT), measures of disease frequency (incidence, prevalence), measures of association (RR, OR), bias, confounding, screening criteria, validity; THEN - demographic cycle, census, fertility/mortality rates, life tables, measures of central tendency, standard deviation, tests of significance (chi-square, t-test), vital registration |
| Day | Topic | What to Cover |
|---|---|---|
| Day 7 | Communicable diseases including emerging & re-emerging | Chain of infection, modes of transmission, control principles; key diseases: malaria, TB, HIV, dengue, cholera, typhoid, polio, measles, rabies, COVID-19, Nipah, Zika, Monkeypox |
| Day 8 | Non-Communicable diseases | Epidemiology and control of: hypertension, diabetes, CVD, cancer, obesity, COPD, mental illness; NCD risk factors, NCD programs in India |
| Day 9 | Maternal & child health, Family planning, Health of elderly, Adolescent health | MCH services, reproductive health, contraceptive methods, MTP Act, PCPNDT Act, Child health programs (IMNCI, immunization schedule), elderly health issues, RKSK for adolescents |
| Day 10 | Health care delivery system, Urban health, Disaster management, Health planning & financing | Health system levels (SC, PHC, CHC, District hospital), urban health problems, NUHM, disasters (phases, management), health planning (5-year plans basics), health financing, insurance schemes |
| Day 11 | Mental & behavioral health, Disability + National Health Programmes + International health, Recent advances | Mental health burden, disability definitions and assessment, NMHP; national programs (RNTCP, NVBDCP, NPCB, NPCDCS, etc.); WHO, UNICEF, World Bank roles, SDGs, Health for All, recent advances in community medicine |
| Time Slot | Activity |
|---|---|
| Morning (3 hrs) | Rapid revision of Paper 1 - mnemonics, formulas, key definitions |
| Afternoon (3 hrs) | Rapid revision of Paper 2 - disease facts, program names, dates |
| Evening (1-2 hrs) | Past question paper practice - write out 5-mark and 10-mark answers |
Create a detailed study guide PDF for Paper 1 topics
ls /home/daytona/workspace/ 2>/dev/null && echo "---" && python3 -c "import reportlab; print('reportlab ok')" && python3 -c "from reportlab.lib.pagesizes import A4; print('A4 ok')"
mkdir -p /home/daytona/workspace/comm-medicine-study
~/comm-medicine-study/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/home/daytona/workspace/comm-medicine-study/Community_Medicine_Paper1_Study_Guide.pdf"
# ── Colours ──────────────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1a3a5c")
TEAL = colors.HexColor("#0d7377")
AMBER = colors.HexColor("#f4a100")
LTBLUE = colors.HexColor("#dbeafe")
LTGREEN = colors.HexColor("#d1fae5")
LTYELL = colors.HexColor("#fef9c3")
LTRED = colors.HexColor("#fee2e2")
WHITE = colors.white
GREY = colors.HexColor("#f3f4f6")
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
return s
TITLE_STYLE = make_style("MyTitle", fontSize=28, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=6,
fontName="Helvetica-Bold")
SUBTITLE_STYLE = make_style("MySub", fontSize=14, textColor=AMBER,
alignment=TA_CENTER, spaceAfter=4,
fontName="Helvetica-Bold")
TOPIC_HEADER = make_style("TopicH", fontSize=16, textColor=WHITE,
fontName="Helvetica-Bold", spaceBefore=0, spaceAfter=4)
SECTION_HEAD = make_style("SectionH", fontSize=12, textColor=NAVY,
fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)
BODY = make_style("Body", fontSize=9.5, leading=14, spaceAfter=4,
alignment=TA_JUSTIFY)
BULLET = make_style("Bullet", fontSize=9.5, leading=13, leftIndent=14,
firstLineIndent=-10, spaceAfter=2)
BOLD_LABEL = make_style("BoldLabel", fontSize=9.5, fontName="Helvetica-Bold",
textColor=NAVY, spaceAfter=2)
MNEMONIC = make_style("Mnemonic", fontSize=10, fontName="Helvetica-BoldOblique",
textColor=TEAL, spaceAfter=4, leftIndent=10)
NOTE = make_style("Note", fontSize=8.5, textColor=colors.HexColor("#6b7280"),
leading=12, leftIndent=10)
KEYPOINT = make_style("KeyPoint", fontSize=9.5, fontName="Helvetica-Bold",
textColor=colors.HexColor("#b45309"), spaceAfter=2)
TOC_STYLE = make_style("TocItem", fontSize=11, leading=18, leftIndent=20)
# ── Helper builders ───────────────────────────────────────────────────────────
def topic_banner(number, title, color=NAVY):
data = [[Paragraph(f"TOPIC {number}", make_style("t", fontSize=9, textColor=AMBER,
fontName="Helvetica-Bold")),
Paragraph(title, TOPIC_HEADER)]]
t = Table(data, colWidths=[2.5*cm, 14.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING",(0,0), (-1,-1), 10),
("RIGHTPADDING",(0,0),(-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0),(-1,-1), 8),
("ROUNDEDCORNERS", [6,6,6,6]),
]))
return t
def section_box(title, body_rows, bg=LTBLUE):
"""A tinted info box: title + list of paragraphs."""
rows = [[Paragraph(title, SECTION_HEAD)]]
for row in body_rows:
rows.append([row])
t = Table(rows, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), bg),
("BACKGROUND", (0,1), (0,-1), GREY),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING",(0,0),(-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#d1d5db")),
("LINEAFTER", (0,0), (0,-1), 0.5, colors.HexColor("#d1d5db")),
]))
return t
def two_col_table(headers, rows, bg=LTBLUE):
data = [[Paragraph(h, make_style("th", fontName="Helvetica-Bold",
fontSize=9.5, textColor=NAVY)) for h in headers]]
for r in rows:
data.append([Paragraph(str(c), BODY) for c in r])
col_w = [17*cm / len(headers)] * len(headers)
t = Table(data, colWidths=col_w)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), bg),
("BACKGROUND", (0,1), (-1,-1), WHITE),
("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, GREY]),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#9ca3af")),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#d1d5db")),
("LEFTPADDING",(0,0), (-1,-1), 6),
("RIGHTPADDING",(0,0),(-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
return t
def bullet(text):
return Paragraph(f"• {text}", BULLET)
def keypoint(text):
return Paragraph(f"★ {text}", KEYPOINT)
def mnemonic(text):
return Paragraph(f"🔑 {text}", MNEMONIC)
def sp(h=0.2):
return Spacer(1, h*cm)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#e5e7eb"), spaceAfter=4)
# ── Cover page ────────────────────────────────────────────────────────────────
def cover_page():
elems = []
cover = Table([[""]], colWidths=[17*cm], rowHeights=[26*cm])
cover.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1), NAVY)]))
# We'll add text on top via separate paragraphs with coloured background hack
elems.append(cover)
return elems
def cover_content():
elems = []
elems.append(sp(2))
t = Table([[Paragraph("COMMUNITY MEDICINE", TITLE_STYLE)],
[Paragraph("PAPER 1 — COMPREHENSIVE STUDY GUIDE", SUBTITLE_STYLE)],
[sp(0.3)],
[Paragraph("Theory Examination Preparation", make_style("c2", fontSize=11,
textColor=colors.HexColor("#93c5fd"), alignment=TA_CENTER))],
[sp(0.2)],
[Paragraph("Park's Textbook of Preventive & Social Medicine", make_style("c3",
fontSize=9, textColor=colors.HexColor("#6b7280"), alignment=TA_CENTER))],
[sp(0.5)],
[Paragraph("8 Topics • 100 Marks • 12-Day Revision Ready", make_style("c4",
fontSize=10, textColor=AMBER, alignment=TA_CENTER, fontName="Helvetica-Bold"))],
], colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), NAVY),
("LEFTPADDING",(0,0),(-1,-1), 20),
("RIGHTPADDING",(0,0),(-1,-1), 20),
("TOPPADDING",(0,0),(-1,-1), 8),
("BOTTOMPADDING",(0,0),(-1,-1), 8),
]))
elems.append(t)
return elems
# ── TOC ───────────────────────────────────────────────────────────────────────
def toc():
elems = [PageBreak()]
elems.append(Paragraph("TABLE OF CONTENTS", make_style("toch", fontSize=18,
textColor=NAVY, fontName="Helvetica-Bold", spaceAfter=12, alignment=TA_CENTER)))
elems.append(hr())
topics = [
("1", "Basic Concepts in Community Medicine", "3"),
("2", "Sociology & Health", "6"),
("3", "Environment & Entomology", "9"),
("4", "Biomedical Waste & Occupational Health", "12"),
("5", "Nutrition, Genetics & Essential Medicines", "15"),
("6", "Basic Epidemiology & Screening", "18"),
("7", "Health Promotion & Education", "22"),
("8", "Demography, Biostatistics & Vital Statistics","25"),
]
for num, title, pg in topics:
row = Table([[
Paragraph(f"Topic {num}", make_style("tn", fontSize=10, textColor=TEAL, fontName="Helvetica-Bold")),
Paragraph(title, make_style("tt", fontSize=11)),
Paragraph(f"p. {pg}", make_style("tp", fontSize=10, textColor=colors.grey, alignment=TA_CENTER)),
]], colWidths=[2*cm, 12.5*cm, 2.5*cm])
row.setStyle(TableStyle([
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("LEFTPADDING",(0,0),(-1,-1),6),
("TOPPADDING",(0,0),(-1,-1),5),
("BOTTOMPADDING",(0,0),(-1,-1),5),
("LINEBELOW",(0,0),(-1,-1),0.3, colors.HexColor("#e5e7eb")),
]))
elems.append(row)
elems.append(sp(0.5))
return elems
# ══════════════════════════════════════════════════════════════════════════════
# TOPIC CONTENT
# ══════════════════════════════════════════════════════════════════════════════
def topic1():
e = [PageBreak()]
e.append(topic_banner("1", "Basic Concepts in Community Medicine", NAVY))
e.append(sp(0.3))
# Definitions box
defs = [
("Health (WHO 1948)", "A state of complete physical, mental and social well-being and not merely the absence of disease or infirmity."),
("Community Medicine", "A specialty concerned with health and disease in populations. Focuses on prevention, promotion and protection."),
("Public Health (Winslow)", "The science & art of preventing disease, prolonging life and promoting health through organised community effort."),
("Preventive Medicine", "Action taken prior to onset of disease to prevent its occurrence (primary), halt its progress (secondary) or limit disability (tertiary)."),
("Social Medicine", "Considers health & disease in the social context, studying the interaction between health and social conditions."),
]
e.append(Paragraph("Key Definitions", SECTION_HEAD))
t = two_col_table(["Term", "Definition"], defs, LTBLUE)
e.append(t); e.append(sp(0.3))
# Levels of Prevention
e.append(Paragraph("Levels of Prevention (Leavell & Clark)", SECTION_HEAD))
prev = [
("Primary", "Before disease occurs", "Health promotion + Specific protection", "Vaccines, nutrition, sanitation, health education"),
("Secondary", "Early disease (pre-symptomatic)", "Early diagnosis & prompt treatment", "Screening programs, case finding"),
("Tertiary", "Late disease / disability", "Disability limitation + Rehabilitation", "Physiotherapy, occupational therapy"),
]
t2 = two_col_table(["Level","When","Aim","Examples"], prev, LTGREEN)
e.append(t2); e.append(sp(0.3))
e.append(mnemonic("Mnemonic — PRIMARY: Prevent; SECONDARY: Screen & Treat; TERTIARY: Rehab"))
# Natural History of Disease
e.append(Paragraph("Natural History of Disease", SECTION_HEAD))
e.append(bullet("Pre-pathogenesis period: before disease agent interacts with host (primary prevention target)"))
e.append(bullet("Pathogenesis period: from earliest pathological changes → advanced disease"))
e.append(bullet("Stages: Susceptibility → Sub-clinical disease → Clinical disease → Disability/Death/Recovery"))
e.append(keypoint("The 'point of irreversibility' separates disability limitation from earlier interventions."))
e.append(sp(0.2))
# Iceberg concept
e.append(Paragraph("Iceberg Concept of Disease", SECTION_HEAD))
e.append(bullet("Visible tip = clinical cases (diagnosed & reported)"))
e.append(bullet("Submerged mass = sub-clinical, undiagnosed, carriers, latent cases"))
e.append(bullet("Relevance: true burden of disease is always greater than apparent burden"))
e.append(bullet("Diseases with large submerged mass: TB, hypertension, diabetes, STIs, mental illness"))
e.append(sp(0.2))
# Agent-Host-Environment (Epidemiological Triad)
e.append(Paragraph("Epidemiological Triad (Agent-Host-Environment)", SECTION_HEAD))
triad = [
("Agent", "Biological, Chemical, Physical, Nutritional, Psychosocial"),
("Host", "Age, sex, race, genetics, immunity, nutrition, behaviour"),
("Environment", "Physical (climate), Biological (vectors), Social (culture, SES)"),
]
e.append(two_col_table(["Component","Examples/Factors"], triad, LTYELL))
e.append(sp(0.2))
# Spectrum of Disease
e.append(Paragraph("Spectrum of Disease", SECTION_HEAD))
e.append(bullet("Ranges from inapparent (sub-clinical) → mild → moderate → severe → fatal"))
e.append(bullet("The point on the spectrum where a case is 'counted' affects prevalence estimates"))
e.append(bullet("Example: Polio spectrum — 90-95% sub-clinical, ~1% paralytic"))
e.append(sp(0.2))
# Modes of disease occurrence
e.append(Paragraph("Disease Occurrence Patterns", SECTION_HEAD))
patterns = [
("Endemic","Disease constantly present in a community at expected frequency (e.g. malaria in India)"),
("Epidemic","Occurrence clearly in excess of normal expectancy in a given community"),
("Pandemic","Worldwide spread of a new disease (e.g. COVID-19, influenza 1918)"),
("Sporadic","Occasional/irregular cases, no relationship to each other (e.g. tetanus)"),
("Hyperendemic","Consistently high levels of disease in a community"),
("Holoendemic","High level of disease in the population from early childhood (e.g. malaria in Africa)"),
]
e.append(two_col_table(["Term","Definition"], patterns, LTRED))
e.append(sp(0.3))
e.append(keypoint("Exam Tip: Know WHO definition of health, all 3 levels of prevention with examples, and the 5 patterns of disease occurrence."))
return e
def topic2():
e = [PageBreak()]
e.append(topic_banner("2", "Sociology & Health", TEAL))
e.append(sp(0.3))
e.append(Paragraph("What is Medical Sociology?", SECTION_HEAD))
e.append(Paragraph("The study of the relationship between social factors and health, illness, and health care. It examines how social structures, culture, and institutions influence health outcomes.", BODY))
e.append(sp(0.2))
e.append(Paragraph("Social Determinants of Health (SDH)", SECTION_HEAD))
sdh = [
"Income and social protection",
"Education and literacy",
"Unemployment and job insecurity",
"Working life conditions",
"Food insecurity",
"Housing, basic amenities, and environment",
"Early childhood development",
"Social inclusion and non-discrimination",
"Structural conflict",
"Access to affordable health services",
]
for s in sdh:
e.append(bullet(s))
e.append(keypoint("WHO Commission on SDH (2008): 'The conditions in which people are born, grow, work, live and age, shaped by the distribution of money, power and resources.'"))
e.append(sp(0.2))
e.append(Paragraph("Social Groups & Stratification", SECTION_HEAD))
sg = [
("Primary groups","Small, face-to-face interaction; strong bonds — family, peer group"),
("Secondary groups","Large, formal interaction — associations, political parties"),
("In-groups","Groups a person belongs to and feels loyalty towards"),
("Out-groups","Groups a person does not belong to"),
("Reference groups","Groups used as standard for self-appraisal — important in health behaviour"),
]
e.append(two_col_table(["Group Type","Description"], sg, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Social Stratification", SECTION_HEAD))
e.append(bullet("Hierarchical ranking of people based on wealth, status, power"))
e.append(bullet("Systems: Caste (ascribed), Class (achieved), Estate, Slavery"))
e.append(bullet("India: Caste system most significant — affects health-seeking behaviour"))
e.append(bullet("Kuppuswamy scale, Prasad's classification — used for socioeconomic status assessment"))
e.append(sp(0.2))
e.append(Paragraph("Culture & Health", SECTION_HEAD))
e.append(bullet("Culture: Shared beliefs, values, norms, and practices of a group"))
e.append(bullet("Ethnocentrism: Judging other cultures by one's own standards — barrier to healthcare"))
e.append(bullet("Cultural practices affecting health: food taboos, female seclusion, traditional healers, faith healing"))
e.append(bullet("Health beliefs: supernatural causation, hot/cold theory of disease (humoral theory)"))
e.append(sp(0.2))
e.append(Paragraph("Health Behaviour (Kasl & Cobb)", SECTION_HEAD))
hb = [
("Health behaviour","Any activity to prevent disease or detect it while asymptomatic — e.g. immunisation, check-ups"),
("Illness behaviour","Activity to seek remedy when feeling ill — going to a doctor"),
("Sick role behaviour","Activity to get well once declared sick — following treatment, bed rest"),
]
e.append(two_col_table(["Type","Definition"], hb, LTGREEN))
e.append(sp(0.2))
e.append(Paragraph("Health Belief Model (Rosenstock 1966)", SECTION_HEAD))
e.append(bullet("Perceived susceptibility: Does the person feel at risk?"))
e.append(bullet("Perceived severity: How serious does the person think the disease is?"))
e.append(bullet("Perceived benefits: Does the person believe the action will reduce risk?"))
e.append(bullet("Perceived barriers: What are the obstacles to taking action?"))
e.append(bullet("Cues to action: Trigger that motivates action (symptoms, media, advice)"))
e.append(bullet("Self-efficacy: Confidence in ability to take action (added by Becker 1988)"))
e.append(mnemonic("Mnemonic — SSBBCS: Susceptibility, Severity, Benefits, Barriers, Cues, Self-efficacy"))
e.append(sp(0.2))
e.append(Paragraph("Family in Community Medicine", SECTION_HEAD))
fam = [
("Nuclear family", "Husband + wife + unmarried children — basic social unit"),
("Joint family", "Multiple generations living together — common in India"),
("Extended family", "Nuclear family + other relatives"),
("Single-parent family", "One parent with children — increasing in urban areas"),
]
e.append(two_col_table(["Type","Description"], fam, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Sociological Methods in Community Medicine", SECTION_HEAD))
e.append(bullet("KAP studies: Knowledge, Attitudes, Practices — baseline surveys"))
e.append(bullet("Community surveys, focus group discussions, in-depth interviews"))
e.append(bullet("Participatory Rural Appraisal (PRA) — community-led needs assessment"))
e.append(keypoint("Exam Tip: Know Parsons' Sick Role (4 components), Health Belief Model components, Kuppuswamy/Prasad scales for SES."))
return e
def topic3():
e = [PageBreak()]
e.append(topic_banner("3", "Environment & Entomology", colors.HexColor("#065f46")))
e.append(sp(0.3))
e.append(Paragraph("Water & Sanitation", SECTION_HEAD))
water = [
("Turbidity","<1 NTU (treated); <10 NTU acceptable"),
("pH","6.5–8.5"),
("Total dissolved solids","<500 mg/L (desirable)"),
("Nitrates","<45 mg/L (WHO <50 mg/L)"),
("Fluoride","0.5–0.8 mg/L (India); >1.5 WHO guideline"),
("Coliform organisms","0 per 100 mL (WHO potable water standard)"),
]
e.append(Paragraph("Water Quality Standards (BIS/WHO)", SECTION_HEAD))
e.append(two_col_table(["Parameter","Standard"], water, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Water-borne Diseases", SECTION_HEAD))
wb = [
("Typhoid","Salmonella typhi","Faecal-oral","Chlorination + sewage disposal"),
("Cholera","Vibrio cholerae","Contaminated water/food","ORT + safe water"),
("Hepatitis A","HAV (RNA virus)","Faecal-oral","Vaccine + sanitation"),
("Poliomyelitis","Poliovirus","Faecal-oral","OPV/IPV vaccination"),
("Amoebiasis","E. histolytica","Contaminated food/water","Metronidazole"),
("Guinea worm","D. medinensis","Contaminated water","Filter water, abate cyclops"),
]
e.append(two_col_table(["Disease","Agent","Transmission","Control"], wb, LTGREEN))
e.append(sp(0.2))
e.append(Paragraph("Air Pollution", SECTION_HEAD))
e.append(bullet("Criteria air pollutants (WHO): PM2.5, PM10, O3, NO2, SO2, CO, Lead"))
e.append(bullet("PM2.5 <15 µg/m³ annual mean (WHO 2021 guideline)"))
e.append(bullet("Health effects: respiratory (COPD, lung cancer), cardiovascular disease, preterm birth"))
e.append(bullet("Indoor air pollution: cooking with biomass fuel → 2nd leading risk factor in developing countries"))
e.append(sp(0.2))
e.append(Paragraph("Solid & Biomedical Waste (brief — see Topic 4 for full)", SECTION_HEAD))
e.append(bullet("Municipal solid waste: collection → segregation → transport → disposal"))
e.append(bullet("Sanitary landfill: controlled, compacted, covered — preferred method"))
e.append(bullet("Composting: biodegradable waste → organic fertiliser"))
e.append(sp(0.2))
e.append(Paragraph("Entomology — Major Vectors", SECTION_HEAD))
ento = [
("Anopheles mosquito","Malaria (Plasmodium sp.), Filaria (W. bancrofti in some areas)","Breeds in clean/slow-moving water; bites at night","Bed nets (LLIN), IRS, larval control, DDT"),
("Culex mosquito","Filariasis (W. bancrofti), Japanese Encephalitis, West Nile virus","Breeds in stagnant/polluted water; bites at night","Anti-larval measures, insecticides"),
("Aedes mosquito","Dengue, Chikungunya, Zika, Yellow fever","Breeds in clean, stagnant water (containers, tyres); bites during day","Source reduction, biological control (Bti)"),
("Sandfly (Phlebotomus)","Kala-azar (L. donovani), Sandfly fever","Breeds in cracks, rubble, shaded moist areas","DDT spraying, fine mesh nets"),
("Tsetse fly","Sleeping sickness (T. brucei)","Breeds in forest vegetation","Traps, insecticides"),
("Louse (Pediculus)","Epidemic typhus, Relapsing fever, Trench fever","Direct contact","Delousing, hygiene, permethrin"),
("Flea (Xenopsylla)","Plague (Y. pestis), Murine typhus","Flea bite, infected rat","Rodent control BEFORE insecticide"),
("Hard tick (Ixodes)","Lyme disease, CCHF, RMSF, Kyasanur forest disease","Bite","Acaricides, protective clothing"),
("Soft tick (Ornithodoros)","Relapsing fever (B. duttoni)","Bite","Residual insecticides"),
]
e.append(two_col_table(["Vector","Diseases","Breeding Habit","Control"], ento, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Fly Control & Housefly (Musca domestica)", SECTION_HEAD))
e.append(bullet("Housefly: mechanical carrier of cholera, typhoid, dysentery, trachoma, polio"))
e.append(bullet("Breeding sites: animal dung, garbage, decaying organic matter"))
e.append(bullet("Control: proper waste disposal, fly screens, insecticides, biological control"))
e.append(sp(0.2))
e.append(Paragraph("Rodents", SECTION_HEAD))
e.append(bullet("Rattus rattus (black rat) — reservoir of plague"))
e.append(bullet("Rattus norvegicus (brown rat) — sewer rat, larger"))
e.append(bullet("Diseases: plague, leptospirosis, murine typhus, rat-bite fever, salmonellosis"))
e.append(bullet("Control: rat-proofing, trapping, rodenticides (coumatetralyl), cats, predators"))
e.append(mnemonic("Vector Memory Table: Anopheles=Malaria | Culex=Filaria+JE | Aedes=Dengue+Zika | Sandfly=Kala-azar | Flea=Plague | Louse=Typhus"))
e.append(keypoint("Exam Tip: Know all 4 mosquito genera diseases, breeding habits, and control. Always note: kill rodents AFTER fleas for plague control."))
return e
def topic4():
e = [PageBreak()]
e.append(topic_banner("4", "Biomedical Waste Management & Occupational Health", colors.HexColor("#7c3aed")))
e.append(sp(0.3))
e.append(Paragraph("Biomedical Waste (BMW) — Key Rules", SECTION_HEAD))
e.append(bullet("Governed by BMW Management Rules 2016 (amended 2019), India"))
e.append(bullet("Applies to all healthcare facilities — hospitals, clinics, laboratories, blood banks"))
e.append(sp(0.1))
e.append(Paragraph("BMW Categories & Colour Coding (2016 Rules)", SECTION_HEAD))
bmw = [
("Yellow bag","Human anatomical waste, animal waste, soiled waste (dressings, plaster), chemical waste, cytotoxic drugs, discarded medicines","Incineration / deep burial"),
("Red bag","Contaminated waste — tubing, IV sets, gloves, catheters, urine bags","Autoclaving / microwaving → shredding → recycling"),
("White (Translucent) puncture-proof container","Sharps — needles, syringes WITH fixed needles, blades, lancets","Autoclaving / dry heat → shredding OR encapsulation"),
("Blue/White translucent puncture-proof box","Glassware — glass slides, broken glass, metallic implants","Autoclaving / dry heat → disposal in secured landfill"),
]
e.append(two_col_table(["Colour","Contents","Treatment & Disposal"], bmw, LTRED))
e.append(mnemonic("Mnemonic: Yellow=Anatomy+Chemical+Drugs | Red=Contaminated recyclables | White=Sharps | Blue=Glass"))
e.append(sp(0.2))
e.append(Paragraph("Treatment Methods for BMW", SECTION_HEAD))
treat = [
("Incineration","Yellow bag waste; cytotoxic waste; NOT sharps (mercury produced)","Burns at >850°C; reduces volume by 90%"),
("Autoclaving","Red bag, White sharps, Blue glass","Moist heat 134°C / 3 bar / 18 min"),
("Microwaving","Red bag waste","MW energy + steam heat"),
("Chemical disinfection","Liquid waste — blood, urine, stools","Bleach (1% chlorine solution) for body fluids"),
("Deep burial","Anatomical waste in remote areas without incinerator","2 m deep pit, lime added"),
("Secure landfill","Incineration ash, sharps after treatment","Engineered landfill with liner"),
]
e.append(two_col_table(["Method","For","Key Points"], treat, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Needle-stick Injury Management", SECTION_HEAD))
e.append(bullet("Immediate: wash with soap and water for 2 min; do NOT squeeze"))
e.append(bullet("Report to infection control officer within 2–4 hours"))
e.append(bullet("Baseline bloods: HBsAg, anti-HCV, HIV (healthcare worker)"))
e.append(bullet("Post-exposure prophylaxis (PEP): HIV — start within 72 hours (ideally <2 hrs); Hep B — HBIG + vaccine"))
e.append(keypoint("Priority sequence for needle-stick: Wash → Report → Test baseline → PEP"))
e.append(sp(0.2))
e.append(Paragraph("Occupational Health", SECTION_HEAD))
e.append(Paragraph("Occupational health aims to maintain the highest degree of physical, mental, and social well-being of workers in all occupations (ILO/WHO joint committee).", BODY))
e.append(sp(0.1))
e.append(Paragraph("Occupational Hazards Classification", SECTION_HEAD))
haz = [
("Physical","Noise (>85 dB TWA), vibration, radiation, heat, cold, pressure","Noise-induced deafness, vibration white finger, decompression sickness"),
("Chemical","Dust, fumes, gases, vapours, mists","Pneumoconiosis, occupational asthma, chemical burns, poisoning"),
("Biological","Bacteria, viruses, fungi, parasites","TB (healthcare workers), brucellosis (vets), anthrax (wool sorters)"),
("Ergonomic","Poor posture, repetitive movement, heavy lifting","Back pain, carpal tunnel syndrome, RSI"),
("Psychosocial","Work stress, shift work, violence","Burnout, depression, CVD"),
]
e.append(two_col_table(["Type","Examples","Effects"], haz, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Major Occupational Diseases", SECTION_HEAD))
occ = [
("Silicosis","Crystalline silica dust","Miners, stone cutters, sandblasters","Upper lobe fibrosis, eggshell calcification of hilar nodes; TB risk ×30"),
("Coal worker's pneumoconiosis (CWP)","Coal dust","Coal miners","Simple CWP → Progressive Massive Fibrosis (PMF)"),
("Asbestosis","Asbestos fibres","Asbestos workers, ship workers","Diffuse interstitial fibrosis; → mesothelioma, lung cancer"),
("Byssinosis","Cotton, flax, hemp dust","Textile workers","Monday fever (worst on return from weekend); Forced expiratory drop"),
("Bagassosis","Bagasse (sugarcane residue)","Sugar mill workers","Hypersensitivity pneumonitis"),
("Occupational asthma","Isocyanates, platinum, latex, wood dust","Various industries","Reversible airflow obstruction"),
("Lead poisoning","Lead dust/fumes","Battery workers, painters, plumbers","Burton's line (gingival), wrist drop, encephalopathy"),
("Benzene toxicity","Benzene vapour","Petrochemical workers","Aplastic anaemia, AML"),
("Occupational dermatitis","Chromates, nickel, rubber chemicals","Various","Contact dermatitis"),
("HAVS (vibration)","Hand-arm vibration","Chain saw operators","White finger (Raynaud's phenomenon)"),
]
e.append(two_col_table(["Disease","Agent","Industry","Key Features"], occ, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Prevention Hierarchy (Controls — Most to Least Effective)", SECTION_HEAD))
e.append(bullet("1. Elimination: remove the hazard completely"))
e.append(bullet("2. Substitution: replace with less hazardous material"))
e.append(bullet("3. Engineering controls: enclosure, ventilation, isolation"))
e.append(bullet("4. Administrative controls: job rotation, reduced hours, training"))
e.append(bullet("5. Personal Protective Equipment (PPE): last resort"))
e.append(mnemonic("Mnemonic — ESEAP: Eliminate, Substitute, Engineer, Administer, Protect"))
e.append(keypoint("Exam Tip: BMW colour codes, silicosis vs asbestosis, and occupational cancer associations are high-yield MCQ topics."))
return e
def topic5():
e = [PageBreak()]
e.append(topic_banner("5", "Nutrition, Genetics & Essential Medicines", colors.HexColor("#b45309")))
e.append(sp(0.3))
e.append(Paragraph("Nutritional Deficiency Diseases", SECTION_HEAD))
nut = [
("Protein-Energy Malnutrition (PEM)","Marasmus","Severe calorie & protein deficiency","Wasting, 'old man face', appetite preserved, <60% weight for age"),
("PEM","Kwashiorkor","Protein deficiency with adequate calories","Oedema, pot-belly, skin/hair changes, irritable, >60% weight for age"),
("Vitamin A deficiency","Xerophthalmia","Night blindness → Bitot's spots → keratomalacia → corneal scarring","Vit A capsule (200,000 IU); under-5 program"),
("Vitamin D deficiency","Rickets (child)","Deficient sun exposure/diet","Craniotabes, Harrison's sulcus, bowlegs, rachitic rosary"),
("Vitamin D deficiency","Osteomalacia (adult)","Deficient sun/diet/malabsorption","Bone pain, Looser's zones, proximal myopathy"),
("Iron deficiency","Anaemia","Poor dietary intake, hookworm, malabsorption","Microcytic hypochromic anaemia, Hb <11 g/dL (children)"),
("Iodine deficiency","Goitre / Cretinism","Iodine-deficient soil/water","Endemic goitre; cretinism (MR + deaf-mutism)"),
("Vitamin B1 (Thiamine)","Beriberi","Polished rice diet","Wet (cardiac) vs Dry (neuropathic); Wernicke's in adults"),
("Vitamin B3 (Niacin)","Pellagra","Maize-dependent diet","4 Ds: Dermatitis, Diarrhoea, Dementia, Death"),
("Vitamin C (Ascorbic acid)","Scurvy","No fresh fruits/veg","Perifollicular haemorrhage, bleeding gums, corkscrew hairs"),
("Vitamin B12 / Folate","Megaloblastic anaemia","Vegan diet, malabsorption, pregnancy","Macrocytic anaemia; neural tube defects (folate in pregnancy)"),
("Zinc deficiency","Acrodermatitis, growth failure","Deficient diet","Diarrhoea, alopecia, hypogonadism, immune failure"),
]
e.append(two_col_table(["Nutrient","Disease","Cause","Key Features"], nut, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Nutritional Assessment Methods (ABCD)", SECTION_HEAD))
e.append(bullet("A — Anthropometry: weight, height, MUAC, skin fold thickness, BMI, head circumference"))
e.append(bullet("B — Biochemical: serum albumin, Hb, serum ferritin, serum vitamin levels"))
e.append(bullet("C — Clinical: signs of deficiency on examination"))
e.append(bullet("D — Dietary: 24-hr recall, food frequency questionnaire, dietary history"))
e.append(mnemonic("ABCD: Anthropometry, Biochemical, Clinical, Dietary"))
e.append(sp(0.2))
e.append(Paragraph("Protein-Energy Malnutrition Assessment", SECTION_HEAD))
pem = [
("Gomez classification","Weight for age","<60% = Grade III (severe)"),
("Waterlow classification","Height for age + Weight for height","Stunting + Wasting"),
("IAP classification","Weight for age",">80% = Normal; <60% = Grade IV"),
("MUAC","Mid-upper arm circumference","<11.5 cm = SAM; 11.5-12.5 cm = MAM"),
("WHZ score","Weight for height z-score","<-3 SD = SAM"),
]
e.append(two_col_table(["Classification","Basis","Cut-offs"], pem, LTGREEN))
e.append(sp(0.2))
e.append(Paragraph("Indian National Nutrition Programs", SECTION_HEAD))
prog = [
("ICDS (Integrated Child Development Services)","0-6 yr children, pregnant & lactating women","6 services: supplementary nutrition, immunisation, health check-up, referral, pre-school education, nutrition & health education"),
("Mid-Day Meal Scheme","School children (6-14 yrs)","Increase enrolment, retention, nutrition"),
("National Iodine Deficiency Disorders Control Program","All age groups","Universal salt iodisation (15 ppm at production, 10 ppm at consumption)"),
("Anaemia Mukt Bharat","6 months-49 yrs, pregnant women","IFA supplementation + deworming"),
("Poshan Abhiyan (POSHAN 2.0)","Children <6 yrs, adolescent girls, pregnant/lactating women","Reduce stunting, undernutrition, anaemia, low birth weight"),
]
e.append(two_col_table(["Program","Target","Objective"], prog, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Genetics in Community Medicine", SECTION_HEAD))
e.append(bullet("Mendelian inheritance: Autosomal dominant (AD), Autosomal recessive (AR), X-linked dominant/recessive"))
e.append(bullet("AD examples: Huntington's disease, Marfan syndrome, familial hypercholesterolaemia, NF-1"))
e.append(bullet("AR examples: Cystic fibrosis, PKU, sickle cell anaemia, thalassaemia, albinism"))
e.append(bullet("X-linked recessive examples: Haemophilia A/B, Duchenne muscular dystrophy, G6PD deficiency, colour blindness"))
e.append(bullet("Chromosomal disorders: Down syndrome (trisomy 21), Edwards (trisomy 18), Patau (trisomy 13), Turner (45,X0), Klinefelter (47,XXY)"))
e.append(bullet("Hardy-Weinberg principle: allele frequencies remain constant generation to generation (no selection, mutation, drift, migration)"))
e.append(sp(0.2))
e.append(Paragraph("Genetic Screening Programs", SECTION_HEAD))
e.append(bullet("Neonatal screening: PKU (Guthrie test), congenital hypothyroidism, sickle cell, G6PD, galactosaemia"))
e.append(bullet("Prenatal diagnosis: Amniocentesis (15-18 wks), CVS (10-12 wks), NIPT (cell-free fetal DNA from 10 wks)"))
e.append(bullet("Pre-implantation genetic diagnosis (PGD) — in IVF cycles"))
e.append(bullet("Genetic counselling: non-directive, confidential, recurrence risk calculation"))
e.append(sp(0.2))
e.append(Paragraph("WHO Essential Medicines", SECTION_HEAD))
e.append(bullet("First Essential Medicines List: 1977 (WHO)"))
e.append(bullet("Current list: ~500 medicines (23rd edition, 2023) — updated every 2 years"))
e.append(bullet("Selection criteria: Evidence of efficacy & safety, quality, adequate data, cost-effectiveness"))
e.append(bullet("National List of Essential Medicines (NLEM) India: 2022 — 384 medicines"))
e.append(bullet("Rational drug use: right drug, right patient, right dose, right duration, right route"))
e.append(keypoint("Exam Tip: Know year of first WHO EML (1977), Pellagra = 4Ds, Scurvy = perifollicular haemorrhage, MUAC cut-offs for SAM/MAM."))
return e
def topic6():
e = [PageBreak()]
e.append(topic_banner("6", "Basic Epidemiology & Screening", colors.HexColor("#0369a1")))
e.append(sp(0.3))
e.append(Paragraph("Measures of Disease Frequency", SECTION_HEAD))
freq = [
("Incidence rate","New cases in a time period / Population at risk × K","Measures disease risk; used for acute diseases"),
("Point prevalence","Cases at one point in time / Total population × K","Snapshot in time; useful for planning services"),
("Period prevalence","Cases during a time period / Average population × K","Chronic diseases; includes new + old cases"),
("Attack rate","New cases during outbreak / Population exposed × 100","Short-term epidemic; not a true rate"),
("Secondary attack rate","New cases in household / Susceptible household contacts × 100","Measures infectivity/communicability"),
("Crude death rate","Deaths / Midyear population × 1000","All-cause; affected by age structure"),
("Case fatality rate","Deaths from disease / Cases of disease × 100","Severity of disease; NOT a true rate"),
("Proportional mortality ratio","Deaths from one cause / Total deaths × 100","Shows relative importance of a disease"),
]
e.append(two_col_table(["Measure","Formula","Use"], freq, LTBLUE))
e.append(mnemonic("Prevalence = Incidence × Duration (P = I × D) — for steady-state diseases"))
e.append(sp(0.2))
e.append(Paragraph("Epidemiological Study Designs", SECTION_HEAD))
designs = [
("Cross-sectional study","Prevalence study; one point in time; cannot establish causality; quick & cheap"),
("Case-control study","Retrospective; compare cases vs controls; odds ratio; good for rare diseases; subject to recall bias"),
("Cohort study","Prospective/retrospective; follow exposed vs unexposed; relative risk; long, expensive; good for rare exposures"),
("Randomised Controlled Trial (RCT)","Experimental; gold standard for causality; random allocation; double-blind; highest level of evidence"),
("Ecological study","Aggregate data; group-level analysis; cannot infer individual risk (ecological fallacy)"),
("Systematic review/Meta-analysis","Synthesis of multiple studies; highest evidence level for questions about interventions"),
]
e.append(two_col_table(["Design","Key Features"], designs, LTGREEN))
e.append(sp(0.2))
e.append(Paragraph("Measures of Association", SECTION_HEAD))
assoc = [
("Relative Risk (RR)","Incidence in exposed / Incidence in unexposed","Cohort studies","RR=1: no association; >1: positive; <1: protective"),
("Odds Ratio (OR)","(Cases exposed × Controls unexposed) / (Cases unexposed × Controls exposed)","Case-control studies","Approximates RR for rare diseases"),
("Attributable Risk (AR)","Incidence in exposed - Incidence in unexposed","Cohort","Excess risk due to exposure"),
("Population Attributable Risk (PAR)","AR × prevalence of exposure in population","Public health","Potential reduction if exposure eliminated"),
("Number Needed to Treat (NNT)","1 / Absolute Risk Reduction","RCTs","Lower NNT = more effective treatment"),
]
e.append(two_col_table(["Measure","Formula","Study","Interpretation"], assoc, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Bias & Confounding", SECTION_HEAD))
bias = [
("Selection bias","Systematic error in selecting study participants","Use random sampling; ensure representative sample"),
("Information/Recall bias","Error in data collection; cases remember more (recall bias)","Blind outcome assessors; standardise data collection"),
("Berkson's bias","Hospitalized controls differ from general population","Use community controls"),
("Neyman/Prevalence-incidence bias","Prevalent cases exclude fatal/resolved early cases","Use incident cases"),
("Confounding","Third variable that distorts the true relationship","Matching, restriction, stratification, multivariate analysis"),
]
e.append(two_col_table(["Type","Description","Prevention"], bias, LTRED))
e.append(sp(0.2))
e.append(Paragraph("Causation — Bradford Hill Criteria (1965)", SECTION_HEAD))
hill = ["Strength of association","Consistency (reproducibility)","Specificity","Temporality (cause precedes effect — ONLY essential criterion)",
"Biological gradient (dose-response)","Plausibility","Coherence","Experiment (reversibility)","Analogy"]
for i, h in enumerate(hill, 1):
e.append(bullet(f"{i}. {h}"))
e.append(mnemonic("Mnemonic — SCSTBPCEA: Strength, Consistency, Specificity, Temporality, Biological gradient, Plausibility, Coherence, Experiment, Analogy"))
e.append(sp(0.2))
e.append(Paragraph("Screening", SECTION_HEAD))
e.append(Paragraph("The presumptive identification of unrecognised disease/risk factors by applying tests, examinations or procedures to apparently healthy people.", BODY))
e.append(sp(0.1))
e.append(Paragraph("Wilson & Jungner Criteria for Screening (1968) — WHO Classic Criteria", SECTION_HEAD))
wj = ["1. Important health problem","2. Accepted treatment available","3. Facilities for diagnosis and treatment","4. Recognisable latent/early symptomatic stage",
"5. Suitable and acceptable test exists","6. Natural history understood","7. Agreed policy on who to treat","8. Cost balanced against medical expenditure as a whole",
"9. Case-finding is a continuing process"]
for w in wj:
e.append(bullet(w))
e.append(sp(0.2))
e.append(Paragraph("Validity & Reliability of Screening Tests", SECTION_HEAD))
valid = [
("Sensitivity","TP / (TP+FN) × 100","Ability to detect true positives; high in early/acute phase"),
("Specificity","TN / (TN+FP) × 100","Ability to correctly identify negatives; high for confirmation"),
("PPV","TP / (TP+FP) × 100","Probability disease present if test positive; depends on prevalence"),
("NPV","TN / (TN+FN) × 100","Probability disease absent if test negative; depends on prevalence"),
("Accuracy","(TP+TN) / Total × 100","Overall correctness of test"),
]
e.append(two_col_table(["Measure","Formula","Notes"], valid, LTBLUE))
e.append(mnemonic("ROC curve: Receiver Operating Characteristic — area under curve (AUC) >0.9 = excellent test"))
e.append(keypoint("Exam Tip: Sensitivity = ability to detect disease (few FN); Specificity = correctly rule out (few FP). High sensitivity for screening; high specificity for confirming diagnosis."))
return e
def topic7():
e = [PageBreak()]
e.append(topic_banner("7", "Health Promotion & Education", colors.HexColor("#064e3b")))
e.append(sp(0.3))
e.append(Paragraph("Health Promotion — Ottawa Charter (1986)", SECTION_HEAD))
e.append(Paragraph("Health promotion is the process of enabling people to increase control over and improve their health. The Ottawa Charter (1st International Conference, WHO) defined 5 action areas:", BODY))
ottawa = ["1. Build healthy public policy","2. Create supportive environments","3. Strengthen community action","4. Develop personal skills","5. Reorient health services"]
for o in ottawa:
e.append(bullet(o))
e.append(mnemonic("Mnemonic — BCSDR: Build, Create, Strengthen, Develop, Reorient"))
e.append(sp(0.2))
e.append(Paragraph("Health Education — Definitions & Principles", SECTION_HEAD))
e.append(bullet("Health education: Any combination of learning experiences designed to facilitate voluntary actions conducive to health (Green et al.)"))
e.append(bullet("Aim: to help people achieve health through their own actions and efforts"))
e.append(bullet("Principles: credibility, relevance, feedback, reinforcement, participation, comprehension, motivation"))
e.append(sp(0.2))
e.append(Paragraph("KAP Model (Knowledge, Attitudes, Practices)", SECTION_HEAD))
e.append(bullet("Knowledge: Cognitive component — information about health topics"))
e.append(bullet("Attitude: Affective component — emotional disposition towards health"))
e.append(bullet("Practice: Behavioural component — actual health behaviours"))
e.append(bullet("KAP surveys: cross-sectional surveys measuring all 3 dimensions"))
e.append(bullet("Limitation: Knowledge does not always translate to practice (KAP gap)"))
e.append(sp(0.2))
e.append(Paragraph("PRECEDE-PROCEED Model (Green & Kreuter)", SECTION_HEAD))
e.append(bullet("PRECEDE: Predisposing, Reinforcing, Enabling Constructs in Educational/Environmental Diagnosis and Evaluation"))
e.append(bullet("PROCEED: Policy, Regulatory, and Organisational Constructs in Educational and Environmental Development"))
pre = [
("Predisposing factors","Knowledge, attitudes, beliefs, values, perceptions — motivators"),
("Enabling factors","Skills, resources, accessibility — facilitate or hinder behaviour"),
("Reinforcing factors","Rewards, feedback, social support — after behaviour occurs"),
]
e.append(two_col_table(["Factor","Definition"], pre, LTGREEN))
e.append(sp(0.2))
e.append(Paragraph("Methods of Health Education", SECTION_HEAD))
methods = [
("Individual methods","Face-to-face counselling, bedside teaching, home visits","High impact; time-intensive"),
("Group methods","Lectures, discussions, demonstrations, role play, workshops","Moderate reach; interactive"),
("Mass media methods","TV, radio, newspapers, social media, films, posters","Wide reach; one-way; cannot tailor"),
]
e.append(two_col_table(["Method","Examples","Pros/Cons"], methods, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Communication Process (SMCR Model — Berlo 1960)", SECTION_HEAD))
e.append(bullet("S — Source: credibility, attitudes, knowledge, culture"))
e.append(bullet("M — Message: content, structure, code, treatment, elements"))
e.append(bullet("C — Channel: seeing, hearing, touching, smelling, tasting"))
e.append(bullet("R — Receiver: similar factors as source"))
e.append(mnemonic("SMCR: Source, Message, Channel, Receiver"))
e.append(sp(0.2))
e.append(Paragraph("Audio-Visual Aids in Health Education", SECTION_HEAD))
av = [
("Projected aids","Slides, films, PowerPoint","Large groups; needs electricity; good for complex content"),
("Non-projected aids","Posters, charts, flip charts, flannel board, exhibit","No electricity needed; portable"),
("Audio aids","Radio, tape recorder","Illiterate audiences; cheap"),
("3D aids","Models, specimens, puppets","Demonstrations; hands-on learning"),
("Print media","Leaflets, booklets, pamphlets, newsletters","Literate audiences; reference material"),
]
e.append(two_col_table(["Type","Examples","Best For"], av, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("National Health Programs Using IEC", SECTION_HEAD))
e.append(bullet("RNTCP/NTP: DOTS — community-based treatment adherence"))
e.append(bullet("Family Welfare: IUCD, sterilisation, condom promotion"))
e.append(bullet("National AIDS Control Programme: condom promotion, ICTC"))
e.append(bullet("Pulse Polio: 'Do Boond Zindagi Ki' — mass IEC campaign"))
e.append(bullet("Swachh Bharat Mission: behaviour change for open defecation free (ODF)"))
e.append(keypoint("Exam Tip: Ottawa Charter 5 action areas, PRECEDE factors (predisposing/enabling/reinforcing), and SMCR model are frequently asked."))
return e
def topic8():
e = [PageBreak()]
e.append(topic_banner("8", "Demography, Biostatistics & Vital Statistics", colors.HexColor("#1e3a5f")))
e.append(sp(0.3))
# ── DEMOGRAPHY ────────────────────────────────────────────────────────────
e.append(Paragraph("Demography", SECTION_HEAD))
e.append(Paragraph("The scientific study of human populations — size, distribution, composition, and changes over time.", BODY))
e.append(Paragraph("Key Demographic Indicators", SECTION_HEAD))
demo = [
("Crude Birth Rate (CBR)","Live births / Midyear population × 1000","India 2021: ~18"),
("Crude Death Rate (CDR)","Deaths / Midyear population × 1000","India 2021: ~6"),
("Rate of Natural Increase","CBR - CDR (per 1000)","Ignores migration"),
("Total Fertility Rate (TFR)","Sum of age-specific fertility rates × 5","India 2021: ~2.0; Replacement level = 2.1"),
("Infant Mortality Rate (IMR)","Deaths <1 yr / Live births × 1000","India 2021: ~27; Most sensitive indicator of health & socioeconomic status"),
("Neonatal Mortality Rate (NMR)","Deaths 0-28 days / Live births × 1000","India ~20"),
("Maternal Mortality Ratio (MMR)","Maternal deaths / 100,000 live births","India 2018-20: 97; SDG target <70"),
("Child Mortality Rate (U5MR)","Deaths <5 yrs / Live births × 1000","India 2021: ~32"),
("Life Expectancy at Birth (e0)","Average years expected to live from birth","India ~69-70 years"),
("Dependency Ratio","(Population <15 + >64) / Population 15-64 × 100","Economic burden on working-age population"),
]
e.append(two_col_table(["Indicator","Formula","India Reference"], demo, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Demographic Transition Theory", SECTION_HEAD))
dtt = [
("Stage 1 — High stationary","High CBR, High CDR","Pre-industrial societies; slow growth"),
("Stage 2 — Early expanding","High CBR, Falling CDR","Population explosion; sanitation improves"),
("Stage 3 — Late expanding","Falling CBR, Low CDR","Industrialisation; urbanisation; contraception"),
("Stage 4 — Low stationary","Low CBR, Low CDR","Developed countries; ageing population"),
("Stage 5","Very low CBR","Sub-replacement fertility; population decline"),
]
e.append(two_col_table(["Stage","Birth/Death Rates","Context"], dtt, LTGREEN))
e.append(mnemonic("India is currently in Stage 3 of demographic transition"))
e.append(sp(0.2))
e.append(Paragraph("Indian Census", SECTION_HEAD))
e.append(bullet("Conducted every 10 years — last completed: Census 2011"))
e.append(bullet("2011 Population: 1.21 billion; Sex ratio: 940 females per 1000 males"))
e.append(bullet("Literacy rate (2011): 74.04% (Male: 82.14%; Female: 65.46%)"))
e.append(bullet("Provisional Census 2021 delayed due to COVID-19"))
e.append(sp(0.2))
# ── BIOSTATISTICS ─────────────────────────────────────────────────────────
e.append(Paragraph("Biostatistics", SECTION_HEAD))
e.append(Paragraph("Application of statistics to biological and health data — used to summarise, analyse, and draw conclusions from health data.", BODY))
e.append(Paragraph("Measures of Central Tendency", SECTION_HEAD))
ct = [
("Mean","Sum of values / Number of values","Normal distribution; affected by outliers"),
("Median","Middle value when data ordered","Skewed data; not affected by outliers"),
("Mode","Most frequently occurring value","Nominal/categorical data; can be multimodal"),
]
e.append(two_col_table(["Measure","Definition","Best Use"], ct, LTBLUE))
e.append(bullet("For normal distribution: Mean = Median = Mode"))
e.append(bullet("Positive skew: Mean > Median > Mode; Negative skew: Mean < Median < Mode"))
e.append(sp(0.2))
e.append(Paragraph("Measures of Dispersion", SECTION_HEAD))
disp = [
("Range","Max - Min value","Simplest; affected by outliers"),
("Mean deviation","Mean of |deviations from mean|","Rarely used"),
("Variance (s²)","Sum of squared deviations / (n-1)","Foundation for SD"),
("Standard deviation (SD/σ)","√Variance","Most used; same units as data"),
("Coefficient of variation (CV)","(SD/Mean) × 100%","Compare dispersion of different units"),
("Standard Error of Mean (SEM)","SD / √n","Precision of sample mean estimate"),
("95% Confidence Interval","Mean ± 1.96 × SEM","Range containing true population mean"),
]
e.append(two_col_table(["Measure","Formula","Note"], disp, LTYELL))
e.append(sp(0.2))
e.append(Paragraph("Normal Distribution — Key Properties", SECTION_HEAD))
e.append(bullet("Bell-shaped, symmetric, unimodal"))
e.append(bullet("Mean ± 1 SD contains 68.27% of values"))
e.append(bullet("Mean ± 2 SD contains 95.45% of values"))
e.append(bullet("Mean ± 3 SD contains 99.73% of values"))
e.append(bullet("95% CI uses ±1.96 SD (not exactly 2 SD)"))
e.append(mnemonic("68-95-99.7 Rule (Empirical Rule)"))
e.append(sp(0.2))
e.append(Paragraph("Hypothesis Testing", SECTION_HEAD))
hyp = [
("Null hypothesis (H0)","States no difference / no association","Rejected if p < α"),
("Alternative hypothesis (H1)","States a difference exists","Accepted if H0 rejected"),
("p-value","Probability of results if H0 true","p<0.05 = statistically significant"),
("Type I error (α)","Rejecting true H0 (false positive)","Set at 0.05 (5%)"),
("Type II error (β)","Accepting false H0 (false negative)","Set at 0.10-0.20 (10-20%)"),
("Power (1-β)","Probability of detecting true difference","Usually ≥0.80 (80%)"),
]
e.append(two_col_table(["Term","Definition","Standard"], hyp, LTRED))
e.append(sp(0.2))
e.append(Paragraph("Statistical Tests Selection Guide", SECTION_HEAD))
tests = [
("t-test (independent)","Compare means of 2 independent groups","Parametric; normal distribution; continuous data"),
("t-test (paired)","Compare means of same group before/after","Parametric; paired continuous data"),
("ANOVA (F-test)","Compare means of 3+ groups","Parametric; normal distribution"),
("Chi-square (χ²) test","Compare proportions / test association","Non-parametric; categorical data; expected cell ≥5"),
("Fisher's exact test","2×2 table with small expected frequencies","Non-parametric; n<40 or expected cell <5"),
("Mann-Whitney U test","Compare 2 independent groups (non-normal)","Non-parametric equivalent of independent t-test"),
("Pearson's correlation (r)","Linear relationship between 2 continuous variables","Parametric; -1 to +1"),
("Spearman's rank correlation","Correlation for ranked/ordinal data","Non-parametric equivalent"),
]
e.append(two_col_table(["Test","Use","When to Use"], tests, LTBLUE))
e.append(sp(0.2))
e.append(Paragraph("Vital Statistics & Registration", SECTION_HEAD))
e.append(bullet("Vital statistics: data on births, deaths, marriages, divorces, and migration"))
e.append(bullet("Registration of Births and Deaths Act, 1969 (India) — mandatory registration"))
e.append(bullet("Civil Registration System (CRS): continuous recording of vital events"))
e.append(bullet("Sample Registration System (SRS): large-scale continuous demographic survey since 1964-65"))
e.append(bullet("Medical Certificate of Cause of Death (MCCD): ICD-10 coding; only for institutional deaths"))
e.append(sp(0.2))
e.append(Paragraph("ICD-10 Coding", SECTION_HEAD))
e.append(bullet("International Classification of Diseases, 10th Revision (WHO)"))
e.append(bullet("22 chapters; alphanumeric codes (A00-Z99)"))
e.append(bullet("Chapter I (A,B): Infectious and parasitic diseases"))
e.append(bullet("Chapter II (C,D): Neoplasms"))
e.append(bullet("Chapter X (J): Respiratory diseases"))
e.append(bullet("Used for mortality data, morbidity classification, reimbursement"))
e.append(mnemonic("ICD-11 released July 2022 — may appear in recent exam papers"))
e.append(keypoint("Exam Tip: IMR is most sensitive health indicator. Know 68-95-99.7 rule, when to use chi-square vs t-test, and India's current demographic indicators."))
return e
# ── Quick Revision Summary ────────────────────────────────────────────────────
def quick_summary():
e = [PageBreak()]
e.append(Paragraph("QUICK REVISION SUMMARY", make_style("qrs", fontSize=18, textColor=NAVY,
fontName="Helvetica-Bold", spaceAfter=8, alignment=TA_CENTER)))
e.append(hr())
data = [
[Paragraph("Topic", make_style("th2", fontName="Helvetica-Bold", fontSize=9.5, textColor=NAVY)),
Paragraph("Must-Know Points", make_style("th2", fontName="Helvetica-Bold", fontSize=9.5, textColor=NAVY)),
Paragraph("High-Yield MCQ", make_style("th2", fontName="Helvetica-Bold", fontSize=9.5, textColor=NAVY))],
[Paragraph("1. Basic Concepts", BODY),
Paragraph("3 levels of prevention; Iceberg concept; Disease patterns", BODY),
Paragraph("WHO definition of health; Primary prevention = health promotion + specific protection", BODY)],
[Paragraph("2. Sociology", BODY),
Paragraph("Health Belief Model (6 components); Social determinants; KAP", BODY),
Paragraph("Parsons' sick role — 4 components; Rosenstock 1966 HBM", BODY)],
[Paragraph("3. Environment & Entomology", BODY),
Paragraph("Mosquito vector → disease table; BMW colour codes", BODY),
Paragraph("Anopheles=malaria, Culex=filaria+JE, Aedes=dengue; For plague: kill rats AFTER fleas", BODY)],
[Paragraph("4. BMW & Occupational Health", BODY),
Paragraph("4 colour bags; Silicosis vs Asbestosis; ESEAP hierarchy", BODY),
Paragraph("Yellow=anatomy+chemical; Red=contaminated; White=sharps; Blue=glass", BODY)],
[Paragraph("5. Nutrition, Genetics, EML", BODY),
Paragraph("ABCD nutrition assessment; WHO EML 1977; Hardy-Weinberg", BODY),
Paragraph("Pellagra=4Ds; Scurvy=perifollicular haemorrhage; MUAC SAM <11.5 cm", BODY)],
[Paragraph("6. Epidemiology & Screening", BODY),
Paragraph("RR vs OR; Bradford Hill 9 criteria; Sens/Spec; Screening criteria", BODY),
Paragraph("Temporality = ONLY essential Bradford Hill criterion; High Sens for screening, high Spec to confirm", BODY)],
[Paragraph("7. Health Promotion", BODY),
Paragraph("Ottawa Charter 5 areas; PRECEDE factors; SMCR model", BODY),
Paragraph("Ottawa Charter 1986; 5 action areas — BCSDR; Enabling factors = resources/skills", BODY)],
[Paragraph("8. Demography & Biostatistics", BODY),
Paragraph("IMR=most sensitive; TFR replacement=2.1; 68-95-99.7 rule", BODY),
Paragraph("Chi-square=categorical data; t-test=continuous; p<0.05 significant; SRS since 1964-65", BODY)],
]
t = Table(data, colWidths=[3.5*cm, 7*cm, 6.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), NAVY),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, GREY]),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#9ca3af")),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#d1d5db")),
("LEFTPADDING",(0,0),(-1,-1), 6),
("RIGHTPADDING",(0,0),(-1,-1), 6),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
e.append(t)
e.append(sp(1))
e.append(Paragraph("Source: Based on Park's Textbook of Preventive and Social Medicine", NOTE))
e.append(Paragraph("Prepared for Community Medicine Theory Examination | Paper 1", NOTE))
return e
# ── Main document builder ─────────────────────────────────────────────────────
def build_pdf():
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm,
rightMargin=2*cm,
topMargin=2*cm,
bottomMargin=2*cm,
title="Community Medicine Paper 1 Study Guide",
author="Orris AI",
subject="Community Medicine Theory Exam Preparation",
)
story = []
# Cover
story += cover_content()
story.append(sp(1))
# TOC
story += toc()
# Topics
story += topic1()
story += topic2()
story += topic3()
story += topic4()
story += topic5()
story += topic6()
story += topic7()
story += topic8()
# Quick summary
story += quick_summary()
doc.build(story)
print(f"PDF created: {OUTPUT}")
if __name__ == "__main__":
build_pdf()
cd /home/daytona/workspace/comm-medicine-study && python3 generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/comm-medicine-study/Community_Medicine_Paper1_Study_Guide.pdf
Community Medicine Paper1 Study Guide
PDF Document · PDF
| Topic | What's Covered |
|---|---|
| 1. Basic Concepts | WHO health definition, 3 levels of prevention table, natural history of disease, iceberg concept, epidemiological triad, disease patterns (endemic/epidemic/pandemic) |
| 2. Sociology | Social determinants, KAP model, Health Belief Model (6 components), social groups, family types, Kasl & Cobb health behaviour types |
| 3. Environment & Entomology | Water quality standards, waterborne diseases table, air pollutants, full vector table (Anopheles, Culex, Aedes, Sandfly, Flea, Louse, Tick + diseases + control) |
| 4. BMW & Occupational Health | 4 colour-coded bags with contents & treatment, needle-stick protocol, 10+ occupational diseases table (silicosis, asbestosis, lead, benzene...), ESEAP prevention hierarchy |
| 5. Nutrition, Genetics & EML | 12 deficiency diseases table, ABCD assessment, PEM classifications (Gomez/Waterlow/MUAC), national programs (ICDS/Poshan Abhiyan), genetics, WHO EML history |
| 6. Epidemiology & Screening | All rates/ratios with formulas, study design comparison, RR vs OR, Bradford Hill 9 criteria, bias & confounding, Wilson & Jungner screening criteria, sensitivity/specificity |
| 7. Health Promotion | Ottawa Charter 5 action areas, PRECEDE-PROCEED model, IEC methods, SMCR communication model, AV aids classification |
| 8. Demography & Biostatistics | 10 demographic indicators with India values, demographic transition stages, census data, measures of central tendency/dispersion, 68-95-99.7 rule, hypothesis testing, statistical test selection guide |