High yield topics of cho with MCQ
Cho maharastra
CHO Community Health Officer Maharashtra exam high yield topics syllabus 2025 2026
CHO Maharashtra NHM exam MCQ important topics previous year questions
| Section | Questions | Marks |
|---|---|---|
| Health Subjects (15 sub-topics) | 60 | 60 |
| General Knowledge | 20 | 20 |
| NHM Program Related | 20 | 20 |
| Total | 100 | 100 |
| Program | Key Fact |
|---|---|
| ASHA | 1 per 1000 population, incentive-based |
| Ayushman Bharat - HWC | 1.5 lakh HWCs, expanded 12 services |
| PMJAY | Cover up to โน5 lakh/family/year |
| NHM pillars | Reproductive, Maternal, Newborn, Child, Adolescent, Elderly (RMNCH+A) |
| Mission Indradhanush | Full immunisation target |
| Poshan Abhiyan | Reduce stunting, wasting, undernutrition |
| RMNCH+A | Continuum of care approach |
| JSSK | Free services to pregnant women + sick newborns |
| Topic | Value/Fact |
|---|---|
| ANC visits (WHO 2016) | 8 visits |
| PMSMA day | 9th of every month |
| ORS composition | 75 mEq/L Na, 75 mEq/L Glucose |
| Exclusive breastfeeding | 6 months |
| MUAC for SAM | <11.5 cm |
| SAM W/H ratio | <-3 SD or <70% of median |
| Hb cutoff for anaemia in pregnancy | <11 g/dL |
| TB treatment (Cat 1) | 2HRZE + 4HR |
| CD4 count to start ART | <200 (or any stage) |
| Cold chain temperature for vaccines | +2ยฐC to +8ยฐC |
| PHC population coverage | 30,000 (plain) / 20,000 (hilly) |
| CHC beds | 30 beds |
| JSY cash for rural BPL (MPS) | โน1400 |
| JSSK beneficiaries | Pregnant women + sick newborns (0-30 days) |
Create a study guide PDF with MCQs for each topic
mkdir -p /home/daytona/workspace/cho-maharashtra && ls /home/daytona/workspace/cโฆ
~/cho-maharashtra/generate_cho_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
OUTPUT_PATH = "/home/daytona/workspace/cho-maharashtra/CHO_Maharashtra_Study_Guide.pdf"
# โโ Color palette โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
RED = colors.HexColor("#C0392B")
DARK_RED = colors.HexColor("#922B21")
ORANGE = colors.HexColor("#E67E22")
GREEN = colors.HexColor("#1E8449")
BLUE = colors.HexColor("#1A5276")
LIGHT_BG = colors.HexColor("#FDFEFE")
HEADER_BG = colors.HexColor("#1A5276")
ALT_BG = colors.HexColor("#EBF5FB")
CORRECT_BG= colors.HexColor("#D5F5E3")
YELLOW_BG = colors.HexColor("#FEF9E7")
RED_BG = colors.HexColor("#FDEDEC")
GRAY = colors.HexColor("#566573")
# โโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
cover_title = S("CoverTitle",
fontSize=30, leading=36, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=8)
cover_sub = S("CoverSub",
fontSize=16, leading=22, textColor=colors.HexColor("#AED6F1"),
fontName="Helvetica", alignment=TA_CENTER, spaceAfter=4)
cover_info = S("CoverInfo",
fontSize=12, leading=16, textColor=colors.HexColor("#D5D8DC"),
fontName="Helvetica", alignment=TA_CENTER, spaceAfter=4)
chapter_title = S("ChapterTitle",
fontSize=18, leading=24, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_CENTER,
spaceBefore=4, spaceAfter=4)
section_heading = S("SectionHeading",
fontSize=14, leading=18, textColor=BLUE,
fontName="Helvetica-Bold", spaceBefore=14, spaceAfter=6,
borderPad=4)
sub_heading = S("SubHeading",
fontSize=11, leading=15, textColor=DARK_RED,
fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=4)
body = S("Body",
fontSize=10, leading=14, textColor=colors.black,
fontName="Helvetica", spaceAfter=3)
bullet_style = S("Bullet",
fontSize=10, leading=14, textColor=colors.black,
fontName="Helvetica", leftIndent=16, spaceAfter=2,
bulletIndent=6)
q_style = S("QStyle",
fontSize=10.5, leading=15, textColor=BLUE,
fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)
opt_style = S("OptStyle",
fontSize=10, leading=14, textColor=colors.black,
fontName="Helvetica", leftIndent=20, spaceAfter=2)
ans_style = S("AnsStyle",
fontSize=10, leading=14, textColor=GREEN,
fontName="Helvetica-Bold", leftIndent=20, spaceAfter=6)
exp_style = S("ExpStyle",
fontSize=9.5, leading=13, textColor=GRAY,
fontName="Helvetica-Oblique", leftIndent=20, spaceAfter=8)
toc_style = S("TocStyle",
fontSize=11, leading=16, textColor=BLUE,
fontName="Helvetica", spaceAfter=3)
key_fact_style = S("KeyFact",
fontSize=9.5, leading=13, textColor=colors.black,
fontName="Helvetica")
note_style = S("NoteStyle",
fontSize=10, leading=14, textColor=DARK_RED,
fontName="Helvetica-Bold", leftIndent=10, spaceAfter=6)
# โโ Helper: colored banner โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def banner(text, bg=HEADER_BG, text_style=None):
style = text_style or chapter_title
t = Table([[Paragraph(text, style)]], colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", [6,6,6,6]),
]))
return t
def section_banner(text, bg=BLUE):
style = S("SB", fontSize=13, leading=18, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_CENTER)
t = Table([[Paragraph(text, style)]], colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("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 highlight_box(items, bg=YELLOW_BG, heading=None):
"""Render a shaded info box with bullet items."""
content = []
if heading:
content.append(Paragraph(heading, sub_heading))
for item in items:
content.append(Paragraph(f"โข {item}", key_fact_style))
t = Table([[content]], colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("BOX", (0,0), (-1,-1), 0.5, GRAY),
]))
return t
def mcq_block(q_num, question, options, answer_letter, answer_text, explanation=""):
"""Render a single MCQ with options, answer and explanation."""
rows = []
rows.append(Paragraph(f"Q{q_num}. {question}", q_style))
for opt in options:
letter = opt[0]
if letter == answer_letter:
rows.append(Paragraph(f" {opt}", ans_style))
else:
rows.append(Paragraph(f" {opt}", opt_style))
rows.append(Paragraph(f"Answer: ({answer_letter}) {answer_text}", ans_style))
if explanation:
rows.append(Paragraph(f"Explanation: {explanation}", exp_style))
t = Table([[rows]], colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), CORRECT_BG),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("BOX", (0,0), (-1,-1), 0.5, GREEN),
]))
return t
def key_table(data, col_headers, col_widths):
table_data = [col_headers] + data
t = Table(table_data, colWidths=col_widths)
style = [
("BACKGROUND", (0,0), (-1,0), HEADER_BG),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("FONTSIZE", (0,1), (-1,-1), 9.5),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, ALT_BG]),
("GRID", (0,0), (-1,-1), 0.4, 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),
]
t.setStyle(TableStyle(style))
return t
# โโ Build document โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc = SimpleDocTemplate(
OUTPUT_PATH,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="NHM Maharashtra CHO Study Guide",
author="Orris AI"
)
story = []
# ============================================================
# COVER PAGE
# ============================================================
def cover_bg(canvas, doc):
canvas.saveState()
canvas.setFillColor(HEADER_BG)
canvas.rect(0, 0, A4[0], A4[1], fill=1, stroke=0)
canvas.setFillColor(colors.HexColor("#154360"))
canvas.rect(0, 0, A4[0], A4[1]*0.35, fill=1, stroke=0)
canvas.restoreState()
story.append(Spacer(1, 3*cm))
story.append(Paragraph("NHM Maharashtra", cover_title))
story.append(Paragraph("Community Health Officer (CHO)", cover_sub))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Complete Study Guide with MCQs",
S("cs2", fontSize=22, leading=28, textColor=colors.HexColor("#F9E79F"),
fontName="Helvetica-Bold", alignment=TA_CENTER)))
story.append(Spacer(1, 1*cm))
cover_data = [
["100 High-Yield MCQs", "All 15 Sub-topics Covered"],
["NHM Programs (20 Marks)", "Quick Revision Tables"],
["Exam Pattern 2025-26", "No Negative Marking Tips"],
]
ct = Table(cover_data, colWidths=[8*cm, 8*cm])
ct.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#1F618D")),
("TEXTCOLOR", (0,0), (-1,-1), colors.white),
("FONTNAME", (0,0), (-1,-1), "Helvetica"),
("FONTSIZE", (0,0), (-1,-1), 11),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#5DADE2")),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
story.append(ct)
story.append(Spacer(1, 1.5*cm))
story.append(Paragraph("Prepared by Orris AI | July 2026", cover_info))
story.append(Paragraph("Based on Official NHM Maharashtra CHO Syllabus", cover_info))
story.append(PageBreak())
# ============================================================
# EXAM PATTERN PAGE
# ============================================================
story.append(banner("EXAM PATTERN & OVERVIEW"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("NHM Maharashtra CHO Exam 2025-26", section_heading))
pattern_data = [
["Component", "Details"],
["Exam Mode", "Computer-Based Test (CBT) - Online"],
["Total Questions", "100 MCQs"],
["Total Marks", "100 Marks"],
["Duration", "2 Hours (120 Minutes)"],
["Negative Marking", "NONE - Attempt all questions"],
["Language", "English & Marathi"],
["Qualifying Marks", "Minimum 45 out of 100"],
["Selection", "Written Test + Document Verification"],
]
story.append(key_table(pattern_data[1:], pattern_data[0], [7*cm, 9*cm]))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Section-wise Marks Distribution", section_heading))
marks_data = [
["Section", "Topics", "Questions", "Marks"],
["Section 1", "Health Subjects (15 sub-topics)", "60", "60"],
["Section 2", "General Knowledge", "20", "20"],
["Section 3", "NHM Program Related", "20", "20"],
["TOTAL", "", "100", "100"],
]
mt = Table(marks_data, colWidths=[3*cm, 8*cm, 3*cm, 3*cm])
mt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), HEADER_BG),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTNAME", (0,-1), (-1,-1), "Helvetica-Bold"),
("BACKGROUND", (0,-1), (-1,-1), colors.HexColor("#D6EAF8")),
("FONTSIZE", (0,0), (-1,-1), 10),
("ALIGN", (2,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("ROWBACKGROUNDS", (0,1), (-1,-2), [colors.white, ALT_BG]),
("GRID", (0,0), (-1,-1), 0.5, GRAY),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(mt)
story.append(Spacer(1, 0.4*cm))
story.append(highlight_box([
"Maternal Health + NHM Programs carry HIGHEST weightage - start here",
"Communicable Diseases (TB, Malaria, HIV, Dengue) - expect 10-12 questions",
"Child Health + Immunisation schedule - always present in exam",
"No negative marking: attempt ALL 100 questions without hesitation",
"Practice PYQs - government scheme questions repeat frequently",
], heading="STRATEGY TIPS", bg=YELLOW_BG))
story.append(PageBreak())
# ============================================================
# SECTION 1 - MATERNAL HEALTH
# ============================================================
story.append(section_banner("CHAPTER 1: MATERNAL HEALTH", bg=DARK_RED))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"ANC visits: WHO 2016 = 8 visits minimum",
"PMSMA (Pradhan Mantri Surakshit Matritva Abhiyan) = 9th of every month",
"PNC visits: 48 hrs, Day 3-7, Day 28-42 (6 weeks)",
"Danger signs in pregnancy: bleeding, severe headache, visual disturbances, fits",
"Pre-eclampsia: BP >= 140/90 + proteinuria after 20 weeks",
"Drug of choice for eclampsia prevention/treatment: Magnesium Sulphate (MgSO4)",
"AMTSL (Active Management 3rd Stage Labour): Oxytocin 10 IU IM within 1 min of delivery",
"Anaemia in pregnancy: Hb < 11 g/dL | Severe: < 7 g/dL",
"JSY: Rural BPL Rs.1400, Urban BPL Rs.1000 (Maharashtra = LPS)",
"JSSK: Free services - 4 ANC, delivery, PNC, newborn care, transport, diet",
], heading="HIGH YIELD FACTS", bg=RED_BG))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Maternal Health", section_heading))
mcqs_maternal = [
(1, "The minimum number of ANC visits recommended by WHO (2016 revised guidelines) is:",
["A) 4 visits", "B) 6 visits", "C) 8 visits", "D) 12 visits"],
"C", "8 visits",
"WHO 2016 revised ANC model recommends a minimum of 8 contacts (not visits) - at 8, 12, 20, 26, 30, 34, 36, 40 weeks."),
(2, "PMSMA is conducted on which fixed day of every month?",
["A) 1st", "B) 5th", "C) 9th", "D) 15th"],
"C", "9th",
"Pradhan Mantri Surakshit Matritva Abhiyan provides comprehensive ANC on the 9th of every month at designated facilities."),
(3, "Drug of choice for prevention and treatment of eclampsia is:",
["A) Diazepam", "B) Phenobarbitone", "C) Magnesium Sulphate", "D) Nifedipine"],
"C", "Magnesium Sulphate",
"MgSO4 is the drug of choice for both prevention and treatment of eclampsia. Diazepam is NOT recommended."),
(4, "Under JSY, how much cash incentive does a BPL mother receive in rural areas of Maharashtra (Low Performing State)?",
["A) Rs. 500", "B) Rs. 700", "C) Rs. 1400", "D) Rs. 1000"],
"C", "Rs. 1400",
"Maharashtra is a Low Performing State (LPS). Rural BPL = Rs.1400, Urban BPL = Rs.1000. In High Performing States rural = Rs.700."),
(5, "Hemoglobin cutoff for anaemia in pregnancy as per WHO is:",
["A) Hb < 12 g/dL", "B) Hb < 11.5 g/dL", "C) Hb < 11 g/dL", "D) Hb < 10 g/dL"],
"C", "Hb < 11 g/dL",
"WHO defines anaemia in pregnancy as Hb < 11 g/dL. Severe anaemia = Hb < 7 g/dL."),
(6, "AMTSL (Active Management of Third Stage of Labour) includes all EXCEPT:",
["A) Oxytocin 10 IU IM within 1 minute of delivery", "B) Controlled cord traction",
"C) Uterine massage after placenta delivery", "D) Manual removal of placenta routinely"],
"D", "Manual removal of placenta routinely",
"AMTSL = Oxytocin + Controlled cord traction + Uterine massage. Manual removal of placenta is NOT routine."),
(7, "JSSK provides free services to which beneficiaries?",
["A) Only pregnant women", "B) Only sick newborns",
"C) Pregnant women + sick newborns up to 30 days", "D) Children up to 5 years"],
"C", "Pregnant women + sick newborns up to 30 days",
"JSSK (Janani Shishu Suraksha Karyakram) covers all pregnant women at public health facilities and sick newborns up to 30 days."),
(8, "Pre-eclampsia is defined as hypertension after ___ weeks of gestation with proteinuria:",
["A) 16 weeks", "B) 20 weeks", "C) 24 weeks", "D) 28 weeks"],
"B", "20 weeks",
"Pre-eclampsia = BP >= 140/90 mmHg after 20 weeks + proteinuria (>= 300 mg/24 hrs or 1+ dipstick)."),
]
for m in mcqs_maternal:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 2 - CHILD HEALTH
# ============================================================
story.append(section_banner("CHAPTER 2: CHILD HEALTH & IMMUNISATION", bg=colors.HexColor("#1A5276")))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"MUAC for SAM (6-59 months): < 11.5 cm",
"MUAC for MAM: 11.5 - 12.5 cm",
"SAM W/H ratio: < -3 SD or < 70% of median",
"HBNC visits (ASHA): Day 0 (birth), 3, 7, 14, 21, 28 = 6 visits",
"Exclusive breastfeeding: 6 months",
"RBSK screens 4Ds: Defects, Deficiencies, Diseases, Developmental delays",
"KMC (Kangaroo Mother Care): skin-to-skin for LBW (< 2 kg) babies",
"Vitamin A: 1 lakh IU at 9 months, 2 lakh IU every 6 months till 5 years",
"SNCU: for sick newborns weighing < 1500 g or < 34 weeks",
"RUTF used in SAM management (Community-based - CMAM)",
], heading="HIGH YIELD FACTS", bg=colors.HexColor("#D6EAF8")))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("Immunisation Schedule (UIP)", sub_heading))
imm_data = [
["Age", "Vaccine"],
["Birth", "BCG, OPV-0, HepB-birth dose"],
["6 weeks", "OPV-1, Pentavalent-1, Rotavirus-1, PCV-1, fIPV-1"],
["10 weeks", "OPV-2, Pentavalent-2, Rotavirus-2"],
["14 weeks", "OPV-3, Pentavalent-3, Rotavirus-3, PCV-2, fIPV-2"],
["9 months", "OPV-Booster, Measles-1 (MR-1), Vit A dose-1, JE-1"],
["16-24 months", "DPT-B1, OPV-B1, MR-2, JE-2, PCV-B, Vit A dose-2"],
["5-6 years", "DPT-B2"],
["10 & 16 years", "TT/Td"],
]
story.append(key_table(imm_data[1:], imm_data[0], [5*cm, 12*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Child Health", section_heading))
mcqs_child = [
(9, "MUAC cutoff for Severe Acute Malnutrition (SAM) in children 6-59 months is:",
["A) < 12.5 cm", "B) < 11.5 cm", "C) < 13.5 cm", "D) < 10 cm"],
"B", "< 11.5 cm",
"SAM = MUAC < 11.5 cm OR W/H < -3 SD OR bilateral pitting oedema. MAM = MUAC 11.5-12.5 cm."),
(10, "The number of HBNC (Home Based Newborn Care) visits by ASHA in first 42 days is:",
["A) 4 visits", "B) 5 visits", "C) 6 visits", "D) 7 visits"],
"C", "6 visits",
"ASHA visits at Day 1 (birth day), Day 3, Day 7, Day 14, Day 21, Day 28 = 6 home visits."),
(11, "BCG vaccine is given at:",
["A) 6 weeks", "B) Birth (as early as possible)", "C) 3 months", "D) 1 year"],
"B", "Birth (as early as possible)",
"BCG is given at birth, preferably within 24 hrs. It protects against severe forms of TB."),
(12, "In RBSK, the '4Ds' screened stand for:",
["A) Defects, Disability, Disorders, Deformities",
"B) Defects at birth, Deficiencies, Diseases, Developmental Delays",
"C) Diseases, Disorders, Defects, Deaths",
"D) Disability, Disease, Death, Defects"],
"B", "Defects at birth, Deficiencies, Diseases, Developmental Delays",
"RBSK screens 32 conditions under 4Ds at birth, Anganwadi, and school levels (6-18 years)."),
(13, "Exclusive breastfeeding is recommended for:",
["A) 3 months", "B) 4 months", "C) 6 months", "D) 12 months"],
"C", "6 months",
"WHO and GOI recommend EXCLUSIVE breastfeeding for 6 months, followed by complementary feeding with continued BF up to 2 years."),
(14, "KMC (Kangaroo Mother Care) is recommended for newborns with birth weight less than:",
["A) 1.5 kg", "B) 1.8 kg", "C) 2 kg", "D) 2.5 kg"],
"C", "2 kg",
"KMC = skin-to-skin contact between mother and LBW baby (< 2000 g). It reduces mortality, hypothermia, and improves breastfeeding."),
(15, "RUTF (Ready to Use Therapeutic Food) is used in management of:",
["A) MAM", "B) SAM", "C) Obesity", "D) Micronutrient deficiency only"],
"B", "SAM",
"RUTF is used for SAM without complications under CMAM (Community-Based Management of Acute Malnutrition)."),
(16, "Under UIP, Pentavalent vaccine covers which 5 diseases?",
["A) DPT + Polio + Hib", "B) DPT + HepB + Hib",
"C) DPT + MMR + HepB", "D) DPT + Polio + HepB"],
"B", "DPT + HepB + Hib",
"Pentavalent = Diphtheria + Pertussis + Tetanus + Hepatitis B + Haemophilus influenzae type b. Given at 6, 10, 14 weeks."),
]
for m in mcqs_child:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 3 - COMMUNICABLE DISEASES
# ============================================================
story.append(section_banner("CHAPTER 3: COMMUNICABLE DISEASES", bg=colors.HexColor("#784212")))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"TB: DOTS, 2HRZE/4HR, GeneXpert (CBNAAT), NIKSHAY portal",
"TB notification is MANDATORY under Revised National TB Programme (RNTCP/NTEP)",
"Malaria vector: Anopheles | Dengue vector: Aedes aegypti | Kala-azar: Sandfly (Phlebotomus)",
"Dengue: NS1 antigen Day 1-5 | IgM Day 5 onwards | NS1 most useful early",
"HIV window period: 3-12 weeks | ART for ALL HIV positive (regardless of CD4)",
"Leprosy: PB = 1-5 patches, MDT 6 months | MB = > 5 patches, MDT 12 months",
"NVBDCP = National Vector Borne Disease Control Programme",
"ORS formula: 75 mEq/L Na + 75 mmol/L Glucose + 65 mEq/L Cl (WHO 2002 low osmolarity)",
], heading="HIGH YIELD FACTS", bg=colors.HexColor("#FBEEE6")))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Communicable Diseases", section_heading))
mcqs_comm = [
(17, "The vector for dengue fever is:",
["A) Culex mosquito", "B) Anopheles mosquito", "C) Aedes aegypti", "D) Sandfly"],
"C", "Aedes aegypti",
"Aedes aegypti is the primary vector for Dengue, Chikungunya, Zika, and Yellow fever. It breeds in clean stagnant water."),
(18, "In Leprosy, the number of skin patches in Paucibacillary (PB) leprosy is:",
["A) > 5 patches", "B) 1-5 patches", "C) Only 1 patch", "D) > 10 patches"],
"B", "1-5 patches",
"PB leprosy: 1-5 skin patches, slit skin smear negative, MDT for 6 months. MB: > 5 patches, smear positive, MDT 12 months."),
(19, "The Gold standard diagnostic test for tuberculosis is:",
["A) Mantoux test", "B) Chest X-ray", "C) Sputum culture (MGIT/LJ)", "D) CBNAAT/GeneXpert"],
"C", "Sputum culture (MGIT/LJ)",
"Sputum culture (MGIT or LJ medium) is the gold standard. CBNAAT/GeneXpert is the preferred rapid molecular test under NTEP."),
(20, "Window period for HIV refers to:",
["A) 1-2 weeks", "B) 1-2 months", "C) Period between infection and detectable antibodies (3-12 weeks)", "D) Incubation period"],
"C", "Period between infection and detectable antibodies (3-12 weeks)",
"Window period = time from HIV infection to when antibody test becomes positive. During this period, tests may be false negative."),
(21, "NS1 antigen test for dengue is most useful during which period of illness?",
["A) Day 1-5 (early febrile phase)", "B) Day 5-10", "C) After day 10", "D) Any time"],
"A", "Day 1-5 (early febrile phase)",
"NS1 antigen appears early (Day 1-5). After Day 5, IgM antibody becomes positive. NS1 is most sensitive in early days."),
(22, "NIKSHAY portal is used for:",
["A) Malaria reporting", "B) TB notification and monitoring", "C) HIV surveillance", "D) NCD data"],
"B", "TB notification and monitoring",
"NIKSHAY is the web-based case-based tracking system for TB under NTEP (National TB Elimination Programme)."),
(23, "First line treatment for uncomplicated Plasmodium falciparum malaria in India is:",
["A) Chloroquine", "B) Quinine", "C) ACT (Artemisinin-based Combination Therapy)", "D) Primaquine alone"],
"C", "ACT (Artemisinin-based Combination Therapy)",
"For P.falciparum: ACT (Artesunate + SP) for 3 days + Primaquine single dose on Day 2. Chloroquine for P.vivax."),
(24, "WHO Low Osmolarity ORS contains sodium in the concentration of:",
["A) 90 mEq/L", "B) 75 mEq/L", "C) 60 mEq/L", "D) 45 mEq/L"],
"B", "75 mEq/L",
"WHO 2002 Low Osmolarity ORS: Na 75, Cl 65, Glucose 75, K 20 mEq/L. Total osmolarity = 245 mOsm/L."),
]
for m in mcqs_comm:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 4 - NCDs
# ============================================================
story.append(section_banner("CHAPTER 4: NON-COMMUNICABLE DISEASES (NCD)", bg=colors.HexColor("#6C3483")))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"WHO Hypertension: >= 140/90 mmHg (JNC-8: >= 140/90 for < 60 yrs, >= 150/90 for > 60 yrs)",
"Diabetes FBS: >= 126 mg/dL | PPBS: >= 200 mg/dL | HbA1c >= 6.5%",
"NPCDCS: National Programme for Cancer, Diabetes, CVD and Stroke",
"Cervical cancer screening at HWC: VIA (Visual Inspection with Acetic Acid)",
"Breast cancer screening: CBE (Clinical Breast Examination)",
"Oral cancer screening: Visual oral examination for leukoplakia/erythroplakia",
"COTPA = Cigarettes and Other Tobacco Products Act 2003",
"NMHP = National Mental Health Programme (District Mental Health Programme - DMHP)",
"Largest NCD killer in India: Cardiovascular diseases",
], heading="HIGH YIELD FACTS", bg=colors.HexColor("#F3E5F5")))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Non-Communicable Diseases", section_heading))
mcqs_ncd = [
(25, "As per WHO, hypertension is defined as:",
["A) BP > 130/80 mmHg", "B) BP >= 140/90 mmHg", "C) BP > 150/100 mmHg", "D) BP > 120/80 mmHg"],
"B", "BP >= 140/90 mmHg",
"WHO defines hypertension as systolic >= 140 OR diastolic >= 90 mmHg on two separate occasions."),
(26, "Fasting blood sugar for diagnosis of Diabetes Mellitus is:",
["A) >= 110 mg/dL", "B) >= 120 mg/dL", "C) >= 126 mg/dL", "D) >= 200 mg/dL"],
"C", ">= 126 mg/dL",
"Diagnostic criteria: FBS >= 126 mg/dL OR PPBS >= 200 mg/dL OR HbA1c >= 6.5% OR Random BS >= 200 mg/dL with symptoms."),
(27, "Cervical cancer screening at Health and Wellness Centres (HWC) is done by:",
["A) Pap smear", "B) Colposcopy", "C) VIA (Visual Inspection with Acetic Acid)", "D) HPV DNA test"],
"C", "VIA (Visual Inspection with Acetic Acid)",
"VIA is the recommended screening method at primary level in India as it is cheap, simple, and results are immediate."),
(28, "NPCDCS stands for:",
["A) National Programme for Communicable Diseases Control and Surveillance",
"B) National Programme for Cancer, Diabetes, CVD and Stroke",
"C) National Programme for Child Development and Community Services",
"D) National Public Care and Disease Control Services"],
"B", "National Programme for Cancer, Diabetes, CVD and Stroke",
"NPCDCS was launched in 2010 to prevent and control major NCDs through awareness, early detection and referral."),
(29, "The main objective of NMHP (National Mental Health Programme) is:",
["A) Eradicate mental illness", "B) Provide free psychiatric drugs only",
"C) Community-based mental health services through District Mental Health Programme",
"D) Build psychiatric hospitals in all districts"],
"C", "Community-based mental health services through District Mental Health Programme",
"NMHP was launched in 1982. DMHP (District Mental Health Programme) provides outreach, counselling and treatment at district level."),
(30, "Target age group for NCD screening under Ayushman Bharat HWC is:",
["A) Above 50 years", "B) Above 40 years", "C) 30 years and above", "D) 18 years and above"],
"C", "30 years and above",
"Population-based screening for Hypertension, Diabetes, and 3 common cancers (oral, breast, cervical) for age >= 30 years at HWC."),
]
for m in mcqs_ncd:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 5 - NUTRITION
# ============================================================
story.append(section_banner("CHAPTER 5: NUTRITION", bg=colors.HexColor("#1E8449")))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"Kwashiorkor: Protein deficiency - edema, moon face, fatty liver, skin changes",
"Marasmus: Calorie deficiency - wasting, no edema, old man face",
"Vit A deficiency: Night blindness, Bitot's spots, Xerophthalmia, Keratomalacia",
"Iodine deficiency: Goitre, Cretinism, hypothyroidism (IDD)",
"Iron deficiency: Microcytic hypochromic anaemia, Koilonychia (spoon nails)",
"Vit C deficiency: Scurvy - bleeding gums, perifollicular haemorrhage",
"Vit D deficiency: Rickets (children), Osteomalacia (adults)",
"Poshan Abhiyaan: Reduce stunting by 2%, anaemia by 3%, LBW by 2% annually",
"IFA supplementation: Adolescents = weekly | Pregnant women = daily",
"ICDS: Supplementary nutrition, immunisation, health check-up (< 6 years, pregnant, lactating women)",
], heading="HIGH YIELD FACTS", bg=CORRECT_BG))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Nutrition", section_heading))
mcqs_nutr = [
(31, "Bitot's spots on the eye are a sign of deficiency of:",
["A) Vitamin D", "B) Vitamin C", "C) Vitamin A", "D) Vitamin B12"],
"C", "Vitamin A",
"Bitot's spots are foamy, white, triangular deposits on conjunctiva - pathognomonic of Vitamin A deficiency (Xerophthalmia)."),
(32, "RUTF (Ready to Use Therapeutic Food) is used in management of:",
["A) MAM", "B) Obesity", "C) SAM without complications", "D) Micronutrient deficiency"],
"C", "SAM without complications",
"RUTF (F-100 based paste) is given at home under CMAM for uncomplicated SAM. Complicated SAM requires NRC/hospital."),
(33, "Under Anaemia Mukt Bharat, IFA supplementation for adolescents (10-19 years) is given:",
["A) Daily", "B) Weekly", "C) Twice weekly", "D) Monthly"],
"B", "Weekly",
"Adolescents get IFA weekly (1 blue tablet = 60 mg iron + 500 mcg folic acid). Pregnant women get daily IFA (large red tablet)."),
(34, "Classical features of Kwashiorkor include all EXCEPT:",
["A) Pitting oedema", "B) Moon face", "C) Severe wasting and loss of subcutaneous fat", "D) Flaky paint dermatosis"],
"C", "Severe wasting and loss of subcutaneous fat",
"Severe wasting is a feature of MARASMUS (calorie deficiency), not Kwashiorkor (protein deficiency). Kwashiorkor has oedema, fatty liver."),
(35, "Iodine deficiency during pregnancy can cause which condition in newborn?",
["A) Rickets", "B) Cretinism", "C) Marasmus", "D) Pellagra"],
"B", "Cretinism",
"Severe iodine deficiency in pregnancy causes cretinism (neurological damage, hypothyroidism, stunting) in the newborn."),
(36, "POSHAN Abhiyaan (National Nutrition Mission) targets annual reduction in stunting by:",
["A) 1%", "B) 2%", "C) 3%", "D) 5%"],
"B", "2%",
"POSHAN Abhiyaan targets: Stunting -2%/yr, Undernutrition -2%/yr, Anaemia -3%/yr, LBW -2%/yr. Launched in 2018."),
]
for m in mcqs_nutr:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 6 - PUBLIC HEALTH BASICS
# ============================================================
story.append(section_banner("CHAPTER 6: PUBLIC HEALTH BASICS", bg=colors.HexColor("#0E6655")))
story.append(Spacer(1, 0.2*cm))
story.append(highlight_box([
"Subcenter: 5000 (plain) / 3000 (hilly/tribal/desert) population",
"PHC: 30,000 (plain) / 20,000 (hilly/tribal) population",
"CHC: 1,20,000 population | 30 beds | First Referral Unit (FRU)",
"Sensitivity: Ability to detect TRUE POSITIVES (TP/TP+FN)",
"Specificity: Ability to detect TRUE NEGATIVES (TN/TN+FP)",
"PPV (Positive Predictive Value): increases with high prevalence",
"Herd immunity for measles: 92-95%",
"Cold chain temperature for vaccines: +2 to +8 degrees C",
"Epidemiological triad: Agent + Host + Environment",
"Levels of prevention: Primary (health promotion/protection), Secondary (early detection), Tertiary (rehabilitation)",
], heading="HIGH YIELD FACTS", bg=colors.HexColor("#E8F8F5")))
story.append(Spacer(1, 0.3*cm))
# Health Infrastructure Table
infra_data = [
["Level", "Facility", "Population Served", "Beds"],
["Sub-district", "Sub-centre (SC)", "5000 (plain)/3000 (hill)", "Nil"],
["Primary", "PHC", "30,000 (plain)/20,000 (hill)", "4-6"],
["Secondary", "CHC", "1,20,000", "30"],
["Secondary", "SDH (Sub-divisional Hospital)", "5-6 lakh", "31-100"],
["Tertiary", "District Hospital", "10-12 lakh", "101-500"],
]
story.append(key_table(infra_data[1:], infra_data[0], [3.5*cm, 4.5*cm, 5.5*cm, 3.5*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - Public Health Basics", section_heading))
mcqs_ph = [
(37, "A subcenter (SC) caters to a population of how many in plain areas?",
["A) 3000", "B) 5000", "C) 10,000", "D) 30,000"],
"B", "5000",
"Subcenter: 5000 (plain), 3000 (hilly/tribal/desert). Staffed by 1 ANM + 1 MPW (Male)."),
(38, "Sensitivity of a diagnostic test refers to:",
["A) Ability to correctly identify true negatives",
"B) Ability to correctly identify true positives",
"C) Proportion of positive tests that are truly positive",
"D) Overall accuracy of the test"],
"B", "Ability to correctly identify true positives",
"Sensitivity = TP/(TP+FN). High sensitivity = fewer false negatives. Used for SCREENING (rule OUT disease = SNOUT)."),
(39, "Herd immunity threshold for measles is approximately:",
["A) 50-60%", "B) 70-75%", "C) 80-85%", "D) 92-95%"],
"D", "92-95%",
"Measles has very high R0 (12-18), requiring 92-95% immunity for herd protection. This is why 2-dose MR vaccine is given."),
(40, "The recommended temperature for cold chain maintenance of vaccines is:",
["A) 0 to 4 degrees C", "B) 2 to 8 degrees C", "C) -15 to -25 degrees C", "D) 4 to 10 degrees C"],
"B", "2 to 8 degrees C",
"+2 to +8 degrees C is for refrigerators. OPV and Varicella need -15 to -25 degrees C at the national/state level only."),
(41, "Primary level of prevention includes:",
["A) Early diagnosis and treatment", "B) Disability limitation",
"C) Health promotion and specific protection", "D) Rehabilitation"],
"C", "Health promotion and specific protection",
"Leavell & Clark: Primary = Health promotion + Specific protection. Secondary = Early diagnosis + Treatment. Tertiary = Rehab."),
(42, "The CHC (Community Health Centre) serves a population of:",
["A) 30,000", "B) 60,000", "C) 1,00,000", "D) 1,20,000"],
"D", "1,20,000",
"CHC serves 1,20,000 in plain areas. It has 30 beds and 4 specialists (Surgery, OBG, Medicine, Paediatrics). Acts as First Referral Unit."),
]
for m in mcqs_ph:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# CHAPTER 7 - NHM PROGRAMS (20 Marks)
# ============================================================
story.append(section_banner("CHAPTER 7: NHM PROGRAMS & SCHEMES (20 Marks)", bg=colors.HexColor("#B7950B")))
story.append(Spacer(1, 0.2*cm))
nhm_data = [
["Program/Scheme", "Key Feature"],
["ASHA", "1 per 1000 pop; Accredited Social Health Activist; incentive-based"],
["NHM", "Launched 2013 (NRHM 2005 + NUHM); umbrella programme"],
["Ayushman Bharat - PMJAY", "Rs.5 lakh/family/year; 10.74 cr families"],
["Ayushman Bharat - HWC", "1.5 lakh HWCs; 12 CPHC services; AB-HWC portal"],
["RMNCH+A", "Reproductive, Maternal, Newborn, Child, Adolescent Health"],
["JSY", "Cash incentive for institutional delivery; BPL families"],
["JSSK", "Free services: ANC, delivery, PNC, newborn care, transport, diet"],
["PMSMA", "Free ANC on 9th every month; obstetrician/specialist"],
["RBSK", "Screening 4Ds in 0-18 years; 32 conditions; DEIC"],
["Mission Indradhanush (IMI)", "Target 90% full immunisation; intensified drives"],
["POSHAN Abhiyaan", "Reduce stunting/undernutrition/anaemia; National Nutrition Mission"],
["NPCDCS", "Prevention of Cancer, Diabetes, CVD, Stroke; District NCD clinics"],
["NTEP", "National TB Elimination Programme; target TB-free by 2025"],
["NVBDCP", "Malaria, Dengue, Filaria, Kala-azar, JE, Chikungunya control"],
["MPJAY", "Mahatma Phule Jan Arogya Yojana (Maharashtra); merged with PMJAY = Rs.5 lakh"],
]
story.append(key_table(nhm_data[1:], nhm_data[0], [6*cm, 11*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("MCQs - NHM Programs", section_heading))
mcqs_nhm = [
(43, "Under Ayushman Bharat, Health and Wellness Centres (HWC) deliver how many comprehensive primary health care service packages?",
["A) 8", "B) 10", "C) 12", "D) 15"],
"C", "12",
"12 CPHC services at HWC include: RMNCH+A, communicable diseases, NCDs, oral health, mental health, ENT, ophthalmic, trauma care."),
(44, "ASHA stands for:",
["A) Accredited Social Health Agent",
"B) Accredited Social Health Activist",
"C) Approved Social Health Assistant",
"D) Authenticated Social Health Advisor"],
"B", "Accredited Social Health Activist",
"ASHA was introduced under NRHM 2005. One ASHA per 1000 population. She is a link between community and health system."),
(45, "Under PM-JAY (Ayushman Bharat), the health cover per family per year is:",
["A) Rs. 1 lakh", "B) Rs. 2.5 lakh", "C) Rs. 5 lakh", "D) Rs. 10 lakh"],
"C", "Rs. 5 lakh",
"PMJAY provides Rs.5 lakh/family/year for secondary and tertiary hospitalisation. Cashless and paperless at empanelled hospitals."),
(46, "Mission Indradhanush (Intensified) aims to achieve full immunisation coverage of:",
["A) 80%", "B) 85%", "C) 90%", "D) 95%"],
"C", "90%",
"Mission Indradhanush was launched in 2014 targeting children and pregnant women missed under UIP. Target: 90% full immunisation."),
(47, "DEIC (District Early Intervention Centre) is set up under which programme?",
["A) JSSK", "B) RBSK", "C) PMSMA", "D) NPCDCS"],
"B", "RBSK",
"DEIC provides early interventions for children with 4Ds identified under RBSK. Each district has one DEIC."),
(48, "NIKSHAY POSHAN YOJANA provides direct benefit transfer of how much per month to TB patients?",
["A) Rs. 250", "B) Rs. 500", "C) Rs. 750", "D) Rs. 1000"],
"B", "Rs. 500",
"Nikshay Poshan Yojana provides Rs.500/month nutritional support to all TB patients for the duration of treatment."),
(49, "Rashtriya Kishor Swasthya Karyakram (RKSK) targets which age group?",
["A) 5-10 years", "B) 10-19 years", "C) 15-24 years", "D) 18-25 years"],
"B", "10-19 years",
"RKSK (National Adolescent Health Programme) targets 10-19 years. Six themes: Nutrition, SRH, substance abuse, mental health, injuries, NCDs."),
(50, "The 5th of which month is observed as World Breastfeeding Week?",
["A) June 1-7", "B) July 1-7", "C) August 1-7", "D) September 1-7"],
"C", "August 1-7",
"World Breastfeeding Week is celebrated August 1-7 every year. Theme 2023: 'Let's Make Breastfeeding and Work, Work!'"),
]
for m in mcqs_nhm:
story.append(mcq_block(*m))
story.append(Spacer(1, 0.15*cm))
story.append(PageBreak())
# ============================================================
# QUICK REVISION TABLE
# ============================================================
story.append(section_banner("QUICK REVISION - HIGH YIELD NUMBERS & FACTS", bg=DARK_RED))
story.append(Spacer(1, 0.3*cm))
quick_data = [
["Topic", "Key Value / Fact"],
["ANC Visits (WHO 2016)", "8 visits minimum"],
["PMSMA Day", "9th of every month"],
["Hb cutoff - Anaemia in pregnancy", "< 11 g/dL"],
["Hb - Severe anaemia in pregnancy", "< 7 g/dL"],
["Exclusive breastfeeding", "6 months"],
["MUAC for SAM", "< 11.5 cm"],
["MUAC for MAM", "11.5-12.5 cm"],
["HBNC visits (ASHA)", "6 visits (Day 0,3,7,14,21,28)"],
["Cold chain temperature", "+2 to +8 degrees C"],
["Subcenter population (plain)", "5,000"],
["PHC population (plain)", "30,000"],
["CHC population", "1,20,000 | 30 beds"],
["JSY - Rural BPL (Maharashtra/LPS)", "Rs. 1,400"],
["PMJAY cover", "Rs. 5 lakh/family/year"],
["ASHA ratio", "1 per 1,000 population"],
["Hypertension (WHO)", ">= 140/90 mmHg"],
["Diabetes FBS", ">= 126 mg/dL"],
["Malaria vector", "Anopheles"],
["Dengue vector", "Aedes aegypti"],
["Kala-azar vector", "Phlebotomus (Sandfly)"],
["TB treatment (Cat 1)", "2HRZE / 4HR"],
["Leprosy PB patches", "1-5 skin patches | MDT 6 months"],
["Leprosy MB patches", "> 5 skin patches | MDT 12 months"],
["Herd immunity - Measles", "92-95%"],
["Mission Indradhanush target", "90% full immunisation"],
["POSHAN Abhiyaan - Stunting target", "-2% per year"],
["Nikshay Poshan Yojana", "Rs. 500/month to TB patients"],
["Vit A - Bitot spots", "Vitamin A deficiency"],
["IFA for adolescents", "Weekly"],
["Cretinism caused by", "Iodine deficiency in pregnancy"],
]
story.append(key_table(quick_data[1:], quick_data[0], [8*cm, 9*cm]))
story.append(Spacer(1, 0.5*cm))
story.append(HRFlowable(width="100%", thickness=1.5, color=BLUE))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Best of luck for your NHM Maharashtra CHO Exam! Remember: No negative marking - attempt ALL 100 questions.",
S("final", fontSize=11, leading=16, textColor=BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER)
))
story.append(Paragraph(
"Prepared by Orris AI | July 2026 | Based on Official NHM Maharashtra CHO Syllabus 2025-26",
S("foot", fontSize=9, leading=13, textColor=GRAY, fontName="Helvetica", alignment=TA_CENTER, spaceBefore=4)
))
# โโ Build โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc.build(story)
print(f"PDF saved: {OUTPUT_PATH}")