Make a ppt on indian medical graduate Title:-Indian Medical Graduate Made by Parveen Garg roll no 100 Also add these
Indian Medical Graduate MCI competency based curriculum MBBS objectives
mkdir -p /home/daytona/workspace/indian-medical-graduate && ls /home/daytona/wor…
~/indian-medical-graduate/create_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Indian Medical Graduate";
pres.author = "Parveen Garg";
// ─── THEME ───────────────────────────────────────────────────────────────────
const C = {
navy: "0D2B55", // dominant dark
teal: "1A7E8F", // accent
gold: "F4A724", // highlight / accent
white: "FFFFFF",
offwhite: "F0F4F8",
lightBg: "E8F4F8",
dark: "1A1A2E",
muted: "6B7A8D",
red: "C0392B",
};
const FONT = "Calibri";
// ─── HELPER FUNCTIONS ────────────────────────────────────────────────────────
function addSlideBackground(slide, dark = false) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: dark ? C.navy : C.white },
});
}
function addAccentBar(slide, color = C.teal, x = 0, y = 0, w = "100%", h = 0.06) {
slide.addShape(pres.ShapeType.rect, {
x, y, w, h,
fill: { color },
line: { color, width: 0 },
});
}
function addSectionCard(slide, x, y, w, h, bgColor, title, bullets, titleSize = 14) {
// Card background
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: bgColor },
line: { color: C.teal, width: 1.5 },
rectRadius: 0.1,
});
// Title
slide.addText(title, {
x: x + 0.12, y: y + 0.08, w: w - 0.24, h: 0.35,
fontSize: titleSize, bold: true, color: C.navy, fontFace: FONT,
margin: 0,
});
// Bullets
const bulletItems = bullets.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < bullets.length - 1, fontSize: 11, color: C.dark, fontFace: FONT },
}));
slide.addText(bulletItems, {
x: x + 0.12, y: y + 0.45, w: w - 0.24, h: h - 0.55,
valign: "top", margin: 0,
});
}
// ─── SLIDE 1 — TITLE SLIDE ───────────────────────────────────────────────────
{
const slide = pres.addSlide();
// Full dark background
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.navy },
});
// Decorative teal wave/bar at bottom
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 4.8, w: "100%", h: 0.825,
fill: { color: C.teal },
line: { color: C.teal, width: 0 },
});
// Gold accent bar at top
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: 0.12,
fill: { color: C.gold },
line: { color: C.gold, width: 0 },
});
// Caduceus / medical cross icon (decorative circle)
slide.addShape(pres.ShapeType.ellipse, {
x: 8.2, y: 0.4, w: 1.5, h: 1.5,
fill: { color: "1A4A6E" },
line: { color: C.teal, width: 2 },
});
slide.addText("✚", {
x: 8.2, y: 0.55, w: 1.5, h: 1.2,
fontSize: 40, color: C.gold, bold: true,
align: "center", valign: "middle", fontFace: FONT,
margin: 0,
});
// Main title
slide.addText("Indian Medical Graduate", {
x: 0.5, y: 1.1, w: 9, h: 1.3,
fontSize: 48, bold: true, color: C.white,
fontFace: FONT, align: "center", charSpacing: 2,
});
// Subtitle
slide.addText("Competency-Based Medical Education (CBME)", {
x: 0.5, y: 2.45, w: 9, h: 0.55,
fontSize: 20, color: C.gold, fontFace: FONT,
align: "center", italic: true,
});
// Divider line
slide.addShape(pres.ShapeType.line, {
x: 2, y: 3.1, w: 6, h: 0,
line: { color: C.teal, width: 1.5 },
});
// Author info
slide.addText("Made by: Parveen Garg | Roll No. 100", {
x: 0.5, y: 3.3, w: 9, h: 0.45,
fontSize: 16, color: C.offwhite, fontFace: FONT, align: "center",
});
// Date
slide.addText("National Medical Commission (NMC) | CBME Curriculum 2019", {
x: 0, y: 4.9, w: 10, h: 0.5,
fontSize: 12, color: C.white, fontFace: FONT, align: "center",
valign: "middle",
});
}
// ─── SLIDE 2 — WHO IS THE INDIAN MEDICAL GRADUATE? ──────────────────────────
{
const slide = pres.addSlide();
addSlideBackground(slide, false);
addAccentBar(slide, C.navy, 0, 0, "100%", 0.06);
addAccentBar(slide, C.teal, 0, 5.55, "100%", 0.075);
// Left color block
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0.06, w: 0.25, h: 5.49,
fill: { color: C.gold },
line: { color: C.gold, width: 0 },
});
slide.addText("Who is the Indian Medical Graduate?", {
x: 0.4, y: 0.15, w: 9.2, h: 0.6,
fontSize: 28, bold: true, color: C.navy, fontFace: FONT,
});
// Definition box
slide.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 0.85, w: 9.2, h: 1.1,
fill: { color: C.lightBg },
line: { color: C.teal, width: 1.5 },
rectRadius: 0.1,
});
slide.addText([
{ text: "Definition: ", options: { bold: true, color: C.navy, fontSize: 13 } },
{ text: "The Indian Medical Graduate (IMG) is a person who, on completion of the MBBS degree under the NMC (formerly MCI), is equipped to provide preventive, promotive, curative, rehabilitative, and palliative care at the primary and secondary levels.", options: { color: C.dark, fontSize: 13 } },
], {
x: 0.55, y: 0.9, w: 8.9, h: 1.0,
valign: "middle", fontFace: FONT,
});
// Four role cards
const roles = [
{ title: "Clinician", icon: "🩺", desc: "Diagnoses & treats common diseases; refers complex cases appropriately" },
{ title: "Leader & Team Member", icon: "👥", desc: "Leads health teams, manages resources & coordinates multidisciplinary care" },
{ title: "Communicator", icon: "💬", desc: "Communicates effectively with patients, families & healthcare professionals" },
{ title: "Life-long Learner", icon: "📚", desc: "Continues self-directed learning; updates knowledge with current evidence" },
];
const cardW = 2.1, cardH = 1.8, startX = 0.4, startY = 2.1, gap = 0.15;
roles.forEach((r, i) => {
const cx = startX + i * (cardW + gap);
slide.addShape(pres.ShapeType.roundRect, {
x: cx, y: startY, w: cardW, h: cardH,
fill: { color: i % 2 === 0 ? C.navy : C.teal },
line: { color: C.gold, width: 1 },
rectRadius: 0.12,
});
slide.addText(r.icon, {
x: cx, y: startY + 0.1, w: cardW, h: 0.55,
fontSize: 26, align: "center", valign: "middle", fontFace: FONT, margin: 0,
});
slide.addText(r.title, {
x: cx + 0.1, y: startY + 0.68, w: cardW - 0.2, h: 0.4,
fontSize: 13, bold: true, color: C.gold, align: "center", fontFace: FONT, margin: 0,
});
slide.addText(r.desc, {
x: cx + 0.1, y: startY + 1.1, w: cardW - 0.2, h: 0.65,
fontSize: 10, color: C.white, align: "center", fontFace: FONT,
margin: 0, wrap: true,
});
});
slide.addText("Slide 2", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 3 — COMPETENCIES OF IMG ─────────────────────────────────────────
{
const slide = pres.addSlide();
// Background gradient effect using two rects
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.offwhite },
});
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 0.5, h: "100%",
fill: { color: C.navy },
});
// Top bar
addAccentBar(slide, C.teal, 0, 0, "100%", 0.06);
slide.addText("Core Competencies of the Indian Medical Graduate", {
x: 0.65, y: 0.1, w: 9.0, h: 0.65,
fontSize: 26, bold: true, color: C.navy, fontFace: FONT,
});
addAccentBar(slide, C.gold, 0.65, 0.78, 6.5, 0.05);
const comps = [
{ num: "01", title: "Clinician", detail: "Manages common health problems; performs first aid, basic procedures; refers complex cases" },
{ num: "02", title: "Communicator", detail: "Communicates diagnosis, prognosis & treatment options clearly and empathetically" },
{ num: "03", title: "Professional", detail: "Adheres to medical ethics, medicolegal standards, and responsibilities of the profession" },
{ num: "04", title: "Life-long Learner", detail: "Uses self-directed and evidence-based learning; remains updated in medical knowledge" },
{ num: "05", title: "Leader & Manager", detail: "Leads healthcare teams, manages health systems, and uses resources efficiently" },
{ num: "06", title: "Advocate", detail: "Promotes health, prevents disease; acts as an agent for individual & community wellbeing" },
];
comps.forEach((c, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const cx = 0.65 + col * 4.55;
const cy = 0.95 + row * 1.45;
slide.addShape(pres.ShapeType.roundRect, {
x: cx, y: cy, w: 4.3, h: 1.3,
fill: { color: C.white },
line: { color: col === 0 ? C.teal : C.navy, width: 1.5 },
rectRadius: 0.1,
shadow: { type: "outer", blur: 4, offset: 2, angle: 45, color: "BBBBBB" },
});
// Number badge
slide.addShape(pres.ShapeType.ellipse, {
x: cx + 0.1, y: cy + 0.35, w: 0.45, h: 0.45,
fill: { color: col === 0 ? C.teal : C.navy },
});
slide.addText(c.num, {
x: cx + 0.1, y: cy + 0.35, w: 0.45, h: 0.45,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", fontFace: FONT, margin: 0,
});
slide.addText(c.title, {
x: cx + 0.65, y: cy + 0.08, w: 3.5, h: 0.38,
fontSize: 14, bold: true, color: C.navy, fontFace: FONT, margin: 0,
});
slide.addText(c.detail, {
x: cx + 0.65, y: cy + 0.48, w: 3.5, h: 0.75,
fontSize: 10.5, color: C.dark, fontFace: FONT, margin: 0, wrap: true,
});
});
slide.addText("Slide 3", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 4 — CBME CURRICULUM ──────────────────────────────────────────────
{
const slide = pres.addSlide();
addSlideBackground(slide, false);
// Header band
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: 0.9,
fill: { color: C.navy },
});
slide.addText("CBME Curriculum — Key Features", {
x: 0.3, y: 0.1, w: 9.4, h: 0.7,
fontSize: 28, bold: true, color: C.white, fontFace: FONT, valign: "middle",
});
addAccentBar(slide, C.gold, 0, 0.88, "100%", 0.05);
// Timeline / phase diagram
const phases = [
{ label: "Phase I\n(1st Year)", color: C.teal, detail: "Basic Sciences\nAnatomy, Physiology\nBiochemistry" },
{ label: "Phase II\n(2nd–3rd Year)", color: "1A5276", detail: "Para-clinical\nPathology, Micro-\nbiology, Pharma" },
{ label: "Phase III Part 1\n(3rd–4th Year)", color: "1F618D", detail: "Clinical Sciences\nMedicine, Surgery\nObs & Gynae" },
{ label: "Phase III Part 2\n(4th–5th Year)", color: C.navy, detail: "Integrated\nClinical Training\n& Internship" },
];
const pw = 2.1, ph = 2.8, sx = 0.35, sy = 1.1, gap = 0.1;
phases.forEach((p, i) => {
const cx = sx + i * (pw + gap);
slide.addShape(pres.ShapeType.rect, {
x: cx, y: sy, w: pw, h: ph,
fill: { color: p.color },
line: { color: C.gold, width: 1 },
});
slide.addText(p.label, {
x: cx + 0.05, y: sy + 0.1, w: pw - 0.1, h: 0.7,
fontSize: 12, bold: true, color: C.gold, align: "center",
fontFace: FONT, margin: 0,
});
slide.addShape(pres.ShapeType.line, {
x: cx + 0.2, y: sy + 0.85, w: pw - 0.4, h: 0,
line: { color: C.gold, width: 0.75 },
});
slide.addText(p.detail, {
x: cx + 0.1, y: sy + 0.95, w: pw - 0.2, h: 1.7,
fontSize: 11, color: C.white, align: "center",
fontFace: FONT, margin: 0,
});
// Arrow between boxes
if (i < phases.length - 1) {
slide.addShape(pres.ShapeType.rect, {
x: cx + pw, y: sy + ph / 2 - 0.03, w: gap, h: 0.06,
fill: { color: C.gold },
line: { color: C.gold, width: 0 },
});
}
});
// Duration note
slide.addText("Total Duration: 5½ years (4½ years academics + 1 year compulsory rotating internship)", {
x: 0.35, y: 4.1, w: 9.3, h: 0.4,
fontSize: 13, color: C.navy, bold: true, fontFace: FONT, align: "center",
});
// Feature points
const features = [
"▶ Outcome-based learning with defined competencies",
"▶ Integrated teaching across basic and clinical sciences",
"▶ Mandatory AETCOM module (Attitude, Ethics & Communication)",
"▶ Early Clinical Exposure (ECE) from Phase I onwards",
"▶ Formative & summative assessment throughout",
];
slide.addText(features.map((f, i) => ({
text: f, options: { breakLine: i < features.length - 1, fontSize: 11, color: C.dark, fontFace: FONT },
})), {
x: 0.4, y: 4.6, w: 9.2, h: 0.9,
valign: "middle",
});
slide.addText("Slide 4", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 5 — AETCOM MODULE ─────────────────────────────────────────────────
{
const slide = pres.addSlide();
// Dark left half
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 4.5, h: "100%",
fill: { color: C.navy },
});
slide.addShape(pres.ShapeType.rect, {
x: 4.5, y: 0, w: 5.5, h: "100%",
fill: { color: C.white },
});
// Gold top bar
addAccentBar(slide, C.gold, 0, 0, "100%", 0.07);
// Left side — AETCOM title
slide.addText("AETCOM\nModule", {
x: 0.25, y: 0.4, w: 4.0, h: 1.5,
fontSize: 34, bold: true, color: C.gold, fontFace: FONT,
align: "center", valign: "middle",
});
slide.addText("Attitude, Ethics &\nCommunication", {
x: 0.25, y: 1.9, w: 4.0, h: 0.8,
fontSize: 15, color: C.white, fontFace: FONT,
align: "center", italic: true,
});
const leftPoints = [
"Bioethics & law in medical practice",
"Clinical reasoning principles",
"System-based patient care",
"Empathy & human values",
"Effective communication skills",
"Understanding alternative medicine",
"Professional conduct & humane care",
];
leftPoints.forEach((pt, i) => {
slide.addShape(pres.ShapeType.rect, {
x: 0.2, y: 2.85 + i * 0.38, w: 0.22, h: 0.22,
fill: { color: C.gold },
line: { color: C.gold, width: 0 },
});
slide.addText(pt, {
x: 0.5, y: 2.82 + i * 0.38, w: 3.8, h: 0.28,
fontSize: 10.5, color: C.white, fontFace: FONT, margin: 0,
});
});
// Right side
slide.addText("Why AETCOM Matters", {
x: 4.7, y: 0.25, w: 5.0, h: 0.55,
fontSize: 22, bold: true, color: C.navy, fontFace: FONT,
});
addAccentBar(slide, C.teal, 4.7, 0.83, 4.5, 0.05);
const rightCards = [
{ icon: "⚖️", title: "Ethical Practice", body: "Ensures graduates respect patient autonomy, confidentiality, and consent in all clinical encounters" },
{ icon: "🗣️", title: "Communication", body: "Teaches breaking bad news, counselling, and cross-cultural communication" },
{ icon: "🤝", title: "Professionalism", body: "Builds accountability, integrity, and collegial relationships in healthcare teams" },
{ icon: "🌍", title: "Social Responsibility", body: "Orients students to community health, equity, and public health obligations" },
];
rightCards.forEach((rc, i) => {
const cy = 1.0 + i * 1.12;
slide.addShape(pres.ShapeType.roundRect, {
x: 4.65, y: cy, w: 5.1, h: 1.0,
fill: { color: i % 2 === 0 ? C.lightBg : C.offwhite },
line: { color: C.teal, width: 1 },
rectRadius: 0.08,
});
slide.addText(rc.icon, {
x: 4.7, y: cy + 0.22, w: 0.55, h: 0.55,
fontSize: 22, align: "center", fontFace: FONT, margin: 0,
});
slide.addText(rc.title, {
x: 5.3, y: cy + 0.08, w: 4.3, h: 0.35,
fontSize: 13, bold: true, color: C.navy, fontFace: FONT, margin: 0,
});
slide.addText(rc.body, {
x: 5.3, y: cy + 0.45, w: 4.3, h: 0.5,
fontSize: 10, color: C.dark, fontFace: FONT, margin: 0, wrap: true,
});
});
slide.addText("Slide 5", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 6 — ROLES & RESPONSIBILITIES ─────────────────────────────────────
{
const slide = pres.addSlide();
addSlideBackground(slide, false);
addAccentBar(slide, C.teal, 0, 0, "100%", 0.07);
addAccentBar(slide, C.navy, 0, 5.55, "100%", 0.075);
slide.addText("Roles & Responsibilities of an IMG", {
x: 0.3, y: 0.15, w: 9.4, h: 0.6,
fontSize: 27, bold: true, color: C.navy, fontFace: FONT,
});
// Central circle
slide.addShape(pres.ShapeType.ellipse, {
x: 3.8, y: 1.8, w: 2.4, h: 2.0,
fill: { color: C.navy },
line: { color: C.gold, width: 2 },
});
slide.addText("Indian\nMedical\nGraduate", {
x: 3.8, y: 2.0, w: 2.4, h: 1.6,
fontSize: 14, bold: true, color: C.gold, align: "center",
valign: "middle", fontFace: FONT,
});
// Surrounding cards (radial layout)
const items = [
{ x: 0.15, y: 1.0, label: "Primary Care\nProvider", color: C.teal },
{ x: 0.15, y: 3.3, label: "Emergency\nFirst Responder", color: "1F618D" },
{ x: 2.0, y: 0.3, label: "Public Health\nAdvocate", color: "148F77" },
{ x: 2.0, y: 4.55, label: "Medicolegal\nExpert", color: "6C3483" },
{ x: 6.5, y: 0.3, label: "Researcher &\nInnovator", color: "D35400" },
{ x: 6.5, y: 4.55, label: "Teacher &\nMentor", color: "1A5276" },
{ x: 7.7, y: 1.0, label: "Team Leader &\nManager", color: C.red },
{ x: 7.7, y: 3.3, label: "Community\nHealth Worker", color: "117A65" },
];
items.forEach((it) => {
slide.addShape(pres.ShapeType.roundRect, {
x: it.x, y: it.y, w: 1.9, h: 0.85,
fill: { color: it.color },
line: { color: C.gold, width: 1 },
rectRadius: 0.1,
});
slide.addText(it.label, {
x: it.x + 0.05, y: it.y + 0.05, w: 1.8, h: 0.75,
fontSize: 10.5, bold: true, color: C.white, align: "center",
valign: "middle", fontFace: FONT, margin: 0,
});
});
slide.addText("Slide 6", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 7 — CLINICAL SKILLS ───────────────────────────────────────────────
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.dark },
});
addAccentBar(slide, C.teal, 0, 0, "100%", 0.07);
slide.addText("Clinical Skills Expected of an IMG", {
x: 0.3, y: 0.12, w: 9.4, h: 0.65,
fontSize: 26, bold: true, color: C.white, fontFace: FONT,
});
addAccentBar(slide, C.gold, 0.3, 0.8, 7, 0.05);
const skills = [
{ cat: "History & Examination", items: ["Detailed history taking", "Complete physical examination", "Mental status examination"] },
{ cat: "Procedures", items: ["IV cannulation, catheterisation", "Suturing & wound care", "CPR & ACLS basics"] },
{ cat: "Diagnostics", items: ["ECG interpretation", "Arterial blood gas analysis", "X-ray & USG interpretation"] },
{ cat: "Prescribing", items: ["Rational drug prescribing", "Writing valid prescriptions", "Pharmacovigilance"] },
{ cat: "Communication", items: ["Breaking bad news", "Informed consent process", "Patient counselling"] },
{ cat: "Emergency Care", items: ["Triage & initial management", "Airway management", "Shock resuscitation"] },
];
const sw = 2.95, sh = 2.0, sx = 0.3, sy = 1.0;
skills.forEach((sk, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const cx = sx + col * (sw + 0.15);
const cy = sy + row * (sh + 0.15);
slide.addShape(pres.ShapeType.roundRect, {
x: cx, y: cy, w: sw, h: sh,
fill: { color: "1C2833" },
line: { color: C.teal, width: 1 },
rectRadius: 0.1,
});
addAccentBar(slide, i < 3 ? C.teal : C.gold, cx, cy, sw, 0.06);
slide.addText(sk.cat, {
x: cx + 0.1, y: cy + 0.1, w: sw - 0.2, h: 0.4,
fontSize: 12.5, bold: true, color: C.gold, fontFace: FONT, margin: 0,
});
sk.items.forEach((item, j) => {
slide.addShape(pres.ShapeType.rect, {
x: cx + 0.1, y: cy + 0.6 + j * 0.42, w: 0.06, h: 0.25,
fill: { color: C.teal },
});
slide.addText(item, {
x: cx + 0.23, y: cy + 0.58 + j * 0.42, w: sw - 0.35, h: 0.38,
fontSize: 10.5, color: C.white, fontFace: FONT, margin: 0,
});
});
});
slide.addText("Slide 7", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 8 — INTERNSHIP & TRAINING ────────────────────────────────────────
{
const slide = pres.addSlide();
addSlideBackground(slide, false);
addAccentBar(slide, C.gold, 0, 0, "100%", 0.07);
addAccentBar(slide, C.navy, 0, 5.55, "100%", 0.075);
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0.07, w: "100%", h: 0.85,
fill: { color: C.navy },
});
slide.addText("Compulsory Rotating Internship", {
x: 0.3, y: 0.12, w: 9.4, h: 0.65,
fontSize: 28, bold: true, color: C.white, fontFace: FONT, valign: "middle",
});
// Overview box
slide.addShape(pres.ShapeType.roundRect, {
x: 0.3, y: 1.05, w: 9.4, h: 0.75,
fill: { color: C.lightBg },
line: { color: C.teal, width: 1.5 },
rectRadius: 0.1,
});
slide.addText("Duration: 12 months of hands-on clinical rotation in various departments after passing the final MBBS examination. Required for permanent registration with NMC.", {
x: 0.5, y: 1.1, w: 9.1, h: 0.65,
fontSize: 12.5, color: C.dark, fontFace: FONT, valign: "middle",
});
const rotations = [
{ dept: "General Medicine", months: "2 months", color: C.teal },
{ dept: "General Surgery", months: "2 months", color: C.navy },
{ dept: "Obs & Gynae", months: "2 months", color: "8E44AD" },
{ dept: "Community Medicine", months: "2 months", color: "117A65" },
{ dept: "Paediatrics", months: "1 month", color: "D35400" },
{ dept: "Casualty / Emergency", months: "1 month", color: C.red },
{ dept: "Orthopaedics", months: "1 month", color: "1F618D" },
{ dept: "Anaesthesia / Eye / ENT", months: "1 month", color: "6C3483" },
];
const rw = 4.55, rh = 0.62, rx = 0.3;
rotations.forEach((r, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const cx = rx + col * (rw + 0.15);
const cy = 2.0 + row * (rh + 0.1);
slide.addShape(pres.ShapeType.rect, {
x: cx, y: cy, w: rw, h: rh,
fill: { color: r.color },
line: { color: C.gold, width: 0.75 },
});
slide.addText(r.dept, {
x: cx + 0.1, y: cy + 0.08, w: rw - 1.2, h: 0.45,
fontSize: 12, bold: true, color: C.white, fontFace: FONT, margin: 0,
});
slide.addText(r.months, {
x: cx + rw - 1.1, y: cy + 0.08, w: 1.0, h: 0.45,
fontSize: 11.5, color: C.gold, fontFace: FONT, align: "right", bold: true, margin: 0,
});
});
slide.addText("Slide 8", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 9 — COMMUNITY HEALTH & PUBLIC HEALTH ROLE ────────────────────────
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.offwhite },
});
addAccentBar(slide, C.teal, 0, 0, "100%", 0.07);
// Header
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0.07, w: "100%", h: 0.8,
fill: { color: C.teal },
});
slide.addText("Community Health & Public Health Role", {
x: 0.3, y: 0.12, w: 9.4, h: 0.65,
fontSize: 26, bold: true, color: C.white, fontFace: FONT, valign: "middle",
});
const phItems = [
{ icon: "🏥", title: "Primary Health Care", body: "Provides first-contact, accessible, and continuous care at PHCs and CHCs across rural and urban India" },
{ icon: "💉", title: "Immunization & Preventive Care", body: "Implements national vaccination programs; educates communities on disease prevention" },
{ icon: "🧬", title: "Epidemiology & Disease Surveillance", body: "Monitors and responds to disease outbreaks; participates in public health surveillance systems" },
{ icon: "🌱", title: "Health Promotion", body: "Conducts health education campaigns; promotes hygiene, nutrition, and maternal & child health" },
{ icon: "📊", title: "National Health Programs", body: "Implements NHM, TB (NTEP), Malaria, Leprosy, and other national disease control programs" },
{ icon: "♻️", title: "Rehabilitation", body: "Provides rehabilitative care and supports disability management at the community level" },
];
phItems.forEach((it, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const cx = 0.3 + col * 4.85;
const cy = 1.05 + row * 1.45;
slide.addShape(pres.ShapeType.roundRect, {
x: cx, y: cy, w: 4.6, h: 1.3,
fill: { color: C.white },
line: { color: C.teal, width: 1.5 },
rectRadius: 0.1,
shadow: { type: "outer", blur: 3, offset: 2, angle: 45, color: "CCCCCC" },
});
slide.addText(it.icon, {
x: cx + 0.05, y: cy + 0.38, w: 0.6, h: 0.55,
fontSize: 24, align: "center", fontFace: FONT, margin: 0,
});
slide.addText(it.title, {
x: cx + 0.7, y: cy + 0.07, w: 3.78, h: 0.38,
fontSize: 13, bold: true, color: C.navy, fontFace: FONT, margin: 0,
});
slide.addText(it.body, {
x: cx + 0.7, y: cy + 0.48, w: 3.78, h: 0.75,
fontSize: 10, color: C.dark, fontFace: FONT, margin: 0, wrap: true,
});
});
slide.addText("Slide 9", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 10 — CHALLENGES & FUTURE ─────────────────────────────────────────
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.navy },
});
addAccentBar(slide, C.gold, 0, 0, "100%", 0.08);
slide.addText("Challenges & Future Directions", {
x: 0.3, y: 0.15, w: 9.4, h: 0.65,
fontSize: 28, bold: true, color: C.white, fontFace: FONT,
});
addAccentBar(slide, C.teal, 0.3, 0.83, 8, 0.05);
// Two columns
const challenges = [
"Doctor-patient ratio still below WHO recommendation",
"Unequal distribution — urban vs. rural healthcare",
"Inadequate infrastructure in government hospitals",
"Faculty shortage in medical colleges",
"High patient load reducing quality of education",
"Need to adapt to digital health & telemedicine",
];
const future = [
"Strengthen CBME with regular curriculum updates",
"Increase seat capacity with quality assurance",
"Rural health postings & incentive programs",
"Digital literacy & AI in medical training",
"Collaborative research & global health partnerships",
"Focus on mental health & wellness of graduates",
];
// Challenges column
slide.addShape(pres.ShapeType.roundRect, {
x: 0.3, y: 1.0, w: 4.5, h: 4.3,
fill: { color: "1A2E4A" },
line: { color: C.red, width: 1.5 },
rectRadius: 0.1,
});
slide.addText("⚠️ Challenges", {
x: 0.45, y: 1.1, w: 4.2, h: 0.45,
fontSize: 16, bold: true, color: C.gold, fontFace: FONT,
});
challenges.forEach((ch, i) => {
slide.addShape(pres.ShapeType.rect, {
x: 0.45, y: 1.65 + i * 0.55, w: 0.18, h: 0.18,
fill: { color: C.red },
});
slide.addText(ch, {
x: 0.72, y: 1.62 + i * 0.55, w: 3.9, h: 0.45,
fontSize: 10.5, color: C.white, fontFace: FONT, margin: 0,
});
});
// Future column
slide.addShape(pres.ShapeType.roundRect, {
x: 5.2, y: 1.0, w: 4.5, h: 4.3,
fill: { color: "0E3B2E" },
line: { color: "2ECC71", width: 1.5 },
rectRadius: 0.1,
});
slide.addText("✅ Future Directions", {
x: 5.35, y: 1.1, w: 4.2, h: 0.45,
fontSize: 16, bold: true, color: C.gold, fontFace: FONT,
});
future.forEach((f, i) => {
slide.addShape(pres.ShapeType.rect, {
x: 5.35, y: 1.65 + i * 0.55, w: 0.18, h: 0.18,
fill: { color: "2ECC71" },
});
slide.addText(f, {
x: 5.62, y: 1.62 + i * 0.55, w: 3.9, h: 0.45,
fontSize: 10.5, color: C.white, fontFace: FONT, margin: 0,
});
});
slide.addText("Slide 10", { x: 9.6, y: 5.45, w: 0.3, h: 0.15, fontSize: 8, color: C.muted, fontFace: FONT });
}
// ─── SLIDE 11 — CONCLUSION / THANK YOU ──────────────────────────────────────
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.navy },
});
// Decorative arcs / shapes
slide.addShape(pres.ShapeType.ellipse, {
x: -1.5, y: -1.5, w: 5, h: 5,
fill: { color: "1A4A6E" },
line: { color: "1A4A6E", width: 0 },
});
slide.addShape(pres.ShapeType.ellipse, {
x: 7.5, y: 2.5, w: 4, h: 4,
fill: { color: "102030" },
line: { color: "102030", width: 0 },
});
addAccentBar(slide, C.gold, 0, 0, "100%", 0.07);
addAccentBar(slide, C.teal, 0, 5.55, "100%", 0.075);
slide.addText("Key Takeaways", {
x: 0.5, y: 0.3, w: 9, h: 0.6,
fontSize: 30, bold: true, color: C.gold, fontFace: FONT, align: "center",
});
const takeaways = [
"The IMG is equipped to serve at primary & secondary care levels across India",
"CBME ensures competency-driven, outcome-based medical education",
"Core roles: Clinician, Communicator, Professional, Learner, Leader, Advocate",
"AETCOM fosters ethics, empathy, and communication in future doctors",
"A 1-year rotating internship provides real-world clinical exposure",
"The IMG plays a pivotal role in achieving Universal Health Coverage (UHC)",
];
takeaways.forEach((t, i) => {
slide.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.05 + i * 0.66, w: 9.2, h: 0.58,
fill: { color: i % 2 === 0 ? "1A3A5C" : "132840" },
line: { color: i % 2 === 0 ? C.teal : C.gold, width: 1 },
rectRadius: 0.08,
});
slide.addText(`${i + 1}. ${t}`, {
x: 0.55, y: 1.08 + i * 0.66, w: 8.9, h: 0.52,
fontSize: 11.5, color: C.white, fontFace: FONT, valign: "middle", margin: 0,
});
});
// Thank you
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 5.05, w: "100%", h: 0.52,
fill: { color: C.teal },
});
slide.addText("Thank You | Made by Parveen Garg | Roll No. 100", {
x: 0, y: 5.08, w: 10, h: 0.45,
fontSize: 14, bold: true, color: C.white, fontFace: FONT, align: "center", valign: "middle",
});
}
// ─── WRITE FILE ──────────────────────────────────────────────────────────────
const outputPath = "/home/daytona/workspace/indian-medical-graduate/Indian_Medical_Graduate.pptx";
pres.writeFile({ fileName: outputPath }).then(() => {
console.log("✅ PPT created:", outputPath);
}).catch(err => {
console.error("❌ Error:", err);
process.exit(1);
});
~/indian-medical-graduate/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/indian-medical-graduate/create_ppt.js'
cat > /home/daytona/workspace/indian-medical-graduate/build_img_ppt.js << 'JSEOF…
cd /home/daytona/workspace/indian-medical-graduate && node build_img_ppt.js
Indian Medical Graduate
Presentation · PPTX
| # | Slide Title | Highlights |
|---|---|---|
| 1 | Title Slide | "Indian Medical Graduate" - Made by Parveen Garg, Roll No. 100 |
| 2 | Who is the IMG? | Definition + 8 role cards (Clinician, Communicator, Leader, Learner, etc.) |
| 3 | Core Competencies | 6 competency cards (01-06) with icons and descriptions |
| 4 | CBME Curriculum | 4-phase timeline + key features of the new curriculum |
| 5 | AETCOM Module | Attitude, Ethics & Communication - 7 points + 4 importance cards |
| 6 | Roles & Responsibilities | Radial diagram with 8 surrounding role cards |
| 7 | Clinical Skills | 6 skill category cards (History, Procedures, Diagnostics, Prescribing, Communication, Emergency) |
| 8 | Rotating Internship | 8 department rotations with duration (12 months total) |
| 9 | Community & Public Health | 6 public health role cards (PHC, Immunization, Surveillance, etc.) |
| 10 | Challenges & Future | Two-column layout - Challenges (red) vs Future Directions (green) |
| 11 | Conclusion / Thank You | 6 key takeaways + "Thank You - Parveen Garg, Roll No. 100" |