Management of first stage of labour powerpoint presentation
mkdir -p /home/daytona/workspace/first-stage-labour && ls /home/daytona/workspac…
~/first-stage-labour/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Management of the First Stage of Labour";
pres.author = "Obstetrics & Gynaecology";
// ─── COLOUR PALETTE ───────────────────────────────────────────────────────────
// Deep navy dominates; teal accent; warm white text; gold highlight
const C = {
navy: "0A1F44",
navyMid: "0D2B5E",
teal: "0D7377",
tealLt: "14A085",
gold: "E8A838",
white: "FFFFFF",
offWhite:"F0F4F8",
lightGrey:"D4DCE8",
textDark:"1A1A2E",
red: "C0392B",
green: "27AE60",
orange: "E67E22",
};
// ─── HELPERS ─────────────────────────────────────────────────────────────────
function titleSlide(pres, title, subtitle) {
const slide = pres.addSlide();
// Full dark background
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.navy} });
// Accent bar left
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.teal} });
// Gold decorative line
slide.addShape(pres.ShapeType.rect, { x:0.18, y:2.3, w:9.6, h:0.06, fill:{color:C.gold} });
slide.addText(title, { x:0.5, y:1.1, w:9.2, h:1.4, fontSize:38, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
slide.addText(subtitle, { x:0.5, y:2.55, w:9.2, h:0.55, fontSize:20, color:C.tealLt, fontFace:"Calibri", align:"left", margin:0 });
slide.addText("Creasy & Resnik's Maternal-Fetal Medicine, 8th Ed.", { x:0.5, y:4.9, w:9.2, h:0.4, fontSize:13, color:C.lightGrey, fontFace:"Calibri", align:"left", italic:true, margin:0 });
return slide;
}
function sectionDivider(pres, sectionNum, sectionTitle) {
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.teal} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:0.12, fill:{color:C.gold} });
slide.addShape(pres.ShapeType.rect, { x:0, y:5.5, w:"100%", h:0.12, fill:{color:C.gold} });
slide.addText(`Section ${sectionNum}`, { x:0.6, y:1.5, w:8.8, h:0.5, fontSize:22, color:C.offWhite, fontFace:"Calibri", align:"left", margin:0 });
slide.addText(sectionTitle, { x:0.6, y:2.1, w:8.8, h:1.6, fontSize:40, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
return slide;
}
function contentSlide(pres, title, bullets, opts = {}) {
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.offWhite} });
// Header bar
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const bulletItems = bullets.map((b, i) => {
if (typeof b === "string") {
return { text: b, options: { bullet:{type:"bullet"}, fontSize:18, color:C.textDark, fontFace:"Calibri", breakLine: i < bullets.length-1, paraSpaceAfter:4 } };
}
// Object with {text, sub, color}
const opts2 = { bullet:{type:"bullet"}, fontSize:b.sub ? 16 : 18, color: b.color || C.textDark, fontFace:"Calibri", breakLine: i < bullets.length-1, paraSpaceAfter:4, indent: b.sub ? 0.4 : 0 };
if (b.bold) opts2.bold = true;
return { text: b.text, options: opts2 };
});
const contentH = opts.h || 3.8;
const contentY = opts.y || 1.2;
slide.addText(bulletItems, { x:0.4, y:contentY, w:9.2, h:contentH, valign:"top", margin:6 });
if (opts.source) {
slide.addText(opts.source, { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
return slide;
}
function twoColSlide(pres, title, leftItems, rightItems, leftHeader, rightHeader) {
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Left column
slide.addShape(pres.ShapeType.rect, { x:0.25, y:1.18, w:4.5, h:0.38, fill:{color:C.teal} });
slide.addText(leftHeader, { x:0.25, y:1.18, w:4.5, h:0.38, fontSize:15, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const leftBullets = leftItems.map((b, i) => ({ text: b, options: { bullet:{type:"bullet"}, fontSize:17, color:C.textDark, fontFace:"Calibri", breakLine: i < leftItems.length-1, paraSpaceAfter:4 } }));
slide.addText(leftBullets, { x:0.25, y:1.62, w:4.5, h:3.6, valign:"top", margin:6 });
// Right column
slide.addShape(pres.ShapeType.rect, { x:5.0, y:1.18, w:4.7, h:0.38, fill:{color:C.navy} });
slide.addText(rightHeader, { x:5.0, y:1.18, w:4.7, h:0.38, fontSize:15, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const rightBullets = rightItems.map((b, i) => ({ text: b, options: { bullet:{type:"bullet"}, fontSize:17, color:C.textDark, fontFace:"Calibri", breakLine: i < rightItems.length-1, paraSpaceAfter:4 } }));
slide.addText(rightBullets, { x:5.0, y:1.62, w:4.7, h:3.6, valign:"top", margin:6 });
return slide;
}
function tableSlide(pres, title, headers, rows) {
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const tableData = [
headers.map(h => ({ text: h, options: { bold:true, color:C.white, fill:{color:C.teal}, fontSize:14, align:"center", fontFace:"Calibri" } })),
...rows.map((row, ri) => row.map(cell => ({ text: cell, options: { fontSize:13, color:C.textDark, fill:{color: ri%2===0 ? "E8EEF4" : C.white}, fontFace:"Calibri", align:"center" } })))
];
slide.addTable(tableData, { x:0.25, y:1.2, w:9.5, colW: Array(headers.length).fill(9.5/headers.length), rowH:0.42, border:{pt:1,color:C.lightGrey} });
return slide;
}
function alertBox(slide, pres, x, y, w, h, label, text, color) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill:{color}, line:{color:"FFFFFF", pt:0} });
slide.addText([
{ text: label + ": ", options:{ bold:true, fontSize:14, color:C.white, fontFace:"Calibri" } },
{ text: text, options:{ fontSize:13, color:C.white, fontFace:"Calibri" } }
], { x:x+0.1, y, w:w-0.2, h, valign:"middle", margin:4 });
}
function keyPointBox(slide, pres, x, y, w, h, text) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill:{color:C.navy}, line:{color:C.gold, pt:2} });
slide.addText(text, { x:x+0.12, y, w:w-0.24, h, fontSize:14, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", bold:true, margin:4 });
}
// ─── SLIDES ───────────────────────────────────────────────────────────────────
// SLIDE 1 – Title
titleSlide(pres, "Management of the\nFirst Stage of Labour", "For Clinicians & Consultants | Intrapartum Care");
// SLIDE 2 – Outline
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.navy} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.gold} });
slide.addText("Presentation Outline", { x:0.5, y:0.25, w:9.2, h:0.6, fontSize:28, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
const items = [
"1. Definition & Phases of the First Stage",
"2. Physiology of Parturition",
"3. Diagnosis of Labour",
"4. Initial Assessment & Admission",
"5. Partogram – Use & Interpretation",
"6. Monitoring the Mother",
"7. Monitoring the Fetus",
"8. Pain Relief in Labour",
"9. Managing the Latent Phase",
"10. Managing the Active Phase",
"11. Labour Abnormalities & Interventions",
"12. Special Situations",
"13. Key Clinical Takeaways",
];
const bulletArr = items.map((t,i) => ({ text:t, options:{ bullet:false, fontSize:16, color:C.offWhite, fontFace:"Calibri", breakLine: i < items.length-1, paraSpaceAfter:3 } }));
slide.addText(bulletArr, { x:0.5, y:1.0, w:9.2, h:4.4, valign:"top", margin:4 });
}
// ─────────────── SECTION 1 ────────────────────────────────────────────────────
sectionDivider(pres, "01", "Definition & Phases of the First Stage");
// SLIDE 4 – Definition
{
const slide = contentSlide(pres, "Definition of the First Stage of Labour", [
"Onset of regular, painful uterine contractions with associated cervical effacement and dilation",
"Ends with complete cervical dilation (10 cm)",
"Precise onset is often uncertain — clinicians rely on patient's report of regular contractions",
"Not uncommonly, effacement and dilation begin before perceptible regular contractions (prelabour cervical change)",
"Fourth stage (Pritchard & MacDonald): the hour immediately following placental delivery",
], { source:"Source: Creasy & Resnik's Maternal-Fetal Medicine, Ch. 40" });
// Highlight box
alertBox(slide, pres, 0.3, 4.6, 9.4, 0.65, "Clinical Pearl",
"Latent phase can begin before the patient notices regular contractions — serial cervical exams clarify this.", C.teal);
}
// SLIDE 5 – Stages & Phases
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Stages of Labour & Phases of the First Stage", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Three stage boxes
const stages = [
{ label:"First Stage", sub:"Onset → Full Dilation (10 cm)", color:C.teal },
{ label:"Second Stage", sub:"Full Dilation → Delivery of Infant", color:C.navy },
{ label:"Third Stage", sub:"Delivery of Infant → Placenta", color:C.tealLt },
];
stages.forEach((s,i) => {
slide.addShape(pres.ShapeType.rect, { x:0.25+i*3.2, y:1.22, w:3.0, h:0.95, fill:{color:s.color} });
slide.addText(s.label, { x:0.25+i*3.2, y:1.22, w:3.0, h:0.48, fontSize:17, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"bottom", margin:0 });
slide.addText(s.sub, { x:0.25+i*3.2, y:1.70, w:3.0, h:0.45, fontSize:13, color:C.white, fontFace:"Calibri", align:"center", valign:"top", margin:0 });
});
// Phases of first stage
slide.addText("Phases of the First Stage (Friedman)", { x:0.3, y:2.35, w:9.4, h:0.38, fontSize:18, bold:true, color:C.navyMid, fontFace:"Calibri", margin:0 });
const phases = [
{ name:"Latent Phase", desc:"Onset of regular contractions → start of rapid dilation (~3–4 cm)", dur:"Nullipara: 6.4 ± 5.1 hr | Multipara: 4.8 ± 4.9 hr", color:C.tealLt },
{ name:"Active Phase", desc:"Rapid cervical dilation from ~3–4 cm → 10 cm", dur:"Nullipara: 4.6 ± 3.6 hr | Multipara: 2.4 ± 2.2 hr", color:C.teal },
];
phases.forEach((p,i) => {
slide.addShape(pres.ShapeType.rect, { x:0.25+i*4.85, y:2.82, w:4.55, h:1.45, fill:{color:p.color} });
slide.addText(p.name, { x:0.25+i*4.85, y:2.82, w:4.55, h:0.4, fontSize:17, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
slide.addText(p.desc, { x:0.25+i*4.85, y:3.24, w:4.55, h:0.55, fontSize:13, color:C.white, fontFace:"Calibri", align:"center", margin:4 });
slide.addText(p.dur, { x:0.25+i*4.85, y:3.82, w:4.55, h:0.43, fontSize:12, color:C.offWhite, fontFace:"Calibri", align:"center", italic:true, margin:0 });
});
slide.addText("Source: Friedman EA. Labor: Clinical Evaluation and Management. | Creasy & Resnik Ch. 40", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// SLIDE 6 – Friedman Curve & Normal Limits
tableSlide(pres, "Normal Labour Limits — Friedman's Data (Table 40.1)",
["Parameter", "Nulliparas (All)", "Nulliparas (Ideal)", "Multiparas (All)", "Multiparas (Ideal)"],
[
["Latent phase (hr)", "6.4 ± 5.1", "6.1 ± 4.0", "4.8 ± 4.9", "4.5 ± 4.2"],
["Active phase (hr)", "4.6 ± 3.6", "3.4 ± 1.5", "2.4 ± 2.2", "2.1 ± 2.0"],
["Total 1st stage (hr)", "11.0 ± 8.7", "9.5 ± 5.5", "7.2 ± 7.1", "6.6 ± 6.2"],
["Max rate of descent (cm/hr)", "3.3 ± 2.3", "3.6 ± 1.9", "6.6 ± 4.0", "7.0 ± 3.2"],
["2nd stage duration (hr)", "1.1 ± 0.8", "0.76 ± 0.5", "0.39 ± 0.3", "0.32 ± 0.3"],
]
);
// ─────────────── SECTION 2 ────────────────────────────────────────────────────
sectionDivider(pres, "02", "Physiology of Parturition");
// SLIDE 8
contentSlide(pres, "Physiology of Labour Initiation", [
"Uterine contractions occur throughout pregnancy — irregular, discoordinate, painless (Braxton Hicks)",
"Late third trimester: contractions become more frequent, intense, coordinated → cervical ripening begins",
"Cervical ripening: loss of collagen crosslinks, increased water content, prostaglandin-mediated remodelling",
"Progesterone withdrawal (functional) reduces myometrial quiescence → oxytocin receptor upregulation",
"CRH from placenta rises exponentially near term → acts as 'placental clock'",
"Fetal HPA axis maturation → cortisol surge → fetal lung maturation + parturition signalling",
"Decidual activation: prostaglandin E2 and F2α mediate gap junction formation and myometrial synchrony",
], { source:"Source: Creasy & Resnik's Maternal-Fetal Medicine, Ch. 40; Physiologic / endocrine parturition cascade" });
// ─────────────── SECTION 3 ────────────────────────────────────────────────────
sectionDivider(pres, "03", "Diagnosis of Labour");
// SLIDE 10
{
const slide = contentSlide(pres, "Diagnosis of Labour", [
"Regular, painful uterine contractions ≥ 2 in 10 minutes, each lasting ≥ 20–30 seconds",
"Accompanied by progressive cervical effacement and/or dilation on serial vaginal examination",
"Show (blood-stained mucus plug) may precede or accompany labour onset",
"Spontaneous rupture of membranes (SROM) — confirm with fern test / IGFBP-1 / AmniSure",
], { h:2.8 });
alertBox(slide, pres, 0.3, 3.5, 4.4, 0.7, "Latent Phase",
"Contractions present but cervix < 4 cm. NOT equivalent to active labour.", C.tealLt);
alertBox(slide, pres, 5.0, 3.5, 4.7, 0.7, "False Labour",
"Irregular contractions, no cervical change. Discharge home with clear instructions.", C.orange);
alertBox(slide, pres, 0.3, 4.35, 9.4, 0.65, "Active Labour (ACOG 2014)",
"Cervical dilation ≥ 6 cm with regular contractions. Previous threshold of 4 cm is now revised.", C.navy);
}
// ─────────────── SECTION 4 ────────────────────────────────────────────────────
sectionDivider(pres, "04", "Initial Assessment & Admission");
// SLIDE 12
contentSlide(pres, "Initial Assessment on Admission", [
"Thorough obstetric history: parity, gestational age, previous labours, complications",
"Review antenatal notes: Group B Strep status, VBAC candidate, fetal position, placental site",
"Establish baseline vitals: BP, pulse, temperature, respiratory rate, O2 saturation",
"Abdominal examination: fundal height, fetal lie, presentation, engagement (fifths palpable)",
"Vaginal examination (VE): cervical effacement, dilation, consistency, position; fetal station; membranes intact?",
"Confirm gestational age and expected date of delivery (EDD)",
"IV access + bloods (FBC, G&S, coagulation if indicated)",
"Urinalysis; establish IV access if high-risk or requesting regional analgesia",
], { source:"Source: RCOG / ACOG intrapartum care guidelines; Creasy & Resnik Ch. 40" });
// SLIDE 13 – Bishop Score
tableSlide(pres, "Bishop Score — Cervical Favourability",
["Parameter", "Score 0", "Score 1", "Score 2", "Score 3"],
[
["Dilation (cm)", "Closed", "1–2", "3–4", "≥ 5"],
["Effacement (%)", "0–30", "40–50", "60–70", "≥ 80"],
["Station", "–3", "–2", "–1/0", "+1/+2"],
["Consistency", "Firm", "Medium", "Soft", "—"],
["Position", "Posterior", "Mid", "Anterior", "—"],
]
);
// ─────────────── SECTION 5 ────────────────────────────────────────────────────
sectionDivider(pres, "05", "Partogram — Use & Interpretation");
// SLIDE 15
contentSlide(pres, "The Partogram", [
"Graphical tool for continuous intrapartum surveillance of labour progress",
"WHO modified partogram: plots cervical dilation against time on a grid with alert and action lines",
"Alert line: begins at 4 cm (active labour), plots expected dilation rate of 1 cm/hr",
"Action line: parallel to alert line, 4 hours to the right — indicates need for intervention",
"Components: cervical dilation, fetal descent, uterine contractions, fetal heart rate, maternal vitals, medications",
"WHO meta-analyses show partogram use reduces prolonged labour, need for augmentation, and emergency CS",
"Descent plotted as fifths of fetal head palpable abdominally: 5/5 = completely above pelvic brim; 0/5 = engaged",
"Contraction frequency, duration, and strength documented every 30 minutes",
], { source:"Source: WHO Partogram | Creasy & Resnik Ch. 40" });
// ─────────────── SECTION 6 ────────────────────────────────────────────────────
sectionDivider(pres, "06", "Monitoring the Mother");
// SLIDE 17
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Maternal Monitoring — Frequency & Parameters", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const rows = [
{ param:"Blood pressure", latent:"Hourly", active:"Every 30 min" },
{ param:"Pulse rate", latent:"Hourly", active:"Every 30 min" },
{ param:"Temperature", latent:"4-hourly", active:"4-hourly (2-hourly if ROM)" },
{ param:"Urine output", latent:"Each void", active:"Each void; catheterize if epidural" },
{ param:"Contractions", latent:"Hourly", active:"Every 30 min" },
{ param:"Cervical dilation", latent:"4-hourly VE", active:"4-hourly VE (2-hourly if slow progress)" },
{ param:"Fetal descent", latent:"4-hourly", active:"Every VE" },
];
const tblData = [
[
{ text:"Parameter", options:{ bold:true, color:C.white, fill:{color:C.teal}, fontSize:14, fontFace:"Calibri", align:"center" } },
{ text:"Latent Phase", options:{ bold:true, color:C.white, fill:{color:C.teal}, fontSize:14, fontFace:"Calibri", align:"center" } },
{ text:"Active Phase", options:{ bold:true, color:C.white, fill:{color:C.teal}, fontSize:14, fontFace:"Calibri", align:"center" } },
],
...rows.map((r,i) => [
{ text:r.param, options:{ fontSize:13, color:C.textDark, fill:{color: i%2===0 ? "E8EEF4" : C.white}, fontFace:"Calibri" } },
{ text:r.latent, options:{ fontSize:13, color:C.textDark, fill:{color: i%2===0 ? "E8EEF4" : C.white}, fontFace:"Calibri", align:"center" } },
{ text:r.active, options:{ fontSize:13, color:C.textDark, fill:{color: i%2===0 ? "E8EEF4" : C.white}, fontFace:"Calibri", align:"center" } },
])
];
slide.addTable(tblData, { x:0.25, y:1.2, w:9.5, colW:[3.3,3.1,3.1], rowH:0.44, border:{pt:1,color:C.lightGrey} });
slide.addText("Source: RCOG Intrapartum Care Guideline | Creasy & Resnik Ch. 40", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// ─────────────── SECTION 7 ────────────────────────────────────────────────────
sectionDivider(pres, "07", "Fetal Monitoring");
// SLIDE 19
twoColSlide(pres, "Fetal Heart Rate Monitoring",
[
"Auscultation (Intermittent): Low-risk labours",
"Every 15 min in active phase (Doppler/Pinard)",
"Auscultate during and 1 min after contraction",
"Normal FHR: 110–160 bpm",
"Listen for 60 sec after contraction ends",
],
[
"Continuous CTG (EFM): High-risk labours",
"Indications: oxytocin use, epidural, meconium, IUGR, previous CS, abnormal auscultation",
"Use NICE/FIGO classification (Normal/Suspicious/Pathological)",
"Supplemented by FBS or lactate if suspicious/pathological trace",
],
"Intermittent Auscultation",
"Continuous Electronic Fetal Monitoring"
);
// SLIDE 20 – CTG interpretation
tableSlide(pres, "CTG Classification — NICE/FIGO Framework",
["Feature", "Reassuring", "Non-Reassuring", "Abnormal"],
[
["Baseline rate", "110–160 bpm", "100–109 or 161–180 bpm", "< 100 or > 180 bpm; sinusoidal"],
["Variability", "5–25 bpm", "< 5 bpm for 30–50 min", "< 5 bpm > 50 min; > 25 bpm"],
["Decelerations", "None or early", "Variable (< 3 min); single prolonged 3–5 min", "Atypical variable; late; prolonged > 5 min"],
["Accelerations", "Present", "Absent (not alone)", "—"],
]
);
// ─────────────── SECTION 8 ────────────────────────────────────────────────────
sectionDivider(pres, "08", "Pain Relief in Labour");
// SLIDE 22
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Analgesia in the First Stage of Labour", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const methods = [
{ name:"Non-pharmacological", items:"Hydrotherapy, massage, TENS, mobilisation, breathing techniques, continuous support (doula)", color:C.tealLt },
{ name:"Entonox (50% N₂O/O₂)", items:"Self-administered, rapid onset/offset. Does not affect labour progress. Nausea/dizziness possible.", color:C.teal },
{ name:"Opioids (Pethidine/Morphine)", items:"IM pethidine 100 mg or IV morphine. Antiemetic required. Neonatal respiratory depression risk; Narcan available.", color:"5D6D7E" },
{ name:"Epidural / CSE", items:"Gold standard for labour analgesia. Low-dose mobile epidural preferred. Monitor BP, motor block, FHR. Slows labour: manage with oxytocin augmentation.", color:C.navy },
];
methods.forEach((m, i) => {
const row = Math.floor(i/2);
const col = i%2;
const x = 0.25 + col*4.85;
const y = 1.22 + row*1.85;
slide.addShape(pres.ShapeType.rect, { x, y, w:4.55, h:1.75, fill:{color:m.color} });
slide.addText(m.name, { x:x+0.1, y:y+0.05, w:4.35, h:0.38, fontSize:15, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
slide.addText(m.items, { x:x+0.1, y:y+0.42, w:4.35, h:1.25, fontSize:13, color:C.white, fontFace:"Calibri", margin:4 });
});
}
// ─────────────── SECTION 9 ────────────────────────────────────────────────────
sectionDivider(pres, "09", "Managing the Latent Phase");
// SLIDE 24
{
const slide = contentSlide(pres, "Latent Phase Management", [
"Duration: up to 20 hr in nulliparas, 14 hr in multiparas before diagnosis of prolonged latent phase",
"Encourage mobilisation and upright positioning — reduces duration and analgesic requirements",
"Oral hydration; light diet if low-risk; IV fluids if vomiting or high-risk",
"Emotional support and companionship have been shown to shorten labour (Cochrane evidence)",
"Reassurance and explanation; clear communication about labour progress expectations",
"Analgesia as required — non-pharmacological methods first",
"Avoid unnecessary admission if not in active labour (cervix < 6 cm without regular painful contractions)",
], { h:3.7 });
alertBox(slide, pres, 0.3, 4.55, 4.5, 0.65, "Prolonged Latent Phase",
"Nullipara > 20 hr | Multipara > 14 hr — consider amniotomy + oxytocin augmentation", C.orange);
alertBox(slide, pres, 5.0, 4.55, 4.7, 0.65, "Beware",
"Premature admission in latent phase → higher CS rates (Zhang 2010 data).", C.red);
}
// ─────────────── SECTION 10 ────────────────────────────────────────────────────
sectionDivider(pres, "10", "Managing the Active Phase");
// SLIDE 26
contentSlide(pres, "Active Phase Management (≥ 6 cm)", [
"Continuous one-to-one midwifery care in active labour",
"Maternal position: encourage upright, lateral, or mobilisation; avoid prolonged supine (aortocaval compression)",
"Oral intake: sips of water acceptable; avoid heavy meals; nil by mouth if epidural or CS anticipated",
"Amniotomy (AROM): accelerates labour by 1–2 hr; perform only with clear indication and documented consent",
"Oxytocin augmentation: indicated for arrested or protracted active phase — titrate to 3–5 contractions per 10 min",
"Maximum oxytocin dose: 32–40 mU/min per ACOG; watch for tachysystole (> 5 contractions/10 min)",
"Catheterisation: indicated with epidural or poor urine output; 4-hourly measurement minimum",
"Document all interventions and fetal response in real time on partogram",
], { source:"Source: ACOG Practice Bulletin 2019 | Creasy & Resnik Ch. 40" });
// SLIDE 27 – Labour abnormalities
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.navyMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Labour Abnormalities — First Stage", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const abnormalities = [
{ name:"Protracted Active Phase", def:"Dilation < 1.2 cm/hr (nullipara) or < 1.5 cm/hr (multipara)", mgmt:"Assess for CPD, malpresentation | Amniotomy + Oxytocin | Continuous EFM", color:C.orange },
{ name:"Active Phase Arrest", def:"No cervical change for ≥ 4 hr with adequate contractions (> 200 MVU)", mgmt:"Assess adequacy of contractions | ACOG: if ≥ 6 cm, arrest ≠ arrest unless no change ≥ 4 hr with adequate ctx or ≥ 6 hr with inadequate ctx", color:C.red },
{ name:"Prolonged Latent Phase", def:"Nullipara > 20 hr; Multipara > 14 hr from onset of regular contractions", mgmt:"Therapeutic rest (morphine), re-evaluate, or amniotomy+oxytocin if in latent phase", color:"5D6D7E" },
];
abnormalities.forEach((a, i) => {
const y = 1.22 + i*1.3;
slide.addShape(pres.ShapeType.rect, { x:0.25, y, w:2.0, h:1.2, fill:{color:a.color} });
slide.addText(a.name, { x:0.25, y, w:2.0, h:1.2, fontSize:14, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:4 });
slide.addShape(pres.ShapeType.rect, { x:2.35, y, w:3.5, h:1.2, fill:{color:"E8EEF4"} });
slide.addText([{text:"Definition: ", options:{bold:true, fontSize:13}},{text:a.def, options:{fontSize:13}}], { x:2.35, y:y+0.05, w:3.5, h:1.1, color:C.textDark, fontFace:"Calibri", valign:"top", margin:6 });
slide.addShape(pres.ShapeType.rect, { x:5.95, y, w:3.8, h:1.2, fill:{color:C.offWhite} });
slide.addText([{text:"Management: ", options:{bold:true, fontSize:13}},{text:a.mgmt, options:{fontSize:12}}], { x:5.95, y:y+0.05, w:3.8, h:1.1, color:C.textDark, fontFace:"Calibri", valign:"top", margin:6 });
});
slide.addText("Source: Creasy & Resnik Ch. 40 | ACOG Committee Opinion on Safe Prevention of Primary CS", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// ─────────────── SECTION 11 ────────────────────────────────────────────────────
sectionDivider(pres, "11", "Special Situations");
// SLIDE 29
twoColSlide(pres, "Special Clinical Situations",
[
"VBAC: continuous EFM mandatory; oxytocin caution; low threshold for CS if abnormal trace",
"GBS colonisation: IV Benzylpenicillin at onset of labour; repeat q4h until delivery",
"Maternal fever in labour: suspect chorioamnionitis; blood cultures, IV antibiotics, expedite delivery",
"PPROM/Preterm labour: corticosteroids if < 34/40; neonatal team on standby; tocolysis not standard",
],
[
"Meconium-stained liquor (MSL): thick green MSL — paediatrician to attend delivery; expedite if non-reassuring",
"Oligohydramnios: increased risk of cord compression; consider amnioinfusion in selected cases",
"Multiple pregnancy: high-risk unit; continuous EFM from active labour onset",
"Induction of labour (IOL): cervical ripening with PGE2 gel / balloon; amniotomy + oxytocin for SROM",
],
"Maternal Conditions",
"Fetal & Obstetric Complications"
);
// SLIDE 30 – Key Takeaways
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.navy} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.gold} });
slide.addText("Key Clinical Takeaways", { x:0.5, y:0.2, w:9.2, h:0.7, fontSize:30, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
const points = [
"Active labour now defined as ≥ 6 cm (ACOG 2014) — reduces unnecessary CS for failure to progress",
"Partogram (alert + action lines) is the cornerstone of intrapartum surveillance",
"One-to-one support in labour reduces duration, analgesia use, and operative delivery rates",
"Epidural analgesia is safe but may slow labour — augment with oxytocin when indicated",
"EFM is not superior to intermittent auscultation in low-risk labour; reserve for high-risk",
"Arrest of active phase: ≥ 4 hr no dilation with adequate contractions before CS is appropriate",
"Upright positioning and mobilisation improve labour efficiency with minimal risk",
"Good documentation and clear communication remain non-negotiable standards of care",
];
const bulletItems = points.map((p,i) => ({
text:`${i+1}. ${p}`,
options:{ bullet:false, fontSize:16, color:C.offWhite, fontFace:"Calibri", breakLine: i < points.length-1, paraSpaceAfter:5 }
}));
slide.addText(bulletItems, { x:0.5, y:1.05, w:9.2, h:4.3, valign:"top", margin:4 });
slide.addText("Sources: Creasy & Resnik's Maternal-Fetal Medicine | ACOG | RCOG | WHO Partogram Guidelines", { x:0.5, y:5.25, w:9.2, h:0.3, fontSize:11, color:C.lightGrey, fontFace:"Calibri", italic:true, margin:0 });
}
// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/first-stage-labour/First_Stage_of_Labour.pptx" })
.then(() => console.log("DONE: /home/daytona/workspace/first-stage-labour/First_Stage_of_Labour.pptx"))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
cd /home/daytona/workspace/first-stage-labour && node build.js 2>&1
ls -lh /home/daytona/workspace/first-stage-labour/First_Stage_of_Labour.pptx
First Stage of Labour
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title slide |
| 2 | Presentation outline |
| 3 | Section divider: Definition & Phases |
| 4 | Definition of the first stage |
| 5 | Stages of labour & Friedman's phases (visual layout) |
| 6 | Friedman normal limits table (nullipara vs multipara) |
| 7 | Section divider: Physiology |
| 8 | Physiology of parturition (progesterone withdrawal, oxytocin receptors, CRH clock, prostaglandins) |
| 9 | Section divider: Diagnosis |
| 10 | Diagnosis of labour — active vs latent vs false labour; ACOG 2014 revision (≥ 6 cm threshold) |
| 11 | Section divider: Initial Assessment |
| 12 | Admission assessment checklist |
| 13 | Bishop score table |
| 14 | Section divider: Partogram |
| 15 | Partogram — components, alert line, action line, WHO evidence |
| 16 | Section divider: Maternal Monitoring |
| 17 | Maternal monitoring frequency table (latent vs active phase) |
| 18 | Section divider: Fetal Monitoring |
| 19 | Intermittent auscultation vs continuous EFM (two-column) |
| 20 | CTG classification — NICE/FIGO framework (table) |
| 21 | Section divider: Pain Relief |
| 22 | Analgesia options — non-pharmacological, Entonox, opioids, epidural/CSE |
| 23 | Section divider: Latent Phase |
| 24 | Latent phase management with alert boxes for prolonged latent phase |
| 25 | Section divider: Active Phase |
| 26 | Active phase management — amniotomy, oxytocin, positioning |
| 27 | Labour abnormalities — protracted active phase, arrest, prolonged latent phase |
| 28 | Section divider: Special Situations |
| 29 | VBAC, GBS, meconium, preterm, multiple pregnancy, IOL |
| 30 | Key clinical takeaways (8 evidence-based points) |
First stage of labour ppt
First Stage of Labour
Presentation · PPTX
Second stage of labour ppt
~/first-stage-labour/build_second.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Management of the Second Stage of Labour";
pres.author = "Obstetrics & Gynaecology";
// ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
// Deep plum/burgundy dominates; teal-green accent; warm white text; amber highlight
const C = {
plum: "2C1654",
plumMid: "3D1F72",
teal: "0D7377",
tealLt: "14A085",
amber: "E8A838",
white: "FFFFFF",
offWhite: "F4F1F9",
lightGrey:"D9D3E8",
textDark: "1A1030",
red: "C0392B",
green: "27AE60",
orange: "E67E22",
navy: "0A1F44",
};
// ─── HELPERS ─────────────────────────────────────────────────────────────────
function titleSlide(pres, title, subtitle) {
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.plum} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.teal} });
slide.addShape(pres.ShapeType.rect, { x:0.18, y:2.4, w:9.6, h:0.06, fill:{color:C.amber} });
slide.addText(title, { x:0.5, y:1.0, w:9.2, h:1.5, fontSize:38, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
slide.addText(subtitle, { x:0.5, y:2.6, w:9.2, h:0.55, fontSize:20, color:C.tealLt, fontFace:"Calibri", align:"left", margin:0 });
slide.addText("Creasy & Resnik's Maternal-Fetal Medicine, 8th Ed. | ACOG | RCOG", { x:0.5, y:4.9, w:9.2, h:0.4, fontSize:13, color:C.lightGrey, fontFace:"Calibri", align:"left", italic:true, margin:0 });
return slide;
}
function sectionDivider(pres, num, text) {
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.teal} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:0.12, fill:{color:C.amber} });
slide.addShape(pres.ShapeType.rect, { x:0, y:5.5, w:"100%", h:0.12, fill:{color:C.amber} });
slide.addText(`Section ${num}`, { x:0.6, y:1.5, w:8.8, h:0.5, fontSize:22, color:C.offWhite, fontFace:"Calibri", align:"left", margin:0 });
slide.addText(text, { x:0.6, y:2.1, w:8.8, h:1.6, fontSize:40, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
return slide;
}
function contentSlide(pres, title, bullets, opts = {}) {
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:25, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const items = bullets.map((b, i) => {
if (typeof b === "string") {
return { text:b, options:{ bullet:{type:"bullet"}, fontSize:17, color:C.textDark, fontFace:"Calibri", breakLine:i<bullets.length-1, paraSpaceAfter:4 } };
}
const o = { bullet:{type:"bullet"}, fontSize:b.sub?15:17, color:b.color||C.textDark, fontFace:"Calibri", breakLine:i<bullets.length-1, paraSpaceAfter:4 };
if (b.bold) o.bold=true;
if (b.indent) o.indentLevel=1;
return { text:b.text, options:o };
});
slide.addText(items, { x:0.4, y:opts.y||1.2, w:9.2, h:opts.h||3.8, valign:"top", margin:6 });
if (opts.source) slide.addText(opts.source, { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
return slide;
}
function alertBox(slide, pres, x, y, w, h, label, text, color) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill:{color} });
slide.addText([
{ text:label+": ", options:{ bold:true, fontSize:14, color:C.white, fontFace:"Calibri" } },
{ text, options:{ fontSize:13, color:C.white, fontFace:"Calibri" } }
], { x:x+0.1, y, w:w-0.2, h, valign:"middle", margin:4 });
}
function tableSlide(pres, title, headers, rows) {
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const tblData = [
headers.map(h => ({ text:h, options:{ bold:true, color:C.white, fill:{color:C.teal}, fontSize:14, align:"center", fontFace:"Calibri" } })),
...rows.map((row, ri) => row.map(cell => ({ text:cell, options:{ fontSize:13, color:C.textDark, fill:{color:ri%2===0?"EAE4F4":C.white}, fontFace:"Calibri", align:"center" } })))
];
slide.addTable(tblData, { x:0.25, y:1.2, w:9.5, colW:Array(headers.length).fill(9.5/headers.length), rowH:0.44, border:{pt:1,color:C.lightGrey} });
return slide;
}
function twoColSlide(pres, title, leftItems, rightItems, lHead, rHead) {
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText(title, { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:25, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
slide.addShape(pres.ShapeType.rect, { x:0.25, y:1.18, w:4.5, h:0.38, fill:{color:C.teal} });
slide.addText(lHead, { x:0.25, y:1.18, w:4.5, h:0.38, fontSize:14, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const lb = leftItems.map((b,i) => ({ text:b, options:{ bullet:{type:"bullet"}, fontSize:16, color:C.textDark, fontFace:"Calibri", breakLine:i<leftItems.length-1, paraSpaceAfter:4 } }));
slide.addText(lb, { x:0.25, y:1.62, w:4.5, h:3.6, valign:"top", margin:6 });
slide.addShape(pres.ShapeType.rect, { x:5.0, y:1.18, w:4.7, h:0.38, fill:{color:C.plum} });
slide.addText(rHead, { x:5.0, y:1.18, w:4.7, h:0.38, fontSize:14, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const rb = rightItems.map((b,i) => ({ text:b, options:{ bullet:{type:"bullet"}, fontSize:16, color:C.textDark, fontFace:"Calibri", breakLine:i<rightItems.length-1, paraSpaceAfter:4 } }));
slide.addText(rb, { x:5.0, y:1.62, w:4.7, h:3.6, valign:"top", margin:6 });
return slide;
}
// ─── BUILD SLIDES ─────────────────────────────────────────────────────────────
// SLIDE 1 – Title
titleSlide(pres, "Management of the\nSecond Stage of Labour", "For Clinicians & Consultants | Intrapartum Care");
// SLIDE 2 – Outline
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.plum} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.amber} });
slide.addText("Presentation Outline", { x:0.5, y:0.25, w:9.2, h:0.6, fontSize:28, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
const items = [
"1. Definition & Duration of the Second Stage",
"2. Physiology — Cardinal Movements of Labour",
"3. Diagnosis of the Second Stage",
"4. Maternal Monitoring",
"5. Fetal Monitoring in the Second Stage",
"6. Pushing — Techniques & Positioning",
"7. Normal Spontaneous Vaginal Delivery (NSVD)",
"8. Perineal Management — Episiotomy & Tears",
"9. Prolonged Second Stage — Definitions & Causes",
"10. Abnormalities of Descent & Rotation",
"11. Instrumental Delivery — Forceps & Vacuum",
"12. Special Situations",
"13. Key Clinical Takeaways",
];
const ba = items.map((t,i) => ({ text:t, options:{ bullet:false, fontSize:16, color:C.offWhite, fontFace:"Calibri", breakLine:i<items.length-1, paraSpaceAfter:3 } }));
slide.addText(ba, { x:0.5, y:1.0, w:9.2, h:4.4, valign:"top", margin:4 });
}
// ─── SECTION 1 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "01", "Definition & Duration");
// SLIDE 4
{
const slide = contentSlide(pres, "Definition of the Second Stage", [
"Begins at complete cervical dilation (10 cm) and ends with delivery of the infant",
"Descent and rotation of the fetal head frequently begin before complete dilation (overlap with first stage)",
"Contemporary data (Zhang et al.) show slower rates of fetal head descent than Friedman's original data",
"First stage and second stage should not be regarded as separate biological entities — descent is continuous",
"The 2-hour second stage limit originated from Hellman & Prystowsky (pre-EFM era); misapplication led to unnecessary instrumental deliveries",
], { h:3.5, source:"Source: Creasy & Resnik Ch. 40 | Zhang et al. Am J Obstet Gynecol 2002" });
alertBox(slide, pres, 0.3, 4.55, 9.4, 0.65, "Key Concept",
"Duration alone is not an indication for intervention — fetal and maternal well-being guide decision-making.", C.teal);
}
// SLIDE 5 – Duration table
tableSlide(pres, "Normal Duration of the Second Stage",
["Parity", "No Epidural (median)", "With Epidural (median)", "Upper Limit — No Epidural", "Upper Limit — With Epidural"],
[
["Nulliparous", "~54 min", "~79 min", "2 hours", "3 hours"],
["Multiparous", "~19 min", "~45 min", "1 hour", "2 hours"],
]
);
// SLIDE 6 – Descent rate table
tableSlide(pres, "Rate of Fetal Head Descent — Zhang et al. Data",
["Station (Thirds)", "Time Interval (hr) median (5th–95th %ile)", "Rate (cm/hr)"],
[
["−2 → −1", "7.9 (0.9–65)", "0.2 (0.03–1.8)"],
["−1 → 0", "1.8 (0.1–23)", "0.9 (0.07–12)"],
["0 → +1", "1.4 (0.1–13)", "1.2 (0.12–12)"],
["+1 → +2 (2nd stage)", "0.27 (0.02–2.93)", "6.2 (0.57–3.9)"],
["+2 → +3 (2nd stage)", "0.11 (0.02–0.63)", "15.2 (2.6–83)"],
]
);
// ─── SECTION 2 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "02", "Physiology — Cardinal Movements");
// SLIDE 8
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Cardinal Movements of Labour (Vertex Presentation)", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const movements = [
{ n:"1. Engagement", d:"Biparietal diameter passes through pelvic inlet; head at 0 station" },
{ n:"2. Descent", d:"Progressive downward movement; begins in late 1st stage, accelerates in 2nd" },
{ n:"3. Flexion", d:"Chin flexes onto chest; smaller suboccipitobregmatic diameter presents" },
{ n:"4. Internal Rotation", d:"Occiput rotates anteriorly from transverse/oblique → OA position beneath pubic symphysis" },
{ n:"5. Extension", d:"Head extends under pubic arch; occiput, brow, face successively born" },
{ n:"6. External Rotation (Restitution)", d:"Head rotates back to align with fetal shoulders (45°)" },
{ n:"7. Expulsion", d:"Anterior shoulder under symphysis → posterior shoulder over perineum → body delivered" },
];
movements.forEach((m, i) => {
const col = i < 4 ? 0 : 1;
const row = i < 4 ? i : i-4;
const x = 0.25 + col*4.85;
const y = 1.18 + row*1.03;
slide.addShape(pres.ShapeType.rect, { x, y, w:4.55, h:0.95, fill:{color: i%2===0 ? "EAE4F4" : C.offWhite}, line:{color:C.lightGrey, pt:1} });
slide.addText(m.n, { x:x+0.1, y:y+0.04, w:4.35, h:0.36, fontSize:14, bold:true, color:C.plum, fontFace:"Calibri", margin:0 });
slide.addText(m.d, { x:x+0.1, y:y+0.42, w:4.35, h:0.46, fontSize:12, color:C.textDark, fontFace:"Calibri", margin:0 });
});
slide.addText("Source: Creasy & Resnik's Maternal-Fetal Medicine Ch. 40 | Williams Obstetrics", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// ─── SECTION 3 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "03", "Diagnosis & Monitoring");
// SLIDE 10
contentSlide(pres, "Diagnosing & Monitoring the Second Stage", [
"Confirmed by vaginal examination: cervix fully effaced and dilated to 10 cm",
"Urge to push: presenting part on perineum stimulates Ferguson reflex — involuntary bearing-down urge",
"Maternal vitals: BP, pulse every 5–15 min in second stage; more frequently with epidural",
"Urine output: ensure bladder is empty — full bladder obstructs descent and increases PPH risk",
"Fetal heart rate (FHR): auscultate every 5 min after every contraction (intermittent) OR continuous CTG",
"Document: duration of second stage, station and position at onset, changes in FHR, maternal condition",
"Notify senior obstetrician if: FHR abnormality, no progress in descent after 1 hr active pushing, maternal exhaustion",
], { source:"Source: RCOG Intrapartum Care | ACOG Practice Bulletin 2019 | Creasy & Resnik Ch. 40" });
// ─── SECTION 4 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "04", "Pushing Techniques & Positioning");
// SLIDE 12
twoColSlide(pres, "Pushing Techniques in the Second Stage",
[
"Directed (Valsalva) Pushing: sustained breath-holding + push for ≥ 10 sec with each contraction",
"Widely practised but associated with maternal fatigue, reduced FHR variability, and increased acidaemia risk",
"Commence pushing only when presenting part visible OR after passive descent of 1 hr (especially with epidural)",
"ACOG 2019: delayed pushing in nulliparas with epidural does NOT improve outcomes over immediate pushing",
],
[
"Physiological (spontaneous) pushing: push when urge occurs, shorter pushes of ~5–6 sec",
"Associated with fewer FHR decelerations and lower neonatal acidaemia rates in RCTs",
"Warm compresses to perineum during pushing reduce severe perineal tears (Cochrane evidence)",
"Upright positions (squatting, birth stool, lateral): reduce 2nd stage duration and episiotomy rates vs supine",
"Avoid dorsal lithotomy unless instrumental delivery required",
],
"Directed Valsalva Pushing",
"Physiological / Spontaneous Pushing"
);
// SLIDE 13 – Maternal positions
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Maternal Positions in the Second Stage", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:25, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const positions = [
{ name:"Upright / Squatting", pros:"Widens pelvic outlet; gravity assists; shorter 2nd stage", cons:"Increased blood loss; difficult FHR monitoring" },
{ name:"Left Lateral (Sims)", pros:"Reduces perineal trauma; good FHR monitoring", cons:"Less gravity assistance; practitioner positioning harder" },
{ name:"Hands & Knees", pros:"Reduces severe perineal tears; helps with OP rotation", cons:"Epidural patients may find difficult; monitoring harder" },
{ name:"Semi-recumbent / Dorsal", pros:"Standard; accessible for episiotomy and instrumental delivery", cons:"Aortocaval compression; gravity disadvantage; higher episiotomy rate" },
];
positions.forEach((p, i) => {
const col = i%2;
const row = Math.floor(i/2);
const x = 0.25 + col*4.85;
const y = 1.18 + row*2.1;
slide.addShape(pres.ShapeType.rect, { x, y, w:4.55, h:0.42, fill:{color:C.teal} });
slide.addText(p.name, { x, y, w:4.55, h:0.42, fontSize:16, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
slide.addShape(pres.ShapeType.rect, { x, y:y+0.42, w:4.55, h:0.76, fill:{color:"EAE4F4"} });
slide.addText([{text:"Advantages: ", options:{bold:true, fontSize:13}},{text:p.pros, options:{fontSize:13}}], { x:x+0.08, y:y+0.44, w:4.38, h:0.72, color:C.textDark, fontFace:"Calibri", valign:"top", margin:2 });
slide.addShape(pres.ShapeType.rect, { x, y:y+1.18, w:4.55, h:0.76, fill:{color:C.offWhite}, line:{color:C.lightGrey, pt:1} });
slide.addText([{text:"Limitations: ", options:{bold:true, fontSize:13}},{text:p.cons, options:{fontSize:13}}], { x:x+0.08, y:y+1.20, w:4.38, h:0.72, color:C.textDark, fontFace:"Calibri", valign:"top", margin:2 });
});
}
// ─── SECTION 5 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "05", "Normal Spontaneous Vaginal Delivery");
// SLIDE 15 – NSVD steps
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Steps of Normal Spontaneous Vaginal Delivery (NSVD)", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const steps = [
"Crowning: presenting part visible at introitus; patient pushes with contractions",
"Ritgen manoeuvre (modified): upward pressure on fetal chin through perineum to control extension; reduces perineal trauma",
"Delivery of the head: gentle guidance with hand on occiput; allow slow, controlled delivery between contractions",
"Check for nuchal cord: if present — reduce over the head or double-clamp and cut",
"Restitution & external rotation: head rotates 45° to align with shoulders",
"Delivery of anterior shoulder: gentle downward traction on head → anterior shoulder under symphysis",
"Delivery of posterior shoulder: gentle upward traction → posterior shoulder clears perineum",
"Delivery of body: rest of baby delivered with gentle traction + maternal push",
"Immediate care: dry and stimulate neonate; Apgar at 1 and 5 min; delayed cord clamping ≥ 1–3 min",
];
const ba = steps.map((s,i) => ({
text:`${i+1}. ${s}`,
options:{ bullet:false, fontSize:15, color:C.textDark, fontFace:"Calibri", breakLine:i<steps.length-1, paraSpaceAfter:4 }
}));
slide.addText(ba, { x:0.4, y:1.18, w:9.2, h:4.15, valign:"top", margin:4 });
slide.addText("Source: RCOG Guideline | Creasy & Resnik Ch. 40 | Williams Obstetrics", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// ─── SECTION 6 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "06", "Perineal Management");
// SLIDE 17
twoColSlide(pres, "Episiotomy & Perineal Tears",
[
"Episiotomy is NOT routine — use selectively",
"Indications: foetal distress requiring expedited delivery, shoulder dystocia, instrumental delivery, rigid perineum obstructing progress",
"Mediolateral preferred over midline — lower risk of 3rd/4th degree tears",
"Angle: 60° from midline at crowning (45° at rest)",
"Repair with Vicryl (polyglycolic acid); continuous suture technique preferred",
],
[
"Classification of perineal tears:",
"1st degree: skin only",
"2nd degree: skin + perineal muscles (not anal sphincter)",
"3rd degree: involves external anal sphincter (3a < 50%, 3b > 50%, 3c = internal sphincter)",
"4th degree: through rectal mucosa",
"3rd & 4th degree (OASIS): repair in OT under regional/GA; inform patient; antibiotic prophylaxis",
"Warm compresses during pushing reduce OASIS rates (Cochrane, Grade A)",
],
"Episiotomy",
"Perineal Tears (OASIS)"
);
// ─── SECTION 7 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "07", "Prolonged Second Stage");
// SLIDE 19
{
const slide = contentSlide(pres, "Prolonged Second Stage — Definitions", [
"ACOG definitions (with continuous EFM):",
{ text:"Nulliparous without epidural: > 2 hours active pushing", sub:true, indent:true },
{ text:"Nulliparous with epidural: > 3 hours active pushing", sub:true, indent:true },
{ text:"Multiparous without epidural: > 1 hour active pushing", sub:true, indent:true },
{ text:"Multiparous with epidural: > 2 hours active pushing", sub:true, indent:true },
"Time limits should NOT trigger automatic intervention — maternal and fetal status must be assessed",
"Safe Prevention guidelines (ACOG 2014): most women with adequate progress should be allowed to continue",
"Epidural anaesthesia increases 2nd stage duration — this alone is not pathological",
"KEY: passive vs active second stage — passive (head descending, no pushing) does not count toward limit",
], { source:"Source: ACOG Committee Opinion 2014 | Creasy & Resnik Ch. 40" });
}
// SLIDE 20 – Causes of prolonged 2nd stage
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Causes of Prolonged Second Stage — 3P Framework", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const ps = [
{
title:"Powers", color:C.teal,
items:["Inadequate uterine contractions","Ineffective maternal pushing (fatigue, epidural)","Poor Ferguson reflex if numb from epidural"]
},
{
title:"Passenger", color:C.plum,
items:["Macrosomia / large fetal head","Malposition: OP, OT, brow, face","Asynclitism","Compound presentation"]
},
{
title:"Passage", color:"5D6D7E",
items:["Contracted pelvis / CPD","Soft tissue dystocia (fibroid, ovarian cyst)","Inadequate perineal distensibility","Android or platypelloid pelvis"]
},
];
ps.forEach((p, i) => {
const x = 0.25 + i*3.2;
slide.addShape(pres.ShapeType.rect, { x, y:1.18, w:3.0, h:0.48, fill:{color:p.color} });
slide.addText(p.title, { x, y:1.18, w:3.0, h:0.48, fontSize:20, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
slide.addShape(pres.ShapeType.rect, { x, y:1.68, w:3.0, h:3.4, fill:{color: i%2===0?"EAE4F4":C.white}, line:{color:p.color, pt:2} });
const ba = p.items.map((it,j) => ({ text:it, options:{ bullet:{type:"bullet"}, fontSize:15, color:C.textDark, fontFace:"Calibri", breakLine:j<p.items.length-1, paraSpaceAfter:6 } }));
slide.addText(ba, { x:x+0.1, y:1.72, w:2.8, h:3.3, valign:"top", margin:6 });
});
slide.addText("Source: Creasy & Resnik Ch. 40 | RCOG / ACOG intrapartum guidelines", { x:0.3, y:5.25, w:9.4, h:0.3, fontSize:11, color:"888888", fontFace:"Calibri", italic:true, margin:0 });
}
// ─── SECTION 8 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "08", "Instrumental Delivery");
// SLIDE 22 – Indications
contentSlide(pres, "Instrumental Delivery — Indications & Prerequisites", [
"MATERNAL INDICATIONS:",
{ text:"Exhaustion / inability to push effectively", sub:true },
{ text:"Cardiorespiratory disease (avoid prolonged Valsalva)", sub:true },
{ text:"Neurological conditions (raised ICP, aneurysm)", sub:true },
"FETAL INDICATIONS:",
{ text:"Non-reassuring FHR (pathological CTG, fetal bradycardia)", sub:true },
{ text:"Cord prolapse in second stage", sub:true },
"PREREQUISITES (must ALL be met before proceeding):",
{ text:"Full cervical dilation | Head ≤ 1/5 palpable abdominally | Vertex presentation | Membranes ruptured | Exact position known | Pelvis adequate", sub:true },
{ text:"Anaesthesia adequate | Bladder empty (catheterise) | Consent obtained | OT available for failed instrumental", sub:true },
"Station at least +2 (mid-cavity) for rotational forceps or Kjelland's",
], { source:"Source: RCOG Green-top Guideline 26 | Creasy & Resnik Ch. 40" });
// SLIDE 23 – Forceps vs Vacuum
tableSlide(pres, "Forceps vs Vacuum Extraction — Comparison",
["Feature", "Forceps", "Vacuum (Ventouse)"],
[
["Mechanism", "Cephalic traction ± rotation", "Negative pressure cup traction"],
["Rotation capability", "Yes (Kjelland's, Barton)", "Limited (< 45° recommended)"],
["Maternal trauma", "Higher perineal/vaginal laceration", "Lower perineal trauma"],
["Fetal scalp injury", "Facial nerve palsy, brow marks", "Cephalhaematoma, chignon, subgaleal haemorrhage"],
["Failed attempt", "~5%", "~15–20%"],
["Preferred in preterm", "Yes (< 34 wks)", "Not recommended < 34 wks"],
["Requires anaesthesia", "Pudendal/regional/GA", "Often pudendal sufficient"],
["Learning curve", "Longer", "Shorter"],
]
);
// SLIDE 24 – Rotational delivery
contentSlide(pres, "Malposition in the Second Stage — Occiput Posterior (OP)", [
"Incidence: ~5% of term labours remain OP at delivery (up to 20% enter labour in OP)",
"Most rotate spontaneously during active pushing (long internal rotation 135°)",
"Persistent OP: failure to rotate to OA after active pushing — higher risk of prolonged 2nd stage, PPH, and 3rd/4th degree tears",
"Manual rotation: digital rotation to OA possible in early 2nd stage",
"Kjelland's rotational forceps: rotate from OP → OA then traction; requires expertise; regional/GA mandatory",
"Rotational vacuum: use 60° rotation increments; avoid > 2–3 pulls without descent",
"If all fails and CPD suspected: proceed to CS rather than traumatic mid-cavity delivery",
"Hands-and-knees position during pushing can facilitate OP → OA rotation",
], { source:"Source: RCOG GTG 26 | Creasy & Resnik Ch. 40" });
// ─── SECTION 9 ────────────────────────────────────────────────────────────────
sectionDivider(pres, "09", "Special Situations");
// SLIDE 26 – Shoulder dystocia
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Shoulder Dystocia — Recognition & HELPERR Drill", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:24, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
alertBox(slide, pres, 0.25, 1.18, 9.5, 0.55, "Definition",
"Failure of delivery of shoulders with normal traction after delivery of the fetal head. Call for HELP IMMEDIATELY.", C.red);
const helperr = [
{ l:"H", text:"Help — call for senior obstetrician, anaesthetist, paediatrician, extra midwife", color:C.red },
{ l:"E", text:"Evaluate for Episiotomy — improves access; does not relieve bony obstruction alone", color:C.orange },
{ l:"L", text:"Legs (McRoberts manoeuvre) — hyperflexion of thighs onto abdomen; flattens lumbar lordosis", color:C.tealLt },
{ l:"P", text:"Pressure (suprapubic) — firm continuous or rocking pressure to dislodge anterior shoulder", color:C.teal },
{ l:"E", text:"Enter (internal rotational manoeuvres) — Rubin II, Woods screw, Reverse Woods (Rubin II + Mazanti)", color:C.plumMid },
{ l:"R", text:"Remove the posterior arm — gentle traction on posterior arm/hand to deliver the posterior shoulder", color:"5D6D7E" },
{ l:"R", text:"Roll the patient (all-fours / Gaskin manoeuvre) — last resort before heroic measures", color:C.plum },
];
helperr.forEach((h, i) => {
const y = 1.85 + i*0.51;
slide.addShape(pres.ShapeType.rect, { x:0.25, y, w:0.45, h:0.45, fill:{color:h.color} });
slide.addText(h.l, { x:0.25, y, w:0.45, h:0.45, fontSize:18, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
slide.addText(h.text, { x:0.78, y:y+0.02, w:8.97, h:0.43, fontSize:13, color:C.textDark, fontFace:"Calibri", valign:"middle", margin:2 });
});
}
// SLIDE 27 – Other special situations
twoColSlide(pres, "Other Special Situations",
[
"VBAC 2nd stage: continuous EFM mandatory; signs of uterine rupture (FHR decelerations, maternal pain, loss of station)",
"Breech delivery: 2nd stage managed by experienced operator only; allow passive descent; Løvset manoeuvre for arms; Mauriceau-Smellie-Veit for aftercoming head",
"Multiple pregnancy: deliver 2nd twin within 30 min; continuous EFM for both; oxytocin between twins",
"Cord prolapse: immediate CS unless immediate vaginal delivery possible",
],
[
"Maternal cardiac disease: avoid prolonged Valsalva; elective instrumental delivery in 2nd stage",
"Fetal distress (pathological CTG): expedite delivery — maternal push, episiotomy, instrumental or CS depending on station and position",
"Preterm 2nd stage: experienced neonatologist present; consider forceps to protect preterm head",
"Maternal obesity: McRoberts position helpful; early epidural recommended for potential instrumental delivery",
],
"Complex Obstetric Scenarios",
"Medical & Fetal Complications"
);
// SLIDE 28 – Neonatal care at delivery
contentSlide(pres, "Immediate Neonatal Management at Birth", [
"Dry and stimulate: brisk drying with warm towel immediately after birth",
"Delayed cord clamping (DCC): ≥ 60 sec in vigorous term neonates; ≥ 30–60 sec in preterm (ACOG/WHO 2023)",
"Cord milking: acceptable alternative to DCC if immediate clamping required",
"Apgar score: assessed at 1 min and 5 min; score < 7 at 5 min → repeat at 10 min",
"Skin-to-skin contact: initiated immediately if mother and baby well; promotes thermoregulation and breastfeeding",
"Neonatal resuscitation: NLS protocol — warm, dry, position airway, assess tone/breathing/HR",
"Vitamin K: IM 1 mg at birth (1st dose); offer to all neonates for haemorrhagic disease prevention",
"Cord blood gases: obtain in all high-risk deliveries and when 5-min Apgar < 7",
], { source:"Source: NLS Guidelines | WHO 2023 DCC Recommendations | NICE CG190" });
// SLIDE 29 – Complications of 2nd stage
{
const slide = pres.addSlide();
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:"100%", h:1.0, fill:{color:C.plumMid} });
slide.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:"100%", h:0.06, fill:{color:C.teal} });
slide.addText("Complications of the Second Stage", { x:0.35, y:0.1, w:9.3, h:0.8, fontSize:26, bold:true, color:C.white, fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
const comps = [
{ name:"Postpartum Haemorrhage\n(PPH)", cause:"Uterine atony (most common), trauma, retained placenta, coagulopathy", mgmt:"HAEMOSTASIS / ALSO protocol; oxytocin 10 IU IM; activate PPH pathway", color:C.red },
{ name:"Fetal Distress", cause:"Umbilical cord compression, uteroplacental insufficiency, abruption", mgmt:"Repositioning, O₂, tocolysis, expedite delivery; FBS/lactate if borderline", color:C.orange },
{ name:"OASIS (3rd/4th degree tear)", cause:"Rapid delivery, large baby, OP position, instrumental delivery", mgmt:"Repair in OT; antibiotics + laxatives; pelvic floor physio follow-up", color:"5D6D7E" },
{ name:"Uterine Rupture", cause:"Previous uterine scar (VBAC), obstructed labour, oxytocin misuse", mgmt:"Immediate laparotomy; blood products; ICU admission", color:C.plum },
{ name:"Shoulder Dystocia", cause:"Macrosomia, DM, post-dates, previous SD", mgmt:"HELPERR drill; document birth-to-delivery interval; debrief team and patient", color:C.tealLt },
{ name:"Neonatal Birth Asphyxia", cause:"Prolonged 2nd stage, cord compression, abruption", mgmt:"NLS resuscitation; cord gases; consider therapeutic hypothermia if HIE ≥ moderate", color:C.navy },
];
comps.forEach((c, i) => {
const col = i%2;
const row = Math.floor(i/2);
const x = 0.25 + col*4.85;
const y = 1.22 + row*1.38;
slide.addShape(pres.ShapeType.rect, { x, y, w:4.55, h:0.38, fill:{color:c.color} });
slide.addText(c.name, { x, y, w:4.55, h:0.38, fontSize:13, bold:true, color:C.white, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
slide.addShape(pres.ShapeType.rect, { x, y:y+0.38, w:4.55, h:0.48, fill:{color:"EAE4F4"} });
slide.addText([{text:"Cause: ", options:{bold:true, fontSize:12}},{text:c.cause, options:{fontSize:12}}], { x:x+0.06, y:y+0.4, w:4.42, h:0.44, color:C.textDark, fontFace:"Calibri", valign:"top", margin:2 });
slide.addShape(pres.ShapeType.rect, { x, y:y+0.86, w:4.55, h:0.48, fill:{color:C.offWhite}, line:{color:C.lightGrey,pt:1} });
slide.addText([{text:"Mgmt: ", options:{bold:true, fontSize:12}},{text:c.mgmt, options:{fontSize:12}}], { x:x+0.06, y:y+0.88, w:4.42, h:0.44, color:C.textDark, fontFace:"Calibri", valign:"top", margin:2 });
});
}
// SLIDE 30 – Key Takeaways
{
const slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:"100%", h:"100%", fill:{color:C.plum} });
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.18, h:"100%", fill:{color:C.amber} });
slide.addText("Key Clinical Takeaways", { x:0.5, y:0.2, w:9.2, h:0.7, fontSize:30, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
const pts = [
"Duration limits alone are insufficient to mandate intervention — maternal and fetal status must guide decisions",
"Passive second stage (descending head, no active pushing) does not count toward the limit",
"Physiological pushing reduces fetal acidaemia; warm perineal compresses reduce OASIS rates",
"Delayed cord clamping ≥ 60 sec improves iron stores and neurodevelopmental outcomes",
"HELPERR drill for shoulder dystocia must be drilled by all intrapartum teams — time critical",
"Instrumental delivery: all prerequisites must be confirmed before application; failed instrumental is not a failure",
"Episiotomy is NOT routine — use selectively; mediolateral angle reduces OASIS",
"Document all interventions, timings, and fetal responses meticulously — medico-legal and quality improvement imperative",
];
const ba = pts.map((p,i) => ({
text:`${i+1}. ${p}`,
options:{ bullet:false, fontSize:15.5, color:C.offWhite, fontFace:"Calibri", breakLine:i<pts.length-1, paraSpaceAfter:5 }
}));
slide.addText(ba, { x:0.5, y:1.05, w:9.2, h:4.3, valign:"top", margin:4 });
slide.addText("Sources: Creasy & Resnik's Maternal-Fetal Medicine | ACOG | RCOG GTG 26 | WHO | NICE CG190", { x:0.5, y:5.25, w:9.2, h:0.3, fontSize:11, color:C.lightGrey, fontFace:"Calibri", italic:true, margin:0 });
}
// ─── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName:"/home/daytona/workspace/first-stage-labour/Second_Stage_of_Labour.pptx" })
.then(() => console.log("DONE"))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/first-stage-labour && node build_second.js 2>&1
ls -lh /home/daytona/workspace/first-stage-labour/Second_Stage_of_Labour.pptx
Second Stage of Labour
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title slide |
| 2 | Presentation outline |
| 3 | Section: Definition & Duration |
| 4 | Definition — overlap with 1st stage; duration not an automatic trigger for intervention |
| 5 | Normal duration table (nullipara/multipara, with/without epidural) |
| 6 | Rate of fetal head descent — Zhang et al. data table |
| 7 | Section: Physiology |
| 8 | Cardinal movements of labour — all 7 steps (visual grid) |
| 9 | Section: Diagnosis & Monitoring |
| 10 | Diagnosis, monitoring frequency, documentation |
| 11 | Section: Pushing |
| 12 | Directed (Valsalva) vs physiological pushing — two-column comparison |
| 13 | Maternal positions — four options with advantages and limitations |
| 14 | Section: NSVD |
| 15 | Steps of normal spontaneous vaginal delivery (9-step guide) |
| 16 | Section: Perineal Management |
| 17 | Episiotomy indications + perineal tear classification (1st–4th degree / OASIS) |
| 18 | Section: Prolonged 2nd Stage |
| 19 | ACOG definitions of prolonged second stage |
| 20 | Causes — 3P framework (Powers, Passenger, Passage) |
| 21 | Section: Instrumental Delivery |
| 22 | Indications & prerequisites for instrumental delivery |
| 23 | Forceps vs Vacuum — comparison table |
| 24 | Persistent OP — management, Kjelland's forceps, rotational vacuum |
| 25 | Section: Special Situations |
| 26 | Shoulder dystocia — HELPERR drill (colour-coded, step-by-step) |
| 27 | VBAC, breech, multiple pregnancy, cord prolapse, maternal cardiac disease |
| 28 | Immediate neonatal management — delayed cord clamping, Apgar, Vitamin K |
| 29 | Complications grid — PPH, fetal distress, OASIS, uterine rupture, shoulder dystocia, birth asphyxia |
| 30 | Key clinical takeaways (8 evidence-based points) |