Create a slideshow for surgical screening camp to be conducted at our hospital

Asking for Preferences
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/surgical-camp-pptx

Writing File

~/surgical-camp-pptx/create_pptx.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Surgical Screening Camp - XYZ Hospital";
pres.author = "XYZ Hospital";

// ─── COLOUR PALETTE ───────────────────────────────────────────────────────────
const C = {
  navy:      "0B2D5E",   // dominant background
  teal:      "1A7A8A",   // accent header blocks
  aqua:      "22C1C3",   // accent lines / icons
  white:     "FFFFFF",
  offwhite:  "E8F4F8",
  amber:     "F5A623",   // call-to-action highlight
  lightgrey: "D0E8EE",
  darktext:  "0B2D5E",
};

// ─── HELPER: add a decorative top-left corner accent line ────────────────────
function accentLine(slide) {
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 0.08, h: 5.625,
    fill: { color: C.aqua },
    line: { type: "none" },
  });
}

// ─── HELPER: subtle bottom bar ───────────────────────────────────────────────
function bottomBar(slide, label) {
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 5.25, w: 10, h: 0.375,
    fill: { color: C.teal },
    line: { type: "none" },
  });
  slide.addText(label, {
    x: 0.15, y: 5.25, w: 9.7, h: 0.375,
    fontSize: 9, color: C.offwhite,
    valign: "middle", align: "right",
    fontFace: "Calibri",
  });
}

// ─── HELPER: section header block ─────────────────────────────────────────────
function sectionHeader(slide, text) {
  slide.addShape(pres.ShapeType.rect, {
    x: 0.12, y: 0.22, w: 9.76, h: 0.72,
    fill: { color: C.teal },
    line: { type: "none" },
    rectRadius: 0.05,
  });
  slide.addText(text, {
    x: 0.25, y: 0.22, w: 9.5, h: 0.72,
    fontSize: 20, bold: true, color: C.white,
    valign: "middle", fontFace: "Calibri",
  });
}

// ─── HELPER: info card ────────────────────────────────────────────────────────
function card(slide, x, y, w, h, title, body, titleColor, bgColor) {
  slide.addShape(pres.ShapeType.rect, {
    x, y, w, h,
    fill: { color: bgColor || C.offwhite },
    line: { color: C.aqua, pt: 1.5 },
    rectRadius: 0.08,
    shadow: { type: "outer", color: "888888", blur: 5, offset: 2, angle: 45, opacity: 0.25 },
  });
  if (title) {
    slide.addText(title, {
      x: x + 0.12, y: y + 0.08, w: w - 0.24, h: 0.38,
      fontSize: 13, bold: true, color: titleColor || C.navy,
      fontFace: "Calibri", valign: "middle",
    });
  }
  if (body) {
    slide.addText(body, {
      x: x + 0.12, y: y + 0.48, w: w - 0.24, h: h - 0.58,
      fontSize: 11, color: C.darktext,
      fontFace: "Calibri", valign: "top",
      wrap: true,
    });
  }
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE SLIDE
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();

  // full dark background
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{type:"none"} });

  // big aqua diagonal stripe (decorative)
  s.addShape(pres.ShapeType.rect, {
    x: 6.5, y: 0, w: 4, h: 5.625,
    fill: { color: C.teal, transparency: 40 },
    line: { type: "none" },
    rotate: 0,
  });

  // thin aqua top accent
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:0.07, fill:{ color: C.aqua }, line:{type:"none"} });

  // Red Cross / medical icon area (simple "+" symbol)
  s.addShape(pres.ShapeType.rect, { x:7.6, y:1.1, w:0.8, h:0.22, fill:{ color: C.amber }, line:{type:"none"} });
  s.addShape(pres.ShapeType.rect, { x:7.91, y:0.79, w:0.22, h:0.84, fill:{ color: C.amber }, line:{type:"none"} });

  // hospital name
  s.addText("XYZ HOSPITAL", {
    x: 0.5, y: 0.55, w: 6.8, h: 0.45,
    fontSize: 14, bold: true, color: C.aqua, charSpacing: 4,
    fontFace: "Calibri",
  });

  // main title
  s.addText("FREE GENERAL SURGERY\nSCREENING CAMP", {
    x: 0.5, y: 1.1, w: 6.8, h: 1.9,
    fontSize: 38, bold: true, color: C.white,
    fontFace: "Calibri", lineSpacingMultiple: 1.15,
  });

  // subtitle / tagline
  s.addText("Detect Early. Treat Wisely. Live Fully.", {
    x: 0.5, y: 3.05, w: 6.8, h: 0.5,
    fontSize: 16, italic: true, color: C.lightgrey,
    fontFace: "Calibri",
  });

  // date / venue pill
  s.addShape(pres.ShapeType.rect, {
    x: 0.5, y: 3.7, w: 3.4, h: 0.52,
    fill: { color: C.amber },
    line: { type: "none" },
    rectRadius: 0.26,
  });
  s.addText("📅  Date: [Date]", {
    x: 0.5, y: 3.7, w: 3.4, h: 0.52,
    fontSize: 13, bold: true, color: C.navy,
    align: "center", valign: "middle", fontFace: "Calibri",
  });

  s.addShape(pres.ShapeType.rect, {
    x: 4.1, y: 3.7, w: 3.1, h: 0.52,
    fill: { color: C.amber },
    line: { type: "none" },
    rectRadius: 0.26,
  });
  s.addText("📍  Venue: OPD Hall", {
    x: 4.1, y: 3.7, w: 3.1, h: 0.52,
    fontSize: 13, bold: true, color: C.navy,
    align: "center", valign: "middle", fontFace: "Calibri",
  });

  // free tag
  s.addShape(pres.ShapeType.ellipse, { x:7.4, y:3.55, w:1.8, h:1.0, fill:{ color: "D0021B" }, line:{type:"none"} });
  s.addText("FREE\nCamp", {
    x: 7.4, y: 3.55, w: 1.8, h: 1.0,
    fontSize: 18, bold: true, color: C.white,
    align: "center", valign: "middle", fontFace: "Calibri",
  });

  bottomBar(s, "XYZ Hospital  |  www.xyzhospital.com  |  Helpline: 1800-XXX-XXXX");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – WHAT IS A SURGICAL SCREENING CAMP?
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.white }, line:{type:"none"} });
  accentLine(s);
  sectionHeader(s, "What Is a Surgical Screening Camp?");

  const points = [
    { icon: "🔍", title: "Free Medical Check-Up", desc: "A community event where our surgical experts examine you at no cost." },
    { icon: "🩺", title: "Detect Problems Early", desc: "Identify surgical conditions before they become serious or complicated." },
    { icon: "🤝", title: "Guidance & Counselling", desc: "One-on-one consultation with specialist surgeons for your concerns." },
    { icon: "💊", title: "Treatment Planning", desc: "Those who need surgery get priority scheduling and subsidised care." },
  ];

  points.forEach((p, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.25 + col * 4.88;
    const y = 1.1 + row * 1.85;
    s.addShape(pres.ShapeType.rect, {
      x, y, w: 4.6, h: 1.6,
      fill: { color: i % 2 === 0 ? C.offwhite : "EBF7F9" },
      line: { color: C.aqua, pt: 1.2 },
      rectRadius: 0.1,
      shadow: { type: "outer", color: "AACCDD", blur: 4, offset: 2, angle: 45, opacity: 0.3 },
    });
    s.addText(p.icon, { x: x + 0.12, y: y + 0.08, w: 0.6, h: 0.6, fontSize: 26 });
    s.addText(p.title, { x: x + 0.75, y: y + 0.1, w: 3.7, h: 0.45, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
    s.addText(p.desc,  { x: x + 0.12, y: y + 0.62, w: 4.3, h: 0.82, fontSize: 11, color: C.darktext, fontFace: "Calibri", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – WHY YOU SHOULD ATTEND
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{type:"none"} });

  // decorative circles
  s.addShape(pres.ShapeType.ellipse, { x:8.0, y:-0.5, w:3.0, h:3.0, fill:{ color: C.teal, transparency:70 }, line:{type:"none"} });
  s.addShape(pres.ShapeType.ellipse, { x:-0.8, y:3.8, w:2.5, h:2.5, fill:{ color: C.aqua, transparency:75 }, line:{type:"none"} });

  s.addText("Why Should You Attend?", {
    x: 0.3, y: 0.25, w: 9.4, h: 0.7,
    fontSize: 24, bold: true, color: C.aqua, fontFace: "Calibri",
  });

  const reasons = [
    { num: "01", text: "Completely FREE consultation with experienced surgeons" },
    { num: "02", text: "Early detection of hernias, gallstones, appendix issues & more" },
    { num: "03", text: "No appointment needed — walk in, get checked" },
    { num: "04", text: "Free basic investigations (Blood test, USG) on the camp day" },
    { num: "05", text: "Concession on surgery charges for those diagnosed on the camp day" },
    { num: "06", text: "Confidential, compassionate care from our expert team" },
  ];

  reasons.forEach((r, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.3 + col * 4.9;
    const y = 1.1 + row * 1.35;

    s.addShape(pres.ShapeType.ellipse, { x: x, y: y + 0.08, w: 0.55, h: 0.55, fill:{ color: C.amber }, line:{type:"none"} });
    s.addText(r.num, { x: x, y: y + 0.08, w: 0.55, h: 0.55, fontSize: 11, bold: true, color: C.navy, align:"center", valign:"middle", fontFace:"Calibri" });
    s.addText(r.text, { x: x + 0.65, y: y, w: 4.1, h: 0.7, fontSize: 12, color: C.white, fontFace: "Calibri", valign: "middle", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – CONDITIONS WE SCREEN FOR
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.white }, line:{type:"none"} });
  accentLine(s);
  sectionHeader(s, "Conditions We Screen For");

  const conditions = [
    { icon: "🫀", name: "Hernia", detail: "Inguinal, umbilical, incisional" },
    { icon: "🪨", name: "Gallstones", detail: "Gallbladder pain & bile duct issues" },
    { icon: "🔺", name: "Appendix Problems", detail: "Chronic & recurrent appendicitis" },
    { icon: "🩹", name: "Ano-rectal Diseases", detail: "Piles, fissures, fistula" },
    { icon: "🔵", name: "Cysts & Lumps", detail: "Skin, subcutaneous & soft-tissue masses" },
    { icon: "🩻", name: "Thyroid Swellings", detail: "Goitre, nodules, thyroid enlargement" },
    { icon: "🧫", name: "Varicose Veins", detail: "Leg vein disease & ulcers" },
    { icon: "📍", name: "Abdominal Pain", detail: "Undiagnosed persistent abdominal complaints" },
  ];

  conditions.forEach((c, i) => {
    const col = i % 4;
    const row = Math.floor(i / 4);
    const x = 0.2 + col * 2.42;
    const y = 1.05 + row * 2.1;

    s.addShape(pres.ShapeType.rect, {
      x, y, w: 2.22, h: 1.85,
      fill: { color: row === 0 ? C.offwhite : "EBF7F9" },
      line: { color: C.teal, pt: 1.2 },
      rectRadius: 0.1,
      shadow: { type: "outer", color: "AACCDD", blur: 3, offset: 2, angle: 45, opacity: 0.25 },
    });
    s.addText(c.icon, { x, y: y + 0.1, w: 2.22, h: 0.6, fontSize: 24, align: "center" });
    s.addText(c.name, { x: x + 0.08, y: y + 0.72, w: 2.06, h: 0.42, fontSize: 12, bold: true, color: C.navy, align: "center", fontFace: "Calibri" });
    s.addText(c.detail, { x: x + 0.06, y: y + 1.14, w: 2.1, h: 0.58, fontSize: 9.5, color: C.darktext, align: "center", fontFace: "Calibri", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – WHO SHOULD ATTEND
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.offwhite }, line:{type:"none"} });
  accentLine(s);

  // teal left panel
  s.addShape(pres.ShapeType.rect, { x:0.08, y:0, w:4.5, h:5.625, fill:{ color: C.teal }, line:{type:"none"} });
  s.addText("Who Should\nAttend?", {
    x: 0.25, y: 1.0, w: 4.1, h: 2.0,
    fontSize: 34, bold: true, color: C.white,
    fontFace: "Calibri", lineSpacingMultiple: 1.2,
  });
  s.addText("This camp is for\neveryone!", {
    x: 0.25, y: 3.1, w: 4.1, h: 1.0,
    fontSize: 16, italic: true, color: C.lightgrey,
    fontFace: "Calibri",
  });

  const groups = [
    { icon: "🤕", text: "Anyone with unexplained abdominal pain or swelling" },
    { icon: "👵", text: "Adults over 35 years for preventive surgical screening" },
    { icon: "👨‍👩‍👧", text: "Those with a family history of hernias or gallstones" },
    { icon: "⚠️",  text: "People experiencing rectal bleeding, piles, or fissures" },
    { icon: "🏥",  text: "Patients who were advised surgery but haven't followed up" },
    { icon: "😟",  text: "Anyone with lumps, bumps, or swellings on the body" },
  ];

  groups.forEach((g, i) => {
    const y = 0.55 + i * 0.82;
    s.addShape(pres.ShapeType.rect, {
      x: 4.85, y, w: 4.9, h: 0.66,
      fill: { color: C.white },
      line: { color: C.aqua, pt: 1 },
      rectRadius: 0.06,
    });
    s.addText(g.icon, { x: 4.9, y, w: 0.5, h: 0.66, fontSize: 18, valign: "middle" });
    s.addText(g.text, { x: 5.45, y, w: 4.2, h: 0.66, fontSize: 11, color: C.navy, fontFace: "Calibri", valign: "middle", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – WHAT TO EXPECT ON CAMP DAY
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.white }, line:{type:"none"} });
  accentLine(s);
  sectionHeader(s, "What to Expect on Camp Day");

  const steps = [
    { num: "1", label: "Registration", desc: "Register at the reception desk\n(Free, no prior booking needed)" },
    { num: "2", label: "Basic Vitals", desc: "Height, weight, BP &\nbasic health check" },
    { num: "3", label: "Specialist Consultation", desc: "One-on-one with\nour general surgeons" },
    { num: "4", label: "Investigations", desc: "Blood tests & ultrasound\n(selected cases, free of cost)" },
    { num: "5", label: "Report & Advice", desc: "Written summary, prescription\nand treatment plan" },
  ];

  // draw arrow connector
  for (let i = 0; i < steps.length; i++) {
    const x = 0.22 + i * 1.95;
    const y = 1.25;

    // circle
    s.addShape(pres.ShapeType.ellipse, { x: x + 0.55, y, w: 0.9, h: 0.9, fill:{ color: C.teal }, line:{type:"none"} });
    s.addText(steps[i].num, { x: x + 0.55, y, w: 0.9, h: 0.9, fontSize: 20, bold: true, color: C.white, align:"center", valign:"middle", fontFace:"Calibri" });

    // step card
    s.addShape(pres.ShapeType.rect, {
      x: x + 0.08, y: 2.35, w: 1.74, h: 2.6,
      fill: { color: i % 2 === 0 ? C.offwhite : "E0F4F7" },
      line: { color: C.aqua, pt: 1 },
      rectRadius: 0.08,
    });
    s.addText(steps[i].label, { x: x + 0.12, y: 2.42, w: 1.66, h: 0.4, fontSize: 11, bold: true, color: C.navy, align:"center", fontFace:"Calibri" });
    s.addText(steps[i].desc,  { x: x + 0.1,  y: 2.88, w: 1.7,  h: 1.9, fontSize: 10, color: C.darktext, align:"center", fontFace:"Calibri", wrap: true });

    // connector arrow (except last)
    if (i < steps.length - 1) {
      s.addShape(pres.ShapeType.rect, { x: x + 1.6, y: y + 0.37, w: 0.33, h: 0.16, fill:{ color: C.amber }, line:{type:"none"} });
    }
  }

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – OUR SURGICAL TEAM
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{type:"none"} });
  s.addShape(pres.ShapeType.ellipse, { x:-1, y:-1, w:4, h:4, fill:{ color: C.teal, transparency:70 }, line:{type:"none"} });
  s.addShape(pres.ShapeType.ellipse, { x:7.5, y:3.5, w:3.5, h:3.5, fill:{ color: C.aqua, transparency:78 }, line:{type:"none"} });

  s.addText("Meet Our Surgical Team", {
    x: 0.3, y: 0.2, w: 9.4, h: 0.7,
    fontSize: 24, bold: true, color: C.aqua, fontFace: "Calibri",
  });
  s.addText("Experienced. Compassionate. Trusted.", {
    x: 0.3, y: 0.85, w: 9.4, h: 0.38,
    fontSize: 13, italic: true, color: C.lightgrey, fontFace: "Calibri",
  });

  const doctors = [
    { name: "Dr. [Name]", qual: "MS (General Surgery)", role: "Sr. Consultant Surgeon\n& Camp Director" },
    { name: "Dr. [Name]", qual: "MS, MCh (GI Surgery)", role: "Laparoscopic &\nGI Surgeon" },
    { name: "Dr. [Name]", qual: "MS (General Surgery)", role: "Proctology &\nColorectal Specialist" },
    { name: "Dr. [Name]", qual: "MS (Surgery)", role: "Trauma & Emergency\nSurgeon" },
  ];

  doctors.forEach((d, i) => {
    const x = 0.35 + i * 2.35;
    const y = 1.5;

    // avatar circle
    s.addShape(pres.ShapeType.ellipse, { x: x + 0.4, y, w: 1.5, h: 1.5, fill:{ color: C.teal }, line:{ color: C.aqua, pt: 2 } });
    s.addText("👨‍⚕️", { x: x + 0.4, y, w: 1.5, h: 1.5, fontSize: 30, align:"center", valign:"middle" });

    s.addText(d.name, { x: x + 0.05, y: y + 1.6, w: 2.2, h: 0.38, fontSize: 12, bold: true, color: C.amber, align:"center", fontFace:"Calibri" });
    s.addText(d.qual, { x: x + 0.05, y: y + 1.98, w: 2.2, h: 0.35, fontSize: 9.5, color: C.lightgrey, align:"center", fontFace:"Calibri" });
    s.addText(d.role, { x: x + 0.05, y: y + 2.33, w: 2.2, h: 0.58, fontSize: 10, color: C.white, align:"center", fontFace:"Calibri", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – PATIENT TESTIMONIALS / SUCCESS STORIES
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.offwhite }, line:{type:"none"} });
  accentLine(s);
  sectionHeader(s, "Patient Success Stories");

  const testimonials = [
    {
      quote: "I had been ignoring my hernia pain for 2 years. At the camp, the doctor diagnosed me instantly. Surgery was done within a week — I feel brand new!",
      name: "Ramesh K., 52 yrs",
      city: "Pune",
    },
    {
      quote: "I discovered I had gallstones at the camp. I had no idea that my indigestion was this serious. Thank you XYZ Hospital for this timely intervention.",
      name: "Sunita M., 44 yrs",
      city: "Nashik",
    },
    {
      quote: "The doctors were very kind and patient. My fissure was treated without any heavy surgery. The free camp changed my life.",
      name: "Anil P., 39 yrs",
      city: "Pune",
    },
  ];

  testimonials.forEach((t, i) => {
    const x = 0.22 + i * 3.25;
    const y = 1.1;

    s.addShape(pres.ShapeType.rect, { x, y, w: 3.0, h: 3.85, fill:{ color: C.white }, line:{ color: C.teal, pt: 1.3 }, rectRadius: 0.1,
      shadow: { type:"outer", color:"AACCDD", blur:5, offset:2, angle:45, opacity:0.3 } });
    // big quote mark
    s.addText("\u201C", { x: x + 0.08, y: y + 0.05, w: 0.6, h: 0.7, fontSize: 44, color: C.aqua, fontFace:"Georgia" });
    s.addText(t.quote, { x: x + 0.12, y: y + 0.6, w: 2.76, h: 2.1, fontSize: 10.5, color: C.darktext, fontFace:"Calibri", wrap: true, italic: true });
    // divider
    s.addShape(pres.ShapeType.rect, { x: x + 0.12, y: y + 2.78, w: 2.76, h: 0.04, fill:{ color: C.aqua }, line:{type:"none"} });
    s.addText(t.name, { x: x + 0.12, y: y + 2.9, w: 2.76, h: 0.3, fontSize: 11, bold: true, color: C.navy, fontFace:"Calibri" });
    s.addText(t.city, { x: x + 0.12, y: y + 3.2, w: 2.76, h: 0.28, fontSize: 10, color: C.teal, fontFace:"Calibri" });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – CAMP DETAILS AT A GLANCE
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.white }, line:{type:"none"} });
  accentLine(s);
  sectionHeader(s, "Camp Details at a Glance");

  const details = [
    { icon: "📅", label: "Date",       value: "[Insert Date]" },
    { icon: "⏰", label: "Timings",    value: "9:00 AM – 4:00 PM" },
    { icon: "📍", label: "Venue",      value: "OPD Hall, XYZ Hospital\n[Full Address]" },
    { icon: "🆓", label: "Fees",       value: "Consultation: FREE\nInvestigations: FREE (selected)" },
    { icon: "📋", label: "What to Bring", value: "Previous reports / prescriptions\nAadhaar card (for registration)" },
    { icon: "📞", label: "Helpline",   value: "1800-XXX-XXXX\ninfo@xyzhospital.com" },
  ];

  details.forEach((d, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.2 + col * 3.27;
    const y = 1.1 + row * 2.1;

    s.addShape(pres.ShapeType.rect, { x, y, w: 3.0, h: 1.85, fill:{ color: C.offwhite }, line:{ color: C.teal, pt: 1.3 }, rectRadius: 0.09,
      shadow: { type:"outer", color:"AACCDD", blur:4, offset:2, angle:45, opacity:0.25 } });
    s.addText(d.icon, { x: x + 0.1, y: y + 0.1, w: 0.55, h: 0.55, fontSize: 22 });
    s.addText(d.label, { x: x + 0.68, y: y + 0.12, w: 2.2, h: 0.38, fontSize: 12, bold: true, color: C.navy, fontFace:"Calibri" });
    s.addText(d.value, { x: x + 0.12, y: y + 0.62, w: 2.76, h: 1.1, fontSize: 11, color: C.darktext, fontFace:"Calibri", wrap: true });
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – REGISTER / CALL TO ACTION
// ══════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{type:"none"} });

  // decorative blobs
  s.addShape(pres.ShapeType.ellipse, { x:6.8, y:-0.8, w:5, h:5, fill:{ color: C.teal, transparency:65 }, line:{type:"none"} });
  s.addShape(pres.ShapeType.ellipse, { x:-1.5, y:3.5, w:4, h:4, fill:{ color: C.aqua, transparency:78 }, line:{type:"none"} });

  s.addText("Take the First Step\nTowards Better Health!", {
    x: 0.5, y: 0.5, w: 9, h: 1.5,
    fontSize: 32, bold: true, color: C.white,
    fontFace: "Calibri", lineSpacingMultiple: 1.2,
  });

  s.addText("Join us for a FREE General Surgery Screening Camp.\nNo charges. No appointment. Just your good health.", {
    x: 0.5, y: 2.1, w: 9, h: 0.9,
    fontSize: 15, italic: true, color: C.lightgrey,
    fontFace: "Calibri", lineSpacingMultiple: 1.3,
  });

  // CTA buttons row
  const ctas = [
    { label: "📞 Call: 1800-XXX-XXXX", bg: C.amber },
    { label: "🌐 www.xyzhospital.com", bg: C.teal },
    { label: "📧 info@xyzhospital.com", bg: C.aqua },
  ];
  ctas.forEach((c, i) => {
    const x = 0.5 + i * 3.15;
    s.addShape(pres.ShapeType.rect, { x, y: 3.2, w: 2.9, h: 0.62, fill:{ color: c.bg }, line:{type:"none"}, rectRadius: 0.31 });
    s.addText(c.label, { x, y: 3.2, w: 2.9, h: 0.62, fontSize: 12, bold: true, color: C.navy, align:"center", valign:"middle", fontFace:"Calibri" });
  });

  s.addText("Spread the word — share this with your family and neighbours!", {
    x: 0.5, y: 4.1, w: 9, h: 0.45,
    fontSize: 13, bold: true, color: C.amber,
    align: "center", fontFace: "Calibri",
  });

  s.addText("XYZ Hospital  |  [Full Address]  |  Helpline: 1800-XXX-XXXX", {
    x: 0.5, y: 4.65, w: 9, h: 0.35,
    fontSize: 10, color: C.lightgrey,
    align: "center", fontFace: "Calibri",
  });

  bottomBar(s, "XYZ Hospital  |  General Surgery Screening Camp");
}

// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/surgical-camp-pptx/Surgical_Screening_Camp_XYZ_Hospital.pptx" })
  .then(() => console.log("✅ PPTX created successfully."))
  .catch(err => { console.error("❌ Error:", err); process.exit(1); });
Running Command

cd /home/daytona/workspace/surgical-camp-pptx && node create_pptx.js

Running Command

ls -lh /home/daytona/workspace/surgical-camp-pptx/

Your slideshow is ready! Download it here:

Surgical Screening Camp XYZ Hospital

Presentation · PPTX


What's Inside (10 Slides)

#SlideDesign
1Title SlideDark navy background, amber "FREE Camp" badge, date & venue pill buttons
2What Is a Screening Camp?4-card grid explaining the camp's purpose
3Why You Should AttendDark background with 6 numbered reasons
4Conditions We Screen For8-icon grid: hernia, gallstones, appendix, piles, cysts, thyroid, varicose veins, abdominal pain
5Who Should AttendSplit layout - teal panel + 6 audience cards
6Camp Day Process5-step timeline: Registration → Vitals → Consultation → Investigations → Report
7Meet Our Surgical Team4 doctor placeholders with avatar circles
8Patient Success Stories3 testimonial cards with quote styling
9Camp Details at a Glance6-card grid: Date, Timings, Venue, Fees, What to Bring, Helpline
10Call to ActionDark closing slide with 3 CTA buttons (Call / Web / Email)

What to customise before printing/presenting:
  • Replace [Date] and [Insert Date] with the actual camp date
  • Replace [Full Address] with your hospital address
  • Replace Dr. [Name] placeholders with real doctor names & qualifications
  • Update 1800-XXX-XXXX with your actual helpline number
  • Update www.xyzhospital.com and email with real contact details
This is a shared conversation. Sign in to Orris to start your own chat.