Make a ppt for integrated disease surveillance program
Integrated Disease Surveillance Programme IDSP India components objectives structure
https://pmc.ncbi.nlm.nih.gov/articles/PMC3693947
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"
mkdir -p /home/daytona/workspace/idsp-ppt
~/idsp-ppt/create_idsp.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Integrated Disease Surveillance Programme (IDSP)";
pres.author = "Public Health Division";
// ─── COLOUR PALETTE ───────────────────────────────────────────────
const C = {
navy: "0D2B55", // dominant dark
teal: "1A7A8A", // supporting
sky: "4BB5C1", // accent light
amber: "F2A71B", // highlight accent
white: "FFFFFF",
offWhite:"F4F8FB",
dark: "0D1F35",
gray: "5A6A7A",
lightGray:"DEE9F0",
};
// ─── HELPERS ──────────────────────────────────────────────────────
function addSlide() { return pres.addSlide(); }
function sectionBg(slide) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%", fill: { color: C.navy }
});
}
function titleBar(slide, topColor) {
// header bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: 0.85, fill: { color: topColor || C.navy }
});
// bottom accent line
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0.85, w: "100%", h: 0.06, fill: { color: C.amber }
});
}
function addSlideTitle(slide, text, color) {
slide.addText(text, {
x: 0.35, y: 0.05, w: 9.3, h: 0.75,
fontSize: 22, bold: true, color: color || C.white,
fontFace: "Calibri", valign: "middle", margin: 0
});
}
function addBodyBg(slide) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0.91, w: "100%", h: 4.715,
fill: { color: C.offWhite }
});
}
function card(slide, x, y, w, h, fillColor, radius) {
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: fillColor || C.white },
line: { color: C.lightGray, width: 1 },
rectRadius: radius !== undefined ? radius : 0.08
});
}
function bullet(text, level) {
return { text, options: { bullet: { indent: 15 }, paraSpaceAfter: 4, indentLevel: level || 0, breakLine: true } };
}
function numBullet(text, num) {
return { text, options: { bullet: { type: "number" }, paraSpaceAfter: 4, breakLine: true } };
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
// deep navy bg
s.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color: C.navy} });
// teal diagonal accent block
s.addShape(pres.ShapeType.rect, { x:6.5, y:0, w:3.5, h:"100%", fill:{color: C.teal}, line:{color:C.teal} });
// amber stripe
s.addShape(pres.ShapeType.rect, { x:6.3, y:0, w:0.12, h:"100%", fill:{color: C.amber} });
s.addText("INTEGRATED DISEASE\nSURVEILLANCE\nPROGRAMME", {
x:0.4, y:1.2, w:5.8, h:2.8,
fontSize: 32, bold: true, color: C.white, fontFace:"Calibri",
align:"left", valign:"middle", charSpacing: 1
});
s.addText("IDSP", {
x:0.4, y:0.7, w:3, h:0.55,
fontSize: 14, bold: true, color: C.amber, fontFace:"Calibri", charSpacing: 6
});
s.addShape(pres.ShapeType.rect, { x:0.4, y:4.05, w:2.2, h:0.06, fill:{color:C.amber} });
s.addText("Ministry of Health & Family Welfare | Government of India", {
x:0.4, y:4.2, w:5.8, h:0.4,
fontSize: 11, color: C.sky, fontFace:"Calibri", italic: true
});
s.addText("For Healthcare Professionals", {
x:0.4, y:4.7, w:5.8, h:0.4,
fontSize: 11, color: C.lightGray, fontFace:"Calibri"
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Presentation Outline");
const topics = [
["01", "Background & Rationale"],
["02", "Objectives of IDSP"],
["03", "Programme Components"],
["04", "Organisational Structure"],
["05", "Diseases Under Surveillance"],
["06", "Reporting Formats (S / P / L)"],
["07", "Data Flow & ICT Platform (IHIP)"],
["08", "Rapid Response Teams (RRT)"],
["09", "Outbreak Surveillance & Response"],
["10", "Laboratory Strengthening"],
["11", "Human Resource Development"],
["12", "Media Scanning & Verification"],
["13", "Key Achievements"],
["14", "Challenges & Way Forward"],
["15", "Summary"],
];
const col1 = topics.slice(0, 8);
const col2 = topics.slice(8);
col1.forEach((t, i) => {
const y = 1.05 + i * 0.53;
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:0.45, h:0.38, fill:{color:C.teal}, rectRadius:0.05 });
s.addText(t[0], { x:0.3, y, w:0.45, h:0.38, fontSize:12, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(t[1], { x:0.82, y:y+0.04, w:3.9, h:0.3, fontSize:12, color:C.dark, fontFace:"Calibri" });
});
col2.forEach((t, i) => {
const y = 1.05 + i * 0.53;
s.addShape(pres.ShapeType.roundRect, { x:5.3, y, w:0.45, h:0.38, fill:{color:C.navy}, rectRadius:0.05 });
s.addText(t[0], { x:5.3, y, w:0.45, h:0.38, fontSize:12, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(t[1], { x:5.82, y:y+0.04, w:3.9, h:0.3, fontSize:12, color:C.dark, fontFace:"Calibri" });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 3 — BACKGROUND & RATIONALE
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Background & Rationale");
const points = [
"India's disease surveillance was fragmented across multiple vertical programmes with little integration or data sharing.",
"Outbreaks were often detected late due to absence of a real-time, decentralized reporting mechanism.",
"IDSP was launched in 2004 under the Ministry of Health & Family Welfare with World Bank support.",
"Initially a project (2004–2010), extended under the 11th Plan, and continued under NHM from the 12th Plan (2012–) with domestic funding.",
"Aim: establish a sustainable, IT-enabled, laboratory-based surveillance system to detect and respond to epidemic-prone diseases early.",
"NCDC (National Centre for Disease Control), New Delhi, serves as the nodal agency at the national level."
];
points.forEach((p, i) => {
const y = 1.05 + i * 0.68;
s.addShape(pres.ShapeType.rect, { x:0.3, y:y+0.08, w:0.08, h:0.42, fill:{color:C.amber} });
s.addText(p, { x:0.5, y, w:9.15, h:0.6, fontSize:12.5, color:C.dark, fontFace:"Calibri", valign:"middle" });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 4 — OBJECTIVES
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Objectives of IDSP");
const objs = [
{ icon:"🎯", title:"Core Objective", body:"Strengthen/maintain a decentralized, laboratory-based, IT-enabled disease surveillance system for epidemic-prone diseases to monitor trends and detect outbreaks in early rising phase." },
{ icon:"📊", title:"Improve Information Availability", body:"Provide timely, accurate data on high-priority communicable and non-communicable diseases to health administrators and stakeholders." },
{ icon:"🏥", title:"Strengthen Existing Systems", body:"Improve efficiency of surveillance activities within disease control programmes and facilitate information sharing." },
{ icon:"⚡", title:"Enable Rapid Response", body:"Enable early detection, investigation, and control of outbreaks through trained Rapid Response Teams (RRTs) deployed at state and district levels." },
];
objs.forEach((o, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.05 + row * 2.05;
card(s, x, y, 4.6, 1.85, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.15, y:y+0.15, w:0.55, h:0.55, fill:{color:C.teal}, rectRadius:0.08 });
s.addText(o.icon, { x:x+0.15, y:y+0.15, w:0.55, h:0.55, fontSize:18, align:"center", valign:"middle", margin:0 });
s.addText(o.title, { x:x+0.8, y:y+0.18, w:3.65, h:0.45, fontSize:13, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
s.addText(o.body, { x:x+0.15, y:y+0.72, w:4.3, h:1.0, fontSize:11, color:C.dark, fontFace:"Calibri", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 5 — PROGRAMME COMPONENTS
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Programme Components");
const comps = [
{ num:"1", title:"Integration & Decentralisation", desc:"Surveillance units at Centre (CSU), State (SSU) and District (DSU) levels integrated under a single umbrella." },
{ num:"2", title:"Human Resource Development", desc:"Training of DSOs, SSOs, RRTs, Epidemiologists, Microbiologists & paramedical staff on epidemiology and data management." },
{ num:"3", title:"ICT-Enabled Data Management", desc:"Electronic collection, collation, analysis and dissemination via the Integrated Health Information Platform (IHIP) portal." },
{ num:"4", title:"Laboratory Strengthening", desc:"District Public Health Labs equipped with trained manpower, reagents & consumables for diagnosis of epidemic-prone diseases." },
{ num:"5", title:"Inter-sectoral Coordination", desc:"Collaboration with animal husbandry, agriculture, and environment sectors for zoonotic disease surveillance." },
];
comps.forEach((c, i) => {
const y = 1.05 + i * 0.88;
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:0.55, h:0.7, fill:{color:C.navy}, rectRadius:0.08 });
s.addText(c.num, { x:0.3, y, w:0.55, h:0.7, fontSize:20, bold:true, color:C.amber, align:"center", valign:"middle", margin:0 });
card(s, 0.95, y, 8.7, 0.7, C.white);
s.addText(c.title, { x:1.1, y:y+0.04, w:3.5, h:0.32, fontSize:13, bold:true, color:C.teal, fontFace:"Calibri", margin:0 });
s.addText(c.desc, { x:1.1, y:y+0.36, w:8.4, h:0.3, fontSize:11, color:C.dark, fontFace:"Calibri", margin:0 });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 6 — ORGANISATIONAL STRUCTURE
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Organisational Structure");
// Three tier boxes
const tiers = [
{ label:"CENTRAL SURVEILLANCE UNIT (CSU)", sub:"National Centre for Disease Control (NCDC), New Delhi\nHeaded by: Joint Secretary / Deputy Director General", color:C.navy, y:1.1 },
{ label:"STATE SURVEILLANCE UNITS (SSU)", sub:"35 SSUs — one per State/UT Headquarters\nHeaded by: State Surveillance Officer + Epidemiologists + Microbiologists", color:C.teal, y:2.55 },
{ label:"DISTRICT SURVEILLANCE UNITS (DSU)", sub:"604+ DSUs — one per district across India\nHeaded by: District Surveillance Officer + Data Entry Operators + Rapid Response Teams", color:C.sky, y:4.0 },
];
tiers.forEach((t, i) => {
s.addShape(pres.ShapeType.roundRect, { x:1.5, y:t.y, w:7, h:1.3, fill:{color:t.color}, rectRadius:0.1 });
s.addText(t.label, { x:1.7, y:t.y+0.1, w:6.6, h:0.42, fontSize:14, bold:true, color:C.white, fontFace:"Calibri", align:"center", margin:0 });
s.addText(t.sub, { x:1.7, y:t.y+0.55, w:6.6, h:0.65, fontSize:11, color:"E8F4F8", fontFace:"Calibri", align:"center", wrap:true });
// Arrow down (except last)
if (i < 2) {
s.addShape(pres.ShapeType.downArrow, { x:4.6, y:t.y+1.3, w:0.8, h:0.35, fill:{color:C.amber} });
}
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 7 — DISEASES UNDER SURVEILLANCE
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Diseases Under Surveillance");
const cats = [
{
title:"Regular Surveillance (Weekly Reporting)",
color: C.navy,
diseases:["Acute Diarrhoeal Disease","Typhoid","Malaria","Dengue / Chikungunya","Acute Respiratory Illness","Pneumonia","Measles","Meningitis","Leptospirosis","Plague","Acute Flaccid Paralysis (AFP)"]
},
{
title:"Sentinel Surveillance",
color: C.teal,
diseases:["HIV / AIDS","Rotavirus Diarrhoea","Influenza (seasonal & pandemic H1N1, H5N1)"]
},
{
title:"Regular Periodic Surveys",
color: C.sky,
diseases:["Non-communicable disease risk factors","Nutritional deficiencies"]
}
];
let y = 1.05;
cats.forEach(cat => {
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:9.4, h:0.42, fill:{color:cat.color}, rectRadius:0.07 });
s.addText(cat.title, { x:0.4, y:y+0.04, w:9.2, h:0.34, fontSize:13, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
y += 0.44;
const cols = cat.diseases.length > 4 ? 2 : 1;
const half = Math.ceil(cat.diseases.length / cols);
for (let c=0; c<cols; c++) {
const items = cat.diseases.slice(c*half, (c+1)*half);
const xoff = c === 0 ? 0.45 : 5.1;
items.forEach((d, j) => {
s.addShape(pres.ShapeType.ellipse, { x:xoff, y:y + j*0.36 + 0.08, w:0.12, h:0.12, fill:{color:cat.color} });
s.addText(d, { x:xoff+0.18, y:y + j*0.36, w:4.4, h:0.34, fontSize:11, color:C.dark, fontFace:"Calibri", margin:0 });
});
}
const rows = Math.ceil(cat.diseases.length / (cols === 2 ? 2 : 1));
y += rows * 0.36 + 0.12;
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 8 — REPORTING FORMATS S / P / L
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Reporting Formats: S / P / L");
const fmts = [
{
letter:"S", title:"Syndromic", sub:"Filled by: Health Workers / ANMs / AWWs",
points:["Based on clinical symptoms & signs (syndrome clusters)", "Weekly reporting from sub-centres and health posts", "First-level alert for unusual clustering of symptoms", "Examples: Fever with rash, Acute watery diarrhoea, Jaundice"],
color: C.navy
},
{
letter:"P", title:"Presumptive", sub:"Filled by: Clinicians / Medical Officers",
points:["Clinical diagnosis based on history & examination", "Reported weekly from PHCs, CHCs, hospitals", "More specific than syndromic — gives presumed diagnosis", "Examples: Suspected typhoid, Suspected malaria"],
color: C.teal
},
{
letter:"L", title:"Laboratory Confirmed", sub:"Filled by: Microbiologists / Lab Technicians",
points:["Confirmation by laboratory investigation", "Reported from district labs and medical college labs", "Gold standard for case confirmation and outbreak proof", "Examples: Culture-confirmed typhoid, Slide-positive malaria"],
color: C.sky
},
];
fmts.forEach((f, i) => {
const x = 0.22 + i * 3.22;
card(s, x, 1.0, 3.0, 4.45, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.12, y:1.1, w:0.65, h:0.65, fill:{color:f.color}, rectRadius:0.1 });
s.addText(f.letter, { x:x+0.12, y:1.1, w:0.65, h:0.65, fontSize:26, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(f.title, { x:x+0.85, y:1.15, w:2.0, h:0.35, fontSize:15, bold:true, color:f.color, fontFace:"Calibri", margin:0 });
s.addText(f.sub, { x:x+0.12, y:1.78, w:2.75, h:0.35, fontSize:9.5, color:C.gray, fontFace:"Calibri", italic:true, margin:0 });
s.addShape(pres.ShapeType.rect, { x:x+0.12, y:2.18, w:2.75, h:0.03, fill:{color:C.lightGray} });
f.points.forEach((p, j) => {
s.addShape(pres.ShapeType.ellipse, { x:x+0.18, y:2.3 + j*0.72 + 0.1, w:0.11, h:0.11, fill:{color:f.color} });
s.addText(p, { x:x+0.35, y:2.3 + j*0.72, w:2.55, h:0.65, fontSize:10.5, color:C.dark, fontFace:"Calibri", wrap:true });
});
});
s.addText("Data is collected weekly from all reporting units (public & private) and entered into the IHIP portal at district level.", {
x:0.3, y:5.25, w:9.4, h:0.3, fontSize:10.5, color:C.gray, italic:true, fontFace:"Calibri", align:"center"
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 9 — DATA FLOW & ICT / IHIP
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Data Flow & ICT Platform (IHIP Portal)");
// Flow boxes
const flow = [
{ label:"Reporting Units\n(PHC / CHC / Hospitals\nPrivate Practitioners)", color:C.sky },
{ label:"District Surveillance\nUnit (DSU)\nData Entry & Analysis", color:C.teal },
{ label:"State Surveillance\nUnit (SSU)\nValidation & Review", color:C.navy },
{ label:"Central Surveillance\nUnit (CSU / NCDC)\nNational Monitoring", color:C.dark },
];
flow.forEach((f, i) => {
const x = 0.3 + i * 2.4;
s.addShape(pres.ShapeType.roundRect, { x, y:1.3, w:2.05, h:1.35, fill:{color:f.color}, rectRadius:0.1 });
s.addText(f.label, { x:x+0.05, y:1.3, w:1.95, h:1.35, fontSize:11, bold:false, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", wrap:true });
if (i < 3) {
s.addShape(pres.ShapeType.rightArrow, { x:x+2.07, y:1.75, w:0.3, h:0.45, fill:{color:C.amber} });
}
});
s.addText("S/P/L forms → DSU (paper) → IHIP Portal (electronic) → SSU → CSU ▶ Real-time dashboards & alerts", {
x:0.3, y:2.85, w:9.4, h:0.35, fontSize:11, color:C.dark, align:"center", italic:true, fontFace:"Calibri"
});
// IHIP key features
s.addText("Key Features of the IHIP Portal", { x:0.3, y:3.3, w:9.4, h:0.38, fontSize:14, bold:true, color:C.navy, fontFace:"Calibri" });
const feats = [
["Real-time web-based data entry", "Automated alerts on threshold breaches"],
["Disease trend line graphs & maps", "Mobile app-based reporting (mSurveillance)"],
["Integration with lab data", "Export reports for policy decision-making"],
];
feats.forEach((row, i) => {
row.forEach((f, j) => {
const x = j === 0 ? 0.3 : 5.1;
const y = 3.78 + i * 0.56;
s.addShape(pres.ShapeType.rect, { x:x, y:y+0.1, w:0.08, h:0.28, fill:{color:C.amber} });
s.addText(f, { x:x+0.16, y, w:4.6, h:0.46, fontSize:12, color:C.dark, fontFace:"Calibri", valign:"middle" });
});
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 10 — RAPID RESPONSE TEAMS
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Rapid Response Teams (RRT)");
// Definition box
s.addShape(pres.ShapeType.roundRect, { x:0.3, y:1.05, w:9.4, h:0.75, fill:{color:C.teal}, rectRadius:0.08 });
s.addText("RRTs are trained multidisciplinary teams deployed immediately when a rising trend of illness is detected in any area to investigate and control potential outbreaks.", {
x:0.45, y:1.1, w:9.1, h:0.65, fontSize:12.5, color:C.white, fontFace:"Calibri", valign:"middle", wrap:true
});
const cols = [
{
title:"Composition", color: C.navy,
items:["Epidemiologist / Public Health Specialist","Clinician / Medical Officer","Microbiologist / Lab Technician","Entomologist (if vector-borne)","District Surveillance Officer"]
},
{
title:"Roles & Responsibilities", color: C.teal,
items:["Conduct rapid field investigation of suspected outbreak","Collect & transport clinical specimens to labs","Implement immediate control measures","Communicate findings to SSU/CSU in real-time","Coordinate with local authorities & media cell"]
},
{
title:"Trigger & Deployment", color: C.sky,
items:["Triggered when S/P/L data shows rising trends","Threshold: 1–5 times expected cases","Activated by DSU or SSU within 24 hours","Supported by state budget & logistics","Debrief report submitted post-investigation"]
}
];
cols.forEach((c, i) => {
const x = 0.3 + i * 3.22;
card(s, x, 2.0, 3.0, 3.35, C.white);
s.addShape(pres.ShapeType.roundRect, { x, y:2.0, w:3.0, h:0.44, fill:{color:c.color}, rectRadius:0.07 });
s.addText(c.title, { x:x+0.05, y:2.0, w:2.9, h:0.44, fontSize:12.5, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
c.items.forEach((item, j) => {
s.addShape(pres.ShapeType.ellipse, { x:x+0.15, y:2.58 + j*0.55 + 0.12, w:0.1, h:0.1, fill:{color:c.color} });
s.addText(item, { x:x+0.32, y:2.58 + j*0.55, w:2.6, h:0.5, fontSize:10.5, color:C.dark, fontFace:"Calibri", wrap:true });
});
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 11 — OUTBREAK SURVEILLANCE & RESPONSE
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Outbreak Surveillance & Response");
const steps = [
{ n:"1", title:"Detection", desc:"Rising trend of illnesses detected via weekly S/P/L reporting on IHIP portal; automated threshold alerts generated." },
{ n:"2", title:"Notification", desc:"DSU notifies SSU within 24 hours; SSU reports to CSU (NCDC) daily. Media scanning cell also alerts on unusual events." },
{ n:"3", title:"Verification", desc:"Field verification by DSU / SSU to confirm the outbreak: case counts, case definitions, geographic spread." },
{ n:"4", title:"Investigation", desc:"RRT deployed to collect specimens, trace source, describe epidemic curve, and map cases by time, place, person." },
{ n:"5", title:"Response & Control", desc:"Immediate control measures: case treatment, vector control, water chlorination, mass chemoprophylaxis as needed." },
{ n:"6", title:"Communication", desc:"Situation reports to health authorities; public advisories; coordination with state/national media cell to prevent panic." },
];
steps.forEach((st, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.05 + row * 1.42;
card(s, x, y, 4.6, 1.28, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.12, y:y+0.12, w:0.5, h:0.5, fill:{color:C.amber}, rectRadius:0.08 });
s.addText(st.n, { x:x+0.12, y:y+0.12, w:0.5, h:0.5, fontSize:18, bold:true, color:C.navy, align:"center", valign:"middle", margin:0 });
s.addText(st.title, { x:x+0.72, y:y+0.12, w:3.7, h:0.38, fontSize:13, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
s.addText(st.desc, { x:x+0.72, y:y+0.54, w:3.75, h:0.65, fontSize:10.5, color:C.dark, fontFace:"Calibri", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 12 — LABORATORY STRENGTHENING
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Laboratory Strengthening");
// Header statement
s.addText("IDSP has strengthened public health laboratories at the district level to enable rapid, on-site diagnosis of epidemic-prone diseases — a cornerstone of the 'L' (laboratory confirmation) reporting format.", {
x:0.3, y:1.05, w:9.4, h:0.7, fontSize:12, color:C.dark, fontFace:"Calibri", wrap:true, italic:true
});
const items = [
{ icon:"🔬", title:"Designated District Public Health Labs", desc:"Selected district hospitals upgraded to District Public Health Laboratories with basic and advanced diagnostic equipment." },
{ icon:"👩🔬", title:"Trained Manpower", desc:"Microbiologists and lab technicians trained in culture techniques, serology, PCR for priority pathogens (Salmonella, Vibrio, Plasmodium, etc.)." },
{ icon:"🧪", title:"Reagents & Consumables", desc:"Annual grant provided for procurement of reagents and consumables; supply chain integrated with state health systems." },
{ icon:"🔗", title:"NCDC Network Linkage", desc:"District labs linked to NCDC reference labs and state-level apex labs for confirmatory testing and quality assurance." },
{ icon:"📦", title:"Specimen Transport", desc:"Standardized protocols for safe specimen collection, packaging (P650 guidelines) and transport to referral labs." },
{ icon:"📋", title:"Quality Assurance", desc:"External Quality Assessment Schemes (EQAS) implemented; periodic proficiency testing by NCDC and regional reference labs." },
];
items.forEach((item, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.9 + row * 1.18;
card(s, x, y, 4.6, 1.05, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.1, y:y+0.12, w:0.55, h:0.55, fill:{color:C.teal}, rectRadius:0.08 });
s.addText(item.icon, { x:x+0.1, y:y+0.12, w:0.55, h:0.55, fontSize:18, align:"center", valign:"middle", margin:0 });
s.addText(item.title, { x:x+0.72, y:y+0.1, w:3.7, h:0.35, fontSize:12, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
s.addText(item.desc, { x:x+0.72, y:y+0.48, w:3.75, h:0.48, fontSize:10, color:C.dark, fontFace:"Calibri", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 13 — HUMAN RESOURCE DEVELOPMENT
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Human Resource Development & Training");
const levels = [
{ level:"National Level", who:"State Epidemiologists, SSOs, Microbiologists", focus:"Advanced epidemiology, outbreak investigation, data analysis, IHR-2005 reporting obligations", color:C.navy },
{ level:"State Level", who:"District Surveillance Officers (DSOs), District Epidemiologists, Lab Supervisors", focus:"Disease surveillance principles, epidemiology concepts, data management, RRT coordination, portal usage", color:C.teal },
{ level:"District Level", who:"Medical Officers, Health Workers, ANMs, Lab Technicians, Data Entry Operators", focus:"Correct procedures for data collection, compilation, reporting, S/P/L form filling, specimen collection", color:C.sky },
];
levels.forEach((l, i) => {
const y = 1.1 + i * 1.45;
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:2.1, h:1.25, fill:{color:l.color}, rectRadius:0.08 });
s.addText(l.level, { x:0.3, y:y+0.1, w:2.1, h:0.5, fontSize:13, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle" });
card(s, 2.5, y, 7.15, 1.25, C.white);
s.addText("WHO is trained:", { x:2.65, y:y+0.1, w:2.0, h:0.28, fontSize:11, bold:true, color:l.color, fontFace:"Calibri", margin:0 });
s.addText(l.who, { x:2.65, y:y+0.38, w:6.85, h:0.32, fontSize:10.5, color:C.dark, fontFace:"Calibri", margin:0 });
s.addText("Focus areas:", { x:2.65, y:y+0.7, w:2.0, h:0.28, fontSize:11, bold:true, color:l.color, fontFace:"Calibri", margin:0 });
s.addText(l.focus, { x:2.65, y:y+0.95, w:6.85, h:0.28, fontSize:10.5, color:C.dark, fontFace:"Calibri", margin:0 });
});
s.addText("Annual training schedules maintained at each level; online modules available via IHIP Learning Portal.", {
x:0.3, y:5.35, w:9.4, h:0.28, fontSize:10, italic:true, color:C.gray, fontFace:"Calibri", align:"center"
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 14 — MEDIA SCANNING & VERIFICATION
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Media Scanning & Verification Cell");
s.addShape(pres.ShapeType.roundRect, { x:0.3, y:1.05, w:9.4, h:0.72, fill:{color:C.teal}, rectRadius:0.08 });
s.addText("The Media Scanning and Verification Cell (MSVC) operates at State HQ and the CSU (NCDC) to detect early warning signals of unusual health events from print, electronic and social media.", {
x:0.45, y:1.1, w:9.1, h:0.62, fontSize:12, color:C.white, fontFace:"Calibri", valign:"middle", wrap:true
});
const points = [
{ icon:"📰", head:"Scanning Sources", body:"Daily scanning of national/state newspapers, TV news, social media platforms (Twitter, Facebook), RSS feeds from health portals." },
{ icon:"✅", head:"Verification Process", body:"Alerts verified with local health authorities (CMO/DSO) within 24 hours to confirm or rule out genuine health events." },
{ icon:"📡", head:"Reporting Chain", body:"Verified alerts escalated to SSU → CSU; integrated with IDSP outbreak database; Weekly Outbreak Reports published by NCDC." },
{ icon:"🌐", head:"International Surveillance", body:"CSU monitors WHO GOARN, ProMED, GPHIN for international disease events with potential to affect India (IHR-2005 compliance)." },
{ icon:"📊", head:"Output", body:"Weekly/monthly outbreak summary reports published by NCDC; used for policy briefings and public health advisories." },
{ icon:"🤝", head:"Coordination", body:"Works in tandem with RRT system; media cell findings can directly trigger field investigations by state/district RRTs." },
];
points.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.92 + row * 1.15;
card(s, x, y, 4.6, 1.02, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.1, y:y+0.12, w:0.5, h:0.5, fill:{color:C.navy}, rectRadius:0.07 });
s.addText(p.icon, { x:x+0.1, y:y+0.12, w:0.5, h:0.5, fontSize:16, align:"center", valign:"middle", margin:0 });
s.addText(p.head, { x:x+0.68, y:y+0.1, w:3.8, h:0.3, fontSize:12, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
s.addText(p.body, { x:x+0.68, y:y+0.44, w:3.8, h:0.5, fontSize:10.5, color:C.dark, fontFace:"Calibri", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 15 — KEY ACHIEVEMENTS
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Key Achievements of IDSP");
const achievements = [
{ stat:"604+", desc:"District Surveillance Units\noperational across India" },
{ stat:"35", desc:"State / UT Surveillance\nUnits fully functional" },
{ stat:"S·P·L", desc:"Three-format weekly reporting\nfrom public & private sectors" },
{ stat:"IHIP", desc:"Integrated Health Information\nPlatform — live portal" },
{ stat:"RRT", desc:"Rapid Response Teams\nat every district" },
{ stat:"MSVC", desc:"Media Scanning &\nVerification Cell active" },
];
achievements.forEach((a, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.3 + col * 3.22;
const y = 1.1 + row * 2.12;
card(s, x, y, 3.0, 1.9, C.white);
s.addShape(pres.ShapeType.roundRect, { x:x+0.05, y:y+0.05, w:2.9, h:0.9, fill:{color: row===0 ? C.navy : C.teal}, rectRadius:0.08 });
s.addText(a.stat, { x:x+0.05, y:y+0.05, w:2.9, h:0.9, fontSize:28, bold:true, color:C.amber, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
s.addText(a.desc, { x:x+0.1, y:y+1.0, w:2.8, h:0.8, fontSize:11.5, color:C.dark, fontFace:"Calibri", align:"center", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 16 — CHALLENGES & WAY FORWARD
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
titleBar(s);
addBodyBg(s);
addSlideTitle(s, "Challenges & Way Forward");
// Left: Challenges
card(s, 0.3, 1.05, 4.5, 4.4, C.white);
s.addShape(pres.ShapeType.roundRect, { x:0.3, y:1.05, w:4.5, h:0.5, fill:{color:C.navy}, rectRadius:0.07 });
s.addText("⚠ Current Challenges", { x:0.35, y:1.05, w:4.4, h:0.5, fontSize:13, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const challenges = [
"Incomplete & delayed reporting, especially from private sector",
"High attrition of trained DSOs and data entry staff",
"Data quality issues — inconsistent case definitions applied",
"Laboratory capacity gaps at district level (supplies, equipment)",
"Limited analysis and feedback to frontline workers",
"Outbreak trigger thresholds revised but not uniformly applied",
"Low private sector participation in S/P/L reporting",
];
challenges.forEach((c, i) => {
s.addShape(pres.ShapeType.ellipse, { x:0.5, y:1.72 + i*0.5 + 0.12, w:0.1, h:0.1, fill:{color:C.navy} });
s.addText(c, { x:0.67, y:1.72 + i*0.5, w:4.0, h:0.46, fontSize:11, color:C.dark, fontFace:"Calibri", wrap:true });
});
// Right: Way Forward
card(s, 5.2, 1.05, 4.5, 4.4, C.white);
s.addShape(pres.ShapeType.roundRect, { x:5.2, y:1.05, w:4.5, h:0.5, fill:{color:C.teal}, rectRadius:0.07 });
s.addText("✔ Way Forward", { x:5.25, y:1.05, w:4.4, h:0.5, fontSize:13, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const forward = [
"Mandatory private sector reporting integrated via IHIP API",
"One Health approach for zoonotic disease surveillance",
"Strengthening sentinel surveillance for antimicrobial resistance",
"Geospatial mapping and predictive analytics on IHIP",
"Regular supportive supervision and feedback loops to districts",
"Increased budget allocation under NHM for lab infrastructure",
"Integration with COVID-19 / mpox surveillance learnings",
];
forward.forEach((f, i) => {
s.addShape(pres.ShapeType.ellipse, { x:5.4, y:1.72 + i*0.5 + 0.12, w:0.1, h:0.1, fill:{color:C.teal} });
s.addText(f, { x:5.57, y:1.72 + i*0.5, w:4.0, h:0.46, fontSize:11, color:C.dark, fontFace:"Calibri", wrap:true });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 17 — SUMMARY / KEY TAKEAWAYS
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
// Dark background
s.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.navy} });
s.addShape(pres.ShapeType.rect, { x:0, y:0.82, w:"100%", h:0.06, fill:{color:C.amber} });
s.addText("Summary & Key Takeaways", {
x:0.35, y:0.05, w:9.3, h:0.75, fontSize:22, bold:true, color:C.white, fontFace:"Calibri", valign:"middle", margin:0
});
const takeaways = [
{ n:"1", text:"IDSP is India's flagship integrated disease surveillance programme — decentralized, IT-enabled, and laboratory-based." },
{ n:"2", text:"Three-tier structure (CSU → SSU → DSU) ensures data flows from 604+ districts to the national centre (NCDC) in real time." },
{ n:"3", text:"S/P/L weekly reporting forms the backbone of surveillance, enabling early detection of epidemic-prone diseases." },
{ n:"4", text:"IHIP portal digitizes the entire data pipeline — from entry at district level to national dashboards and automated outbreak alerts." },
{ n:"5", text:"RRTs provide the rapid field response capability essential for investigating and controlling outbreaks within 24–48 hours." },
{ n:"6", text:"Laboratory strengthening and HRD are key enablers; continuous investment is needed to sustain surveillance quality." },
{ n:"7", text:"The programme's future lies in One Health integration, predictive analytics, and stronger private sector engagement." },
];
takeaways.forEach((t, i) => {
const y = 1.05 + i * 0.64;
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:0.52, h:0.48, fill:{color:C.amber}, rectRadius:0.08 });
s.addText(t.n, { x:0.3, y, w:0.52, h:0.48, fontSize:16, bold:true, color:C.navy, align:"center", valign:"middle", margin:0 });
s.addText(t.text, { x:0.92, y:y+0.03, w:8.7, h:0.44, fontSize:12, color:C.white, fontFace:"Calibri", valign:"middle" });
});
}
// ══════════════════════════════════════════════════════════════════
// SLIDE 18 — THANK YOU / REFERENCES
// ══════════════════════════════════════════════════════════════════
{
const s = addSlide();
s.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.navy} });
s.addShape(pres.ShapeType.rect, { x:6.8, y:0, w:3.2, h:"100%", fill:{color:C.teal}, line:{color:C.teal} });
s.addShape(pres.ShapeType.rect, { x:6.6, y:0, w:0.12, h:"100%", fill:{color:C.amber} });
s.addText("Thank You", {
x:0.5, y:1.5, w:5.8, h:1.2, fontSize:42, bold:true, color:C.white, fontFace:"Calibri"
});
s.addShape(pres.ShapeType.rect, { x:0.5, y:2.75, w:2.5, h:0.06, fill:{color:C.amber} });
s.addText("References", {
x:0.5, y:3.0, w:5.8, h:0.38, fontSize:14, bold:true, color:C.amber, fontFace:"Calibri"
});
const refs = [
"Ministry of Health & Family Welfare, Govt. of India — IDSP Programme Documents",
"NCDC (National Centre for Disease Control), New Delhi — idsp.mohfw.gov.in",
"Murhekar MV et al. (2013). Assessment of IDSP in Maharashtra. BMC Public Health",
"IHIP Learning Portal — ihiplearning.in",
"Blanchard J et al. (2021). Vision 2035: Public Health Surveillance in India",
];
refs.forEach((r, i) => {
s.addShape(pres.ShapeType.ellipse, { x:0.5, y:3.5 + i*0.42 + 0.12, w:0.1, h:0.1, fill:{color:C.sky} });
s.addText(r, { x:0.68, y:3.5 + i*0.42, w:5.6, h:0.38, fontSize:10, color:"BDD8E8", fontFace:"Calibri" });
});
}
// ─── WRITE FILE ────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx" })
.then(() => console.log("SUCCESS: IDSP_Presentation.pptx created"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/idsp-ppt && node create_idsp.js 2>&1
ls -lh /home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx
IDSP Presentation
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Table of Contents |
| 3 | Background & Rationale |
| 4 | Objectives of IDSP |
| 5 | Programme Components (5 pillars) |
| 6 | Organisational Structure (CSU → SSU → DSU) |
| 7 | Diseases Under Surveillance (13 mandatory + sentinel) |
| 8 | Reporting Formats: S / P / L |
| 9 | Data Flow & IHIP Portal |
| 10 | Rapid Response Teams (RRT) |
| 11 | Outbreak Surveillance & Response (6-step cycle) |
| 12 | Laboratory Strengthening |
| 13 | Human Resource Development & Training |
| 14 | Media Scanning & Verification Cell |
| 15 | Key Achievements (stat cards) |
| 16 | Challenges & Way Forward (split layout) |
| 17 | Summary & 7 Key Takeaways |
| 18 | Thank You & References |
Make the ppt
ls -lh /home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx 2>&1
IDSP Presentation
Presentation · PPTX
It doesn't get downloaded
ls -lh /home/daytona/workspace/idsp-ppt/ && file /home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx
cd /home/daytona/workspace/idsp-ppt && node create_idsp.js 2>&1
ls -lh /home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx && python3 -c " import zipfile with zipfile.ZipFile('/home/daytona/workspace/idsp-ppt/IDSP_Presentation.pptx') as z: names = z.namelist() print(f'Valid PPTX with {len(names)} internal files') slides = [n for n in names if 'slides/slide' in n and 'slideLayout' not in n and 'slideMaster' not in n and n.endswith('.xml')] print(f'Slide count: {len(slides)}') "
IDSP Presentation
Presentation · PPTX
.pptx (ZIP format) with all 18 slides built correctly.What if I email you the file instead?