Make a ppt on indian medical graduate Title:-Indian Medical Graduate Made by Parveen Garg roll no 100 Also add these

Reading File
Reading File
Searching the Web

Indian Medical Graduate MCI competency based curriculum MBBS objectives

Now I have enough to create a comprehensive, well-designed PPT. Let me build it.
Running Command

mkdir -p /home/daytona/workspace/indian-medical-graduate && ls /home/daytona/workspace/indian-medical-graduate/

Writing File

~/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);
});
Editing File

~/indian-medical-graduate/create_ppt.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/indian-medical-graduate/create_ppt.js'
Let me read the existing file first, then overwrite it properly:
Reading File
The old file exists with different content. I'll write the full new script to a new filename and run it:
Running Command

cat > /home/daytona/workspace/indian-medical-graduate/build_img_ppt.js << 'JSEOF' const pptxgen = require("pptxgenjs"); const pres = new pptxgen(); pres.layout = "LAYOUT_16x9"; pres.title = "Indian Medical Graduate"; pres.author = "Parveen Garg"; const C = { navy: "0D2B55", teal: "1A7E8F", gold: "F4A724", white: "FFFFFF", offwhite: "F0F4F8", lightBg: "E8F4F8", dark: "1A1A2E", muted: "6B7A8D", red: "C0392B", }; const FONT = "Calibri"; function addBar(slide, color, x, y, w, h) { slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color }, line: { color, width: 0 } }); } // ── SLIDE 1 — TITLE ────────────────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.navy, 0, 0, "100%", "100%"); addBar(s, C.teal, 0, 4.8, "100%", 0.825); addBar(s, C.gold, 0, 0, "100%", 0.12); // decorative circle s.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 } }); s.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 }); s.addText("Indian Medical Graduate", { x: 0.5, y: 1.1, w: 9, h: 1.3, fontSize: 44, bold: true, color: C.white, fontFace: FONT, align: "center", charSpacing: 2 }); s.addText("Competency-Based Medical Education (CBME)", { x: 0.5, y: 2.5, w: 9, h: 0.55, fontSize: 20, color: C.gold, fontFace: FONT, align: "center", italic: true }); s.addShape(pres.ShapeType.line, { x: 2, y: 3.15, w: 6, h: 0, line: { color: C.teal, width: 1.5 } }); s.addText("Made by: Parveen Garg | Roll No. 100", { x: 0.5, y: 3.35, w: 9, h: 0.45, fontSize: 16, color: C.offwhite, fontFace: FONT, align: "center" }); s.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 IMG? ───────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.white, 0, 0, "100%", "100%"); addBar(s, C.navy, 0, 0, "100%", 0.06); addBar(s, C.teal, 0, 5.55, "100%", 0.075); addBar(s, C.gold, 0, 0.06, 0.25, 5.49); s.addText("Who is the Indian Medical Graduate?", { x: 0.4, y: 0.15, w: 9.2, h: 0.6, fontSize: 26, bold: true, color: C.navy, fontFace: FONT }); s.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 }); s.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 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 }); 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" }, ]; roles.forEach((r, i) => { const cx = 0.4 + i * 2.25; s.addShape(pres.ShapeType.roundRect, { x: cx, y: 2.1, w: 2.1, h: 1.85, fill: { color: i % 2 === 0 ? C.navy : C.teal }, line: { color: C.gold, width: 1 }, rectRadius: 0.12 }); s.addText(r.icon, { x: cx, y: 2.2, w: 2.1, h: 0.55, fontSize: 26, align: "center", valign: "middle", fontFace: FONT, margin: 0 }); s.addText(r.title, { x: cx + 0.1, y: 2.78, w: 1.9, h: 0.38, fontSize: 12, bold: true, color: C.gold, align: "center", fontFace: FONT, margin: 0 }); s.addText(r.desc, { x: cx + 0.1, y: 3.18, w: 1.9, h: 0.68, fontSize: 10, color: C.white, align: "center", fontFace: FONT, margin: 0, wrap: true }); }); // Row 2 of roles const roles2 = [ { title: "Professional", icon: "⚕️", desc: "Upholds medical ethics, medicolegal standards and professional responsibilities" }, { title: "Researcher", icon: "🔬", desc: "Applies basic research skills and evidence-based practice to patient care" }, { title: "Teacher", icon: "🎓", desc: "Educates patients, students, and community on health and disease prevention" }, { title: "Advocate", icon: "🏛️", desc: "Promotes individual & community health; advocates for equitable care" }, ]; roles2.forEach((r, i) => { const cx = 0.4 + i * 2.25; s.addShape(pres.ShapeType.roundRect, { x: cx, y: 4.1, w: 2.1, h: 1.35, fill: { color: i % 2 === 0 ? "1F618D" : "117A65" }, line: { color: C.gold, width: 1 }, rectRadius: 0.1 }); s.addText(r.icon + " " + r.title, { x: cx + 0.05, y: 4.15, w: 2.0, h: 0.38, fontSize: 11, bold: true, color: C.gold, align: "center", fontFace: FONT, margin: 0 }); s.addText(r.desc, { x: cx + 0.05, y: 4.55, w: 2.0, h: 0.82, fontSize: 9.5, color: C.white, align: "center", fontFace: FONT, margin: 0, wrap: true }); }); } // ── SLIDE 3 — CORE COMPETENCIES ────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.offwhite, 0, 0, "100%", "100%"); addBar(s, C.navy, 0, 0, 0.5, "100%"); addBar(s, C.teal, 0, 0, "100%", 0.06); s.addText("Core Competencies of the Indian Medical Graduate", { x: 0.65, y: 0.1, w: 9.0, h: 0.65, fontSize: 24, bold: true, color: C.navy, fontFace: FONT }); addBar(s, C.gold, 0.65, 0.78, 6.5, 0.05); const comps = [ { num: "01", title: "Clinician", detail: "Manages common health problems; performs basic procedures; refers complex cases appropriately" }, { 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, row = Math.floor(i / 2); const cx = 0.65 + col * 4.55, cy = 0.95 + row * 1.52; s.addShape(pres.ShapeType.roundRect, { x: cx, y: cy, w: 4.3, h: 1.38, fill: { color: C.white }, line: { color: col === 0 ? C.teal : C.navy, width: 1.5 }, rectRadius: 0.1 }); s.addShape(pres.ShapeType.ellipse, { x: cx + 0.1, y: cy + 0.38, w: 0.45, h: 0.45, fill: { color: col === 0 ? C.teal : C.navy } }); s.addText(c.num, { x: cx + 0.1, y: cy + 0.38, w: 0.45, h: 0.45, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", fontFace: FONT, margin: 0 }); s.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 }); s.addText(c.detail, { x: cx + 0.65, y: cy + 0.5, w: 3.5, h: 0.8, fontSize: 10.5, color: C.dark, fontFace: FONT, margin: 0, wrap: true }); }); } // ── SLIDE 4 — CBME CURRICULUM ───────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.white, 0, 0, "100%", "100%"); addBar(s, C.navy, 0, 0, "100%", 0.9); s.addText("CBME Curriculum — Key Features", { x: 0.3, y: 0.1, w: 9.4, h: 0.7, fontSize: 26, bold: true, color: C.white, fontFace: FONT, valign: "middle" }); addBar(s, C.gold, 0, 0.88, "100%", 0.05); 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, sy = 1.1; phases.forEach((p, i) => { const cx = 0.35 + i * (pw + 0.1); addBar(s, p.color, cx, sy, pw, 2.8); s.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 }); addBar(s, C.gold, cx + 0.2, sy + 0.85, pw - 0.4, 0.04); s.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 }); if (i < 3) addBar(s, C.gold, cx + pw, sy + 1.3, 0.1, 0.2); }); s.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" }); const features = [ { text: "▶ Outcome-based learning with defined competencies", options: { breakLine: true, fontSize: 11, color: C.dark, fontFace: FONT } }, { text: "▶ Integrated teaching across basic and clinical sciences", options: { breakLine: true, fontSize: 11, color: C.dark, fontFace: FONT } }, { text: "▶ Mandatory AETCOM module (Attitude, Ethics & Communication)", options: { breakLine: true, fontSize: 11, color: C.dark, fontFace: FONT } }, { text: "▶ Early Clinical Exposure (ECE) from Phase I onwards", options: { breakLine: true, fontSize: 11, color: C.dark, fontFace: FONT } }, { text: "▶ Formative & summative assessment throughout", options: { fontSize: 11, color: C.dark, fontFace: FONT } }, ]; s.addText(features, { x: 0.4, y: 4.6, w: 9.2, h: 0.9, valign: "middle" }); } // ── SLIDE 5 — AETCOM ────────────────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.navy, 0, 0, 4.5, "100%"); addBar(s, C.white, 4.5, 0, 5.5, "100%"); addBar(s, C.gold, 0, 0, "100%", 0.07); s.addText("AETCOM\nModule", { x: 0.25, y: 0.4, w: 4.0, h: 1.5, fontSize: 32, bold: true, color: C.gold, fontFace: FONT, align: "center", valign: "middle" }); s.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) => { addBar(s, C.gold, 0.2, 2.85 + i * 0.38, 0.22, 0.22); s.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 }); }); s.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 }); addBar(s, 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; s.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 }); s.addText(rc.icon, { x: 4.7, y: cy + 0.22, w: 0.55, h: 0.55, fontSize: 22, align: "center", fontFace: FONT, margin: 0 }); s.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 }); s.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 }); }); s.addText("\"A doctor who lacks empathy lacks the most essential tool of medicine.\"", { x: 4.65, y: 5.5, w: 5.1, h: 0.55, fontSize: 10, italic: true, color: C.teal, fontFace: FONT, align: "center" }); } // ── SLIDE 6 — ROLES & RESPONSIBILITIES ─────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.white, 0, 0, "100%", "100%"); addBar(s, C.teal, 0, 0, "100%", 0.07); addBar(s, C.navy, 0, 5.55, "100%", 0.075); s.addText("Roles & Responsibilities of an IMG", { x: 0.3, y: 0.15, w: 9.4, h: 0.6, fontSize: 26, bold: true, color: C.navy, fontFace: FONT }); s.addShape(pres.ShapeType.ellipse, { x: 3.8, y: 1.85, w: 2.4, h: 2.0, fill: { color: C.navy }, line: { color: C.gold, width: 2 } }); s.addText("Indian\nMedical\nGraduate", { x: 3.8, y: 2.05, w: 2.4, h: 1.6, fontSize: 13, bold: true, color: C.gold, align: "center", valign: "middle", fontFace: FONT }); 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) => { s.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 }); s.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 7 — CLINICAL SKILLS ───────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.dark, 0, 0, "100%", "100%"); addBar(s, C.teal, 0, 0, "100%", 0.07); s.addText("Clinical Skills Expected of an IMG", { x: 0.3, y: 0.12, w: 9.4, h: 0.65, fontSize: 24, bold: true, color: C.white, fontFace: FONT }); addBar(s, 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: "Clinical 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: "Rational 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"] }, ]; skills.forEach((sk, i) => { const col = i % 3, row = Math.floor(i / 3); const cx = 0.3 + col * 3.1, cy = 1.0 + row * 2.15; s.addShape(pres.ShapeType.roundRect, { x: cx, y: cy, w: 2.95, h: 2.0, fill: { color: "1C2833" }, line: { color: C.teal, width: 1 }, rectRadius: 0.1 }); addBar(s, i < 3 ? C.teal : C.gold, cx, cy, 2.95, 0.06); s.addText(sk.cat, { x: cx + 0.1, y: cy + 0.1, w: 2.75, h: 0.4, fontSize: 12.5, bold: true, color: C.gold, fontFace: FONT, margin: 0 }); sk.items.forEach((item, j) => { addBar(s, C.teal, cx + 0.1, cy + 0.62 + j * 0.42, 0.06, 0.25); s.addText(item, { x: cx + 0.23, y: cy + 0.6 + j * 0.42, w: 2.6, h: 0.38, fontSize: 10.5, color: C.white, fontFace: FONT, margin: 0 }); }); }); } // ── SLIDE 8 — INTERNSHIP ────────────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.white, 0, 0, "100%", "100%"); addBar(s, C.gold, 0, 0, "100%", 0.07); addBar(s, C.navy, 0, 0.07, "100%", 0.85); s.addText("Compulsory Rotating Internship", { x: 0.3, y: 0.12, w: 9.4, h: 0.65, fontSize: 26, bold: true, color: C.white, fontFace: FONT, valign: "middle" }); s.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 }); s.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 & Gynaecology", 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" }, ]; rotations.forEach((r, i) => { const col = i % 2, row = Math.floor(i / 2); const cx = 0.3 + col * 4.7, cy = 2.0 + row * 0.72; addBar(s, r.color, cx, cy, 4.55, 0.62); s.addShape(pres.ShapeType.line, { x: cx, y: cy, w: 4.55, h: 0, line: { color: C.gold, width: 0.75 } }); s.addText(r.dept, { x: cx + 0.1, y: cy + 0.08, w: 3.2, h: 0.45, fontSize: 12, bold: true, color: C.white, fontFace: FONT, margin: 0 }); s.addText(r.months, { x: cx + 3.4, y: cy + 0.08, w: 1.0, h: 0.45, fontSize: 11.5, color: C.gold, fontFace: FONT, align: "right", bold: true, margin: 0 }); }); s.addText("Note: On completion of internship, the graduate is eligible for permanent registration with the State Medical Council.", { x: 0.3, y: 5.38, w: 9.4, h: 0.4, fontSize: 10.5, color: C.muted, fontFace: FONT, italic: true }); } // ── SLIDE 9 — COMMUNITY & PUBLIC HEALTH ────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.offwhite, 0, 0, "100%", "100%"); addBar(s, C.teal, 0, 0, "100%", 0.87); s.addText("Community Health & Public Health Role", { x: 0.3, y: 0.12, w: 9.4, h: 0.65, fontSize: 24, 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 & Prevention", body: "Implements national vaccination programs; educates communities on disease prevention measures" }, { icon: "🧬", title: "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, row = Math.floor(i / 2); const cx = 0.3 + col * 4.85, cy = 1.05 + row * 1.5; s.addShape(pres.ShapeType.roundRect, { x: cx, y: cy, w: 4.6, h: 1.35, fill: { color: C.white }, line: { color: C.teal, width: 1.5 }, rectRadius: 0.1 }); s.addText(it.icon, { x: cx + 0.05, y: cy + 0.4, w: 0.65, h: 0.55, fontSize: 26, align: "center", fontFace: FONT, margin: 0 }); s.addText(it.title, { x: cx + 0.75, y: cy + 0.08, w: 3.72, h: 0.38, fontSize: 13, bold: true, color: C.navy, fontFace: FONT, margin: 0 }); s.addText(it.body, { x: cx + 0.75, y: cy + 0.5, w: 3.72, h: 0.78, fontSize: 10, color: C.dark, fontFace: FONT, margin: 0, wrap: true }); }); } // ── SLIDE 10 — CHALLENGES & FUTURE ─────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.navy, 0, 0, "100%", "100%"); addBar(s, C.gold, 0, 0, "100%", 0.08); s.addText("Challenges & Future Directions", { x: 0.3, y: 0.15, w: 9.4, h: 0.65, fontSize: 26, bold: true, color: C.white, fontFace: FONT }); addBar(s, C.teal, 0.3, 0.83, 8, 0.05); s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.0, w: 4.5, h: 4.45, fill: { color: "1A2E4A" }, line: { color: C.red, width: 1.5 }, rectRadius: 0.1 }); s.addText("⚠️ Challenges", { x: 0.45, y: 1.1, w: 4.2, h: 0.45, fontSize: 16, bold: true, color: C.gold, fontFace: FONT }); const challenges = ["Doctor-patient ratio below WHO standard","Unequal distribution — urban vs. rural","Inadequate hospital infrastructure","Faculty shortage in medical colleges","High patient load reduces teaching quality","Need for digital health & telemedicine skills"]; challenges.forEach((ch, i) => { addBar(s, C.red, 0.45, 1.65 + i * 0.55, 0.18, 0.18); s.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 }); }); s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.0, w: 4.5, h: 4.45, fill: { color: "0E3B2E" }, line: { color: "2ECC71", width: 1.5 }, rectRadius: 0.1 }); s.addText("✅ Future Directions", { x: 5.35, y: 1.1, w: 4.2, h: 0.45, fontSize: 16, bold: true, color: C.gold, fontFace: FONT }); const future = ["Regular CBME curriculum updates","Increase seats with quality assurance","Rural health postings & incentives","AI & digital literacy in training","Global health research partnerships","Mental health & wellness for graduates"]; future.forEach((f, i) => { addBar(s, "2ECC71", 5.35, 1.65 + i * 0.55, 0.18, 0.18); s.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 11 — CONCLUSION ───────────────────────────────────────────────────── { const s = pres.addSlide(); addBar(s, C.navy, 0, 0, "100%", "100%"); s.addShape(pres.ShapeType.ellipse, { x: -1.5, y: -1.5, w: 5, h: 5, fill: { color: "1A4A6E" }, line: { color: "1A4A6E", width: 0 } }); s.addShape(pres.ShapeType.ellipse, { x: 7.5, y: 2.5, w: 4, h: 4, fill: { color: "102030" }, line: { color: "102030", width: 0 } }); addBar(s, C.gold, 0, 0, "100%", 0.07); addBar(s, C.teal, 0, 5.55, "100%", 0.075); s.addText("Key Takeaways", { x: 0.5, y: 0.3, w: 9, h: 0.6, fontSize: 28, 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) => { s.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 }); s.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 }); }); addBar(s, C.teal, 0, 5.05, "100%", 0.52); s.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 ───────────────────────────────────────────────────────────────────── const out = "/home/daytona/workspace/indian-medical-graduate/Indian_Medical_Graduate.pptx"; pres.writeFile({ fileName: out }).then(() => { console.log("SUCCESS:", out); }).catch(e => { console.error(e); process.exit(1); }); JSEOF echo "Script written"

Running Command

cd /home/daytona/workspace/indian-medical-graduate && node build_img_ppt.js

Your presentation is ready! Here's the download link:

Indian Medical Graduate

Presentation · PPTX


Here's what's included across the 11 slides:
#Slide TitleHighlights
1Title Slide"Indian Medical Graduate" - Made by Parveen Garg, Roll No. 100
2Who is the IMG?Definition + 8 role cards (Clinician, Communicator, Leader, Learner, etc.)
3Core Competencies6 competency cards (01-06) with icons and descriptions
4CBME Curriculum4-phase timeline + key features of the new curriculum
5AETCOM ModuleAttitude, Ethics & Communication - 7 points + 4 importance cards
6Roles & ResponsibilitiesRadial diagram with 8 surrounding role cards
7Clinical Skills6 skill category cards (History, Procedures, Diagnostics, Prescribing, Communication, Emergency)
8Rotating Internship8 department rotations with duration (12 months total)
9Community & Public Health6 public health role cards (PHC, Immunization, Surveillance, etc.)
10Challenges & FutureTwo-column layout - Challenges (red) vs Future Directions (green)
11Conclusion / Thank You6 key takeaways + "Thank You - Parveen Garg, Roll No. 100"
Design: Navy blue dominant theme with teal and gold accents, consistent with a professional medical/academic style.
This is a shared conversation. Sign in to Orris to start your own chat.