Cho exam syllabus

Asking for Preferences
Searching the Web

India NHM Community Health Officer CHO exam syllabus 2025 2026

Reading Web Page

https://www.pw.live/nursing/exams/cho

Here is the complete NHM Community Health Officer (CHO) Exam Syllabus 2026:

๐Ÿฅ NHM CHO Exam - Overview

ParameterDetails
Conducted byState Health Societies under NHM
EligibilityGNM / B.Sc. Nursing / Post Basic B.Sc. Nursing
Exam ModeOnline CBT or Offline OMR (state-wise)
Total Questions100-150 MCQs
Duration2 to 2.5 hours
Negative MarkingState-specific (present in RJ, GJ, MP, HR)

๐Ÿ“š Core Syllabus (Common Across States)

1. Anatomy & Physiology

  • Structure and functions of all body systems
  • Reproductive system, urinary, respiratory, cardiovascular
  • Cell biology, tissues, organ systems

2. Community Health Nursing

  • Concept of community health, primary health care
  • Epidemiology - principles, disease surveillance
  • Communicable and non-communicable diseases
  • Environmental health - water, sanitation, air quality
  • School health, occupational health
  • Disaster management and emergency care

3. Maternal & Child Health (MCH)

  • Antenatal, intranatal, postnatal care
  • Family planning methods and counselling
  • Immunization schedule (National Immunization Program)
  • Child growth and development - milestones
  • IMNCI (Integrated Management of Neonatal and Childhood Illness)
  • Malnutrition - types, management (SAM/MAM)

4. Medical-Surgical Nursing

  • Care of patients with common diseases (TB, Diabetes, Hypertension, Malaria, etc.)
  • Wound care, pre/post-operative care
  • Basic pharmacology - drug classifications, routes of administration
  • First aid and emergency nursing

5. National Health Programs / NHM Schemes

  • RMNCH+A (Reproductive, Maternal, Newborn, Child, Adolescent Health)
  • Ayushman Bharat - HWCs (Health & Wellness Centres)
  • ASHA, ANM roles and responsibilities
  • JSSK, JSY, Pradhan Mantri Matru Vandana Yojana (PMMVY)
  • RBSK (Rashtriya Bal Swasthya Karyakram)
  • National programs: NTEP (TB), NVBDCP (malaria/dengue), NPCDCS (NCDs)
  • Poshan Abhiyan, Mission Indradhanush

6. Midwifery & Gynecology

  • Normal and abnormal labour
  • Complications of pregnancy (eclampsia, placenta previa, etc.)
  • Newborn care - resuscitation, thermoregulation
  • Contraceptive methods - IUCD, OCP, sterilization

7. Mental Health Nursing

  • Basic concepts of mental health
  • NMHP (National Mental Health Programme)
  • Common mental disorders - depression, anxiety, schizophrenia
  • De-addiction and substance abuse

8. Nutrition

  • Nutritional requirements across life cycle
  • Deficiency diseases - Vitamin A, Iron, Iodine
  • Therapeutic diets
  • POSHAN Mission targets

9. Microbiology & Infection Control

  • Types of microorganisms
  • Sterilization and disinfection methods
  • Universal precautions, biomedical waste management

10. Health Statistics & Demography

  • Vital statistics - birth rate, death rate, IMR, MMR, TFR
  • Census data interpretation
  • Health indicators and indices (HDI, GHI)

๐Ÿ“Š State-Wise Exam Pattern (Quick Reference)

StateNursing %Public Health %GK/Aptitude %-ve Marking
Uttar Pradesh80%-20%No
Madhya Pradesh65%20%15%Yes
Rajasthan80%-20%Yes
Maharashtra70%20%10%No
Bihar50%30%20%No
Gujarat75%-25%Yes
Punjab80%-20%No
Haryana75%-25%Yes
Chhattisgarh50%30%20%No
Odisha70%20%10%No

๐Ÿ“ General Aptitude & Computer Section (State-Specific)

  • Logical reasoning (series, coding, blood relations)
  • Basic mathematics (percentage, ratio, average)
  • English comprehension
  • General awareness and current affairs
  • Basic computer knowledge (MS Office, Internet, hardware)

๐ŸŽฏ High-Priority Topics for CHO Exam

  1. National Health Programs - Highest weightage in most states
  2. MCH & Immunization - Always 15-20 questions
  3. Community Health Nursing - Core of the exam
  4. Epidemiology - Definitions, types of studies, disease control
  5. Ayushman Bharat / HWC functions - CHO-specific role

๐Ÿ“– Recommended Study Resources

  • NHM official notifications for your state (for exact updated syllabus)
  • IGNOU CPHC (Community Health for Nurses) course material
  • GNM/B.Sc. Nursing standard textbooks (K.P. Nair, Marlow)
  • Previous year question papers
  • NHM India official site for national health scheme updates
Always check your specific state NHM website before the exam, as topics and weightage can vary. States like Rajasthan and Bihar include state-specific GK (local health schemes, geography), while UP and Punjab focus almost entirely on core nursing subjects.

Create a study guide PDF for CHO exam preparation

Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/cho-study-guide && ls /home/daytona/workspace/cโ€ฆ

Writing File

~/cho-study-guide/generate_cho_guide.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem

# โ”€โ”€โ”€ Colors โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
DARK_BLUE   = colors.HexColor("#1B3A6B")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
ACCENT_TEAL = colors.HexColor("#1A8C8C")
ACCENT_GREEN= colors.HexColor("#2E7D32")
ORANGE      = colors.HexColor("#E65100")
LIGHT_GRAY  = colors.HexColor("#F5F5F5")
MID_GRAY    = colors.HexColor("#BDBDBD")
WHITE       = colors.white
RED_ALERT   = colors.HexColor("#C62828")

# โ”€โ”€โ”€ Output path โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
OUTPUT = "/home/daytona/workspace/cho-study-guide/CHO_Exam_Study_Guide.pdf"

# โ”€โ”€โ”€ Document setup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.8*cm,
    leftMargin=1.8*cm,
    topMargin=2*cm,
    bottomMargin=2*cm,
    title="CHO Exam Study Guide",
    author="NHM CHO Preparation",
)

W, H = A4
styles = getSampleStyleSheet()

# โ”€โ”€โ”€ Custom styles โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def make_style(name, **kw):
    return ParagraphStyle(name, **kw)

cover_title = make_style("CoverTitle",
    fontSize=32, fontName="Helvetica-Bold",
    textColor=WHITE, alignment=TA_CENTER, spaceAfter=10)

cover_sub = make_style("CoverSub",
    fontSize=16, fontName="Helvetica",
    textColor=colors.HexColor("#D6E8F7"), alignment=TA_CENTER, spaceAfter=6)

cover_info = make_style("CoverInfo",
    fontSize=12, fontName="Helvetica",
    textColor=WHITE, alignment=TA_CENTER, spaceAfter=4)

ch_heading = make_style("ChHeading",
    fontSize=18, fontName="Helvetica-Bold",
    textColor=WHITE, alignment=TA_LEFT,
    leftIndent=8, spaceAfter=4, spaceBefore=4)

sec_heading = make_style("SecHeading",
    fontSize=13, fontName="Helvetica-Bold",
    textColor=DARK_BLUE, alignment=TA_LEFT,
    spaceBefore=10, spaceAfter=4)

sub_heading = make_style("SubHeading",
    fontSize=11, fontName="Helvetica-Bold",
    textColor=ACCENT_TEAL, spaceBefore=8, spaceAfter=3)

body = make_style("Body",
    fontSize=10, fontName="Helvetica",
    textColor=colors.HexColor("#212121"),
    leading=15, spaceBefore=2, spaceAfter=2, alignment=TA_JUSTIFY)

bullet_style = make_style("Bullet",
    fontSize=10, fontName="Helvetica",
    textColor=colors.HexColor("#212121"),
    leading=14, leftIndent=14, spaceBefore=1, spaceAfter=1)

note_style = make_style("Note",
    fontSize=9.5, fontName="Helvetica-Oblique",
    textColor=colors.HexColor("#555555"),
    leading=13, leftIndent=10, spaceBefore=4, spaceAfter=4)

highlight_style = make_style("Highlight",
    fontSize=10, fontName="Helvetica-Bold",
    textColor=ORANGE, spaceBefore=4, spaceAfter=4)

toc_style = make_style("TOC",
    fontSize=11, fontName="Helvetica",
    textColor=DARK_BLUE, leading=20, leftIndent=20)

toc_heading_style = make_style("TOCHeading",
    fontSize=12, fontName="Helvetica-Bold",
    textColor=DARK_BLUE, leading=22, leftIndent=0)

footer_style = make_style("Footer",
    fontSize=8, fontName="Helvetica",
    textColor=MID_GRAY, alignment=TA_CENTER)

# โ”€โ”€โ”€ Helper builders โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def chapter_header(title, subtitle=""):
    data = [[Paragraph(title, ch_heading)]]
    if subtitle:
        data.append([Paragraph(subtitle, make_style("ChSub",
            fontSize=10, fontName="Helvetica",
            textColor=colors.HexColor("#BBDEFB"), alignment=TA_LEFT, leftIndent=8))])
    t = Table(data, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
        ("TOPPADDING",    (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("BOX", (0,0), (-1,-1), 1, MED_BLUE),
    ]))
    return t

def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE):
    t = Table([[Paragraph(text, make_style("IB",
        fontSize=10, fontName="Helvetica",
        textColor=DARK_BLUE, leading=14, leftIndent=0))]],
        colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("BOX", (0,0), (-1,-1), 1, border),
        ("TOPPADDING",    (0,0), (-1,-1), 7),
        ("BOTTOMPADDING", (0,0), (-1,-1), 7),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ]))
    return t

def key_points_box(points, title="Key Points"):
    rows = [[Paragraph(f"<b>{title}</b>", make_style("KPH",
        fontSize=10, fontName="Helvetica-Bold",
        textColor=WHITE))]]
    for p in points:
        rows.append([Paragraph(f"โ€ข {p}", make_style("KP",
            fontSize=9.5, fontName="Helvetica",
            textColor=DARK_BLUE, leading=13))])
    t = Table(rows, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (0,0), ACCENT_TEAL),
        ("BACKGROUND", (0,1), (-1,-1), colors.HexColor("#E0F2F1")),
        ("BOX", (0,0), (-1,-1), 1, ACCENT_TEAL),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ]))
    return t

def simple_table(headers, rows, col_widths=None):
    col_w = col_widths or ([( W - 3.6*cm) / len(headers)] * len(headers))
    data = [[Paragraph(f"<b>{h}</b>", make_style("TH",
        fontSize=9.5, fontName="Helvetica-Bold",
        textColor=WHITE, alignment=TA_CENTER)) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), make_style("TD",
            fontSize=9, fontName="Helvetica",
            textColor=colors.HexColor("#212121"), leading=13)) for c in row])
    t = Table(data, colWidths=col_w)
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  DARK_BLUE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_GRAY, WHITE]),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID",     (0,0), (-1,-1), 0.25, MID_GRAY),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    return t

def bullet_list(items):
    return [Paragraph(f"<b>โ€ข</b>  {item}", bullet_style) for item in items]

def sp(n=1):
    return Spacer(1, n * 5)

def hr():
    return HRFlowable(width="100%", thickness=0.5, color=MID_GRAY, spaceAfter=4)

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CONTENT BUILDING
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story = []

# โ”€โ”€โ”€ COVER PAGE โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
cover_data = [
    [Paragraph("NHM", make_style("CL1", fontSize=14, fontName="Helvetica",
        textColor=colors.HexColor("#90CAF9"), alignment=TA_CENTER))],
    [Paragraph("Community Health Officer", cover_title)],
    [Paragraph("Exam Study Guide", cover_title)],
    [Spacer(1, 8)],
    [HRFlowable(width="60%", thickness=2, color=ACCENT_TEAL, spaceAfter=10)],
    [Paragraph("Comprehensive Preparation Resource", cover_sub)],
    [Spacer(1, 20)],
    [Paragraph("Covers All Core Subjects | State-wise Exam Patterns", cover_info)],
    [Paragraph("National Health Programmes | MCH | Epidemiology | Nursing", cover_info)],
    [Spacer(1, 30)],
    [Paragraph("July 2026 Edition", make_style("Ed", fontSize=10, fontName="Helvetica",
        textColor=colors.HexColor("#90CAF9"), alignment=TA_CENTER))],
]
cover_table = Table(cover_data, colWidths=[W - 3.6*cm])
cover_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 20),
    ("RIGHTPADDING",  (0,0), (-1,-1), 20),
    ("BOX", (0,0), (-1,-1), 3, ACCENT_TEAL),
]))
story.append(Spacer(1, 60))
story.append(cover_table)
story.append(Spacer(1, 20))
story.append(Paragraph(
    "For GNM / B.Sc. Nursing / Post Basic B.Sc. Nursing candidates",
    make_style("CoverFooter", fontSize=10, fontName="Helvetica-Oblique",
        textColor=colors.HexColor("#546E7A"), alignment=TA_CENTER)))
story.append(PageBreak())

# โ”€โ”€โ”€ TABLE OF CONTENTS โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Table of Contents"))
story.append(sp(2))
toc_items = [
    ("1", "Exam Overview & Pattern",               "3"),
    ("2", "Anatomy & Physiology",                   "4"),
    ("3", "Community Health Nursing",               "5"),
    ("4", "Maternal & Child Health (MCH)",          "6"),
    ("5", "National Health Programmes (NHP)",       "7"),
    ("6", "Medical-Surgical Nursing",               "9"),
    ("7", "Midwifery & Gynecology",                "10"),
    ("8", "Mental Health Nursing",                 "11"),
    ("9", "Nutrition",                             "11"),
    ("10","Microbiology & Infection Control",      "12"),
    ("11","Health Statistics & Demography",        "13"),
    ("12","High-Priority Topics & Quick Revision", "14"),
    ("13","Mock Questions",                        "15"),
    ("14","Study Plan & Tips",                     "16"),
]
toc_data = [[
    Paragraph(f"<b>{no}.</b>", make_style("TN", fontSize=11, fontName="Helvetica-Bold", textColor=DARK_BLUE)),
    Paragraph(title, toc_style),
    Paragraph(f"<b>{pg}</b>", make_style("TP", fontSize=11, fontName="Helvetica-Bold",
        textColor=MED_BLUE, alignment=TA_CENTER)),
] for no, title, pg in toc_items]
toc_t = Table(toc_data, colWidths=[1.2*cm, W - 3.6*cm - 1.2*cm - 1.5*cm, 1.5*cm])
toc_t.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_GRAY, WHITE]),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("INNERGRID",     (0,0), (-1,-1), 0.25, MID_GRAY),
    ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
]))
story.append(toc_t)
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 1: EXAM OVERVIEW โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 1: Exam Overview & Pattern", "NHM CHO Recruitment 2026"))
story.append(sp(2))
story.append(Paragraph("About the CHO Exam", sec_heading))
story.append(Paragraph(
    "The Community Health Officer (CHO) exam is conducted by State Health Societies under the "
    "National Health Mission (NHM). CHOs manage Health and Wellness Centres (HWCs) at sub-centre "
    "level and serve as mid-level healthcare providers in rural and underserved areas.",
    body))
story.append(sp(2))
story.append(Paragraph("Eligibility", sec_heading))
story.append(simple_table(
    ["Qualification", "Details"],
    [
        ["Education", "GNM / B.Sc. Nursing / Post Basic B.Sc. Nursing"],
        ["Registration", "Valid registration with State Nursing Council"],
        ["Age", "18-40 years (relaxation for SC/ST/OBC as per state rules)"],
        ["Nationality", "Indian Citizen"],
    ],
    [4*cm, W - 3.6*cm - 4*cm]
))
story.append(sp(3))
story.append(Paragraph("State-Wise Exam Pattern", sec_heading))
story.append(simple_table(
    ["State", "Mode", "Questions", "Duration", "-ve Marking"],
    [
        ["Uttar Pradesh",  "CBT Online",  "100", "2 hrs",     "No"],
        ["Madhya Pradesh", "CBT Online",  "100", "2 hrs",     "Yes"],
        ["Rajasthan",      "OMR Offline", "150", "2.5 hrs",   "Yes"],
        ["Maharashtra",    "CBT Online",  "100", "2 hrs",     "No"],
        ["Bihar",          "OMR Offline", "100", "2 hrs",     "No"],
        ["Gujarat",        "CBT Online",  "100", "2 hrs",     "Yes"],
        ["Punjab",         "CBT Online",  "100", "2 hrs",     "No"],
        ["Haryana",        "OMR Offline", "120", "2 hrs",     "Yes"],
        ["Chhattisgarh",   "OMR Offline", "100", "2 hrs",     "No"],
        ["Odisha",         "CBT Online",  "100", "2 hrs",     "No"],
    ],
    [4*cm, 3*cm, 2.5*cm, 2.5*cm, 3*cm]
))
story.append(sp(3))
story.append(key_points_box([
    "Nursing subjects carry 50-80% of total marks in all states",
    "National Health Programmes are high-yield - always 15-20% weightage",
    "States like Bihar and Chhattisgarh have separate Public Health section (30%)",
    "Read the official state notification before the exam for last-minute changes",
]))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 2: ANATOMY & PHYSIOLOGY โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 2: Anatomy & Physiology"))
story.append(sp(2))
story.append(Paragraph("Cardiovascular System", sec_heading))
for line in [
    "Heart has 4 chambers: 2 atria (receiving) and 2 ventricles (pumping)",
    "Normal heart rate: 60-100 bpm; BP: 120/80 mmHg",
    "SA node (sinoatrial node) is the pacemaker of the heart - located in right atrium",
    "Cardiac output = Stroke Volume x Heart Rate (Normal CO = 4-6 L/min)",
    "Systole = contraction phase; Diastole = relaxation/filling phase",
    "Coronary arteries supply blood to the heart muscle itself",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Respiratory System", sec_heading))
for line in [
    "Normal respiratory rate (adults): 12-20 breaths/min",
    "Tidal volume = 500 mL; Total lung capacity = ~6 L",
    "Surfactant is produced by Type II pneumocytes - prevents alveolar collapse",
    "Oxygen is transported by hemoglobin (HbO2 = oxyhemoglobin)",
    "CO2 is mainly transported as bicarbonate ions (HCO3-) in plasma",
    "Breathing is controlled by the respiratory centre in the medulla oblongata",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Reproductive System", sec_heading))
for line in [
    "Menstrual cycle: 28 days (average); ovulation on Day 14",
    "Follicular phase (Day 1-14): estrogen dominant; Luteal phase (Day 14-28): progesterone dominant",
    "Corpus luteum secretes progesterone to maintain pregnancy",
    "Spermatogenesis occurs in seminiferous tubules of testes",
    "FSH stimulates follicle growth; LH triggers ovulation",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Other Key Systems", sec_heading))
story.append(simple_table(
    ["System", "Key Organ", "Main Function", "Important Facts"],
    [
        ["Nervous",   "Brain / Spinal cord",  "Control & coordination",  "Neuron = basic unit; CNS + PNS"],
        ["Endocrine", "Pituitary gland",       "Hormone secretion",       "Pituitary = master gland"],
        ["Urinary",   "Kidneys",               "Filtration & excretion",  "GFR = 125 mL/min (normal)"],
        ["Digestive", "Liver",                 "Digestion & metabolism",  "Liver = largest internal organ"],
        ["Immune",    "Lymph nodes / Spleen",  "Defence against pathogens","B-cells -> antibodies; T-cells -> cellular immunity"],
    ],
    [2.5*cm, 3.5*cm, 3.5*cm, 5.5*cm]
))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 3: COMMUNITY HEALTH NURSING โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 3: Community Health Nursing"))
story.append(sp(2))
story.append(Paragraph("Levels of Healthcare", sec_heading))
story.append(simple_table(
    ["Level", "Facility", "Services"],
    [
        ["Primary",   "Sub-centre / PHC / HWC",         "Preventive, promotive, basic curative care"],
        ["Secondary", "Community Health Centre (CHC)",   "Specialist care, 30-bed hospital"],
        ["Tertiary",  "District Hospital / Medical College", "Advanced specialist & super-specialist care"],
    ],
    [2.5*cm, 5.5*cm, 7*cm]
))
story.append(sp(2))
story.append(Paragraph("Epidemiology", sec_heading))
for line in [
    "Epidemiology: Study of distribution and determinants of health and disease in populations",
    "Endemic: Disease constantly present in a region (e.g., malaria in certain states)",
    "Epidemic: Disease affecting more people than expected in a region at a given time",
    "Pandemic: Epidemic that has spread worldwide (e.g., COVID-19)",
    "Attack Rate = No. of new cases / Population at risk x 100",
    "Incubation period: Time between exposure and appearance of symptoms",
    "Reservoir: Natural habitat of an infectious agent (humans, animals, environment)",
    "Modes of disease transmission: Direct contact, droplet, airborne, fecal-oral, vector-borne, fomite",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Disease Prevention Levels", sec_heading))
story.append(simple_table(
    ["Level", "Definition", "Examples"],
    [
        ["Primordial Prevention", "Prevent risk factors from emerging in society", "Health education, policy change"],
        ["Primary Prevention",   "Prevent disease before it occurs",              "Vaccination, sanitation, health promotion"],
        ["Secondary Prevention", "Early detection and prompt treatment",           "Screening, early diagnosis (PAP smear, mammography)"],
        ["Tertiary Prevention",  "Limit disability and promote rehabilitation",   "Physiotherapy, disability aids, support groups"],
    ],
    [4*cm, 5*cm, 6*cm]
))
story.append(sp(2))
story.append(Paragraph("Environmental Health", sec_heading))
for line in [
    "Safe drinking water standards (BIS): TDS < 500 mg/L; Turbidity < 1 NTU; pH 6.5-8.5",
    "Chlorination of water: Residual chlorine should be 0.2 mg/L at consumer end",
    "IMRb rule for water pollution: Check Coliform count (indicator of fecal contamination)",
    "Sewage disposal methods: Septic tank, oxidation pond, activated sludge process",
    "Air pollution: PM2.5 and PM10 are key pollutants; major cause of respiratory diseases",
    "Safe excreta disposal prevents diarrhea, typhoid, hepatitis A, cholera, polio",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 4: MCH โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 4: Maternal & Child Health (MCH)"))
story.append(sp(2))
story.append(Paragraph("Antenatal Care (ANC)", sec_heading))
story.append(info_box(
    "<b>Minimum ANC Visits (GoI):</b> At least 4 ANC visits - 1st visit before 12 weeks, "
    "2nd at 14-26 weeks, 3rd at 28-34 weeks, 4th at 36 weeks onwards."
))
story.append(sp(2))
for line in [
    "Weight gain in pregnancy: ~10-12 kg (underweight may gain up to 18 kg)",
    "BP >140/90 mmHg in pregnancy = Hypertension in Pregnancy (PIH)",
    "Pre-eclampsia: Hypertension + Proteinuria after 20 weeks",
    "Eclampsia: Pre-eclampsia + Convulsions - EMERGENCY, give MgSO4",
    "Iron + Folic acid: 100 tablets from 2nd trimester (180 days); IFA daily during pregnancy",
    "TT vaccination: 2 doses in first pregnancy (TT1 at first contact, TT2 after 4 weeks)",
    "Fundal height = weeks of gestation (after 20 weeks, 1 cm = 1 week)",
    "Fetal heart sounds audible from 20 weeks with stethoscope; Doppler from 10-12 weeks",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Normal Labour (Stages)", sec_heading))
story.append(simple_table(
    ["Stage", "Description", "Duration (Primi/Multi)"],
    [
        ["Stage 1", "Onset of labour to full cervical dilation (10 cm)", "12-16 hrs / 6-8 hrs"],
        ["Stage 2", "Full dilation to delivery of baby",                  "1-2 hrs / 30-60 min"],
        ["Stage 3", "Delivery of placenta (within 30 min)",               "15-30 min / 10-15 min"],
        ["Stage 4", "1 hour after placenta delivery - monitoring",        "60 min"],
    ],
    [2*cm, 7.5*cm, 5.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Immunization Schedule (UIP - Universal Immunization Programme)", sec_heading))
story.append(simple_table(
    ["Age", "Vaccines"],
    [
        ["At Birth",         "BCG, OPV-0 (birth dose), Hepatitis B (birth dose)"],
        ["6 weeks",          "OPV-1, IPV-1, Pentavalent-1 (DPT+HepB+Hib), Rotavirus-1, PCV-1"],
        ["10 weeks",         "OPV-2, Pentavalent-2, Rotavirus-2, PCV-2"],
        ["14 weeks",         "OPV-3, IPV-2, Pentavalent-3, Rotavirus-3, PCV-3"],
        ["9-12 months",      "MR-1, JE-1 (endemic areas), Vitamin A (1st dose)"],
        ["16-24 months",     "DPT Booster-1, OPV Booster, MR-2, JE-2, Vitamin A (2nd dose)"],
        ["5-6 years",        "DPT Booster-2"],
        ["10 & 16 years",    "Td (Tetanus-diphtheria)"],
        ["Pregnant women",   "Td-1, Td-2 (or Td booster)"],
    ],
    [3.5*cm, 11.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Child Health", sec_heading))
for line in [
    "IMNCI: Integrated Management of Neonatal and Childhood Illness - assesses danger signs",
    "IMNCI danger signs (child 2mo-5yr): Unable to drink, vomits everything, convulsions, lethargic/unconscious",
    "KMC (Kangaroo Mother Care): Skin-to-skin contact for preterm/LBW babies",
    "LBW (Low Birth Weight): <2500 g at birth; VLBW: <1500 g",
    "Growth monitoring: Weight, height, MUAC (Mid Upper Arm Circumference)",
    "MUAC: < 11.5 cm = SAM; 11.5-12.5 cm = MAM; > 12.5 cm = Normal (children 6-59 months)",
    "SAM treatment: RUTF (Ready to Use Therapeutic Food), NRC (Nutrition Rehabilitation Centre)",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 5: NATIONAL HEALTH PROGRAMMES โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 5: National Health Programmes (NHP)", "Highest Weightage Section"))
story.append(sp(2))
story.append(info_box(
    "<b>Exam Tip:</b> National Health Programmes carry 15-30% weightage in most state CHO exams. "
    "Memorize the programme names, target groups, and key interventions."
))
story.append(sp(2))
story.append(Paragraph("Reproductive & Child Health", sec_heading))
story.append(simple_table(
    ["Programme", "Full Form / Key Features"],
    [
        ["RMNCH+A",  "Reproductive, Maternal, Newborn, Child & Adolescent Health - umbrella programme"],
        ["JSY",      "Janani Suraksha Yojana - cash incentive for institutional delivery (LPS: Rs.1400; HPS: Rs.700)"],
        ["JSSK",     "Janani Shishu Suraksha Karyakram - free services for pregnant women and sick newborns"],
        ["PMMVY",    "Pradhan Mantri Matru Vandana Yojana - Rs.5000 maternity benefit for first live birth"],
        ["RBSK",     "Rashtriya Bal Swasthya Karyakram - screening for 4Ds (Defects, Diseases, Deficiencies, Developmental delays)"],
        ["SABLA",    "Scheme for Adolescent Girls (11-18 yrs) - nutrition, health, education"],
    ],
    [3*cm, 12*cm]
))
story.append(sp(2))
story.append(Paragraph("Disease Control Programmes", sec_heading))
story.append(simple_table(
    ["Programme", "Target Disease", "Key Strategy"],
    [
        ["NTEP (formerly RNTCP)", "Tuberculosis",           "Nikshay portal, DSTB/DRTB treatment, DOTS, 2025 elimination target"],
        ["NVBDCP",               "Malaria, Dengue, Filaria","IRS (indoor residual spraying), LLIN, vector control"],
        ["NLEP",                 "Leprosy",                 "MDT (Multi-Drug Therapy): PB-6 months, MB-12 months"],
        ["NACP",                 "HIV/AIDS",                "ICTC, ART centres, PPTCT, 100% condom programme"],
        ["NPCB",                 "Blindness",               "Cataract operations, school eye screening"],
        ["NPCDCS",               "NCDs (DM, HTN, Cancer)",  "Population-based screening at HWC, 30+ years"],
        ["NPHCE",                "Elderly health",          "8 geriatric centres, weekly OPD at district hospitals"],
        ["NMHP",                 "Mental Health",           "District Mental Health Programme (DMHP)"],
    ],
    [4.5*cm, 3.5*cm, 7*cm]
))
story.append(sp(2))
story.append(Paragraph("Ayushman Bharat - Health & Wellness Centres (HWCs)", sec_heading))
story.append(info_box(
    "<b>CHO's Role:</b> CHOs are the in-charge of Health and Wellness Centres (HWCs) at sub-centre level. "
    "HWCs provide Comprehensive Primary Health Care (CPHC) including 12 service packages."
))
story.append(sp(1))
story.append(Paragraph("12 Service Packages at HWC:", sub_heading))
services = [
    "Pregnancy care and child birth services",
    "Neonatal and infant health care",
    "Childhood and adolescent health care",
    "Family planning and contraceptive services",
    "Management of communicable diseases",
    "General OPD care (fever, diarrhea, minor injuries)",
    "Screening and management of NCDs (diabetes, hypertension)",
    "Basic oral health care",
    "Eye care and ENT services",
    "Mental health and substance abuse services",
    "Palliative and rehabilitative care",
    "Emergency and trauma care (first aid)",
]
for i, s in enumerate(services, 1):
    story.append(Paragraph(f"{i}. {s}", bullet_style))
story.append(sp(2))
story.append(Paragraph("Other Key Schemes", sec_heading))
story.append(simple_table(
    ["Scheme", "Benefit"],
    [
        ["PM-JAY (Ayushman Bharat)",    "Health cover Rs.5 lakh per family per year for 40 crore beneficiaries"],
        ["Mission Indradhanush",         "Immunization of children and pregnant women left out of UIP"],
        ["Poshan Abhiyan",               "Reduce stunting, wasting, anemia in children and women"],
        ["PM-POSHAN (MDM)",              "Mid-day meal for school children (formerly Mid Day Meal Scheme)"],
        ["ASHA",                         "Accredited Social Health Activist - link worker; 1 per 1000 rural population"],
        ["Pradhan Mantri Surakshit Matritva Abhiyan", "Free ANC on 9th of every month at govt facilities"],
    ],
    [5.5*cm, 9.5*cm]
))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 6: MEDICAL-SURGICAL NURSING โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 6: Medical-Surgical Nursing"))
story.append(sp(2))
story.append(Paragraph("Common Diseases & Nursing Management", sec_heading))
story.append(simple_table(
    ["Disease", "Key S/S", "Nursing Management"],
    [
        ["Tuberculosis (TB)",     "Persistent cough >2 wks, hemoptysis, night sweats, weight loss",
                                   "DOTS, sputum AFB, isolation, nutrition, medication compliance"],
        ["Diabetes Mellitus",     "Polyuria, polydipsia, polyphagia, hyperglycemia",
                                   "Blood sugar monitoring, insulin/OHA, diet, foot care"],
        ["Hypertension",          "Headache, dizziness, BP >140/90 mmHg",
                                   "Antihypertensives, low-salt diet, exercise, stress reduction"],
        ["Malaria",               "Cyclical fever with chills (P.vivax every 48 hrs, P.malariae 72 hrs)",
                                   "ACT (Artemisinin Combination Therapy), mosquito protection"],
        ["Dengue",                "High fever, rash, thrombocytopenia, joint/muscle pain",
                                   "IV fluids, platelet monitoring, no aspirin/NSAIDS, rest"],
        ["Diarrhea",              "Loose stools >3/day, dehydration",
                                   "ORS, zinc supplementation (14 days in children), hygiene"],
        ["Anemia",                "Pallor, fatigue, tachycardia, Hb <12 g/dL (women)",
                                   "Iron supplements, IFA, dietary advice, treat cause"],
    ],
    [3.5*cm, 4.5*cm, 7*cm]
))
story.append(sp(2))
story.append(Paragraph("Basic Pharmacology", sec_heading))
for line in [
    "Routes of drug administration: Oral (PO), IM (intramuscular), IV (intravenous), SC (subcutaneous), ID (intradermal), SL (sublingual), Rectal, Topical, Inhalation",
    "Half-life: Time for drug concentration to reduce by 50%; important for dosing intervals",
    "Analgesics: Paracetamol (fever/pain), Ibuprofen (NSAID, anti-inflammatory), Morphine (opioid)",
    "Antibiotics: Penicillin (gram+ve), Cotrimoxazole (UTI, PCP), Metronidazole (anaerobes, amoeba)",
    "ORS composition: Sodium 75 mEq/L, Glucose 75 mmol/L, Chloride 65 mEq/L, Potassium 20 mEq/L",
    "Injection sites: Deltoid (IM, vaccines), Anterolateral thigh (IM, children), Dorsogluteal (IM, adults)",
    "Cold chain: Vaccines stored at 2-8 degrees C; Polio vaccine at -20 degrees C (for freezing)",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 7: MIDWIFERY โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 7: Midwifery & Gynecology"))
story.append(sp(2))
story.append(Paragraph("Complications of Pregnancy", sec_heading))
story.append(simple_table(
    ["Condition", "Signs", "Management"],
    [
        ["Placenta Previa",    "Painless bright red PV bleeding",          "No PV exam, C-section, IV access"],
        ["Abruptio Placentae", "Painful dark PV bleeding, rigid uterus",   "Emergency delivery, treat shock"],
        ["Eclampsia",          "Seizures + HTN + Proteinuria",             "MgSO4, deliver baby, ICU care"],
        ["PPH",                "Blood loss >500 mL after delivery",        "Oxytocin, bimanual compression, refer"],
        ["Ectopic Pregnancy",  "Amenorrhea + abdominal pain + PV bleeding","Emergency surgery"],
    ],
    [3.5*cm, 5*cm, 6.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Family Planning Methods", sec_heading))
story.append(simple_table(
    ["Method", "Type", "Effectiveness / Notes"],
    [
        ["OCP (oral contraceptive pills)", "Hormonal",   "99%+ if taken correctly; start on Day 1-5 of cycle"],
        ["IUCD (Cu-T 380A)",               "Intrauterine","10-year protection; inserted by trained provider; best post-partum"],
        ["Male condom",                    "Barrier",     "85-98% effective; only method protecting against STIs"],
        ["DMPA (Depo-Provera)",            "Injectable",  "3-month injection; irregular bleeding common"],
        ["Tubectomy",                      "Permanent",   "Female sterilization; Minilap or laparoscopic"],
        ["Vasectomy",                      "Permanent",   "Male sterilization; simpler, safer than tubectomy"],
        ["Emergency Contraception",        "Hormonal",    "Levonorgestrel 1.5 mg within 72 hours of unprotected sex"],
    ],
    [5*cm, 2.5*cm, 7.5*cm]
))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 8 & 9: MENTAL HEALTH & NUTRITION โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 8: Mental Health Nursing"))
story.append(sp(2))
story.append(Paragraph("Key Concepts", sec_heading))
for line in [
    "NMHP: National Mental Health Programme - launched 1982; DMHP started 1996",
    "DMHP covers: Awareness, treatment at community level, training PHC staff",
    "Schizophrenia: Positive symptoms (hallucinations, delusions), Negative symptoms (flat affect, social withdrawal)",
    "Antipsychotics: Haloperidol, Chlorpromazine, Risperidone",
    "Depression: Persistent sadness >2 weeks; anhedonia, sleep/appetite changes",
    "Anxiety disorders: GAD, panic disorder, phobias - treated with CBT, SSRIs",
    "Suicide risk assessment: ASK (Ask, Suicidality, Keep safe) - always document and refer",
    "De-addiction: Nicotine replacement therapy, Bupropion; Alcohol withdrawal - Diazepam",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))

story.append(sp(3))
story.append(chapter_header("Chapter 9: Nutrition"))
story.append(sp(2))
story.append(Paragraph("Nutritional Deficiency Diseases", sec_heading))
story.append(simple_table(
    ["Nutrient", "Deficiency Disease", "Signs & Symptoms", "Source / Treatment"],
    [
        ["Vitamin A",  "Night blindness, Xerophthalmia",  "Bitot spots, corneal ulcer, keratomalacia", "Carrots, egg yolk; Vit A capsules"],
        ["Iron",       "Iron Deficiency Anemia",          "Pallor, koilonychia (spoon nails), fatigue",  "Green leafy veg; IFA supplements"],
        ["Iodine",     "Goitre, Cretinism",               "Enlarged thyroid, intellectual disability",   "Iodized salt (standard policy)"],
        ["Vitamin C",  "Scurvy",                          "Bleeding gums, perifollicular hemorrhages",  "Citrus fruits; Vit C supplements"],
        ["Vitamin D",  "Rickets (children), Osteomalacia","Bow legs, bone pain, tetany",                "Sunlight, fortified milk"],
        ["Vitamin B12","Megaloblastic anemia",            "Macrocytes, neurological symptoms",          "Animal products; B12 injections"],
        ["Protein",    "Kwashiorkor",                     "Edema, moon face, skin lesions",             "High protein diet, RUTF"],
        ["Protein + Energy", "Marasmus",                  "Severe wasting, skin & bones appearance",    "Graduated refeeding, RUTF"],
    ],
    [2.5*cm, 4*cm, 4.5*cm, 4*cm]
))
story.append(sp(2))
story.append(Paragraph("Dietary Requirements", sec_heading))
story.append(simple_table(
    ["Group", "Calories/day", "Protein/day", "Key Micronutrients"],
    [
        ["Adult man (moderate work)", "2875 kcal", "60 g",   "Iron 17 mg, Calcium 600 mg"],
        ["Adult woman (moderate work)","2225 kcal", "55 g",   "Iron 21 mg, Calcium 600 mg"],
        ["Pregnant woman",             "2425 kcal", "75 g",   "Iron 35 mg, Calcium 1200 mg, Folic acid 500 mcg"],
        ["Lactating woman (0-6 mo)",   "2950 kcal", "80 g",   "Iron 21 mg, Calcium 1200 mg"],
        ["Children (1-3 yr)",          "1240 kcal", "22 g",   "Iron 9 mg, Calcium 600 mg"],
    ],
    [5*cm, 3*cm, 3*cm, 4*cm]
))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 10 & 11 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 10: Microbiology & Infection Control"))
story.append(sp(2))
story.append(Paragraph("Sterilization & Disinfection", sec_heading))
story.append(simple_table(
    ["Method", "Type", "Used For", "Temperature / Details"],
    [
        ["Autoclave",            "Sterilization",   "Surgical instruments, dressings",   "121 deg C, 15 psi, 15-20 min"],
        ["Dry Heat Oven",        "Sterilization",   "Glassware, oil, powders",           "160 deg C for 1 hr / 170 deg C for 45 min"],
        ["Boiling",              "Disinfection",    "Utensils, rubber goods",            "100 deg C for 20 minutes"],
        ["Chemical (Glutaraldehyde 2%)", "High-level disinfection", "Endoscopes",       "20 min immersion"],
        ["Bleaching powder (1%)", "Disinfection",   "Floors, toilets, spills",           "Chlorine-releasing compound"],
        ["UV Radiation",         "Sterilization",   "OT air, laminar flow cabinets",     "254 nm wavelength"],
    ],
    [4*cm, 3.5*cm, 4*cm, 3.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Biomedical Waste Management (BMW Rules 2016)", sec_heading))
story.append(simple_table(
    ["Category / Bag Color", "Type of Waste", "Disposal"],
    [
        ["Yellow bag",         "Anatomical waste, soiled/blood-soaked, expired medicine", "Incineration / Deep burial"],
        ["Red bag",            "Recyclable contaminated waste (IV sets, syringes without needle)", "Autoclaving + shredding"],
        ["White (translucent) box", "Sharps (needles, blades, glass)", "Needle cutter; Autoclaving + puncture-proof pit"],
        ["Blue bag",           "Glassware, metallic implants",         "Autoclaving + shredding / recycling"],
    ],
    [4*cm, 5.5*cm, 5.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Universal Precautions (Standard Precautions)", sec_heading))
for line in [
    "Treat ALL blood and body fluids as potentially infectious regardless of known status",
    "Hand hygiene: WHO 5 Moments - before patient contact, before aseptic procedure, after body fluid exposure, after patient contact, after touching patient surroundings",
    "PPE: Gloves, gown, mask, eye protection as appropriate",
    "Safe injection practice: One needle, one syringe, one patient, one time",
    "Needle stick injury: Wash with soap & water, report, PEP (post-exposure prophylaxis) for HIV within 72 hours",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_style))

story.append(sp(3))
story.append(chapter_header("Chapter 11: Health Statistics & Demography"))
story.append(sp(2))
story.append(Paragraph("Important Health Indicators", sec_heading))
story.append(simple_table(
    ["Indicator", "Formula", "India (Current)"],
    [
        ["Birth Rate (CBR)",        "Live births per 1000 population per year",         "~18 (2024 est.)"],
        ["Death Rate (CDR)",        "Deaths per 1000 population per year",               "~6"],
        ["Infant Mortality Rate",   "Deaths < 1 year per 1000 live births",              "~28 (SRS 2020)"],
        ["Maternal Mortality Ratio","Maternal deaths per 1,00,000 live births",          "~97 (SRS 2018-20)"],
        ["Total Fertility Rate",    "Avg children per woman in reproductive life",        "~2.0 (SRS 2020)"],
        ["Neonatal Mortality Rate", "Deaths in 1st 28 days per 1000 live births",        "~20"],
        ["Under-5 Mortality Rate",  "Deaths < 5 years per 1000 live births",             "~32"],
        ["Life Expectancy at Birth","Expected years of life from birth",                  "~70 years"],
    ],
    [4.5*cm, 5.5*cm, 5*cm]
))
story.append(sp(2))
story.append(key_points_box([
    "Census of India: Conducted every 10 years; last was 2011 (2021 census postponed due to COVID)",
    "India's population: ~1.44 billion (2024 estimate); 2nd most populous country",
    "Sex ratio: 943 females per 1000 males (Census 2011)",
    "Literacy rate: 74.04% overall; Male 82.14%, Female 65.46% (Census 2011)",
    "NSS (National Sample Survey) and NFHS (National Family Health Survey) are key health data sources",
    "NFHS-5 (2019-21) is the most recent NFHS; provides state-level health data",
]))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 12: HIGH-PRIORITY & QUICK REVISION โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 12: High-Priority Topics & Quick Revision"))
story.append(sp(2))
story.append(info_box(
    "<b>These facts appear in almost every CHO exam. Revise them the day before your exam.</b>"
))
story.append(sp(2))
story.append(Paragraph("Must-Know Facts", sec_heading))
quick_facts = [
    "ASHA incentive for JSY: Rural LPS = Rs.600, Urban = Rs.400 (facilitator fee)",
    "Sub-centre norm: 1 per 5000 rural population (3000 in hilly/tribal areas)",
    "PHC norm: 1 per 30,000 rural population (20,000 in hilly/tribal areas)",
    "CHC norm: 1 per 1,20,000 population (4 PHCs feed 1 CHC)",
    "DOTS: Directly Observed Treatment Short-course - for TB",
    "BCG: Bacille Calmette-Guerin - vaccine for TB, given at birth intradermally (0.05 mL)",
    "ORS: 1 litre water + 6 tsp sugar + 1/2 tsp salt (home-made); packaged ORS also available",
    "APGAR score: Assessed at 1 and 5 minutes after birth; 7-10 = Normal; <7 = needs attention",
    "Colostrum: First milk, rich in IgA and antibodies; should be given within 1 hour of birth",
    "Exclusive breastfeeding: For first 6 months of life - no water, no other food",
    "Safe motherhood: 4 ANC, institutional delivery, skilled birth attendant, postnatal care",
    "Cold chain for vaccines: Vaccines stored 2-8 deg C; only OPV stored at -20 deg C",
    "Iodized salt: > 15 ppm at household level; >30 ppm at production level",
    "MUAC tape: Green (>13.5 cm normal), Yellow (11.5-13.5 MAM), Red (<11.5 SAM)",
    "Vitamin A megadose: 2 lakh IU to children 12-59 months every 6 months",
    "IFA supplementation: Weekly for adolescent girls (WIFS program); daily during pregnancy",
    "Hand washing with soap: 5 critical times - before eating, before feeding child, after toilet, after cleaning child, after handling animal/garbage",
    "BMI classification: <18.5 Underweight; 18.5-24.9 Normal; 25-29.9 Overweight; >/= 30 Obese",
]
for fact in quick_facts:
    story.append(Paragraph(f"โ€ข {fact}", bullet_style))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 13: MOCK QUESTIONS โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 13: Mock Questions (Practice MCQs)"))
story.append(sp(2))
mcqs = [
    ("1. CHO manages which type of facility under Ayushman Bharat?",
     ["A. Primary Health Centre", "B. Community Health Centre",
      "C. Health and Wellness Centre (HWC)", "D. District Hospital"],
     "C. Health and Wellness Centre (HWC)"),
    ("2. The APGAR score is assessed at which time intervals?",
     ["A. 2 and 10 minutes", "B. 1 and 5 minutes",
      "C. 5 and 10 minutes", "D. 1 and 10 minutes"],
     "B. 1 and 5 minutes"),
    ("3. What is the recommended storage temperature for OPV vaccine?",
     ["A. 2-8 degrees C", "B. 0 degrees C",
      "C. -20 degrees C", "D. Room temperature"],
     "C. -20 degrees C"),
    ("4. Eclampsia is defined as pre-eclampsia with:",
     ["A. Severe headache", "B. Proteinuria",
      "C. Convulsions", "D. Edema"],
     "C. Convulsions"),
    ("5. Which is the 'pacemaker' of the heart?",
     ["A. AV node", "B. SA node",
      "C. Bundle of His", "D. Purkinje fibers"],
     "B. SA node"),
    ("6. MUAC of 10.5 cm in a child aged 2 years indicates:",
     ["A. Normal nutrition", "B. Mild malnutrition",
      "C. Moderate Acute Malnutrition (MAM)", "D. Severe Acute Malnutrition (SAM)"],
     "D. Severe Acute Malnutrition (SAM)"),
    ("7. Cash benefit under PMMVY is:",
     ["A. Rs.3000", "B. Rs.5000",
      "C. Rs.6000", "D. Rs.1400"],
     "B. Rs.5000"),
    ("8. Bitot spots are a feature of deficiency of:",
     ["A. Vitamin D", "B. Vitamin C",
      "C. Vitamin A", "D. Vitamin B12"],
     "C. Vitamin A"),
    ("9. Which colour bag is used for sharps (needles) in BMW management?",
     ["A. Yellow", "B. Red",
      "C. White (translucent) box", "D. Blue"],
     "C. White (translucent) box"),
    ("10. The '5 Moments of Hand Hygiene' is recommended by:",
     ["A. ICMR", "B. NHM India",
      "C. WHO", "D. Ministry of Health"],
     "C. WHO"),
]
for q_text, options, answer in mcqs:
    story.append(Paragraph(f"<b>{q_text}</b>", make_style("QText",
        fontSize=10, fontName="Helvetica-Bold",
        textColor=DARK_BLUE, spaceBefore=8, spaceAfter=4)))
    for opt in options:
        color = ACCENT_GREEN if opt == answer else colors.HexColor("#424242")
        fn = "Helvetica-Bold" if opt == answer else "Helvetica"
        story.append(Paragraph(f"   {opt}", make_style(f"Opt{opt[0]}",
            fontSize=9.5, fontName=fn,
            textColor=color, leading=14, leftIndent=20)))
    story.append(Paragraph(f"<i>Correct: {answer}</i>", make_style("Ans",
        fontSize=9, fontName="Helvetica-Oblique",
        textColor=ACCENT_GREEN, leftIndent=20, spaceBefore=2, spaceAfter=6)))
story.append(PageBreak())

# โ”€โ”€โ”€ CHAPTER 14: STUDY PLAN โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 14: Study Plan & Exam Tips"))
story.append(sp(2))
story.append(Paragraph("30-Day Study Plan", sec_heading))
story.append(simple_table(
    ["Week", "Focus Topics", "Daily Target"],
    [
        ["Week 1\n(Days 1-7)",   "Anatomy & Physiology (all systems)\nMicrobiology basics",
                                  "3-4 hours study\n50 MCQs practice"],
        ["Week 2\n(Days 8-14)",  "Community Health Nursing\nEpidemiology\nEnvironmental Health",
                                  "3-4 hours study\n50 MCQs practice"],
        ["Week 3\n(Days 15-21)", "MCH, Immunization, Child Health\nNational Health Programmes",
                                  "4 hours study\n75 MCQs practice"],
        ["Week 4\n(Days 22-30)", "Medical-Surgical Nursing\nMidwifery, Mental Health, Nutrition\nFull mock tests",
                                  "Full mock test daily\nRevise weak areas"],
    ],
    [3*cm, 7*cm, 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Top Exam Day Tips", sec_heading))
tips = [
    "Read the question carefully - look for keywords like 'EXCEPT', 'NOT', 'MOST appropriate'",
    "For negative marking exams (RJ, MP, GJ, HR): DO NOT guess; skip if unsure",
    "Attempt high-confidence questions first; mark doubtful ones for review",
    "National Health Programme questions: focus on targets, cash amounts, and beneficiaries",
    "Carry original ID proof and admit card to the exam centre",
    "Revise immunization schedule, health indicators, and key statistics the morning of exam",
    "Time management: For 100 questions in 2 hours = 1.2 minutes per question",
]
for tip in tips:
    story.append(Paragraph(f"โ€ข {tip}", bullet_style))
story.append(sp(3))
story.append(key_points_box([
    "Best books: K.P. Nair (Textbook of Community Health Nursing), Marlow (Pediatric Nursing), Annamma Jacob (Clinical Nursing Procedures)",
    "Online resources: NHM official website, IGNOU CPHC material, previous year papers",
    "Join state-specific telegram groups for latest notifications and updates",
    "Practice at least 500-1000 MCQs before the exam",
], title="Recommended Resources"))
story.append(sp(3))
story.append(hr())
story.append(Paragraph(
    "Best of luck for your CHO exam! Regular revision and consistent practice of MCQs "
    "are the keys to success. Focus on NHPs, MCH, and Community Health Nursing - they form the core of the exam.",
    make_style("FinalNote", fontSize=10, fontName="Helvetica-Oblique",
        textColor=DARK_BLUE, alignment=TA_CENTER, spaceBefore=6)))
story.append(Paragraph(
    "CHO Exam Study Guide | NHM India | July 2026 Edition",
    footer_style))

# โ”€โ”€โ”€ BUILD โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /home/daytona/workspace/cho-study-guide && python generate_cho_guide.py 2>&1

Running Command

ls -lh /home/daytona/workspace/cho-study-guide/CHO_Exam_Study_Guide.pdf

Your CHO Exam Study Guide PDF is ready! Download it here:

CHO Exam Study Guide

PDF Document ยท PDF


What's inside (14 chapters):

#ChapterContent
1Exam Overview & PatternState-wise table (UP, MP, RJ, MH, Bihar, GJ, PB, HR, CG, OD), eligibility
2Anatomy & PhysiologyCVS, Respiratory, Reproductive, all key systems summary table
3Community Health NursingLevels of care, epidemiology terms, disease prevention levels, env. health
4Maternal & Child HealthANC visits, stages of labour, full UIP immunization schedule, IMNCI, MUAC
5National Health ProgrammesRMNCH+A, JSY, JSSK, PMMVY, RBSK, NTEP, NVBDCP, NLEP, NACP, NPCDCS, HWC 12 services
6Medical-Surgical NursingTB, Diabetes, Malaria, Dengue management table + pharmacology basics
7Midwifery & GynecologyPregnancy complications table, family planning methods
8Mental HealthNMHP, DMHP, common disorders, medications
9NutritionDeficiency diseases table, dietary requirements by age/group
10Microbiology & Infection ControlSterilization methods table, BMW color coding, universal precautions
11Health StatisticsAll key health indicators with current India values, census facts
12Quick Revision18 must-know exam facts in bullet form
13Mock MCQs10 practice questions with highlighted correct answers
14Study Plan & Tips30-day week-by-week plan, exam day strategy

Cho exam maharashtra study guidelines

Searching the Web

Maharashtra CHO exam syllabus 2025 2026 NHM AROGYA detailed topics

Reading Web Page

https://www.pw.live/nursing/exams/maharashtra-cho-syllabus

Writing File

~/cho-study-guide/generate_mh_cho_guide.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY

# โ”€โ”€โ”€ Colors โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
SAFFRON     = colors.HexColor("#FF6F00")   # Maharashtra saffron
DARK_SAFFRON= colors.HexColor("#E65100")
MAROON      = colors.HexColor("#880E4F")
DARK_BLUE   = colors.HexColor("#1B3A6B")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#E3F2FD")
GREEN       = colors.HexColor("#2E7D32")
LIGHT_GREEN = colors.HexColor("#E8F5E9")
ORANGE_LIGHT= colors.HexColor("#FFF3E0")
LIGHT_GRAY  = colors.HexColor("#F5F5F5")
MID_GRAY    = colors.HexColor("#BDBDBD")
WHITE       = colors.white
DARK_TEXT   = colors.HexColor("#212121")
TEAL        = colors.HexColor("#00695C")
PURPLE      = colors.HexColor("#4A148C")
PURPLE_LIGHT= colors.HexColor("#F3E5F5")

OUTPUT = "/home/daytona/workspace/cho-study-guide/MH_CHO_Exam_Study_Guide.pdf"

doc = SimpleDocTemplate(
    OUTPUT, pagesize=A4,
    rightMargin=1.8*cm, leftMargin=1.8*cm,
    topMargin=2*cm, bottomMargin=2*cm,
    title="Maharashtra CHO Exam Study Guide",
    author="NHM Maharashtra CHO Preparation",
)
W, H = A4
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

# Styles
body       = S("body", fontSize=10, fontName="Helvetica", textColor=DARK_TEXT, leading=15, spaceBefore=2, spaceAfter=2, alignment=TA_JUSTIFY)
bullet_s   = S("bullet_s", fontSize=10, fontName="Helvetica", textColor=DARK_TEXT, leading=14, leftIndent=14, spaceBefore=1, spaceAfter=1)
sec_h      = S("sec_h", fontSize=13, fontName="Helvetica-Bold", textColor=DARK_BLUE, spaceBefore=10, spaceAfter=4)
sub_h      = S("sub_h", fontSize=11, fontName="Helvetica-Bold", textColor=TEAL, spaceBefore=8, spaceAfter=3)
note_s     = S("note_s", fontSize=9.5, fontName="Helvetica-Oblique", textColor=colors.HexColor("#555555"), leading=13, leftIndent=10, spaceBefore=4, spaceAfter=4)
footer_s   = S("footer_s", fontSize=8, fontName="Helvetica", textColor=MID_GRAY, alignment=TA_CENTER)
cover_h    = S("cover_h", fontSize=30, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, spaceAfter=6)
cover_sub  = S("cover_sub", fontSize=15, fontName="Helvetica", textColor=colors.HexColor("#FFE0B2"), alignment=TA_CENTER, spaceAfter=4)
cover_info = S("cover_info", fontSize=11, fontName="Helvetica", textColor=WHITE, alignment=TA_CENTER, spaceAfter=3)

def chapter_header(title, subtitle=""):
    rows = [[Paragraph(title, S("ch_h", fontSize=17, fontName="Helvetica-Bold",
        textColor=WHITE, alignment=TA_LEFT, leftIndent=8))]]
    if subtitle:
        rows.append([Paragraph(subtitle, S("ch_s", fontSize=10, fontName="Helvetica",
            textColor=colors.HexColor("#FFE0B2"), alignment=TA_LEFT, leftIndent=8))])
    t = Table(rows, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), SAFFRON),
        ("TOPPADDING", (0,0), (-1,-1), 9), ("BOTTOMPADDING", (0,0), (-1,-1), 9),
        ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("BOX", (0,0), (-1,-1), 1.5, DARK_SAFFRON),
    ]))
    return t

def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE, bold_color=DARK_BLUE):
    t = Table([[Paragraph(text, S("ib", fontSize=10, fontName="Helvetica",
        textColor=bold_color, leading=14))]], colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("BOX", (0,0), (-1,-1), 1, border),
        ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 12),
    ]))
    return t

def key_box(points, title="Key Points", hdr_color=TEAL):
    rows = [[Paragraph(f"<b>{title}</b>", S("kph", fontSize=10.5,
        fontName="Helvetica-Bold", textColor=WHITE))]]
    for p in points:
        rows.append([Paragraph(f"โ€ข {p}", S("kp", fontSize=9.5,
            fontName="Helvetica", textColor=DARK_BLUE, leading=14))])
    t = Table(rows, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (0,0), hdr_color),
        ("BACKGROUND", (0,1), (-1,-1), LIGHT_GREEN),
        ("BOX", (0,0), (-1,-1), 1, hdr_color),
        ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10),
    ]))
    return t

def tbl(headers, rows, col_widths=None):
    cw = col_widths or ([(W - 3.6*cm) / len(headers)] * len(headers))
    data = [[Paragraph(f"<b>{h}</b>", S("th", fontSize=9.5,
        fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER)) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), S("td", fontSize=9,
            fontName="Helvetica", textColor=DARK_TEXT, leading=13)) for c in row])
    t = Table(data, colWidths=cw)
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_GRAY, WHITE]),
        ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
        ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ]))
    return t

def sp(n=1): return Spacer(1, n * 5)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=MID_GRAY, spaceAfter=4)

story = []

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• COVER PAGE โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
cover_rows = [
    [Paragraph("NHM Maharashtra", S("cl1", fontSize=13, fontName="Helvetica",
        textColor=colors.HexColor("#FFE0B2"), alignment=TA_CENTER))],
    [Paragraph("Community Health Officer", cover_h)],
    [Paragraph("(CHO) Exam", cover_h)],
    [Spacer(1, 6)],
    [HRFlowable(width="70%", thickness=2.5, color=WHITE, spaceAfter=8)],
    [Paragraph("Maharashtra-Specific Study Guide", cover_sub)],
    [Spacer(1, 12)],
    [Paragraph("Exam Pattern | Detailed Syllabus | Topic-wise Notes", cover_info)],
    [Paragraph("NHM Programs | Mock MCQs | 30-Day Plan | Exam Tips", cover_info)],
    [Spacer(1, 20)],
    [Paragraph("100 MCQs | No Negative Marking | Bilingual (Marathi + English)", S("ci2",
        fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER))],
    [Spacer(1, 20)],
    [Paragraph("July 2026 Edition", S("ed", fontSize=9, fontName="Helvetica",
        textColor=colors.HexColor("#FFCC80"), alignment=TA_CENTER))],
]
cover_t = Table(cover_rows, colWidths=[W - 3.6*cm])
cover_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), SAFFRON),
    ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING", (0,0), (-1,-1), 20), ("RIGHTPADDING", (0,0), (-1,-1), 20),
    ("BOX", (0,0), (-1,-1), 3, DARK_SAFFRON),
]))
story.append(Spacer(1, 50))
story.append(cover_t)
story.append(sp(3))
story.append(Paragraph(
    "For GNM / B.Sc. Nursing / Post Basic B.Sc. Nursing candidates applying to NHM Maharashtra",
    S("cf", fontSize=10, fontName="Helvetica-Oblique",
        textColor=colors.HexColor("#546E7A"), alignment=TA_CENTER)))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• TABLE OF CONTENTS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Table of Contents"))
story.append(sp(2))
toc_items = [
    ("1", "MH CHO Exam Pattern & Eligibility",          "3"),
    ("2", "Section 1: Health Subjects (60 Marks)",       "4"),
    ("3", "Child Health",                                "4"),
    ("4", "Maternal Health",                             "5"),
    ("5", "Adolescent Health",                           "6"),
    ("6", "Family Planning",                             "6"),
    ("7", "Communicable Diseases",                       "7"),
    ("8", "Non-Communicable Diseases (NCDs)",            "8"),
    ("9", "Nutrition",                                   "9"),
    ("10","Mental Health",                               "9"),
    ("11","Skill-Based, Referral & Emergency",          "10"),
    ("12","Elderly & Palliative Care + Oral/ENT",       "10"),
    ("13","Section 2: General Knowledge (20 Marks)",    "11"),
    ("14","Section 3: NHM Programs (20 Marks)",         "12"),
    ("15","High-Yield Facts & Quick Revision",          "14"),
    ("16","Maharashtra-Specific Facts",                 "14"),
    ("17","Mock MCQs (30 Questions)",                   "15"),
    ("18","30-Day Study Plan & Exam Tips",              "17"),
]
toc_data = [[
    Paragraph(f"<b>{no}.</b>", S("tn", fontSize=11, fontName="Helvetica-Bold", textColor=DARK_BLUE)),
    Paragraph(title, S("toc", fontSize=11, fontName="Helvetica", textColor=DARK_BLUE, leading=20, leftIndent=10)),
    Paragraph(f"<b>{pg}</b>", S("tp", fontSize=11, fontName="Helvetica-Bold",
        textColor=SAFFRON, alignment=TA_CENTER)),
] for no, title, pg in toc_items]
toc_t = Table(toc_data, colWidths=[1.2*cm, W - 3.6*cm - 1.2*cm - 1.5*cm, 1.5*cm])
toc_t.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_GRAY, WHITE]),
    ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
    ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
]))
story.append(toc_t)
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• CH 1: EXAM PATTERN โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Chapter 1: MH CHO Exam Pattern & Eligibility", "NHM Maharashtra 2026"))
story.append(sp(2))
story.append(tbl(
    ["Exam Component", "Details"],
    [
        ["Exam Type",         "Online Objective Test (Computer-Based Test - CBT)"],
        ["Total Questions",   "100 MCQs"],
        ["Total Marks",       "100 Marks (1 mark per question)"],
        ["Duration",          "2 Hours (120 minutes)"],
        ["Negative Marking",  "No negative marking"],
        ["Language",          "Bilingual - Marathi and English"],
        ["Qualifying Marks",  "Minimum 45 marks (45%)"],
        ["Syllabus Source",   "NHSRC Delhi recommended syllabus"],
        ["Exam Centre",       "Across Maharashtra districts"],
    ],
    [5*cm, 10*cm]
))
story.append(sp(3))
story.append(Paragraph("Mark Distribution by Section", sec_h))
story.append(tbl(
    ["Section", "Topics", "Questions", "Marks", "Weightage"],
    [
        ["Section 1", "Health Subjects (15 topic areas)", "60", "60", "60%"],
        ["Section 2", "General Knowledge",                "20", "20", "20%"],
        ["Section 3", "NHM Programme-related",            "20", "20", "20%"],
        ["",          "TOTAL",                            "100","100","100%"],
    ],
    [2.5*cm, 6.5*cm, 2.5*cm, 2*cm, 2.5*cm]
))
story.append(sp(3))
story.append(Paragraph("Eligibility Criteria", sec_h))
story.append(tbl(
    ["Criteria", "Details"],
    [
        ["Educational Qualification", "GNM (General Nursing & Midwifery) OR B.Sc. Nursing OR Post Basic B.Sc. Nursing"],
        ["Registration",              "Valid Maharashtra Nursing Council (MNC) registration"],
        ["Age Limit",                 "18-38 years (relaxation for SC/ST/OBC/VJNT/SBC as per Maharashtra rules)"],
        ["Domicile",                  "Maharashtra state domicile preferred"],
        ["Certificate",               "Certificate Programme in Community Health (CPHC by IGNOU) - mandatory before joining"],
    ],
    [5*cm, 10*cm]
))
story.append(sp(2))
story.append(key_box([
    "MOST important: No negative marking - attempt ALL 100 questions",
    "Bilingual paper (Marathi + English) - read in your comfortable language",
    "Minimum qualifying marks = 45 out of 100",
    "Merit list is based on written test score + educational qualifications",
    "CHO is posted at Health and Wellness Centres (HWCs) at sub-centre level",
], title="Important Exam Facts"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• CH 2-12: SECTION 1 HEALTH SUBJECTS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Section 1: Health Subjects (60 Marks)", "15 Topic Areas - Most Important Section"))
story.append(sp(2))
story.append(info_box(
    "<b>Exam Strategy:</b> Section 1 carries 60% of total marks. "
    "Master these 15 areas to secure at least 40-45 marks from this section alone."
))
story.append(sp(2))

# CHILD HEALTH
story.append(Paragraph("1. Child Health", sec_h))
story.append(tbl(
    ["Topic", "Key Points to Study"],
    [
        ["IMNCI",            "Integrated Management of Neonatal & Childhood Illness; danger signs; classification and treatment"],
        ["Newborn Care",     "KMC (Kangaroo Mother Care), resuscitation, thermoregulation, exclusive breastfeeding"],
        ["Growth & Development", "Milestones (motor, language, social); growth charts; MUAC tape; weight-for-height"],
        ["Malnutrition",     "SAM (MUAC <11.5 cm), MAM (11.5-12.5 cm); RUTF, NRC protocol, F75/F100"],
        ["Immunization",     "Full UIP schedule; cold chain; AEFI management"],
        ["Child Diseases",   "Diarrhea (ORS+Zinc), ARI (IMNCI classification), malaria, anemia, worm infestation"],
        ["Disability",       "Autism, ADHD, hearing loss, vision loss, cognitive impairment - RBSK screening"],
        ["Hematology",       "Leukemia basics, hypovolemic shock in children, HIV in children, cellular therapy basics"],
        ["Cardiomyopathy",   "Basic understanding of pediatric cardiac conditions"],
    ],
    [4*cm, 11*cm]
))
story.append(sp(2))
for line in [
    "APGAR score: Assessed at 1 and 5 min; 7-10 = Normal; 4-6 = Moderate distress; 0-3 = Severe distress",
    "LBW (Low Birth Weight) = <2500 g; VLBW = <1500 g; ELBW = <1000 g",
    "Exclusive breastfeeding for 6 months; complementary feeding starts at 6 months",
    "Colostrum must be given within 1 hour of birth - rich in IgA, antibodies, nutrients",
    "Vitamin A megadose: 1 lakh IU at 9 months; 2 lakh IU every 6 months from 12-59 months",
    "RBSK (Rashtriya Bal Swasthya Karyakram): Screens for 4Ds - Defects, Deficiencies, Diseases, Developmental delays",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(3))

# MATERNAL HEALTH
story.append(Paragraph("2. Maternal Health", sec_h))
story.append(tbl(
    ["Topic", "Key Points"],
    [
        ["ANC (Antenatal Care)",      "Minimum 4 ANC visits; first before 12 weeks; H&W, BP, weight, fundal height, fetal heartbeat"],
        ["Postnatal Care",            "PNC at 48 hrs, 1 week, 6 weeks; check for PPH, infection, breastfeeding, contraception"],
        ["Hypertension in Pregnancy", "PIH: BP >140/90; Pre-eclampsia: HTN + Proteinuria; Eclampsia: + Convulsions (give MgSO4)"],
        ["Anemia in Pregnancy",       "Hb <11 g/dL in pregnancy; IFA 180 tablets during pregnancy + 180 days postpartum"],
        ["HIV in Pregnancy",          "PPTCT (Prevention of Parent-to-Child Transmission); ART to mother and neonate"],
        ["Malaria in Pregnancy",      "High-risk group; use IPTp (Intermittent Preventive Treatment in Pregnancy) where applicable"],
        ["Preterm Birth",             "<37 weeks gestation; risk factors: PIH, multiple pregnancy, infection; KMC for preterm babies"],
        ["PPH",                       "Postpartum Hemorrhage: >500 mL blood loss; Oxytocin 10 IU IM immediately after birth (AMTSL)"],
        ["Perinatal Mental Health",   "Postpartum depression; baby blues; psychosis - refer to psychiatry if needed"],
        ["Respectful Maternity Care", "Rights of pregnant woman; no verbal/physical abuse in facilities"],
        ["Family Planning linkage",   "Counsel during ANC/PNC about spacing methods (IUCD, pills) and permanent methods"],
    ],
    [4.5*cm, 10.5*cm]
))
story.append(sp(2))
story.append(info_box(
    "<b>AMTSL (Active Management of 3rd Stage of Labour):</b> Oxytocin 10 IU IM within 1 min of delivery + "
    "Controlled cord traction + Uterine massage. This prevents PPH. CHOs must know this protocol."
))
story.append(PageBreak())

# ADOLESCENT HEALTH
story.append(Paragraph("3. Adolescent Health", sec_h))
for line in [
    "Adolescent age group: 10-19 years (WHO); SABLA scheme targets 11-18 year girls",
    "RKSK (Rashtriya Kishor Swasthya Karyakram): Comprehensive adolescent health programme",
    "Adolescent-Friendly Health Services (AFHS): 1 day/week dedicated session at HWC",
    "WIFS (Weekly Iron and Folic Acid Supplementation): Weekly IFA for adolescent girls AND boys (6-19 yrs in school)",
    "Menstrual hygiene: Kishori Shakti Yojana, free sanitary napkins in schools",
    "ARSH clinics: Adolescent Reproductive and Sexual Health - confidential services",
    "Key issues: Anemia, malnutrition, early marriage, teen pregnancy, substance abuse, mental health",
    "Menarche counselling, reproductive health education part of HWC responsibilities",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(3))

# FAMILY PLANNING
story.append(Paragraph("4. Family Planning", sec_h))
story.append(tbl(
    ["Method", "Type", "Key Facts for Exam"],
    [
        ["Copper-T (Cu-T 380A)", "Intrauterine",   "10-year protection; insert within 48 hrs or after 6 weeks postpartum; CHO can insert"],
        ["OCP",                  "Hormonal (oral)", "Start Day 1-5 of cycle; 99%+ effective; not for lactating women in first 6 months"],
        ["POP (Progestin-only)", "Hormonal (oral)", "Safe for breastfeeding mothers; start at 6 weeks postpartum"],
        ["DMPA",                 "Injectable",      "Every 3 months; Depo-Provera; irregular bleeding common; delay return to fertility"],
        ["Male condom",          "Barrier",         "Only method protecting against STIs; 85-98% effective; promote in NACP"],
        ["Tubectomy (Minilap)",  "Permanent",       "Female sterilization; <48 hrs or >6 weeks after delivery; Laparoscopic also used"],
        ["Vasectomy",            "Permanent",       "Male sterilization; simpler, safer, less complication than tubectomy"],
        ["Emergency Pill",       "Post-coital",     "Levonorgestrel 1.5 mg within 72 hours; Ella (ulipristal) within 5 days"],
    ],
    [3.5*cm, 2.5*cm, 9*cm]
))
story.append(sp(2))
story.append(key_box([
    "CHO's role: Counsel on all family planning methods, provide condoms, OCPs, DMPA",
    "CHOs CAN insert IUCD after training - this is a high-yield topic",
    "Family planning targets: India aims for TFR of 2.1 (replacement level)",
    "MTP (Medical Termination of Pregnancy): Legal up to 20 weeks; 24 weeks for special cases",
], title="CHO and Family Planning"))
story.append(PageBreak())

# COMMUNICABLE DISEASES
story.append(Paragraph("5. Communicable Diseases", sec_h))
story.append(tbl(
    ["Disease", "Causative Agent", "Mode of Transmission", "Key Management / Prevention"],
    [
        ["Tuberculosis (TB)",    "Mycobacterium tuberculosis", "Airborne (droplet nuclei)",
         "NTEP: DOTS, Nikshay portal, DSTB 6 months, DRTB 18-24 months; Nikshay Poshan Yojana"],
        ["Malaria",              "Plasmodium (P.vivax, P.falciparum)", "Anopheles mosquito bite",
         "Rapid diagnostic test (RDT), ACT treatment, LLIN, IRS, case notification"],
        ["Dengue",               "Dengue virus (Aedes mosquito)", "Aedes aegypti mosquito",
         "No specific treatment; IV fluids, platelet monitoring; no aspirin; vector control"],
        ["HIV/AIDS",             "Human Immunodeficiency Virus", "Sexual contact, blood, mother-to-child",
         "ICTC testing, ART, PPTCT, condom promotion; CD4 count monitoring"],
        ["Cholera",              "Vibrio cholerae", "Fecal-oral (contaminated water/food)",
         "ORS, IV fluids; Doxycycline; safe water, sanitation"],
        ["Typhoid",              "Salmonella typhi", "Fecal-oral (contaminated food/water)",
         "Ciprofloxacin/Azithromycin; Widal test; typhoid vaccine; hygiene"],
        ["Hepatitis B",          "HBV (virus)", "Blood, sexual, mother-to-child",
         "Hepatitis B vaccine (3 doses); birth dose essential; HBsAg screening in ANC"],
        ["Leprosy",              "Mycobacterium leprae", "Prolonged contact (respiratory)",
         "MDT: PB-6 months (2 drugs), MB-12 months (3 drugs); NLEP programme"],
        ["Filariasis",           "Wuchereria bancrofti", "Culex mosquito bite",
         "MDA (Mass Drug Administration): DEC + Albendazole annually in endemic districts"],
        ["Kala-azar (VL)",       "Leishmania donovani", "Sandfly bite",
         "Liposomal Amphotericin B; IRS; elimination target for Maharashtra"],
    ],
    [3*cm, 3.5*cm, 3.5*cm, 5*cm]
))
story.append(PageBreak())

# NCDs
story.append(Paragraph("6. Non-Communicable Diseases (NCDs)", sec_h))
story.append(info_box(
    "<b>NPCDCS:</b> National Programme for Prevention and Control of Cancer, Diabetes, CVD and Stroke - "
    "population-based screening at HWC for all persons 30 years and above."
))
story.append(sp(2))
story.append(tbl(
    ["NCD", "Screening Criteria / Risk Factors", "CHO's Role at HWC"],
    [
        ["Hypertension",     "BP >140/90 mmHg; risk: obesity, salt, smoking, family history",
         "Measure BP; initiate treatment; refer uncontrolled HTN; lifestyle counselling"],
        ["Type 2 Diabetes",  "FPG >126 mg/dL; PPBG >200 mg/dL; risk: obesity, family history",
         "Blood glucose testing; refer for diagnosis; metformin initiation; diet counselling"],
        ["Oral Cancer",      "Tobacco use, smoking; white/red patches in mouth",
         "Mouth examination; visual inspection; refer suspicious lesions"],
        ["Cervical Cancer",  "HPV infection; multiple partners; VIA/VILI screening",
         "VIA (Visual Inspection with Acetic Acid) screening; refer positive cases"],
        ["Breast Cancer",    "CBE (Clinical Breast Examination); age >30, family history",
         "Teach BSE (Breast Self-Examination); perform CBE; refer lumps"],
        ["COPD/Asthma",      "Smoking, air pollution, occupational exposure",
         "Spirometry referral; inhalers; avoid triggers; refer for diagnosis"],
    ],
    [2.5*cm, 5.5*cm, 7*cm]
))
story.append(sp(2))
for line in [
    "HWC screens ALL adults 30+ years for HTN, Diabetes, and 3 cancers (oral, cervical, breast)",
    "VIA screening: Apply 5% acetic acid on cervix; acetowhite = positive = refer for colposcopy",
    "CBE: Clinical Breast Examination - to be performed for all women 30-60 years at HWC",
    "NPCDCS: Covers Cancer, Diabetes, CVD, Stroke; screening + treatment + IEC",
    "Tobacco cessation: NicoRette (NRT), Bupropion, Varenicline; motivational counselling",
    "NTCP (National Tobacco Control Programme): 85% pictorial warning on tobacco products",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(PageBreak())

# NUTRITION
story.append(Paragraph("7. Nutrition", sec_h))
story.append(tbl(
    ["Deficiency", "Disease", "Signs", "Prevention / Treatment"],
    [
        ["Vitamin A", "Night blindness / Xerophthalmia", "Bitot spots, corneal ulcer, keratomalacia", "Vit A capsule (megadose); diet - carrots, eggs"],
        ["Iron",      "Iron Deficiency Anemia (IDA)",    "Pallor, koilonychia, fatigue, Hb <12 g/dL", "IFA tablets; green leafy vegetables; WIFS"],
        ["Iodine",    "Goitre / Cretinism",              "Enlarged thyroid; intellectual disability",  "Iodized salt; testing by iodine kit"],
        ["Vitamin D", "Rickets / Osteomalacia",          "Bow legs, bone pain, tetany, delayed dentition", "Sunlight; Vit D supplementation"],
        ["Vitamin C", "Scurvy",                          "Bleeding gums, perifollicular haemorrhage",  "Citrus fruits, amla; Vit C supplements"],
        ["Protein",   "Kwashiorkor",                     "Edema, pot belly, moon face, skin lesions",  "RUTF, high-protein diet, NRC admission"],
        ["Protein+Energy", "Marasmus",                   "Severe wasting, loose skin, thin, alert",    "RUTF, F75, F100, graduated refeeding"],
        ["Zinc",      "Growth retardation, diarrhea",    "Poor wound healing, taste changes",          "Zinc 10-20 mg for 14 days in diarrhea"],
    ],
    [2.5*cm, 3*cm, 3.5*cm, 6*cm]
))
story.append(sp(2))
story.append(key_box([
    "Poshan Abhiyan (PM POSHAN Mission): Reduce stunting, wasting, LBW, and anemia",
    "POSHAN Targets: Reduce stunting by 2%/yr; wasting by 2%/yr; anemia in children 6-59 months by 3%/yr",
    "MUAC (Mid-Upper Arm Circumference): <11.5 cm = SAM (Red); 11.5-12.5 = MAM (Yellow); >12.5 = Normal (Green)",
    "Anganwadi worker provides: Supplementary nutrition, growth monitoring, pre-school education, nutrition counselling",
    "Breastfeeding: Initiate within 1 hour; exclusive for 6 months; continue up to 2 years with complementary food",
], title="Nutrition Key Points"))
story.append(PageBreak())

# MENTAL HEALTH
story.append(Paragraph("8. Mental Health", sec_h))
story.append(tbl(
    ["Condition", "Key Features", "CHO's Role"],
    [
        ["Depression",       "Persistent sadness >2 wks, anhedonia, sleep/appetite changes, suicidal thoughts",
         "Screen with PHQ-9; basic counselling; refer to DMHP; ensure medication compliance"],
        ["Anxiety Disorders","Excessive worry, palpitations, sweating, avoidance behavior",
         "Psychoeducation; relaxation techniques; refer for CBT/medications"],
        ["Schizophrenia",    "Hallucinations, delusions, disorganized speech, negative symptoms",
         "Ensure antipsychotic compliance; family counselling; refer to DMHP"],
        ["Substance Abuse",  "Alcohol, tobacco, drugs; CAGE questionnaire for alcohol screening",
         "Brief intervention; de-addiction referral; NRT for tobacco; naltrexone for alcohol"],
        ["Postpartum Depression", "Sadness, crying, inability to care for baby after childbirth",
         "Screen at PNC visits (Edinburgh Postnatal Depression Scale); refer psychiatry"],
        ["Suicide",          "Suicidal ideation, plan, attempt; risk factors: depression, substance abuse",
         "Direct assessment (SLAP); safety planning; emergency referral; no means access"],
    ],
    [3.5*cm, 4.5*cm, 7*cm]
))
story.append(sp(2))
for line in [
    "NMHP: National Mental Health Programme - launched 1982; DMHP (District Mental Health Programme) from 1996",
    "DMHP services: Outpatient, inpatient, day care, emergency, community outreach, rehabilitation",
    "MANODARPAN: GoI initiative for mental health support for students",
    "iCALL: TISS-run helpline for mental health (9152987821)",
    "Mental Health Act 2017: Rights-based; decriminalized suicide; advance directives; supported decision-making",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(PageBreak())

# SKILL-BASED / REFERRAL / EMERGENCY
story.append(Paragraph("9. Skill-Based Questions, Referral Linkage & Emergency Services", sec_h))
story.append(Paragraph("Skills the CHO Must Know:", sub_h))
for line in [
    "IUCD insertion and removal",
    "Subcutaneous and intramuscular injections; IV cannulation (basic)",
    "Wound dressing and bandaging",
    "Blood pressure measurement (manual sphygmomanometer)",
    "Blood glucose measurement (glucometer)",
    "Haemoglobin estimation (Sahli's method / digital Hb meter)",
    "Urine dipstick testing for glucose, protein, ketones",
    "VIA (Visual Inspection with Acetic Acid) for cervical cancer screening",
    "Basic obstetric emergencies: PPH management, eclampsia - MgSO4 protocol",
    "Nebulization; oxygen administration; bag-valve-mask resuscitation",
    "Basic Life Support (BLS) / CPR",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Referral Linkage System:", sub_h))
story.append(tbl(
    ["Condition / Situation", "Refer To", "Transport"],
    [
        ["SAM (Severe Acute Malnutrition)",     "NRC (Nutrition Rehabilitation Centre) at CHC/DH", "108 Ambulance if critical"],
        ["High-risk pregnancy",                  "PHC / CHC with specialist",                      "108 Ambulance"],
        ["Eclampsia (seizures)",                 "FRU (First Referral Unit) / District Hospital",  "Emergency - 108 immediately"],
        ["TB (suspected)",                       "PHC for sputum AFB / CBNAAT",                    "Routine referral"],
        ["Mental illness (acute)",               "DMHP / District Hospital psychiatry",            "With family support"],
        ["Stroke / Heart attack",                "District Hospital / Cath lab",                   "108 Ambulance - URGENT"],
        ["Child with danger signs (IMNCI)",      "PHC / CHC OPD",                                  "108 or private vehicle"],
    ],
    [5*cm, 5.5*cm, 4.5*cm]
))
story.append(sp(3))

# ELDERLY & PALLIATIVE / ORAL & ENT
story.append(Paragraph("10. Elderly & Palliative Care + Oral / ENT Health", sec_h))
story.append(tbl(
    ["Area", "Key Topics"],
    [
        ["Elderly Health (NPHCE)", "National Programme for Health Care of Elderly; geriatric OPD weekly at PHC; 4 regional geriatric centres; home visits for bedridden elderly"],
        ["Palliative Care",        "End-of-life care; pain management (WHO analgesic ladder - Step 1 non-opioid, Step 2 weak opioid, Step 3 strong opioid); opioid policy; psychosocial support"],
        ["Oral Health",            "Daily brushing x2; dental caries prevention; fluoride toothpaste; tobacco cessation; school dental screening"],
        ["ENT Health",             "Ear wax removal; basic audiometry; tympanometry referral; tonsillitis; sinusitis; nasal polyps - refer to specialist"],
        ["Eye Health",             "Cataract screening (BCR - Cataract Blindness Rate); school eye screening; referral to eye camp/hospital"],
    ],
    [3.5*cm, 11.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• SECTION 2: GK โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Section 2: General Knowledge (20 Marks)", "Current Affairs, Maharashtra & India"))
story.append(sp(2))
story.append(tbl(
    ["Sub-area", "Key Topics to Revise"],
    [
        ["Maharashtra Geography",      "Districts (36), divisions (6 + Mumbai city); Vidarbha, Marathwada, Konkan; major rivers (Godavari, Krishna, Tapi)"],
        ["Maharashtra History",        "Chhatrapati Shivaji Maharaj; Maratha Empire; Babasaheb Ambedkar; Maharashtra formation (1 May 1960)"],
        ["Maharashtra Government",     "Current CM, Governor; state legislature structure; Zila Parishad, Gram Panchayat structure"],
        ["Health Infrastructure MH",   "NHM Maharashtra; MAHATMA JYOTIBA PHULE JAN AROGYA YOJANA (state health insurance scheme)"],
        ["India - General",            "Constitution basics; Fundamental Rights; DPSP; Preamble; Articles related to health (Article 47, 21)"],
        ["Current Affairs",            "Recent government schemes, Union Budget health allocations, WHO updates, new vaccines/drugs approved in India"],
        ["Science & Technology",       "Basic biology, chemistry; recent space missions (ISRO); health technology (digital health ID - ABHA)"],
        ["Computer Knowledge",         "MS Office basics, internet, email, health data entry; e-Sanjeevani (telemedicine platform for HWC)"],
    ],
    [4.5*cm, 10.5*cm]
))
story.append(sp(2))
story.append(key_box([
    "Mahatma Jyotiba Phule Jan Arogya Yojana (MJPJAY): Maharashtra's state health insurance; Rs.1.5 lakh per family per year; includes PM-JAY",
    "Maharashtra state capital: Mumbai (commercial), Nagpur (winter session of legislature)",
    "Maharashtra has 36 districts, 6 revenue divisions",
    "e-Sanjeevani: National telemedicine platform - used at HWCs; teleconsultation with specialists",
    "ABHA (Ayushman Bharat Health Account): 14-digit digital health ID for every Indian citizen",
    "Article 47 (DPSP): State's duty to raise nutritional levels and improve public health",
], title="High-Priority GK for MH CHO Exam"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• SECTION 3: NHM PROGRAMS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Section 3: NHM Programme-Related (20 Marks)", "Highest Return-on-Investment Section"))
story.append(sp(2))
story.append(info_box(
    "<b>Exam Tip:</b> 20 questions directly from NHM programmes. Memorize full forms, "
    "cash incentives, targets, and the CHO's specific role in each programme."
))
story.append(sp(2))
story.append(Paragraph("Ayushman Bharat", sec_h))
story.append(tbl(
    ["Programme", "Full Form / Description", "Key Facts"],
    [
        ["PM-JAY",  "Pradhan Mantri Jan Arogya Yojana",
         "Rs.5 lakh health cover per family per year; 40 crore beneficiaries; cashless at empanelled hospitals"],
        ["HWC",     "Health and Wellness Centre",
         "Sub-centre upgraded to HWC; CHO is in-charge; 12 service packages; 1.5 lakh HWCs planned by 2022 (Ayushman Bharat)"],
        ["CPHC",    "Comprehensive Primary Health Care",
         "Delivered at HWC; preventive + promotive + curative + rehabilitative; e-Sanjeevani teleconsultation"],
    ],
    [2*cm, 5*cm, 8*cm]
))
story.append(sp(2))
story.append(Paragraph("RMNCH+A Programmes", sec_h))
story.append(tbl(
    ["Scheme", "Full Form", "Benefit / Key Feature"],
    [
        ["JSY",    "Janani Suraksha Yojana",
         "Cash incentive for institutional delivery: LPS = Rs.1400 rural, Rs.1000 urban; HPS = Rs.700 rural, Rs.600 urban; ASHA gets Rs.600 LPS, Rs.400 HPS"],
        ["JSSK",   "Janani Shishu Suraksha Karyakram",
         "Free: delivery, C-section, drugs, diagnostics, diet, blood transfusion, transport for pregnant women and sick newborns up to 30 days"],
        ["PMMVY",  "Pradhan Mantri Matru Vandana Yojana",
         "Rs.5000 maternity benefit in 3 installments for first live birth; eligible: registered pregnancy, ANC check-up, immunization of child"],
        ["KSSY",   "Kshay Sampoorna Suraksha Yojana",
         "Maharashtra-specific TB scheme; nutritional support + additional incentives; Rs.500/month to TB patients (in addition to Nikshay)"],
        ["RBSK",   "Rashtriya Bal Swasthya Karyakram",
         "Mobile Health Teams screen 0-18 years at schools and Anganwadis for 4Ds; 30 conditions; refer to DEIC"],
        ["SABLA",  "Scheme for Adolescent Girls / KISHORI",
         "For 11-18 year girls; nutrition, IFA, health check-up, life skills, vocational training through AWC"],
        ["PMSMA",  "Pradhan Mantri Surakshit Matritva Abhiyan",
         "Free ANC on 9th of every month at government facilities; specialist examination (OBG, physician)"],
    ],
    [2*cm, 5*cm, 8*cm]
))
story.append(sp(2))
story.append(Paragraph("Disease Control & Other Key Programmes", sec_h))
story.append(tbl(
    ["Programme", "Full Form", "Target / Strategy"],
    [
        ["NTEP",    "National Tuberculosis Elimination Programme",
         "Elimination by 2025; DSTB: 6-month DOTS; DRTB: 18-24 months; Nikshay Poshan Yojana Rs.500/month; Universal Drug Sensitivity Testing"],
        ["NVBDCP",  "National Vector Borne Disease Control Programme",
         "Controls malaria, dengue, chikungunya, filariasis, kala-azar, JE; IRS + LLIN + larval source management"],
        ["NLEP",    "National Leprosy Eradication Programme",
         "MDT-PB 6 months; MDT-MB 12 months; Grade-2 disability target <1/million; SPARSH Leprosy Awareness Campaign"],
        ["NACP",    "National AIDS Control Programme",
         "100% condom programme; ICTC (Integrated Counselling & Testing); ART; PPTCT; targeted interventions for HRGs"],
        ["NPCDCS",  "National Programme for Cancer, Diabetes, CVD, Stroke",
         "Population screening 30+ yrs; Lifestyle modification; drugs at HWC; NCD Clinic at CHC/DH"],
        ["NMHP",    "National Mental Health Programme",
         "DMHP in all districts; treatment gap reduction; community awareness; integration at PHC/HWC level"],
        ["NPHCE",   "National Programme for Health Care of Elderly",
         "Geriatric OPD weekly at PHC; 8 regional centres; home visits; day care for elderly"],
        ["NPCB+VI", "National Programme for Control of Blindness + Visual Impairment",
         "Cataract operations; school eye screening; corneal transplantation; trachoma control"],
    ],
    [2*cm, 5.5*cm, 7.5*cm]
))
story.append(sp(2))
story.append(Paragraph("ASHA and ANM - Key Roles", sec_h))
story.append(tbl(
    ["Worker", "Selection & Norm", "Key Responsibilities"],
    [
        ["ASHA",
         "Village-level; 1 per 1000 rural population; selected by Gram Sabha; minimum 8th class pass",
         "Community mobilization; accompany pregnant women for ANC, delivery; JSY incentive; household surveys; IFA distribution; newborn home visits"],
        ["ANM (Auxiliary Nurse Midwife)",
         "Sub-centre level; covers 5000 population; 2-year ANM course",
         "ANC, immunization, family planning, deliveries at sub-centre; disease surveillance; health education"],
        ["CHO",
         "Health and Wellness Centre; GNM/BSc Nursing; 6-month CPHC certificate",
         "Manages HWC; 12 service packages; teleconsultation via e-Sanjeevani; NPCDCS screening; supervisory role over ASHA/ANM"],
    ],
    [2*cm, 4.5*cm, 8.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• QUICK REVISION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Chapter 15-16: High-Yield Facts & Maharashtra Specifics"))
story.append(sp(2))
story.append(Paragraph("Must-Know Numbers & Facts", sec_h))
facts = [
    "Sub-centre: 1 per 5000 rural (3000 hilly/tribal); 1 ANM + 1 MPW",
    "PHC: 1 per 30,000 rural (20,000 hilly/tribal); 1 Medical Officer + supporting staff",
    "CHC: 1 per 1,20,000 population; 30 beds; 4 specialists (Surgeon, OBG, Physician, Pediatrician)",
    "ASHA: 1 per 1000 rural; incentive-based; not salary; JSY incentive Rs.600 (LPS rural)",
    "BCG: Intradermal, 0.05 mL (<1 yr), right upper arm; BCG scar = proof of vaccination",
    "OPV 0 (Birth dose): Within 24 hours of birth; prevents vaccine-derived poliovirus",
    "Pentavalent vaccine: DPT + HepB + Hib (5-in-1); given at 6, 10, 14 weeks",
    "Measles-Rubella (MR): Replaced measles vaccine in UIP from 2017",
    "PCV (Pneumococcal Conjugate Vaccine): Prevents bacterial pneumonia; in UIP since 2017",
    "Rotavirus vaccine: Prevents severe diarrhea in children; 3 doses at 6, 10, 14 weeks",
    "IPV (Inactivated Polio Vaccine): Added to UIP; 2 doses (6 and 14 weeks) along with OPV",
    "Cold chain: Vaccines at 2-8 deg C (ILR/Deep Freezer); only OPV at -20 deg C",
    "ORS composition: Na 75, Cl 65, Glucose 75, K 20, Citrate 10 mmol/L; osmolarity 245 mOsm/L",
    "WHO 5 Moments of Hand Hygiene: Before patient contact, before aseptic procedure, after body fluid exposure, after patient contact, after touching patient environment",
    "BMI: <18.5 = Underweight; 18.5-24.9 = Normal; 25.0-29.9 = Overweight; >/= 30.0 = Obese",
    "Malaria RDT: HRP2 antigen test for P.falciparum; pLDH for P.vivax; result in 20 min",
    "IMNCI danger signs (2 months-5 years): Unable to drink/breastfeed, vomits everything, convulsions, lethargic/unconscious",
    "VIA positive = acetowhite area on cervix after applying 5% acetic acid; refer to colposcopy",
    "Integrated Disease Surveillance Programme (IDSP): Weekly reporting; S (syndromic), P (probable), L (lab confirmed)",
]
for f in facts:
    story.append(Paragraph(f"โ€ข {f}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Maharashtra-Specific Facts", sec_h))
mh_facts = [
    "MJPJAY: Mahatma Jyotiba Phule Jan Arogya Yojana - Rs.1.5 lakh per family; 972 procedures covered; statewide",
    "Maharashtra Arogya Vibhag (Health Dept) + NHM Maharashtra jointly recruit CHOs",
    "Rajiv Gandhi Jeevandayee Arogya Yojana (RGJAY): Predecessor to MJPJAY",
    "Maharashtra has 36 districts; Mumbai, Pune, Nagpur are major urban health hubs",
    "Thane, Palghar tribal areas: Higher malnutrition; more NRC centres; ITDP support",
    "Tribal districts (Gadchiroli, Nandurbar): Higher IMR, MMR - priority focus of NHM Maharashtra",
    "Pune (NIV): National Institute of Virology - for disease surveillance and outbreak investigation",
    "Maharashtra state language: Marathi; exam paper is bilingual (Marathi + English)",
    "Health Minister, Maharashtra: check latest before exam",
    "SNDT Women's University, Pune: Prominent B.Sc. Nursing institution in Maharashtra",
]
for f in mh_facts:
    story.append(Paragraph(f"โ€ข {f}", bullet_s))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• MOCK MCQs โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Chapter 17: Mock MCQs (30 Practice Questions)", "Maharashtra CHO Pattern"))
story.append(sp(2))
mcqs = [
    ("1. The MH CHO exam is conducted in which language(s)?",
     ["A. English only", "B. Hindi and English", "C. Marathi and English", "D. Marathi only"],
     "C. Marathi and English"),
    ("2. What is the minimum qualifying marks for MH CHO exam?",
     ["A. 35 marks", "B. 40 marks", "C. 45 marks", "D. 50 marks"],
     "C. 45 marks"),
    ("3. How many questions are from NHM programme-related topics?",
     ["A. 10", "B. 15", "C. 20", "D. 25"],
     "C. 20"),
    ("4. Which scheme provides Rs.5000 maternity benefit for first live birth?",
     ["A. JSY", "B. JSSK", "C. PMMVY", "D. SABLA"],
     "C. PMMVY"),
    ("5. MJPJAY provides health coverage of how much per family per year in Maharashtra?",
     ["A. Rs.50,000", "B. Rs.1 lakh", "C. Rs.1.5 lakh", "D. Rs.5 lakh"],
     "C. Rs.1.5 lakh"),
    ("6. CHO manages which facility under Ayushman Bharat?",
     ["A. Primary Health Centre", "B. Community Health Centre",
      "C. Health and Wellness Centre", "D. District Hospital"],
     "C. Health and Wellness Centre"),
    ("7. MUAC of 10.8 cm in a 2-year-old child indicates:",
     ["A. Normal", "B. Mild malnutrition", "C. MAM", "D. SAM"],
     "D. SAM"),
    ("8. Which vaccine is stored at -20 degrees Celsius?",
     ["A. BCG", "B. DPT", "C. OPV", "D. Hepatitis B"],
     "C. OPV"),
    ("9. What is given first in AMTSL to prevent PPH?",
     ["A. Misoprostol orally", "B. Ergometrine IV", "C. Oxytocin 10 IU IM within 1 minute of delivery", "D. Manual removal of placenta"],
     "C. Oxytocin 10 IU IM within 1 minute of delivery"),
    ("10. Which programme screens 30+ year adults for NCDs at HWC?",
     ["A. NRHM", "B. NPCDCS", "C. SABLA", "D. NMHP"],
     "B. NPCDCS"),
    ("11. VIA stands for:",
     ["A. Visual Inspection of Anus", "B. Visual Inspection with Acetic Acid",
      "C. Vital Index Assessment", "D. Vaginal Inspection Approach"],
     "B. Visual Inspection with Acetic Acid"),
    ("12. WIFS programme provides weekly IFA to:",
     ["A. Pregnant women only", "B. Children under 5",
      "C. Adolescent boys and girls in schools", "D. Lactating mothers"],
     "C. Adolescent boys and girls in schools"),
    ("13. National Tuberculosis Elimination Programme targets elimination by which year?",
     ["A. 2022", "B. 2025", "C. 2030", "D. 2035"],
     "B. 2025"),
    ("14. Nikshay Poshan Yojana provides TB patient with:",
     ["A. Rs.300/month", "B. Rs.500/month", "C. Rs.1000/month", "D. Rs.1500/month"],
     "B. Rs.500/month"),
    ("15. RBSK screens children for '4Ds' - which is NOT one of the 4Ds?",
     ["A. Defects at birth", "B. Deficiencies", "C. Deformities in adults", "D. Developmental delays"],
     "C. Deformities in adults"),
    ("16. Exclusive breastfeeding is recommended for:",
     ["A. 3 months", "B. 4 months", "C. 6 months", "D. 12 months"],
     "C. 6 months"),
    ("17. 'Bitot spots' are associated with deficiency of which vitamin?",
     ["A. Vitamin D", "B. Vitamin B12", "C. Vitamin C", "D. Vitamin A"],
     "D. Vitamin A"),
    ("18. ASHA receives how much incentive for facilitating institutional delivery in rural LPS state?",
     ["A. Rs.200", "B. Rs.400", "C. Rs.600", "D. Rs.1000"],
     "C. Rs.600"),
    ("19. Which telemedicine platform is used at Health and Wellness Centres?",
     ["A. Aarogya Setu", "B. e-Sanjeevani", "C. CoWIN", "D. NHA portal"],
     "B. e-Sanjeevani"),
    ("20. MDT for Multibacillary (MB) Leprosy is given for how long?",
     ["A. 3 months", "B. 6 months", "C. 9 months", "D. 12 months"],
     "D. 12 months"),
    ("21. The APGAR score is normally assessed at:",
     ["A. 1 and 10 minutes", "B. 1 and 5 minutes", "C. 2 and 5 minutes", "D. 5 and 10 minutes"],
     "B. 1 and 5 minutes"),
    ("22. Which article of the Indian Constitution deals with state duty to improve public health?",
     ["A. Article 21", "B. Article 32", "C. Article 47", "D. Article 51A"],
     "C. Article 47"),
    ("23. Colostrum should ideally be given to newborn within:",
     ["A. 30 minutes of birth", "B. 1 hour of birth", "C. 2 hours of birth", "D. 6 hours of birth"],
     "B. 1 hour of birth"),
    ("24. Emergency contraceptive pill (Levonorgestrel 1.5 mg) is effective up to:",
     ["A. 24 hours", "B. 48 hours", "C. 72 hours", "D. 5 days"],
     "C. 72 hours"),
    ("25. WHO 5 Moments of Hand Hygiene does NOT include:",
     ["A. Before patient contact", "B. After touching patient surroundings",
      "C. Before going to toilet", "D. Before aseptic procedure"],
     "C. Before going to toilet"),
    ("26. In Maharashtra, how many districts are there?",
     ["A. 30", "B. 33", "C. 36", "D. 38"],
     "C. 36"),
    ("27. DMHP (District Mental Health Programme) was launched in year:",
     ["A. 1982", "B. 1990", "C. 1996", "D. 2005"],
     "C. 1996"),
    ("28. Which colour bag is used for sharps (needles) in BMW management?",
     ["A. Yellow", "B. Red", "C. White/translucent", "D. Blue"],
     "C. White/translucent"),
    ("29. Pentavalent vaccine is a combination of how many antigens?",
     ["A. 3", "B. 4", "C. 5", "D. 6"],
     "C. 5"),
    ("30. The 12 service packages at HWC are provided under which programme?",
     ["A. RNTCP", "B. NPCDCS", "C. Ayushman Bharat - CPHC", "D. NVBDCP"],
     "C. Ayushman Bharat - CPHC"),
]

for q_text, options, answer in mcqs:
    story.append(KeepTogether([
        Paragraph(f"<b>{q_text}</b>", S("qt", fontSize=10, fontName="Helvetica-Bold",
            textColor=DARK_BLUE, spaceBefore=8, spaceAfter=3)),
        *[Paragraph(f"  {opt}", S(f"opt{opt[0]}", fontSize=9.5,
            fontName="Helvetica-Bold" if opt == answer else "Helvetica",
            textColor=GREEN if opt == answer else DARK_TEXT,
            leading=13, leftIndent=18)) for opt in options],
        Paragraph(f"<i>Ans: {answer}</i>", S("ans", fontSize=9,
            fontName="Helvetica-Oblique", textColor=GREEN,
            leftIndent=18, spaceBefore=2, spaceAfter=5)),
    ]))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• STUDY PLAN โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(chapter_header("Chapter 18: 30-Day Study Plan & Exam Tips"))
story.append(sp(2))
story.append(tbl(
    ["Week", "Focus Topics", "Daily Target", "Resources"],
    [
        ["Week 1\n(Days 1-7)",
         "Section 1: Child Health, Maternal Health, Adolescent Health\nBasics of human body (anatomy & physiology)",
         "3-4 hrs study\n50 MCQs daily\nRevise notes",
         "K.P. Nair Community Health Nursing\nIGNOU CPHC material"],
        ["Week 2\n(Days 8-14)",
         "Family Planning, Communicable Diseases\nNCDs, Nutrition, Mental Health",
         "4 hrs study\n75 MCQs daily\nFlash cards",
         "Marlow Pediatric Nursing\nNHM programme guidelines"],
        ["Week 3\n(Days 15-21)",
         "Section 3: All NHM Programmes (deep revision)\nSkill-based, Emergency, Referral",
         "4 hrs study\n50 NHP MCQs\nPrevious year papers",
         "NHM India official website\nPrevious year MH CHO papers"],
        ["Week 4\n(Days 22-30)",
         "Section 2: GK, Maharashtra facts, current affairs\nFull mock tests, weak area revision",
         "2 full mock tests/day\nRevise highlighted notes\nTimed practice",
         "Newspaper (Hindu/Loksatta)\nMH Govt. health website"],
    ],
    [2.5*cm, 5.5*cm, 3.5*cm, 4.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Top 10 Exam Day Tips", sec_h))
tips = [
    "Arrive 30 minutes early with Admit Card + 1 original photo ID (Aadhar, passport, etc.)",
    "No negative marking - ATTEMPT ALL 100 QUESTIONS; never leave blank",
    "Read question TWICE before selecting an answer; watch for 'EXCEPT', 'NOT', 'MOST appropriate'",
    "High-confidence questions first (Section 1 - nursing); then Section 3 (NHM) then Section 2 (GK)",
    "Time per question: 120 min / 100 Q = 1.2 minutes max; don't spend more than 2 min on any question",
    "For NHM questions: focus on cash amounts, full forms, target groups",
    "For disease management questions: default CHO action is REFER if serious; treat if within CHO scope",
    "Choose Marathi version of paper if more comfortable - saves reading time",
    "Flag doubtful questions and revisit - don't change answers unless you're very sure",
    "Stay hydrated; carry water and a small snack for the break (if any); avoid stress",
]
for i, tip in enumerate(tips, 1):
    story.append(Paragraph(f"{i}. {tip}", bullet_s))
story.append(sp(3))
story.append(key_box([
    "Best books: K.P. Nair (Community Health Nursing), Annamma Jacob (Clinical Nursing Procedures), Marlow (Pediatric Nursing)",
    "NHM programmes: Read official MoHFW / NHM.gov.in pages for correct incentive amounts",
    "Previous year MH CHO papers: Best single resource; available on Telegram and NPrep / Toppersexam",
    "Practice at least 500-1000 MCQs total before exam day",
    "Join MH CHO WhatsApp/Telegram groups for last-minute notifications and NHM Maharashtra updates",
], title="Recommended Resources for MH CHO"))
story.append(sp(3))
story.append(hr())
story.append(Paragraph(
    "Yash Mila! All the best for your Maharashtra CHO exam. "
    "Consistent daily practice, revision of NHM programmes, and mastery of CHO-specific skills "
    "will ensure your success in the NHM Maharashtra CHO recruitment.",
    S("fn", fontSize=10, fontName="Helvetica-Oblique",
        textColor=DARK_BLUE, alignment=TA_CENTER, spaceBefore=6)))
story.append(sp(2))
story.append(Paragraph(
    "MH CHO Exam Study Guide | NHM Maharashtra | July 2026 Edition",
    footer_s))

# โ”€โ”€โ”€ BUILD โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /home/daytona/workspace/cho-study-guide && python generate_mh_cho_guide.py 2>โ€ฆ

Running Command

ls -lh /home/daytona/workspace/cho-study-guide/MH_CHO_Exam_Study_Guide.pdf

Your Maharashtra CHO Exam Study Guide PDF is ready! Download it here:

MH CHO Exam Study Guide

PDF Document ยท PDF


What's inside (Maharashtra-specific, 18 chapters):

SectionContent
Exam PatternCBT online, 100 MCQs, 100 marks, 2 hours, no negative marking, bilingual (Marathi+English), min. 45 marks to qualify
Mark SplitSection 1: Health Subjects 60 marks - Section 2: GK 20 marks - Section 3: NHM Programs 20 marks
Section 1 (60 marks)All 15 topic areas: Child Health, Maternal Health, Adolescent Health, Family Planning, Communicable Diseases, NCDs, Nutrition, Mental Health, Skill-based, Referral, Emergency, Elderly, Palliative, Oral, ENT
Section 2 (20 marks)Maharashtra geography, history, MJPJAY, Indian Constitution (Articles 21, 47), current affairs, e-Sanjeevani, ABHA
Section 3 (20 marks)All NHM programs with full forms, cash incentives, targets - JSY, JSSK, PMMVY, NTEP, NVBDCP, NACP, NPCDCS, HWC 12 packages, ASHA/ANM/CHO roles
Maharashtra FactsMJPJAY, 36 districts, tribal areas (Gadchiroli, Nandurbar), Pune NIV, state-specific schemes
Mock MCQs30 Maharashtra-pattern practice questions with highlighted correct answers
Study Plan30-day week-wise plan with resources, daily targets, and 10 exam-day tips

Public health topics for maharastra cho exam

Searching the Web

Maharashtra CHO exam public health topics epidemiology community health nursing syllabus 2025 2026

Finding Sources
Reading File
Finding Sources
Reading Web Page

https://nprep.in/blogs/mh-cho-exam-pattern-and-detailed-syllโ€ฆ

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Excellent - Park's textbook content is loading perfectly. Now I have everything I need for a comprehensive, textbook-backed answer.

Public Health Topics for Maharashtra CHO Exam

Source: Park's Textbook of Preventive & Social Medicine (standard reference) + NHM Maharashtra syllabus

๐Ÿ“Œ Where Public Health Fits in the Exam

SectionAreaMarks
Section 1 - Topic 1Basic Concepts of Public Health~8-10 Qs
Section 1 - Topics 7 & 8Communicable + Non-Communicable Diseases~10-12 Qs
Section 3NHM Programmes (public health delivery)20 Qs
Public Health concepts (directly + indirectly) influence 40-45 out of 100 marks. This is the single most important area.

๐Ÿ”ท TOPIC 1: Basic Concepts of Public Health

Definition & Scope

  • Public Health (C.E.A. Winslow, 1920): "The science and art of preventing disease, prolonging life, and promoting physical health and efficiency through organized community effort"
  • Deals with community as a whole, not individuals
  • Three pillars: Health promotion, Disease prevention, Cure & rehabilitation

Concept of Health (WHO Definition)

  • "A state of complete physical, mental and social well-being, and not merely the absence of disease or infirmity"
  • Added dimension: Spiritual health (newer WHO concept)
  • Positive health = optimal functioning, not just absence of disease
  • Determinants of health: Biological, behavioural, socioeconomic, environmental, healthcare services

Levels of Prevention (Leavell & Clark)

LevelDefinitionExamples
PrimordialPrevent risk factors from emerging in societyPolicies against tobacco ads, junk food
PrimaryPrevent disease before it occursVaccination, hand washing, safe water
SecondaryEarly detection + prompt treatmentScreening (VIA, CBE, BP check), DOTS
TertiaryLimit disability, promote rehabilitationPhysiotherapy, prosthetics, support groups

Natural History of Disease

  • Pre-pathogenesis phase: Before disease begins; interaction of host-agent-environment (Ecological Triad)
  • Pathogenesis phase: After disease begins - early, advanced, outcome
  • Iceberg phenomenon: Only tip (clinically apparent cases) is visible; majority are subclinical - important for surveillance

Ecological Triad (Epidemiological Triad)

  • Host: Human being (age, sex, immunity, nutrition, genetics)
  • Agent: Biological (bacteria, virus, parasite), physical, chemical, nutritional
  • Environment: Physical, biological, psychosocial
  • Disease occurs when equilibrium is disturbed

Health Indicators (Key Numbers for Exam)

IndicatorFormulaIndia Value
Crude Birth Rate (CBR)Live births / 1000 population/year~18
Crude Death Rate (CDR)Deaths / 1000 population/year~6
Infant Mortality Rate (IMR)Deaths <1 yr / 1000 live births~28 (SRS 2020)
Maternal Mortality Ratio (MMR)Maternal deaths / 1,00,000 live births~97 (SRS 2018-20)
Total Fertility Rate (TFR)Avg. children per woman~2.0
Under-5 Mortality Rate (U5MR)Deaths <5 yrs / 1000 live births~32
Life Expectancy at BirthYears from birth~70 years
Neonatal Mortality RateDeaths <28 days / 1000 live births~20

๐Ÿ”ท TOPIC 2: Primary Health Care (PHC)

  • Alma-Ata Declaration, 1978 (USSR) - key exam fact
  • PHC defined as: "Essential health care... made universally accessible to individuals and families... at a cost the community can afford"
  • Goal: Health for All by 2000 AD (HFA - World Health Assembly 1977)
  • 8 components of PHC (Alma-Ata):
    1. Health education on prevailing problems
    2. Safe water and basic sanitation
    3. Maternal and child health including family planning
    4. Immunization against major infectious diseases
    5. Prevention and control of endemic diseases
    6. Appropriate treatment of common diseases and injuries
    7. Provision of essential drugs
    8. Promotion of proper nutrition

India's Health Infrastructure (PHC Norms)

FacilityPopulation Norm (Plain)Population Norm (Hilly/Tribal)Staff
Sub-centre5,0003,0001 ANM + 1 MPW
PHC30,00020,0001 MO + 14 staff
CHC1,20,00080,0004 specialists, 30 beds
District HospitalPer district-Full specialist team
HWC (Ayushman Bharat)Upgraded sub-centre-CHO is in-charge

๐Ÿ”ท TOPIC 3: Epidemiology

Core Definitions

  • Epidemiology: Study of distribution and determinants of health-related states in populations, and application of this study to control disease (Last, 1988)
  • Incidence: New cases in a defined population over a defined time period
  • Prevalence: All existing cases (new + old) at a point in time
  • Point prevalence: At one specific moment
  • Period prevalence: Over a period of time
  • Relationship: Prevalence = Incidence ร— Duration of disease

Disease Terminology

TermDefinitionExample
EndemicConstant presence of disease in a regionMalaria in certain tribal areas
EpidemicMore cases than normally expectedDengue outbreak in Mumbai
PandemicEpidemic spread worldwideCOVID-19 (2020)
SporadicIrregular, occasional cases, no clear patternRabies
OutbreakTwo or more cases linked in time and placeFood poisoning at a wedding

Epidemiological Rates

RateFormula
Attack rateNew cases / Population at risk ร— 100
Case Fatality Rate (CFR)Deaths due to disease / Cases of disease ร— 100
Proportional Mortality RateDeaths due to a cause / Total deaths ร— 100
Crude Death RateTotal deaths / Mid-year population ร— 1000

Types of Epidemiological Studies

Study TypeDirectionUseExample
Cross-sectional (survey)SnapshotPrevalence; hypothesis generationNFHS
Case-controlRetrospectiveRare diseases; identify risk factorsSmoking and lung cancer
CohortProspectiveIncidence; causationFramingham Heart Study
RCTExperimentalTest interventionsVaccine trials
EcologicalPopulation levelCorrelationAir pollution & COPD rates

Incubation Periods (High-Yield for Exam)

DiseaseIncubation Period
Cholera6 hours - 5 days
Typhoid3 - 60 days (usually 10-14 days)
Malaria (P.vivax)12-17 days
Malaria (P.falciparum)7-14 days
Dengue3-14 days
Hepatitis A15-50 days
HIVWeeks to years (acute: 2-4 weeks)
TuberculosisWeeks to years (primary: 4-12 weeks)

๐Ÿ”ท TOPIC 4: Disease Prevention & Control

Chain of Infection (Breaking the Chain)

  1. Agent (pathogen) โ†’ 2. Reservoir โ†’ 3. Portal of exit โ†’ 4. Mode of transmission โ†’ 5. Portal of entry โ†’ 6. Susceptible host
  • CHO's role: Break the chain at the weakest link

Modes of Transmission

ModeExamplesPrevention
AirborneTB, measles, varicellaVentilation, masks, isolation
DropletInfluenza, COVID-19Distance >1 m, mask
Fecal-oralCholera, typhoid, hepatitis A, polioSafe water, sanitation, hand washing
Vector-borneMalaria (Anopheles), dengue (Aedes), filaria (Culex)Mosquito control, LLIN, IRS
Contact (direct)Leprosy, STIs, impetigoPersonal hygiene, condoms
Blood-borneHIV, HBV, HCVSafe injection, blood screening
Vertical (mother-to-child)HIV, HBV, syphilisPPTCT, ART, screening
ZoonoticRabies, leptospirosis, brucellosisAnimal control, protective gear

Control Measures

  • Source control: Treatment of cases, isolation, quarantine, disinfection
  • Transmission control: Safe water, food safety, vector control, safe injection
  • Host protection: Immunization, chemoprophylaxis, nutrition, health education

๐Ÿ”ท TOPIC 5: Environmental Health

Safe Drinking Water (BIS Standards)

ParameterPermissible Limit
TDS (Total Dissolved Solids)< 500 mg/L
Turbidity< 1 NTU
pH6.5 - 8.5
Residual chlorine (at consumer end)0.2 mg/L
Coliform countZero (indicator of fecal contamination)
  • Chlorination of water: Most common and cost-effective disinfection method
  • Bleaching powder: 0.5 mg/L residual chlorine for well disinfection
  • Defluoridation: Nalgonda technique (when fluoride > 1.5 mg/L causes dental/skeletal fluorosis)

Air Pollution

  • PM2.5: Particles <2.5 microns - penetrate deep into alveoli - most dangerous
  • PM10: Particles <10 microns - affects respiratory tract
  • Sources: Vehicles, industries, crop burning, indoor cooking fuels
  • Effects: Asthma, COPD, lung cancer, cardiovascular disease
  • SAFAR (System of Air Quality and Weather Forecasting): India's air quality monitoring

Sanitation

  • Open defecation = fecal-oral disease transmission (cholera, typhoid, hepatitis A, polio, diarrhea)
  • Swachh Bharat Mission (SBM): ODF (Open Defecation Free) - India declared ODF in 2019
  • IHHL (Individual Household Latrines): Twin-pit pour flush recommended
  • Safe excreta disposal: Septic tank, oxidation pond, activated sludge process

Solid Waste & BMW

BMW Bag ColorWaste TypeDisposal
YellowAnatomical waste, soiled items, expired drugsIncineration / deep burial
RedContaminated recyclables (IV sets, syringes without needle)Autoclaving + shredding
White (translucent)Sharps (needles, blades, glass)Needle cutter + puncture-proof pit
BlueGlassware, metallic body implantsAutoclaving + shredding

๐Ÿ”ท TOPIC 6: Health Promotion & Education

Health Education

  • Process of helping people change unhealthy behaviours voluntarily
  • Methods: IEC (Information, Education, Communication); BCC (Behaviour Change Communication)
  • Levels: Individual (counselling), Group (health talks), Mass (radio, TV, posters)

Ottawa Charter (1986) - 5 Action Areas for Health Promotion

  1. Build healthy public policy
  2. Create supportive environments
  3. Strengthen community action
  4. Develop personal skills
  5. Reorient health services

Behaviour Change Models (Important for CHO)

  • KAP (Knowledge - Attitude - Practice): Assess before any health education
  • Health Belief Model: People change if they perceive threat + believe action is beneficial
  • Stages of Change (Transtheoretical): Pre-contemplation โ†’ Contemplation โ†’ Preparation โ†’ Action โ†’ Maintenance

๐Ÿ”ท TOPIC 7: Infection Control & Sterilization

Sterilization vs. Disinfection

MethodTypeTemperature / DetailsUse
AutoclaveSterilization121ยฐC, 15 psi, 15-20 minSurgical instruments, dressings
Dry heat ovenSterilization160ยฐC for 1 hr / 170ยฐC 45 minGlassware, oils, powders
BoilingDisinfection100ยฐC for 20 minUtensils, rubber items
2% GlutaraldehydeHigh-level disinfection20 min immersionEndoscopes
1% Bleach / NaOClDisinfectionChlorine-releasingFloors, spillage, toilets
UV radiation (254 nm)SterilizationOT air, laminar flowOT, labs

Standard Precautions

  • Treat ALL blood and body fluids as infectious
  • WHO 5 Moments of Hand Hygiene: Before patient contact / before aseptic procedure / after body fluid exposure / after patient contact / after touching patient surroundings
  • Needlestick injury: Wash with soap + water โ†’ report โ†’ HIV PEP within 72 hours

๐Ÿ”ท TOPIC 8: Surveillance & Vital Statistics

Disease Surveillance

  • IDSP (Integrated Disease Surveillance Programme): Weekly reporting by states
    • S form = Syndromic (community workers)
    • P form = Probable (PHC level)
    • L form = Lab confirmed (district level)
  • iGOTcovid, NIKSHAY (TB), HMIS (Health Management Info System): Digital reporting

Census & Demographic Data

SourceContent
Census (every 10 years)Population, literacy, sex ratio, housing
SRS (Sample Registration System)Vital events (births, deaths, IMR, MMR)
NFHS (National Family Health Survey)Health, nutrition, family planning indicators
NSSO / NSSMorbidity, health expenditure surveys
  • Census 2011 (last available): Population ~121 crore; Sex ratio 943/1000; Literacy 74.04%
  • NFHS-5 (2019-21): Most recent; provides state-level data for Maharashtra

๐Ÿ”ท TOPIC 9: Community Health Nursing (CHO-Specific Public Health)

Health Visiting & Home Visits

  • Priority for home visits: High-risk pregnancies, newborns <28 days, SAM children, elderly bedridden, chronic disease patients (TB, DM, HTN)
  • ASHA Home Visit Schedule for Newborns: Day 1, 3, 7, 14, 28 (5 visits in first month)

School Health Programme

  • Components: Health appraisal, remedial measures, health education, nutrition programme, environment hygiene, first aid, school health records
  • School Health Cards: Physical examination at entry and periodically
  • Mid-day meals (PM-POSHAN): Nutritional support + school attendance improvement

Occupational Health

  • Silicosis: Inhalation of silica dust (stone quarry workers) - most prevalent occupational lung disease in India
  • Asbestosis: Asbestos fibres - pleural mesothelioma risk
  • Byssinosis: Cotton dust (textile workers)
  • Lead poisoning: Battery, paint industry
  • Prevention: Engineering controls โ†’ Administrative controls โ†’ PPE (hierarchy)

๐ŸŽฏ Most Exam-Worthy Public Health Facts (Quick Recall)

FactValue
Winslow's definition year1920
Alma-Ata Declaration year1978
Ottawa Charter (Health Promotion) year1986
"Health for All" goal set year1977
IMR India (SRS 2020)~28
MMR India (SRS 2018-20)~97
Sub-centre population norm5,000 (plain); 3,000 (hilly)
PHC population norm30,000 (plain); 20,000 (hilly)
Residual chlorine at consumer end0.2 mg/L
Cold chain temperature for most vaccines2-8ยฐC
Only vaccine stored at -20ยฐCOPV (Oral Polio Vaccine)
IDSP reporting levelsS (community), P (PHC), L (lab)
Epidemiology definitionDistribution + Determinants of health/disease in populations
Prevalence =Incidence ร— Duration
Case Fatality Rate =Deaths / Cases ร— 100
John Snow's contributionRemoved pump handle - controlled cholera (first epidemiological intervention)
Ottawa Charter action areas5 (build policy, supportive env, community action, personal skills, reorient services)

๐Ÿ“š Recommended Books for Public Health (MH CHO)

BookUse
Park's Textbook of Preventive & Social Medicine (K. Park)Complete public health - the Bible for this section
K.P. Nair - Community Health NursingNursing perspective on public health
NHSRC CPHC Training material (IGNOU)CHO-specific community health modules
NHM Maharashtra + MoHFW official guidelinesNHM programme details (Section 3)
Public Health is the foundation of the CHO exam - master Park's key chapters (Epidemiology, PHC, Disease Control, Environmental Health) and you will consistently score well in Section 1 and Section 3 both.

G8vevpdf

Writing File

~/cho-study-guide/generate_mh_cho_pubhealth.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY

# โ”€โ”€โ”€ Colors โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
SAFFRON      = colors.HexColor("#FF6F00")
DARK_SAFFRON = colors.HexColor("#E65100")
DARK_BLUE    = colors.HexColor("#1B3A6B")
MED_BLUE     = colors.HexColor("#2E6DA4")
LIGHT_BLUE   = colors.HexColor("#E3F2FD")
TEAL         = colors.HexColor("#00695C")
LIGHT_TEAL   = colors.HexColor("#E0F2F1")
GREEN        = colors.HexColor("#2E7D32")
LIGHT_GREEN  = colors.HexColor("#E8F5E9")
PURPLE       = colors.HexColor("#4A148C")
PURPLE_LIGHT = colors.HexColor("#F3E5F5")
ORANGE_LIGHT = colors.HexColor("#FFF3E0")
RED_LIGHT    = colors.HexColor("#FFEBEE")
RED          = colors.HexColor("#C62828")
LIGHT_GRAY   = colors.HexColor("#F5F5F5")
MID_GRAY     = colors.HexColor("#BDBDBD")
WHITE        = colors.white
DARK_TEXT    = colors.HexColor("#212121")
AMBER        = colors.HexColor("#FF8F00")

OUTPUT = "/home/daytona/workspace/cho-study-guide/MH_CHO_PublicHealth_Guide.pdf"

doc = SimpleDocTemplate(
    OUTPUT, pagesize=A4,
    rightMargin=1.8*cm, leftMargin=1.8*cm,
    topMargin=2*cm, bottomMargin=2*cm,
    title="MH CHO Public Health Study Guide",
    author="NHM Maharashtra CHO Preparation",
)
W, H = A4

def S(name, **kw):
    return ParagraphStyle(name, **kw)

body      = S("body",   fontSize=10, fontName="Helvetica",      textColor=DARK_TEXT, leading=15, spaceBefore=2, spaceAfter=2, alignment=TA_JUSTIFY)
bullet_s  = S("bul",   fontSize=9.5, fontName="Helvetica",     textColor=DARK_TEXT, leading=14, leftIndent=14, spaceBefore=1, spaceAfter=1)
sec_h     = S("sec_h", fontSize=13, fontName="Helvetica-Bold",  textColor=DARK_BLUE, spaceBefore=10, spaceAfter=4)
sub_h     = S("sub_h", fontSize=11, fontName="Helvetica-Bold",  textColor=TEAL,      spaceBefore=8,  spaceAfter=3)
mini_h    = S("mini_h",fontSize=10, fontName="Helvetica-Bold",  textColor=PURPLE,    spaceBefore=6,  spaceAfter=2)
footer_s  = S("foot",  fontSize=8,  fontName="Helvetica",       textColor=MID_GRAY,  alignment=TA_CENTER)
cover_big = S("cb",    fontSize=28, fontName="Helvetica-Bold",  textColor=WHITE,     alignment=TA_CENTER, spaceAfter=6)
cover_sub = S("cs",    fontSize=14, fontName="Helvetica",       textColor=colors.HexColor("#FFE0B2"), alignment=TA_CENTER, spaceAfter=4)
cover_inf = S("ci",    fontSize=11, fontName="Helvetica",       textColor=WHITE,     alignment=TA_CENTER, spaceAfter=3)

def ch_hdr(title, subtitle="", color=SAFFRON):
    rows = [[Paragraph(title, S("ch", fontSize=16, fontName="Helvetica-Bold",
        textColor=WHITE, alignment=TA_LEFT, leftIndent=8))]]
    if subtitle:
        rows.append([Paragraph(subtitle, S("chs", fontSize=9.5, fontName="Helvetica",
            textColor=colors.HexColor("#FFE0B2"), alignment=TA_LEFT, leftIndent=8))])
    t = Table(rows, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING", (0,0), (-1,-1), 9), ("BOTTOMPADDING", (0,0), (-1,-1), 9),
        ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("BOX", (0,0), (-1,-1), 1.5, DARK_SAFFRON),
    ]))
    return t

def box(text, bg=LIGHT_BLUE, border=MED_BLUE):
    t = Table([[Paragraph(text, S("bx", fontSize=9.5, fontName="Helvetica",
        textColor=DARK_BLUE, leading=14))]], colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("BOX", (0,0), (-1,-1), 1, border),
        ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 12),
    ]))
    return t

def key_box(points, title="Key Points", hdr=TEAL, bg=LIGHT_TEAL):
    rows = [[Paragraph(f"<b>{title}</b>", S("kph", fontSize=10, fontName="Helvetica-Bold", textColor=WHITE))]]
    for p in points:
        rows.append([Paragraph(f"โ€ข {p}", S("kp", fontSize=9.5, fontName="Helvetica", textColor=DARK_BLUE, leading=13))])
    t = Table(rows, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (0,0), hdr),
        ("BACKGROUND", (0,1), (-1,-1), bg),
        ("BOX", (0,0), (-1,-1), 1, hdr),
        ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10),
    ]))
    return t

def tbl(headers, rows, col_widths=None):
    cw = col_widths or ([(W - 3.6*cm) / len(headers)] * len(headers))
    data = [[Paragraph(f"<b>{h}</b>", S("th", fontSize=9, fontName="Helvetica-Bold",
        textColor=WHITE, alignment=TA_CENTER)) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), S("td", fontSize=9, fontName="Helvetica",
            textColor=DARK_TEXT, leading=13)) for c in row])
    t = Table(data, colWidths=cw)
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_GRAY, WHITE]),
        ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
        ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ]))
    return t

def sp(n=1): return Spacer(1, n * 5)
def hr():    return HRFlowable(width="100%", thickness=0.5, color=MID_GRAY, spaceAfter=4)

story = []

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# COVER
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
cover_rows = [
    [Paragraph("NHM Maharashtra  |  Community Health Officer", S("cl", fontSize=12,
        fontName="Helvetica", textColor=colors.HexColor("#FFE0B2"), alignment=TA_CENTER))],
    [Spacer(1, 8)],
    [Paragraph("Public Health", cover_big)],
    [Paragraph("Complete Study Guide", cover_big)],
    [Spacer(1, 6)],
    [HRFlowable(width="60%", thickness=2.5, color=WHITE, spaceAfter=8)],
    [Paragraph("Based on Park's Textbook of Preventive & Social Medicine", cover_sub)],
    [Spacer(1, 10)],
    [Paragraph("Epidemiology | PHC | Disease Prevention | Environmental Health", cover_inf)],
    [Paragraph("Health Promotion | Infection Control | Surveillance | Statistics", cover_inf)],
    [Spacer(1, 16)],
    [Paragraph("Section 1 + Section 3 Coverage  |  100 High-Yield Facts  |  MCQ Practice", S("ci2",
        fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER))],
    [Spacer(1, 20)],
    [Paragraph("July 2026 Edition", S("ed", fontSize=9, fontName="Helvetica",
        textColor=colors.HexColor("#FFCC80"), alignment=TA_CENTER))],
]
cov_t = Table(cover_rows, colWidths=[W - 3.6*cm])
cov_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), SAFFRON),
    ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING", (0,0), (-1,-1), 20), ("RIGHTPADDING", (0,0), (-1,-1), 20),
    ("BOX", (0,0), (-1,-1), 3, DARK_SAFFRON),
]))
story.append(Spacer(1, 45))
story.append(cov_t)
story.append(sp(3))
story.append(Paragraph(
    "Reference: Park's Textbook of Preventive & Social Medicine (PSM) | "
    "NHSRC CPHC Material | NHM Maharashtra Syllabus",
    S("cf", fontSize=9, fontName="Helvetica-Oblique",
        textColor=colors.HexColor("#546E7A"), alignment=TA_CENTER)))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# TABLE OF CONTENTS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Table of Contents"))
story.append(sp(2))
toc = [
    ("1",  "Basic Concepts of Public Health",              "3"),
    ("2",  "Primary Health Care (PHC) & Alma-Ata",         "4"),
    ("3",  "Epidemiology - Definitions & Study Designs",   "5"),
    ("4",  "Epidemiological Rates & Measures",             "6"),
    ("5",  "Disease Transmission & Control",               "7"),
    ("6",  "Environmental Health",                         "8"),
    ("7",  "Immunization & Vaccines",                      "9"),
    ("8",  "Health Promotion & Education",                 "10"),
    ("9",  "Infection Control & Sterilization",            "11"),
    ("10", "Surveillance, IDSP & Vital Statistics",        "12"),
    ("11", "Occupational & School Health",                 "13"),
    ("12", "Health Indicators - India Data",               "13"),
    ("13", "100 High-Yield Public Health Facts",           "14"),
    ("14", "Mock MCQs - Public Health (30 Questions)",     "16"),
]
toc_data = [[
    Paragraph(f"<b>{no}.</b>", S("tn", fontSize=11, fontName="Helvetica-Bold", textColor=DARK_BLUE)),
    Paragraph(t, S("tt", fontSize=11, fontName="Helvetica", textColor=DARK_BLUE, leading=20, leftIndent=10)),
    Paragraph(f"<b>{p}</b>", S("tp", fontSize=11, fontName="Helvetica-Bold", textColor=SAFFRON, alignment=TA_CENTER)),
] for no, t, p in toc]
toc_t = Table(toc_data, colWidths=[1.2*cm, W - 3.6*cm - 2.7*cm, 1.5*cm])
toc_t.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_GRAY, WHITE]),
    ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
    ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
]))
story.append(toc_t)
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 1: BASIC CONCEPTS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 1: Basic Concepts of Public Health", "Park's PSM - Core Definitions"))
story.append(sp(2))
story.append(box(
    '<b>Winslow\'s Definition (1920):</b> "The science and art of preventing disease, prolonging life, '
    'and promoting physical health and efficiency through organized community effort." '
    '- This is the MOST cited definition in exams.'
))
story.append(sp(2))
story.append(Paragraph("WHO Definition of Health", sec_h))
story.append(Paragraph(
    '"A state of complete physical, mental and social well-being, and not merely the absence of disease or infirmity." '
    '(WHO, 1948). Later, spiritual health was added as a 4th dimension.',
    body))
story.append(sp(2))
story.append(Paragraph("Spectrum of Health", sec_h))
story.append(tbl(
    ["State", "Description"],
    [
        ["Positive health",    "Optimal physical, mental, social functioning; 'Wellness'"],
        ["Better health",      "Above average health; active and productive"],
        ["Freedom from sickness", "No symptoms; 'average' health"],
        ["Unrecognised sickness", "Subclinical disease - part of ICEBERG"],
        ["Mild illness",       "Recognizable but minor symptoms"],
        ["Severe illness",     "Significant symptoms, requires treatment"],
        ["Death",              "End of spectrum"],
    ],
    [4.5*cm, 10.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Determinants of Health", sec_h))
for line in [
    "Biological factors: Age, sex, genetics, immune status, nutrition",
    "Behavioural factors: Smoking, alcohol, diet, physical activity, sexual behaviour",
    "Socioeconomic factors: Poverty, education, employment, social support",
    "Environmental factors: Safe water, air quality, sanitation, housing",
    "Health care services: Availability, accessibility, affordability, quality",
    "Lifestyle factors: Stress, sleep, hygiene habits",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Levels of Prevention (Leavell & Clark)", sec_h))
story.append(tbl(
    ["Level", "Phase of Disease", "Definition", "Examples"],
    [
        ["Primordial Prevention",
         "Before risk factors exist in society",
         "Prevent risk factors from emerging",
         "Policies banning tobacco ads; urban planning; food labelling laws"],
        ["Primary Prevention",
         "Pre-pathogenesis phase",
         "Prevent disease before it occurs",
         "Vaccination, hand washing, safe water, condom use, IFA tablets"],
        ["Secondary Prevention",
         "Early pathogenesis",
         "Early detection and prompt treatment",
         "Screening (VIA, CBE, Hb, blood glucose); DOTS; contact tracing"],
        ["Tertiary Prevention",
         "Late pathogenesis",
         "Limit disability and rehabilitate",
         "Physiotherapy, prosthetics, vocational rehab, support groups, palliative care"],
    ],
    [3.5*cm, 3*cm, 3.5*cm, 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Natural History of Disease (Leavell & Clark Model)", sec_h))
for line in [
    "Phase 1 - Pre-pathogenesis: Agent-Host-Environment interact; NO disease yet; primary prevention window",
    "Phase 2 - Pathogenesis: Disease begins; Early stage (subclinical) โ†’ Advanced stage โ†’ Outcome",
    "Outcomes: Recovery / Disability / Death",
    "ICEBERG phenomenon: Only visible tip = clinical cases; submerged = subclinical/carrier cases",
    "Significance of iceberg: True burden of disease is MUCH higher than reported; important for surveillance",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Ecological Triad (Epidemiological Triangle)", sec_h))
story.append(tbl(
    ["Component", "Elements", "How to Attack"],
    [
        ["Host",        "Age, sex, race, immunity, nutrition, behaviour, genetics",
                        "Immunization, nutrition, health education, chemoprophylaxis"],
        ["Agent",       "Biological (bacteria, virus, parasite, fungi)\nPhysical (heat, radiation, trauma)\nChemical (poisons, allergens)\nNutritional (deficiency/excess)",
                        "Treatment, elimination, pasteurisation, food safety"],
        ["Environment", "Physical: climate, geography, water, air\nBiological: vectors, reservoirs\nPsychosocial: crowding, poverty, stress",
                        "Sanitation, vector control, water treatment, poverty reduction"],
    ],
    [2.5*cm, 6*cm, 6.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 2: PRIMARY HEALTH CARE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 2: Primary Health Care (PHC) & Alma-Ata Declaration"))
story.append(sp(2))
story.append(box(
    '<b>Alma-Ata Declaration (1978, USSR):</b> International Conference on Primary Health Care. '
    'Adopted "Health for All by 2000 AD" as global goal. '
    'PHC = "Essential health care... universally accessible to individuals and families '
    'in the community... at a cost the community can afford."'
))
story.append(sp(2))
story.append(Paragraph("8 Components of Primary Health Care (Alma-Ata)", sec_h))
components = [
    ("1", "Health education about prevailing health problems and methods of prevention and control"),
    ("2", "Promotion of food supply and proper nutrition"),
    ("3", "Adequate supply of safe water and basic sanitation"),
    ("4", "Maternal and child health care, including family planning"),
    ("5", "Immunization against major infectious diseases"),
    ("6", "Prevention and control of locally endemic diseases"),
    ("7", "Appropriate treatment of common diseases and injuries"),
    ("8", "Provision of essential drugs"),
]
comp_data = [[Paragraph(f"<b>{n}</b>", S("cn", fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER)),
              Paragraph(c, S("cd", fontSize=9.5, fontName="Helvetica", textColor=DARK_TEXT, leading=13))]
             for n, c in components]
comp_t = Table(comp_data, colWidths=[1*cm, W - 3.6*cm - 1*cm])
comp_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (0,-1), TEAL),
    ("ROWBACKGROUNDS", (1,0), (1,-1), [LIGHT_TEAL, WHITE]),
    ("BOX", (0,0), (-1,-1), 0.5, TEAL),
    ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
    ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(comp_t)
story.append(sp(2))
story.append(Paragraph("India's Health Infrastructure (Population Norms)", sec_h))
story.append(tbl(
    ["Facility", "Plains Norm", "Hilly/Tribal Norm", "Staff", "CHO Role"],
    [
        ["Sub-centre",       "5,000",       "3,000",    "1 ANM + 1 MPW (M)",             ""],
        ["PHC",              "30,000",      "20,000",   "1 MO + 14 paramedical staff",    ""],
        ["CHC",              "1,20,000",    "80,000",   "4 Specialists + 30 beds",        ""],
        ["District Hospital","Per district","",          "Full specialist team",           ""],
        ["HWC (Ayushman Bharat)", "Upgraded sub-centre", "-", "CHO is In-charge", "MANAGES HWC"],
    ],
    [3.5*cm, 2.5*cm, 3*cm, 4.5*cm, 2.5*cm]
))
story.append(sp(2))
story.append(key_box([
    "ASHA: 1 per 1000 rural population; village-level; incentive-based (not salaried)",
    "ANM: Sub-centre level; 1 per 5000 population; 2-year diploma course",
    "CHO: HWC level; GNM/BSc Nursing + CPHC certificate; in-charge of HWC",
    "12 service packages at HWC under CPHC (Ayushman Bharat) - see previous guide",
    "e-Sanjeevani: Telemedicine at HWC - connects CHO with specialist doctors",
    "Declarations: Alma-Ata 1978 (PHC), Ottawa 1986 (Health Promotion), Astana 2018 (renewal of PHC)",
], title="PHC Key Points for MH CHO Exam"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 3: EPIDEMIOLOGY
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 3: Epidemiology - Definitions & Study Designs"))
story.append(sp(2))
story.append(box(
    '<b>Definition (Last, 1988):</b> "The study of the distribution and determinants of '
    'health-related states or events in specified populations, and the application of this '
    'study to the control of health problems."'
))
story.append(sp(2))
story.append(Paragraph("Core Epidemiological Terms", sec_h))
story.append(tbl(
    ["Term", "Definition", "Example"],
    [
        ["Incidence",      "Number of NEW cases occurring in a defined population during a defined time period", "100 new TB cases in Pune in 2025"],
        ["Prevalence",     "ALL existing cases (new + old) at a point in time", "500 TB patients currently on treatment"],
        ["Point prevalence", "Cases at ONE specific moment in time", "Prevalence on Jan 1, 2025"],
        ["Period prevalence", "Cases during a defined period", "Cases during Jan-June 2025"],
        ["Attack rate",    "New cases / population at risk x 100; used in outbreaks", "Food poisoning: 50 sick / 200 ate = 25%"],
        ["Incubation period", "Time between exposure and appearance of first symptoms", "Cholera: 6 hrs - 5 days"],
        ["Carrier",        "Person infected but without symptoms; can transmit disease", "Typhoid carrier; HIV carrier"],
        ["Reservoir",      "Natural habitat of an infectious agent (human, animal, environment)", "Humans = reservoir for TB"],
        ["Zoonosis",       "Disease transmitted from animals to humans", "Rabies, leptospirosis, brucellosis"],
        ["Herd immunity",  "Enough immune people in population to protect non-immune individuals", "Polio eradication strategy"],
    ],
    [3.5*cm, 5.5*cm, 6*cm]
))
story.append(sp(2))
story.append(Paragraph("Disease Frequency Terms", sec_h))
story.append(tbl(
    ["Term", "Definition"],
    [
        ["Endemic",   "Disease constantly present at expected levels in a region (e.g., malaria in tribal Maharashtra)"],
        ["Epidemic",  "Disease occurrence clearly in excess of normal expectancy in a defined community, region, or season"],
        ["Pandemic",  "Epidemic that has spread across countries or continents, usually affecting large numbers (e.g., COVID-19)"],
        ["Sporadic",  "Cases occurring irregularly without consistent pattern; no direct link between cases (e.g., tetanus)"],
        ["Outbreak",  "Two or more linked cases in same time and place (smaller geographic area than epidemic)"],
        ["Hyperendemic", "Disease consistently high above what is expected (e.g., malaria in parts of Gadchiroli, Maharashtra)"],
    ],
    [3*cm, 12*cm]
))
story.append(sp(2))
story.append(Paragraph("Types of Epidemiological Studies", sec_h))
story.append(tbl(
    ["Study Type", "Direction", "Key Use", "Example"],
    [
        ["Cross-sectional (survey)", "Snapshot at one point", "Prevalence; hypothesis generation", "NFHS, malnutrition survey"],
        ["Case-control",             "Retrospective (past)", "Rare diseases; identify risk factors", "Smoking & lung cancer"],
        ["Cohort",                   "Prospective (future)", "Incidence; causation; relative risk", "Smoking cohort followed for cancer"],
        ["RCT (Randomized Controlled Trial)", "Experimental", "Test interventions; gold standard", "Vaccine efficacy trial"],
        ["Ecological",               "Population-level correlation", "Hypothesis; large trends", "Air pollution & COPD rates in cities"],
        ["Systematic Review / Meta-analysis", "Synthesis", "Strongest evidence; pooled results", "Cochrane reviews"],
    ],
    [4*cm, 2.5*cm, 3.5*cm, 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Important Incubation Periods", sec_h))
story.append(tbl(
    ["Disease", "Incubation Period", "Disease", "Incubation Period"],
    [
        ["Cholera",           "6 hrs - 5 days",     "Hepatitis A",        "15-50 days"],
        ["Typhoid",           "3-60 days (usual 10-14)", "Hepatitis B",   "45-180 days"],
        ["Malaria (P.vivax)", "12-17 days",          "HIV (acute)",       "2-4 weeks"],
        ["Malaria (P.falciparum)", "7-14 days",      "Tuberculosis",      "4-12 weeks"],
        ["Dengue",            "3-14 days",           "Rabies",            "2-8 weeks (can be months)"],
        ["Measles",           "10-12 days",          "Chickenpox (VZV)",  "14-21 days"],
        ["Mumps",             "14-21 days",          "Tetanus",           "3-21 days"],
        ["Leprosy",           "Months to years",     "COVID-19",          "2-14 days (usual 5 days)"],
    ],
    [4*cm, 3*cm, 4*cm, 4*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 4: RATES
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 4: Epidemiological Rates & Measures"))
story.append(sp(2))
story.append(Paragraph("Key Rates and Formulas", sec_h))
story.append(tbl(
    ["Rate / Measure", "Formula", "Multiplier", "India Value (Latest)"],
    [
        ["Crude Birth Rate (CBR)",        "Live births / mid-year population",                  "x 1000",    "~18 (SRS)"],
        ["Crude Death Rate (CDR)",        "Deaths / mid-year population",                       "x 1000",    "~6"],
        ["Infant Mortality Rate (IMR)",   "Deaths <1 year / live births",                       "x 1000",    "~28 (SRS 2020)"],
        ["Neonatal Mortality Rate (NMR)", "Deaths <28 days / live births",                      "x 1000",    "~20"],
        ["Post-neonatal Mortality Rate",  "Deaths 28 days-1 year / live births",                "x 1000",    "~8"],
        ["Under-5 Mortality Rate (U5MR)", "Deaths <5 yrs / live births",                        "x 1000",    "~32"],
        ["Maternal Mortality Ratio (MMR)","Maternal deaths / live births",                      "x 1,00,000","~97 (SRS 2018-20)"],
        ["Total Fertility Rate (TFR)",    "Avg. children per woman in reproductive lifetime",   "-",          "~2.0"],
        ["Gross Reproduction Rate (GRR)", "Female babies per woman",                             "-",          "~1.0"],
        ["Sex Ratio",                     "Females per 1000 males",                              "x 1000",    "943 (Census 2011)"],
        ["Life Expectancy at Birth",      "Expected years from birth",                           "-",          "~70 years"],
        ["Attack Rate",                   "New cases / population at risk",                      "x 100",     "Outbreak-specific"],
        ["Case Fatality Rate (CFR)",      "Deaths from disease / cases of disease",              "x 100",     "COVID CFR ~1-2%"],
        ["Proportional Mortality Rate",   "Deaths from cause / total deaths",                   "x 100",     "CVD ~26% of deaths"],
        ["Prevalence",                    "Incidence x Average Duration of Disease",             "-",         "Relationship"],
    ],
    [4.5*cm, 4.5*cm, 2*cm, 4*cm]
))
story.append(sp(2))
story.append(key_box([
    "MMR = Maternal deaths per 1,00,000 LIVE BIRTHS (not total births)",
    "IMR = Deaths under 1 year per 1000 LIVE BIRTHS (NOT total births)",
    "Prevalence = Incidence x Duration - so chronic diseases have high prevalence",
    "India's MMR target (SDG): <70 per 1,00,000 live births by 2030",
    "India's U5MR SDG target: <25 per 1000 live births by 2030",
    "Birth rate > Death rate = Population growth (India's NRR is declining toward 1.0)",
    "TFR of 2.1 = Replacement level fertility (population stabilizes)",
], title="Must-Know Relationships & Targets"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 5: DISEASE TRANSMISSION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 5: Disease Transmission & Control"))
story.append(sp(2))
story.append(Paragraph("Chain of Infection", sec_h))
story.append(box(
    "<b>Chain:</b> Agent โ†’ Reservoir โ†’ Portal of Exit โ†’ Mode of Transmission โ†’ Portal of Entry โ†’ Susceptible Host\n"
    "Breaking ANY link controls the disease. CHO's job = identify and break the WEAKEST link."
))
story.append(sp(2))
story.append(Paragraph("Modes of Transmission", sec_h))
story.append(tbl(
    ["Mode", "Mechanism", "Diseases", "Prevention"],
    [
        ["Airborne", "Droplet nuclei (<5 microns) suspended in air; travel >1 m",
         "TB, Measles, Chickenpox, COVID-19",
         "Ventilation, N95 mask, isolation, UVGI"],
        ["Droplet", "Large droplets (>5 microns) that fall within 1 m",
         "Influenza, Whooping cough, Mumps, Rubella",
         "Surgical mask, 1-m distancing"],
        ["Fecal-oral", "Contaminated food, water, or hands ingested",
         "Cholera, Typhoid, Hepatitis A, Polio, Diarrhea",
         "Safe water, ORT, hand washing, food safety, sanitation"],
        ["Vector-borne (biological)", "Pathogen multiplies in vector before transmission",
         "Malaria (Anopheles), Dengue (Aedes), Filaria (Culex), JE",
         "LLIN, IRS, vector control, personal protection"],
        ["Vector-borne (mechanical)", "Vector carries pathogen on body surface without replication",
         "Flies carrying typhoid, cholera",
         "Fly control, food covering"],
        ["Direct contact", "Skin-to-skin or mucous membrane contact",
         "Leprosy, Scabies, STIs, impetigo",
         "Personal hygiene, condoms, early treatment"],
        ["Blood-borne", "Contact with infected blood or body fluids",
         "HIV, HBV, HCV, Malaria (transfusion)",
         "Safe injection, blood screening, universal precautions, PEP"],
        ["Vertical (MTCT)", "Mother-to-child during pregnancy, delivery, breastfeeding",
         "HIV, HBV, Syphilis, Rubella",
         "PPTCT, ART, VDRL screening, HBsAg screening in ANC"],
        ["Zoonotic", "Animal-to-human transmission",
         "Rabies, Leptospirosis, Brucellosis, Anthrax",
         "Animal control, vaccination (rabies), protective equipment"],
        ["Iatrogenic", "Through medical procedures",
         "HIV, HBV, HCV via unsafe injections; SSI",
         "Safe injection (1 needle, 1 syringe, 1 patient), BMW, asepsis"],
    ],
    [2.5*cm, 3.5*cm, 3.5*cm, 5.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Disease Control Measures - Targeting the Triad", sec_h))
story.append(tbl(
    ["Target", "Method", "Examples"],
    [
        ["Reservoir / Source",  "Treatment of cases, isolation, quarantine, carrier treatment, disinfection",
         "Isolate TB patients; treat malaria; screen contacts"],
        ["Mode of Transmission","Safe water, food hygiene, vector control, safe sex, safe injection",
         "Chlorination; LLIN; condoms; single-use syringes"],
        ["Susceptible Host",    "Immunization, chemoprophylaxis, nutrition, health education, PPE",
         "Vaccines; IFA; ORS; BCG; hand washing"],
    ],
    [3.5*cm, 5*cm, 6.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 6: ENVIRONMENTAL HEALTH
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 6: Environmental Health", "Water, Air, Sanitation, Waste"))
story.append(sp(2))
story.append(Paragraph("Safe Drinking Water Standards (BIS / WHO)", sec_h))
story.append(tbl(
    ["Parameter", "Acceptable Limit", "Permissible Limit (No Alt.)", "Health Significance"],
    [
        ["TDS (Total Dissolved Solids)", "< 500 mg/L",   "< 2000 mg/L",  "Taste, mineral excess"],
        ["Turbidity",                    "< 1 NTU",       "< 5 NTU",      "Indicator of contamination"],
        ["pH",                           "6.5 - 8.5",     "6.5 - 8.5",    "Corrosion / scaling"],
        ["Residual Chlorine (consumer)", "0.2 mg/L",      "1.0 mg/L",     "Disinfection effectiveness"],
        ["Fluoride",                     "< 1.0 mg/L",    "< 1.5 mg/L",   "> 1.5 causes dental fluorosis"],
        ["Nitrate",                      "< 45 mg/L",     "< 45 mg/L",    "Methaemoglobinaemia in infants"],
        ["Coliform bacteria",            "ZERO / 100 mL", "ZERO",         "Indicator of fecal contamination"],
        ["Arsenic",                      "< 0.01 mg/L",   "< 0.05 mg/L",  "Skin cancer; keratosis"],
    ],
    [4*cm, 3*cm, 3.5*cm, 4.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Water Purification Methods", sec_h))
for line in [
    "Boiling: Most effective domestic method; kills all pathogens; 1 min boil sufficient",
    "Chlorination: Most practical large-scale method; bleaching powder or HTH; residual chlorine = 0.2 mg/L at consumer end",
    "Slow sand filtration: Schmutzdecke (biological layer) removes 99% bacteria; no chemicals needed",
    "Rapid sand filtration: Faster; used with coagulation (alum); less effective vs. bacteria - needs chlorination after",
    "UV disinfection: Effective but no residual protection; used for small communities / HWC",
    "Reverse Osmosis (RO): Removes all contaminants including dissolved salts; removes beneficial minerals too",
    "Boil + cool + store in clean container: Recommended at household level for drinking water safety",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Air Pollution", sec_h))
story.append(tbl(
    ["Pollutant", "Source", "Health Effect"],
    [
        ["PM2.5 (fine particles <2.5 microns)", "Vehicles, industries, crop burning", "Penetrates alveoli; most dangerous; lung cancer, CVD, COPD"],
        ["PM10 (coarse particles <10 microns)", "Dust, construction, roads",          "Respiratory tract irritation; asthma"],
        ["Carbon monoxide (CO)",                "Incomplete combustion, vehicle exhaust", "Binds Hb (carboxyHb); hypoxia; fatal in enclosed spaces"],
        ["SO2 (Sulphur dioxide)",               "Coal burning, industries",             "Acid rain; respiratory irritation; bronchospasm"],
        ["NO2 (Nitrogen dioxide)",              "Vehicle exhaust, power plants",        "Lung damage; contributes to smog and acid rain"],
        ["Lead (Pb)",                           "Leaded petrol (historical), batteries", "Neurotoxin; affects children's brain development"],
        ["Ozone (O3)",                          "Secondary pollutant from sunlight + NOx", "Respiratory irritant; eye irritation"],
    ],
    [4.5*cm, 3.5*cm, 7*cm]
))
story.append(sp(2))
story.append(Paragraph("Sanitation & Excreta Disposal", sec_h))
for line in [
    "Open defecation spreads: Diarrhea, cholera, typhoid, hepatitis A, polio, hookworm, roundworm",
    "Swachh Bharat Mission (SBM): India declared ODF (Open Defecation Free) in 2019",
    "Twin-pit pour flush latrine: Recommended; one pit fills while other decomposes",
    "Septic tank: For urban areas; anaerobic digestion; effluent must be further treated",
    "Biomedical waste (BMW Rules 2016): 4 categories - Yellow / Red / White / Blue bags",
    "Health effects of poor sanitation: Diarrhea kills ~1.5 million children/year globally (preventable)",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 7: IMMUNIZATION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 7: Immunization & Vaccines", "UIP - Universal Immunization Programme"))
story.append(sp(2))
story.append(Paragraph("Types of Immunity", sec_h))
story.append(tbl(
    ["Type", "Mechanism", "Onset", "Duration", "Example"],
    [
        ["Active Natural",    "Infection with pathogen",         "Slow (weeks)",  "Long (years/life)", "Measles infection"],
        ["Active Artificial", "Vaccination",                     "Slow (weeks)",  "Long (years/life)", "DPT vaccine"],
        ["Passive Natural",   "Maternal IgG across placenta; IgA in breast milk", "Immediate", "Short (weeks-months)", "Newborn immunity"],
        ["Passive Artificial","Injection of antibodies/antiserum","Immediate",   "Short (weeks)",     "Anti-tetanus serum (ATS), anti-rabies immunoglobulin"],
    ],
    [3*cm, 3.5*cm, 2.5*cm, 3*cm, 4*cm]
))
story.append(sp(2))
story.append(Paragraph("Universal Immunization Programme (UIP) - Complete Schedule", sec_h))
story.append(tbl(
    ["Age", "Vaccines"],
    [
        ["At Birth",              "BCG (0.05 mL ID, right upper arm), OPV-0 (birth dose), Hepatitis B-1 (birth dose, IM)"],
        ["6 Weeks",               "OPV-1, IPV-1 (IM, thigh), Pentavalent-1 (DPT+HepB+Hib), Rotavirus-1, PCV-1"],
        ["10 Weeks",              "OPV-2, Pentavalent-2, Rotavirus-2, PCV-2"],
        ["14 Weeks",              "OPV-3, IPV-2, Pentavalent-3, Rotavirus-3, PCV-3"],
        ["9-12 Months",           "MR-1 (measles-rubella), JE-1 (endemic areas), Vitamin A 1st dose (1 lakh IU)"],
        ["16-24 Months",          "DPT Booster-1, OPV Booster, MR-2, JE-2, Vitamin A 2nd dose (2 lakh IU)"],
        ["5-6 Years",             "DPT Booster-2"],
        ["10 Years & 16 Years",   "Td (Tetanus-diphtheria)"],
        ["Pregnant Women",        "Td-1 (early pregnancy), Td-2 (4 weeks after Td-1) OR Td Booster (if vaccinated before)"],
    ],
    [3.5*cm, 11.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Cold Chain for Vaccines", sec_h))
story.append(tbl(
    ["Level", "Equipment", "Temperature"],
    [
        ["State store",          "ILR (Ice-Lined Refrigerator), Deep Freezer", "+2 to +8 deg C / -20 deg C (for OPV)"],
        ["District / Divisional","ILR, Deep Freezer",                          "+2 to +8 deg C / -20 deg C"],
        ["PHC / Sub-centre",     "ILR or cold box, icepacks",                  "+2 to +8 deg C"],
        ["Field (CHO / ANM)",    "Vaccine carrier with ice packs",              "+2 to +8 deg C during session"],
        ["ONLY OPV",             "Deep Freezer",                               "-20 deg C (stored frozen)"],
    ],
    [3.5*cm, 5.5*cm, 6*cm]
))
story.append(sp(2))
story.append(key_box([
    "BCG: Only live bacterial vaccine in UIP; given ID 0.05 mL at birth; right upper arm; BCG scar = evidence",
    "OPV: Only vaccine stored at -20 deg C (all others 2-8 deg C); oral route; 2 drops",
    "Pentavalent = DPT + HepB + Hib (5 antigens in 1 injection) - reduces pain and visits",
    "PCV: Protects against S. pneumoniae (bacterial pneumonia); reduces childhood pneumonia deaths",
    "VVM (Vaccine Vial Monitor): Heat-sensitive label on each vial; discard if inner square = outer circle color",
    "AEFI (Adverse Events Following Immunization): Must be reported; BCG can cause local abscess, Koch's phenomenon",
    "Contraindication to ALL vaccines: Anaphylaxis to previous dose; severe acute illness",
    "Mission Indradhanush: Catch-up immunization for children and pregnant women missed by UIP",
], title="Immunization High-Yield Points"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 8: HEALTH PROMOTION & EDUCATION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 8: Health Promotion & Education"))
story.append(sp(2))
story.append(Paragraph("Ottawa Charter (1986) - 5 Action Areas", sec_h))
story.append(tbl(
    ["Action Area", "Description", "Example"],
    [
        ["Build healthy public policy",     "Laws, taxes, regulations that support health",     "Tobacco tax; helmet laws; food labelling"],
        ["Create supportive environments",  "Safe, stimulating, satisfying living and working conditions", "Safe workplaces; clean air standards"],
        ["Strengthen community action",     "Community empowerment; ownership of health",       "Gram sabha health planning; ASHA selection"],
        ["Develop personal skills",         "Health education; life skills; self-care ability", "Counselling; IEC; school health education"],
        ["Reorient health services",        "Focus beyond curative - preventive + promotive",   "HWC model; community outreach; ASHA"],
    ],
    [4.5*cm, 4.5*cm, 6*cm]
))
story.append(sp(2))
story.append(Paragraph("KAP & Behaviour Change Models", sec_h))
for line in [
    "KAP Study: Knowledge, Attitude, Practice - baseline assessment before any health education programme",
    "Health Belief Model: People act if they perceive susceptibility, severity, benefits outweigh barriers",
    "Stages of Change (Prochaska): Pre-contemplation โ†’ Contemplation โ†’ Preparation โ†’ Action โ†’ Maintenance",
    "Motivational Interviewing: Non-judgmental, collaborative counselling for behaviour change",
    "SBCC: Social and Behaviour Change Communication - used in NHM programmes (ASHA training)",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Health Education Methods", sec_h))
story.append(tbl(
    ["Level", "Method", "Audience Size", "CHO's Role"],
    [
        ["Individual",    "Counselling, home visit, bedside teaching", "1-1", "ANC counselling, RMNCH counselling, NCD counselling"],
        ["Group",         "Health talks, demonstrations, discussions, role play", "5-30", "Village health & nutrition day (VHND), Gram Sabha health talks"],
        ["Mass / Community", "Posters, radio, TV, nukkad nataks, street plays, social media", "Large", "Coordinate IEC activities; display materials at HWC"],
    ],
    [2.5*cm, 5*cm, 3*cm, 5.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 9: INFECTION CONTROL
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 9: Infection Control & Sterilization"))
story.append(sp(2))
story.append(Paragraph("Sterilization vs. Disinfection", sec_h))
story.append(box(
    "<b>Sterilization</b> = Destruction of ALL microorganisms including spores.\n"
    "<b>Disinfection</b> = Destruction of MOST organisms (not spores) by physical or chemical means.\n"
    "<b>Antiseptic</b> = Chemical applied to LIVING tissue (skin) to inhibit microorganism growth.\n"
    "<b>Asepsis</b> = Preventing introduction of microorganisms into sterile body areas."
))
story.append(sp(2))
story.append(tbl(
    ["Method", "Type", "Temp / Details", "Time", "Use at HWC"],
    [
        ["Autoclave (moist heat)", "Sterilization",        "121 deg C, 15 psi",              "15-20 min",  "Surgical instruments, dressings"],
        ["Dry Heat Oven",          "Sterilization",        "160 deg C / 170 deg C",          "60 / 45 min","Glassware, sharp instruments, oils"],
        ["Boiling (100 deg C)",    "Disinfection",         "100 deg C",                      "20 min",     "Utensils, rubber gloves, syringes"],
        ["2% Glutaraldehyde",      "High-level disinfection","Room temp",                    "20 min",     "Endoscopes, heat-sensitive items"],
        ["0.5% NaOCl (Bleach)",   "Intermediate disinfection","Freshly prepared",            "30 min soak","Surfaces, blood spills, toilets"],
        ["1% Chlorhexidine",       "Low-level disinfection","Skin antiseptic",               "Contact time","Wound cleaning, hand rub"],
        ["Alcohol 70%",            "Intermediate disinfection","Isopropyl or ethyl alcohol",  "30 sec rub", "Skin antisepsis, thermometers"],
        ["UV radiation (254 nm)",  "Sterilization (air/surface)","Low-pressure mercury lamp","30-60 min",  "OT, labs, sterile rooms"],
        ["Formaldehyde (formalin)","Sterilization (chemical)","Gaseous; fumigation",         "Several hrs","Terminal disinfection of rooms"],
    ],
    [3.5*cm, 3*cm, 3*cm, 2*cm, 4.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Standard (Universal) Precautions", sec_h))
for line in [
    "Treat ALL blood and body fluids from ALL patients as potentially infectious",
    "HAND HYGIENE: WHO 5 Moments - before patient contact / before aseptic procedure / after body fluid exposure / after patient contact / after touching patient environment",
    "Hand rub: 20-30 seconds; Hand wash with soap + water: 40-60 seconds",
    "PPE: Gloves (body fluid contact), gown, mask (droplet/airborne), eye shield (splash risk)",
    "Safe injection: 1 needle + 1 syringe + 1 patient + 1 time; NEVER recap needle two-handed",
    "Sharps disposal: Immediately into white puncture-proof container after use; never bend or break",
    "Needlestick Injury (NSI): Wash wound with soap and water x 5 min; do NOT suck; report to supervisor; HIV PEP within 72 hours; HBV immunoglobulin if not vaccinated",
    "Spill management: Blood spill - apply 1% bleach solution for 30 minutes; remove with gloves; dispose as BMW",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 10: SURVEILLANCE & STATISTICS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 10: Disease Surveillance, IDSP & Vital Statistics"))
story.append(sp(2))
story.append(Paragraph("Integrated Disease Surveillance Programme (IDSP)", sec_h))
story.append(box(
    "<b>IDSP:</b> Launched 2004; central and state-level surveillance; weekly disease reporting. "
    "Goal: Detect outbreaks early, respond fast, monitor disease trends."
))
story.append(sp(2))
story.append(tbl(
    ["Reporting Form", "Level", "Reporter", "Diseases"],
    [
        ["S Form (Syndromic)",  "Community / Village", "ASHA, AWW, ANM",         "Fever with rash, fever with chills, watery diarrhea, jaundice, acute flaccid paralysis"],
        ["P Form (Probable)",   "PHC / CHC",           "MO, CHO, Lab technician", "Clinically diagnosed; probable cases with history and examination"],
        ["L Form (Lab Confirmed)", "District lab / Medical college", "Microbiologist, Pathologist", "Lab-confirmed diagnoses (blood culture, PCR, serology)"],
    ],
    [3.5*cm, 3*cm, 3.5*cm, 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Key Notifiable Diseases (India)", sec_h))
for line in [
    "Cholera, Plague, Yellow Fever: MANDATORY international notification (IHR 2005)",
    "Tuberculosis, Malaria, Dengue, Diphtheria, Whooping cough, Typhoid, Hepatitis: State-notifiable",
    "AFP (Acute Flaccid Paralysis): Suspected polio; MUST report within 24 hours; stool specimens sent to lab",
    "All outbreak investigations: IDSP rapid response team deployed within 24-48 hours",
    "NIKSHAY portal: Mandatory TB case notification and treatment tracking (NTEP)",
    "HMIS (Health Management Information System): Monthly data entry by HWC/PHC/CHC",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))
story.append(sp(2))
story.append(Paragraph("Sources of Vital Statistics in India", sec_h))
story.append(tbl(
    ["Source", "Frequency", "Data Provided"],
    [
        ["Census of India",               "Every 10 years (last 2011; 2021 postponed)", "Population, sex ratio, literacy, housing, disability"],
        ["SRS (Sample Registration System)", "Annual",    "Birth rate, death rate, IMR, MMR, TFR, cause of death"],
        ["NFHS (National Family Health Survey)", "~5 years (NFHS-5: 2019-21)", "MCH indicators, nutrition, family planning, disease prevalence"],
        ["NSSO / NSS surveys",            "Periodic",    "Morbidity, health expenditure, disability"],
        ["HMIS (Health Management Info)", "Monthly",     "Facility-level data on OPD, ANC, deliveries, immunization"],
        ["IDSP",                          "Weekly",      "Disease surveillance, outbreak detection"],
        ["Civil Registration System (CRS)", "Continuous", "Birth and death registration at local level"],
    ],
    [4.5*cm, 4*cm, 6.5*cm]
))
story.append(sp(2))
story.append(key_box([
    "Census 2011: India population = 121 crore; Sex ratio = 943/1000; Literacy = 74.04%; Male 82.14%, Female 65.46%",
    "Child Sex Ratio (0-6 yrs, Census 2011) = 914 girls per 1000 boys - declining trend",
    "NFHS-5 (2019-21): India TFR = 2.0; IMR = 35.2; MMR (SRS) ~97; Stunting = 35.5%, Wasting = 19.3%",
    "Maharashtra NFHS-5: IMR lower than national average; better urban health indicators",
    "SDG 3.1: MMR < 70 / 1 lakh live births by 2030",
    "SDG 3.2: U5MR < 25 / 1000 live births; NMR < 12 / 1000 live births by 2030",
], title="Census & Survey Key Facts"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 11: OCCUPATIONAL & SCHOOL HEALTH
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 11: Occupational Health & School Health"))
story.append(sp(2))
story.append(Paragraph("Occupational Diseases", sec_h))
story.append(tbl(
    ["Disease", "Occupation / Exposure", "Causative Agent", "Prevention"],
    [
        ["Silicosis",       "Stone quarry, mining, sand blasting",    "Silica dust",         "Dust control, wet drilling, PPE; most common occupational lung disease in India"],
        ["Coal workers' pneumoconiosis", "Coal mining",               "Coal dust",           "Dust control; ventilation; health surveillance"],
        ["Asbestosis",      "Asbestos industry, shipbuilding",        "Asbestos fibres",     "Substitute materials; PPE; causes mesothelioma and lung cancer"],
        ["Byssinosis",      "Cotton, jute, flax textile workers",     "Cotton dust",         "Ventilation; respiratory protection; Monday fever = classic early sign"],
        ["Occupational asthma", "Isocyanates, chemicals, flour",     "Sensitizers",         "Avoid exposure; PPE; spirometry monitoring"],
        ["Lead poisoning",  "Battery, paint, printing industry",      "Lead (Pb)",           "Engineering controls; blood lead monitoring; chelation if toxic"],
        ["Mercury poisoning", "Chloralkali plants, dentistry",        "Mercury (Hg)",        "Closed systems; monitoring; Minamata disease = environmental mercury poisoning"],
    ],
    [3*cm, 3*cm, 2.5*cm, 6.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Hierarchy of Occupational Health Controls", sec_h))
for line in [
    "1. Elimination: Remove the hazard completely (best)",
    "2. Substitution: Replace with less hazardous material",
    "3. Engineering controls: Enclosure, ventilation, barriers",
    "4. Administrative controls: Job rotation, reduced exposure time, training",
    "5. PPE (Personal Protective Equipment): Last resort; masks, gloves, goggles (least effective alone)",
]:
    story.append(Paragraph(line, bullet_s))
story.append(sp(2))
story.append(Paragraph("School Health Programme", sec_h))
for line in [
    "Components: Health appraisal, remedial measures, health education, nutrition (PM-POSHAN), environmental hygiene, first aid, school health records",
    "RBSK (Rashtriya Bal Swasthya Karyakram): Mobile health teams screen children at schools + Anganwadis for 4Ds",
    "School health cards: Physical examination at school entry and periodically every 2-3 years",
    "Eye testing: Snellen chart; refractive errors corrected with glasses (free of cost under RBSK)",
    "Scoliosis, dental caries, skin diseases: Detected by school health team",
    "Menstrual Hygiene Management (MHM): Free sanitary napkins in schools; Kishori Shakti Yojana",
]:
    story.append(Paragraph(f"โ€ข {line}", bullet_s))

story.append(sp(2))
story.append(ch_hdr("Chapter 12: Health Indicators - India Data", "Memorize These for the Exam", color=TEAL))
story.append(sp(2))
story.append(tbl(
    ["Indicator", "India Value", "Source/Year", "SDG/National Target"],
    [
        ["IMR (Infant Mortality Rate)",           "~28 / 1000 LB",    "SRS 2020",     "SDG: <12 by 2030"],
        ["NMR (Neonatal Mortality Rate)",         "~20 / 1000 LB",    "SRS 2020",     "SDG: <12 by 2030"],
        ["MMR (Maternal Mortality Ratio)",        "~97 / 1 lakh LB",  "SRS 2018-20",  "SDG: <70 by 2030"],
        ["U5MR (Under-5 Mortality Rate)",         "~32 / 1000 LB",    "SRS 2020",     "SDG: <25 by 2030"],
        ["TFR (Total Fertility Rate)",            "~2.0",             "SRS 2020",     "Replacement: 2.1"],
        ["Life Expectancy at Birth",              "~70 years",        "SRS 2018-22",  "Increase to 75 by 2030"],
        ["CBR (Crude Birth Rate)",                "~18 / 1000 pop",   "SRS 2021",     "Declining trend"],
        ["CDR (Crude Death Rate)",                "~6 / 1000 pop",    "SRS 2021",     "Declining"],
        ["Stunting (children <5 yrs)",            "35.5%",            "NFHS-5 2019-21","Reduce to <25% by 2022 (Poshan)"],
        ["Wasting (children <5 yrs)",             "19.3%",            "NFHS-5 2019-21","Reduce by 2%/yr"],
        ["Anemia (children 6-59 months)",         "67.1%",            "NFHS-5 2019-21","Reduce by 3%/yr"],
        ["Anemia (women 15-49 yrs)",              "57.0%",            "NFHS-5 2019-21","Reduce to <33% by 2022"],
        ["Sex Ratio (Census 2011)",               "943 F/1000 M",     "Census 2011",  "Improve with BBBP"],
        ["Literacy Rate",                         "74.04%",           "Census 2011",  "Universal literacy"],
    ],
    [5*cm, 3.5*cm, 3*cm, 3.5*cm]
))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 13: 100 HIGH-YIELD FACTS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 13: 100 High-Yield Public Health Facts", "Read these the day before your exam!"))
story.append(sp(2))
story.append(box(
    "<b>Instruction:</b> All 100 facts below are direct MCQ material. "
    "If you know all of these, you will score at least 35-40 marks in MH CHO exam.",
    bg=ORANGE_LIGHT, border=AMBER
))
story.append(sp(2))

facts_col1 = [
    "1. Winslow's definition of Public Health: 1920",
    "2. WHO Health definition: 1948",
    "3. Alma-Ata Declaration: 1978 (PHC)",
    "4. Ottawa Charter: 1986 (Health Promotion)",
    "5. Astana Declaration: 2018 (renewed PHC commitment)",
    "6. HFA (Health for All): World Health Assembly 1977",
    "7. PHC components: 8 (Alma-Ata)",
    "8. Ottawa Charter action areas: 5",
    "9. Ecological triad: Host, Agent, Environment",
    "10. ICEBERG phenomenon: Subclinical cases exceed clinical cases",
    "11. Prevalence = Incidence x Duration",
    "12. IMR India (SRS 2020): ~28",
    "13. MMR India (SRS 2018-20): ~97 / 1 lakh LB",
    "14. TFR India: ~2.0 (replacement level = 2.1)",
    "15. Sub-centre norm: 1 per 5000 (plain); 1 per 3000 (hilly)",
    "16. PHC norm: 1 per 30,000 (plain); 20,000 (hilly)",
    "17. CHC norm: 1 per 1,20,000; 30 beds; 4 specialists",
    "18. ASHA: 1 per 1000 rural population; incentive-based",
    "19. John Snow's cholera intervention: Removed pump handle (first epidemiological intervention)",
    "20. Coliform bacteria in drinking water: ZERO (acceptable limit)",
    "21. Residual chlorine at consumer end: 0.2 mg/L",
    "22. Boiling for drinking water: 1 min sufficient to kill pathogens",
    "23. OPV stored at: -20 deg C (ONLY vaccine stored frozen)",
    "24. All other vaccines: +2 to +8 deg C",
    "25. VVM: Vaccine Vial Monitor; discard if inner square = outer circle",
    "26. BCG: Intradermal, 0.05 mL, right upper arm at birth",
    "27. Pentavalent = DPT + HepB + Hib (5 antigens)",
    "28. MR vaccine: Replaced standalone measles vaccine in UIP (2017)",
    "29. IPV: 2 doses at 6 and 14 weeks; inactivated; intramuscular",
    "30. Rotavirus vaccine: 3 doses; 6, 10, 14 weeks; prevents severe diarrhea",
    "31. Vitamin A 1st dose: 1 lakh IU at 9 months",
    "32. Vitamin A subsequent doses: 2 lakh IU every 6 months (12-59 months)",
    "33. Mission Indradhanush: Catch-up immunization; includes left-out children",
    "34. Autoclave: 121 deg C, 15 psi, 15-20 min",
    "35. Dry heat oven: 160 deg C for 60 min OR 170 deg C for 45 min",
    "36. WHO 5 Moments of Hand Hygiene: Standard precautions",
    "37. Needlestick injury: HIV PEP within 72 hours; HBV Ig if not vaccinated",
    "38. BMW Yellow bag: Anatomical/soiled waste; Incineration",
    "39. BMW Red bag: Contaminated recyclables; Autoclaving",
    "40. BMW White box: Sharps (needles); Needle cutter",
    "41. BMW Blue bag: Glassware, metallic implants",
    "42. Hand washing with soap duration: 40-60 seconds",
    "43. Alcohol hand rub duration: 20-30 seconds",
    "44. IDSP: S form = syndromic (ASHA/ANM); P form = probable (MO); L form = lab confirmed",
    "45. AFP: Report within 24 hours; stool samples x 2 to lab (polio surveillance)",
    "46. Cholera incubation: 6 hrs - 5 days",
    "47. Typhoid incubation: 3-60 days (usual 10-14 days)",
    "48. Dengue incubation: 3-14 days; Aedes aegypti mosquito",
    "49. Malaria P.vivax incubation: 12-17 days; P.falciparum: 7-14 days",
    "50. Malaria vector: Anopheles (female); breeds in clean, stagnant water",
]
facts_col2 = [
    "51. Dengue vector: Aedes aegypti; breeds in clean water containers in and around homes",
    "52. Filaria vector: Culex mosquito; lymphatic filariasis; MDA annually",
    "53. TB transmission: Airborne droplet nuclei; DOT = Directly Observed Treatment",
    "54. Leprosy: MDT-PB 6 months (2 drugs); MDT-MB 12 months (3 drugs - Rifampicin, Dapsone, Clofazimine)",
    "55. HIV - CD4 count for ART: Start ART regardless of CD4 (Test and Treat policy)",
    "56. PPTCT: Prevention of Parent-to-Child Transmission of HIV; ART to mother + neonate",
    "57. Hepatitis B birth dose: Within 24 hours of birth; prevents MTCT",
    "58. ORS composition: Na 75, Glucose 75, Cl 65, K 20 (mEq/L); Osmolarity 245 mOsmol/L",
    "59. Zinc for diarrhea: 20 mg/day x 14 days (children >6 months); 10 mg (<6 months)",
    "60. Bitot spots: Vitamin A deficiency (xerophthalmia)",
    "61. Koilonychia (spoon nails): Iron deficiency anemia",
    "62. Bow legs in children: Vitamin D deficiency (rickets)",
    "63. Goitre: Iodine deficiency; iodized salt >15 ppm at household level",
    "64. Scurvy: Vitamin C deficiency; bleeding gums, perifollicular haemorrhages",
    "65. Kwashiorkor: Protein deficiency; edema, moon face, skin lesions",
    "66. Marasmus: Protein + energy deficiency; severe wasting, no edema",
    "67. MUAC <11.5 cm = SAM; 11.5-12.5 cm = MAM; >12.5 cm = Normal (6-59 months)",
    "68. IFA during pregnancy: 180 mg elemental iron + 500 mcg folic acid daily",
    "69. IFA postpartum: 180 days of IFA continuation after delivery",
    "70. WIFS: Weekly IFA for adolescent boys and girls (6-19 yrs in school)",
    "71. DOTS: Directly Observed Treatment Short-course (TB); supervisor watches each dose",
    "72. NTEP target: TB elimination by 2025 (5 years ahead of SDG 2030)",
    "73. Nikshay Poshan Yojana: Rs.500/month nutritional support to TB patients",
    "74. NPCDCS: NCD screening at HWC; all adults 30+ years for HTN, DM, 3 cancers",
    "75. VIA: Visual Inspection with Acetic Acid; cervical cancer screening; acetowhite = positive",
    "76. CBE: Clinical Breast Examination; women 30-60 yrs; annually at HWC",
    "77. SBM: Swachh Bharat Mission; India declared ODF in 2019",
    "78. PM2.5: Most dangerous air pollutant; penetrates alveoli; <2.5 microns",
    "79. Silicosis: Most common occupational lung disease in India; stone quarry workers",
    "80. KAP study: Knowledge, Attitude, Practice; baseline before health education",
    "81. Herd immunity: When enough proportion immune to prevent epidemic spread",
    "82. Passive immunity in newborn: IgG crosses placenta; IgA in breast milk",
    "83. Colostrum: First milk; rich in IgA; give within 1 hour of birth",
    "84. Exclusive breastfeeding: 6 months; no water, no other food",
    "85. BMI: Underweight <18.5; Normal 18.5-24.9; Overweight 25-29.9; Obese >/=30",
    "86. Census 2011: Population 121 crore; Literacy 74.04%; Sex ratio 943",
    "87. NFHS-5 (2019-21): TFR 2.0; Stunting 35.5%; Wasting 19.3%; Anemia (child) 67.1%",
    "88. Prevalence of disease depends on: Incidence AND duration (chronicity)",
    "89. Case-control study: Best for rare diseases; looks backward (retrospective)",
    "90. Cohort study: Best for incidence + causation; looks forward (prospective)",
    "91. RCT: Gold standard; random allocation; eliminates selection bias",
    "92. Cross-sectional study: Snapshot; gives prevalence; cheap and quick",
    "93. HMIS: Monthly reporting by all health facilities; monitored by NHM",
    "94. JSY: Cash incentive for institutional delivery; LPS rural = Rs.1400 (mother) + Rs.600 (ASHA)",
    "95. JSSK: Free delivery, drugs, diet, diagnostics, blood, transport for pregnant women and sick neonates",
    "96. PMMVY: Rs.5000 maternity benefit in 3 installments for first live birth",
    "97. RBSK: 4Ds - Defects at birth, Deficiencies, Diseases, Developmental delays; 0-18 years",
    "98. HWC: CHO is in-charge; 12 service packages; CPHC; teleconsultation via e-Sanjeevani",
    "99. MJPJAY (Maharashtra): Rs.1.5 lakh per family per year health cover; 972 procedures",
    "100. Article 47 (DPSP): State duty to raise nutritional levels and improve public health",
]
# Two-column facts layout
fact_rows = []
for i in range(len(facts_col1)):
    f1 = facts_col1[i] if i < len(facts_col1) else ""
    f2 = facts_col2[i] if i < len(facts_col2) else ""
    bg = LIGHT_GRAY if i % 2 == 0 else WHITE
    fact_rows.append((f1, f2, bg))

all_fact_data = []
for f1, f2, bg in fact_rows:
    all_fact_data.append([
        Paragraph(f1, S("ff1", fontSize=9, fontName="Helvetica", textColor=DARK_TEXT, leading=13)),
        Paragraph(f2, S("ff2", fontSize=9, fontName="Helvetica", textColor=DARK_TEXT, leading=13)),
    ])

fact_t = Table(all_fact_data, colWidths=[(W - 3.6*cm)/2, (W - 3.6*cm)/2])
row_colors = []
for i in range(len(all_fact_data)):
    bg = LIGHT_GRAY if i % 2 == 0 else WHITE
    row_colors.append(("BACKGROUND", (0, i), (-1, i), bg))
style_cmds = [
    ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
    ("INNERGRID", (0,0), (-1,-1), 0.25, MID_GRAY),
    ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
] + row_colors
fact_t.setStyle(TableStyle(style_cmds))
story.append(fact_t)
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# CH 14: MOCK MCQs
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_hdr("Chapter 14: Mock MCQs - Public Health (30 Questions)", "Maharashtra CHO Pattern"))
story.append(sp(2))
mcqs = [
    ("1. Winslow's definition of Public Health was given in which year?",
     ["A. 1900", "B. 1920", "C. 1948", "D. 1978"], "B. 1920"),
    ("2. 'Health for All by 2000 AD' was adopted as a global goal by WHO General Assembly in:",
     ["A. 1973", "B. 1975", "C. 1977", "D. 1978"], "C. 1977"),
    ("3. The Alma-Ata Declaration on Primary Health Care was held in:",
     ["A. 1974, Geneva", "B. 1976, New York", "C. 1978, USSR", "D. 1986, Ottawa"], "C. 1978, USSR"),
    ("4. How many components of Primary Health Care were identified at Alma-Ata?",
     ["A. 5", "B. 6", "C. 8", "D. 10"], "C. 8"),
    ("5. The Ottawa Charter on Health Promotion was adopted in:",
     ["A. 1978", "B. 1982", "C. 1984", "D. 1986"], "D. 1986"),
    ("6. How many action areas does the Ottawa Charter define for health promotion?",
     ["A. 3", "B. 4", "C. 5", "D. 6"], "C. 5"),
    ("7. The 'Iceberg phenomenon' in epidemiology refers to:",
     ["A. Cold-chain failure in vaccines", "B. Subclinical cases being far more than clinical cases",
      "C. Tip of disease visible in X-ray", "D. Late presentation of disease to hospital"], "B. Subclinical cases being far more than clinical cases"),
    ("8. Prevalence is related to incidence by which formula?",
     ["A. Prevalence = Incidence / Duration", "B. Prevalence = Incidence x Duration",
      "C. Prevalence = Incidence + Duration", "D. Prevalence = Incidence - Duration"], "B. Prevalence = Incidence x Duration"),
    ("9. The 'weakest link' concept in disease control was demonstrated by John Snow by:",
     ["A. Developing the first vaccine", "B. Removing the Broad Street pump handle",
      "C. Introducing chlorination of water", "D. Quarantining cholera patients"], "B. Removing the Broad Street pump handle"),
    ("10. Residual chlorine at consumer end in drinking water should be:",
     ["A. 0.05 mg/L", "B. 0.1 mg/L", "C. 0.2 mg/L", "D. 0.5 mg/L"], "C. 0.2 mg/L"),
    ("11. Coliform bacteria count in drinking water should be:",
     ["A. Less than 10/100 mL", "B. Less than 5/100 mL",
      "C. Less than 1/100 mL", "D. Zero"], "D. Zero"),
    ("12. Which is the ONLY vaccine in UIP stored at -20 degrees Celsius?",
     ["A. BCG", "B. DPT", "C. OPV", "D. Hepatitis B"], "C. OPV"),
    ("13. BCG vaccine is given by which route?",
     ["A. Oral", "B. Subcutaneous", "C. Intradermal", "D. Intramuscular"], "C. Intradermal"),
    ("14. Pentavalent vaccine protects against how many antigens?",
     ["A. 3", "B. 4", "C. 5", "D. 6"], "C. 5"),
    ("15. At what temperature should autoclave be set for sterilization?",
     ["A. 100 deg C, 5 psi", "B. 121 deg C, 15 psi", "C. 134 deg C, 30 psi", "D. 160 deg C, 15 psi"], "B. 121 deg C, 15 psi"),
    ("16. According to WHO 5 Moments of Hand Hygiene, hand hygiene should be performed:",
     ["A. Only before patient contact and after body fluid exposure",
      "B. Before patient contact, before aseptic procedure, after fluid exposure, after patient contact, after touching environment",
      "C. Only when hands are visibly dirty",
      "D. Three times per shift"], "B. Before patient contact, before aseptic procedure, after fluid exposure, after patient contact, after touching environment"),
    ("17. IDSP 'P' form is filled at which level?",
     ["A. Community level by ASHA", "B. PHC level by Medical Officer",
      "C. District lab by microbiologist", "D. State level by epidemiologist"], "B. PHC level by Medical Officer"),
    ("18. In disease epidemiology, an EPIDEMIC means:",
     ["A. Disease constantly present at expected levels", "B. Disease affecting many countries",
      "C. Disease occurrence clearly exceeding normal expectancy in a defined area",
      "D. A disease with very high mortality"], "C. Disease occurrence clearly exceeding normal expectancy in a defined area"),
    ("19. The Case Fatality Rate (CFR) is calculated as:",
     ["A. Deaths / Population x 100", "B. Deaths from disease / Cases of disease x 100",
      "C. Deaths / Live births x 1000", "D. Cases / Population at risk x 100"], "B. Deaths from disease / Cases of disease x 100"),
    ("20. Which study design is BEST for studying rare diseases?",
     ["A. Cross-sectional study", "B. Cohort study",
      "C. Case-control study", "D. Ecological study"], "C. Case-control study"),
    ("21. Most dangerous air pollutant in terms of health impact is:",
     ["A. Carbon monoxide", "B. Sulfur dioxide", "C. PM10", "D. PM2.5"], "D. PM2.5"),
    ("22. Which bag color is used for anatomical waste in BMW management?",
     ["A. Red", "B. Yellow", "C. Blue", "D. White"], "B. Yellow"),
    ("23. HIV Post-Exposure Prophylaxis (PEP) should be started within:",
     ["A. 24 hours", "B. 48 hours", "C. 72 hours", "D. 7 days"], "C. 72 hours"),
    ("24. The 'Iceberg' phenomenon is most relevant for which disease?",
     ["A. Rabies", "B. Cholera", "C. Polio", "D. Tetanus"], "C. Polio"),
    ("25. Silicosis is most common in workers engaged in:",
     ["A. Cotton textile industry", "B. Stone quarrying and mining",
      "C. Asbestos manufacturing", "D. Lead battery manufacturing"], "B. Stone quarrying and mining"),
    ("26. KAP study stands for:",
     ["A. Knowledge, Action, Prevention", "B. Knowledge, Attitude, Practice",
      "C. Knowledge, Assessment, Planning", "D. Key Action Points"], "B. Knowledge, Attitude, Practice"),
    ("27. The sub-centre serves a population of how many in hilly/tribal areas?",
     ["A. 5000", "B. 3000", "C. 1000", "D. 10000"], "B. 3000"),
    ("28. In Maharashtra, the Mahatma Jyotiba Phule Jan Arogya Yojana (MJPJAY) provides health cover of:",
     ["A. Rs.50,000", "B. Rs.1 lakh", "C. Rs.1.5 lakh", "D. Rs.5 lakh"], "C. Rs.1.5 lakh"),
    ("29. According to NFHS-5, what percentage of children under 5 years are stunted in India?",
     ["A. 25.5%", "B. 30.9%", "C. 35.5%", "D. 40.2%"], "C. 35.5%"),
    ("30. Article 47 of the Indian Constitution deals with:",
     ["A. Right to life and personal liberty", "B. Right to equality",
      "C. State duty to raise nutritional levels and improve public health",
      "D. Prohibition of discrimination"], "C. State duty to raise nutritional levels and improve public health"),
]
for q_text, options, answer in mcqs:
    story.append(KeepTogether([
        Paragraph(f"<b>{q_text}</b>", S("qt", fontSize=10, fontName="Helvetica-Bold",
            textColor=DARK_BLUE, spaceBefore=8, spaceAfter=3)),
        *[Paragraph(f"  {opt}", S(f"opt{opt[0]}{id(opt)}", fontSize=9.5,
            fontName="Helvetica-Bold" if opt == answer else "Helvetica",
            textColor=GREEN if opt == answer else DARK_TEXT,
            leading=13, leftIndent=18)) for opt in options],
        Paragraph(f"<i>Ans: {answer}</i>", S("ans", fontSize=9,
            fontName="Helvetica-Oblique", textColor=GREEN,
            leftIndent=18, spaceBefore=2, spaceAfter=5)),
    ]))

story.append(sp(3))
story.append(hr())
story.append(Paragraph(
    "All the best for your Maharashtra CHO Exam! "
    "Master Public Health (Park's PSM) + NHM Programmes = guaranteed high score. "
    "Practice 50 MCQs daily.",
    S("fn", fontSize=10, fontName="Helvetica-Oblique",
        textColor=DARK_BLUE, alignment=TA_CENTER, spaceBefore=6)))
story.append(sp(2))
story.append(Paragraph(
    "MH CHO Public Health Study Guide | Park's PSM Reference | NHM Maharashtra | July 2026 Edition",
    footer_s))

# BUILD
doc.build(story)
print(f"PDF created: {OUTPUT}")
!

Failed to create session: bad request: failed to resolve container IP after 3 attempts: no IP address found. Is the Sandbox started?

We encountered an error while processing your request. Please try again or reach out to us for help.

โœ‰๏ธhi@orris.care
This is a shared conversation. Sign in to Orris to start your own chat.