Radiation Oncology residents welcome plus orientation ppt

Asking for Preferences
Asking for Preferences
Reading File
Reading File
Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace && ls -la /home/daytona/workspace/

Running Command

mkdir -p /home/daytona/workspace/skims-radOnc-orientation

Writing File

~/skims-radOnc-orientation/build.js

const pptxgen = require("pptxgenjs");

// ── Color Palette ──────────────────────────────────────────────────────────────
const C = {
  navy:      "0D2B55",   // dominant background
  navyMid:   "163A6E",   // secondary navy
  navyLight: "1E4D8C",   // lighter navy for cards
  gold:      "C9A84C",   // accent gold
  goldLight: "E8C96A",   // light gold
  white:     "FFFFFF",
  offWhite:  "F4F7FB",
  lightGray: "D4DCE8",
  textGray:  "8FA0B5",
  teal:      "1A7FA8",   // supporting accent
};

const FONT = "Calibri";

let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title  = "Radiation Oncology Residents – Welcome & Orientation";
pres.author = "SKIMS Department of Radiation Oncology";

// ── Slide 1 – Title / Cover ────────────────────────────────────────────────────
{
  let sl = pres.addSlide();

  // Full dark navy background
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.navy }, line: { color: C.navy }
  });

  // Gold accent bar (left)
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 5.625,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // Decorative circle top-right
  sl.addShape(pres.shapes.OVAL, {
    x: 7.8, y: -1.2, w: 3.5, h: 3.5,
    fill: { color: C.navyLight, transparency: 60 }, line: { color: C.navyLight, transparency: 60 }
  });
  sl.addShape(pres.shapes.OVAL, {
    x: 8.3, y: -0.7, w: 2.5, h: 2.5,
    fill: { color: C.gold, transparency: 75 }, line: { color: C.gold, transparency: 75 }
  });

  // Radiation symbol-like decorative ring
  sl.addShape(pres.shapes.OVAL, {
    x: 8.5, y: 3.5, w: 2.2, h: 2.2,
    fill: { color: C.navyLight, transparency: 70 }, line: { color: C.gold, transparency: 50, width: 2 }
  });

  // Subtitle label
  sl.addText("SHER-I-KASHMIR INSTITUTE OF MEDICAL SCIENCES", {
    x: 0.45, y: 0.55, w: 9.2, h: 0.4,
    fontFace: FONT, fontSize: 11, color: C.gold, bold: true,
    charSpacing: 3, align: "left"
  });

  // Department
  sl.addText("Department of Radiation Oncology", {
    x: 0.45, y: 1.0, w: 9.2, h: 0.38,
    fontFace: FONT, fontSize: 13, color: C.lightGray, align: "left"
  });

  // Gold divider line
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.45, y: 1.5, w: 6, h: 0.04,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // Main title
  sl.addText("Welcome &\nOrientation", {
    x: 0.45, y: 1.65, w: 7.5, h: 1.8,
    fontFace: FONT, fontSize: 54, color: C.white, bold: true, align: "left"
  });

  // Subtitle
  sl.addText("Radiation Oncology Residency Programme — Class of 2025", {
    x: 0.45, y: 3.55, w: 8, h: 0.45,
    fontFace: FONT, fontSize: 16, color: C.goldLight, align: "left", italic: true
  });

  // Bottom bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525,
    fill: { color: C.navyMid }, line: { color: C.navyMid }
  });
  sl.addText("Soura, Srinagar, Jammu & Kashmir  •  skims.ac.in  •  Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

// ── Helper – Section Divider ───────────────────────────────────────────────────
function addDivider(pres, sectionNum, sectionTitle, subtitle) {
  let sl = pres.addSlide();

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.navy }, line: { color: C.navy }
  });

  // Gold full accent left
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 5.625,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // Large section number (background ghost)
  sl.addText(String(sectionNum).padStart(2, "0"), {
    x: 5.5, y: 0.5, w: 4.3, h: 4,
    fontFace: FONT, fontSize: 160, color: C.navyLight, bold: true, align: "right",
    transparency: 60
  });

  sl.addText("SECTION " + sectionNum, {
    x: 0.6, y: 1.5, w: 6, h: 0.45,
    fontFace: FONT, fontSize: 12, color: C.gold, bold: true, charSpacing: 4, align: "left"
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.6, y: 2.05, w: 4.5, h: 0.05,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  sl.addText(sectionTitle, {
    x: 0.6, y: 2.2, w: 8.5, h: 1.2,
    fontFace: FONT, fontSize: 42, color: C.white, bold: true, align: "left"
  });

  if (subtitle) {
    sl.addText(subtitle, {
      x: 0.6, y: 3.5, w: 8, h: 0.5,
      fontFace: FONT, fontSize: 15, color: C.lightGray, align: "left", italic: true
    });
  }

  // Bottom bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525,
    fill: { color: C.navyMid }, line: { color: C.navyMid }
  });
}

// ── Helper – Content Slide ─────────────────────────────────────────────────────
function addContentSlide(pres, title, bullets, iconChar) {
  let sl = pres.addSlide();

  // Off-white background
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.offWhite }, line: { color: C.offWhite }
  });

  // Navy header bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 1.1,
    fill: { color: C.navy }, line: { color: C.navy }
  });

  // Gold left accent in header
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 1.1,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // Slide title
  sl.addText(title, {
    x: 0.5, y: 0.12, w: 8.8, h: 0.85,
    fontFace: FONT, fontSize: 26, color: C.white, bold: true, valign: "middle"
  });

  // Gold underline accent
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 1.1, w: 10, h: 0.07,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // Bullet content
  let bulletArr = bullets.map((b, i) => ({
    text: b,
    options: { bullet: { code: "2022" }, breakLine: i < bullets.length - 1 }
  }));

  sl.addText(bulletArr, {
    x: 0.6, y: 1.35, w: 8.7, h: 4.0,
    fontFace: FONT, fontSize: 17, color: C.navy, valign: "top",
    paraSpaceAfter: 8, lineSpacingMultiple: 1.25
  });

  // Bottom navy bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525,
    fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addText("SKIMS — Department of Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });

  return sl;
}

// ── Helper – Two-Column Card Slide ─────────────────────────────────────────────
function addTwoColSlide(pres, title, leftTitle, leftItems, rightTitle, rightItems) {
  let sl = pres.addSlide();

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.offWhite }, line: { color: C.offWhite }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 1.1,
    fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 1.1,
    fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText(title, {
    x: 0.5, y: 0.12, w: 8.8, h: 0.85,
    fontFace: FONT, fontSize: 26, color: C.white, bold: true, valign: "middle"
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 1.1, w: 10, h: 0.07,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  // LEFT card
  sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x: 0.35, y: 1.35, w: 4.45, h: 3.6,
    fill: { color: C.white },
    shadow: { type: "outer", color: "000000", blur: 8, offset: 3, angle: 135, opacity: 0.1 },
    rectRadius: 0.1, line: { color: C.lightGray, width: 0.5 }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.35, y: 1.35, w: 4.45, h: 0.5,
    fill: { color: C.navyLight }, line: { color: C.navyLight }
  });
  sl.addText(leftTitle, {
    x: 0.5, y: 1.4, w: 4.15, h: 0.4,
    fontFace: FONT, fontSize: 13, color: C.white, bold: true
  });
  let lArr = leftItems.map((b, i) => ({
    text: b,
    options: { bullet: { code: "2022" }, breakLine: i < leftItems.length - 1 }
  }));
  sl.addText(lArr, {
    x: 0.5, y: 1.95, w: 4.15, h: 2.9,
    fontFace: FONT, fontSize: 14.5, color: C.navy, valign: "top", paraSpaceAfter: 7
  });

  // RIGHT card
  sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x: 5.2, y: 1.35, w: 4.45, h: 3.6,
    fill: { color: C.white },
    shadow: { type: "outer", color: "000000", blur: 8, offset: 3, angle: 135, opacity: 0.1 },
    rectRadius: 0.1, line: { color: C.lightGray, width: 0.5 }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 5.2, y: 1.35, w: 4.45, h: 0.5,
    fill: { color: C.teal }, line: { color: C.teal }
  });
  sl.addText(rightTitle, {
    x: 5.35, y: 1.4, w: 4.15, h: 0.4,
    fontFace: FONT, fontSize: 13, color: C.white, bold: true
  });
  let rArr = rightItems.map((b, i) => ({
    text: b,
    options: { bullet: { code: "2022" }, breakLine: i < rightItems.length - 1 }
  }));
  sl.addText(rArr, {
    x: 5.35, y: 1.95, w: 4.15, h: 2.9,
    fontFace: FONT, fontSize: 14.5, color: C.navy, valign: "top", paraSpaceAfter: 7
  });

  // Bottom bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525,
    fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addText("SKIMS — Department of Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

// ── Helper – Agenda Overview Slide ────────────────────────────────────────────
function addAgendaSlide(pres) {
  let sl = pres.addSlide();

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 5.625,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  sl.addText("TODAY'S AGENDA", {
    x: 0.5, y: 0.35, w: 9, h: 0.55,
    fontFace: FONT, fontSize: 13, color: C.gold, bold: true, charSpacing: 4
  });
  sl.addText("Orientation Overview", {
    x: 0.5, y: 0.9, w: 9, h: 0.65,
    fontFace: FONT, fontSize: 30, color: C.white, bold: true
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.5, y: 1.6, w: 9, h: 0.04,
    fill: { color: C.gold }, line: { color: C.gold }
  });

  const items = [
    ["01", "Welcome Address",          "Message from Department Head & Faculty"],
    ["02", "Program Overview",         "Vision, mission & structure of the residency"],
    ["03", "Weekly Schedule",          "Clinic, simulation, planning & teaching sessions"],
    ["04", "Resources & Facilities",   "Library, linacs, TPS, dosimetry lab & IT"],
    ["05", "Faculty & Staff",          "Meet your supervisors, coordinators & peers"],
  ];

  items.forEach(([num, head, sub], i) => {
    const yBase = 1.75 + i * 0.72;

    sl.addShape(pres.shapes.RECTANGLE, {
      x: 0.5, y: yBase, w: 0.65, h: 0.55,
      fill: { color: C.gold }, line: { color: C.gold }
    });
    sl.addText(num, {
      x: 0.5, y: yBase, w: 0.65, h: 0.55,
      fontFace: FONT, fontSize: 16, color: C.navy, bold: true, align: "center", valign: "middle"
    });
    sl.addText(head, {
      x: 1.35, y: yBase + 0.02, w: 4.5, h: 0.3,
      fontFace: FONT, fontSize: 16, color: C.white, bold: true
    });
    sl.addText(sub, {
      x: 1.35, y: yBase + 0.28, w: 8, h: 0.25,
      fontFace: FONT, fontSize: 12, color: C.textGray
    });
  });

  // Bottom bar
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525,
    fill: { color: C.navyMid }, line: { color: C.navyMid }
  });
}

// ── Slide 2 – Agenda ─────────────────────────────────────────────────────────
addAgendaSlide(pres);

// ══════════════════════════════════════════════════════════════════════════════
// SECTION 1 – WELCOME ADDRESS
// ══════════════════════════════════════════════════════════════════════════════
addDivider(pres, 1, "Welcome Address", "A message from the Department of Radiation Oncology");

// Slide: HOD Welcome
{
  let sl = pres.addSlide();
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 1.1, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText("Message from the Department Head", {
    x: 0.5, y: 0.12, w: 8.8, h: 0.85,
    fontFace: FONT, fontSize: 26, color: C.white, bold: true, valign: "middle"
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 1.1, w: 10, h: 0.07, fill: { color: C.gold }, line: { color: C.gold }
  });

  // Quote box
  sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x: 0.5, y: 1.35, w: 9, h: 2.5,
    fill: { color: C.white }, rectRadius: 0.12,
    shadow: { type: "outer", color: "000000", blur: 8, offset: 2, angle: 135, opacity: 0.10 },
    line: { color: C.lightGray, width: 0.5 }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.5, y: 1.35, w: 0.12, h: 2.5, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText(
    "Welcome to the Radiation Oncology Residency at SKIMS. You are joining a programme built on precision, compassion, and scientific rigour. Our department has been at the forefront of cancer care in the Kashmir Valley, and with each new resident, we strengthen our commitment to excellence in radiotherapy and patient-centred oncology.\n\nEmbrace every learning opportunity — in the clinic, at the treatment console, and in the literature. We are here to guide and support you.",
    {
      x: 0.8, y: 1.5, w: 8.5, h: 2.2,
      fontFace: FONT, fontSize: 14.5, color: C.navy, valign: "top",
      lineSpacingMultiple: 1.4
    }
  );

  sl.addText("— Professor & Head, Department of Radiation Oncology, SKIMS", {
    x: 0.5, y: 3.95, w: 9, h: 0.35,
    fontFace: FONT, fontSize: 12.5, color: C.teal, italic: true, align: "right"
  });
  sl.addText("Sher-i-Kashmir Institute of Medical Sciences | Soura, Srinagar", {
    x: 0.5, y: 4.35, w: 9, h: 0.3,
    fontFace: FONT, fontSize: 11, color: C.textGray, align: "right"
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addText("SKIMS — Department of Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

// Slide: About SKIMS
addContentSlide(pres, "About SKIMS & Our Department", [
  "Established in 1982 — premier tertiary care & research institute in J&K",
  "Department of Radiation Oncology offers comprehensive cancer radiotherapy services",
  "Equipped with linear accelerators, brachytherapy, and advanced treatment planning systems",
  "Affiliated with Sher-i-Kashmir Institute of Medical Sciences University",
  "Active collaboration with AIIMS, Tata Memorial Centre, and international bodies",
  "Residency programme approved by the National Medical Commission (NMC)",
  "A centre of excellence for head & neck, gynaecological, and breast cancer treatment"
]);

// ══════════════════════════════════════════════════════════════════════════════
// SECTION 2 – PROGRAM OVERVIEW
// ══════════════════════════════════════════════════════════════════════════════
addDivider(pres, 2, "Program Overview", "Vision, Mission & Structure of the Residency");

addContentSlide(pres, "Vision & Mission", [
  "VISION: To be the foremost centre for radiation oncology training in Northern India",
  "MISSION: Train residents to become competent, evidence-based, compassionate oncologists",
  "Core values: Patient safety · Academic integrity · Continuous improvement · Collaboration",
  "Training aligned with NMC competency-based medical education (CBME) framework",
  "Emphasis on clinical reasoning, physics knowledge, and hands-on technical proficiency",
  "Research culture: Every resident is expected to complete a thesis and present at conferences"
]);

addTwoColSlide(pres, "Residency Programme Structure",
  "Programme Milestones", [
    "Year 1 – Foundation & basic techniques",
    "Year 2 – Advanced radiotherapy & subspecialties",
    "Year 3 – Independent practice, research & exams",
    "Formative assessments every 6 months",
    "Exit NMC MD/DNB examination at Year 3"
  ],
  "Core Training Areas", [
    "Radical & palliative external beam radiotherapy",
    "3D-CRT, IMRT, VMAT, IGRT techniques",
    "Stereotactic radiosurgery (SRS/SBRT)",
    "Brachytherapy (intracavitary & interstitial)",
    "Systemic therapies & combined modality care"
  ]
);

addTwoColSlide(pres, "Assessment & Evaluation",
  "Formative Assessments", [
    "Mini-CEX & DOPS every quarter",
    "Case-based discussions (CBD) — monthly",
    "Multisource feedback (360°)",
    "Log-book review with supervisor",
    "Journal club presentations"
  ],
  "Summative Assessments", [
    "Annual theory & practical examinations",
    "Thesis submission & viva (Year 3)",
    "NMC exit examination",
    "Audit & quality improvement project",
    "Research publication encouraged"
  ]
);

addContentSlide(pres, "Resident Responsibilities & Expectations", [
  "Punctuality: Report by 8:00 AM; on-call duties as per rota",
  "Patient safety is paramount — escalate concerns immediately to senior/attending",
  "Maintain detailed patient log-book (DOPS, procedures, cases)",
  "Dress code: Professional attire with department ID badge at all times",
  "Maintain confidentiality of patient information (MCI/NMC ethics code)",
  "Complete all documentation in the hospital information system (HIS) accurately",
  "Attend all mandatory grand rounds, tumour boards, and CME sessions"
]);

// ══════════════════════════════════════════════════════════════════════════════
// SECTION 3 – WEEKLY SCHEDULE
// ══════════════════════════════════════════════════════════════════════════════
addDivider(pres, 3, "Weekly Schedule", "Clinic, simulation, planning sessions & teaching");

// Schedule slide using table-style layout
{
  let sl = pres.addSlide();
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 1.1, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText("Typical Weekly Timetable", {
    x: 0.5, y: 0.12, w: 8.8, h: 0.85,
    fontFace: FONT, fontSize: 26, color: C.white, bold: true, valign: "middle"
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 1.1, w: 10, h: 0.07, fill: { color: C.gold }, line: { color: C.gold }
  });

  const days = [
    { day: "Monday",    am: "OPD / New patient clinics",    pm: "Tumour Board / Treatment planning" },
    { day: "Tuesday",   am: "CT Simulation & contouring",   pm: "Treatment plan review & IGRT" },
    { day: "Wednesday", am: "Brachytherapy procedures",     pm: "Physics teaching / Dosimetry lab" },
    { day: "Thursday",  am: "Follow-up clinic & IGRT review", pm: "Journal club / Grand rounds" },
    { day: "Friday",    am: "OPD + Acute oncology consults", pm: "Research / Thesis work / Admin" },
  ];

  const rowH = 0.65;
  const yStart = 1.3;

  // Header row
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.35, y: yStart, w: 1.5, h: 0.45,
    fill: { color: C.navyLight }, line: { color: C.navyLight }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 1.88, y: yStart, w: 3.9, h: 0.45,
    fill: { color: C.navyLight }, line: { color: C.navyLight }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 5.81, y: yStart, w: 3.85, h: 0.45,
    fill: { color: C.navyLight }, line: { color: C.navyLight }
  });
  sl.addText("Day", { x: 0.35, y: yStart, w: 1.5, h: 0.45, fontFace: FONT, fontSize: 13, color: C.white, bold: true, align: "center", valign: "middle" });
  sl.addText("Morning (AM)", { x: 1.88, y: yStart, w: 3.9, h: 0.45, fontFace: FONT, fontSize: 13, color: C.white, bold: true, align: "center", valign: "middle" });
  sl.addText("Afternoon (PM)", { x: 5.81, y: yStart, w: 3.85, h: 0.45, fontFace: FONT, fontSize: 13, color: C.white, bold: true, align: "center", valign: "middle" });

  days.forEach((d, i) => {
    const y = yStart + 0.48 + i * rowH;
    const bg = i % 2 === 0 ? C.white : "EEF2F8";

    sl.addShape(pres.shapes.RECTANGLE, {
      x: 0.35, y, w: 1.5, h: rowH - 0.05,
      fill: { color: C.navyLight }, line: { color: C.navyLight }
    });
    sl.addShape(pres.shapes.RECTANGLE, {
      x: 1.88, y, w: 3.9, h: rowH - 0.05,
      fill: { color: bg }, line: { color: C.lightGray, width: 0.3 }
    });
    sl.addShape(pres.shapes.RECTANGLE, {
      x: 5.81, y, w: 3.85, h: rowH - 0.05,
      fill: { color: bg }, line: { color: C.lightGray, width: 0.3 }
    });

    sl.addText(d.day, {
      x: 0.35, y, w: 1.5, h: rowH - 0.05,
      fontFace: FONT, fontSize: 13, color: C.white, bold: true, align: "center", valign: "middle"
    });
    sl.addText(d.am, {
      x: 1.95, y, w: 3.75, h: rowH - 0.05,
      fontFace: FONT, fontSize: 12.5, color: C.navy, valign: "middle"
    });
    sl.addText(d.pm, {
      x: 5.88, y, w: 3.7, h: rowH - 0.05,
      fontFace: FONT, fontSize: 12.5, color: C.navy, valign: "middle"
    });
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addText("SKIMS — Department of Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

addTwoColSlide(pres, "On-Call & Duty Rota",
  "On-Call Duties", [
    "24-hour on-call rota — 1 resident per day",
    "Weekend on-call: Saturday & Sunday",
    "Overnight call covers acute oncology emergencies",
    "Direct supervision by registrar & consultant",
    "Post-call: Protected rest time (next morning off)",
    "Duty log to be submitted monthly to coordinator"
  ],
  "Working Hours & Leave", [
    "Regular hours: 8:00 AM – 4:00 PM (Mon–Fri)",
    "Annual leave: 30 days/year (NMC guidelines)",
    "Sick leave: As per SKIMS HR policy",
    "Study leave: 10 days/year for conferences/courses",
    "Leave requests via HoD approval (2 weeks notice)",
    "Emergency leave: Notify supervisor immediately"
  ]
);

// ══════════════════════════════════════════════════════════════════════════════
// SECTION 4 – RESOURCES & FACILITIES
// ══════════════════════════════════════════════════════════════════════════════
addDivider(pres, 4, "Resources & Facilities", "Equipment, library, IT systems & support");

addTwoColSlide(pres, "Treatment & Clinical Facilities",
  "Radiotherapy Equipment", [
    "Linear accelerators (LINAC × 2) — 6 & 15 MV photons",
    "Electronic portal imaging (EPID) & CBCT-based IGRT",
    "CT simulator with 4D respiratory gating",
    "High-dose-rate (HDR) brachytherapy unit",
    "Superficial/orthovoltage X-ray unit",
    "Dedicated radiotherapy physics lab"
  ],
  "Treatment Planning & IT", [
    "Eclipse TPS (Varian) — IMRT/VMAT planning",
    "ARIA oncology information system (OIS)",
    "DICOM network & digital image archive (PACS)",
    "Hospital Information System (HIS) — resident login",
    "Telemedicine portal for remote consultations",
    "Dedicated resident workstations in planning room"
  ]
);

addTwoColSlide(pres, "Learning Resources",
  "Library & Academic Resources", [
    "SKIMS central medical library (8 AM – 8 PM)",
    "Online access: PubMed, UpToDate, ClinicalKey",
    "ESTRO/ASTRO e-learning portals (department account)",
    "Textbooks: Principles & Practice of Rad Onc (Halperin)",
    "Khan's The Physics of Radiation Therapy",
    "Departmental slide library & past case archives"
  ],
  "Support & Wellness", [
    "Resident mentor assigned on Day 1",
    "Bimonthly resident feedback sessions with HoD",
    "Counselling & wellness services — SKIMS campus",
    "Resident common room with rest facilities",
    "Canteen & mess facilities on campus",
    "Accommodation available in SKIMS hostel"
  ]
);

addContentSlide(pres, "Key Contacts & Important Information", [
  "Department Office: 0194-2401013 (Ext. 2270) — Room 101, Radiation Oncology Block",
  "HoD Secretary: Available 9:00 AM – 3:00 PM, Monday to Friday",
  "Emergency / On-call consultant: Paged via hospital operator (0)",
  "Medical Physics: Physics Lab, Ground Floor — contact Chief Physicist",
  "HIS / IT helpdesk: Ext. 1100 | IT Block, SKIMS campus",
  "Library: First Floor, Academic Block — library@skims.ac.in",
  "Resident coordinator: Contact details provided in welcome pack"
]);

// ══════════════════════════════════════════════════════════════════════════════
// SECTION 5 – FACULTY & STAFF
// ══════════════════════════════════════════════════════════════════════════════
addDivider(pres, 5, "Faculty & Staff", "Meet your supervisors, medical physicists & team");

// Faculty cards slide
{
  let sl = pres.addSlide();
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 1.1, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText("Faculty — Department of Radiation Oncology", {
    x: 0.5, y: 0.12, w: 8.8, h: 0.85,
    fontFace: FONT, fontSize: 26, color: C.white, bold: true, valign: "middle"
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 1.1, w: 10, h: 0.07, fill: { color: C.gold }, line: { color: C.gold }
  });

  const faculty = [
    { name: "[Professor & Head]",       role: "Professor & HoD",         spec: "Head & Neck / CNS" },
    { name: "[Associate Professor]",    role: "Associate Professor",      spec: "Gynaecological Oncology" },
    { name: "[Assistant Professor I]",  role: "Assistant Professor",      spec: "Breast / GI Oncology" },
    { name: "[Assistant Professor II]", role: "Assistant Professor",      spec: "Thoracic / GU Oncology" },
    { name: "[Senior Resident]",        role: "Senior Resident",          spec: "General & Paediatric" },
  ];

  faculty.forEach((f, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.35 + col * 3.2;
    const y = 1.35 + row * 2.1;
    const w = 2.9;
    const h = 1.9;

    sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x, y, w, h,
      fill: { color: C.white }, rectRadius: 0.1,
      shadow: { type: "outer", color: "000000", blur: 7, offset: 2, angle: 135, opacity: 0.1 },
      line: { color: C.lightGray, width: 0.5 }
    });
    sl.addShape(pres.shapes.RECTANGLE, {
      x, y, w, h: 0.38,
      fill: { color: i < 2 ? C.navyLight : C.teal }, line: { color: i < 2 ? C.navyLight : C.teal }
    });
    sl.addText(f.role, {
      x: x + 0.1, y, w: w - 0.2, h: 0.38,
      fontFace: FONT, fontSize: 11.5, color: C.white, bold: true, valign: "middle", align: "center"
    });
    sl.addText(f.name, {
      x: x + 0.1, y: y + 0.45, w: w - 0.2, h: 0.55,
      fontFace: FONT, fontSize: 13.5, color: C.navy, bold: true, align: "center"
    });
    sl.addShape(pres.shapes.RECTANGLE, {
      x: x + 0.35, y: y + 1.05, w: w - 0.7, h: 0.03,
      fill: { color: C.lightGray }, line: { color: C.lightGray }
    });
    sl.addText("Subspecialty: " + f.spec, {
      x: x + 0.1, y: y + 1.12, w: w - 0.2, h: 0.55,
      fontFace: FONT, fontSize: 12, color: C.textGray, align: "center", italic: true
    });
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addText("SKIMS — Department of Radiation Oncology", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

addTwoColSlide(pres, "Medical Physics & Allied Health Team",
  "Medical Physics Staff", [
    "Chief Medical Physicist",
    "Senior Medical Physicists (×2)",
    "Junior Medical Physicists (×2)",
    "Responsibilities: QA, dosimetry, planning support",
    "Physics teaching: Tuesday & Thursday afternoons",
    "Thesis co-supervision available"
  ],
  "Allied Health & Support", [
    "Radiotherapy radiographers (RTTs) — 6 staff",
    "Brachytherapy nurses — 3 staff",
    "Oncology nurse coordinator",
    "Social worker & patient navigator",
    "Nutritionist / Dietitian (oncology)",
    "Administrative coordinator — resident welfare"
  ]
);

// ══════════════════════════════════════════════════════════════════════════════
// CLOSING SLIDE
// ══════════════════════════════════════════════════════════════════════════════
{
  let sl = pres.addSlide();
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy }
  });
  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.22, h: 5.625, fill: { color: C.gold }, line: { color: C.gold }
  });

  // Decorative circles
  sl.addShape(pres.shapes.OVAL, {
    x: -1, y: 3.5, w: 4, h: 4,
    fill: { color: C.navyLight, transparency: 70 }, line: { color: C.navyLight, transparency: 70 }
  });
  sl.addShape(pres.shapes.OVAL, {
    x: 7.5, y: -0.5, w: 3.5, h: 3.5,
    fill: { color: C.gold, transparency: 80 }, line: { color: C.gold, transparency: 80 }
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.5, y: 0.8, w: 6, h: 0.04, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText("Welcome to the Team", {
    x: 0.5, y: 0.95, w: 9, h: 1.4,
    fontFace: FONT, fontSize: 48, color: C.white, bold: true, align: "left"
  });
  sl.addText("We are proud to have you with us.\nYour journey in radiation oncology begins today.", {
    x: 0.5, y: 2.45, w: 8.5, h: 1.0,
    fontFace: FONT, fontSize: 18, color: C.lightGray, align: "left", lineSpacingMultiple: 1.4
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0.5, y: 3.6, w: 6, h: 0.04, fill: { color: C.gold }, line: { color: C.gold }
  });
  sl.addText("Questions & Discussion", {
    x: 0.5, y: 3.7, w: 9, h: 0.55,
    fontFace: FONT, fontSize: 24, color: C.goldLight, bold: true, align: "left"
  });
  sl.addText("Department of Radiation Oncology  •  SKIMS, Soura, Srinagar — J&K", {
    x: 0.5, y: 4.3, w: 9, h: 0.35,
    fontFace: FONT, fontSize: 13, color: C.textGray, align: "left"
  });

  sl.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.navyMid }, line: { color: C.navyMid }
  });
  sl.addText("Sher-i-Kashmir Institute of Medical Sciences  |  skims.ac.in", {
    x: 0.3, y: 5.12, w: 9.4, h: 0.4,
    fontFace: FONT, fontSize: 10, color: C.textGray, align: "center"
  });
}

// ── Write File ──────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/skims-radOnc-orientation/SKIMS_RadOnc_Residents_Orientation.pptx" })
  .then(() => console.log("✅ File written successfully."))
  .catch(e => console.error("❌ Error:", e));
Running Command

cd /home/daytona/workspace/skims-radOnc-orientation && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/skims-radOnc-orientation/SKIMS_RadOnc_Residents_Orientation.pptx

Your presentation is ready. Here's what was built:

SKIMS Radiation Oncology — Residents Welcome & Orientation

SKIMS RadOnc Residents Orientation

Presentation · PPTX

Design: Professional navy & gold theme, 16:9 widescreen — 18 slides total.

Slide Structure

SectionSlidesContent
Cover1Title slide — SKIMS branding, Class of 2025
Agenda15-section overview with numbered blocks
01 — Welcome Address2HOD message (quote card) + About SKIMS & the department
02 — Program Overview3Vision & mission · Programme structure · Assessment · Resident expectations
03 — Weekly Schedule2Colour-coded 5-day timetable · On-call rota & leave policy
04 — Resources & Facilities3LINAC/HDR/TPS equipment · Library & online resources · Key contacts
05 — Faculty & Staff2Faculty portrait cards (5 roles) · Physics & allied health team
Closing1Welcome message + Q&A slide

To personalise: Replace bracketed placeholders like [Professor & Head] with actual faculty names, and update contact numbers/extensions as needed.
This is a shared conversation. Sign in to Orris to start your own chat.