Measles-Rubella Drive Action plan at rural PHC; team roles. 10 marks
Measles Rubella MR campaign action plan rural PHC team roles India
https://medicalguidelines.msf.org/en/viewport/mme/english/ap…
| Post | Personnel | Role |
|---|---|---|
| Crowd Control / Queue Management | ASHA / AWW | Maintain orderly queue; separate sick children |
| Registrar | ANM helper / AWW | Record child's name, age, address on tally sheet |
| Vaccinator | ANM / trained vaccinator | Administer MR vaccine (0.5 mL SC, outer upper arm); check VVM and expiry |
| Recorder | ANM assistant | Mark vaccination card, update immunization register |
| Observer | MO / Supervisor | Observe for AEFI for 30 minutes post-vaccination |
| AEFI responder | MO-PHC | Manage any adverse events; refer if needed |
| Team Member | Key Role |
|---|---|
| MO-PHC | Planning, micro-plan, AEFI management, supervision, reporting |
| LHV / Supervisor | Mid-level supervision, cold chain oversight |
| ANM | Vaccine logistics, cold chain, vaccination, register maintenance |
| ASHA | Mobilization, beneficiary tracking, mop-up follow-up |
| AWW | Mobilization of under-5s, site assistance, IEC |
Where it given in textbook
"The MR vaccine is being introduced through campaign, targeting around 41 crore children in the age group of 9 months to 15 years in phased manner... MR campaign was launched in February 2017 from 5 States/UTs (Karnataka, Tamil Nadu, Goa, Lakshadweep and Puducherry)... Campaign has completed 33 states and immunized 32.36 crore children (97.04% of target)."
"To be initiated as Measles Rubella (MR) campaign targeting 9 months to 15 years of age in a phased manner over a period of three years. Subsequently, the Rubella vaccine will be introduced as MR vaccine as two doses in the place of measles containing vaccine 1 and 2 at 9-12 months and 16-24 months."
| Topic | In Park's? |
|---|---|
| MR vaccine facts, launch states, coverage % | Yes (Block 6) |
| ANM duties in UIP generally | Yes (Block 12) |
| MO-PHC roles in UIP | Yes (Block 12) |
| ASHA/AWW roles | Mentioned briefly |
| "Action Plan" with phases (pre-campaign/campaign/mop-up) | NOT explicitly |
| PHC team roles for MR specifically | NOT explicitly |
In suryakantha
I can't understand the question and what to write
"If you are the Medical Officer of a rural PHC and the government tells you to conduct a Measles-Rubella vaccination campaign - what will you DO, and who will DO what?"
| Question | Answer in the exam |
|---|---|
| When do I start preparing? | Pre-campaign phase |
| How do I know how many children? | Enumeration / micro-plan |
| Where will I vaccinate? | Schools, anganwadis, outreach sites |
| Who will call the children? | ASHA, AWW |
| Who will give the injection? | ANM |
| Who checks everything is going right? | MO-PHC, Supervisor |
| What if a child gets a reaction? | AEFI management |
| What about children who were missed? | Mop-up phase |
BEFORE → DURING → AFTER
(Pre-campaign) → (Campaign day) → (Mop-up)
Yes
| Post | Who sits here | What they do |
|---|---|---|
| Post 1 - Queue | ASHA / AWW | Manage the crowd, keep order |
| Post 2 - Registration | Helper / AWW | Write child's name, age, village |
| Post 3 - Vaccination | ANM | Give MR injection (0.5 mL, subcutaneous, left upper arm) |
| Post 4 - Recording | ANM helper | Fill vaccination card and register |
| Post 5 - Observation | MO / Supervisor | Watch child for 30 minutes for any reaction (AEFI) |
| Phase | What happens |
|---|---|
| Pre-campaign | Count children, micro-plan, cold chain, train team, IEC |
| Campaign day | Register → Vaccinate → Record → Observe for AEFI |
| Post-campaign | Mop-up, calculate coverage, report AEFI |
| Person | Main job |
|---|---|
| MO-PHC | Plan + supervise + AEFI management |
| ANM | Vaccinate + cold chain + register |
| ASHA | Mobilize + follow-up |
| AWW | Mobilize under-5s + assist |
| Supervisor/LHV | Check and supervise ANMs |
Make pdf format
mkdir -p /tmp/workspace/mr-campaign && ls /tmp/workspace/
~/mr-campaign/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/tmp/workspace/mr-campaign/MR_Campaign_Action_Plan.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2*cm
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
"Title", parent=styles["Title"],
fontSize=18, textColor=colors.HexColor("#1a3c6e"),
spaceAfter=4, alignment=TA_CENTER, fontName="Helvetica-Bold"
)
subtitle_style = ParagraphStyle(
"Subtitle", parent=styles["Normal"],
fontSize=11, textColor=colors.HexColor("#444444"),
spaceAfter=12, alignment=TA_CENTER, fontName="Helvetica-Oblique"
)
h1_style = ParagraphStyle(
"H1", parent=styles["Heading1"],
fontSize=13, textColor=colors.white,
backColor=colors.HexColor("#1a3c6e"),
spaceBefore=14, spaceAfter=6,
leftIndent=-0.5*cm, rightIndent=-0.5*cm,
fontName="Helvetica-Bold",
borderPad=6
)
h2_style = ParagraphStyle(
"H2", parent=styles["Heading2"],
fontSize=11, textColor=colors.HexColor("#1a3c6e"),
spaceBefore=10, spaceAfter=4,
fontName="Helvetica-Bold",
borderWidth=0, borderColor=colors.HexColor("#1a3c6e"),
leftIndent=0
)
h3_style = ParagraphStyle(
"H3", parent=styles["Heading3"],
fontSize=10, textColor=colors.HexColor("#c0392b"),
spaceBefore=8, spaceAfter=3,
fontName="Helvetica-Bold"
)
body_style = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, leading=14,
spaceAfter=4, alignment=TA_JUSTIFY,
fontName="Helvetica"
)
bullet_style = ParagraphStyle(
"Bullet", parent=styles["Normal"],
fontSize=9.5, leading=13,
spaceAfter=2, leftIndent=14, bulletIndent=4,
fontName="Helvetica"
)
note_style = ParagraphStyle(
"Note", parent=styles["Normal"],
fontSize=9, textColor=colors.HexColor("#555555"),
fontName="Helvetica-Oblique", alignment=TA_CENTER,
spaceBefore=10
)
def bullet(text):
return Paragraph(f"• {text}", bullet_style)
def h1(text):
return Paragraph(text, h1_style)
def h2(text):
return Paragraph(text, h2_style)
def h3(text):
return Paragraph(text, h3_style)
def body(text):
return Paragraph(text, body_style)
def sp(h=6):
return Spacer(1, h)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#cccccc"), spaceAfter=4)
# Table helper
TBL_HEADER = colors.HexColor("#1a3c6e")
TBL_ROW1 = colors.HexColor("#eaf0fb")
TBL_ROW2 = colors.white
def make_table(data, col_widths, header_rows=1):
style = [
("BACKGROUND", (0,0), (-1, header_rows-1), TBL_HEADER),
("TEXTCOLOR", (0,0), (-1, header_rows-1), colors.white),
("FONTNAME", (0,0), (-1, header_rows-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("ROWBACKGROUNDS", (0, header_rows), (-1,-1), [TBL_ROW1, TBL_ROW2]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#aaaaaa")),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
]
tbl = Table(data, colWidths=col_widths, repeatRows=header_rows)
tbl.setStyle(TableStyle(style))
return tbl
# ── BUILD CONTENT ─────────────────────────────────────────────────────────────
story = []
# Title block
story.append(sp(4))
story.append(Paragraph("Measles-Rubella (MR) Campaign", title_style))
story.append(Paragraph("Action Plan at Rural PHC & Team Roles | 10 Marks", subtitle_style))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor("#1a3c6e"), spaceAfter=10))
# Intro box
intro_data = [[
Paragraph(
"<b>Introduction:</b> The MR campaign is a <b>mass vaccination drive</b> by the Government of India targeting "
"<b>all children aged 9 months to 15 years</b>, irrespective of prior vaccination status. "
"The goal is to eliminate measles and control rubella/CRS. "
"<b>Target coverage = ≥95%</b>. Campaign phases: Pre-campaign → Campaign Day → Post-campaign (Mop-up).",
ParagraphStyle("intro", parent=body_style, fontSize=9.5, leading=14)
)
]]
intro_tbl = Table(intro_data, colWidths=[16.5*cm])
intro_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#eaf0fb")),
("BOX", (0,0), (-1,-1), 1, colors.HexColor("#1a3c6e")),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0), (-1,-1), 8),
]))
story.append(intro_tbl)
story.append(sp(10))
# ── PART A: ACTION PLAN ──────────────────────────────────────────────────────
story.append(h1(" PART A: ACTION PLAN — 3 PHASES"))
story.append(sp(4))
# Phase 1
story.append(KeepTogether([
h2("PHASE 1: PRE-CAMPAIGN (4–6 Weeks Before the Drive)"),
h3("Step 1 — Count the Children (Enumeration)"),
bullet("List all children aged 9 months to 15 years in the PHC area"),
bullet("Use school registers, anganwadi records, and house-to-house surveys by ASHA"),
bullet("Prepare a <b>village-wise beneficiary list</b> (due-list)"),
sp(4),
h3("Step 2 — Make a Micro-Plan"),
bullet("Decide <b>WHERE</b> to vaccinate: schools, anganwadis, PHC, outreach sites"),
bullet("Decide <b>WHEN</b>: date and time for each session site"),
bullet("Decide <b>WHO</b>: assign vaccinator + mobilizer to each site"),
bullet("Prepare a <b>Session Roster</b> (displayed at sub-centre notice board)"),
bullet("Map each site with village boundaries, roads, and educational institutes"),
]))
story.append(sp(4))
story.append(KeepTogether([
h3("Step 3 — Arrange Vaccines and Equipment (Cold Chain)"),
bullet("Calculate vaccine requirement: target population + <b>10% buffer stock</b>"),
bullet("Check cold chain equipment: ILR, deep freezer, vaccine carriers, ice packs"),
bullet("Arrange consumables: AD syringes, hub-cutters, cotton swabs"),
bullet("Prepare <b>AEFI kit</b> at each session site: adrenaline, hydrocortisone, ORS"),
sp(4),
h3("Step 4 — Train the Team"),
bullet("MO-PHC holds orientation meeting for ANMs, ASHAs, AWWs, and volunteers"),
bullet("Everyone is briefed on their role, vaccination technique, and AEFI recognition"),
sp(4),
h3("Step 5 — IEC / BCC (Spread the Word)"),
bullet("Put up posters and banners in villages, schools, and PHC"),
bullet("ASHA and AWW do <b>house-to-house visits</b> 3–5 days before the campaign"),
bullet("Involve teachers, panchayat leaders, ANM, and religious leaders for mobilization"),
bullet("Announce dates through loudspeakers, Mahila Mandal meetings"),
]))
story.append(sp(10))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#1a3c6e"), spaceAfter=6))
# Phase 2
story.append(h2("PHASE 2: CAMPAIGN DAY — Session Site Setup"))
story.append(sp(4))
story.append(body("The session site works like a <b>5-post assembly line</b>. Each child passes through all 5 posts:"))
story.append(sp(6))
session_data = [
["Post", "Personnel", "What They Do"],
["Post 1\nQueue / Entry", "ASHA / AWW", "Manage crowd; keep orderly queue;\nseparate sick children; do not vaccinate sick"],
["Post 2\nRegistration", "AWW / Helper", "Write child's name, age, village\non the tally sheet"],
["Post 3\nVaccination", "ANM / Vaccinator", "Give MR injection\n0.5 mL, Subcutaneous (SC), left upper arm\nCheck VVM; check expiry date"],
["Post 4\nRecording", "ANM / Helper", "Fill vaccination card\nUpdate immunization register"],
["Post 5\nObservation", "MO / Supervisor", "Observe child for 30 minutes\nManage any AEFI immediately"],
]
story.append(make_table(session_data, [2.5*cm, 3.5*cm, 10.5*cm]))
story.append(sp(8))
story.append(h3("Key Points on Vaccination Day"))
story.append(bullet("Check <b>VVM (Vaccine Vial Monitor)</b> before every vial — discard if color changed"))
story.append(bullet("Discard reconstituted open vial after <b>4 hours</b>"))
story.append(bullet("Safe disposal: all used syringes in puncture-proof box; use hub-cutter"))
story.append(bullet("Do <b>NOT</b> clean injection site with spirit swab (kills live vaccine)"))
story.append(bullet("Maintain vaccine in cold chain throughout (2–8°C)"))
story.append(sp(10))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#1a3c6e"), spaceAfter=6))
# Phase 3
story.append(h2("PHASE 3: POST-CAMPAIGN / MOP-UP (Day 4–7 After Campaign)"))
story.append(sp(4))
story.append(bullet("ANM + ASHA go <b>house to house</b> to find children who were missed or absent"))
story.append(bullet("MO calculates <b>coverage</b> = (children vaccinated ÷ target) × 100"))
story.append(bullet("Areas with coverage <b><90%</b> get additional mop-up sessions"))
story.append(bullet("All <b>AEFI cases</b> are reported: minor AEFI in monthly report; serious AEFI immediately to district"))
story.append(bullet("Final tally sheets and daily reports reviewed by MO"))
story.append(bullet("Submit post-campaign report to Block / District health office"))
story.append(sp(14))
# ── PART B: TEAM ROLES ───────────────────────────────────────────────────────
story.append(h1(" PART B: TEAM ROLES — Who Does What?"))
story.append(sp(6))
roles = [
("1. Medical Officer (MO-PHC) — THE LEADER", [
"Prepares the complete <b>micro-plan</b> (session roster, site map, beneficiary estimate)",
"Calculates vaccine requirement and places indent with buffer stock",
"Conducts <b>training/orientation meeting</b> for all team members",
"Supervises session sites on campaign day",
"Manages <b>AEFI</b> — treats reactions, refers severe cases, reports to district",
"Calculates coverage, identifies gaps, organizes mop-up",
"Submits final post-campaign report to Block/District",
]),
("2. ANM (Auxiliary Nurse Midwife) — THE VACCINATOR", [
"Prepares <b>village-wise due-list</b> of all children 9 months–15 years",
"Indents and collects vaccines; checks cold chain (vaccine carrier + 4 ice packs)",
"Checks VVM and expiry before each vial",
"<b>Administers MR vaccine</b> (0.5 mL SC, left upper arm) on session day",
"Maintains immunization register and vaccination card counterfoils",
"Tracks drop-outs and left-outs; participates in mop-up",
"Reports AEFI to MO immediately",
]),
("3. ASHA — THE MOBILIZER", [
"Does <b>house-to-house visits</b> 3–5 days before campaign to inform families",
"Prepares village-level list of all eligible children",
"<b>Escorts children</b> and mothers to the vaccination site on session day",
"Assists in crowd management (Post 1) at the session site",
"Tracks absentees and helps in <b>mop-up</b> vaccination",
"Immediately informs ANM of any child who develops a reaction",
"Updates ASHA diary with names of vaccinated children",
]),
("4. AWW (Anganwadi Worker) — THE SUPPORTER", [
"Mobilizes children <b>aged 9 months to 5 years</b> from anganwadi register",
"Opens anganwadi centre as vaccination site (where applicable)",
"Assists in <b>registration</b> (Post 2) — writes child names on tally sheet",
"Helps with IEC: displays posters, announces through Mahila Mandal",
"Coordinates with ASHA for mop-up of under-5 children",
]),
("5. Health Supervisor / LHV — THE CHECKER", [
"Supervises 2–3 ANMs in her sub-centre area",
"Verifies cold chain equipment is functional before campaign",
"Checks session sites are set up correctly and functioning",
"Reports problems or low coverage areas immediately to MO-PHC",
"Ensures session rosters are displayed at each sub-centre",
]),
]
for role_title, role_bullets in roles:
story.append(KeepTogether(
[h2(role_title)] + [bullet(b) for b in role_bullets] + [sp(6)]
))
story.append(sp(10))
# ── SUMMARY TABLES ───────────────────────────────────────────────────────────
story.append(h1(" QUICK REVISION TABLES"))
story.append(sp(6))
story.append(h3("Table 1 — Three Phases at a Glance"))
story.append(sp(4))
phase_data = [
["Phase", "Timing", "Key Activities"],
["Pre-Campaign", "4–6 weeks before",
"Enumeration, micro-plan, cold chain, vaccine indent,\nteam training, IEC/BCC, session roster display"],
["Campaign Day", "Scheduled days",
"5-post assembly line: Queue → Register → Vaccinate\n→ Record → Observe (30 min for AEFI)"],
["Post-Campaign\n(Mop-Up)", "Day 4–7 after",
"House-to-house follow-up, calculate coverage,\nadditional sessions for <90% areas, AEFI reporting"],
]
story.append(make_table(phase_data, [3*cm, 3*cm, 10.5*cm]))
story.append(sp(12))
story.append(h3("Table 2 — Team Roles Summary"))
story.append(sp(4))
team_data = [
["Team Member", "Main Responsibility", "Key Tasks"],
["MO-PHC", "Overall Leader", "Plan, train, supervise, AEFI management, reporting"],
["ANM", "Vaccinator", "Cold chain, vaccination, register, mop-up"],
["ASHA", "Mobilizer", "House-to-house IEC, escort children, mop-up follow-up"],
["AWW", "Supporter", "Mobilize under-5s, registration assistance, IEC"],
["Supervisor / LHV", "Checker", "Supervise ANMs, verify cold chain, report gaps"],
]
story.append(make_table(team_data, [3.5*cm, 3.5*cm, 9.5*cm]))
story.append(sp(16))
# Footer note
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor("#1a3c6e"), spaceAfter=6))
story.append(Paragraph(
"Source: Park's Textbook of Preventive and Social Medicine | "
"National Operational Guidelines for MR Campaign, MoHFW India (2017) | "
"Community Medicine — 10 Marks Answer",
note_style
))
# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /tmp/workspace/mr-campaign && python generate_pdf.py
MR Campaign Action Plan
PDF Document · PDF