kindly make a ppt of above
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty"
~/pandemic-info-mgmt/create_ppt.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
pres.author = 'GEN MED / PUL MED / ANAES';
pres.title = 'PANDEMIC Module 4.4 – Information Management during Pandemics';
// ─── COLOR PALETTE ───────────────────────────────────────────────
const DARK_BG = "0D1F3C"; // deep navy (title / section slides)
const MID_BG = "14305A"; // mid navy (accent shapes)
const ACCENT = "E84545"; // vivid red (highlight bar, icons)
const LIGHT_BG = "F0F4FA"; // near-white (content slides)
const WHITE = "FFFFFF";
const BODY_TEXT = "1A2A4A"; // dark navy (body on light slides)
const MUTED = "5B7BA6"; // muted blue (sub-text)
const GOLD = "F5A623"; // warm gold (sub-heading accent)
// ─── HELPER FUNCTIONS ────────────────────────────────────────────
function accentBar(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.275, w: 10, h: 0.35, fill: { color: ACCENT }, line: { type: "none" } });
}
function darkSlideBase(slide) {
slide.background = { color: DARK_BG };
}
function lightSlideBase(slide) {
slide.background = { color: LIGHT_BG };
}
function sideBar(slide, color = ACCENT) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color }, line: { type: "none" } });
}
function slideTitle(slide, title, yPos = 0.28) {
slide.addText(title, {
x: 0.42, y: yPos, w: 9.4, h: 0.52,
fontSize: 22, bold: true, color: BODY_TEXT,
fontFace: "Calibri", margin: 0
});
// underline bar
slide.addShape(pres.ShapeType.rect, {
x: 0.42, y: yPos + 0.55, w: 1.2, h: 0.055,
fill: { color: ACCENT }, line: { type: "none" }
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE SLIDE
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
darkSlideBase(s);
// Background geometric shapes
s.addShape(pres.ShapeType.rect, { x: 7.2, y: 0, w: 2.8, h: 5.625, fill: { color: MID_BG }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.5, w: 7.2, h: 1.125, fill: { color: ACCENT }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.5, w: 7.2, h: 0.06, fill: { color: GOLD }, line: { type: "none" } });
// Module tag
s.addShape(pres.ShapeType.roundRect, {
x: 0.5, y: 0.55, w: 2.6, h: 0.42,
fill: { color: ACCENT }, line: { type: "none" }, rectRadius: 0.08
});
s.addText("MODULE 4.4", {
x: 0.5, y: 0.55, w: 2.6, h: 0.42,
fontSize: 12, bold: true, color: WHITE,
fontFace: "Calibri", align: "center", valign: "middle", margin: 0
});
// Main title
s.addText("PANDEMIC", {
x: 0.5, y: 1.1, w: 6.5, h: 0.85,
fontSize: 54, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
s.addText("Information Management", {
x: 0.5, y: 1.88, w: 6.5, h: 0.62,
fontSize: 30, bold: false, color: GOLD, fontFace: "Calibri", margin: 0
});
s.addText("during Pandemics", {
x: 0.5, y: 2.44, w: 6.5, h: 0.55,
fontSize: 30, bold: false, color: GOLD, fontFace: "Calibri", margin: 0
});
// Bottom bar text
s.addText([
{ text: "Interactive Discussion • ", options: { bold: false } },
{ text: "2 Hours", options: { bold: true } }
], {
x: 0.5, y: 4.55, w: 6.0, h: 0.38,
fontSize: 14, color: WHITE, fontFace: "Calibri", margin: 0
});
// Department tag bottom right
s.addText("GEN MED / PUL MED / ANAES", {
x: 7.2, y: 4.9, w: 2.8, h: 0.42,
fontSize: 9, color: MUTED, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
// Right panel decorative text
s.addText("5", {
x: 7.3, y: 0.3, w: 2.6, h: 1.2,
fontSize: 100, bold: true, color: "1B3361", fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
s.addText("TOPIC", {
x: 7.3, y: 1.4, w: 2.6, h: 0.4,
fontSize: 13, color: MUTED, fontFace: "Calibri",
align: "center", charSpacing: 6, margin: 0
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 2 – MODULE OVERVIEW
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, ACCENT);
accentBar(s);
slideTitle(s, "Module Overview");
const cards = [
{ icon: "🎯", label: "Objective", text: "Equip healthcare professionals with skills to manage information effectively during pandemics" },
{ icon: "⏱️", label: "Duration", text: "2 Hours – Interactive Discussion format" },
{ icon: "🏥", label: "Departments", text: "General Medicine • Pulmonology • Anaesthesiology" },
{ icon: "📋", label: "Format", text: "Case discussions, group exercises, and Q&A sessions" },
];
cards.forEach((c, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.42 + col * 4.82;
const y = 1.05 + row * 2.1;
// Card background
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 4.55, h: 1.85,
fill: { color: WHITE }, line: { color: "D0DCF0", pt: 1 }, rectRadius: 0.12
});
// Top accent
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.55, h: 0.07,
fill: { color: ACCENT }, line: { type: "none" }
});
// Icon
s.addText(c.icon, { x: x + 0.18, y: y + 0.12, w: 0.55, h: 0.55, fontSize: 22, margin: 0 });
// Label
s.addText(c.label, {
x: x + 0.78, y: y + 0.12, w: 3.6, h: 0.38,
fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
// Body
s.addText(c.text, {
x: x + 0.2, y: y + 0.58, w: 4.2, h: 1.1,
fontSize: 11.5, color: BODY_TEXT, fontFace: "Calibri",
wrap: true, valign: "top", margin: 0
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 3 – SECTION DIVIDER: TOPIC A
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
darkSlideBase(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.35, w: 10, h: 0.9, fill: { color: ACCENT }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.35, w: 10, h: 0.07, fill: { color: GOLD }, line: { type: "none" } });
s.addText("TOPIC A", {
x: 0.6, y: 0.6, w: 4, h: 0.55,
fontSize: 14, bold: true, color: MUTED, fontFace: "Calibri",
charSpacing: 8, margin: 0
});
s.addText("Responding to Media", {
x: 0.6, y: 2.38, w: 8.8, h: 0.82,
fontSize: 38, bold: true, color: WHITE, fontFace: "Calibri",
valign: "middle", margin: 0
});
s.addText("How health professionals communicate with and through the media during a pandemic", {
x: 0.6, y: 3.4, w: 8.8, h: 0.8,
fontSize: 15, color: GOLD, fontFace: "Calibri", italic: true, margin: 0
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 4 – RESPONDING TO MEDIA: KEY PRINCIPLES
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, ACCENT);
accentBar(s);
slideTitle(s, "a. Responding to Media – Key Principles");
const points = [
{ num: "01", head: "Be Timely", body: "Respond quickly to media inquiries. Delays allow misinformation to fill the vacuum." },
{ num: "02", head: "Be Accurate", body: "Only communicate verified facts. Acknowledge uncertainty transparently rather than speculating." },
{ num: "03", head: "Be Transparent", body: "Share the basis for decisions. Public trust depends on perceived openness." },
{ num: "04", head: "Speak with One Voice", body: "Coordinate messaging across agencies to prevent contradictory statements." },
{ num: "05", head: "Use Plain Language", body: "Avoid jargon. Communicate at a level accessible to the general public." },
];
points.forEach((p, i) => {
const y = 1.02 + i * 0.84;
// Number circle
s.addShape(pres.ShapeType.ellipse, {
x: 0.42, y: y + 0.04, w: 0.52, h: 0.52,
fill: { color: ACCENT }, line: { type: "none" }
});
s.addText(p.num, {
x: 0.42, y: y + 0.04, w: 0.52, h: 0.52,
fontSize: 10, bold: true, color: WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
// Heading
s.addText(p.head, {
x: 1.08, y: y, w: 2.5, h: 0.35,
fontSize: 12.5, bold: true, color: DARK_BG, fontFace: "Calibri", margin: 0
});
// Body
s.addText(p.body, {
x: 1.08, y: y + 0.35, w: 8.5, h: 0.42,
fontSize: 10.5, color: BODY_TEXT, fontFace: "Calibri", margin: 0
});
// Divider
if (i < points.length - 1) {
s.addShape(pres.ShapeType.line, {
x: 0.42, y: y + 0.78, w: 9.2, h: 0,
line: { color: "D8E4F0", pt: 0.5 }
});
}
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 5 – MEDIA COMMUNICATION STRATEGIES
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, GOLD);
accentBar(s);
slideTitle(s, "a. Media Communication – Practical Strategies");
// 3-column layout
const cols = [
{
title: "Before the Interview",
color: MID_BG,
items: ["Prepare key messages (3 max)", "Anticipate difficult questions", "Brief your spokesperson", "Align with official guidelines"]
},
{
title: "During the Interview",
color: ACCENT,
items: ["Stay on message", "Correct misinformation calmly", "Avoid 'no comment'", "Use empathetic language"]
},
{
title: "After the Interview",
color: "2E7D32",
items: ["Monitor coverage", "Issue corrections if needed", "Share on official channels", "Log for future reference"]
}
];
cols.forEach((col, i) => {
const x = 0.42 + i * 3.18;
// Header
s.addShape(pres.ShapeType.roundRect, {
x, y: 1.0, w: 3.0, h: 0.52,
fill: { color: col.color }, line: { type: "none" }, rectRadius: 0.08
});
s.addText(col.title, {
x, y: 1.0, w: 3.0, h: 0.52,
fontSize: 12, bold: true, color: WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
// Items
col.items.forEach((item, j) => {
const iy = 1.68 + j * 0.82;
s.addShape(pres.ShapeType.roundRect, {
x, y: iy, w: 3.0, h: 0.65,
fill: { color: WHITE }, line: { color: "D0DCF0", pt: 1 }, rectRadius: 0.08
});
s.addShape(pres.ShapeType.rect, {
x, y: iy, w: 0.08, h: 0.65,
fill: { color: col.color }, line: { type: "none" }
});
s.addText(item, {
x: x + 0.18, y: iy, w: 2.75, h: 0.65,
fontSize: 10.5, color: BODY_TEXT, fontFace: "Calibri",
valign: "middle", wrap: true, margin: 0
});
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 6 – SECTION DIVIDER: TOPIC B
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
darkSlideBase(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.35, w: 10, h: 0.9, fill: { color: MID_BG }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.35, w: 10, h: 0.07, fill: { color: GOLD }, line: { type: "none" } });
s.addText("TOPIC B", {
x: 0.6, y: 0.6, w: 4, h: 0.55,
fontSize: 14, bold: true, color: MUTED, fontFace: "Calibri",
charSpacing: 8, margin: 0
});
s.addText("Social Media & Health Messaging", {
x: 0.6, y: 2.38, w: 8.8, h: 0.82,
fontSize: 32, bold: true, color: WHITE, fontFace: "Calibri",
valign: "middle", margin: 0
});
s.addText("Use and misuse of social media for health-related messages during pandemics", {
x: 0.6, y: 3.4, w: 8.8, h: 0.8,
fontSize: 15, color: GOLD, fontFace: "Calibri", italic: true, margin: 0
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 7 – SOCIAL MEDIA: USE & MISUSE
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, MID_BG);
accentBar(s);
slideTitle(s, "b. Social Media – Use vs. Misuse");
// Left: USE
s.addShape(pres.ShapeType.roundRect, {
x: 0.42, y: 1.05, w: 4.35, h: 0.45,
fill: { color: "2E7D32" }, line: { type: "none" }, rectRadius: 0.08
});
s.addText("✅ Beneficial Use", {
x: 0.42, y: 1.05, w: 4.35, h: 0.45,
fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
const uses = [
"Rapid dissemination of public health advisories",
"Real-time updates on outbreak progression",
"Bust myths with verified counter-messaging",
"Engage community for compliance (e.g., PPE, vaccines)",
"Crowd-source symptom data for surveillance"
];
uses.forEach((u, i) => {
s.addText("• " + u, {
x: 0.52, y: 1.6 + i * 0.64, w: 4.15, h: 0.58,
fontSize: 10.5, color: BODY_TEXT, fontFace: "Calibri", wrap: true, margin: 0
});
});
// Right: MISUSE
s.addShape(pres.ShapeType.roundRect, {
x: 5.22, y: 1.05, w: 4.35, h: 0.45,
fill: { color: ACCENT }, line: { type: "none" }, rectRadius: 0.08
});
s.addText("⚠️ Misuse / Infodemic Risks", {
x: 5.22, y: 1.05, w: 4.35, h: 0.45,
fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
const misuses = [
"Spread of unverified treatments & cures",
"Fear-mongering and panic-inducing content",
"Stigmatisation of affected groups",
"Undermining trust in official health authorities",
"Coordinated disinformation campaigns"
];
misuses.forEach((m, i) => {
s.addText("• " + m, {
x: 5.32, y: 1.6 + i * 0.64, w: 4.15, h: 0.58,
fontSize: 10.5, color: BODY_TEXT, fontFace: "Calibri", wrap: true, margin: 0
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 8 – INFODEMIC: WHAT IT IS & WHO RESPONSE
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, ACCENT);
accentBar(s);
slideTitle(s, "b. The 'Infodemic' – Definition & Impact");
// Definition box
s.addShape(pres.ShapeType.roundRect, {
x: 0.42, y: 1.05, w: 9.16, h: 0.95,
fill: { color: MID_BG }, line: { type: "none" }, rectRadius: 0.1
});
s.addText([
{ text: "Infodemic (WHO): ", options: { bold: true, color: GOLD } },
{ text: "An overabundance of information – some accurate, some not – that makes it hard for people to find trustworthy sources and reliable guidance when they need it.", options: { color: WHITE } }
], {
x: 0.6, y: 1.08, w: 8.8, h: 0.88,
fontSize: 11, fontFace: "Calibri", valign: "middle", wrap: true, margin: 0
});
// 4 impact cards
const impacts = [
{ emoji: "😨", title: "Public Panic", body: "Exaggerated fear leads to panic buying, hoarding, and irrational behaviour" },
{ emoji: "💊", title: "Dangerous Self-Treatment", body: "Unverified remedies cause harm (e.g., bleach, ivermectin misuse during COVID-19)" },
{ emoji: "📉", title: "Vaccine Hesitancy", body: "Anti-vax narratives reduce uptake and prolong the pandemic" },
{ emoji: "🏥", title: "Healthcare Overload", body: "Worried-well surge in hospitals strains already limited resources" },
];
impacts.forEach((c, i) => {
const x = 0.42 + i * 2.34;
s.addShape(pres.ShapeType.roundRect, {
x, y: 2.18, w: 2.16, h: 2.88,
fill: { color: WHITE }, line: { color: "D0DCF0", pt: 1 }, rectRadius: 0.12
});
s.addShape(pres.ShapeType.rect, {
x, y: 2.18, w: 2.16, h: 0.07,
fill: { color: i % 2 === 0 ? ACCENT : MID_BG }, line: { type: "none" }
});
s.addText(c.emoji, {
x, y: 2.3, w: 2.16, h: 0.6,
fontSize: 26, align: "center", margin: 0
});
s.addText(c.title, {
x, y: 3.0, w: 2.16, h: 0.4,
fontSize: 11, bold: true, color: DARK_BG, fontFace: "Calibri",
align: "center", margin: 0
});
s.addText(c.body, {
x: x + 0.1, y: 3.44, w: 1.96, h: 1.52,
fontSize: 9.5, color: BODY_TEXT, fontFace: "Calibri",
wrap: true, align: "center", margin: 0
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 9 – STRATEGIES TO COMBAT MISUSE
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
lightSlideBase(s);
sideBar(s, GOLD);
accentBar(s);
slideTitle(s, "b. Combating Social Media Misuse – Strategies");
const strats = [
{ icon: "🔍", title: "Verify Before Sharing", body: "Use WHO, CDC, and national health authority channels as primary references. Never share unverified clinical claims." },
{ icon: "📢", title: "Proactive Communication", body: "Issue regular authoritative updates to pre-empt rumours. Fill information gaps before misinformation does." },
{ icon: "🤝", title: "Partner with Platforms", body: "Engage social media companies to label, limit, or remove false health claims during public health emergencies." },
{ icon: "🎓", title: "Health Literacy Campaigns", body: "Educate the public on how to identify credible health sources and evaluate online health information." },
{ icon: "⚖️", title: "Regulatory Frameworks", body: "Support policies that hold spreaders of dangerous health misinformation accountable during emergencies." },
{ icon: "👩⚕️", title: "Clinician Advocacy", body: "Healthcare workers should actively debunk myths within their networks while maintaining professional standards." },
];
strats.forEach((st, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.42 + col * 4.82;
const y = 1.02 + row * 1.46;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 4.55, h: 1.32,
fill: { color: WHITE }, line: { color: "D0DCF0", pt: 1 }, rectRadius: 0.1
});
s.addText(st.icon, { x: x + 0.12, y: y + 0.12, w: 0.55, h: 0.55, fontSize: 20, margin: 0 });
s.addText(st.title, {
x: x + 0.75, y: y + 0.1, w: 3.65, h: 0.38,
fontSize: 12, bold: true, color: DARK_BG, fontFace: "Calibri", margin: 0
});
s.addText(st.body, {
x: x + 0.18, y: y + 0.52, w: 4.25, h: 0.74,
fontSize: 10, color: BODY_TEXT, fontFace: "Calibri", wrap: true, margin: 0
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 10 – DISCUSSION SCENARIOS
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
darkSlideBase(s);
accentBar(s);
s.addText("Interactive Discussion Scenarios", {
x: 0.5, y: 0.25, w: 9, h: 0.55,
fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
s.addShape(pres.ShapeType.rect, {
x: 0.5, y: 0.8, w: 1.2, h: 0.055,
fill: { color: ACCENT }, line: { type: "none" }
});
const scenarios = [
{
tag: "Scenario 1",
color: ACCENT,
text: "A journalist calls asking for comment on a viral social-media claim that the hospital is withholding a proven cure. How do you respond in the next 10 minutes?"
},
{
tag: "Scenario 2",
color: GOLD,
text: "A WhatsApp forward among your ward nurses states that a common antibiotic cures the current pandemic disease. Several nurses are sharing it with patients. What steps do you take?"
},
{
tag: "Scenario 3",
color: MID_BG,
text: "Your department head asks you to draft a one-paragraph official social-media post correcting misinformation about vaccine side-effects. What principles guide your writing?"
}
];
scenarios.forEach((sc, i) => {
const y = 1.0 + i * 1.45;
s.addShape(pres.ShapeType.roundRect, {
x: 0.5, y, w: 9, h: 1.32,
fill: { color: "132748" }, line: { color: sc.color, pt: 1.5 }, rectRadius: 0.1
});
s.addShape(pres.ShapeType.roundRect, {
x: 0.5, y, w: 1.5, h: 0.38,
fill: { color: sc.color }, line: { type: "none" }, rectRadius: 0.06
});
s.addText(sc.tag, {
x: 0.5, y, w: 1.5, h: 0.38,
fontSize: 10, bold: true, color: i === 1 ? DARK_BG : WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
s.addText(sc.text, {
x: 0.7, y: y + 0.42, w: 8.6, h: 0.82,
fontSize: 11, color: WHITE, fontFace: "Calibri", wrap: true, margin: 0
});
});
})();
// ═══════════════════════════════════════════════════════════════
// SLIDE 11 – KEY TAKEAWAYS & CLOSING
// ═══════════════════════════════════════════════════════════════
(function() {
let s = pres.addSlide();
darkSlideBase(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.22, h: 5.625, fill: { color: ACCENT }, line: { type: "none" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.85, w: 10, h: 0.775, fill: { color: MID_BG }, line: { type: "none" } });
s.addText("Key Takeaways", {
x: 0.45, y: 0.25, w: 9, h: 0.55,
fontSize: 24, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
s.addShape(pres.ShapeType.rect, {
x: 0.45, y: 0.82, w: 1.2, h: 0.055,
fill: { color: GOLD }, line: { type: "none" }
});
const takeaways = [
{ num: "1", text: "Timely, accurate, transparent communication is the cornerstone of pandemic information management." },
{ num: "2", text: "Coordinate messaging across departments and agencies to prevent contradictory public statements." },
{ num: "3", text: "Social media is a powerful tool – use it proactively to disseminate correct information and counter myths." },
{ num: "4", text: "The 'infodemic' is as dangerous as the epidemic itself; healthcare workers must actively combat it." },
{ num: "5", text: "Always verify, then communicate. When uncertain, acknowledge uncertainty – never speculate publicly." },
];
takeaways.forEach((t, i) => {
const y = 1.0 + i * 0.74;
s.addShape(pres.ShapeType.ellipse, {
x: 0.45, y: y + 0.06, w: 0.44, h: 0.44,
fill: { color: ACCENT }, line: { type: "none" }
});
s.addText(t.num, {
x: 0.45, y: y + 0.06, w: 0.44, h: 0.44,
fontSize: 11, bold: true, color: WHITE, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0
});
s.addText(t.text, {
x: 1.05, y, w: 8.5, h: 0.66,
fontSize: 11.5, color: WHITE, fontFace: "Calibri", wrap: true, valign: "middle", margin: 0
});
if (i < takeaways.length - 1) {
s.addShape(pres.ShapeType.line, {
x: 0.45, y: y + 0.7, w: 9.1, h: 0,
line: { color: "1B3361", pt: 0.5 }
});
}
});
s.addText("GEN MED • PUL MED • ANAES | Module 4.4", {
x: 0.45, y: 4.88, w: 9.1, h: 0.42,
fontSize: 10, color: MUTED, fontFace: "Calibri", align: "center", margin: 0
});
})();
// ─── WRITE FILE ──────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/pandemic-info-mgmt/Pandemic_Module_4_4.pptx" })
.then(() => console.log("✅ PPT saved successfully"))
.catch(e => { console.error("❌ Error:", e); process.exit(1); });
~/pandemic-info-mgmt
~/pandemic-info-mgmt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/pandemic-info-mgmt/create_ppt.js'
~/pandemic-info-mgmt/build_ppt.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
pres.author = 'GEN MED / PUL MED / ANAES';
pres.title = 'PANDEMIC Module 4.4 – Information Management during Pandemics';
// ─── COLOR PALETTE ───────────────────────────────────────────────
const DARK_BG = "0D1F3C";
const MID_BG = "14305A";
const ACCENT = "E84545";
const LIGHT_BG = "F0F4FA";
const WHITE = "FFFFFF";
const BODY_TEXT = "1A2A4A";
const MUTED = "5B7BA6";
const GOLD = "F5A623";
const GREEN = "2E7D32";
// ─── HELPERS ────────────────────────────────────────────────────
function accentBar(s) {
s.addShape(pres.ShapeType.rect, { x:0, y:5.275, w:10, h:0.35, fill:{color:ACCENT}, line:{type:"none"} });
}
function sideBar(s, color) {
s.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:5.625, fill:{color:color||ACCENT}, line:{type:"none"} });
}
function titleText(s, txt) {
s.addText(txt, { x:0.42, y:0.28, w:9.4, h:0.52, fontSize:22, bold:true, color:BODY_TEXT, fontFace:"Calibri", margin:0 });
s.addShape(pres.ShapeType.rect, { x:0.42, y:0.82, w:1.2, h:0.055, fill:{color:ACCENT}, line:{type:"none"} });
}
// ═══════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: DARK_BG };
// Right panel
s.addShape(pres.ShapeType.rect, { x:7.1, y:0, w:2.9, h:5.625, fill:{color:MID_BG}, line:{type:"none"} });
// Bottom bar
s.addShape(pres.ShapeType.rect, { x:0, y:4.5, w:7.1, h:1.125, fill:{color:ACCENT}, line:{type:"none"} });
s.addShape(pres.ShapeType.rect, { x:0, y:4.5, w:7.1, h:0.07, fill:{color:GOLD}, line:{type:"none"} });
// Module tag
s.addShape(pres.ShapeType.roundRect, { x:0.5, y:0.55, w:2.6, h:0.42, fill:{color:ACCENT}, line:{type:"none"}, rectRadius:0.08 });
s.addText("MODULE 4.4", { x:0.5, y:0.55, w:2.6, h:0.42, fontSize:12, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
s.addText("PANDEMIC", { x:0.5, y:1.1, w:6.4, h:0.85, fontSize:52, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addText("Information Management", { x:0.5, y:1.88, w:6.4, h:0.58, fontSize:28, color:GOLD, fontFace:"Calibri", margin:0 });
s.addText("during Pandemics", { x:0.5, y:2.42, w:6.4, h:0.55, fontSize:28, color:GOLD, fontFace:"Calibri", margin:0 });
s.addText([
{text:"Interactive Discussion • ", options:{bold:false}},
{text:"2 Hours", options:{bold:true}}
], { x:0.5, y:4.55, w:6.0, h:0.38, fontSize:14, color:WHITE, fontFace:"Calibri", margin:0 });
s.addText("GEN MED / PUL MED / ANAES", { x:7.1, y:4.9, w:2.9, h:0.4, fontSize:9, color:MUTED, fontFace:"Calibri", align:"center", margin:0 });
// Big number on right panel
s.addText("5", { x:7.2, y:0.3, w:2.6, h:1.5, fontSize:110, bold:true, color:"1B3361", fontFace:"Calibri", align:"center", margin:0 });
s.addText("TOPIC", { x:7.2, y:1.75, w:2.6, h:0.4, fontSize:13, color:MUTED, fontFace:"Calibri", align:"center", charSpacing:6, margin:0 });
}
// ═══════════════════════════════════════════════════
// SLIDE 2 – MODULE OVERVIEW
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, ACCENT);
accentBar(s);
titleText(s, "Module Overview");
const cards = [
{ icon:"🎯", label:"Objective", text:"Equip healthcare professionals with skills to manage information effectively during pandemics" },
{ icon:"⏱️", label:"Duration", text:"2 Hours – Interactive Discussion format with case exercises and Q&A" },
{ icon:"🏥", label:"Departments", text:"General Medicine • Pulmonology • Anaesthesiology" },
{ icon:"📋", label:"Topics", text:"(a) Responding to Media (b) Use and Misuse of Social Media for Health Messages" },
];
cards.forEach((c, i) => {
const col = i % 2, row = Math.floor(i/2);
const x = 0.42 + col*4.82, y = 1.05 + row*2.1;
s.addShape(pres.ShapeType.roundRect, { x, y, w:4.55, h:1.85, fill:{color:WHITE}, line:{color:"D0DCF0",pt:1}, rectRadius:0.12 });
s.addShape(pres.ShapeType.rect, { x, y, w:4.55, h:0.07, fill:{color:ACCENT}, line:{type:"none"} });
s.addText(c.icon, { x:x+0.18, y:y+0.12, w:0.55, h:0.55, fontSize:22, margin:0 });
s.addText(c.label, { x:x+0.78, y:y+0.12, w:3.6, h:0.38, fontSize:13, bold:true, color:ACCENT, fontFace:"Calibri", margin:0 });
s.addText(c.text, { x:x+0.18, y:y+0.58, w:4.2, h:1.1, fontSize:11, color:BODY_TEXT, fontFace:"Calibri", wrap:true, valign:"top", margin:0 });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 3 – SECTION DIVIDER: TOPIC A
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: DARK_BG };
s.addShape(pres.ShapeType.rect, { x:0, y:2.35, w:10, h:0.9, fill:{color:ACCENT}, line:{type:"none"} });
s.addShape(pres.ShapeType.rect, { x:0, y:2.35, w:10, h:0.07, fill:{color:GOLD}, line:{type:"none"} });
s.addText("TOPIC A", { x:0.6, y:0.6, w:4, h:0.55, fontSize:14, bold:true, color:MUTED, fontFace:"Calibri", charSpacing:8, margin:0 });
s.addText("Responding to Media", { x:0.6, y:2.38, w:8.8, h:0.82, fontSize:38, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0 });
s.addText("How health professionals communicate with and through the media during a pandemic", { x:0.6, y:3.4, w:8.8, h:0.8, fontSize:15, color:GOLD, fontFace:"Calibri", italic:true, margin:0 });
}
// ═══════════════════════════════════════════════════
// SLIDE 4 – MEDIA RESPONSE: KEY PRINCIPLES
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, ACCENT);
accentBar(s);
titleText(s, "a. Responding to Media – Key Principles");
const points = [
{ num:"01", head:"Be Timely", body:"Respond quickly. Delays allow misinformation to fill the vacuum and erode public trust." },
{ num:"02", head:"Be Accurate", body:"Only communicate verified facts. Acknowledge uncertainty openly rather than speculating." },
{ num:"03", head:"Be Transparent", body:"Share the basis for decisions. Public trust depends on perceived openness and honesty." },
{ num:"04", head:"Speak with One Voice", body:"Coordinate messaging across agencies to prevent contradictory public statements." },
{ num:"05", head:"Use Plain Language", body:"Avoid jargon. Communicate at a level accessible to the general public." },
];
points.forEach((p, i) => {
const y = 1.02 + i*0.84;
s.addShape(pres.ShapeType.ellipse, { x:0.42, y:y+0.04, w:0.52, h:0.52, fill:{color:ACCENT}, line:{type:"none"} });
s.addText(p.num, { x:0.42, y:y+0.04, w:0.52, h:0.52, fontSize:10, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
s.addText(p.head, { x:1.08, y:y, w:2.5, h:0.35, fontSize:12.5, bold:true, color:DARK_BG, fontFace:"Calibri", margin:0 });
s.addText(p.body, { x:1.08, y:y+0.35, w:8.5, h:0.42, fontSize:10.5, color:BODY_TEXT, fontFace:"Calibri", margin:0 });
if (i < points.length-1)
s.addShape(pres.ShapeType.line, { x:0.42, y:y+0.78, w:9.2, h:0, line:{color:"D8E4F0",pt:0.5} });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 5 – MEDIA INTERVIEW STRATEGIES
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, GOLD);
accentBar(s);
titleText(s, "a. Media Communication – Practical Strategies");
const cols = [
{ title:"Before the Interview", color:MID_BG, items:["Prepare 3 key messages","Anticipate difficult questions","Brief your spokesperson","Align with official guidelines"] },
{ title:"During the Interview", color:ACCENT, items:["Stay on message","Correct misinformation calmly","Avoid 'no comment'","Use empathetic language"] },
{ title:"After the Interview", color:GREEN, items:["Monitor media coverage","Issue corrections if needed","Share on official channels","Log for future reference"] },
];
cols.forEach((col, i) => {
const x = 0.42 + i*3.18;
s.addShape(pres.ShapeType.roundRect, { x, y:1.0, w:3.0, h:0.52, fill:{color:col.color}, line:{type:"none"}, rectRadius:0.08 });
s.addText(col.title, { x, y:1.0, w:3.0, h:0.52, fontSize:12, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
col.items.forEach((item, j) => {
const iy = 1.68 + j*0.82;
s.addShape(pres.ShapeType.roundRect, { x, y:iy, w:3.0, h:0.65, fill:{color:WHITE}, line:{color:"D0DCF0",pt:1}, rectRadius:0.08 });
s.addShape(pres.ShapeType.rect, { x, y:iy, w:0.08, h:0.65, fill:{color:col.color}, line:{type:"none"} });
s.addText(item, { x:x+0.18, y:iy, w:2.75, h:0.65, fontSize:10.5, color:BODY_TEXT, fontFace:"Calibri", valign:"middle", wrap:true, margin:0 });
});
});
}
// ═══════════════════════════════════════════════════
// SLIDE 6 – SECTION DIVIDER: TOPIC B
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: DARK_BG };
s.addShape(pres.ShapeType.rect, { x:0, y:2.35, w:10, h:0.9, fill:{color:MID_BG}, line:{type:"none"} });
s.addShape(pres.ShapeType.rect, { x:0, y:2.35, w:10, h:0.07, fill:{color:GOLD}, line:{type:"none"} });
s.addText("TOPIC B", { x:0.6, y:0.6, w:4, h:0.55, fontSize:14, bold:true, color:MUTED, fontFace:"Calibri", charSpacing:8, margin:0 });
s.addText("Social Media & Health Messaging", { x:0.6, y:2.38, w:8.8, h:0.82, fontSize:32, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0 });
s.addText("Use and misuse of social media for health-related messages during pandemics", { x:0.6, y:3.4, w:8.8, h:0.8, fontSize:15, color:GOLD, fontFace:"Calibri", italic:true, margin:0 });
}
// ═══════════════════════════════════════════════════
// SLIDE 7 – USE VS MISUSE OF SOCIAL MEDIA
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, MID_BG);
accentBar(s);
titleText(s, "b. Social Media – Use vs. Misuse");
// USE header
s.addShape(pres.ShapeType.roundRect, { x:0.42, y:1.05, w:4.35, h:0.45, fill:{color:GREEN}, line:{type:"none"}, rectRadius:0.08 });
s.addText("✅ Beneficial Use", { x:0.42, y:1.05, w:4.35, h:0.45, fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
["Rapid dissemination of public health advisories","Real-time updates on outbreak progression","Counter myths with verified messaging","Engage communities for compliance (PPE, vaccines)","Crowd-source symptom data for surveillance"].forEach((u,i) => {
s.addText("• "+u, { x:0.52, y:1.6+i*0.65, w:4.15, h:0.58, fontSize:10.5, color:BODY_TEXT, fontFace:"Calibri", wrap:true, margin:0 });
});
// MISUSE header
s.addShape(pres.ShapeType.roundRect, { x:5.22, y:1.05, w:4.35, h:0.45, fill:{color:ACCENT}, line:{type:"none"}, rectRadius:0.08 });
s.addText("⚠️ Misuse / Infodemic Risks", { x:5.22, y:1.05, w:4.35, h:0.45, fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
["Spread of unverified treatments & cures","Fear-mongering and panic-inducing content","Stigmatisation of affected groups","Undermining trust in health authorities","Coordinated disinformation campaigns"].forEach((m,i) => {
s.addText("• "+m, { x:5.32, y:1.6+i*0.65, w:4.15, h:0.58, fontSize:10.5, color:BODY_TEXT, fontFace:"Calibri", wrap:true, margin:0 });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 8 – THE INFODEMIC
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, ACCENT);
accentBar(s);
titleText(s, "b. The 'Infodemic' – Definition & Impact");
// Definition box
s.addShape(pres.ShapeType.roundRect, { x:0.42, y:1.05, w:9.16, h:0.95, fill:{color:MID_BG}, line:{type:"none"}, rectRadius:0.1 });
s.addText([
{text:"WHO Definition – Infodemic: ", options:{bold:true, color:GOLD}},
{text:"An overabundance of information – some accurate, some not – that makes it hard for people to find trustworthy sources and reliable guidance when they need it.", options:{color:WHITE}}
], { x:0.6, y:1.08, w:8.8, h:0.88, fontSize:11, fontFace:"Calibri", valign:"middle", wrap:true, margin:0 });
const impacts = [
{ emoji:"😨", title:"Public Panic", body:"Exaggerated fear leads to panic buying, hoarding, and irrational behaviour" },
{ emoji:"💊", title:"Dangerous Self-Treatment",body:"Unverified remedies cause harm (e.g., bleach ingestion, ivermectin misuse)" },
{ emoji:"📉", title:"Vaccine Hesitancy", body:"Anti-vax narratives reduce uptake and prolong pandemics" },
{ emoji:"🏥", title:"Healthcare Overload", body:"Worried-well surge strains already limited hospital resources" },
];
impacts.forEach((c, i) => {
const x = 0.42 + i*2.34;
s.addShape(pres.ShapeType.roundRect, { x, y:2.18, w:2.16, h:2.88, fill:{color:WHITE}, line:{color:"D0DCF0",pt:1}, rectRadius:0.12 });
s.addShape(pres.ShapeType.rect, { x, y:2.18, w:2.16, h:0.07, fill:{color: i%2===0 ? ACCENT : MID_BG}, line:{type:"none"} });
s.addText(c.emoji, { x, y:2.3, w:2.16, h:0.6, fontSize:26, align:"center", margin:0 });
s.addText(c.title, { x, y:3.0, w:2.16, h:0.4, fontSize:11, bold:true, color:DARK_BG, fontFace:"Calibri", align:"center", margin:0 });
s.addText(c.body, { x:x+0.1, y:3.44, w:1.96, h:1.52, fontSize:9.5, color:BODY_TEXT, fontFace:"Calibri", wrap:true, align:"center", margin:0 });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 9 – COMBATING MISUSE
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: LIGHT_BG };
sideBar(s, GOLD);
accentBar(s);
titleText(s, "b. Combating Social Media Misuse – Strategies");
const strats = [
{ icon:"🔍", title:"Verify Before Sharing", body:"Use WHO, CDC, and national health authority channels. Never share unverified clinical claims." },
{ icon:"📢", title:"Proactive Communication", body:"Issue regular authoritative updates to pre-empt rumours. Fill information gaps before misinformation does." },
{ icon:"🤝", title:"Partner with Platforms", body:"Engage social media companies to label, limit, or remove false health claims during emergencies." },
{ icon:"🎓", title:"Health Literacy Campaigns",body:"Educate the public on identifying credible health sources and evaluating online health information." },
{ icon:"⚖️", title:"Regulatory Frameworks", body:"Support policies that hold spreaders of dangerous health misinformation accountable." },
{ icon:"👩⚕️", title:"Clinician Advocacy", body:"Healthcare workers should actively debunk myths within their networks, maintaining professional standards." },
];
strats.forEach((st, i) => {
const col = i%2, row = Math.floor(i/2);
const x = 0.42 + col*4.82, y = 1.02 + row*1.46;
s.addShape(pres.ShapeType.roundRect, { x, y, w:4.55, h:1.32, fill:{color:WHITE}, line:{color:"D0DCF0",pt:1}, rectRadius:0.1 });
s.addText(st.icon, { x:x+0.12, y:y+0.12, w:0.55, h:0.55, fontSize:20, margin:0 });
s.addText(st.title, { x:x+0.75, y:y+0.1, w:3.65, h:0.38, fontSize:12, bold:true, color:DARK_BG, fontFace:"Calibri", margin:0 });
s.addText(st.body, { x:x+0.18, y:y+0.52, w:4.25, h:0.74, fontSize:10, color:BODY_TEXT, fontFace:"Calibri", wrap:true, margin:0 });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 10 – DISCUSSION SCENARIOS
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: DARK_BG };
accentBar(s);
s.addText("Interactive Discussion Scenarios", { x:0.5, y:0.25, w:9, h:0.55, fontSize:22, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addShape(pres.ShapeType.rect, { x:0.5, y:0.8, w:1.2, h:0.055, fill:{color:ACCENT}, line:{type:"none"} });
const scenarios = [
{ tag:"Scenario 1", color:ACCENT, text:"A journalist calls asking for comment on a viral social-media claim that your hospital is withholding a proven cure. How do you respond in the next 10 minutes?" },
{ tag:"Scenario 2", color:GOLD, text:"A WhatsApp forward among your ward nurses states a common antibiotic cures the pandemic disease. Several nurses are sharing it with patients. What steps do you take?" },
{ tag:"Scenario 3", color:MID_BG, text:"Your department head asks you to draft an official social-media post correcting misinformation about vaccine side-effects. What principles guide your writing?" },
];
scenarios.forEach((sc, i) => {
const y = 1.0 + i*1.45;
s.addShape(pres.ShapeType.roundRect, { x:0.5, y, w:9, h:1.32, fill:{color:"132748"}, line:{color:sc.color,pt:1.5}, rectRadius:0.1 });
s.addShape(pres.ShapeType.roundRect, { x:0.5, y, w:1.5, h:0.38, fill:{color:sc.color}, line:{type:"none"}, rectRadius:0.06 });
s.addText(sc.tag, { x:0.5, y, w:1.5, h:0.38, fontSize:10, bold:true, color: i===1 ? DARK_BG : WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
s.addText(sc.text, { x:0.7, y:y+0.42, w:8.6, h:0.82, fontSize:11, color:WHITE, fontFace:"Calibri", wrap:true, margin:0 });
});
}
// ═══════════════════════════════════════════════════
// SLIDE 11 – KEY TAKEAWAYS
// ═══════════════════════════════════════════════════
{
let s = pres.addSlide();
s.background = { color: DARK_BG };
s.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.22, h:5.625, fill:{color:ACCENT}, line:{type:"none"} });
s.addShape(pres.ShapeType.rect, { x:0, y:4.85, w:10, h:0.775, fill:{color:MID_BG}, line:{type:"none"} });
s.addText("Key Takeaways", { x:0.45, y:0.25, w:9, h:0.55, fontSize:24, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addShape(pres.ShapeType.rect, { x:0.45, y:0.82, w:1.2, h:0.055, fill:{color:GOLD}, line:{type:"none"} });
const takeaways = [
"Timely, accurate, transparent communication is the cornerstone of pandemic information management.",
"Coordinate messaging across departments and agencies to prevent contradictory public statements.",
"Social media is a powerful tool – use it proactively to disseminate correct information and counter myths.",
"The 'infodemic' is as dangerous as the epidemic itself; healthcare workers must actively combat it.",
"Always verify, then communicate. When uncertain, acknowledge uncertainty – never speculate publicly.",
];
takeaways.forEach((t, i) => {
const y = 1.0 + i*0.74;
s.addShape(pres.ShapeType.ellipse, { x:0.45, y:y+0.06, w:0.44, h:0.44, fill:{color:ACCENT}, line:{type:"none"} });
s.addText(String(i+1), { x:0.45, y:y+0.06, w:0.44, h:0.44, fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
s.addText(t, { x:1.05, y, w:8.5, h:0.66, fontSize:11.5, color:WHITE, fontFace:"Calibri", wrap:true, valign:"middle", margin:0 });
if (i < takeaways.length-1)
s.addShape(pres.ShapeType.line, { x:0.45, y:y+0.7, w:9.1, h:0, line:{color:"1B3361",pt:0.5} });
});
s.addText("GEN MED • PUL MED • ANAES | Module 4.4", { x:0.45, y:4.88, w:9.1, h:0.42, fontSize:10, color:MUTED, fontFace:"Calibri", align:"center", margin:0 });
}
// ─── WRITE FILE ──────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/pandemic-info-mgmt/Pandemic_Module_4_4.pptx" })
.then(() => console.log("PPT saved OK"))
.catch(e => { console.error("Error:", e); process.exit(1); });
cd /home/daytona/workspace/pandemic-info-mgmt && node build_ppt.js
Pandemic Module 4 4
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide - Module 4.4 branding, departments, duration |
| 2 | Module Overview - Objective, duration, departments, topic list |
| 3 | Section Divider - Topic A: Responding to Media |
| 4 | Key Principles - 5 core media communication principles (Timely, Accurate, Transparent, One Voice, Plain Language) |
| 5 | Practical Strategies - Before / During / After interview columns |
| 6 | Section Divider - Topic B: Social Media & Health Messaging |
| 7 | Use vs. Misuse - Side-by-side beneficial use and infodemic risks |
| 8 | The Infodemic - WHO definition + 4 impact cards |
| 9 | Combating Misuse - 6 strategy cards for healthcare workers |
| 10 | Discussion Scenarios - 3 real-world case scenarios for interactive discussion |
| 11 | Key Takeaways - 5 summary points, departmental footer |