As a intern doctor make a presentation on specifically 3rd stage management of Labour with elaborate video of the 3rd stage management of labour and a very interesting thank you slide at the end.

Reading File
Reading File
Reading File
Finding Sources
Searching the Web

3rd stage of labour management active management AMTSL YouTube video

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"

Running Command

mkdir -p /home/daytona/workspace/third-stage-labour-ppt

Writing File

~/third-stage-labour-ppt/build.js

const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "Intern Doctor";
pres.title = "Management of the Third Stage of Labour";

// ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
const DARK_BLUE   = "0D2B55";  // dominant dark background
const MID_BLUE    = "1A4A8A";  // secondary panels
const ACCENT_TEAL = "00C2A0";  // accent / highlight
const ACCENT_GOLD = "F4C430";  // accent numbers / icons
const WHITE       = "FFFFFF";
const LIGHT_GRAY  = "E8F0F7";
const TEXT_DARK   = "1A1A2E";
const TEXT_LIGHT  = "CBD8E8";

// ─── HELPERS ─────────────────────────────────────────────────────────────────
function addDarkSlide(pres) {
  const slide = pres.addSlide();
  slide.background = { color: DARK_BLUE };
  return slide;
}
function addLightSlide(pres) {
  const slide = pres.addSlide();
  slide.background = { color: LIGHT_GRAY };
  return slide;
}
function accentBar(slide, color = ACCENT_TEAL) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: 10, h: 0.375, fill: { color } });
}
function sectionBadge(slide, text) {
  slide.addShape(pres.ShapeType.roundRect, {
    x: 0.3, y: 0.15, w: 2.2, h: 0.38, fill: { color: ACCENT_TEAL }, rectRadius: 0.08,
    line: { color: ACCENT_TEAL }
  });
  slide.addText(text, {
    x: 0.3, y: 0.15, w: 2.2, h: 0.38,
    fontSize: 9, bold: true, color: DARK_BLUE, align: "center", valign: "middle", margin: 0
  });
}
function slideNumber(slide, num) {
  slide.addText(`${num}`, {
    x: 9.4, y: 5.2, w: 0.5, h: 0.3,
    fontSize: 9, color: TEXT_LIGHT, align: "right"
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);

  // Left bold strip
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: ACCENT_TEAL } });

  // Decorative circles
  slide.addShape(pres.ShapeType.ellipse, { x: 7.8, y: -0.5, w: 3.5, h: 3.5, fill: { color: MID_BLUE }, line: { color: MID_BLUE } });
  slide.addShape(pres.ShapeType.ellipse, { x: 8.4, y: 3.5, w: 2.2, h: 2.2, fill: { color: "0A1E40" }, line: { color: "0A1E40" } });
  slide.addShape(pres.ShapeType.ellipse, { x: 6.5, y: 4.0, w: 1.2, h: 1.2, fill: { color: ACCENT_TEAL }, line: { color: ACCENT_TEAL } });

  // Subtitle tag
  slide.addShape(pres.ShapeType.roundRect, {
    x: 0.5, y: 0.55, w: 3.8, h: 0.42, fill: { color: ACCENT_TEAL }, rectRadius: 0.08, line: { color: ACCENT_TEAL }
  });
  slide.addText("OBSTETRICS | INTERN PRESENTATION", {
    x: 0.5, y: 0.55, w: 3.8, h: 0.42,
    fontSize: 9.5, bold: true, color: DARK_BLUE, align: "center", valign: "middle", margin: 0, charSpacing: 1.5
  });

  // Main title
  slide.addText("Management of the", {
    x: 0.45, y: 1.15, w: 7.5, h: 0.6,
    fontSize: 20, color: TEXT_LIGHT, bold: false
  });
  slide.addText("3rd Stage", {
    x: 0.45, y: 1.65, w: 7.5, h: 1.1,
    fontSize: 58, color: WHITE, bold: true, charSpacing: -1
  });
  slide.addText("of Labour", {
    x: 0.45, y: 2.65, w: 7.5, h: 0.75,
    fontSize: 34, color: ACCENT_TEAL, bold: true
  });

  // Divider
  slide.addShape(pres.ShapeType.line, { x: 0.45, y: 3.5, w: 5.5, h: 0, line: { color: ACCENT_GOLD, width: 2 } });

  // Sub-info
  slide.addText("From Birth of Baby to Delivery of Placenta & Membranes", {
    x: 0.45, y: 3.65, w: 7.2, h: 0.4,
    fontSize: 12, color: TEXT_LIGHT, italic: true
  });

  slide.addText("Presented by: Intern Doctor  |  Department of Obstetrics & Gynaecology", {
    x: 0.45, y: 5.0, w: 8, h: 0.35,
    fontSize: 9, color: TEXT_LIGHT
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / AGENDA
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);
  sectionBadge(slide, "AGENDA");
  slideNumber(slide, 2);

  slide.addText("What We Will Cover", {
    x: 0.4, y: 0.62, w: 9, h: 0.65,
    fontSize: 28, bold: true, color: WHITE
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 3.5, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  const items = [
    ["01", "Definition & Duration of the 3rd Stage"],
    ["02", "Signs of Placental Separation"],
    ["03", "Active Management of the 3rd Stage (AMTSL)"],
    ["04", "Uterotonic Drugs – Oxytocin & Alternatives"],
    ["05", "Controlled Cord Traction (CCT)"],
    ["06", "Uterine Massage"],
    ["07", "Complications – Postpartum Haemorrhage (PPH)"],
    ["08", "Video Summary – AMTSL in Practice"],
  ];

  items.forEach(([num, label], i) => {
    const row = Math.floor(i / 2);
    const col = i % 2;
    const x = col === 0 ? 0.4 : 5.2;
    const y = 1.5 + row * 0.88;

    slide.addShape(pres.ShapeType.rect, { x, y, w: 0.42, h: 0.52, fill: { color: ACCENT_TEAL }, line: { color: ACCENT_TEAL } });
    slide.addText(num, { x, y, w: 0.42, h: 0.52, fontSize: 10, bold: true, color: DARK_BLUE, align: "center", valign: "middle", margin: 0 });
    slide.addText(label, { x: x + 0.5, y: y + 0.04, w: 4.1, h: 0.45, fontSize: 11, color: WHITE, valign: "middle" });
  });

  accentBar(slide);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — DEFINITION
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addLightSlide(pres);
  sectionBadge(slide, "DEFINITION");
  slideNumber(slide, 3);

  slide.addText("What Is the 3rd Stage of Labour?", {
    x: 0.4, y: 0.62, w: 9, h: 0.65,
    fontSize: 26, bold: true, color: TEXT_DARK
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 4, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  // Big definition box
  slide.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.45, w: 9.2, h: 1.05, fill: { color: MID_BLUE }, line: { color: MID_BLUE } });
  slide.addText("The period from delivery of the baby to the complete expulsion of the placenta and membranes.", {
    x: 0.45, y: 1.48, w: 9.1, h: 0.99,
    fontSize: 14.5, color: WHITE, bold: true, italic: true, valign: "middle", align: "center"
  });

  // Duration cards
  const cards = [
    { label: "Normal Duration", val: "5 – 30 min", color: ACCENT_TEAL },
    { label: "Prolonged (3rd stage)", val: "> 30 min", color: "E05C00" },
    { label: "Rare — Pathological", val: "> 60 min", color: "B00020" },
  ];
  cards.forEach((c, i) => {
    const x = 0.4 + i * 3.1;
    slide.addShape(pres.ShapeType.roundRect, { x, y: 2.72, w: 2.9, h: 1.25, fill: { color: c.color }, rectRadius: 0.12, line: { color: c.color } });
    slide.addText(c.label, { x, y: 2.76, w: 2.9, h: 0.5, fontSize: 10.5, bold: true, color: WHITE, align: "center", valign: "middle" });
    slide.addText(c.val, { x, y: 3.2, w: 2.9, h: 0.7, fontSize: 18, bold: true, color: WHITE, align: "center", valign: "middle" });
  });

  // Two mechanisms
  slide.addText("Two Mechanisms of Placental Separation:", {
    x: 0.4, y: 4.1, w: 9, h: 0.35, fontSize: 12, bold: true, color: TEXT_DARK
  });
  slide.addText([
    { text: "Schultze mechanism", options: { bold: true, color: MID_BLUE } },
    { text: "  —  Foetal surface presents first (most common, ~80%)", options: { color: TEXT_DARK } },
  ], { x: 0.4, y: 4.45, w: 9, h: 0.35, fontSize: 11 });
  slide.addText([
    { text: "Matthews Duncan mechanism", options: { bold: true, color: "E05C00" } },
    { text: "  —  Maternal surface / edge first (~20%)", options: { color: TEXT_DARK } },
  ], { x: 0.4, y: 4.82, w: 9, h: 0.35, fontSize: 11 });

  accentBar(slide, MID_BLUE);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — SIGNS OF PLACENTAL SEPARATION
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);
  sectionBadge(slide, "ASSESSMENT");
  slideNumber(slide, 4);

  slide.addText("Signs of Placental Separation", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 28, bold: true, color: WHITE
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 4.5, h: 0, line: { color: ACCENT_GOLD, width: 2.5 } });

  const signs = [
    { icon: "🔴", title: "Gush of Blood", desc: "Sudden gush of blood as placenta separates from uterine wall" },
    { icon: "🔵", title: "Cord Lengthening", desc: "Umbilical cord protrudes further out of the vaginal introitus" },
    { icon: "🟢", title: "Uterine Globularity", desc: "Uterus becomes globular, firm, and contracted (fundal rise)" },
    { icon: "🟡", title: "Fundal Rise", desc: "Fundus rises to the level of the umbilicus as placenta enters lower segment" },
  ];

  signs.forEach((s, i) => {
    const x = i < 2 ? 0.4 : 5.2;
    const y = i < 2 ? 1.55 + i * 1.5 : 1.55 + (i - 2) * 1.5;
    slide.addShape(pres.ShapeType.roundRect, {
      x, y, w: 4.5, h: 1.3, fill: { color: MID_BLUE }, rectRadius: 0.15, line: { color: "1D5599" }
    });
    slide.addText(s.icon, { x: x + 0.15, y: y + 0.1, w: 0.65, h: 0.65, fontSize: 26, align: "center" });
    slide.addText(s.title, { x: x + 0.85, y: y + 0.1, w: 3.5, h: 0.42, fontSize: 13, bold: true, color: ACCENT_TEAL });
    slide.addText(s.desc, { x: x + 0.85, y: y + 0.52, w: 3.5, h: 0.65, fontSize: 10.5, color: TEXT_LIGHT, valign: "top" });
  });

  accentBar(slide, ACCENT_GOLD);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — ACTIVE MANAGEMENT (AMTSL) OVERVIEW
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addLightSlide(pres);
  sectionBadge(slide, "AMTSL");
  slideNumber(slide, 5);

  slide.addText("Active Management of the 3rd Stage (AMTSL)", {
    x: 0.4, y: 0.62, w: 9.2, h: 0.65, fontSize: 22, bold: true, color: TEXT_DARK
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 6, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  // Intro banner
  slide.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.42, w: 9.2, h: 0.78, fill: { color: DARK_BLUE }, line: { color: DARK_BLUE } });
  slide.addText("AMTSL reduces PPH risk by up to 60% and is the WHO-recommended standard of care", {
    x: 0.4, y: 1.42, w: 9.2, h: 0.78, fontSize: 13, color: WHITE, bold: true, align: "center", valign: "middle"
  });

  // 3 pillars
  const pillars = [
    { num: "1", title: "Uterotonic Drug", sub: "Oxytocin 10 IU IM\nWithin 1 min of birth", color: ACCENT_TEAL },
    { num: "2", title: "Controlled Cord\nTraction (CCT)", sub: "Brandt-Andrews method\nOnly after separation signs", color: MID_BLUE },
    { num: "3", title: "Uterine Massage", sub: "After placenta delivery\nBimanual if needed for atony", color: "6B4EAE" },
  ];

  pillars.forEach((p, i) => {
    const x = 0.4 + i * 3.1;
    // Top coloured number block
    slide.addShape(pres.ShapeType.rect, { x, y: 2.38, w: 2.85, h: 0.62, fill: { color: p.color }, line: { color: p.color } });
    slide.addText(`STEP ${p.num}`, { x, y: 2.38, w: 2.85, h: 0.62, fontSize: 14, bold: true, color: WHITE, align: "center", valign: "middle" });
    // Content block
    slide.addShape(pres.ShapeType.rect, { x, y: 3.0, w: 2.85, h: 1.62, fill: { color: WHITE }, line: { color: p.color, width: 1.5 } });
    slide.addText(p.title, { x: x + 0.1, y: 3.08, w: 2.65, h: 0.56, fontSize: 12.5, bold: true, color: p.color, align: "center" });
    slide.addShape(pres.ShapeType.line, { x: x + 0.2, y: 3.64, w: 2.45, h: 0, line: { color: LIGHT_GRAY, width: 1 } });
    slide.addText(p.sub, { x: x + 0.1, y: 3.7, w: 2.65, h: 0.85, fontSize: 10, color: TEXT_DARK, align: "center", valign: "middle" });
  });

  accentBar(slide);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — UTEROTONICS
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);
  sectionBadge(slide, "PHARMACOLOGY");
  slideNumber(slide, 6);

  slide.addText("Uterotonic Drugs", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 28, bold: true, color: WHITE
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 3, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  const drugs = [
    {
      name: "Oxytocin", color: ACCENT_TEAL, badge: "FIRST LINE",
      rows: [
        ["Dose", "10 IU IM  (or 20 IU in 1L NS IV infusion)"],
        ["Timing", "Within 1 min of delivery of anterior shoulder"],
        ["Action", "Stimulates myometrial contraction"],
        ["Note", "No absolute C/I; bolus IV can cause hypotension"],
      ]
    },
    {
      name: "Ergometrine / Methylergometrine", color: ACCENT_GOLD, badge: "SECOND LINE",
      rows: [
        ["Dose", "0.2 mg IM"],
        ["Action", "Sustained uterine contraction"],
        ["C/I", "Hypertension, pre-eclampsia, heart disease"],
        ["Note", "Never give IV — risk of severe HTN & CNS spasm"],
      ]
    },
    {
      name: "Carboprost (15-methyl PGF2α)", color: "E05C00", badge: "REFRACTORY PPH",
      rows: [
        ["Dose", "250 μg IM, repeat every 15-90 min (max 8 doses)"],
        ["Action", "Potent uterotonic prostaglandin"],
        ["C/I", "Asthma, cardiovascular disease"],
        ["Note", "Use if oxytocin + ergometrine fail"],
      ]
    },
  ];

  drugs.forEach((d, i) => {
    const x = i < 2 ? 0.35 + i * 4.85 : 0.35;
    const y = i < 2 ? 1.48 : 3.68;
    const w = i < 2 ? 4.6 : 9.25;

    slide.addShape(pres.ShapeType.rect, { x, y, w, h: i < 2 ? 1.98 : 1.65, fill: { color: MID_BLUE }, line: { color: d.color, width: 1.5 } });
    slide.addShape(pres.ShapeType.rect, { x, y, w: i < 2 ? 1.5 : 2.2, h: 0.38, fill: { color: d.color }, line: { color: d.color } });
    slide.addText(d.badge, { x, y, w: i < 2 ? 1.5 : 2.2, h: 0.38, fontSize: 8, bold: true, color: DARK_BLUE, align: "center", valign: "middle", margin: 0 });
    slide.addText(d.name, { x: x + (i < 2 ? 1.6 : 2.3), y, w: w - (i < 2 ? 1.65 : 2.35), h: 0.38, fontSize: 11, bold: true, color: WHITE, valign: "middle" });

    d.rows.forEach((r, ri) => {
      const ry = y + 0.45 + ri * 0.35;
      slide.addText(`${r[0]}:`, { x: x + 0.12, y: ry, w: i < 2 ? 0.7 : 1.0, h: 0.32, fontSize: 9, bold: true, color: d.color });
      slide.addText(r[1], { x: x + (i < 2 ? 0.85 : 1.15), y: ry, w: w - (i < 2 ? 1.0 : 1.3), h: 0.32, fontSize: 9, color: TEXT_LIGHT });
    });
  });

  accentBar(slide);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — CCT (Controlled Cord Traction)
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addLightSlide(pres);
  sectionBadge(slide, "PROCEDURE");
  slideNumber(slide, 7);

  slide.addText("Controlled Cord Traction (CCT)", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 27, bold: true, color: TEXT_DARK
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 5, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  slide.addText("Also known as the Brandt-Andrews Method", {
    x: 0.4, y: 1.35, w: 9, h: 0.38, fontSize: 11.5, color: MID_BLUE, italic: true
  });

  const steps = [
    "Wait for signs of placental separation before applying traction.",
    "Clamp the cord close to the perineum, hold it in one hand.",
    "Place the other hand suprapubically — guard the uterus in the cephalad direction (counter-traction).",
    "Apply steady, gentle downward traction on the cord during a contraction.",
    "If placenta does not descend in 30–40 s, STOP — wait for next contraction.",
    "As placenta reaches introitus, lift it upward and out. Twist gently to deliver membranes.",
    "NEVER apply forceful traction — risk of cord avulsion or uterine inversion.",
  ];

  steps.forEach((s, i) => {
    const y = 1.78 + i * 0.51;
    slide.addShape(pres.ShapeType.ellipse, { x: 0.38, y: y + 0.05, w: 0.36, h: 0.36,
      fill: { color: i === 6 ? "B00020" : ACCENT_TEAL }, line: { color: i === 6 ? "B00020" : ACCENT_TEAL } });
    slide.addText(`${i + 1}`, { x: 0.38, y: y + 0.05, w: 0.36, h: 0.36, fontSize: 10, bold: true, color: WHITE, align: "center", valign: "middle", margin: 0 });
    slide.addText(s, {
      x: 0.85, y, w: 8.75, h: 0.46, fontSize: i === 6 ? 11 : 10.5,
      color: i === 6 ? "B00020" : TEXT_DARK, bold: i === 6, valign: "middle"
    });
  });

  accentBar(slide);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — UTERINE MASSAGE & EXAMINATION
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);
  sectionBadge(slide, "POST-DELIVERY");
  slideNumber(slide, 8);

  slide.addText("Uterine Massage & Post-Delivery Checks", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 24, bold: true, color: WHITE
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 6, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  // Left panel - massage
  slide.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.45, w: 4.6, h: 3.55, fill: { color: MID_BLUE }, line: { color: ACCENT_TEAL, width: 1 } });
  slide.addText("🖐  Uterine Massage", { x: 0.45, y: 1.55, w: 4.4, h: 0.5, fontSize: 14, bold: true, color: ACCENT_TEAL });
  const massagePoints = [
    "Fundal massage routinely after placenta delivery",
    "Check uterus is 'well-contracted' (firm, midline, at umbilicus)",
    "Bimanual compression if uterine atony suspected",
    "Sustained massage for 15 sec; reassess frequently",
    "Avoid over-vigorous massage — can cause atony paradoxically",
  ];
  massagePoints.forEach((p, i) => {
    slide.addText(`• ${p}`, { x: 0.5, y: 2.12 + i * 0.55, w: 4.3, h: 0.5, fontSize: 10, color: TEXT_LIGHT });
  });

  // Right panel - checks
  slide.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.45, w: 4.5, h: 3.55, fill: { color: MID_BLUE }, line: { color: ACCENT_GOLD, width: 1 } });
  slide.addText("🔍  Post-Delivery Checks", { x: 5.25, y: 1.55, w: 4.3, h: 0.5, fontSize: 14, bold: true, color: ACCENT_GOLD });
  const checkPoints = [
    "Examine placenta for completeness",
    "Check cord: 2 arteries + 1 vein",
    "Inspect for accessory lobes or missing cotyledons",
    "Inspect cervix & vagina for lacerations",
    "Monitor vital signs & blood loss closely",
    "Document blood loss (normal: ≤ 500 mL vaginal delivery)",
  ];
  checkPoints.forEach((p, i) => {
    slide.addText(`• ${p}`, { x: 5.25, y: 2.12 + i * 0.48, w: 4.3, h: 0.44, fontSize: 10, color: TEXT_LIGHT });
  });

  accentBar(slide, ACCENT_GOLD);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — COMPLICATIONS / PPH
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addLightSlide(pres);
  sectionBadge(slide, "COMPLICATIONS");
  slideNumber(slide, 9);

  slide.addText("Complications: Postpartum Haemorrhage (PPH)", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 22, bold: true, color: TEXT_DARK
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 7, h: 0, line: { color: "B00020", width: 2.5 } });

  // Definition box
  slide.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.4, w: 9.2, h: 0.65, fill: { color: "B00020" }, line: { color: "B00020" } });
  slide.addText("Primary PPH: Blood loss ≥ 500 mL within 24 h (vaginal)  |  ≥ 1000 mL (caesarean)", {
    x: 0.4, y: 1.4, w: 9.2, h: 0.65, fontSize: 12, color: WHITE, bold: true, align: "center", valign: "middle"
  });

  // 4 Ts
  const ts = [
    { t: "TONE", val: "Uterine Atony", pct: "70%", desc: "Most common cause. Uterus fails to contract.", color: "B00020" },
    { t: "TRAUMA", val: "Lacerations / Inversion", pct: "20%", desc: "Cervical, vaginal, perineal tears; uterine rupture.", color: "E05C00" },
    { t: "TISSUE", val: "Retained Products", pct: "10%", desc: "Retained placenta, membranes, or blood clots.", color: MID_BLUE },
    { t: "THROMBIN", val: "Coagulopathy", pct: "1%", desc: "DIC, pre-existing clotting disorders.", color: "6B4EAE" },
  ];

  ts.forEach((item, i) => {
    const x = 0.35 + i * 2.38;
    slide.addShape(pres.ShapeType.rect, { x, y: 2.18, w: 2.2, h: 0.55, fill: { color: item.color }, line: { color: item.color } });
    slide.addText(`"T" – ${item.t}`, { x, y: 2.18, w: 2.2, h: 0.55, fontSize: 10, bold: true, color: WHITE, align: "center", valign: "middle" });
    slide.addShape(pres.ShapeType.rect, { x, y: 2.73, w: 2.2, h: 2.1, fill: { color: WHITE }, line: { color: item.color, width: 1.5 } });
    slide.addText(item.pct, { x, y: 2.78, w: 2.2, h: 0.55, fontSize: 22, bold: true, color: item.color, align: "center" });
    slide.addText(item.val, { x: x + 0.1, y: 3.32, w: 2.0, h: 0.42, fontSize: 10.5, bold: true, color: TEXT_DARK, align: "center" });
    slide.addText(item.desc, { x: x + 0.08, y: 3.74, w: 2.05, h: 0.98, fontSize: 9, color: "444466", align: "center", valign: "top" });
  });

  accentBar(slide, "B00020");
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — PPH Management Algorithm
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);
  sectionBadge(slide, "MANAGEMENT");
  slideNumber(slide, 10);

  slide.addText("PPH Management: Step-Up Approach", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 26, bold: true, color: WHITE
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 4.5, h: 0, line: { color: "B00020", width: 2.5 } });

  const steps = [
    { level: "STEP 1", text: "Call for help  |  2× large bore IV access  |  FBC, crossmatch, coagulation screen  |  Crystalloid resuscitation", color: MID_BLUE },
    { level: "STEP 2", text: "Uterine massage  |  Oxytocin 20-40 IU IV infusion  |  Ergometrine 0.2 mg IM  |  Bladder catheterisation", color: "5B8DB8" },
    { level: "STEP 3", text: "Carboprost 250 µg IM ± intrauterine  |  Misoprostol 800–1000 µg rectal  |  Tranexamic acid 1 g IV", color: "E05C00" },
    { level: "STEP 4", text: "Examine under anaesthesia  |  Repair lacerations  |  Bakri balloon / uterine packing  |  Blood transfusion", color: "C15500" },
    { level: "STEP 5", text: "Surgical: B-Lynch suture  |  Uterine artery ligation  |  Interventional radiology (embolisation)  |  Hysterectomy (last resort)", color: "B00020" },
  ];

  steps.forEach((s, i) => {
    const y = 1.5 + i * 0.76;
    slide.addShape(pres.ShapeType.rect, { x: 0.35, y, w: 1.3, h: 0.6, fill: { color: s.color }, line: { color: s.color } });
    slide.addText(s.level, { x: 0.35, y, w: 1.3, h: 0.6, fontSize: 10, bold: true, color: WHITE, align: "center", valign: "middle", margin: 0 });
    slide.addShape(pres.ShapeType.rect, { x: 1.7, y, w: 7.95, h: 0.6, fill: { color: "132D58" }, line: { color: s.color, width: 0.75 } });
    slide.addText(s.text, { x: 1.82, y: y + 0.04, w: 7.7, h: 0.52, fontSize: 9.5, color: TEXT_LIGHT, valign: "middle" });
    if (i < steps.length - 1) {
      slide.addText("▼", { x: 0.72, y: y + 0.6, w: 0.56, h: 0.15, fontSize: 9, color: s.color, align: "center" });
    }
  });

  accentBar(slide, "B00020");
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — VIDEO SLIDE (embedded YouTube link)
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addDarkSlide(pres);

  // Full background gradient effect with shapes
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "071628" }, line: { color: "071628" } });
  slide.addShape(pres.ShapeType.ellipse, { x: -1, y: -1, w: 5, h: 5, fill: { color: "0D2B55" }, line: { color: "0D2B55" } });
  slide.addShape(pres.ShapeType.ellipse, { x: 7, y: 2.5, w: 4, h: 4, fill: { color: "0A1E40" }, line: { color: "0A1E40" } });

  // Section badge
  slide.addShape(pres.ShapeType.roundRect, {
    x: 0.4, y: 0.2, w: 2.4, h: 0.38, fill: { color: "FF0000" }, rectRadius: 0.08, line: { color: "FF0000" }
  });
  slide.addText("▶  VIDEO RESOURCE", {
    x: 0.4, y: 0.2, w: 2.4, h: 0.38,
    fontSize: 9, bold: true, color: WHITE, align: "center", valign: "middle", margin: 0, charSpacing: 1
  });

  slide.addText("AMTSL in Action", {
    x: 0.4, y: 0.72, w: 9, h: 0.8,
    fontSize: 36, bold: true, color: WHITE
  });
  slide.addText("Active Management of the 3rd Stage of Labour", {
    x: 0.4, y: 1.5, w: 9, h: 0.45,
    fontSize: 16, color: ACCENT_TEAL, italic: true
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 2.0, w: 5, h: 0, line: { color: ACCENT_TEAL, width: 1.5 } });

  // YouTube thumbnail placeholder — clickable box
  slide.addShape(pres.ShapeType.roundRect, {
    x: 0.5, y: 2.15, w: 5.8, h: 3.1, fill: { color: "111111" }, rectRadius: 0.18,
    line: { color: "FF0000", width: 2.5 }
  });

  // Play button
  slide.addShape(pres.ShapeType.ellipse, {
    x: 2.7, y: 3.0, w: 1.4, h: 1.4, fill: { color: "FF0000" }, line: { color: "FF0000" }
  });
  slide.addText("▶", { x: 2.7, y: 3.0, w: 1.4, h: 1.4, fontSize: 30, color: WHITE, align: "center", valign: "middle", margin: 0 });

  slide.addText("CLICK TO WATCH", { x: 0.5, y: 4.85, w: 5.8, h: 0.38, fontSize: 10, bold: true, color: "FF0000", align: "center" });

  // Video details panel
  slide.addShape(pres.ShapeType.rect, { x: 6.55, y: 2.15, w: 3.1, h: 3.1, fill: { color: MID_BLUE }, line: { color: "1D5599" } });
  slide.addText("Video covers:", { x: 6.65, y: 2.22, w: 2.9, h: 0.38, fontSize: 11, bold: true, color: ACCENT_TEAL });
  const videoPoints = [
    "Oxytocin administration",
    "Early cord clamping",
    "Controlled cord traction",
    "Fundal massage",
    "Placenta examination",
    "PPH prevention tips",
  ];
  videoPoints.forEach((p, i) => {
    slide.addText(`✓  ${p}`, { x: 6.65, y: 2.65 + i * 0.41, w: 2.9, h: 0.38, fontSize: 9.5, color: TEXT_LIGHT });
  });

  // URL text
  slide.addText("YouTube: Active Management of Third Stage of Labour | AMTSL", {
    x: 0.5, y: 5.28, w: 9.0, h: 0.28, fontSize: 8.5, color: "8899BB", italic: true
  });

  // Hyperlink on the play button area — add text link
  slide.addText("https://www.youtube.com/watch?v=-K-jFftVJ-8", {
    x: 0.5, y: 5.08, w: 9.0, h: 0.22,
    fontSize: 8, color: ACCENT_TEAL,
    hyperlink: { url: "https://www.youtube.com/watch?v=-K-jFftVJ-8" }
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — SUMMARY TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = addLightSlide(pres);
  sectionBadge(slide, "SUMMARY");
  slideNumber(slide, 12);

  slide.addText("Key Points at a Glance", {
    x: 0.4, y: 0.62, w: 9, h: 0.65, fontSize: 27, bold: true, color: TEXT_DARK
  });
  slide.addShape(pres.ShapeType.line, { x: 0.4, y: 1.28, w: 4, h: 0, line: { color: ACCENT_TEAL, width: 2.5 } });

  const tableData = [
    [{ text: "Component", options: { bold: true } }, { text: "Key Details", options: { bold: true } }],
    ["3rd Stage Duration", "5–30 min (normal); >30 min = prolonged"],
    ["AMTSL Components", "Uterotonic + Controlled Cord Traction + Uterine Massage"],
    ["First-line Uterotonic", "Oxytocin 10 IU IM within 1 min of birth"],
    ["CCT Method", "Brandt-Andrews: counter-traction + gentle cord traction"],
    ["Normal Blood Loss", "≤ 500 mL (vaginal); ≤ 1000 mL (caesarean)"],
    ["PPH Definition", "≥ 500 mL within 24 h (vaginal delivery)"],
    ["4 Ts of PPH", "Tone (70%) | Trauma (20%) | Tissue (10%) | Thrombin (1%)"],
    ["Placenta Examination", "Completeness, cotyledons, cord vessels (2 arteries + 1 vein)"],
  ];

  slide.addTable(tableData, {
    x: 0.35, y: 1.45, w: 9.3, h: 3.8,
    colW: [2.8, 6.5],
    border: { type: "solid", color: "C8D8E8", pt: 0.5 },
    fill: WHITE,
    fontSize: 10,
    color: TEXT_DARK,
    align: "left",
    valign: "middle",
    rowH: 0.38,
  });

  accentBar(slide);
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — THANK YOU (fun & eye-catching)
// ═══════════════════════════════════════════════════════════════════════════════
{
  const slide = pres.addSlide();
  slide.background = { color: "040D1A" };

  // Decorative burst rings
  [
    { x: 4.2, y: 1.5, r: 4.5, col: "00C2A0", op: 15 },
    { x: 4.2, y: 1.5, r: 3.5, col: "1A4A8A", op: 20 },
    { x: 4.2, y: 1.5, r: 2.5, col: "0D2B55", op: 30 },
  ].forEach(c => {
    slide.addShape(pres.ShapeType.ellipse, {
      x: c.x - c.r / 2, y: c.y - c.r / 2, w: c.r, h: c.r,
      fill: { color: c.col, transparency: 100 - c.op },
      line: { color: c.col, width: 1.5 }
    });
  });

  // Confetti dots (scattered)
  const confetti = [
    { x: 0.3, y: 0.3, col: ACCENT_TEAL }, { x: 1.5, y: 0.6, col: ACCENT_GOLD },
    { x: 8.8, y: 0.5, col: "B00020"   }, { x: 9.2, y: 1.2, col: ACCENT_TEAL },
    { x: 0.8, y: 4.8, col: ACCENT_GOLD}, { x: 9.0, y: 4.6, col: ACCENT_TEAL },
    { x: 2.0, y: 0.2, col: "6B4EAE"   }, { x: 7.5, y: 5.1, col: ACCENT_GOLD },
    { x: 5.0, y: 0.1, col: "FF6384"   }, { x: 0.4, y: 2.8, col: ACCENT_TEAL },
  ];
  confetti.forEach(c => {
    slide.addShape(pres.ShapeType.ellipse, { x: c.x, y: c.y, w: 0.18, h: 0.18, fill: { color: c.col }, line: { color: c.col } });
  });

  // Main THANK YOU
  slide.addText("Thank", {
    x: 0.3, y: 0.65, w: 9.4, h: 1.2,
    fontSize: 70, bold: true, color: WHITE, align: "center", charSpacing: -2
  });
  slide.addText("You!", {
    x: 0.3, y: 1.75, w: 9.4, h: 1.3,
    fontSize: 80, bold: true, color: ACCENT_TEAL, align: "center", charSpacing: -2
  });

  // Fun subtitle
  slide.addText("🩺  A healthy placenta delivered is a life saved.  🩺", {
    x: 0.3, y: 3.05, w: 9.4, h: 0.52,
    fontSize: 14, color: ACCENT_GOLD, align: "center", italic: true, bold: true
  });

  // Divider line with dots
  slide.addShape(pres.ShapeType.line, { x: 1.5, y: 3.68, w: 7, h: 0, line: { color: ACCENT_TEAL, width: 1 } });

  // Key takeaway strip
  slide.addShape(pres.ShapeType.roundRect, {
    x: 1.0, y: 3.85, w: 8, h: 0.72, fill: { color: MID_BLUE }, rectRadius: 0.14, line: { color: ACCENT_TEAL, width: 1 }
  });
  slide.addText("Remember: AMTSL = Oxytocin + CCT + Uterine Massage — the 3-step shield against PPH", {
    x: 1.05, y: 3.87, w: 7.9, h: 0.68,
    fontSize: 11.5, color: WHITE, align: "center", valign: "middle", bold: true
  });

  // Name & department
  slide.addText("Presented by: Intern Doctor  |  Dept. of Obstetrics & Gynaecology", {
    x: 0.3, y: 4.72, w: 9.4, h: 0.3,
    fontSize: 9.5, color: TEXT_LIGHT, align: "center"
  });

  // References note
  slide.addText("Sources: Roberts & Hedges' Clinical Procedures in Emergency Medicine; Creasy & Resnik's Maternal-Fetal Medicine; WHO AMTSL Guidelines", {
    x: 0.3, y: 5.1, w: 9.4, h: 0.3,
    fontSize: 7.5, color: "4466AA", align: "center", italic: true
  });
}

// ─── WRITE FILE ──────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/third-stage-labour-ppt/3rd_Stage_Labour_Management.pptx" })
  .then(() => console.log("DONE: 3rd_Stage_Labour_Management.pptx written"))
  .catch(e => { console.error("ERROR:", e); process.exit(1); });
Running Command

cd /home/daytona/workspace/third-stage-labour-ppt && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/third-stage-labour-ppt/

Your presentation is ready! Here's a full breakdown of what's inside:

3rd Stage of Labour Management - Presentation

3rd Stage Labour Management

Presentation · PPTX


Slide-by-Slide Breakdown (13 slides, deep navy/teal colour scheme):

#SlideContent
1Title SlideBold typographic title, department info, decorative geometric shapes
2AgendaNumbered 8-point overview of all sections
3DefinitionWhat is the 3rd stage, duration cards (5-30 min normal, >30 min prolonged), Schultze vs Matthews Duncan mechanisms
4Signs of Placental Separation4 cards - gush of blood, cord lengthening, uterine globularity, fundal rise
5AMTSL Overview3-pillar layout: Uterotonic → CCT → Uterine Massage. WHO 60% PPH reduction stat highlighted
6Uterotonic DrugsFull drug table: Oxytocin (first-line), Ergometrine (second-line), Carboprost (refractory PPH) with doses, C/I, notes
7Controlled Cord Traction7-step Brandt-Andrews method with danger warning highlighted in red
8Uterine Massage & ChecksTwo-panel: massage technique + post-delivery placenta/cervix/laceration checks
9PPH Complications4 T's framework - Tone 70%, Trauma 20%, Tissue 10%, Thrombin 1%
10PPH Step-Up Management5-step escalating algorithm from IV access to hysterectomy
11VIDEO SLIDEClickable YouTube play button linking to AMTSL video (AAUN Obs & Gynae channel, 27K+ views), with checklist of what the video covers
12Summary Table9-row at-a-glance reference table
13Thank YouDark starfield background, confetti dots, giant "Thank You!" in teal, memorable quote - "A healthy placenta delivered is a life saved", AMTSL mnemonic reminder, source credits

Presentation

Asking for Preferences
Asking for Preferences
Finding Sources
Finding Sources
Searching the Web

3rd stage labour AMTSL clinical diagram oxytocin controlled cord traction medical illustration

Reading File
Reading File
Reading File
Running Command

node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://image.slidesharecdn.com/eventsinthethirdstageoflabour-221113045103-ab78a01c/75/EVENTS-IN-THE-THIRD-STAGE-OF-LABOUR-pptx-21-2048.jpg" \ "https://image.slidesharecdn.com/mngmntof3rdstage2-201012051426/75/Management-of-3rd-stage-of-labor-33-2048.jpg" \ "https://image.slidesharecdn.com/activemanagementofthirdstagelabor-200412105125/75/Active-management-of-third-stage-labor-7-2048.jpg" \ "https://i.ytimg.com/vi/-K-jFftVJ-8/maxresdefault.jpg" \ 2>&1 | head -5

Reading File
Reading File
This is a shared conversation. Sign in to Orris to start your own chat.