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

Running Command

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

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'
Reading File
Running Command

cat > /home/daytona/workspace/indian-medical-graduate/build_img_ppt.js << 'JSEOF…

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.