Management of first and second stage of labour, PowerPoint presentation.

Asking for Preferences
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Running Command

mkdir -p /home/daytona/workspace/labour-management-pptx && ls /home/daytona/work…

Writing File

~/labour-management-pptx/build.js

const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Management of First and Second Stage of Labour";
pres.author = "Obstetrics & Gynaecology";

// ─── COLOUR PALETTE ───
const DARK_BG   = "0D2B45";   // deep navy  (title + section dividers)
const MID_BG    = "10415A";   // teal-navy  (secondary slides)
const ACCENT    = "3CB4E5";   // sky blue   (headings / highlights)
const GOLD      = "F0A500";   // amber gold (key figures / numbers)
const LIGHT_TXT = "FFFFFF";
const DARK_TXT  = "1A1A2E";
const CARD_BG   = "F4F9FC";   // very light blue-white
const DIVIDER   = "3CB4E5";
const RED_WARN  = "D73C3C";
const GREEN_OK  = "28A065";

// ─── HELPER: add dark slide with title ───
function darkSlide(title, subtitle) {
  const sl = pres.addSlide();
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
  // accent bar left
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: ACCENT } });
  sl.addText(title, {
    x: 0.35, y: 1.6, w: 9.3, h: 1.2,
    fontSize: 36, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center"
  });
  if (subtitle) {
    sl.addText(subtitle, {
      x: 0.35, y: 2.95, w: 9.3, h: 0.7,
      fontSize: 18, color: ACCENT, fontFace: "Calibri", align: "center", italic: true
    });
  }
  return sl;
}

// ─── HELPER: content slide with title bar ───
function contentSlide(title, accentColor) {
  accentColor = accentColor || ACCENT;
  const sl = pres.addSlide();
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "FFFFFF" } });
  // Header bar
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.72, fill: { color: DARK_BG } });
  sl.addText(title, {
    x: 0.3, y: 0.08, w: 9.4, h: 0.56,
    fontSize: 20, bold: true, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle"
  });
  // bottom accent line
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.45, w: 10, h: 0.175, fill: { color: accentColor } });
  return sl;
}

// ─── HELPER: two-column card slide ───
function twoColSlide(title, leftTitle, leftItems, rightTitle, rightItems, leftColor, rightColor) {
  leftColor  = leftColor  || ACCENT;
  rightColor = rightColor || GOLD;
  const sl = contentSlide(title);

  // LEFT card
  sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 0.9, w: 4.5, h: 4.4, fill: { color: CARD_BG }, line: { color: leftColor, width: 1.5 } });
  sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 0.9, w: 4.5, h: 0.42, fill: { color: leftColor } });
  sl.addText(leftTitle, { x: 0.3, y: 0.9, w: 4.4, h: 0.42, fontSize: 13, bold: true, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle" });
  sl.addText(leftItems.map((t, i) => ({ text: t, options: { bullet: true, breakLine: i < leftItems.length - 1, fontSize: 12, color: DARK_TXT, fontFace: "Calibri" } })),
    { x: 0.35, y: 1.38, w: 4.3, h: 3.8 });

  // RIGHT card
  sl.addShape(pres.ShapeType.rect, { x: 5.25, y: 0.9, w: 4.5, h: 4.4, fill: { color: CARD_BG }, line: { color: rightColor, width: 1.5 } });
  sl.addShape(pres.ShapeType.rect, { x: 5.25, y: 0.9, w: 4.5, h: 0.42, fill: { color: rightColor } });
  sl.addText(rightTitle, { x: 5.3, y: 0.9, w: 4.4, h: 0.42, fontSize: 13, bold: true, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle" });
  sl.addText(rightItems.map((t, i) => ({ text: t, options: { bullet: true, breakLine: i < rightItems.length - 1, fontSize: 12, color: DARK_TXT, fontFace: "Calibri" } })),
    { x: 5.35, y: 1.38, w: 4.3, h: 3.8 });

  return sl;
}

// ─── HELPER: bullet slide ───
function bulletSlide(title, sections) {
  // sections = [{heading, items}]
  const sl = contentSlide(title);
  let y = 0.88;
  sections.forEach(sec => {
    if (sec.heading) {
      sl.addText(sec.heading, { x: 0.35, y, w: 9.3, h: 0.35, fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
      y += 0.37;
    }
    const items = sec.items.map((t, i) => ({
      text: t,
      options: { bullet: true, breakLine: i < sec.items.length - 1, fontSize: 12, color: DARK_TXT, fontFace: "Calibri", indentLevel: sec.indent || 0 }
    }));
    sl.addText(items, { x: 0.5, y, w: 9.1, h: sec.items.length * 0.42 });
    y += sec.items.length * 0.42 + 0.12;
  });
  return sl;
}

// ─── HELPER: section divider ───
function sectionDivider(label, subtitle) {
  const sl = pres.addSlide();
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: MID_BG } });
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 2.5, w: 10, h: 0.06, fill: { color: GOLD } });
  sl.addText(label, {
    x: 0.5, y: 1.5, w: 9, h: 1.2,
    fontSize: 40, bold: true, color: GOLD, fontFace: "Calibri", align: "center"
  });
  if (subtitle) {
    sl.addText(subtitle, {
      x: 0.5, y: 2.8, w: 9, h: 0.7,
      fontSize: 18, color: LIGHT_TXT, fontFace: "Calibri", align: "center", italic: true
    });
  }
  return sl;
}

// ─── SLIDE 1: TITLE ───
{
  const sl = pres.addSlide();
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
  // decorative circles
  sl.addShape(pres.ShapeType.ellipse, { x: 7.5, y: -0.8, w: 3.5, h: 3.5, fill: { color: ACCENT, transparency: 85 } });
  sl.addShape(pres.ShapeType.ellipse, { x: -0.8, y: 3.5, w: 2.5, h: 2.5, fill: { color: GOLD, transparency: 80 } });
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: GOLD } });
  sl.addText("Management of First &\nSecond Stage of Labour", {
    x: 0.4, y: 0.9, w: 9.2, h: 2.0,
    fontSize: 36, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center"
  });
  sl.addShape(pres.ShapeType.rect, { x: 2.5, y: 3.05, w: 5, h: 0.04, fill: { color: ACCENT } });
  sl.addText("A Detailed Clinical Guide for Postgraduate Residents", {
    x: 0.4, y: 3.2, w: 9.2, h: 0.5,
    fontSize: 16, color: ACCENT, fontFace: "Calibri", align: "center", italic: true
  });
  sl.addText("Obstetrics & Gynaecology  |  2026", {
    x: 0.4, y: 5.0, w: 9.2, h: 0.4,
    fontSize: 12, color: "7EB8D4", fontFace: "Calibri", align: "center"
  });
}

// ─── SLIDE 2: OVERVIEW / TABLE OF CONTENTS ───
{
  const sl = contentSlide("Outline");
  const topics = [
    { num: "01", text: "Definitions & Stages of Labour" },
    { num: "02", text: "First Stage — Latent Phase: Assessment & Management" },
    { num: "03", text: "First Stage — Active Phase: Progress & Monitoring" },
    { num: "04", text: "Intrapartum Fetal Monitoring (EFM & CTG Interpretation)" },
    { num: "05", text: "Analgesia in Labour" },
    { num: "06", text: "Abnormal First Stage: Diagnosis & Interventions" },
    { num: "07", text: "Second Stage: Definition, Duration & Conduct" },
    { num: "08", text: "Delivery Technique: Cardinal Movements & Episiotomy" },
    { num: "09", text: "Abnormal Second Stage: Management" },
    { num: "10", text: "Key Take-home Points" },
  ];
  topics.forEach((t, i) => {
    const yy = 0.85 + i * 0.46;
    sl.addShape(pres.ShapeType.rect, { x: 0.3, y: yy, w: 0.45, h: 0.35, fill: { color: ACCENT } });
    sl.addText(t.num, { x: 0.3, y: yy, w: 0.45, h: 0.35, fontSize: 11, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addText(t.text, { x: 0.85, y: yy + 0.02, w: 8.8, h: 0.32, fontSize: 13, color: DARK_TXT, fontFace: "Calibri", valign: "middle" });
  });
}

// ─── SECTION DIVIDER: FIRST STAGE ───
sectionDivider("FIRST STAGE OF LABOUR", "Cervical Stage — from onset to full dilatation (10 cm)");

// ─── SLIDE 3: DEFINITIONS ───
{
  const sl = contentSlide("Definitions & Normal Stages");
  // 4 info boxes
  const boxes = [
    { label: "FIRST STAGE", color: ACCENT,   x: 0.2,  y: 0.88, desc: "Onset of labour → Full cervical dilatation (10 cm)\nLatent + Active phases" },
    { label: "SECOND STAGE", color: GOLD,    x: 5.1,  y: 0.88, desc: "Full dilatation → Delivery of the fetus\nPassive + Active (pushing) phases" },
    { label: "THIRD STAGE",  color: GREEN_OK, x: 0.2,  y: 3.05, desc: "Delivery of fetus → Delivery of placenta & membranes\nPhysiological or Active management" },
    { label: "FOURTH STAGE", color: RED_WARN, x: 5.1,  y: 3.05, desc: "First 1–2 hours postpartum\nMonitoring for PPH, uterine tone, vitals" },
  ];
  boxes.forEach(b => {
    sl.addShape(pres.ShapeType.rect, { x: b.x, y: b.y,     w: 4.6, h: 0.42, fill: { color: b.color } });
    sl.addShape(pres.ShapeType.rect, { x: b.x, y: b.y+0.42, w: 4.6, h: 1.85, fill: { color: CARD_BG }, line: { color: b.color, width: 1 } });
    sl.addText(b.label, { x: b.x+0.05, y: b.y, w: 4.5, h: 0.42, fontSize: 13, bold: true, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle", margin: 4 });
    sl.addText(b.desc, { x: b.x+0.1, y: b.y+0.5, w: 4.4, h: 1.6, fontSize: 12, color: DARK_TXT, fontFace: "Calibri" });
  });
}

// ─── SLIDE 4: PHASES OF FIRST STAGE ───
twoColSlide(
  "First Stage of Labour — Phases",
  "LATENT PHASE",
  [
    "Onset of regular contractions → 3–4 cm dilatation",
    "Cervical effacement & early dilatation",
    "Duration: up to 20 hr (nullipara), 14 hr (multipara)",
    "Contractions: irregular, 5–10 min apart",
    "Management: Supportive (ambulation, hydration)",
    "Therapeutic narcosis if exhausted/prolonged",
    "Avoid unnecessary intervention",
    "Augmentation only if clinical indication exists"
  ],
  "ACTIVE PHASE",
  [
    "3–4 cm → 10 cm dilatation",
    "Rate: ≥1 cm/hr (nullipara), ≥1.2 cm/hr (multipara)",
    "Contractions: 3–5 per 10 min, 45–60 sec duration",
    "Regular vaginal examinations every 4 hours",
    "Descent of presenting part begins",
    "Oxytocin augmentation if progress <1 cm/hr",
    "ARM to augment if membranes intact & slow progress",
    "Continuous fetal monitoring recommended"
  ],
  ACCENT, GOLD
);

// ─── SLIDE 5: ASSESSMENT ON ADMISSION ───
bulletSlide("Assessment on Admission in Labour", [
  { heading: "History", items: ["Gestational age (EDD), parity, previous obstetric history", "Onset & frequency of contractions, status of membranes (SROM?)", "Fetal movement, antenatal complications, blood group, GBS status"] },
  { heading: "Examination", items: ["Vitals: BP, pulse, temp, RR; urinalysis", "Abdominal: fundal height, lie, presentation, engagement (fifths palpable)", "Leopold maneuvers to confirm fetal lie & position", "FHR auscultation; CTG if any concern"] },
  { heading: "Vaginal Examination (VE)", items: ["Cervical dilatation, effacement, consistency & position (Bishop Score)", "Fetal presenting part: station (ischial spines = 0)", "Membranes: intact / ruptured; colour of liquor if draining", "VE deferred if APH until placenta previa excluded"] },
]);

// ─── SLIDE 6: PARTOGRAPH ───
{
  const sl = contentSlide("The Partograph — Monitoring Labour Progress");
  // Alert line box
  sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 0.88, w: 9.5, h: 0.5, fill: { color: DARK_BG } });
  sl.addText("WHO Partograph: Plot cervical dilatation vs time — Alert Line & Action Line", {
    x: 0.3, y: 0.88, w: 9.4, h: 0.5, fontSize: 13, bold: true, color: GOLD, fontFace: "Calibri", valign: "middle"
  });

  const rows = [
    ["Parameter", "Details"],
    ["Cervical Dilatation", "Plotted from active phase (≥4 cm). Starts on Alert Line."],
    ["Alert Line", "Expected minimum progress: 1 cm/hr. Crosses from 4 cm (begins)."],
    ["Action Line", "4 hours to the right of Alert Line. Crossing = intervention needed."],
    ["Fetal HR", "Every 30 min in latent; every 15 min in active phase"],
    ["Contractions", "Frequency, duration, strength per 10 min"],
    ["Liquor", "C = clear, M = meconium, B = blood, A = absent"],
    ["Descent", "Fifths of head above pelvic brim (5 = not engaged, 0 = fully engaged)"],
    ["Moulding", "0, 1+, 2+, 3+"],
    ["Maternal vitals", "BP, pulse, temp, urine output per hour"],
  ];
  rows.forEach((row, i) => {
    const yy = 1.48 + i * 0.39;
    const isHeader = i === 0;
    sl.addShape(pres.ShapeType.rect, { x: 0.25, y: yy, w: 2.8, h: 0.37, fill: { color: isHeader ? ACCENT : (i % 2 === 0 ? CARD_BG : "EAF4FA") }, line: { color: ACCENT, width: 0.5 } });
    sl.addShape(pres.ShapeType.rect, { x: 3.1,  y: yy, w: 6.65, h: 0.37, fill: { color: isHeader ? ACCENT : (i % 2 === 0 ? CARD_BG : "EAF4FA") }, line: { color: ACCENT, width: 0.5 } });
    sl.addText(row[0], { x: 0.3,  y: yy+0.02, w: 2.7,  h: 0.33, fontSize: isHeader ? 12 : 11, bold: isHeader, color: isHeader ? LIGHT_TXT : DARK_TXT, fontFace: "Calibri", valign: "middle" });
    sl.addText(row[1], { x: 3.15, y: yy+0.02, w: 6.55, h: 0.33, fontSize: isHeader ? 12 : 11, bold: isHeader, color: isHeader ? LIGHT_TXT : DARK_TXT, fontFace: "Calibri", valign: "middle" });
  });
}

// ─── SLIDE 7: FETAL MONITORING — CTG ───
{
  const sl = contentSlide("Intrapartum Fetal Monitoring — CTG Interpretation");
  sl.addText("DR C BRAVADO Systematic Approach", {
    x: 0.3, y: 0.82, w: 9.4, h: 0.38, fontSize: 14, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  const ctgItems = [
    { code: "DR",  label: "Define Risk",       desc: "Low vs high risk; review obstetric history" },
    { code: "C",   label: "Contractions",       desc: "Frequency, duration — avoid hyperstimulation" },
    { code: "BRa", label: "Baseline Rate",      desc: "Normal: 110–160 bpm; Tachycardia >160; Bradycardia <110" },
    { code: "V",   label: "Variability",        desc: "Normal: 5–25 bpm. Reduced <5 bpm ≥40 min = concerning" },
    { code: "A",   label: "Accelerations",      desc: ">15 bpm rise, >15 sec. Reassuring sign of fetal well-being" },
    { code: "D",   label: "Decelerations",      desc: "Early (head compression) / Late (UPI) / Variable (cord compression)" },
    { code: "O",   label: "Overall Assessment", desc: "Normal / Suspicious / Pathological — act accordingly" },
  ];
  ctgItems.forEach((item, i) => {
    const yy = 1.3 + i * 0.56;
    sl.addShape(pres.ShapeType.rect, { x: 0.25, y: yy, w: 0.7, h: 0.44, fill: { color: ACCENT } });
    sl.addText(item.code, { x: 0.25, y: yy, w: 0.7, h: 0.44, fontSize: 12, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addText(item.label, { x: 1.05, y: yy+0.02, w: 2.5, h: 0.4, fontSize: 12, bold: true, color: DARK_TXT, fontFace: "Calibri", valign: "middle" });
    sl.addText(item.desc,  { x: 3.7,  y: yy+0.02, w: 6.1, h: 0.4, fontSize: 12, color: DARK_TXT, fontFace: "Calibri", valign: "middle" });
    sl.addShape(pres.ShapeType.line, { x: 0.25, y: yy+0.46, w: 9.5, h: 0, line: { color: "D0E8F2", width: 0.5 } });
  });
}

// ─── SLIDE 8: CTG CATEGORIES ───
{
  const sl = contentSlide("CTG Classification & Management");
  const cats = [
    { cat: "NORMAL",      color: GREEN_OK, criteria: ["Baseline 110–160 bpm", "Variability 5–25 bpm", "Accelerations present", "No late/variable decelerations"], action: "Continue routine monitoring. No intervention needed." },
    { cat: "SUSPICIOUS",  color: GOLD,     criteria: ["1 non-reassuring feature:", "Baseline 100–109 or 161–180 bpm", "Variability <5 bpm for 30–50 min", "Prolonged deceleration >3 min"], action: "Increase vigilance. Correct reversible causes (position, oxytocin). Notify senior." },
    { cat: "PATHOLOGICAL",color: RED_WARN, criteria: ["≥2 non-reassuring features, OR", "≥1 abnormal feature:", "Baseline <100 or >180 bpm", "Sinusoidal pattern ≥10 min", "Variable/late decels with poor variability"], action: "Urgent review. FBS if feasible. Consider immediate delivery. Category 1 CS if needed." },
  ];
  cats.forEach((c, i) => {
    const yy = 0.86;
    const xx = 0.25 + i * 3.25;
    sl.addShape(pres.ShapeType.rect, { x: xx, y: yy, w: 3.1, h: 0.44, fill: { color: c.color } });
    sl.addText(c.cat, { x: xx, y: yy, w: 3.1, h: 0.44, fontSize: 14, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addShape(pres.ShapeType.rect, { x: xx, y: yy+0.44, w: 3.1, h: 2.6, fill: { color: CARD_BG }, line: { color: c.color, width: 1 } });
    sl.addText(c.criteria.map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < c.criteria.length - 1, fontSize: 11, color: DARK_TXT, fontFace: "Calibri" } })),
      { x: xx+0.1, y: yy+0.52, w: 2.9, h: 2.4 });
    sl.addShape(pres.ShapeType.rect, { x: xx, y: yy+3.1, w: 3.1, h: 0.08, fill: { color: c.color } });
    sl.addShape(pres.ShapeType.rect, { x: xx, y: yy+3.18, w: 3.1, h: 1.5, fill: { color: CARD_BG }, line: { color: c.color, width: 1 } });
    sl.addText("ACTION: " + c.action, { x: xx+0.1, y: yy+3.22, w: 2.9, h: 1.35, fontSize: 11, color: c.color, bold: true, fontFace: "Calibri", wrap: true });
  });
}

// ─── SLIDE 9: ANALGESIA IN LABOUR ───
twoColSlide(
  "Analgesia in Labour",
  "NON-PHARMACOLOGICAL",
  [
    "Breathing techniques & Lamaze",
    "Continuous labour support (doula/midwife)",
    "Hydrotherapy (warm water immersion)",
    "TENS (Transcutaneous Electrical Nerve Stimulation)",
    "Ambulation & position changes",
    "Massage & counterpressure",
    "Heat/cold application"
  ],
  "PHARMACOLOGICAL",
  [
    "Entonox (50% N₂O/O₂) — inhalational, quick onset",
    "Systemic opioids: Pethidine 50–100 mg IM (may cause neonatal resp. depression — have naloxone ready)",
    "Epidural analgesia: GOLD STANDARD\n  - Bolus LA (bupivacaine 0.1%) + fentanyl\n  - Combined spinal-epidural (CSE)\n  - Continuous infusion / PCEA",
    "Spinal analgesia for rapid analgesia",
    "Pudendal nerve block: 2nd stage / instrumental"
  ],
  ACCENT, GOLD
);

// ─── SLIDE 10: ABNORMAL FIRST STAGE ───
{
  const sl = contentSlide("Abnormal First Stage — Dystocia");
  sl.addText("3Ps Framework: Powers • Passenger • Passage", {
    x: 0.3, y: 0.82, w: 9.4, h: 0.4, fontSize: 14, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  const items = [
    { cat: "POWERS", color: ACCENT,   bg: "EAF7FF", items: ["Uterine hypotonia: inadequate contractions", "Dx: <3 contractions/10 min or <25 mmHg intensity", "Rx: ARM + Oxytocin augmentation (titrate carefully)", "Hyperstimulation (>5 contractions/10 min) → stop oxytocin, tocolysis if fetal distress"] },
    { cat: "PASSENGER", color: GOLD,  bg: "FFF8E7", items: ["CPD: head too large for pelvis (X-ray pelvimetry)", "Malposition: OP, OT — trial of rotation (manual / forceps)", "Malpresentation: face, brow, compound — assess individually", "Macrosomia: shoulder dystocia risk — have protocol ready"] },
    { cat: "PASSAGE", color: GREEN_OK, bg: "EAFAF1", items: ["Pelvic contraction (android/platypelloid pelvis)", "Soft tissue obstruction: fibroids, cervical rigidity", "True CPD or borderline → Trial of labour → CS if fails", "Obstructed labour: prolonged + caput/moulding 3+ → immediate CS"] },
  ];
  items.forEach((item, i) => {
    const xx = 0.25 + i * 3.25;
    sl.addShape(pres.ShapeType.rect, { x: xx, y: 1.32, w: 3.1, h: 0.42, fill: { color: item.color } });
    sl.addText(item.cat, { x: xx, y: 1.32, w: 3.1, h: 0.42, fontSize: 13, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addShape(pres.ShapeType.rect, { x: xx, y: 1.74, w: 3.1, h: 3.6, fill: { color: item.bg }, line: { color: item.color, width: 1 } });
    sl.addText(item.items.map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < item.items.length - 1, fontSize: 11, color: DARK_TXT, fontFace: "Calibri" } })),
      { x: xx+0.1, y: 1.82, w: 2.9, h: 3.4 });
  });
}

// ─── SECTION DIVIDER: SECOND STAGE ───
sectionDivider("SECOND STAGE OF LABOUR", "Expulsive Stage — from full dilatation to delivery of the fetus");

// ─── SLIDE 11: SECOND STAGE DEFINITION ───
twoColSlide(
  "Second Stage of Labour — Definition & Duration",
  "DEFINITION & PHASES",
  [
    "Begins: Full cervical dilatation (10 cm)",
    "Ends: Complete delivery of the fetus",
    "PASSIVE phase: Full dilatation but no urge to push (fetus descending passively)",
    "ACTIVE phase: Active maternal pushing with contractions",
    "Pushing should begin when urge felt or presenting part ≤+2 station",
  ],
  "NORMAL DURATION",
  [
    "Nulliparous (no epidural): ≤2 hours",
    "Nulliparous (with epidural): ≤3 hours",
    "Multiparous (no epidural): ≤1 hour",
    "Multiparous (with epidural): ≤2 hours",
    "Prolonged 2nd stage increases risk of: PPH, infection, neonatal acidosis, obstetric anal sphincter injury (OASI)",
    "Continuous fetal monitoring mandatory"
  ],
  ACCENT, GOLD
);

// ─── SLIDE 12: CARDINAL MOVEMENTS ───
{
  const sl = contentSlide("Cardinal Movements of Labour (Vertex Presentation)");
  const moves = [
    { n: "1", title: "Engagement",    desc: "Biparietal diameter passes through pelvic inlet; head at 0 station" },
    { n: "2", title: "Descent",       desc: "Progressive descent through pelvis; occurs throughout labour" },
    { n: "3", title: "Flexion",       desc: "Chin on chest — smallest diameter (suboccipitobregmatic 9.5 cm) presents" },
    { n: "4", title: "Internal Rotation", desc: "Occiput rotates anteriorly to OA position as head reaches pelvic floor" },
    { n: "5", title: "Extension",     desc: "Head extends at vulva; occiput under symphysis pubis as pivot" },
    { n: "6", title: "Restitution",   desc: "Head rotates back to original position (undoes internal rotation)" },
    { n: "7", title: "External Rotation", desc: "Shoulders align with AP diameter of outlet; head rotates to face thigh" },
    { n: "8", title: "Expulsion",     desc: "Anterior then posterior shoulder delivered; rest of body follows" },
  ];
  moves.forEach((m, i) => {
    const col = i < 4 ? 0 : 1;
    const row = i < 4 ? i : i - 4;
    const xx = 0.25 + col * 5.0;
    const yy = 0.88 + row * 1.14;
    sl.addShape(pres.ShapeType.rect, { x: xx, y: yy, w: 0.5, h: 0.5, fill: { color: ACCENT } });
    sl.addText(m.n, { x: xx, y: yy, w: 0.5, h: 0.5, fontSize: 13, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addText(m.title, { x: xx+0.6, y: yy+0.02, w: 3.8, h: 0.28, fontSize: 13, bold: true, color: DARK_BG, fontFace: "Calibri", valign: "middle" });
    sl.addText(m.desc, { x: xx+0.6, y: yy+0.3, w: 4.1, h: 0.7, fontSize: 11, color: DARK_TXT, fontFace: "Calibri", wrap: true });
    sl.addShape(pres.ShapeType.line, { x: xx, y: yy+1.05, w: 4.65, h: 0, line: { color: "DDEEF5", width: 0.5 } });
  });
}

// ─── SLIDE 13: CONDUCT OF DELIVERY ───
bulletSlide("Conduct of Normal Delivery — Second Stage", [
  { heading: "Preparation", items: [
    "Position: Dorsal lithotomy / left lateral (Sim's) / all-fours / upright — patient's choice",
    "Ensure radiant warmer on, neonatal resuscitation equipment ready",
    "Sterile draping; scrub perineum with sterile saline",
    "Pudendal nerve block or perineal infiltration with lignocaine if needed"
  ]},
  { heading: "Pushing Technique", items: [
    "Directed pushing: Valsalva (closed glottis) with contractions — 3 pushes × 10 sec per contraction",
    "Breathing/open glottis (laboring down) — preferred with epidural in passive phase",
    "Coach mother between contractions; encourage rest"
  ]},
  { heading: "Head Delivery", items: [
    "Ritgen maneuver: steady pressure on occiput; upward pressure on fetal chin via perineum",
    "Control head delivery to reduce perineal trauma",
    "Check for nuchal cord — slip over head or double-clamp-cut if tight",
    "Suction mouth and nose if meconium-stained liquor"
  ]},
  { heading: "Shoulder & Body Delivery", items: [
    "Gentle downward traction for anterior shoulder, upward for posterior",
    "Body delivers by lateral flexion",
    "Note time of birth; Apgar at 1 and 5 minutes"
  ]},
]);

// ─── SLIDE 14: EPISIOTOMY ───
twoColSlide(
  "Episiotomy — Indications, Technique & Repair",
  "INDICATIONS (Selective — NOT routine)",
  [
    "Instrumental delivery (forceps/ventouse)",
    "Fetal distress requiring expedited delivery",
    "Rigid perineum threatening severe tear",
    "Shoulder dystocia",
    "Preterm delivery (evidence limited)",
    "Previous severe perineal trauma",
    "Mediolateral preferred over midline — lower risk of 3rd/4th degree tear"
  ],
  "REPAIR (3-LAYER CLOSURE)",
  [
    "Ensure adequate analgesia (local infiltration / epidural top-up)",
    "Layer 1 — Vaginal mucosa: continuous suture (Vicryl 2/0) from apex",
    "Layer 2 — Perineal muscles: interrupted or continuous sutures",
    "Layer 3 — Skin: continuous subcuticular suture (Vicryl 2/0 or 3/0)",
    "Rectal examination post-repair to ensure no suture through rectum",
    "Document: extent of tear, repair technique, sutures used, analgesia given"
  ],
  ACCENT, GOLD
);

// ─── SLIDE 15: ABNORMAL SECOND STAGE ───
{
  const sl = contentSlide("Abnormal Second Stage — Recognition & Management");
  sl.addText("Prolonged Second Stage + Fetal Distress = Urgent Intervention", {
    x: 0.3, y: 0.82, w: 9.4, h: 0.38, fontSize: 13, bold: true, color: RED_WARN, fontFace: "Calibri"
  });

  const cols = [
    { title: "FETAL DISTRESS", color: RED_WARN, bg: "FFF0F0", items: [
      "CTG: late decels + ↓variability, prolonged bradycardia",
      "Meconium-stained liquor (grade II/III)",
      "Scalp pH <7.20 or lactate >4.8 mmol/L",
      "Action: Stop oxytocin, left lateral position, O₂, IV hydration",
      "If not delivered imminently → instrumental or Category 1 CS"
    ]},
    { title: "ARREST OF DESCENT", color: GOLD, bg: "FFFBEA", items: [
      "No progress in 1 hour (nullipara) despite active pushing",
      "Assess: rotation, asynclitism, moulding",
      "If head ≤+2 station and no CPD → instrumental delivery",
      "Ventouse (vacuum): preferred if OP or asynclitism",
      "Forceps: preferred if face presentation or <34 wks",
      "If head high / CPD → CS"
    ]},
    { title: "SHOULDER DYSTOCIA", color: "8B44AC", bg: "FAF0FF", items: [
      "Call for help immediately (HELPERR mnemonic)",
      "H — Call for Help",
      "E — Episiotomy (if needed for maneuvers)",
      "L — Legs (McRoberts: hyperflex thighs)",
      "P — Suprapubic Pressure (Rubin II)",
      "E — Enter (internal rotational maneuvers)",
      "R — Remove posterior arm",
      "R — Roll to all-fours (Gaskin maneuver)"
    ]},
  ];
  cols.forEach((c, i) => {
    const xx = 0.25 + i * 3.25;
    sl.addShape(pres.ShapeType.rect, { x: xx, y: 1.32, w: 3.1, h: 0.42, fill: { color: c.color } });
    sl.addText(c.title, { x: xx, y: 1.32, w: 3.1, h: 0.42, fontSize: 12, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addShape(pres.ShapeType.rect, { x: xx, y: 1.74, w: 3.1, h: 3.7, fill: { color: c.bg }, line: { color: c.color, width: 1 } });
    sl.addText(c.items.map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < c.items.length - 1, fontSize: 11, color: DARK_TXT, fontFace: "Calibri" } })),
      { x: xx+0.1, y: 1.82, w: 2.9, h: 3.5 });
  });
}

// ─── SLIDE 16: KEY TAKEAWAYS ───
{
  const sl = pres.addSlide();
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
  sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.8, fill: { color: ACCENT } });
  sl.addText("Key Take-Home Points", { x: 0.4, y: 0.1, w: 9.2, h: 0.6, fontSize: 22, bold: true, color: LIGHT_TXT, fontFace: "Calibri", align: "center", valign: "middle" });

  const points = [
    { icon: "01", text: "Active phase begins at ≥3–4 cm. Expected progress ≥1 cm/hr. Plot on partograph and act at Action Line." },
    { icon: "02", text: "CTG must be interpreted systematically (DR C BRAVADO). Pathological CTG = urgent escalation." },
    { icon: "03", text: "Oxytocin augmentation requires continuous CTG — watch for hyperstimulation (>5 contractions/10 min)." },
    { icon: "04", text: "Epidural does NOT mandate CS. Prolong active 2nd stage allowance (nullipara 3 hr, multipara 2 hr with epidural)." },
    { icon: "05", text: "Shoulder dystocia — HELPERR. Call for help first. McRoberts + suprapubic pressure resolves >50% of cases." },
    { icon: "06", text: "Episiotomy is SELECTIVE, not routine. Document all perineal trauma and repair carefully." },
    { icon: "07", text: "Obstructed labour = emergency. Moulding 3+, absent liquor, maternal ketosis → immediate senior review + CS." },
  ];

  points.forEach((p, i) => {
    const yy = 0.96 + i * 0.64;
    sl.addShape(pres.ShapeType.rect, { x: 0.35, y: yy, w: 0.48, h: 0.48, fill: { color: GOLD } });
    sl.addText(p.icon, { x: 0.35, y: yy, w: 0.48, h: 0.48, fontSize: 12, bold: true, color: DARK_BG, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    sl.addText(p.text, { x: 0.95, y: yy+0.04, w: 8.7, h: 0.44, fontSize: 12, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle", wrap: true });
  });
}

// ─── SLIDE 17: REFERENCES ───
{
  const sl = contentSlide("References");
  const refs = [
    "Creasy & Resnik's Maternal-Fetal Medicine: Principles and Practice, 8th ed. (Elsevier, 2022) — Chapters on Normal Labor and Labor Abnormalities",
    "Rosen's Emergency Medicine: Concepts and Clinical Practice, 9th ed. — Chapter 176: Labor and Delivery",
    "ACOG Practice Bulletin No. 49: Dystocia and Augmentation of Labor",
    "ACOG Practice Bulletin No. 116: Management of Intrapartum Fetal Heart Rate Tracings",
    "NICE Guideline NG235: Intrapartum Care for Healthy Women and Babies (2023 update)",
    "WHO: Managing Complications in Pregnancy and Childbirth — Use of the Partograph",
    "Park's Textbook of Preventive and Social Medicine, 26th ed. — Care during Labour and Childbirth",
    "RCOG Green-top Guideline No. 42: Shoulder Dystocia (2012)",
  ];
  refs.forEach((r, i) => {
    sl.addText(`${i + 1}.  ${r}`, {
      x: 0.35, y: 0.88 + i * 0.58, w: 9.3, h: 0.5,
      fontSize: 11.5, color: DARK_TXT, fontFace: "Calibri", wrap: true
    });
    if (i < refs.length - 1) {
      sl.addShape(pres.ShapeType.line, { x: 0.35, y: 1.36 + i * 0.58, w: 9.3, h: 0, line: { color: "D5E8F0", width: 0.5 } });
    }
  });
}

// ─── FINAL SLIDE ───
darkSlide("Thank You", "Questions & Discussion — Management of First & Second Stage of Labour");

// WRITE FILE
pres.writeFile({ fileName: "/home/daytona/workspace/labour-management-pptx/Labour_Management_First_Second_Stage.pptx" })
  .then(() => console.log("SUCCESS: File written."))
  .catch(err => { console.error("ERROR:", err); process.exit(1); });
Running Command

cd /home/daytona/workspace/labour-management-pptx && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/labour-management-pptx/

Your presentation is ready for download:

Labour Management First Second Stage

Presentation · PPTX


What's inside (18 slides, deep navy/teal/gold colour scheme):
#Slide
1Title slide
2Outline (10 topics numbered)
Section divider: First Stage
3Definitions & All 4 Stages (colour-coded boxes)
4First Stage Phases — Latent vs Active (two-column cards)
5Assessment on Admission (History / Exam / VE)
6The Partograph — full parameter table (Alert & Action Line)
7CTG Interpretation — DR C BRAVADO mnemonic
8CTG Classification: Normal / Suspicious / Pathological + actions
9Analgesia in Labour — non-pharmacological vs pharmacological
10Dystocia — 3Ps framework (Powers / Passenger / Passage)
Section divider: Second Stage
11Second Stage definition, phases, normal duration limits
12Cardinal Movements of Labour (all 8 steps)
13Conduct of Normal Delivery — preparation, pushing, head/shoulder delivery
14Episiotomy — selective indications + 3-layer repair
15Abnormal Second Stage — fetal distress / arrest / shoulder dystocia (HELPERR)
16Key Take-Home Points (7 high-yield clinical pearls)
17References (ACOG, NICE, Creasy & Resnik, WHO, RCOG)
18Thank You / Q&A
Content sourced from Creasy & Resnik's Maternal-Fetal Medicine, Rosen's Emergency Medicine, and Park's PSM, cross-referenced against ACOG, NICE NG235 and RCOG guidelines.

Make a visual infographic on the cardinal movements of labour

Generating Image

Medical infographic titled "Cardinal Movements of Labour" showing all 8 steps in sequence. Clean clinical illustration style with numbered steps in a flowing diagram layout. Each step has a small anatomical diagram of the fetal head position in the pelvis viewed from below or side, plus a short label and description. Steps shown in order: 1. Engagement - biparietal diameter at pelvic inlet, 2. Descent - progressive downward movement, 3. Flexion - chin on chest, smallest diameter, 4. Internal Rotation - occiput rotates to OA position, 5. Extension - head extends under symphysis pubis, 6. Restitution - head rotates back to natural position, 7. External Rotation - shoulders align, 8. Expulsion - delivery of body. Use a navy blue and teal color scheme with gold accent numbers. Include small pelvic cross-section diagrams for each step showing head position. Professional obstetrics textbook quality. Clean white background with clear arrows showing progression between steps. Include a small legend showing fetal head orientation symbols.

Cardinal Movements of Labour infographic
Here is your infographic covering all 8 cardinal movements in sequence:
#MovementKey Point
1EngagementBiparietal diameter passes through pelvic inlet (0 station)
2DescentContinuous throughout labour; driven by uterine contractions
3FlexionChin on chest - suboccipitobregmatic diameter (9.5 cm) presents
4Internal RotationOcciput rotates from OT/OP to OA at the level of the pelvic floor
5ExtensionOcciput pivots under symphysis pubis; head extends to deliver
6RestitutionHead rotates 45° back, realigning with fetal spine
7External RotationFurther 45° rotation as shoulders align with AP outlet diameter
8ExpulsionAnterior shoulder under pubis first, then posterior, then body
The movements are not strictly sequential - descent occurs throughout, and flexion begins before internal rotation completes. All movements serve to present the smallest diameter of the fetal head through each narrowest dimension of the maternal pelvis.
This is a shared conversation. Sign in to Orris to start your own chat.