attachment
attachment

kindly make a ppt of above

Reading File
Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty"

Writing File

~/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); });
Browsing Directory

~/pandemic-info-mgmt

Editing File

~/pandemic-info-mgmt/create_ppt.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/pandemic-info-mgmt/create_ppt.js'
Writing File

~/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); });
Running Command

cd /home/daytona/workspace/pandemic-info-mgmt && node build_ppt.js

Your PowerPoint is ready! Here's your download link:

Pandemic Module 4 4

Presentation · PPTX


The presentation has 11 slides with a deep navy + red accent design theme:
SlideContent
1Title Slide - Module 4.4 branding, departments, duration
2Module Overview - Objective, duration, departments, topic list
3Section Divider - Topic A: Responding to Media
4Key Principles - 5 core media communication principles (Timely, Accurate, Transparent, One Voice, Plain Language)
5Practical Strategies - Before / During / After interview columns
6Section Divider - Topic B: Social Media & Health Messaging
7Use vs. Misuse - Side-by-side beneficial use and infodemic risks
8The Infodemic - WHO definition + 4 impact cards
9Combating Misuse - 6 strategy cards for healthcare workers
10Discussion Scenarios - 3 real-world case scenarios for interactive discussion
11Key Takeaways - 5 summary points, departmental footer
This is a shared conversation. Sign in to Orris to start your own chat.