Radiation Oncology residents welcome plus orientation ppt
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace && ls -la /home/daytona/workspace/
mkdir -p /home/daytona/workspace/skims-radOnc-orientation
~/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));
cd /home/daytona/workspace/skims-radOnc-orientation && node build.js 2>&1
ls -lh /home/daytona/workspace/skims-radOnc-orientation/SKIMS_RadOnc_Residents_Orientation.pptx
SKIMS RadOnc Residents Orientation
Presentation · PPTX
| Section | Slides | Content |
|---|---|---|
| Cover | 1 | Title slide — SKIMS branding, Class of 2025 |
| Agenda | 1 | 5-section overview with numbered blocks |
| 01 — Welcome Address | 2 | HOD message (quote card) + About SKIMS & the department |
| 02 — Program Overview | 3 | Vision & mission · Programme structure · Assessment · Resident expectations |
| 03 — Weekly Schedule | 2 | Colour-coded 5-day timetable · On-call rota & leave policy |
| 04 — Resources & Facilities | 3 | LINAC/HDR/TPS equipment · Library & online resources · Key contacts |
| 05 — Faculty & Staff | 2 | Faculty portrait cards (5 roles) · Physics & allied health team |
| Closing | 1 | Welcome message + Q&A slide |
[Professor & Head] with actual faculty names, and update contact numbers/extensions as needed.