Drug and Logistic management at PHC MD PSM lecture
drug and logistic management PHC primary health centre PSM community medicine notes India
essential medicines supply chain management PHC India FIFO FEFO VEN ABC analysis
| Right | Description |
|---|---|
| Right Drug | The correct medicine per the EDL |
| Right Quantity | Neither excess (wastage) nor deficient (stockout) |
| Right Quality | Within expiry, stored properly |
| Right Place | Available at the point of care |
| Right Time | Available when needed |
| Right Cost | Procured economically |
| Method | Principle | When to Use |
|---|---|---|
| Morbidity method | Based on disease incidence × treatment courses needed | Ideal; requires good disease data |
| Consumption method | Based on past consumption records | Most common at PHC level; requires good stock records |
| Adjusted consumption | Consumption + adjustments for stockouts, population growth | Practical and recommended |
| Proxy consumption | Uses data from similar facilities | Used when records are poor |
Quantity to procure = [Average monthly consumption × months of stock required] - current stock on hand + safety stock
Central Medical Stores Organisation (CMSO) / State Medical Stores
↓
District Drug Warehouse / Medical Store Depot (MSD)
↓
Block PHC / Community Health Centre (CHC)
↓
Sub-Centre / ASHA / Patients
| Principle | Full Form | Application |
|---|---|---|
| FIFO | First In, First Out | Older stock placed in front, used first |
| FEFO | First Expiry, First Out | Items expiring sooner used first regardless of when received |
| Preferred at PHC: FEFO | Prevents expiry wastage | Most important in field settings |
| Category | Items | % of Budget |
|---|---|---|
| A | 10% of items | ~70% of budget |
| B | 20% of items | ~20% of budget |
| C | 70% of items | ~10% of budget |
| Category | Definition | Example |
|---|---|---|
| V - Vital | Life-saving; stockout is dangerous | Adrenaline, IV fluids, oxytocin, morphine |
| E - Essential | Effective for significant diseases | Antibiotics, antihypertensives |
| D/N - Desirable/Normal | Minor/self-limiting illness | Antacids, vitamins |
| V | E | N/D | |
|---|---|---|---|
| A | AV | AE | AN |
| B | BV | BE | BN |
| C | CV | CE | CN |
ROL = Average daily consumption × Lead time + Safety stock
| Register | Purpose |
|---|---|
| Stock register | Running balance of each drug (inward, outward, balance) |
| Indent register | Track orders placed to district |
| Expired drug register | Record of expired/condemned stock |
| Cold chain log | Twice-daily temperature readings |
| Narcotic register | Legal requirement for Schedule X/H drugs |
| Dead stock register | Non-consumable items (equipment) |
| Problem | Cause | Solution |
|---|---|---|
| Stockouts | Poor forecasting, supply delays, no safety stock | Pull system, buffer stock, LMIS |
| Drug expiry wastage | Overstocking, FIFO not practiced | FEFO, accurate forecasting |
| Irrational prescribing | No STGs, no audit | STG implementation, DTC |
| Pilferage/diversion | Weak accountability | LMIS, regular audits |
| Cold chain failures | Power cuts, poor monitoring | Solar refrigerators, log books |
| Polypharmacy | Patient pressure, habit | Training, generic prescribing |
| Indicator | Benchmark |
|---|---|
| % of EDL drugs available on day of survey | ≥80% (WHO minimum) |
| Average stock-out days per year | <30 days |
| % of drugs expired | <5% |
| % prescriptions conforming to STG | >80% |
| Average number of drugs per prescription | <3 (WHO ideal) |
| % drugs prescribed by generic name | >80% |
| % drugs actually dispensed | >80% |
| Step | Meaning |
|---|---|
| S | Selection (EDL, NLEM) |
| Q | Quantification/Forecasting |
| P | Procurement (centralized, tender) |
| S | Storage (GSP, FIFO, FEFO, cold chain) |
| D | Distribution (push/pull, outreach) |
| U | Use (rational use, STGs) |
| M | Monitoring (LMIS, records, audit) |
Create a presentation on drug and logistic management for MD PSM exam
mkdir -p /tmp/workspace/drug-logistics-pptx
~/drug-logistics-pptx/create_pptx.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
from io import BytesIO
# ── Color palette ─────────────────────────────────────────────────────────────
NAVY = RGBColor(0x00, 0x33, 0x66) # dark navy – title bar
TEAL = RGBColor(0x00, 0x7A, 0x8A) # teal accent
LTBLUE = RGBColor(0xD6, 0xED, 0xF5) # light blue background panels
GOLD = RGBColor(0xF0, 0xA5, 0x00) # highlight / accent
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARKGRAY = RGBColor(0x33, 0x33, 0x33)
MIDGRAY = RGBColor(0x66, 0x66, 0x66)
LTGRAY = RGBColor(0xF4, 0xF6, 0xF8)
RED = RGBColor(0xC0, 0x39, 0x2B)
GREEN = RGBColor(0x1A, 0x7A, 0x4A)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6] # fully blank – full control
# ── Helper functions ──────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_color, line_color=None, line_width=0):
shp = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
shp.fill.solid()
shp.fill.fore_color.rgb = fill_color
if line_color:
shp.line.color.rgb = line_color
shp.line.width = Pt(line_width)
else:
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_rounded(slide, x, y, w, h, fill_color, line_color=None, line_width=0):
shp = slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, x, y, w, h)
shp.fill.solid()
shp.fill.fore_color.rgb = fill_color
if line_color:
shp.line.color.rgb = line_color
shp.line.width = Pt(line_width)
else:
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_tb(slide, x, y, w, h, text, size, bold=False, color=DARKGRAY,
align=PP_ALIGN.LEFT, italic=False, wrap=True):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.name = "Calibri"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return tb
def add_para(tf, text, size, bold=False, color=DARKGRAY,
align=PP_ALIGN.LEFT, italic=False, level=0):
p = tf.add_paragraph()
p.alignment = align
p.level = level
run = p.add_run()
run.text = text
run.font.name = "Calibri"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return p
def slide_header(slide, title, subtitle=None):
"""Top navy bar + title text."""
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(1.1), NAVY)
add_tb(slide, Inches(0.35), Inches(0.12), Inches(12.5), Inches(0.75),
title, 28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
if subtitle:
add_tb(slide, Inches(0.35), Inches(0.8), Inches(12.5), Inches(0.35),
subtitle, 13, bold=False, color=RGBColor(0xCC, 0xE8, 0xF4),
align=PP_ALIGN.LEFT)
# teal accent line under header
add_rect(slide, Inches(0), Inches(1.1), Inches(13.333), Inches(0.055), TEAL)
def slide_footer(slide, text="Drug & Logistic Management at PHC | MD PSM"):
add_rect(slide, Inches(0), Inches(7.2), Inches(13.333), Inches(0.3), NAVY)
add_tb(slide, Inches(0.3), Inches(7.2), Inches(13), Inches(0.3),
text, 9, color=RGBColor(0xAA, 0xCC, 0xDD), align=PP_ALIGN.LEFT)
def add_bullet_box(slide, x, y, w, h, title, bullets, title_color=WHITE,
box_color=LTBLUE, title_bg=TEAL, font_size=13):
# Title bar
add_rect(slide, x, y, w, Inches(0.38), title_bg)
add_tb(slide, x + Inches(0.1), y + Inches(0.03), w - Inches(0.2),
Inches(0.32), title, 13, bold=True, color=title_color)
# Body
add_rect(slide, x, y + Inches(0.38), w, h - Inches(0.38), box_color)
tb = slide.shapes.add_textbox(x + Inches(0.15), y + Inches(0.45),
w - Inches(0.3), h - Inches(0.55))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(2); tf.margin_right = Pt(2)
tf.margin_top = Pt(2); tf.margin_bottom= Pt(2)
first = True
for b in bullets:
if first:
p = tf.paragraphs[0]; first = False
else:
p = tf.add_paragraph()
p.space_before = Pt(2)
run = p.add_run()
run.text = b
run.font.name = "Calibri"
run.font.size = Pt(font_size)
run.font.color.rgb = DARKGRAY
# =============================================================================
# SLIDE 1 – Title slide
# =============================================================================
slide = prs.slides.add_slide(blank)
# Full navy background
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), NAVY)
# Teal accent bar left
add_rect(slide, Inches(0), Inches(0), Inches(0.25), Inches(7.5), TEAL)
# Teal band center
add_rect(slide, Inches(0.25), Inches(2.6), Inches(13), Inches(0.06), GOLD)
add_rect(slide, Inches(0.25), Inches(5.1), Inches(13), Inches(0.06), GOLD)
add_tb(slide, Inches(1.0), Inches(1.0), Inches(11.0), Inches(0.8),
"DRUG AND LOGISTIC MANAGEMENT", 36, bold=True, color=WHITE,
align=PP_ALIGN.CENTER)
add_tb(slide, Inches(1.0), Inches(1.75), Inches(11.0), Inches(0.6),
"at Primary Health Centre (PHC)", 24, bold=False,
color=RGBColor(0x9E, 0xD8, 0xF0), align=PP_ALIGN.CENTER)
add_tb(slide, Inches(1.0), Inches(2.85), Inches(11.0), Inches(0.55),
"MD Preventive & Social Medicine | Community Medicine", 18,
color=GOLD, align=PP_ALIGN.CENTER, bold=True)
bullets_title = [
"Supply Chain Cycle | Drug Selection & EDL",
"Quantification | Procurement Systems",
"Storage & Cold Chain | Inventory Analytics (ABC / VEN)",
"Distribution | Rational Use | LMIS",
"Records, Indicators & Disposal",
]
tb = slide.shapes.add_textbox(Inches(1.5), Inches(3.5), Inches(10), Inches(1.6))
tf = tb.text_frame; tf.word_wrap = True
tf.margin_left = 0; tf.margin_right = 0
tf.margin_top = Pt(2); tf.margin_bottom = Pt(2)
first = True
for b in bullets_title:
if first: p = tf.paragraphs[0]; first = False
else: p = tf.add_paragraph()
p.alignment = PP_ALIGN.CENTER
run = p.add_run(); run.text = " " + b
run.font.name = "Calibri"; run.font.size = Pt(13)
run.font.color.rgb = RGBColor(0xBB, 0xDD, 0xEE)
add_tb(slide, Inches(1), Inches(5.4), Inches(11), Inches(0.4),
"Source: Park's Textbook of PSM (26th ed.) | WHO Essential Medicines Framework | NHM India",
11, color=RGBColor(0x77, 0xAA, 0xCC), align=PP_ALIGN.CENTER, italic=True)
# =============================================================================
# SLIDE 2 – Supply Chain Cycle (6 Rights)
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "The Supply Chain Cycle",
"Goal: Right Drug · Right Quantity · Right Quality · Right Place · Right Time · Right Cost")
slide_footer(slide)
# 6 hexagon-like boxes arranged in 2 rows of 3
rights = [
("RIGHT DRUG", "Per EDL / NLEM\nEvidence-based selection"),
("RIGHT QUANTITY", "Neither stockout\nnor excess/expiry"),
("RIGHT QUALITY", "Within expiry\nWHO-GMP certified"),
("RIGHT PLACE", "Available at point\nof care (PHC/sub-centre)"),
("RIGHT TIME", "Available when\nthe patient needs it"),
("RIGHT COST", "Procured economically\nCentralized tender"),
]
colors = [TEAL, RGBColor(0x1A,0x7A,0x4A), NAVY,
RGBColor(0x7B,0x2D,0x8B), RGBColor(0xC0,0x39,0x2B), RGBColor(0xD4,0x7F,0x00)]
bw, bh = Inches(3.9), Inches(1.7)
positions = [
(Inches(0.25), Inches(1.35)),
(Inches(4.55), Inches(1.35)),
(Inches(8.85), Inches(1.35)),
(Inches(0.25), Inches(3.25)),
(Inches(4.55), Inches(3.25)),
(Inches(8.85), Inches(3.25)),
]
for i, ((rx, ry), (title, detail), col) in enumerate(zip(positions, rights, colors)):
add_rounded(slide, rx, ry, bw, bh, col)
add_tb(slide, rx+Inches(0.15), ry+Inches(0.15), bw-Inches(0.3), Inches(0.45),
title, 15, bold=True, color=WHITE)
add_tb(slide, rx+Inches(0.15), ry+Inches(0.58), bw-Inches(0.3), Inches(1.0),
detail, 12, color=RGBColor(0xEE,0xF8,0xFF), wrap=True)
# Arrow flow
add_tb(slide, Inches(0.25), Inches(5.2), Inches(12.8), Inches(0.5),
"SELECTION → QUANTIFICATION → PROCUREMENT → STORAGE → DISTRIBUTION → USE → MONITORING",
13, bold=True, color=NAVY, align=PP_ALIGN.CENTER)
add_rect(slide, Inches(0.3), Inches(5.65), Inches(12.7), Inches(0.06), TEAL)
add_tb(slide, Inches(0.3), Inches(5.72), Inches(12.7), Inches(0.4),
"Mnemonic: S – Q – P – S – D – U – M", 13, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
# =============================================================================
# SLIDE 3 – Drug Selection & Essential Medicines
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Drug Selection & Essential Medicines List (EDL)")
slide_footer(slide)
add_bullet_box(slide, Inches(0.25), Inches(1.25), Inches(6.1), Inches(2.7),
"National List of Essential Medicines (NLEM)",
["NLEM 2022: ~384 medicines (latest revision)",
"Basis for state and district EDL at PHC level",
"Selection criteria: Disease burden, Efficacy, Safety, Cost-effectiveness",
"Generic names only (INN - International Non-proprietary Names)",
"PHC follows a restricted district EDL (~150-200 items)"])
add_bullet_box(slide, Inches(6.6), Inches(1.25), Inches(6.5), Inches(2.7),
"Criteria for Drug Selection",
["High prevalence of disease in catchment area",
"Evidence of efficacy from clinical trials",
"Acceptable safety/adverse effect profile",
"Availability of quality-assured formulations",
"Affordability – lowest cost effective option",
"Stability in field conditions (heat, humidity)"])
add_bullet_box(slide, Inches(0.25), Inches(4.15), Inches(6.1), Inches(2.4),
"EDL Categories at PHC",
["Life-saving (Vital): Adrenaline, Oxytocin, IV fluids, Morphine",
"Common illness (Essential): Antibiotics, ORS, Iron-Folic Acid",
"Minor illness (Desirable): Antacids, Vitamins, Antihistamines",
"Vaccines: As per UIP schedule",
"Contraceptives: Condoms, OCP, Emergency contraception"])
add_bullet_box(slide, Inches(6.6), Inches(4.15), Inches(6.5), Inches(2.4),
"Free Drugs Service Initiative (FDSI)",
["Launched 2015 under NHM",
"Provides essential medicines FREE at public facilities",
"Comprehensive Primary Health Care (2018) expanded scope",
"State autonomous bodies manage procurement",
"UP: EDL pruned from ~1300 → ~300 items for efficiency",
"Goal: 100% availability of EDL drugs at PHC"])
# =============================================================================
# SLIDE 4 – Quantification & Forecasting
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Quantification & Forecasting",
"How much to procure? The most important step to prevent stockouts AND wastage")
slide_footer(slide)
methods = [
("Morbidity Method", TEAL,
["Based on: Disease incidence × Treatment courses needed",
"IDEAL – uses epidemiological data",
"Requires: Good disease burden data (HMIS/disease register)",
"Formula: Qty = No. cases × Qty per treatment course"]),
("Consumption Method", NAVY,
["Based on: Past consumption records",
"MOST PRACTICAL at PHC level",
"Requires: Accurate stock registers (inward/outward)",
"Formula: Avg monthly consumption × Months needed"]),
("Adjusted Consumption", RGBColor(0x1A,0x7A,0x4A),
["Consumption data ADJUSTED for:",
" – Stockout periods (add back lost consumption)",
" – Population growth",
" – Programme changes",
"RECOMMENDED in field settings"]),
("Proxy Consumption", RGBColor(0x7B,0x2D,0x8B),
["Used when: Own records are poor/missing",
"Uses data from similar-sized comparable facility",
"Adjusted for local disease patterns",
"Last resort – least accurate method"]),
]
bw2, bh2 = Inches(3.0), Inches(2.6)
xs = [Inches(0.2), Inches(3.4), Inches(6.6), Inches(9.8)]
for i, (title, col, pts) in enumerate(methods):
add_rounded(slide, xs[i], Inches(1.3), bw2, bh2, col)
add_tb(slide, xs[i]+Inches(0.1), Inches(1.38), bw2-Inches(0.2), Inches(0.42),
title, 14, bold=True, color=WHITE)
tb2 = slide.shapes.add_textbox(xs[i]+Inches(0.1), Inches(1.82),
bw2-Inches(0.2), bh2-Inches(0.6))
tf2 = tb2.text_frame; tf2.word_wrap = True
tf2.margin_left = Pt(2); tf2.margin_right = Pt(2)
tf2.margin_top = Pt(2); tf2.margin_bottom = Pt(2)
first = True
for pt in pts:
if first: p2 = tf2.paragraphs[0]; first = False
else: p2 = tf2.add_paragraph()
p2.space_before = Pt(2)
r2 = p2.add_run(); r2.text = pt
r2.font.name = "Calibri"; r2.font.size = Pt(11)
r2.font.color.rgb = RGBColor(0xEE,0xF8,0xFF)
# Formula box
add_rounded(slide, Inches(0.2), Inches(4.1), Inches(12.9), Inches(0.7),
RGBColor(0xFFF3CD), line_color=GOLD, line_width=1.5)
add_tb(slide, Inches(0.4), Inches(4.15), Inches(12.5), Inches(0.6),
"KEY FORMULA: Quantity to procure = (Avg Monthly Consumption × Months of Supply Required) – Current Stock on Hand + Safety Stock",
13, bold=True, color=RGBColor(0x7A,0x50,0x00))
add_bullet_box(slide, Inches(0.2), Inches(5.0), Inches(6.2), Inches(1.9),
"Safety (Buffer) Stock",
["Vital (V) drugs: 2–3 months buffer",
"Essential (E) drugs: 1–2 months buffer",
"Desirable (D) drugs: 1 month buffer",
"Covers supply delays, emergencies, seasonal demand spikes"])
add_bullet_box(slide, Inches(6.6), Inches(5.0), Inches(6.5), Inches(1.9),
"Reorder Level (ROL)",
["ROL = (Avg Daily Consumption × Lead Time) + Safety Stock",
"Lead time = Time from placing order to receiving stock",
"Trigger re-ordering BEFORE stock reaches zero",
"Maximum stock = ROL + Economic Order Quantity (EOQ)"])
# =============================================================================
# SLIDE 5 – Procurement
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Procurement",
"PHCs do not procure independently – supply flows through a centralized government system")
slide_footer(slide)
# Supply chain flow diagram
chain = [
"CMSO / State Medical Stores\n(Central level)",
"District Drug Warehouse\n/ Medical Store Depot",
"Block PHC / CHC",
"Sub-centre / ASHA\n/ Patient",
]
chain_colors = [NAVY, TEAL, RGBColor(0x1A,0x7A,0x4A), RGBColor(0xC0,0x39,0x2B)]
bwc, bhc = Inches(2.8), Inches(0.85)
ys_chain = [Inches(1.3), Inches(2.35), Inches(3.4), Inches(4.45)]
for i, (label, col) in enumerate(zip(chain, chain_colors)):
add_rounded(slide, Inches(0.5), ys_chain[i], Inches(3.5), bhc, col)
add_tb(slide, Inches(0.6), ys_chain[i]+Inches(0.08),
Inches(3.3), bhc-Inches(0.1), label, 12, bold=True, color=WHITE)
if i < len(chain)-1:
# arrow (just a textbox with ↓)
add_tb(slide, Inches(1.5), ys_chain[i]+bhc,
Inches(1.5), Inches(0.35), "↓", 18, bold=True, color=TEAL,
align=PP_ALIGN.CENTER)
add_bullet_box(slide, Inches(4.4), Inches(1.25), Inches(8.7), Inches(2.2),
"Procurement Principles",
["Centralized procurement: Economies of scale + quality assurance",
"Rate contracts (RC) / Tender system: Competitive pricing",
"Only WHO-GMP certified suppliers",
"Generic drugs procured using INN names",
"Transparent, accountable process (open tendering preferred)",
"Emergency local purchase: Permitted with untied funds if supply fails"])
add_bullet_box(slide, Inches(4.4), Inches(3.65), Inches(4.1), Inches(2.8),
"Push vs Pull Systems",
["PUSH: State sends pre-calculated quantities",
" + Simple for peripheral level",
" – May not match actual needs",
"PULL: Facility indents based on stock",
" + Rational, demand-driven",
" – Requires good record-keeping",
"HYBRID: NHM passbook/indent system (preferred)"])
add_bullet_box(slide, Inches(8.7), Inches(3.65), Inches(4.4), Inches(2.8),
"Key Policy Initiatives",
["NHM Free Drugs Initiative (2015)",
"Comprehensive PHC (2018)",
"State Autonomous Bodies (e.g. TNMSC, KARUNADU)",
"UP: UPMSC – availability improved 40% → 100%",
"'Not for Sale' label on govt medicines",
"CDSCO: National drug regulatory authority"])
# =============================================================================
# SLIDE 6 – Storage & Cold Chain
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Drug Storage at PHC – Good Storage Practices (GSP)")
slide_footer(slide)
add_bullet_box(slide, Inches(0.2), Inches(1.3), Inches(4.1), Inches(2.85),
"Physical Requirements",
["Clean, dry, well-ventilated room",
"Protected from direct sunlight",
"Pest and rodent proof",
"Separate cold chain section",
"Separate narcotic/scheduled drug storage (lock & key)",
"Emergency drug cabinet: 24×7 accessible",
"Shelves: NOT on floor; allow air circulation"])
add_bullet_box(slide, Inches(4.5), Inches(1.3), Inches(4.0), Inches(2.85),
"Temperature Requirements",
["Ambient (room temp) store: 15–25°C; max <30°C",
"Cold chain (refrigerator): 2–8°C",
"Freezer: -15 to -25°C (OPV, varicella)",
"Temperature monitored TWICE DAILY",
"Temperature log maintained",
"Alarm/backup for cold chain failure",
"ILR (Ice-Lined Refrigerator) at PHC level"])
add_bullet_box(slide, Inches(8.7), Inches(1.3), Inches(4.4), Inches(2.85),
"Stock Rotation Principles",
["FIFO = First In, First Out",
" Older stock placed in FRONT, used first",
"FEFO = First Expiry, First Out (PREFERRED)",
" Item expiring sooner used first",
" Regardless of when it was received",
"Near-expiry (<3 months): Separate & use ASAP",
"Expired: Quarantine; label 'EXPIRED – NOT FOR USE'"])
# FIFO vs FEFO highlight box
add_rounded(slide, Inches(0.2), Inches(4.35), Inches(12.9), Inches(0.65),
RGBColor(0xFFF3CD), line_color=GOLD, line_width=1.5)
add_tb(slide, Inches(0.4), Inches(4.4), Inches(12.5), Inches(0.55),
"EXAM TIP: FEFO is preferred over FIFO at PHC level – prevents expiry of short shelf-life vaccines & drugs",
14, bold=True, color=RGBColor(0x7A,0x50,0x00))
add_bullet_box(slide, Inches(0.2), Inches(5.2), Inches(6.2), Inches(1.95),
"Cold Chain Equipment at PHC",
["ILR (Ice-Lined Refrigerator): Vaccines at 2–8°C",
"Deep Freezer: OPV at -15 to -25°C",
"Cold Box: Transport of vaccines",
"Vaccine Carrier + Ice Pack: Field immunization",
"Dial Thermometer / Temperature Logger"])
add_bullet_box(slide, Inches(6.6), Inches(5.2), Inches(6.5), Inches(1.95),
"Labelling Requirements",
["Drug name (generic / INN)",
"Batch number and manufacturer",
"Date of manufacture and expiry",
"'Not for Sale' on government supplies",
"Dangerous drug warning labels",
"Storage conditions (e.g., 'Store below 25°C', 'Refrigerate')"])
# =============================================================================
# SLIDE 7 – Inventory Management: ABC & VEN Analysis
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Inventory Management – ABC & VEN Analysis",
"Tools to prioritize drug management effort and budget allocation")
slide_footer(slide)
# ABC
add_rect(slide, Inches(0.2), Inches(1.3), Inches(6.0), Inches(0.42), NAVY)
add_tb(slide, Inches(0.3), Inches(1.32), Inches(5.8), Inches(0.38),
"ABC Analysis (Always Better Control)", 14, bold=True, color=WHITE)
abc_data = [
("A", "10% of items", "~70% of budget", "Strict control, frequent review, small orders", RGBColor(0xC0,0x39,0x2B)),
("B", "20% of items", "~20% of budget", "Moderate control, monthly review", RGBColor(0xD4,0x7F,0x00)),
("C", "70% of items", "~10% of budget", "Bulk ordering, infrequent review", GREEN),
]
col_hs = [Inches(0.5), Inches(2.0), Inches(2.0), Inches(4.5)]
col_xs = [Inches(0.2), Inches(0.75), Inches(2.8), Inches(4.85)]
hdrs = ["Group", "% Items", "% Budget", "Control Strategy"]
for ci, (hdr, cx) in enumerate(zip(hdrs, col_xs)):
add_rect(slide, cx, Inches(1.75), col_hs[ci], Inches(0.32), TEAL)
add_tb(slide, cx+Inches(0.03), Inches(1.77), col_hs[ci]-Inches(0.05), Inches(0.28),
hdr, 11, bold=True, color=WHITE)
for ri, (grp, items, budget, strategy, col) in enumerate(abc_data):
y_row = Inches(2.1) + ri * Inches(0.42)
add_rect(slide, Inches(0.2), y_row, Inches(0.5), Inches(0.4), col)
add_tb(slide, Inches(0.23), y_row+Inches(0.05), Inches(0.44), Inches(0.32),
grp, 18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
bg = LTBLUE if ri%2==0 else WHITE
for ci2, (val, cx2) in enumerate(zip([items, budget, strategy], col_xs[1:])):
add_rect(slide, cx2, y_row, col_hs[ci2+1], Inches(0.4), bg,
line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5)
add_tb(slide, cx2+Inches(0.05), y_row+Inches(0.05),
col_hs[ci2+1]-Inches(0.1), Inches(0.32), val, 11)
# VEN
add_rect(slide, Inches(6.7), Inches(1.3), Inches(6.4), Inches(0.42), NAVY)
add_tb(slide, Inches(6.8), Inches(1.32), Inches(6.2), Inches(0.38),
"VEN / VED Analysis (Therapeutic Importance)", 14, bold=True, color=WHITE)
ven_data = [
("V", "VITAL", RGBColor(0xC0,0x39,0x2B),
"Life-saving; stockout is dangerous",
"Adrenaline, Oxytocin, IV fluids, Morphine, Atropine"),
("E", "ESSENTIAL", TEAL,
"Effective for significant diseases, not absolutely vital",
"Antibiotics (Amox, Cotrimox), Antihypertensives, ORS"),
("N/D","DESIRABLE", GREEN,
"Used for minor/self-limiting illnesses",
"Antacids, Vitamins, Antihistamines, Cough syrups"),
]
for ri, (code, label, col, defn, eg) in enumerate(ven_data):
y_row = Inches(1.85) + ri * Inches(0.82)
add_rounded(slide, Inches(6.7), y_row, Inches(0.5), Inches(0.75), col)
add_tb(slide, Inches(6.73), y_row+Inches(0.12), Inches(0.44), Inches(0.45),
code, 18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
bg2 = LTBLUE if ri%2==0 else WHITE
add_rect(slide, Inches(7.25), y_row, Inches(5.8), Inches(0.75), bg2,
line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5)
add_tb(slide, Inches(7.35), y_row+Inches(0.04), Inches(5.6), Inches(0.32),
label + ": " + defn, 12, bold=True, color=DARKGRAY)
add_tb(slide, Inches(7.35), y_row+Inches(0.38), Inches(5.6), Inches(0.32),
"e.g. " + eg, 11, italic=True, color=MIDGRAY)
# ABC-VEN Matrix
add_rect(slide, Inches(0.2), Inches(3.55), Inches(13.0), Inches(0.38), NAVY)
add_tb(slide, Inches(0.3), Inches(3.57), Inches(12.8), Inches(0.34),
"ABC-VEN MATRIX (Combined Analysis – Most Powerful Tool)", 13, bold=True, color=WHITE)
matrix_data = [
[("AV","Strictest\ncontrol", RGBColor(0x8B,0x00,0x00)),
("AE","High\npriority", RGBColor(0xB0,0x20,0x20)),
("AN","Reduce\npurchase", RGBColor(0xCC,0x55,0x00))],
[("BV","High\ncontrol", RGBColor(0x00,0x55,0x88)),
("BE","Moderate\ncontrol", TEAL),
("BN","Low\npriority", RGBColor(0x33,0x88,0x88))],
[("CV","Monitor\nclosely", RGBColor(0x1A,0x5A,0x1A)),
("CE","Standard\ncontrol", RGBColor(0x2A,0x8A,0x2A)),
("CN","Least\npriority", RGBColor(0x55,0xAA,0x55))],
]
col_labels = ["V (Vital)", "E (Essential)", "N (Desirable)"]
row_labels = ["A (High cost)", "B (Mid cost)", "C (Low cost)"]
mx0 = Inches(0.2); my0 = Inches(4.0)
mw_cell = Inches(2.9); mh_cell = Inches(0.7)
mw_lbl = Inches(1.6)
add_rect(slide, mx0, my0, mw_lbl, Inches(0.38), RGBColor(0x44,0x44,0x44))
for ci3, clbl in enumerate(col_labels):
add_rect(slide, mx0+mw_lbl+ci3*mw_cell, my0, mw_cell, Inches(0.38),
RGBColor(0x44,0x44,0x44))
add_tb(slide, mx0+mw_lbl+ci3*mw_cell+Inches(0.05), my0+Inches(0.04),
mw_cell-Inches(0.1), Inches(0.3), clbl, 11, bold=True, color=WHITE)
for ri2, (rlbl, row) in enumerate(zip(row_labels, matrix_data)):
y_mr = my0 + Inches(0.38) + ri2*mh_cell
add_rect(slide, mx0, y_mr, mw_lbl, mh_cell,
RGBColor(0x55,0x55,0x55))
add_tb(slide, mx0+Inches(0.05), y_mr+Inches(0.15),
mw_lbl-Inches(0.1), mh_cell-Inches(0.2), rlbl, 11, bold=True, color=WHITE)
for ci4, (code2, meaning, col2) in enumerate(row):
xm = mx0+mw_lbl+ci4*mw_cell
add_rect(slide, xm, y_mr, mw_cell, mh_cell, col2,
line_color=WHITE, line_width=0.5)
add_tb(slide, xm+Inches(0.1), y_mr+Inches(0.04),
mw_cell-Inches(0.2), Inches(0.38), code2, 18, bold=True,
color=WHITE, align=PP_ALIGN.CENTER)
add_tb(slide, xm+Inches(0.1), y_mr+Inches(0.4),
mw_cell-Inches(0.2), Inches(0.25), meaning, 10,
color=RGBColor(0xEE,0xEE,0xEE), align=PP_ALIGN.CENTER)
add_tb(slide, Inches(10.4), Inches(4.05), Inches(2.7), Inches(2.35),
"AV = Highest priority\n(High cost + Life-saving)\n\nCN = Lowest priority\n(Low cost + Non-vital)\n\nGuides: budget allocation\nreorder decisions\nstock control intensity",
11, color=DARKGRAY, wrap=True)
# =============================================================================
# SLIDE 8 – Distribution & Rational Use
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Drug Distribution & Rational Use of Drugs (RUD)",
"Getting medicines from the store to the patient, and ensuring they are used correctly")
slide_footer(slide)
add_bullet_box(slide, Inches(0.2), Inches(1.3), Inches(4.1), Inches(2.7),
"Distribution Systems",
["Passive: Patient collects from OPD pharmacy",
"Active: Health worker takes drugs to community",
" – DOTS (TB treatment)",
" – Iron/Folic Acid (ANC programme)",
" – ORS/Zinc (Diarrhoea programme)",
"Internal: Drug store → OPD → Ward → Emergency",
"Outreach: ASHAs, ANMs, Sub-centre depots"])
add_bullet_box(slide, Inches(4.5), Inches(1.3), Inches(4.1), Inches(2.7),
"Issue Procedures",
["Drugs issued on indent/requisition slip",
"Patient registration number recorded",
"All issues entered in STOCK REGISTER",
"Running balance maintained",
"Monthly physical count vs register balance",
"Narcotics: Separate register (NDPS Act)",
"Damaged/returned drugs: Documented"])
add_bullet_box(slide, Inches(8.8), Inches(1.3), Inches(4.3), Inches(2.7),
"Rational Use of Drugs (WHO Criteria)",
["RIGHT drug for the diagnosis",
"RIGHT dose for the patient",
"RIGHT duration of treatment",
"RIGHT route of administration",
"RIGHT patient (indication correct)",
"Affordable to patient and system",
"Dispensed correctly with information"])
# Problems & Solutions
add_rect(slide, Inches(0.2), Inches(4.2), Inches(12.9), Inches(0.38), RED)
add_tb(slide, Inches(0.3), Inches(4.22), Inches(12.7), Inches(0.34),
"Common Problems in Drug Use at PHC Level & Solutions", 13, bold=True, color=WHITE)
problems = [
("Polypharmacy", "Prescribing audit + STG"),
("Antibiotic overuse", "Antibiogram + training"),
("Injection overuse", "Rational prescribing policy"),
("Non-adherence", "DOTS / blister packs / counseling"),
("Generic not prescribed", "Generic prescribing policy"),
("Self-medication", "BCC / community education"),
]
for i, (prob, sol) in enumerate(problems):
col_i = i % 3; row_i = i // 3
xp = Inches(0.2) + col_i * Inches(4.35)
yp = Inches(4.68) + row_i * Inches(0.68)
add_rect(slide, xp, yp, Inches(2.0), Inches(0.55),
RGBColor(0xFF,0xDD,0xDD), line_color=RED, line_width=0.5)
add_tb(slide, xp+Inches(0.05), yp+Inches(0.05),
Inches(1.9), Inches(0.45), prob, 11, bold=True, color=RED)
add_rect(slide, xp+Inches(2.1), yp, Inches(2.15), Inches(0.55),
RGBColor(0xDD,0xFF,0xEE), line_color=GREEN, line_width=0.5)
add_tb(slide, xp+Inches(2.15), yp+Inches(0.05),
Inches(2.05), Inches(0.45), sol, 11, color=GREEN)
# =============================================================================
# SLIDE 9 – Records, LMIS & Monitoring
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "Records, Registers & Logistic Management Information System (LMIS)")
slide_footer(slide)
registers = [
("Stock Register", "Running balance – inward, outward, balance for each drug"),
("Indent Register", "Track orders placed to district warehouse"),
("Expired Drug Reg.", "Record of expired/condemned stock with disposal details"),
("Cold Chain Log", "Twice-daily temperature readings for refrigerator/ILR"),
("Narcotic Register", "Legal requirement under NDPS Act for Schedule X/H drugs"),
("Dead Stock Register", "Non-consumable items – equipment, furniture"),
("Prescription Register","Daily prescriptions – monitor rational use"),
]
add_rect(slide, Inches(0.2), Inches(1.3), Inches(6.1), Inches(0.38), TEAL)
add_tb(slide, Inches(0.25), Inches(1.32), Inches(6.0), Inches(0.34),
"Essential Registers at PHC Drug Store", 13, bold=True, color=WHITE)
for ri, (reg, desc) in enumerate(registers):
yri = Inches(1.72) + ri * Inches(0.42)
bg3 = LTBLUE if ri%2==0 else WHITE
add_rect(slide, Inches(0.2), yri, Inches(2.5), Inches(0.4), bg3,
line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5)
add_tb(slide, Inches(0.25), yri+Inches(0.05), Inches(2.4), Inches(0.32),
reg, 11, bold=True, color=NAVY)
add_rect(slide, Inches(2.72), yri, Inches(3.58), Inches(0.4), bg3,
line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5)
add_tb(slide, Inches(2.77), yri+Inches(0.05), Inches(3.48), Inches(0.32),
desc, 11, color=DARKGRAY, wrap=True)
add_bullet_box(slide, Inches(6.6), Inches(1.3), Inches(6.5), Inches(2.5),
"LMIS – Logistic Management Information System",
["Collects, processes & reports data on drug flow",
"Enables: stock visibility, consumption tracking, demand forecasting",
"Automatic stockout alerts / reorder triggers",
"Expiry date tracking",
"Reduces pilferage through accountability",
"India: e-LMIS / HFMS under NHM",
"DVDMS: Drug & Vaccine Dist. Management System (NTEP/TB)"])
add_bullet_box(slide, Inches(6.6), Inches(4.0), Inches(6.5), Inches(2.0),
"Monthly Reports from PHC to District",
["Drug utilization report",
"Stockout report (days out-of-stock per item)",
"Near-expiry / expiry report",
"Requisition / indent for next supply",
"Cold chain maintenance log"])
# Disposal box
add_rounded(slide, Inches(0.2), Inches(4.52), Inches(6.1), Inches(2.4),
RGBColor(0xFF,0xF0,0xF0), line_color=RED, line_width=1)
add_rect(slide, Inches(0.2), Inches(4.52), Inches(6.1), Inches(0.38), RED)
add_tb(slide, Inches(0.3), Inches(4.54), Inches(5.9), Inches(0.34),
"Disposal of Expired / Unused Drugs", 13, bold=True, color=WHITE)
disposal_pts = [
"Deface before disposal (mark 'EXPIRED – NOT FOR USE')",
"Return to district warehouse with documentation",
"Cytotoxic/hazardous: Incineration (BMW Rules 2016)",
"Most oral solids: Encapsulation in cement / secured landfill",
"Liquids: Dilution & drain (not for hazardous)",
"NEVER return to market or redistribute",
]
tb_d = slide.shapes.add_textbox(Inches(0.35), Inches(5.0), Inches(5.8), Inches(1.85))
tf_d = tb_d.text_frame; tf_d.word_wrap = True
tf_d.margin_left = Pt(2); tf_d.margin_right = Pt(2)
tf_d.margin_top = Pt(2); tf_d.margin_bottom = Pt(2)
first = True
for dp in disposal_pts:
if first: p_d = tf_d.paragraphs[0]; first = False
else: p_d = tf_d.add_paragraph()
p_d.space_before = Pt(2)
r_d = p_d.add_run(); r_d.text = dp
r_d.font.name = "Calibri"; r_d.font.size = Pt(11)
r_d.font.color.rgb = DARKGRAY
# =============================================================================
# SLIDE 10 – WHO Indicators & Key Exam Points
# =============================================================================
slide = prs.slides.add_slide(blank)
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
slide_header(slide, "WHO Drug Use Indicators & High-Yield Exam Points",
"Most frequently tested in MD PSM theory and viva examinations")
slide_footer(slide)
# Indicators table
add_rect(slide, Inches(0.2), Inches(1.3), Inches(7.8), Inches(0.38), TEAL)
add_tb(slide, Inches(0.25), Inches(1.32), Inches(7.7), Inches(0.34),
"WHO Drug Use Indicators (Prescribing & Facility Indicators)", 13, bold=True, color=WHITE)
indicators = [
("Avg drugs per prescription", "< 3 (ideal: 1.6–1.8)", "Polypharmacy indicator"),
("% prescriptions with antibiotic","< 30% (outpatient)", "Antibiotic overuse"),
("% prescriptions with injection", "< 20%", "Injection overuse"),
("% drugs prescribed by generic", "> 80%", "Generic prescribing policy"),
("% drugs actually dispensed", "> 80%", "Supply chain performance"),
("% EDL drugs available", "≥ 80% (WHO minimum)", "Availability indicator"),
("Average stockout days/year", "< 30 days", "Supply continuity"),
("% drugs conforming to STG", "> 80%", "Rational prescribing"),
]
col_widths = [Inches(3.0), Inches(2.2), Inches(2.5)]
col_start_x = [Inches(0.2), Inches(3.25), Inches(5.5)]
for ri, (ind, bench, note) in enumerate(indicators):
y_ind = Inches(1.72) + ri * Inches(0.37)
bg4 = LTBLUE if ri%2==0 else WHITE
for ci, (val, cx, cw) in enumerate(zip([ind, bench, note], col_start_x, col_widths)):
add_rect(slide, cx, y_ind, cw, Inches(0.35), bg4,
line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5)
add_tb(slide, cx+Inches(0.05), y_ind+Inches(0.03),
cw-Inches(0.1), Inches(0.3), val, 11,
bold=(ci==1), color=NAVY if ci==1 else DARKGRAY)
# High-yield box
add_rect(slide, Inches(8.2), Inches(1.3), Inches(4.9), Inches(0.38), GOLD)
add_tb(slide, Inches(8.25), Inches(1.32), Inches(4.8), Inches(0.34),
"HIGH-YIELD EXAM POINTS", 13, bold=True, color=NAVY)
exam_pts = [
"1. VEN = Therapeutic importance; ABC = Economic value",
"2. FEFO preferred over FIFO at PHC level",
"3. Safety stock: Vital drugs = 2–3 months",
"4. ROL = (Daily consumption × Lead time) + Safety stock",
"5. Morbidity method = ideal; Consumption = most practical",
"6. DVDMS used in NTEP for drug/vaccine distribution",
"7. Narcotic register mandatory under NDPS Act",
"8. Avg drugs per Rx = <3 (WHO ideal: 1.6–1.8)",
"9. Push (traditional) vs Pull (rational) vs Hybrid (NHM)",
"10. Expired drugs: managed per BMW Rules 2016",
]
tb_ex = slide.shapes.add_textbox(Inches(8.25), Inches(1.72), Inches(4.75), Inches(3.5))
tf_ex = tb_ex.text_frame; tf_ex.word_wrap = True
tf_ex.margin_left = Pt(2); tf_ex.margin_right = Pt(2)
tf_ex.margin_top = Pt(2); tf_ex.margin_bottom = Pt(2)
first = True
for ep in exam_pts:
if first: p_ex = tf_ex.paragraphs[0]; first = False
else: p_ex = tf_ex.add_paragraph()
p_ex.space_before = Pt(3)
r_ex = p_ex.add_run(); r_ex.text = ep
r_ex.font.name = "Calibri"; r_ex.font.size = Pt(11)
r_ex.font.color.rgb = DARKGRAY
# Bottom mnemonic
add_rounded(slide, Inches(0.2), Inches(5.88), Inches(12.9), Inches(1.15),
RGBColor(0xE8,0xF5,0xFF), line_color=TEAL, line_width=1.5)
add_tb(slide, Inches(0.4), Inches(5.92), Inches(12.5), Inches(0.38),
"MNEMONIC: S – Q – P – S – D – U – M", 15, bold=True, color=NAVY,
align=PP_ALIGN.CENTER)
add_tb(slide, Inches(0.4), Inches(6.28), Inches(12.5), Inches(0.65),
"Selection → Quantification → Procurement → Storage → Distribution → Use → Monitoring",
14, color=TEAL, align=PP_ALIGN.CENTER)
# =============================================================================
# SAVE
# =============================================================================
out_path = "/tmp/workspace/drug-logistics-pptx/Drug_Logistic_Management_PHC_MD_PSM.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
cd /tmp/workspace/drug-logistics-pptx && python create_pptx.py 2>&1
grep -n "RGBColor(0x" /tmp/workspace/drug-logistics-pptx/create_pptx.py | grep -v "0x[0-9A-Fa-f][0-9A-Fa-f], 0x"
~/drug-logistics-pptx/create_pptx.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/drug-logistics-pptx/create_pptx.py'
cd /tmp/workspace/drug-logistics-pptx && sed -i 's/RGBColor(0xFFF3CD)/RGBColor(0xFF, 0xF3, 0xCD)/g' create_pptx.py && python create_pptx.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/drug-logistics-pptx/Drug_Logistic_Management_PHC_MD_PSM.pptx') print(f'Slides: {len(prs.slides)}') print(f'Dimensions: {prs.slide_width.inches:.2f}\" x {prs.slide_height.inches:.2f}\"') for i, slide in enumerate(prs.slides, 1): texts = [s.text_frame.text.split('\n')[0][:60] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] if texts: print(f'Slide {i}: {texts[0]}') import os size = os.path.getsize('/tmp/workspace/drug-logistics-pptx/Drug_Logistic_Management_PHC_MD_PSM.pptx') print(f'File size: {size/1024:.1f} KB') "
Drug Logistic Management PHC MD PSM
Presentation · PPTX
| Slide | Topic |
|---|---|
| 1 | Title slide with topic overview |
| 2 | The Supply Chain Cycle - 6 Rights + S-Q-P-S-D-U-M mnemonic |
| 3 | Drug Selection & Essential Medicines (NLEM, EDL, FDSI) |
| 4 | Quantification & Forecasting - 4 methods + key formula + ROL |
| 5 | Procurement - supply chain flow diagram + push/pull/hybrid |
| 6 | Drug Storage & Cold Chain - GSP, FIFO vs FEFO, temperature requirements |
| 7 | Inventory Management - ABC analysis table + VEN analysis + ABC-VEN matrix |
| 8 | Distribution & Rational Use of Drugs - problems and solutions table |
| 9 | Records, LMIS, DVDMS, monthly reports + drug disposal |
| 10 | WHO Drug Use Indicators table + 10 High-Yield Exam Points + mnemonic |
Find recent research papers on supply chain performance in Indian PHCs
"primary health care" AND "supply chain" AND India
"essential medicines" AND "availability" AND India AND "health facility"
"drug supply" AND "stockout" AND India AND "public health"
supply chain medicine availability PHC India research 2022 2023 2024 2025
"medicine availability" AND "India" AND "public health facility"
"pharmaceutical supply chain" AND India AND "health system"
"free drugs" AND India AND NHM AND availability
PMID: 34332569
drug availability India[MeSH Terms] AND health centers[MeSH Terms]
medicines stockout India low income public facilities
site:pubmed.ncbi.nlm.nih.gov supply chain PHC essential medicines India 2023 2024 2025
drug logistics India community health
https://www.frontiersin.org/journals/public-health/articles/…
essential medicines supply chain India PHC study findings journal article 2023 2024 2025
PMID: 41658009
https://pmc.ncbi.nlm.nih.gov/articles/PMC12515987
"Both private and public primary care facilities and public secondary facilities are currently not adequately prepared to comprehensively address the burden of NCDs in India."
| Paper | Year | Design | Key Finding | Source |
|---|---|---|---|---|
| Namasivayam et al. (UPMSC Reform) | 2025 | Implementation study | Availability 40% → 100% with 7-pillar redesign | Frontiers Public Health |
| Krishnan et al. (NNMS) | 2021 | National cross-sectional | Only 1.1% rural PHCs had full NCD medicine readiness | BMC Health Services Research, PMID 34332569 |
| Qualitative metasynthesis | 2024-25 | Systematic review (36 studies) | Medicine unavailability = top systemic barrier at PHC | PMC12515987 |
| PATH India Initiative | 2025 | Implementation science | Digital SCM → improved availability in 9 states | PATH.org |
| NHSRC Assessment | 2025 | Govt. evaluation report | OOPE on drugs 39.4%; last-mile delivery a persistent gap | NHSRC India |
| Kumar et al. (Pharmacists) | 2025 | Systematic review | Pharmacist competency gaps drive supply failures | PLoS ONE, PMID 40063591 |
| Saleem et al. (Antibiotics) | 2026 | Review | Antibiotic stockouts + irrational use paradox | Expert Rev Anti-Infect Ther, PMID 40110804 |
vector born disease and climate change md psm pg seminar presenatation
"climate change" AND "vector-borne diseases" AND India
climate change vector borne disease India malaria dengue chikungunya expansion PSM evidence 2024 2025
PMID: 38650059
PMID: 40981484
"climate change" AND "dengue" AND "malaria" AND "global warming" transmission
mkdir -p /tmp/workspace/vbd-climate-pptx
~/vbd-climate-pptx/create_pptx.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR
from io import BytesIO
# ── Palette ───────────────────────────────────────────────────────────────────
FOREST = RGBColor(0x1B, 0x4F, 0x2A) # dark green – title bar
OLIVE = RGBColor(0x4A, 0x7C, 0x3F) # mid green
SAGE = RGBColor(0xC8, 0xE6, 0xC9) # light green panel
AMBER = RGBColor(0xE6, 0x7E, 0x22) # orange accent
CRIMSON = RGBColor(0xC0, 0x39, 0x2B) # red alert
TEAL = RGBColor(0x00, 0x7B, 0x83) # teal
LTBLUE = RGBColor(0xD6, 0xED, 0xF5) # light blue
NAVY = RGBColor(0x14, 0x3D, 0x6B) # dark blue
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK = RGBColor(0x22, 0x22, 0x22)
MIDGRAY = RGBColor(0x55, 0x55, 0x55)
LTGRAY = RGBColor(0xF5, 0xF7, 0xF5)
YELLOW = RGBColor(0xFF, 0xF3, 0xCD)
GOLD = RGBColor(0xF0, 0xA5, 0x00)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ── Helpers ───────────────────────────────────────────────────────────────────
def rect(slide, x, y, w, h, fill, line=None, lw=0, round_=False):
t = MSO_SHAPE.ROUNDED_RECTANGLE if round_ else MSO_SHAPE.RECTANGLE
s = slide.shapes.add_shape(t, x, y, w, h)
s.fill.solid(); s.fill.fore_color.rgb = fill
if line: s.line.color.rgb = line; s.line.width = Pt(lw)
else: s.line.fill.background()
s.shadow.inherit = False
return s
def tb(slide, x, y, w, h, text, size, bold=False, color=DARK,
align=PP_ALIGN.LEFT, italic=False, wrap=True):
t = slide.shapes.add_textbox(x, y, w, h)
tf = t.text_frame; tf.word_wrap = wrap
tf.margin_left = tf.margin_right = 0
tf.margin_top = tf.margin_bottom = Pt(2)
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.name = "Calibri"; r.font.size = Pt(size)
r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color
return t
def add_p(tf, text, size, bold=False, color=DARK, align=PP_ALIGN.LEFT,
italic=False, space_before=3):
p = tf.add_paragraph(); p.alignment = align; p.space_before = Pt(space_before)
r = p.add_run(); r.text = text
r.font.name = "Calibri"; r.font.size = Pt(size)
r.font.bold = bold; r.font.italic = italic; r.font.color.rgb = color
return p
def header(slide, title, subtitle=None, bg=FOREST):
rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(7.5), LTGRAY)
rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(1.12), bg)
rect(slide, Inches(0), Inches(1.12), Inches(13.333), Inches(0.055), AMBER)
tb(slide, Inches(0.35), Inches(0.1), Inches(12.7), Inches(0.72),
title, 26, bold=True, color=WHITE)
if subtitle:
tb(slide, Inches(0.35), Inches(0.78), Inches(12.7), Inches(0.38),
subtitle, 12, color=RGBColor(0xC8, 0xE6, 0xC9))
def footer(slide, txt="Vector-Borne Diseases & Climate Change | MD PSM PG Seminar"):
rect(slide, Inches(0), Inches(7.2), Inches(13.333), Inches(0.3), FOREST)
tb(slide, Inches(0.3), Inches(7.21), Inches(12.7), Inches(0.28),
txt, 9, color=RGBColor(0xAA, 0xDD, 0xAA))
def bullet_box(slide, x, y, w, h, title, pts, title_bg=OLIVE, body_bg=SAGE,
fsize=12):
rect(slide, x, y, w, Inches(0.38), title_bg)
tb(slide, x+Inches(0.1), y+Inches(0.03), w-Inches(0.2), Inches(0.32),
title, 13, bold=True, color=WHITE)
rect(slide, x, y+Inches(0.38), w, h-Inches(0.38), body_bg)
bx = slide.shapes.add_textbox(x+Inches(0.15), y+Inches(0.45),
w-Inches(0.3), h-Inches(0.55))
tf = bx.text_frame; tf.word_wrap = True
tf.margin_left = tf.margin_right = Pt(2)
tf.margin_top = tf.margin_bottom = Pt(2)
first = True
for b in pts:
if first: p = tf.paragraphs[0]; first = False
else: p = tf.add_paragraph()
p.space_before = Pt(3)
r = p.add_run(); r.text = b
r.font.name = "Calibri"; r.font.size = Pt(fsize); r.font.color.rgb = DARK
# =============================================================================
# SLIDE 1 – Title
# =============================================================================
s = prs.slides.add_slide(blank)
rect(s, Inches(0), Inches(0), Inches(13.333), Inches(7.5), FOREST)
rect(s, Inches(0), Inches(0), Inches(0.3), Inches(7.5), AMBER)
rect(s, Inches(0.3), Inches(2.55), Inches(13.0), Inches(0.07), AMBER)
rect(s, Inches(0.3), Inches(5.15), Inches(13.0), Inches(0.07), RGBColor(0x88, 0xCC, 0x88))
tb(s, Inches(0.9), Inches(0.7), Inches(11.5), Inches(0.8),
"VECTOR-BORNE DISEASES", 40, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
tb(s, Inches(0.9), Inches(1.45), Inches(11.5), Inches(0.7),
"AND CLIMATE CHANGE", 36, bold=True, color=RGBColor(0x88, 0xCC, 0x88),
align=PP_ALIGN.CENTER)
tb(s, Inches(0.9), Inches(2.1), Inches(11.5), Inches(0.45),
"Impact, Mechanisms, Evidence & Public Health Response", 18,
color=RGBColor(0xCC, 0xEE, 0xCC), align=PP_ALIGN.CENTER)
tb(s, Inches(1.0), Inches(2.82), Inches(11.2), Inches(0.45),
"MD Preventive & Social Medicine | PG Seminar Presentation", 16,
bold=True, color=AMBER, align=PP_ALIGN.CENTER)
topics = ["Global Burden of VBDs | Climate-Disease Mechanisms",
"Disease-wise Impact: Malaria, Dengue, Chikungunya, Filariasis, Kala-azar, JE",
"Vector Biology & Climate | Geographic Range Expansion",
"India-Specific Evidence | NVBDCP & Climate Adaptation",
"One Health Approach | Mitigation & Adaptation Strategies"]
bx = s.shapes.add_textbox(Inches(1.5), Inches(3.45), Inches(10.3), Inches(1.55))
tf = bx.text_frame; tf.word_wrap = True
tf.margin_left = tf.margin_right = 0; tf.margin_top = tf.margin_bottom = Pt(2)
first = True
for t_ in topics:
if first: p = tf.paragraphs[0]; first = False
else: p = tf.add_paragraph()
p.alignment = PP_ALIGN.CENTER; p.space_before = Pt(3)
r = p.add_run(); r.text = t_
r.font.name = "Calibri"; r.font.size = Pt(13)
r.font.color.rgb = RGBColor(0xBB, 0xEE, 0xBB)
tb(s, Inches(1), Inches(5.35), Inches(11.2), Inches(0.5),
"Sources: Park's PSM 26th Ed. | NVBDCP India | WHO 2024 | IPCC AR6 | Recent PubMed Literature",
11, italic=True, color=RGBColor(0x77, 0xAA, 0x77), align=PP_ALIGN.CENTER)
# =============================================================================
# SLIDE 2 – Global Burden & Definitions
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Global Burden & Definitions",
"Vector-borne diseases (VBDs) account for >17% of all infectious disease burden worldwide")
footer(s)
stats = [
("700,000+", "Deaths/year\nglobally from VBDs"),
("3.9 Billion", "People at risk\nof dengue alone"),
("40%", "India's share of\nglobal filariasis"),
("18%", "Global kala-azar\ncases from India"),
("10x", "Dengue incidence\nrise in 20 years"),
("119", "Countries now\naffected by Chikungunya"),
]
colors6 = [FOREST, OLIVE, TEAL, NAVY, CRIMSON, AMBER]
w6 = Inches(2.0); h6 = Inches(1.55)
xs6 = [Inches(0.25)+i*(w6+Inches(0.05)) for i in range(6)]
for i, ((num, lbl), col) in enumerate(zip(stats, colors6)):
rect(s, xs6[i], Inches(1.3), w6, h6, col, round_=True)
tb(s, xs6[i]+Inches(0.08), Inches(1.38), w6-Inches(0.16), Inches(0.65),
num, 26, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
tb(s, xs6[i]+Inches(0.08), Inches(2.02), w6-Inches(0.16), Inches(0.7),
lbl, 11, color=RGBColor(0xEE, 0xFF, 0xEE), align=PP_ALIGN.CENTER)
bullet_box(s, Inches(0.2), Inches(3.08), Inches(6.1), Inches(2.2),
"Definition & Classification",
["VBDs: Diseases transmitted through bites of infected arthropod vectors",
"Vectors include: Mosquitoes, ticks, sandflies, fleas, triatomine bugs",
"Pathogens: Parasites, viruses, bacteria",
"India's NVBDCP covers: Malaria, Dengue, Chikungunya,",
" Kala-azar, Filariasis, Japanese Encephalitis (JE)"],
title_bg=FOREST, body_bg=SAGE)
bullet_box(s, Inches(6.55), Inches(3.08), Inches(6.55), Inches(2.2),
"Key Vectors & Diseases (India)",
["Anopheles mosquito: Malaria (An. culicifacies, An. stephensi)",
"Aedes aegypti / albopictus: Dengue, Chikungunya, Zika",
"Culex quinquefasciatus: Filariasis, Japanese Encephalitis",
"Phlebotomus sandfly: Kala-azar (Visceral Leishmaniasis)",
"Aedes (urban areas): Re-emergence & climate-driven expansion"],
title_bg=TEAL, body_bg=LTBLUE)
rect(s, Inches(0.2), Inches(5.5), Inches(12.9), Inches(0.62),
YELLOW, line=GOLD, lw=1.2, round_=True)
tb(s, Inches(0.4), Inches(5.55), Inches(12.5), Inches(0.52),
"IPCC AR6 (2023): Climate change is one of the most significant drivers of emerging and re-emerging infectious diseases. "
"VBDs are among the most climate-sensitive disease categories.", 12,
bold=False, color=RGBColor(0x5A, 0x3A, 0x00))
# =============================================================================
# SLIDE 3 – Climate-Disease Mechanisms
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "How Climate Change Drives Vector-Borne Diseases",
"Multiple interconnected pathways linking climate variables to VBD transmission")
footer(s)
mechanisms = [
(FOREST, "Temperature Rise\n(Global Warming)",
["Shorter extrinsic incubation period (EIP) of pathogens",
"Increased mosquito biting rate",
"Extended vector breeding season",
"Poleward & upward altitudinal range expansion",
"Anopheles stephensi now in new urban areas"]),
(TEAL, "Altered Rainfall\n& Flooding",
["Heavy rains create new breeding sites",
"Floods increase vector density post-event",
"Pakistan 2023: Floods caused 5x malaria increase",
"Monsoon extension = longer transmission window",
"Drought paradox: stored water = Aedes breeding"]),
(AMBER, "Urbanisation &\nDeforestation",
["Loss of biodiversity reduces disease regulation",
"Urban heat islands amplify temperature effect",
"Aedes aegypti thrives in urban microhabitats",
"Forest clearing disrupts vector-host equilibria",
"Migration moves infected hosts to new areas"]),
(NAVY, "Extreme Weather\nEvents",
["Cyclones create widespread standing water",
"Heatwaves stress immune response of hosts",
"El Nino: Malaria surges in South/South-East Asia",
"Disrupted healthcare access during disasters",
"Post-disaster displacement increases exposure"]),
]
bw = Inches(2.95); bh = Inches(3.5)
xs_m = [Inches(0.2)+i*(bw+Inches(0.1)) for i in range(4)]
for i, (col, title_, pts) in enumerate(mechanisms):
rect(s, xs_m[i], Inches(1.3), bw, Inches(0.45), col, round_=False)
tb(s, xs_m[i]+Inches(0.08), Inches(1.32), bw-Inches(0.16), Inches(0.42),
title_, 13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, xs_m[i], Inches(1.75), bw, bh-Inches(0.45), SAGE)
bx2 = s.shapes.add_textbox(xs_m[i]+Inches(0.12), Inches(1.83),
bw-Inches(0.24), bh-Inches(0.65))
tf2 = bx2.text_frame; tf2.word_wrap = True
tf2.margin_left = tf2.margin_right = Pt(2)
tf2.margin_top = tf2.margin_bottom = Pt(2)
first = True
for pt in pts:
if first: p2 = tf2.paragraphs[0]; first = False
else: p2 = tf2.add_paragraph()
p2.space_before = Pt(4)
r2 = p2.add_run(); r2.text = pt
r2.font.name = "Calibri"; r2.font.size = Pt(11.5); r2.font.color.rgb = DARK
# Central arrow concept
rect(s, Inches(0.2), Inches(5.0), Inches(12.9), Inches(0.55),
FOREST, round_=True)
tb(s, Inches(0.4), Inches(5.04), Inches(12.5), Inches(0.46),
"Net Effect: Wider geographic distribution + Longer transmission seasons + Higher vector density = INCREASED VBD BURDEN",
13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# Additional indirect
bullet_box(s, Inches(0.2), Inches(5.75), Inches(12.9), Inches(1.2),
"Indirect Effects on Host Susceptibility",
["Malnutrition from crop failure (drought/floods) weakens immunity",
"Displacement & overcrowding after disasters raises exposure",
"Heat stress, air pollution, and food insecurity impair host defence",
"Healthcare system disruption during extreme events delays diagnosis & treatment"],
title_bg=CRIMSON, body_bg=RGBColor(0xFF, 0xE8, 0xE8), fsize=11)
# =============================================================================
# SLIDE 4 – Disease-wise: Malaria
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Malaria & Climate Change",
"India: ~1.6 million cases (2023) | Anopheles culicifacies (80%), An. stephensi (urban emergence)")
footer(s)
bullet_box(s, Inches(0.2), Inches(1.3), Inches(4.1), Inches(2.75),
"Climate-Malaria Linkages",
["Optimal temp for Plasmodium falciparum: 25-30°C",
"An. gambiae transmission stops below 16°C",
"Each 1°C rise: EIP of P. vivax shortens by ~3 days",
"Monsoon variability alters breeding site availability",
"Altitude expansion: Himalayan foothills now endemic",
"An. stephensi: Urban malaria vector, now in 15+ Indian cities",
"IPCC: Malaria risk area to increase by 5-7% by 2050"],
title_bg=FOREST, body_bg=SAGE)
bullet_box(s, Inches(4.5), Inches(1.3), Inches(4.1), Inches(2.75),
"India-Specific Evidence",
["Odisha, Jharkhand, Chhattisgarh: Highest burden (tribal forest)",
"P. falciparum now > P. vivax (reversal of earlier pattern)",
"API (Annual Parasite Incidence) used as monitoring metric",
"ABER (Annual Blood Examination Rate) target: >10%",
"Climate-linked outbreaks after El Nino events",
"NE India: Year-round transmission linked to rainfall",
"2024: India reported 62% reduction in malaria vs 2017 (NVBDCP)"])
bullet_box(s, Inches(8.8), Inches(1.3), Inches(4.3), Inches(2.75),
"NVBDCP Malaria Control Strategies",
["Early case detection (RDT) & complete treatment",
"IRS (Indoor Residual Spraying) with insecticides",
"Long-Lasting Insecticidal Nets (LLINs) - free distribution",
"Larvivorous fish (Gambusia) in water bodies",
"Malaria elimination target: India by 2030 (NFME)",
"Sentinel surveillance for drug-resistance (ACT)",
"Epidemic preparedness plans at district level"])
# Key metrics box
rect(s, Inches(0.2), Inches(4.25), Inches(12.9), Inches(0.06), AMBER)
rect(s, Inches(0.2), Inches(4.32), Inches(12.9), Inches(1.3), YELLOW, round_=True)
tb(s, Inches(0.4), Inches(4.36), Inches(12.5), Inches(0.34),
"HIGH-YIELD METRICS", 12, bold=True, color=RGBColor(0x5A, 0x3A, 0x00))
metrics_m = [
("API", "< 1 = Low, 1-2 = Medium, > 2 = High risk"),
("ABER", "> 10% of population tested annually (target)"),
("SPR", "Slide Positivity Rate: cases/slides examined x 100"),
("SFR", "Slide Falciparum Rate: P.falciparum/slides x 100"),
]
for i, (k, v) in enumerate(metrics_m):
xm = Inches(0.4) + i * Inches(3.2); ym = Inches(4.75)
rect(s, xm, ym, Inches(1.1), Inches(0.42), FOREST, round_=True)
tb(s, xm+Inches(0.05), ym+Inches(0.06), Inches(1.0), Inches(0.3),
k, 13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
tb(s, xm+Inches(1.15), ym+Inches(0.06), Inches(2.0), Inches(0.32),
v, 10, color=DARK)
# =============================================================================
# SLIDE 5 – Disease-wise: Dengue, Chikungunya, Zika
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Dengue, Chikungunya & Zika – Climate-Driven Expansion",
"2024: India reported 233,000+ dengue cases & 17,800 confirmed chikungunya cases (NCVBDC)")
footer(s)
bullet_box(s, Inches(0.2), Inches(1.3), Inches(4.1), Inches(3.3),
"Dengue & Climate",
["Vector: Aedes aegypti (primary), Ae. albopictus (secondary)",
"Optimal temp: 25-28°C; breeding accelerates in stagnant water",
"1°C rise: 10-16% increase in dengue transmission probability",
"Extended rainy season = prolonged breeding season",
"Urban sprawl with water storage = ideal Aedes habitat",
"Dengue incidence: 10-fold increase globally in 20 years",
"India: Year-round dengue now in previously seasonal areas",
"Geographic spread: Non-endemic hills & plateau areas now affected",
"Dengue types: DENV 1-4; secondary infection = DHF risk"])
bullet_box(s, Inches(4.5), Inches(1.3), Inches(4.1), Inches(3.3),
"Chikungunya & Climate",
["Vector: Aedes aegypti & Ae. albopictus",
"Re-emerged in India 2005-06 after 32-year gap",
"Ae. albopictus: Climate-resilient, thrives in cooler/rural areas",
"Albopictus can survive lower temps than aegypti: Key for highland spread",
"Now endemic in 119+ countries (2024 WHO)",
"Mutation A226V in E1 gene: Adapted to Ae. albopictus",
"Wetter monsoons: More breeding sites, more outbreaks",
"India 2024: 231,000 suspected cases (NCVBDC)"])
bullet_box(s, Inches(8.8), Inches(1.3), Inches(4.3), Inches(3.3),
"Zika & Other Aedes-Borne Viruses",
["Zika: First detected in India 2016-17 (Gujarat, Rajasthan, Kerala)",
"Same vector as dengue: Climate drivers identical",
"Teratogenic: Microcephaly - critical in pregnant women",
"Co-circulation risk: Dengue + Chikungunya + Zika in same area",
"Yellow fever, Rift Valley fever: Potential future introductions",
"Climate change facilitates Aedes range expansion northward",
"India: No yellow fever endemic, but vigilance for importation"])
# Warning/intervention strip
rect(s, Inches(0.2), Inches(4.82), Inches(12.9), Inches(0.55),
CRIMSON, round_=True)
tb(s, Inches(0.4), Inches(4.86), Inches(12.5), Inches(0.46),
"DENGUE TRIAD: Fever 3-7 days + Severe headache/retro-orbital pain + Myalgia/arthralgia | Warning signs: Abdominal pain, persistent vomiting, gum bleeding, rapid breathing, fatigue (WHO 2009)",
12, bold=True, color=WHITE)
bullet_box(s, Inches(0.2), Inches(5.55), Inches(12.9), Inches(1.35),
"Integrated Vector Management for Aedes Control",
["Source reduction: Remove all water containers - tires, coolers, flower pots, coconut shells",
"Biological: Temephos (larvicide) in stored water; Bti (Bacillus thuringiensis israelensis)",
"Chemical: Pyrethroid fogging - space spraying during outbreaks (NOT for routine use)",
"Community: ASHA-led weekly dry-day campaigns ('Shukravar-Mangal-Boodh')",
"Surveillance: Stegomyia indices - Container Index (CI), Breteau Index (BI), House Index (HI)"],
title_bg=FOREST, body_bg=SAGE, fsize=11)
# =============================================================================
# SLIDE 6 – Kala-azar, Filariasis, JE
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Kala-azar, Lymphatic Filariasis & Japanese Encephalitis",
"Climate change threatens elimination targets for all three diseases")
footer(s)
bullet_box(s, Inches(0.2), Inches(1.3), Inches(4.1), Inches(2.65),
"Kala-azar (Visceral Leishmaniasis)",
["Vector: Phlebotomus argentipes (sandfly)",
"India: 18% of global VL cases; target elimination by 2023 (revised to 2030)",
"Endemic: Bihar, Jharkhand, West Bengal, UP",
"Climate link: Sandfly thrives in humid, warm conditions (>70% RH, >20°C)",
"Drought paradox: Drought displaces populations, increases contact",
"Flooding disrupts sandfly habitat but forces migration",
"PKDL (Post-Kala-azar Dermal Leishmaniasis): Climate stress can reactivate",
"Climate models: Bihar elimination at risk if temp rises >1.5°C"])
bullet_box(s, Inches(4.5), Inches(1.3), Inches(4.1), Inches(2.65),
"Lymphatic Filariasis (Elephantiasis)",
["Vector: Culex quinquefasciatus mosquito",
"India: 40% of global burden; 619,000 lymphoedema cases (2023)",
"Endemic: 256 districts; elimination target by 2027 (MDA strategy)",
"Climate link: Culex breeds in polluted/stagnant urban water",
"Warmer temps: Shorter extrinsic incubation of Wuchereria bancrofti",
"Annual MDA: DEC + Albendazole (triple therapy in some states)",
"Climate change complicates MDA timing with altered rainfall",
"Transmission Assessment Surveys (TAS) used to certify elimination"])
bullet_box(s, Inches(8.8), Inches(1.3), Inches(4.3), Inches(2.65),
"Japanese Encephalitis (JE)",
["Vector: Culex tritaeniorhynchus; Amplifying host: Pigs, wading birds",
"Endemic: UP, Bihar, Assam, West Bengal, Karnataka, Goa",
"Climate link: Rice field ecology + warm + rainfall = peak transmission",
"Seasonal: Post-monsoon transmission peak (Aug-Oct)",
"Flooding: Spreads mosquito habitat to new areas",
"Case fatality rate: 20-30%; neurological sequelae in 30-50%",
"JE vaccine: Live attenuated SA 14-14-2 vaccine in UIP",
"Climate change may extend JE season and geographic range"])
rect(s, Inches(0.2), Inches(4.15), Inches(12.9), Inches(0.07), AMBER)
bullet_box(s, Inches(0.2), Inches(4.25), Inches(6.2), Inches(2.35),
"Elimination Targets (India) Under Climate Pressure",
["Malaria: Elimination by 2030 (NFME 2016)",
"Kala-azar: <1 case/10,000 population at block level",
"Lymphatic Filariasis: Elimination by 2027 (MDA + MMDP)",
"JE: Vaccination-based control under NHM",
"Climate change is a direct threat to ALL four elimination targets"],
title_bg=CRIMSON, body_bg=RGBColor(0xFF, 0xEC, 0xEC))
bullet_box(s, Inches(6.6), Inches(4.25), Inches(6.5), Inches(2.35),
"One Health & Climate: Cross-cutting Themes",
["JE: Animal reservoir (pig) - farming practices affected by climate",
"Kala-azar: Zoonotic in some regions (canine reservoir)",
"Malaria: An. stephensi now infecting urban animals",
"Climate change amplifies zoonotic spillover risk",
"One Health approach: Integrate human-animal-environment surveillance",
"IPCC: Deforestation + climate = double hit on VBD transmission"])
# =============================================================================
# SLIDE 7 – Geographic Range Expansion & India Evidence
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Geographic Range Expansion & India-Specific Evidence",
"VBDs are moving to previously non-endemic altitudes and latitudes in India")
footer(s)
bullet_box(s, Inches(0.2), Inches(1.3), Inches(6.1), Inches(2.8),
"Altitude Expansion (Uphill Movement)",
["Malaria: Cases reported for first time in Himalayan districts > 2000m",
"Darjeeling, Sikkim, Himachal Pradesh: New malaria foci",
"Dengue: Kerala highlands, Nilgiris, Ooty - previously non-endemic",
"Temperature rise of 0.5°C = 100m upward shift of mosquito range",
"Chikungunya: Reported in hilly NE states not previously affected",
"Mechanism: Temperature was the limiting factor; now removed by warming"])
bullet_box(s, Inches(6.5), Inches(1.3), Inches(6.6), Inches(2.8),
"Latitude Expansion & Urban Spread",
["Dengue: Moved from peninsular India to Rajasthan, Punjab, J&K",
"An. stephensi (urban malaria vector): Detected in Djibouti (2012),",
" now in India - Delhi, Ahmedabad, Chennai, Hyderabad",
"Chikungunya: From coastal endemic to inland states",
"Climate models predict: By 2050, additional 1 billion people at dengue risk",
"Urban heat islands: Average 1-4°C higher than surroundings",
"UHI amplifies climate effect on Aedes breeding in Indian cities"])
rect(s, Inches(0.2), Inches(4.3), Inches(12.9), Inches(0.38), NAVY)
tb(s, Inches(0.3), Inches(4.32), Inches(12.6), Inches(0.34),
"Key India-Specific Research Evidence", 13, bold=True, color=WHITE)
evidence = [
("Frontiers Public Health\n2025", "VBD threats India:\n233,000 dengue deaths &\nchikungunya cases 2024;\n40% global filariasis"),
("Singapore Med J\n2024 (PMID: 38650059)", "Climate & infections in\nAsia: Temp, rainfall,\nextreme weather all\ndriving VBD expansion"),
("Roy et al. mBio\n2025 (PMID: 40981484)", "Neurotropic VBDs &\nclimate change: JE, WNV,\ndelayed monsoon extends\ntransmission window"),
("NCVBDC India\n2024 Data", "Dengue: 233,000 cases,\n236 deaths;\nChikungunya: 231,000\nsuspected 2024"),
("IPCC AR6\n2023", "Climate change major\ndriver of emerging &\nre-emerging infectious\ndiseases globally"),
]
ecols = [FOREST, TEAL, NAVY, CRIMSON, OLIVE]
ew = Inches(2.4); eh = Inches(2.2)
exs = [Inches(0.2)+i*(ew+Inches(0.1)) for i in range(5)]
for i, ((src, cnt), col) in enumerate(zip(evidence, ecols)):
rect(s, exs[i], Inches(4.8), ew, Inches(0.38), col)
tb(s, exs[i]+Inches(0.07), Inches(4.82), ew-Inches(0.14), Inches(0.34),
src, 9, bold=True, color=WHITE)
rect(s, exs[i], Inches(5.2), ew, eh-Inches(0.38), SAGE)
tb(s, exs[i]+Inches(0.07), Inches(5.25), ew-Inches(0.14), eh-Inches(0.6),
cnt, 10, color=DARK, wrap=True)
# =============================================================================
# SLIDE 8 – NVBDCP & Public Health Response
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "NVBDCP & India's Public Health Response to Climate-VBD Nexus",
"National Vector Borne Disease Control Programme (NVBDCP) - Three-Pronged Strategy")
footer(s)
# 3 pillar diagram
pillars = [
(FOREST, "PILLAR 1\nDisease Management",
["Early case detection (RDT, microscopy)",
"Complete & supervised treatment",
"Strengthening referral services",
"Epidemic preparedness & rapid response",
"Drug resistance surveillance (ACT, CQ)",
"NIKSHAY-like case notification system"]),
(TEAL, "PILLAR 2\nIntegrated Vector\nManagement (IVM)",
["Indoor Residual Spraying (IRS) in high-risk areas",
"Long-Lasting Insecticidal Nets (LLIN/ITN)",
"Larvivorous fish (Gambusia) in water bodies",
"Anti-larval measures: Temephos, Bti",
"Source reduction (dry-day campaigns)",
"Minor environmental engineering"]),
(AMBER, "PILLAR 3\nSupportive\nInterventions",
["Behaviour Change Communication (BCC)",
"Public-private partnership",
"Inter-sectoral convergence",
"Human resource development",
"Operational research",
"Vaccination (JE), MDA (Filariasis)"]),
]
pw = Inches(4.1); ph = Inches(3.2)
pxs = [Inches(0.2), Inches(4.5), Inches(8.8)]
for i, (col, ptitle, pts) in enumerate(pillars):
rect(s, pxs[i], Inches(1.3), pw, Inches(0.55), col)
tb(s, pxs[i]+Inches(0.1), Inches(1.33), pw-Inches(0.2), Inches(0.5),
ptitle, 13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, pxs[i], Inches(1.85), pw, ph-Inches(0.55), SAGE)
bx3 = s.shapes.add_textbox(pxs[i]+Inches(0.12), Inches(1.93),
pw-Inches(0.24), ph-Inches(0.75))
tf3 = bx3.text_frame; tf3.word_wrap = True
tf3.margin_left = tf3.margin_right = Pt(2)
tf3.margin_top = tf3.margin_bottom = Pt(2)
first = True
for pt in pts:
if first: p3 = tf3.paragraphs[0]; first = False
else: p3 = tf3.add_paragraph()
p3.space_before = Pt(4)
r3 = p3.add_run(); r3.text = pt
r3.font.name = "Calibri"; r3.font.size = Pt(11.5); r3.font.color.rgb = DARK
bullet_box(s, Inches(0.2), Inches(4.7), Inches(6.2), Inches(2.05),
"Climate-Adaptive Surveillance Measures",
["Dynamic risk mapping using climate models + disease data",
"IDSP (Integrated Disease Surveillance Programme): Climate-linked alerts",
"NVBDCP + IMD (India Meteorological Dept) data integration",
"Real-time entomological surveillance (larval indices)",
"Early Warning Systems (EWS) for malaria based on rainfall, temp"],
title_bg=NAVY, body_bg=LTBLUE)
bullet_box(s, Inches(6.6), Inches(4.7), Inches(6.5), Inches(2.05),
"National Action Plan on Climate Change & Human Health (NAPCCHH)",
["Launched by MoHFW India as part of NAPCC 2014",
"Component: Climate-sensitive disease surveillance",
"VBD early warning incorporated in Integrated Health Information Platform",
"NCDC (National Centre for Disease Control): Lead agency",
"Action research grants for climate-VBD interaction studies",
"Goal: Health system resilience to climate shocks"])
# =============================================================================
# SLIDE 9 – One Health & Mitigation
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "One Health Approach & Adaptation/Mitigation Strategies",
"Addressing the climate-VBD nexus requires actions at individual, community, national, and global levels")
footer(s)
rect(s, Inches(0.2), Inches(1.3), Inches(12.9), Inches(0.42), FOREST)
tb(s, Inches(0.3), Inches(1.32), Inches(12.6), Inches(0.38),
"ONE HEALTH FRAMEWORK: Human Health - Animal Health - Environmental Health are interconnected", 13,
bold=True, color=WHITE, align=PP_ALIGN.CENTER)
oh_boxes = [
(FOREST, "Human Health\nSector",
["Strengthen VBD surveillance & early warning",
"Community education on vector breeding prevention",
"Rapid diagnostic & treatment access",
"Health system climate resilience planning",
"Climate-informed outbreak forecasting models"]),
(TEAL, "Animal/Veterinary\nSector",
["Surveillance of zoonotic vectors in livestock",
"Pig vaccination programs near JE-endemic areas",
"Monitor Leishmania in canine reservoirs",
"Restrict pig farming near human settlements",
"Zoonotic disease early alert systems"]),
(OLIVE, "Environmental\nSector",
["Urban planning: Green spaces reduce urban heat islands",
"Wetland conservation: Reduces uncontrolled vector breeding",
"Solid waste management: Eliminate Aedes breeding sites",
"Water management: Prevent waterlogging",
"Afforestation: Disrupts vector-host dynamics positively"]),
(AMBER, "Climate & Policy\nSector",
["Reduce greenhouse gas emissions (mitigation)",
"Paris Agreement: Limit warming to 1.5°C",
"National Adaptation Plans include health sector",
"Climate finance for LMIC health system strengthening",
"UNFCCC - Health equity in adaptation frameworks"]),
]
ow = Inches(3.0); oh_ = Inches(2.8)
oxs = [Inches(0.2)+i*(ow+Inches(0.1)) for i in range(4)]
for i, (col, otitle, opts) in enumerate(oh_boxes):
rect(s, oxs[i], Inches(1.85), ow, Inches(0.42), col)
tb(s, oxs[i]+Inches(0.08), Inches(1.87), ow-Inches(0.16), Inches(0.38),
otitle, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, oxs[i], Inches(2.27), ow, oh_-Inches(0.42), SAGE)
bx4 = s.shapes.add_textbox(oxs[i]+Inches(0.1), Inches(2.33),
ow-Inches(0.2), oh_-Inches(0.65))
tf4 = bx4.text_frame; tf4.word_wrap = True
tf4.margin_left = tf4.margin_right = Pt(2)
tf4.margin_top = tf4.margin_bottom = Pt(2)
first = True
for opt in opts:
if first: p4 = tf4.paragraphs[0]; first = False
else: p4 = tf4.add_paragraph()
p4.space_before = Pt(3)
r4 = p4.add_run(); r4.text = opt
r4.font.name = "Calibri"; r4.font.size = Pt(11); r4.font.color.rgb = DARK
bullet_box(s, Inches(0.2), Inches(4.85), Inches(6.2), Inches(2.0),
"Novel Technologies for Climate-VBD Control",
["Sterile Insect Technique (SIT): Radiation-sterilized Aedes males",
"Wolbachia mosquitoes: Reduce dengue/chikungunya transmission",
"Gene drive technology: Ongoing research, ethical debate",
"Drone-based larval surveillance & larviciding",
"AI/ML: Climate-disease prediction models"],
title_bg=NAVY, body_bg=LTBLUE)
bullet_box(s, Inches(6.6), Inches(4.85), Inches(6.5), Inches(2.0),
"SDG Linkages",
["SDG 3: Good Health - VBD elimination targets directly linked",
"SDG 13: Climate Action - Must address VBD burden",
"SDG 11: Sustainable Cities - Urban Aedes control",
"SDG 6: Clean Water - Reduce vector breeding in water infrastructure",
"SDG 15: Life on Land - Biodiversity protects against VBD amplification"])
# =============================================================================
# SLIDE 10 – Summary & Exam Points
# =============================================================================
s = prs.slides.add_slide(blank)
header(s, "Summary, High-Yield Exam Points & References",
"Key takeaways for MD PSM theory, viva, and short-answer questions")
footer(s)
rect(s, Inches(0.2), Inches(1.3), Inches(8.6), Inches(0.38), FOREST)
tb(s, Inches(0.3), Inches(1.32), Inches(8.4), Inches(0.34),
"HIGH-YIELD EXAM POINTS", 13, bold=True, color=WHITE)
exam_pts = [
"1. Climate change = key driver of VBD emergence, re-emergence, and geographic expansion",
"2. 3 main climate drivers: Temperature rise (EIP shortening), Rainfall change (breeding sites), Extreme weather events",
"3. An. stephensi is the urban malaria vector now expanding to non-endemic Indian cities",
"4. Dengue: 10-fold global increase in 20 years; 1°C rise = 10-16% more transmission",
"5. Aedes albopictus (tiger mosquito): Climate-resilient, spreads chikungunya to cooler/hilly areas",
"6. Kala-azar vector (sandfly) thrives in warm humid conditions; drought paradox increases human contact",
"7. An. stephensi: Detected in 15+ Indian cities including Delhi, Ahmedabad, Chennai (urban malaria threat)",
"8. NVBDCP: 3 pillars = Disease management + IVM + Supportive interventions",
"9. Stegomyia indices: Container Index, House Index, Breteau Index - monitor Aedes control",
"10. One Health approach: VBDs require human + animal + environmental surveillance integration",
"11. NAPCCHH (2014): India's national plan for climate change and human health",
"12. Elimination targets threatened: Malaria (2030), Kala-azar, Filariasis (2027) - climate adds pressure",
]
bx5 = s.shapes.add_textbox(Inches(0.3), Inches(1.75), Inches(8.4), Inches(3.95))
tf5 = bx5.text_frame; tf5.word_wrap = True
tf5.margin_left = tf5.margin_right = Pt(2)
tf5.margin_top = tf5.margin_bottom = Pt(2)
first = True
for ep in exam_pts:
if first: p5 = tf5.paragraphs[0]; first = False
else: p5 = tf5.add_paragraph()
p5.space_before = Pt(2)
r5 = p5.add_run(); r5.text = ep
r5.font.name = "Calibri"; r5.font.size = Pt(10.5); r5.font.color.rgb = DARK
# References
rect(s, Inches(9.0), Inches(1.3), Inches(4.1), Inches(0.38), NAVY)
tb(s, Inches(9.1), Inches(1.32), Inches(3.9), Inches(0.34),
"Key References", 13, bold=True, color=WHITE)
refs = [
"Park's PSM 26th Ed. (NVBDCP chapter)",
"WHO Vector-Borne Diseases Fact Sheet 2024",
"IPCC AR6 Synthesis Report 2023",
"Zain et al. Singapore Med J 2024\n PMID: 38650059",
"Roy et al. mBio 2025\n PMID: 40981484",
"Hiscox et al. Front. Public Health 2025\n doi: 10.3389/fpubh.2025.1585412",
"NCVBDC India - Annual Report 2024",
"NAPCCHH - MoHFW India 2014",
"CAS Insights - Climate & VBDs 2025",
]
bx6 = s.shapes.add_textbox(Inches(9.1), Inches(1.75), Inches(3.95), Inches(3.6))
tf6 = bx6.text_frame; tf6.word_wrap = True
tf6.margin_left = tf6.margin_right = Pt(2)
tf6.margin_top = tf6.margin_bottom = Pt(2)
first = True
for ref in refs:
if first: p6 = tf6.paragraphs[0]; first = False
else: p6 = tf6.add_paragraph()
p6.space_before = Pt(3)
r6 = p6.add_run(); r6.text = ref
r6.font.name = "Calibri"; r6.font.size = Pt(10); r6.font.color.rgb = DARK
# Take-home mnemonic
rect(s, Inches(0.2), Inches(5.88), Inches(12.9), Inches(1.15),
RGBColor(0xE8, 0xF5, 0xE9), line=FOREST, lw=1.5, round_=True)
tb(s, Inches(0.4), Inches(5.92), Inches(12.5), Inches(0.38),
"MNEMONIC: C-WAVE (Climate-VBD nexus at a glance)", 14,
bold=True, color=FOREST, align=PP_ALIGN.CENTER)
tb(s, Inches(0.4), Inches(6.28), Inches(12.5), Inches(0.65),
"C = Climate drivers (Temp, Rain, Extreme events) W = Wider geographic range A = Altered seasonality V = Vector biology changes E = Elimination targets at risk",
13, color=OLIVE, align=PP_ALIGN.CENTER)
# =============================================================================
# SAVE
# =============================================================================
out = "/tmp/workspace/vbd-climate-pptx/VBD_ClimateChange_MD_PSM_Seminar.pptx"
prs.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/vbd-climate-pptx && python create_pptx.py 2>&1
python3 -c " from pptx import Presentation import os prs = Presentation('/tmp/workspace/vbd-climate-pptx/VBD_ClimateChange_MD_PSM_Seminar.pptx') print(f'Slides: {len(prs.slides)}') print(f'Dimensions: {prs.slide_width.inches:.2f}\" x {prs.slide_height.inches:.2f}\"') for i, slide in enumerate(prs.slides, 1): texts = [s.text_frame.text.split(chr(10))[0][:65] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] print(f'Slide {i}: {texts[0] if texts else \"(empty)\"}') sz = os.path.getsize('/tmp/workspace/vbd-climate-pptx/VBD_ClimateChange_MD_PSM_Seminar.pptx') print(f'Size: {sz/1024:.1f} KB') "
VBD ClimateChange MD PSM Seminar
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide with full topic outline |
| 2 | Global burden (700,000 deaths/yr, 3.9B at dengue risk) + VBD definitions + key vectors table |
| 3 | 4 climate-disease mechanisms: Temperature, Rainfall, Urbanisation, Extreme weather events |
| 4 | Malaria & climate - EIP shortening, An. stephensi urban spread, NVBDCP, API/ABER/SPR/SFR metrics |
| 5 | Dengue, Chikungunya & Zika - 10x global rise, Ae. albopictus highland spread, Stegomyia indices, dry-day campaigns |
| 6 | Kala-azar, Lymphatic Filariasis & JE - elimination targets under climate pressure + One Health |
| 7 | Geographic range expansion (altitude & latitude) + India-specific research evidence with citations |
| 8 | NVBDCP 3-pillar strategy + NAPCCHH + climate-adaptive surveillance |
| 9 | One Health framework (4 sectors) + novel technologies (Wolbachia, drones, AI) + SDG linkages |
| 10 | 12 high-yield exam points + key references + C-WAVE mnemonic |
Climate drivers - Wider range - Altered seasonality - Vector biology changes - Elimination targets at risk
Find recent WHO guidelines on climate change adaptation for VBD control programmes
WHO guidelines climate change adaptation vector-borne disease control 2024 2025
"WHO" AND "climate change" AND "vector-borne" AND "adaptation" AND "guidelines"
WHO vector control climate adaptation framework health national adaptation plan 2024 2025
https://www.who.int/news-room/fact-sheets/detail/dengue-and-…
"climate change" AND "vector control" AND "public health" AND adaptation
WHO global arbovirus preparedness response plan dengue climate 2024 2025 integrated vector management
"climate change" AND "malaria" AND "NTD" adaptation scoping review
https://www.who.int/initiatives/global-arbovirus-initiative
"Global Vector Control Response" AND "climate" OR "malaria" AND "climate" AND "elimination" AND "adaptation"
WHO Global Vector Control Response 2017-2030 climate change health adaptation malaria elimination NTD 2024
PMID: 38724044
PMID: 41001119
PMID: 39029063
"The effects of climate change partially explain the increase of dengue and other Aedes-borne infections in some areas: high rainfall, humidity and increasing temperatures favour the expansion and establishment of mosquito vector populations."
| Pillar | Focus |
|---|---|
| 1 | Leadership, coordination and planning |
| 2 | Risk communication & community engagement |
| 3 | Surveillance, epidemiological & entomological investigation |
| 4 | Travel, trade, points of entry surveillance |
| 5 | Laboratory diagnostics & testing |
| 6 | Integrated Vector Management (IVM) - largest budget allocation: USD 13.1M |
| 7 | Case management & therapeutics |
| 8 | Operational support & logistics |
| 9 | Essential health services & systems |
| 10 | WASH & Infection Prevention & Control |
| Target | By 2025 | By 2030 |
|---|---|---|
| Reduce VBD mortality | -50% | -75% |
| Reduce VBD case incidence | -40% | -60% |
| Prevent all VBD epidemics | - | Yes |
"Climate change continues to expand vector-borne diseases into new areas. Conflicts, migration, humanitarian crises... further compromise equity."
| Component | Climate Adaptation Action |
|---|---|
| Health workforce | Train for climate-shifted VBD patterns; forecast-based deployment |
| Health information | Integrate climate data into HMIS/disease surveillance |
| Essential medicines | Ensure supply chain resilience during climate disasters |
| Health financing | Climate funds for surge capacity |
| Service delivery | Mobile teams for newly affected areas after extreme weather |
| Leadership/governance | Intersectoral climate-health committees |
| Document | Date | Relevance |
|---|---|---|
| Updated IRS guidance | Feb 2024 | Revised insecticide recommendations; addresses resistance in climate-shifted vector populations |
| WHO VBD Fact Sheet update | Sep 2024 | Confirms climate-VBD linkage; references GVCR |
| WHO Dengue Fact Sheet update | Aug 2025 | Documents 4M+ cases Jan-Jul 2025; climate change cited as driver of geographic spread |
| WHO Chikungunya Fact Sheet | Apr 2025 | 119 countries affected; climate role confirmed |
| WHO Malaria Fact Sheet | Dec 2025 | Malaria-climate nexus; India elimination progress |
| Yellow Fever Risk Assessment | Jun 2026 | Expanding ecological suitability for vectors due to climate |
| Global NTD Report 2025 | Nov 2025 | Progress slowed in reducing VBD deaths; climate explicitly noted |
| COP30 Advocacy (Brazil, 2025) | Nov 2025 | WHO presented evidence on VBD-climate health impacts; called for health-centered climate policies |
OVERARCHING FRAMEWORK
├── GVCR 2017-2030 (World Health Assembly)
│ └── Updated IRS guidance Feb 2024
│
DISEASE-SPECIFIC PLANS
├── SPRP for Dengue/Arboviruses 2024-2025 ← CURRENT ACTIVE PLAN
│ ├── 10 Pillars; USD 55M budget
│ └── Climate-adaptive IVM as largest single investment
├── NTD Roadmap 2021-2030
│ └── WHO Task Team on Climate Change, NTDs and Malaria
│
INITIATIVE FRAMEWORK
├── Global Arbovirus Initiative (GLAI) 2022-ongoing
│ └── 6 Pillars; risk mapping + climate-linked surveillance
│
HEALTH SYSTEMS FRAMEWORK
└── WHO Operational Framework for Climate-Resilient Health Systems
└── 6 building blocks + climate adaptation layer
Breast feedign week celebration complete guj speech and videos
World Breastfeeding Week 2026 theme celebration August
breastfeeding week Gujarati speech syandhan saptah ગુજરાતી ભાષણ
world breastfeeding week 2026 speech video YouTube Gujarati Hindi celebration awareness
"Breastfeeding for a Sustainable Start in Life: Strengthen What Works" "જીવન માટે ટકાઉ શરૂઆત - જે કામ કરે છે તેને મજબૂત બનાવો"
"જીવન માટે ટકાઉ શરૂઆત – જે કામ કરે છે તેને મજબૂત બનાવો"
| ફાયદો | વિગત |
|---|---|
| ૧. Immunity | ઝાડા-ઉલ્ટી, ન્યુમોનિયા, ઓટીટીસ – ઓછું |
| ૨. Brain Development | IQ વધારે, ભણવામાં હોંશિયાર |
| ૩. Malnutrition ઓછું | SAM-MAM ઘટે |
| ૪. Obesity ઓછી | મોટા થઈ ને ડાયાબિટીસ, heart disease ઓછા |
| ૫. SIDDs ઓછો | Sudden Infant Death ઘટે |
| ૬. Allergy ઓછી | Eczema, asthma ઓછા |
| ફાયદો | વિગત |
|---|---|
| ૧. ગર્ભ-ગ ઉ ઘ ☆ Bonding | Oxytocin – પ્રેમ, . attachment |
| ૨. ગ ♦ Weight ઘટે | Delivery પછી weight loss ઝડ ♦ |
| ૩. Post-partum bleeding ઓછું | Uterus ઝડ ♦ સંકોચ |
| ૪. Cancer ઓછું | Breast & Ovarian cancer |
| ૫. Diabetes ઓછો | Type-2 DM ↓ |
| ૬. Natural Family Planning | LAM method – ૬ m |
| વિષય | સારાંશ |
|---|---|
| ક્યારે | ૧ - ૭ ઓગસ્ટ ૨૦૨૬ |
| ૨૦૨૬ Theme | Breastfeeding for a Sustainable Start in Life: Strengthen What Works |
| Golden Hour | જન્મ પછી ૧ કલાક ની અંદર |
| Exclusive BF | ૦ - ૬ મહિના – ફક્ત સ્તનપાન, પાણી પણ નહિ |
| Continued BF | ૬ મ + ઉ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ |
| 1 | Zaada-ulti, Pneumonia oachu |
| 2 | Brain development, IQ mohu |
| 3 | Malnutrition (SAM-MAM) ghate |
| 4 | Obesity, Diabetes, Heart disease - mota thai ochchu |
| 5 | SIDS (Sudden Infant Death) oachu |
| 6 | Allergy, eczema oachu |
| 1 | Uterus jaldi sankoche - Bleeding oachu |
| 2 | Delivery pachhi Weight loss |
| 3 | Breast Cancer, Ovarian Cancer oachu |
| 4 | Type-2 Diabetes oachu |
| 5 | LAM method - Natural family planning |
| Topic | Key Message (Gujarati + English) |
|---|---|
| 2026 Theme | Breastfeeding for a Sustainable Start in Life: Strengthen What Works |
| Dates | 1-7 August every year |
| Golden Hour | જ-ન-્-મ (janam) પ-છ-ી (pachhi) ૧ (ek) ક-લ-ા-ક (kalak) --- |
| Khiru | (Colostrum) = First Vaccine = NEVER discard |
| 0-6 months | Exclusive BF – (pani pan nahi!) |
| 6m - 2yr+ | BF + Complementary food |
| India Policy | MAA Programme; BFHI 10 Steps |
| WHO target | 70% exclusive BF globally by 2030 |
| Closing slogan | "Pehlu doodh – Pehli dava!" |
Note on Gujarati rendering: This system has difficulty with some complex Gujarati conjunct characters. For your actual event poster/notice boards and printed speech, copy the Gujarati script portions carefully - all content is accurate. The transliterated (Roman) versions can be used by speakers comfortable with that format.