Can u make ppt of wound classification and wound healing using Bailey and love
mkdir -p /home/daytona/workspace/wound-ppt && ls /home/daytona/workspace/wound-ppt
~/wound-ppt/create_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = 'LAYOUT_WIDE';
pres.author = 'Bailey & Love';
pres.title = 'Wound Classification and Wound Healing';
// ─── COLOUR PALETTE ───────────────────────────────────────────
const C = {
navyDark: "0D1B2A",
navy: "1B2A4A",
teal: "1A7A6E",
tealLight: "25A99A",
gold: "E8A020",
white: "FFFFFF",
offWhite: "F0F4F8",
grey: "7A8A9A",
lightGrey: "D0D8E4",
red: "C0392B",
green: "1E8449",
};
// ─── HELPER: SECTION DIVIDER SLIDE ───────────────────────────
function addDividerSlide(title, subtitle) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navyDark } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.1, w: 13.3, h: 0.08, fill: { color: C.tealLight } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.22, w: 13.3, h: 0.04, fill: { color: C.gold } });
s.addText(title, {
x: 1, y: 1.8, w: 11.3, h: 1.1, fontSize: 44, bold: true,
color: C.white, fontFace: "Calibri", align: "center", valign: "middle",
});
if (subtitle) {
s.addText(subtitle, {
x: 1, y: 3.5, w: 11.3, h: 0.7, fontSize: 22,
color: C.tealLight, fontFace: "Calibri", align: "center",
});
}
// Bailey & Love watermark bottom-right
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.0, w: 6, h: 0.4, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: CONTENT SLIDE ────────────────────────────────────
function addContentSlide(title, bullets, opts = {}) {
let s = pres.addSlide();
// Background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
// Left accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
// Title bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
// Title text
s.addText(title, {
x: 0.3, y: 0.0, w: 12.7, h: 1.0,
fontSize: 26, bold: true, color: C.white, fontFace: "Calibri",
valign: "middle", margin: 0,
});
// Bullets
const textArr = bullets.map((b, i) => {
const isLast = i === bullets.length - 1;
if (typeof b === "string") {
return { text: b, options: { bullet: true, breakLine: !isLast, fontSize: 18, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } };
}
// Sub-bullet: { text, sub: true }
return { text: b.text, options: { bullet: { indent: 40 }, breakLine: !isLast, fontSize: 16, color: C.navy, fontFace: "Calibri", italic: b.italic || false, paraSpaceBefore: 2 } };
});
s.addText(textArr, {
x: 0.4, y: 1.15, w: opts.w || 12.5, h: opts.h || 6.0,
valign: "top",
});
// Footer
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: TWO-COLUMN SLIDE ────────────────────────────────
function addTwoColSlide(title, leftBullets, rightBullets, leftTitle, rightTitle) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText(title, {
x: 0.3, y: 0.0, w: 12.7, h: 1.0,
fontSize: 26, bold: true, color: C.white, fontFace: "Calibri",
valign: "middle", margin: 0,
});
// Left column
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.teal }, line: { color: C.teal } });
s.addText(leftTitle, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const lArr = leftBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < leftBullets.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addText(lArr, { x: 0.4, y: 1.75, w: 6.0, h: 5.4, valign: "top" });
// Divider
s.addShape(pres.ShapeType.line, { x: 6.65, y: 1.2, w: 0, h: 6.0, line: { color: C.lightGrey, width: 1.5, dashType: "dash" } });
// Right column
s.addShape(pres.ShapeType.rect, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(rightTitle, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fontSize: 16, bold: true, color: C.navyDark, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const rArr = rightBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < rightBullets.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addText(rArr, { x: 6.9, y: 1.75, w: 6.0, h: 5.4, valign: "top" });
// Footer
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: PHASE CARD SLIDE ────────────────────────────────
function addPhaseSlide(phaseNum, phaseName, color, timeframe, cells) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: color } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navyDark } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: color } });
s.addText(`Phase ${phaseNum}: ${phaseName}`, {
x: 0.3, y: 0, w: 9, h: 1.0, fontSize: 28, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText(timeframe, {
x: 9.3, y: 0.1, w: 3.8, h: 0.8,
fontSize: 18, bold: true, color: color, fontFace: "Calibri",
align: "right", valign: "middle",
});
// Card-style boxes for each point
const colW = 5.9;
const startX = [0.3, 6.65, 0.3, 6.65];
const startY = [1.2, 1.2, 4.0, 4.0];
cells.forEach((cell, i) => {
if (!cell) return;
s.addShape(pres.ShapeType.rect, {
x: startX[i], y: startY[i], w: colW, h: 2.5,
fill: { color: C.white },
line: { color: color, width: 1.5 },
shadow: { type: "outer", blur: 4, offset: 2, angle: 45, color: "AAAAAA", opacity: 0.25 },
});
s.addText(cell.heading, {
x: startX[i] + 0.1, y: startY[i], w: colW - 0.2, h: 0.55,
fontSize: 15, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0,
fill: { color: color },
});
const bArr = cell.points.map((p, j) => ({
text: p, options: { bullet: true, breakLine: j < cell.points.length - 1, fontSize: 14, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 3 },
}));
s.addText(bArr, { x: startX[i] + 0.1, y: startY[i] + 0.6, w: colW - 0.2, h: 1.85, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: TABLE SLIDE ─────────────────────────────────────
function addTableSlide(title, rows) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText(title, {
x: 0.3, y: 0, w: 12.7, h: 1.0, fontSize: 26, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addTable(rows, {
x: 0.4, y: 1.15, w: 12.5, h: 6.1,
fontFace: "Calibri",
border: { type: "solid", pt: 0.5, color: C.lightGrey },
colW: [1.8, 10.7],
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navyDark } });
// Bottom decorative strip
s.addShape(pres.ShapeType.rect, { x: 0, y: 6.8, w: 13.3, h: 0.7, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 6.7, w: 13.3, h: 0.12, fill: { color: C.gold } });
// Top accent
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.12, fill: { color: C.tealLight } });
// Geometric accent rectangles
s.addShape(pres.ShapeType.rect, { x: 10.5, y: 0.12, w: 2.8, h: 6.5, fill: { color: C.navy }, line: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 11.0, y: 0.12, w: 0.08, h: 6.5, fill: { color: C.tealLight } });
s.addText("WOUND CLASSIFICATION", {
x: 0.7, y: 1.2, w: 9.6, h: 1.0, fontSize: 38, bold: true,
color: C.tealLight, fontFace: "Calibri", charSpacing: 3,
});
s.addText("& WOUND HEALING", {
x: 0.7, y: 2.15, w: 9.6, h: 0.9, fontSize: 38, bold: true,
color: C.white, fontFace: "Calibri", charSpacing: 3,
});
s.addShape(pres.ShapeType.rect, { x: 0.7, y: 3.2, w: 4.0, h: 0.07, fill: { color: C.gold } });
s.addText("Based on Bailey & Love's Short Practice of Surgery", {
x: 0.7, y: 3.4, w: 9.6, h: 0.55, fontSize: 20, italic: true,
color: C.lightGrey, fontFace: "Calibri",
});
s.addText("Chapter 3 — Wounds, Wound Healing and Scarring", {
x: 0.7, y: 3.95, w: 9.6, h: 0.5, fontSize: 18,
color: C.grey, fontFace: "Calibri",
});
s.addText("27th Edition", {
x: 0.7, y: 6.85, w: 4, h: 0.5, fontSize: 14, bold: true,
color: C.white, fontFace: "Calibri",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / TABLE OF CONTENTS
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.1, fill: { color: C.tealLight } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.4, w: 13.3, h: 0.1, fill: { color: C.gold } });
s.addText("OVERVIEW", {
x: 0.5, y: 0.25, w: 12, h: 0.8, fontSize: 32, bold: true,
color: C.white, fontFace: "Calibri", charSpacing: 4,
});
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 1.05, w: 3.0, h: 0.06, fill: { color: C.gold } });
const sections = [
{ num: "01", label: "Normal Wound Healing in Skin", sub: "Phases: Haemostasis · Inflammation · Proliferation · Remodelling" },
{ num: "02", label: "Abnormal Wound Healing", sub: "Hypertrophic scars · Keloid scars · Factors affecting healing" },
{ num: "03", label: "Types of Wound Healing", sub: "Primary · Secondary · Tertiary (Delayed Primary)" },
{ num: "04", label: "Classification of Wounds", sub: "CDC Surgical Wound Classification · Aetiology · Depth · Complexity" },
{ num: "05", label: "Wound Management", sub: "Assessment · Treatment principles" },
];
sections.forEach((sec, i) => {
const y = 1.2 + i * 1.15;
s.addShape(pres.ShapeType.rect, { x: 0.5, y, w: 1.0, h: 0.9, fill: { color: C.teal } });
s.addText(sec.num, { x: 0.5, y, w: 1.0, h: 0.9, fontSize: 24, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 1.6, y, w: 11.1, h: 0.9, fill: { color: "1E3A5F" } });
s.addText(sec.label, { x: 1.75, y: y + 0.05, w: 10.8, h: 0.45, fontSize: 18, bold: true, color: C.white, fontFace: "Calibri", valign: "bottom" });
s.addText(sec.sub, { x: 1.75, y: y + 0.48, w: 10.8, h: 0.38, fontSize: 13, color: C.tealLight, fontFace: "Calibri", italic: true });
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND HEALING
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND HEALING", "Normal Physiology of Wound Repair");
// ══════════════════════════════════════════════════════════════
// SLIDE 3 — PHASES OVERVIEW (Timeline graphic)
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText("PHASES OF NORMAL WOUND HEALING", {
x: 0.3, y: 0, w: 12.7, h: 1.0, fontSize: 26, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
// Intro text
s.addText("Wound healing proceeds through 3 overlapping, distinct phases. An additional phase — Haemostasis — occurs immediately before Inflammation.", {
x: 0.4, y: 1.15, w: 12.5, h: 0.7, fontSize: 17, color: C.navy, fontFace: "Calibri", italic: true,
});
// Phase boxes
const phases = [
{ label: "Haemostasis", time: "Minutes–Hours", color: C.red, x: 0.4, w: 2.7 },
{ label: "Inflammation", time: "Days 1–3", color: "E86A10", x: 3.3, w: 2.7 },
{ label: "Proliferation", time: "Day 3 – 4 Weeks", color: C.teal, x: 6.2, w: 3.5 },
{ label: "Remodelling", time: "Months–2 Years", color: C.navy, x: 9.9, w: 3.0 },
];
phases.forEach(p => {
s.addShape(pres.ShapeType.rect, { x: p.x, y: 2.0, w: p.w, h: 1.3, fill: { color: p.color } });
s.addText(p.label, { x: p.x, y: 2.0, w: p.w, h: 0.75, fontSize: 18, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "bottom" });
s.addText(p.time, { x: p.x, y: 2.75, w: p.w, h: 0.55, fontSize: 13, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", italic: true });
// Down arrow
s.addShape(pres.ShapeType.rect, { x: p.x + p.w / 2 - 0.05, y: 3.3, w: 0.1, h: 0.35, fill: { color: p.color } });
});
// Key points for each phase
const keyPoints = [
{ x: 0.4, color: C.red, pts: ["Vasoconstriction", "Platelet plug forms", "Coagulation cascade → Fibrin clot"] },
{ x: 3.3, color: "E86A10", pts: ["Neutrophils (days 1–2)", "Macrophages (days 2–3)", "Rubor, tumor, calor, dolor"] },
{ x: 6.2, color: C.teal, pts: ["Fibroblast activity (day 3+)", "Collagen synthesis", "Angiogenesis + epithelialisation", "Granulation tissue formation"] },
{ x: 9.9, color: C.navy, pts: ["Collagen remodelling (type III→I)", "Tensile strength increases", "Myofibroblast contraction", "Scar matures: pale, flat"] },
];
const colWs = [2.7, 2.7, 3.5, 3.0];
keyPoints.forEach((kp, i) => {
const arr = kp.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < kp.pts.length - 1, fontSize: 14, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addShape(pres.ShapeType.rect, { x: kp.x, y: 3.65, w: colWs[i], h: 3.45, fill: { color: C.white }, line: { color: kp.color, width: 1.5 } });
s.addText(arr, { x: kp.x + 0.1, y: 3.7, w: colWs[i] - 0.2, h: 3.35, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true, color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 4 — HAEMOSTASIS (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(1, "Haemostasis", C.red, "Minutes – Hours", [
{
heading: "Vascular Response",
points: ["Disruption of vascular endothelium → vasoconstriction", "Exposure of subendothelial extracellular matrix", "Limits initial blood loss"],
},
{
heading: "Platelet Activation & Aggregation",
points: ["Platelets adhere, activate, aggregate → platelet plug", "Alpha granules release growth factors: TGF-β, PDGF, FGF, EGF, VEGF", "Growth factors drive ECM deposition, chemotaxis, angiogenesis"],
},
{
heading: "Coagulation Cascade",
points: ["Tissue factor → initiates cascade", "Thrombin formed → converts fibrinogen → fibrin", "Fibrin stabilises platelet plug, forms scaffold for cells"],
},
{
heading: "Key Outcome",
points: ["Stable fibrin clot formed", "Scaffold ready for inflammatory cell infiltration", "Transition to inflammatory phase begins"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 5 — INFLAMMATION (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(2, "Inflammation", "E86A10", "Days 1–3", [
{
heading: "Early Phase (Days 1–2)",
points: ["Platelet activation → influx of PMNs, especially neutrophils", "Neutrophils: minimise bacterial contamination", "Vasoactive amines (histamine, serotonin) increase vascular permeability"],
},
{
heading: "Late Phase (Days 2–3)",
points: ["Monocytes appear → differentiate into macrophages", "Macrophages: phagocytosis + proteolytic debridement", "Primary producers of cytokines & growth factors"],
},
{
heading: "Cardinal Signs of Inflammation",
points: ["Rubor (redness)", "Tumor (swelling)", "Calor (heat)", "Dolor (pain)"],
},
{
heading: "Transition to Proliferation",
points: ["Macrophages release PDGF, TGF-β promoting fibroblast proliferation", "Angiogenesis stimulated", "Phase overlaps with proliferation from ~day 3"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 6 — PROLIFERATION (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(3, "Proliferation", C.teal, "Day 3 – 2–4 Weeks", [
{
heading: "Fibroblast Activity",
points: ["Start ~day 3; lasts 2–4 weeks", "Produce ground substance: glycosaminoglycans + proteoglycans", "Collagen synthesis — initially type III, later type I"],
},
{
heading: "Granulation Tissue",
points: ["Pink, granular appearance (early)", "Consists of new capillaries, fibroblasts, and ECM", "Fills wound defect from base upwards"],
},
{
heading: "Re-epithelialisation",
points: ["Epithelial cells migrate from wound edges & skin appendages", "Keratinocyte proliferation covers wound surface", "Dependent on moist wound environment"],
},
{
heading: "Angiogenesis",
points: ["VEGF & FGF drive new vessel formation", "Essential for oxygen/nutrient delivery", "New vessels visible as red, granular tissue"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 7 — REMODELLING (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(4, "Remodelling", C.navy, "Months – Up to 2 Years", [
{
heading: "Collagen Remodelling",
points: ["Type III collagen replaced by type I (stronger)", "Net collagen content decreases but organisation improves", "Collagen crosslinking increases tensile strength"],
},
{
heading: "Tensile Strength",
points: ["50% of original strength at 6 weeks", "80% by 3 months", "Never exceeds ~80% of original skin strength"],
},
{
heading: "Wound Contraction",
points: ["Myofibroblasts responsible for wound contraction", "Actin-containing cells contract wound edges", "Important mechanism in healing by secondary intention"],
},
{
heading: "Scar Maturation",
points: ["Initially red and raised", "Progressively becomes pale, flat, soft", "Vascularity decreases over months"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 8 — ABNORMAL WOUND HEALING
// ══════════════════════════════════════════════════════════════
addTwoColSlide(
"ABNORMAL WOUND HEALING",
[
"Confined within original wound boundary",
"Eventually spontaneously regress",
"Areas of increased tension",
"Wounds crossing tension lines",
"Deep dermal burns",
"Wounds healing by secondary intention (> 3 weeks)",
"Treatment: silicone, intralesional steroids, compression",
],
[
"Extend BEYOND original wound borders",
"Do NOT spontaneously regress",
"Can be locally destructive / debilitating",
"More common in darker skin types",
"Collagen arranged in disorganised pattern",
"Common sites: face, earlobes, deltoid, presternal",
"Treatment: excision + adjuvant radiotherapy; more resistant",
],
"HYPERTROPHIC SCARS",
"KELOID SCARS"
);
// ══════════════════════════════════════════════════════════════
// SLIDE 9 — FACTORS AFFECTING WOUND HEALING
// ══════════════════════════════════════════════════════════════
addTwoColSlide(
"FACTORS AFFECTING WOUND HEALING (Bailey & Love Summary Box 3.1)",
[
"Skin tension",
"Hypoxia and ischaemia",
"Vascular insufficiency",
"Lymphoedema",
"Contamination",
"Infection",
"Presence of foreign bodies",
"Radiotherapy",
],
[
"Advancing age",
"Obesity",
"Malnutrition",
"Smoking",
"Diabetes mellitus",
"Connective tissue diseases",
"Immunocompromised states (e.g. AIDS)",
"Medications: steroids, immunosuppressants, chemotherapy",
],
"LOCAL FACTORS",
"SYSTEMIC FACTORS"
);
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — TYPES OF WOUND HEALING
// ══════════════════════════════════════════════════════════════
addDividerSlide("TYPES OF WOUND HEALING", "Intentions of Healing — Summary Box 3.2");
// ══════════════════════════════════════════════════════════════
// SLIDE 10 — TYPES OF HEALING
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText("TYPES OF WOUND HEALING", {
x: 0.3, y: 0, w: 12.7, h: 1.0, fontSize: 26, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
const types = [
{
title: "1st INTENTION (Primary)",
color: C.green,
x: 0.35,
pts: ["Wound edges directly approximated", "Aim of surgical treatment", "No adverse influences → best scar", "Methods: sutures, staples, glue, tape"],
},
{
title: "2nd INTENTION (Secondary)",
color: "E86A10",
x: 4.65,
pts: ["Wound left OPEN", "Heals by granulation, contraction, re-epithelialisation", "Increased inflammation and proliferation", "Results in a poorer scar"],
},
{
title: "3rd INTENTION (Tertiary / Delayed Primary)",
color: C.navy,
x: 8.95,
pts: ["Wound initially left open (contaminated or untidy wounds)", "Edges apposed surgically after debridement", "Wound must be clean first", "Better outcome than secondary intention"],
},
];
types.forEach(t => {
s.addShape(pres.ShapeType.rect, {
x: t.x, y: 1.15, w: 4.1, h: 5.7,
fill: { color: C.white },
line: { color: t.color, width: 2 },
shadow: { type: "outer", blur: 5, offset: 2, angle: 45, color: "AAAAAA", opacity: 0.3 },
});
s.addShape(pres.ShapeType.rect, { x: t.x, y: 1.15, w: 4.1, h: 0.7, fill: { color: t.color } });
s.addText(t.title, {
x: t.x + 0.05, y: 1.15, w: 4.0, h: 0.7,
fontSize: 15, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle",
});
const arr = t.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < t.pts.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 6 } }));
s.addText(arr, { x: t.x + 0.15, y: 1.95, w: 3.8, h: 4.7, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND CLASSIFICATION
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND CLASSIFICATION", "Synopsis of Classification Systems — Summary Box 3.3");
// ══════════════════════════════════════════════════════════════
// SLIDE 11 — CDC SURGICAL WOUND CLASSIFICATION (Table)
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.1, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.1, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText("CDC SURGICAL WOUND CLASSIFICATION (Table 3.1)", {
x: 0.3, y: 0, w: 12.7, h: 1.1, fontSize: 24, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText("US Centers for Disease Prevention and Control — originally introduced by US National Research Council (1964)", {
x: 0.4, y: 1.2, w: 12.5, h: 0.45, fontSize: 14, italic: true, color: C.navy, fontFace: "Calibri",
});
const classColors = [C.green, "1A7A2E", "E86A10", C.red];
const classes = [
{ cls: "Class I\nCLEAN", color: classColors[0], desc: "Uninfected operative wounds\n• No inflammation encountered\n• Respiratory, alimentary, genital, or urinary tracts NOT entered\n• Primarily closed ± closed drainage" },
{ cls: "Class II\nCLEAN-CONTAMINATED", color: classColors[1], desc: "Respiratory, alimentary, genital or urinary tracts entered under controlled conditions\n• No unusual contamination\n• No evidence of infection or major break in technique" },
{ cls: "Class III\nCONTAMINATED", color: classColors[2], desc: "Open, fresh, accidental wounds\n• Major breaks in sterile technique (e.g. open cardiac massage)\n• Gross spillage from GI tract\n• Incisions with acute, non-purulent inflammation" },
{ cls: "Class IV\nDIRTY", color: classColors[3], desc: "Old traumatic wounds with retained devitalised tissue\n• Existing clinical infection\n• Perforated viscera\n• Organisms present in surgical field BEFORE operation" },
];
classes.forEach((c, i) => {
const y = 1.75 + i * 1.38;
s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 2.8, h: 1.25, fill: { color: c.color } });
s.addText(c.cls, { x: 0.4, y, w: 2.8, h: 1.25, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 3.3, y, w: 9.6, h: 1.25, fill: { color: C.white }, line: { color: c.color, width: 1 } });
s.addText(c.desc, { x: 3.4, y: y + 0.05, w: 9.4, h: 1.15, fontSize: 14, color: C.navyDark, fontFace: "Calibri", valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 12 — WOUND CLASSIFICATION: SYNOPSIS
// ══════════════════════════════════════════════════════════════
addContentSlide("WOUND CLASSIFICATION — SYNOPSIS (Summary Box 3.3)", [
"AETIOLOGY:",
{ text: "Clean surgical, shearing/degloving, crush, blast, burn (thermal/electrical/chemical/radiation), cold injury, avulsion/traction, low/high energy, bite", sub: true },
"DEPTH:",
{ text: "Epidermal, Dermal (superficial or deep), Full thickness", sub: true },
"CONTAMINATION:",
{ text: "Clean, Clean–contaminated, Contaminated, Dirty | With or without implant", sub: true },
"COMPLEXITY:",
{ text: "Simple, Complex, Significant soft-tissue loss, Open fracture/joint, Visceral involvement", sub: true },
"COMPLICATED:",
{ text: "Infection, Necrosis, Haematoma, Gas gangrene, Compartment syndrome", sub: true },
"CHRONIC:",
{ text: "Vascular ulcers (venous or arterial), Pressure ulcers, Diabetic ulcers", sub: true },
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 13 — NNIS RISK SCORE
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 1.0, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.0, w: 13.3, h: 0.06, fill: { color: C.gold } });
s.addText("NNIS RISK INDEX SCORE — Surgical Site Infection Risk", {
x: 0.3, y: 0, w: 12.7, h: 1.0, fontSize: 24, bold: true,
color: C.white, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText("National Nosocomial Infections Surveillance (NNIS) Score stratifies SSI risk. Score ranges from 0 (lowest) to 3 (highest).", {
x: 0.4, y: 1.15, w: 12.5, h: 0.6, fontSize: 16, italic: true, color: C.navy, fontFace: "Calibri",
});
s.addText("1 point is allocated for the presence of EACH of the following risk factors:", {
x: 0.4, y: 1.7, w: 12.5, h: 0.45, fontSize: 16, bold: true, color: C.navyDark, fontFace: "Calibri",
});
const factors = [
{ num: "+1", label: "Contaminated or Dirty Wound", detail: "Class III or IV wound on CDC classification", color: C.red },
{ num: "+1", label: "ASA Score ≥ 3", detail: "American Society of Anesthesiologists physical status score 3 or higher", color: "E86A10" },
{ num: "+1", label: "Prolonged Operative Time", detail: "Operative time longer than expected for similar procedures (> 75th percentile)", color: C.teal },
];
factors.forEach((f, i) => {
const x = 0.4 + i * 4.25;
s.addShape(pres.ShapeType.rect, { x, y: 2.3, w: 4.0, h: 4.8, fill: { color: C.white }, line: { color: f.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y: 2.3, w: 4.0, h: 1.1, fill: { color: f.color } });
s.addText(f.num, { x, y: 2.3, w: 1.1, h: 1.1, fontSize: 40, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addText(f.label, { x: x + 1.1, y: 2.3, w: 2.85, h: 1.1, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addText(f.detail, { x: x + 0.15, y: 3.5, w: 3.7, h: 3.5, fontSize: 16, color: C.navyDark, fontFace: "Calibri", valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND MANAGEMENT
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND MANAGEMENT", "Assessment & Treatment Principles");
// ══════════════════════════════════════════════════════════════
// SLIDE 14 — WOUND MANAGEMENT
// ══════════════════════════════════════════════════════════════
addContentSlide("WOUND MANAGEMENT — KEY PRINCIPLES", [
"Use ATLS principles: identify life-threatening → limb-threatening conditions first",
"Assess: site, size, geometry, nature of wound; signs of contamination, infection, swelling, pulsatile bleeding",
"Look for: skin loss, degloving, exposed structures, underlying fractures / dislocations",
"Correlate clinical examination with mechanism of injury (e.g. high-pressure injection injuries can track proximally)",
"Ensure adequate analgesia before palpation; test motor and sensory function before local anaesthesia",
"Imaging: to exclude foreign bodies, fractures, dislocations as appropriate",
"Thorough wound irrigation for better visualisation and decontamination",
"Multidisciplinary approach for complex wounds (e.g. open lower limb fractures: orthopaedic + plastic surgery)",
"Wound management guided by timing, mechanism of injury, and patient-specific factors affecting healing",
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 15 — SUMMARY / TAKE-HOME POINTS
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navyDark } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.1, fill: { color: C.tealLight } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.4, w: 13.3, h: 0.1, fill: { color: C.gold } });
s.addText("KEY TAKE-HOME POINTS", {
x: 0.5, y: 0.2, w: 12, h: 0.85, fontSize: 32, bold: true,
color: C.white, fontFace: "Calibri", charSpacing: 3,
});
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 1.05, w: 4.0, h: 0.06, fill: { color: C.gold } });
const points = [
{ emoji: "🔬", text: "Wound healing has 4 phases: Haemostasis → Inflammation → Proliferation → Remodelling" },
{ emoji: "⏱", text: "Remodelling is the longest phase (months to 2 years); tensile strength never exceeds ~80% of original" },
{ emoji: "📋", text: "CDC classification: Class I (Clean) → Class IV (Dirty) — standard for SSI risk assessment" },
{ emoji: "🩺", text: "NNIS score (0–3): contaminated wound + ASA ≥3 + prolonged operative time each add 1 point" },
{ emoji: "🔄", text: "3 types of healing: Primary (1st), Secondary (2nd — open wound), Tertiary/Delayed Primary (3rd)" },
{ emoji: "⚠️", text: "Hypertrophic scars stay within wound boundary; keloid scars extend beyond and do not regress" },
{ emoji: "🧬", text: "Macrophages are the master regulators of wound healing — phagocytosis, cytokine release, fibroblast stimulation" },
];
points.forEach((p, i) => {
const y = 1.2 + i * 0.82;
s.addShape(pres.ShapeType.rect, { x: 0.5, y, w: 12.2, h: 0.72, fill: { color: "1E3A5F" }, line: { color: C.teal, width: 0.5 } });
s.addText(p.emoji, { x: 0.55, y, w: 0.7, h: 0.72, fontSize: 22, align: "center", valign: "middle" });
s.addText(p.text, { x: 1.3, y, w: 11.2, h: 0.72, fontSize: 16, color: C.white, fontFace: "Calibri", valign: "middle" });
});
}
// ══════════════════════════════════════════════════════════════
// WRITE FILE
// ══════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/wound-ppt/Wound_Classification_Healing_BaileyLove.pptx" })
.then(() => console.log("✅ PPT created successfully!"))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
cd /home/daytona/workspace/wound-ppt && node create_ppt.js 2>&1
ls -lh /home/daytona/workspace/wound-ppt/
Wound Classification Healing BaileyLove
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Overview / Table of Contents |
| 3 | Divider — Wound Healing |
| 4 | Phases Overview (timeline graphic with all 4 phases) |
| 5 | Phase 1: Haemostasis (vasoconstriction, platelet plug, coagulation cascade, growth factors) |
| 6 | Phase 2: Inflammation (early neutrophils, late macrophages, cardinal signs) |
| 7 | Phase 3: Proliferation (fibroblasts, granulation tissue, re-epithelialisation, angiogenesis) |
| 8 | Phase 4: Remodelling (collagen remodelling, tensile strength, myofibroblasts, scar maturation) |
| 9 | Abnormal Healing — Hypertrophic vs Keloid scars (2-column comparison) |
| 10 | Factors Affecting Healing — Local vs Systemic (Summary Box 3.1) |
| 11 | Divider — Types of Wound Healing |
| 12 | 1st / 2nd / 3rd Intention healing (3-card layout) |
| 13 | Divider — Wound Classification |
| 14 | CDC Surgical Wound Classification Table (Classes I–IV) |
| 15 | NNIS Risk Index Score |
| 16 | Wound Classification Synopsis (aetiology, depth, contamination, complexity, chronic) |
| 17 | Wound Management principles |
| 18 | Key Take-Home Points |
Make it in white background
FFFFFF), change offWhite to white, darken the title bar text (navy on white instead of white on navy), and keep coloured accents only on narrow header strips and phase cards. Let me rewrite the file with the white-background theme.~/wound-ppt/create_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = 'LAYOUT_WIDE';
pres.author = 'Bailey & Love';
pres.title = 'Wound Classification and Wound Healing';
// ─── COLOUR PALETTE (White-background theme) ──────────────────
const C = {
navyDark: "0D1B2A",
navy: "1B2A4A",
teal: "1A7A6E",
tealLight: "25A99A",
gold: "E8A020",
white: "FFFFFF",
offWhite: "FFFFFF", // ALL backgrounds → pure white
grey: "7A8A9A",
lightGrey: "D0D8E4",
red: "C0392B",
green: "1E8449",
// text on white backgrounds
bodyText: "1B2A4A",
subText: "2C4A6E",
};
// ─── HELPER: SECTION DIVIDER SLIDE ────────────────────────────
function addDividerSlide(title, subtitle) {
let s = pres.addSlide();
// White background with left coloured block accent
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.5, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 0, w: 12.8, h: 0.08, fill: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 7.42, w: 12.8, h: 0.08, fill: { color: C.teal } });
// Central decorative line
s.addShape(pres.ShapeType.rect, { x: 1.0, y: 3.6, w: 6.0, h: 0.05, fill: { color: C.gold } });
s.addText(title, {
x: 1.0, y: 1.8, w: 11.8, h: 1.3, fontSize: 46, bold: true,
color: C.navyDark, fontFace: "Calibri", align: "left", valign: "middle",
});
if (subtitle) {
s.addText(subtitle, {
x: 1.0, y: 3.75, w: 11.8, h: 0.7, fontSize: 22,
color: C.teal, fontFace: "Calibri", align: "left",
});
}
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 0.7, y: 7.0, w: 12, h: 0.4, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: CONTENT SLIDE ────────────────────────────────────
function addContentSlide(title, bullets, opts = {}) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
// Left accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
// Title bar — white with teal bottom border
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText(title, {
x: 0.35, y: 0.0, w: 12.7, h: 1.0,
fontSize: 24, bold: true, color: C.navyDark, fontFace: "Calibri",
valign: "middle", margin: 0,
});
const textArr = bullets.map((b, i) => {
const isLast = i === bullets.length - 1;
if (typeof b === "string") {
return { text: b, options: { bullet: true, breakLine: !isLast, fontSize: 18, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 4 } };
}
return { text: b.text, options: { bullet: { indent: 40 }, breakLine: !isLast, fontSize: 16, color: C.subText, fontFace: "Calibri", italic: b.italic || false, paraSpaceBefore: 2 } };
});
s.addText(textArr, { x: 0.4, y: 1.15, w: opts.w || 12.5, h: opts.h || 6.0, valign: "top" });
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: TWO-COLUMN SLIDE ─────────────────────────────────
function addTwoColSlide(title, leftBullets, rightBullets, leftTitle, rightTitle) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText(title, {
x: 0.35, y: 0.0, w: 12.7, h: 1.0,
fontSize: 24, bold: true, color: C.navyDark, fontFace: "Calibri",
valign: "middle", margin: 0,
});
// Left column header
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.teal } });
s.addText(leftTitle, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
// Left column box
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.65, w: 6.0, h: 5.5, fill: { color: C.white }, line: { color: C.teal, width: 1.2 } });
const lArr = leftBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < leftBullets.length - 1, fontSize: 16, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addText(lArr, { x: 0.55, y: 1.72, w: 5.7, h: 5.35, valign: "top" });
// Divider
s.addShape(pres.ShapeType.line, { x: 6.65, y: 1.2, w: 0, h: 6.0, line: { color: C.lightGrey, width: 1, dashType: "dash" } });
// Right column header
s.addShape(pres.ShapeType.rect, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.gold } });
s.addText(rightTitle, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fontSize: 15, bold: true, color: C.navyDark, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
// Right column box
s.addShape(pres.ShapeType.rect, { x: 6.9, y: 1.65, w: 6.0, h: 5.5, fill: { color: C.white }, line: { color: C.gold, width: 1.2 } });
const rArr = rightBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < rightBullets.length - 1, fontSize: 16, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addText(rArr, { x: 7.05, y: 1.72, w: 5.7, h: 5.35, valign: "top" });
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ─── HELPER: PHASE CARD SLIDE ─────────────────────────────────
function addPhaseSlide(phaseNum, phaseName, color, timeframe, cells) {
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: color } });
// Title bar white with coloured underline
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: color } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText(`Phase ${phaseNum}: ${phaseName}`, {
x: 0.35, y: 0, w: 9, h: 1.0, fontSize: 28, bold: true,
color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText(timeframe, {
x: 9.3, y: 0.1, w: 3.8, h: 0.8,
fontSize: 18, bold: true, color: color, fontFace: "Calibri",
align: "right", valign: "middle",
});
const colW = 5.9;
const startX = [0.3, 6.65, 0.3, 6.65];
const startY = [1.2, 1.2, 4.0, 4.0];
cells.forEach((cell, i) => {
if (!cell) return;
s.addShape(pres.ShapeType.rect, {
x: startX[i], y: startY[i], w: colW, h: 2.5,
fill: { color: C.white },
line: { color: color, width: 1.5 },
});
s.addShape(pres.ShapeType.rect, { x: startX[i], y: startY[i], w: colW, h: 0.52, fill: { color: color } });
s.addText(cell.heading, {
x: startX[i] + 0.05, y: startY[i], w: colW - 0.1, h: 0.52,
fontSize: 14, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0,
});
const bArr = cell.points.map((p, j) => ({
text: p, options: { bullet: true, breakLine: j < cell.points.length - 1, fontSize: 14, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 3 },
}));
s.addText(bArr, { x: startX[i] + 0.1, y: startY[i] + 0.56, w: colW - 0.2, h: 1.9, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
return s;
}
// ══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
// Left decorative band
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.5, h: 7.5, fill: { color: C.teal } });
// Top gold line
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 0, w: 12.8, h: 0.08, fill: { color: C.gold } });
// Bottom accent
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 7.0, w: 12.8, h: 0.5, fill: { color: C.navyDark } });
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 6.95, w: 12.8, h: 0.07, fill: { color: C.tealLight } });
// Right subtle geometric
s.addShape(pres.ShapeType.rect, { x: 10.5, y: 0.08, w: 2.3, h: 6.87, fill: { color: "F5F7FA" }, line: { color: "E0E8F0", width: 0.5 } });
s.addText("WOUND CLASSIFICATION", {
x: 0.9, y: 1.2, w: 9.4, h: 1.0, fontSize: 38, bold: true,
color: C.teal, fontFace: "Calibri", charSpacing: 2,
});
s.addText("& WOUND HEALING", {
x: 0.9, y: 2.15, w: 9.4, h: 0.9, fontSize: 38, bold: true,
color: C.navyDark, fontFace: "Calibri", charSpacing: 2,
});
s.addShape(pres.ShapeType.rect, { x: 0.9, y: 3.18, w: 4.5, h: 0.07, fill: { color: C.gold } });
s.addText("Based on Bailey & Love's Short Practice of Surgery", {
x: 0.9, y: 3.35, w: 9.4, h: 0.55, fontSize: 20, italic: true,
color: C.navy, fontFace: "Calibri",
});
s.addText("Chapter 3 — Wounds, Wound Healing and Scarring", {
x: 0.9, y: 3.9, w: 9.4, h: 0.5, fontSize: 18,
color: C.grey, fontFace: "Calibri",
});
s.addText("27th Edition", {
x: 0.9, y: 7.05, w: 4, h: 0.4, fontSize: 14, bold: true,
color: C.white, fontFace: "Calibri",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / TABLE OF CONTENTS
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("OVERVIEW", {
x: 0.35, y: 0.05, w: 12, h: 0.9, fontSize: 30, bold: true,
color: C.navyDark, fontFace: "Calibri", charSpacing: 4, valign: "middle",
});
const sections = [
{ num: "01", label: "Normal Wound Healing in Skin", sub: "Phases: Haemostasis · Inflammation · Proliferation · Remodelling", color: C.teal },
{ num: "02", label: "Abnormal Wound Healing", sub: "Hypertrophic scars · Keloid scars · Factors affecting healing", color: "E86A10" },
{ num: "03", label: "Types of Wound Healing", sub: "Primary · Secondary · Tertiary (Delayed Primary)", color: C.green },
{ num: "04", label: "Classification of Wounds", sub: "CDC Surgical Wound Classification · Aetiology · Depth · Complexity", color: C.navy },
{ num: "05", label: "Wound Management", sub: "Assessment · Treatment principles", color: C.red },
];
sections.forEach((sec, i) => {
const y = 1.2 + i * 1.2;
s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 1.0, h: 1.0, fill: { color: sec.color } });
s.addText(sec.num, { x: 0.4, y, w: 1.0, h: 1.0, fontSize: 26, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 1.5, y, w: 11.4, h: 1.0, fill: { color: C.white }, line: { color: sec.color, width: 1 } });
s.addShape(pres.ShapeType.rect, { x: 1.5, y, w: 0.06, h: 1.0, fill: { color: sec.color } });
s.addText(sec.label, { x: 1.75, y: y + 0.08, w: 10.8, h: 0.45, fontSize: 18, bold: true, color: C.navyDark, fontFace: "Calibri", valign: "bottom" });
s.addText(sec.sub, { x: 1.75, y: y + 0.5, w: 10.8, h: 0.4, fontSize: 13, color: C.teal, fontFace: "Calibri", italic: true });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND HEALING
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND HEALING", "Normal Physiology of Wound Repair");
// ══════════════════════════════════════════════════════════════
// SLIDE 4 — PHASES OVERVIEW (Timeline graphic)
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("PHASES OF NORMAL WOUND HEALING", {
x: 0.35, y: 0, w: 12.7, h: 1.0, fontSize: 26, bold: true,
color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText("Wound healing proceeds through 3 overlapping, distinct phases. Haemostasis occurs immediately before Inflammation.", {
x: 0.4, y: 1.15, w: 12.5, h: 0.6, fontSize: 16, color: C.navy, fontFace: "Calibri", italic: true,
});
const phases = [
{ label: "Haemostasis", time: "Minutes–Hours", color: C.red, x: 0.4, w: 2.7 },
{ label: "Inflammation", time: "Days 1–3", color: "E86A10", x: 3.3, w: 2.7 },
{ label: "Proliferation", time: "Day 3 – 4 Wks", color: C.teal, x: 6.2, w: 3.5 },
{ label: "Remodelling", time: "Months–2 Yrs", color: C.navy, x: 9.9, w: 3.0 },
];
phases.forEach(p => {
s.addShape(pres.ShapeType.rect, { x: p.x, y: 1.9, w: p.w, h: 1.2, fill: { color: p.color } });
s.addText(p.label, { x: p.x, y: 1.9, w: p.w, h: 0.7, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "bottom" });
s.addText(p.time, { x: p.x, y: 2.6, w: p.w, h: 0.5, fontSize: 12, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", italic: true });
s.addShape(pres.ShapeType.rect, { x: p.x + p.w / 2 - 0.05, y: 3.1, w: 0.1, h: 0.3, fill: { color: p.color } });
});
const keyPoints = [
{ x: 0.4, color: C.red, pts: ["Vasoconstriction", "Platelet plug forms", "Coagulation cascade → Fibrin clot"] },
{ x: 3.3, color: "E86A10", pts: ["Neutrophils (days 1–2)", "Macrophages (days 2–3)", "Rubor, tumor, calor, dolor"] },
{ x: 6.2, color: C.teal, pts: ["Fibroblast activity (day 3+)", "Collagen synthesis", "Angiogenesis + epithelialisation", "Granulation tissue formation"] },
{ x: 9.9, color: C.navy, pts: ["Collagen remodelling III→I", "Tensile strength increases", "Myofibroblast contraction", "Scar matures: pale, flat"] },
];
const colWs = [2.7, 2.7, 3.5, 3.0];
keyPoints.forEach((kp, i) => {
const arr = kp.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < kp.pts.length - 1, fontSize: 14, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 4 } }));
s.addShape(pres.ShapeType.rect, { x: kp.x, y: 3.4, w: colWs[i], h: 3.7, fill: { color: C.white }, line: { color: kp.color, width: 1.5 } });
s.addText(arr, { x: kp.x + 0.1, y: 3.45, w: colWs[i] - 0.2, h: 3.6, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true, color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 5 — HAEMOSTASIS (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(1, "Haemostasis", C.red, "Minutes – Hours", [
{
heading: "Vascular Response",
points: ["Disruption of vascular endothelium → vasoconstriction", "Exposure of subendothelial extracellular matrix", "Limits initial blood loss"],
},
{
heading: "Platelet Activation & Aggregation",
points: ["Platelets adhere, activate, aggregate → platelet plug", "Alpha granules release: TGF-β, PDGF, FGF, EGF, VEGF", "Growth factors drive ECM deposition, chemotaxis, angiogenesis"],
},
{
heading: "Coagulation Cascade",
points: ["Tissue factor → initiates cascade", "Thrombin formed → fibrinogen → fibrin", "Fibrin stabilises plug; forms scaffold for cells"],
},
{
heading: "Key Outcome",
points: ["Stable fibrin clot formed", "Scaffold ready for inflammatory cell infiltration", "Transition to inflammatory phase begins"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 6 — INFLAMMATION (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(2, "Inflammation", "E86A10", "Days 1–3", [
{
heading: "Early Phase (Days 1–2)",
points: ["Platelet activation → influx of PMNs, especially neutrophils", "Neutrophils: minimise bacterial contamination", "Histamine, serotonin increase vascular permeability"],
},
{
heading: "Late Phase (Days 2–3)",
points: ["Monocytes appear → differentiate into macrophages", "Macrophages: phagocytosis + proteolytic debridement", "Primary producers of cytokines & growth factors"],
},
{
heading: "Cardinal Signs of Inflammation",
points: ["Rubor (redness)", "Tumor (swelling)", "Calor (heat)", "Dolor (pain)"],
},
{
heading: "Transition to Proliferation",
points: ["Macrophages release PDGF, TGF-β → fibroblast proliferation", "Angiogenesis stimulated", "Phase overlaps proliferation from ~day 3"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 7 — PROLIFERATION (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(3, "Proliferation", C.teal, "Day 3 – 2–4 Weeks", [
{
heading: "Fibroblast Activity",
points: ["Starts ~day 3; lasts 2–4 weeks", "Produce ground substance: glycosaminoglycans + proteoglycans", "Collagen synthesis — initially type III, later type I"],
},
{
heading: "Granulation Tissue",
points: ["Pink, granular appearance (early phase)", "Consists of new capillaries, fibroblasts, and ECM", "Fills wound defect from base upwards"],
},
{
heading: "Re-epithelialisation",
points: ["Epithelial cells migrate from wound edges & skin appendages", "Keratinocyte proliferation covers wound surface", "Dependent on moist wound environment"],
},
{
heading: "Angiogenesis",
points: ["VEGF & FGF drive new vessel formation", "Essential for oxygen/nutrient delivery", "New vessels visible as red, granular tissue"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 8 — REMODELLING (detailed)
// ══════════════════════════════════════════════════════════════
addPhaseSlide(4, "Remodelling", C.navy, "Months – Up to 2 Years", [
{
heading: "Collagen Remodelling",
points: ["Type III collagen replaced by type I (stronger)", "Net collagen content decreases but organisation improves", "Collagen crosslinking increases tensile strength"],
},
{
heading: "Tensile Strength",
points: ["50% of original strength at 6 weeks", "80% by 3 months", "Never exceeds ~80% of original skin strength"],
},
{
heading: "Wound Contraction",
points: ["Myofibroblasts responsible for contraction", "Actin-containing cells contract wound edges", "Important in healing by secondary intention"],
},
{
heading: "Scar Maturation",
points: ["Initially red and raised", "Progressively becomes pale, flat, soft", "Vascularity decreases over months"],
},
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 9 — ABNORMAL WOUND HEALING
// ══════════════════════════════════════════════════════════════
addTwoColSlide(
"ABNORMAL WOUND HEALING",
[
"Confined within original wound boundary",
"Eventually spontaneously regress",
"Areas of increased tension",
"Wounds crossing tension lines",
"Deep dermal burns",
"Wounds healing by secondary intention (> 3 weeks)",
"Collagen in parallel pattern",
"Treatment: silicone, intralesional steroids, compression",
],
[
"Extend BEYOND original wound borders",
"Do NOT spontaneously regress",
"Can be locally destructive / debilitating",
"More common in darker skin types",
"Collagen in disorganised pattern",
"Common sites: face, earlobes, deltoid, presternal",
"May arise months after relatively minor trauma",
"Treatment: excision + adjuvant radiotherapy; more resistant",
],
"HYPERTROPHIC SCARS",
"KELOID SCARS"
);
// ══════════════════════════════════════════════════════════════
// SLIDE 10 — FACTORS AFFECTING WOUND HEALING
// ══════════════════════════════════════════════════════════════
addTwoColSlide(
"FACTORS AFFECTING WOUND HEALING (Summary Box 3.1)",
[
"Skin tension",
"Hypoxia and ischaemia",
"Vascular insufficiency",
"Lymphoedema",
"Contamination",
"Infection",
"Presence of foreign bodies",
"Radiotherapy",
],
[
"Advancing age",
"Obesity",
"Malnutrition",
"Smoking",
"Diabetes mellitus",
"Connective tissue diseases",
"Immunocompromised states (e.g. AIDS)",
"Medications: steroids, immunosuppressants, chemotherapy",
],
"LOCAL FACTORS",
"SYSTEMIC FACTORS"
);
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — TYPES OF WOUND HEALING
// ══════════════════════════════════════════════════════════════
addDividerSlide("TYPES OF WOUND HEALING", "Intentions of Healing — Summary Box 3.2");
// ══════════════════════════════════════════════════════════════
// SLIDE 11 — TYPES OF HEALING (3-card)
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("TYPES OF WOUND HEALING", {
x: 0.35, y: 0, w: 12.7, h: 1.0, fontSize: 26, bold: true,
color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0,
});
const types = [
{
title: "1st INTENTION\n(Primary)",
color: C.green,
x: 0.35,
pts: ["Wound edges directly approximated", "Aim of surgical treatment", "No adverse influences → best scar", "Methods: sutures, staples, glue, tape"],
},
{
title: "2nd INTENTION\n(Secondary)",
color: "E86A10",
x: 4.65,
pts: ["Wound left OPEN", "Heals by granulation, contraction, re-epithelialisation", "Increased inflammation and proliferation", "Results in a poorer scar"],
},
{
title: "3rd INTENTION\n(Tertiary / Delayed Primary)",
color: C.navy,
x: 8.95,
pts: ["Wound initially left open (contaminated/untidy)", "Edges apposed surgically after debridement", "Wound must be clean first", "Better outcome than secondary intention"],
},
];
types.forEach(t => {
s.addShape(pres.ShapeType.rect, {
x: t.x, y: 1.15, w: 4.1, h: 5.7,
fill: { color: C.white },
line: { color: t.color, width: 2 },
});
s.addShape(pres.ShapeType.rect, { x: t.x, y: 1.15, w: 4.1, h: 0.85, fill: { color: t.color } });
s.addText(t.title, {
x: t.x + 0.05, y: 1.15, w: 4.0, h: 0.85,
fontSize: 14, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle",
});
const arr = t.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < t.pts.length - 1, fontSize: 16, color: C.bodyText, fontFace: "Calibri", paraSpaceBefore: 8 } }));
s.addText(arr, { x: t.x + 0.15, y: 2.1, w: 3.8, h: 4.6, valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND CLASSIFICATION
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND CLASSIFICATION", "Synopsis of Classification Systems — Summary Box 3.3");
// ══════════════════════════════════════════════════════════════
// SLIDE 12 — CDC SURGICAL WOUND CLASSIFICATION
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.1, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.1, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.15, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("CDC SURGICAL WOUND CLASSIFICATION (Table 3.1)", {
x: 0.35, y: 0, w: 12.7, h: 1.1, fontSize: 24, bold: true,
color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText("US Centers for Disease Prevention and Control — originally introduced by US National Research Council (1964)", {
x: 0.4, y: 1.22, w: 12.5, h: 0.4, fontSize: 13, italic: true, color: C.navy, fontFace: "Calibri",
});
const classes = [
{ cls: "Class I\nCLEAN", color: C.green, desc: "Uninfected operative wounds | No inflammation encountered | Respiratory, alimentary, genital, or urinary tracts NOT entered | Primarily closed ± closed drainage" },
{ cls: "Class II\nCLEAN-CONTAMINATED", color: "1A7A2E", desc: "Respiratory, alimentary, genital or urinary tracts entered under controlled conditions | No unusual contamination | No evidence of infection or major break in technique" },
{ cls: "Class III\nCONTAMINATED", color: "E86A10", desc: "Open, fresh, accidental wounds | Major breaks in sterile technique | Gross spillage from GI tract | Incisions with acute, non-purulent inflammation" },
{ cls: "Class IV\nDIRTY", color: C.red, desc: "Old traumatic wounds with retained devitalised tissue | Existing clinical infection | Perforated viscera | Organisms present in surgical field BEFORE operation" },
];
classes.forEach((c, i) => {
const y = 1.7 + i * 1.4;
s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 2.8, h: 1.25, fill: { color: c.color } });
s.addText(c.cls, { x: 0.4, y, w: 2.8, h: 1.25, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 3.3, y, w: 9.6, h: 1.25, fill: { color: C.white }, line: { color: c.color, width: 1 } });
s.addText(c.desc, { x: 3.4, y: y + 0.07, w: 9.4, h: 1.12, fontSize: 14, color: C.bodyText, fontFace: "Calibri", valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 13 — WOUND CLASSIFICATION SYNOPSIS
// ══════════════════════════════════════════════════════════════
addContentSlide("WOUND CLASSIFICATION — SYNOPSIS (Summary Box 3.3)", [
"AETIOLOGY:",
{ text: "Clean surgical, shearing/degloving, crush, blast, burn (thermal/electrical/chemical/radiation), cold injury, avulsion/traction, low/high energy, bite", sub: true },
"DEPTH:",
{ text: "Epidermal, Dermal (superficial or deep), Full thickness", sub: true },
"CONTAMINATION:",
{ text: "Clean, Clean–contaminated, Contaminated, Dirty | With or without implant", sub: true },
"COMPLEXITY:",
{ text: "Simple, Complex, Significant soft-tissue loss, Open fracture/joint, Visceral involvement", sub: true },
"COMPLICATED:",
{ text: "Infection, Necrosis, Haematoma, Gas gangrene, Compartment syndrome", sub: true },
"CHRONIC:",
{ text: "Vascular ulcers (venous or arterial), Pressure ulcers, Diabetic ulcers", sub: true },
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 14 — NNIS RISK INDEX SCORE
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("NNIS RISK INDEX SCORE — Surgical Site Infection Risk", {
x: 0.35, y: 0, w: 12.7, h: 1.0, fontSize: 24, bold: true,
color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0,
});
s.addText("Score ranges 0 (lowest SSI risk) to 3 (highest). 1 point allocated for each of the following risk factors:", {
x: 0.4, y: 1.15, w: 12.5, h: 0.55, fontSize: 16, italic: true, color: C.navy, fontFace: "Calibri",
});
const factors = [
{ num: "+1", label: "Contaminated or Dirty Wound", detail: "Class III or IV wound on CDC surgical wound classification", color: C.red },
{ num: "+1", label: "ASA Score ≥ 3", detail: "American Society of Anesthesiologists physical status score 3 or higher indicating significant systemic disease", color: "E86A10" },
{ num: "+1", label: "Prolonged Operative Time", detail: "Operative time longer than expected for similar procedures (> 75th percentile)", color: C.teal },
];
factors.forEach((f, i) => {
const x = 0.4 + i * 4.25;
s.addShape(pres.ShapeType.rect, { x, y: 1.85, w: 4.0, h: 5.3, fill: { color: C.white }, line: { color: f.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y: 1.85, w: 4.0, h: 1.1, fill: { color: f.color } });
s.addText(f.num, { x, y: 1.85, w: 1.1, h: 1.1, fontSize: 40, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addText(f.label, { x: x + 1.1, y: 1.85, w: 2.85, h: 1.1, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addText(f.detail, { x: x + 0.15, y: 3.05, w: 3.7, h: 3.95, fontSize: 16, color: C.bodyText, fontFace: "Calibri", valign: "top" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// SECTION DIVIDER — WOUND MANAGEMENT
// ══════════════════════════════════════════════════════════════
addDividerSlide("WOUND MANAGEMENT", "Assessment & Treatment Principles");
// ══════════════════════════════════════════════════════════════
// SLIDE 15 — WOUND MANAGEMENT
// ══════════════════════════════════════════════════════════════
addContentSlide("WOUND MANAGEMENT — KEY PRINCIPLES", [
"Use ATLS principles: identify life-threatening → limb-threatening conditions first",
"Assess: site, size, geometry, nature of wound; signs of contamination, infection, swelling, pulsatile bleeding",
"Look for: skin loss, degloving, exposed structures, underlying fractures / dislocations",
"Correlate clinical examination with mechanism of injury (e.g. high-pressure injection injuries can track proximally)",
"Ensure adequate analgesia before palpation; test motor and sensory function before local anaesthesia",
"Imaging: to exclude foreign bodies, fractures, dislocations as appropriate",
"Thorough wound irrigation for better visualisation and decontamination",
"Multidisciplinary approach for complex wounds (e.g. open lower limb fractures: orthopaedic + plastic surgery)",
"Management guided by timing, mechanism of injury, and patient-specific factors affecting healing",
]);
// ══════════════════════════════════════════════════════════════
// SLIDE 16 — KEY TAKE-HOME POINTS
// ══════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 13.18, h: 1.0, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } });
s.addText("KEY TAKE-HOME POINTS", {
x: 0.35, y: 0, w: 12.7, h: 1.0, fontSize: 28, bold: true,
color: C.navyDark, fontFace: "Calibri", charSpacing: 2, valign: "middle", margin: 0,
});
const rowColors = [C.teal, "E86A10", C.green, C.navy, C.red, "8E44AD", C.teal];
const points = [
"Wound healing has 4 phases: Haemostasis → Inflammation → Proliferation → Remodelling",
"Remodelling is the longest phase (months to 2 years); tensile strength never exceeds ~80% of original",
"CDC classification: Class I (Clean) → Class IV (Dirty) — standard for SSI risk assessment",
"NNIS score (0–3): contaminated wound + ASA ≥3 + prolonged operative time each add 1 point",
"3 types of healing: Primary (1st), Secondary (2nd — open wound), Tertiary/Delayed Primary (3rd)",
"Hypertrophic scars stay within wound boundary; keloid scars extend beyond and do not regress",
"Macrophages are the master regulators of wound healing — phagocytosis, cytokines, fibroblast stimulation",
];
points.forEach((p, i) => {
const y = 1.2 + i * 0.82;
s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 0.55, h: 0.68, fill: { color: rowColors[i] } });
s.addText(`${i + 1}`, { x: 0.4, y, w: 0.55, h: 0.68, fontSize: 18, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 1.05, y, w: 11.9, h: 0.68, fill: { color: C.white }, line: { color: rowColors[i], width: 0.8 } });
s.addText(p, { x: 1.2, y: y + 0.02, w: 11.6, h: 0.64, fontSize: 15, color: C.bodyText, fontFace: "Calibri", valign: "middle" });
});
s.addText("Bailey & Love's Short Practice of Surgery", {
x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true,
color: C.grey, fontFace: "Calibri", align: "right",
});
}
// ══════════════════════════════════════════════════════════════
// WRITE FILE
// ══════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/wound-ppt/Wound_Classification_Healing_BaileyLove.pptx" })
.then(() => console.log("PPT created successfully!"))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
~/wound-ppt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-ppt/create_ppt.js'
~/wound-ppt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-ppt/create_ppt.js'
~/wound-ppt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-ppt/create_ppt.js'
~/wound-ppt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-ppt/create_ppt.js'
~/wound-ppt/create_ppt.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-ppt/create_ppt.js'
});). Let me fix that and update the rest of the file in one clean pass — it will be fastest to just rewrite the entire file from scratch with the white theme applied throughout:cat > /home/daytona/workspace/wound-ppt/create_ppt.js << 'JSEOF' const pptxgen = require("pptxgenjs"); const pres = new pptxgen(); pres.layout = 'LAYOUT_WIDE'; pres.author = 'Bailey & Love'; pres.title = 'Wound Classification and Wound Healing'; // ─── COLOUR PALETTE (White-background theme) ────────────────── const C = { navyDark: "0D1B2A", navy: "1B2A4A", teal: "1A7A6E", tealLight: "25A99A", gold: "E8A020", white: "FFFFFF", grey: "7A8A9A", lightGrey: "D0D8E4", red: "C0392B", green: "1E8449", }; function footer(s) { s.addText("Bailey & Love's Short Practice of Surgery", { x: 7, y: 7.1, w: 6, h: 0.35, fontSize: 11, italic: true, color: C.grey, fontFace: "Calibri", align: "right", }); } function titleBar(s, title, fontSize) { fontSize = fontSize || 24; s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: C.teal } }); s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } }); s.addText(title, { x: 0.35, y: 0, w: 12.7, h: 1.0, fontSize: fontSize, bold: true, color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0 }); } function whiteBg(s, accentColor) { s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } }); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 7.5, fill: { color: accentColor || C.teal } }); } // ─── SECTION DIVIDER ────────────────────────────────────────── function addDividerSlide(title, subtitle) { let s = pres.addSlide(); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } }); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.5, h: 7.5, fill: { color: C.teal } }); s.addShape(pres.ShapeType.rect, { x: 0.5, y: 0, w: 12.8, h: 0.08, fill: { color: C.gold } }); s.addShape(pres.ShapeType.rect, { x: 0.5, y: 7.42, w: 12.8, h: 0.08, fill: { color: C.teal } }); s.addShape(pres.ShapeType.rect, { x: 1.0, y: 3.6, w: 6.0, h: 0.05, fill: { color: C.gold } }); s.addText(title, { x: 1.0, y: 1.8, w: 11.8, h: 1.3, fontSize: 46, bold: true, color: C.navyDark, fontFace: "Calibri", align: "left", valign: "middle" }); if (subtitle) s.addText(subtitle, { x: 1.0, y: 3.75, w: 11.8, h: 0.7, fontSize: 22, color: C.teal, fontFace: "Calibri", align: "left" }); s.addText("Bailey & Love's Short Practice of Surgery", { x: 0.7, y: 7.0, w: 12, h: 0.4, fontSize: 11, italic: true, color: C.grey, fontFace: "Calibri", align: "right" }); return s; } // ─── CONTENT SLIDE ──────────────────────────────────────────── function addContentSlide(title, bullets, opts) { opts = opts || {}; let s = pres.addSlide(); whiteBg(s); titleBar(s, title); const textArr = bullets.map((b, i) => { const isLast = i === bullets.length - 1; if (typeof b === "string") return { text: b, options: { bullet: true, breakLine: !isLast, fontSize: 18, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } }; return { text: b.text, options: { bullet: { indent: 40 }, breakLine: !isLast, fontSize: 16, color: C.navy, fontFace: "Calibri", italic: b.italic || false, paraSpaceBefore: 2 } }; }); s.addText(textArr, { x: 0.4, y: 1.15, w: opts.w || 12.5, h: opts.h || 6.0, valign: "top" }); footer(s); return s; } // ─── TWO-COLUMN SLIDE ───────────────────────────────────────── function addTwoColSlide(title, leftBullets, rightBullets, leftTitle, rightTitle) { let s = pres.addSlide(); whiteBg(s); titleBar(s, title); // Left column s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.teal } }); s.addText(leftTitle, { x: 0.4, y: 1.2, w: 6.0, h: 0.45, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 }); s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.65, w: 6.0, h: 5.5, fill: { color: C.white }, line: { color: C.teal, width: 1.2 } }); const lArr = leftBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < leftBullets.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } })); s.addText(lArr, { x: 0.55, y: 1.72, w: 5.7, h: 5.35, valign: "top" }); // Divider s.addShape(pres.ShapeType.line, { x: 6.65, y: 1.2, w: 0, h: 6.0, line: { color: C.lightGrey, width: 1, dashType: "dash" } }); // Right column s.addShape(pres.ShapeType.rect, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fill: { color: C.gold } }); s.addText(rightTitle, { x: 6.9, y: 1.2, w: 6.0, h: 0.45, fontSize: 15, bold: true, color: C.navyDark, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 }); s.addShape(pres.ShapeType.rect, { x: 6.9, y: 1.65, w: 6.0, h: 5.5, fill: { color: C.white }, line: { color: C.gold, width: 1.2 } }); const rArr = rightBullets.map((b, i) => ({ text: b, options: { bullet: true, breakLine: i < rightBullets.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } })); s.addText(rArr, { x: 7.05, y: 1.72, w: 5.7, h: 5.35, valign: "top" }); footer(s); return s; } // ─── PHASE CARD SLIDE ───────────────────────────────────────── function addPhaseSlide(phaseNum, phaseName, color, timeframe, cells) { let s = pres.addSlide(); whiteBg(s, color); s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.0, w: 13.18, h: 0.05, fill: { color: color } }); s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.05, w: 13.18, h: 0.02, fill: { color: C.gold } }); s.addText("Phase " + phaseNum + ": " + phaseName, { x: 0.35, y: 0, w: 9, h: 1.0, fontSize: 28, bold: true, color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0 }); s.addText(timeframe, { x: 9.3, y: 0.1, w: 3.8, h: 0.8, fontSize: 18, bold: true, color: color, fontFace: "Calibri", align: "right", valign: "middle" }); const startX = [0.3, 6.65, 0.3, 6.65]; const startY = [1.2, 1.2, 4.0, 4.0]; const colW = 5.9; cells.forEach((cell, i) => { if (!cell) return; s.addShape(pres.ShapeType.rect, { x: startX[i], y: startY[i], w: colW, h: 2.5, fill: { color: C.white }, line: { color: color, width: 1.5 } }); s.addShape(pres.ShapeType.rect, { x: startX[i], y: startY[i], w: colW, h: 0.52, fill: { color: color } }); s.addText(cell.heading, { x: startX[i] + 0.05, y: startY[i], w: colW - 0.1, h: 0.52, fontSize: 14, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 }); const bArr = cell.points.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < cell.points.length - 1, fontSize: 14, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 3 } })); s.addText(bArr, { x: startX[i] + 0.1, y: startY[i] + 0.56, w: colW - 0.2, h: 1.9, valign: "top" }); }); footer(s); return s; } // ══════════════════════════════════════════════════════════════ // SLIDE 1 — TITLE // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.white } }); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.5, h: 7.5, fill: { color: C.teal } }); s.addShape(pres.ShapeType.rect, { x: 0.5, y: 0, w: 12.8, h: 0.08, fill: { color: C.gold } }); // Bottom bar s.addShape(pres.ShapeType.rect, { x: 0.5, y: 6.95, w: 12.8, h: 0.08, fill: { color: C.tealLight } }); s.addShape(pres.ShapeType.rect, { x: 0.5, y: 7.03, w: 12.8, h: 0.47, fill: { color: C.navyDark } }); // Right light block s.addShape(pres.ShapeType.rect, { x: 10.5, y: 0.08, w: 2.3, h: 6.87, fill: { color: "F5F7FA" }, line: { color: "E0E8F0", width: 0.5 } }); s.addText("WOUND CLASSIFICATION", { x: 0.9, y: 1.2, w: 9.4, h: 1.0, fontSize: 38, bold: true, color: C.teal, fontFace: "Calibri", charSpacing: 2 }); s.addText("& WOUND HEALING", { x: 0.9, y: 2.15, w: 9.4, h: 0.9, fontSize: 38, bold: true, color: C.navyDark, fontFace: "Calibri", charSpacing: 2 }); s.addShape(pres.ShapeType.rect, { x: 0.9, y: 3.18, w: 4.5, h: 0.07, fill: { color: C.gold } }); s.addText("Based on Bailey & Love's Short Practice of Surgery", { x: 0.9, y: 3.35, w: 9.4, h: 0.55, fontSize: 20, italic: true, color: C.navy, fontFace: "Calibri" }); s.addText("Chapter 3 — Wounds, Wound Healing and Scarring", { x: 0.9, y: 3.9, w: 9.4, h: 0.5, fontSize: 18, color: C.grey, fontFace: "Calibri" }); s.addText("27th Edition", { x: 0.9, y: 7.1, w: 4, h: 0.35, fontSize: 14, bold: true, color: C.white, fontFace: "Calibri" }); } // ══════════════════════════════════════════════════════════════ // SLIDE 2 — OVERVIEW // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); titleBar(s, "OVERVIEW", 30); const sections = [ { num: "01", label: "Normal Wound Healing in Skin", sub: "Phases: Haemostasis · Inflammation · Proliferation · Remodelling", color: C.teal }, { num: "02", label: "Abnormal Wound Healing", sub: "Hypertrophic scars · Keloid scars · Factors affecting healing", color: "E86A10" }, { num: "03", label: "Types of Wound Healing", sub: "Primary · Secondary · Tertiary (Delayed Primary)", color: C.green }, { num: "04", label: "Classification of Wounds", sub: "CDC Surgical Wound Classification · Aetiology · Depth · Complexity", color: C.navy }, { num: "05", label: "Wound Management", sub: "Assessment · Treatment principles", color: C.red }, ]; sections.forEach((sec, i) => { const y = 1.2 + i * 1.2; s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 1.0, h: 1.0, fill: { color: sec.color } }); s.addText(sec.num, { x: 0.4, y, w: 1.0, h: 1.0, fontSize: 26, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" }); s.addShape(pres.ShapeType.rect, { x: 1.5, y, w: 11.4, h: 1.0, fill: { color: C.white }, line: { color: sec.color, width: 1 } }); s.addShape(pres.ShapeType.rect, { x: 1.5, y, w: 0.06, h: 1.0, fill: { color: sec.color } }); s.addText(sec.label, { x: 1.75, y: y + 0.08, w: 10.8, h: 0.45, fontSize: 18, bold: true, color: C.navyDark, fontFace: "Calibri", valign: "bottom" }); s.addText(sec.sub, { x: 1.75, y: y + 0.5, w: 10.8, h: 0.4, fontSize: 13, color: C.teal, fontFace: "Calibri", italic: true }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // SECTION DIVIDERS // ══════════════════════════════════════════════════════════════ addDividerSlide("WOUND HEALING", "Normal Physiology of Wound Repair"); // ══════════════════════════════════════════════════════════════ // SLIDE 4 — PHASES OVERVIEW (Timeline) // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); titleBar(s, "PHASES OF NORMAL WOUND HEALING"); s.addText("Wound healing proceeds through 3 overlapping distinct phases. Haemostasis occurs immediately before Inflammation.", { x: 0.4, y: 1.15, w: 12.5, h: 0.6, fontSize: 16, color: C.navy, fontFace: "Calibri", italic: true, }); const phases = [ { label: "Haemostasis", time: "Minutes–Hours", color: C.red, x: 0.4, w: 2.7 }, { label: "Inflammation", time: "Days 1–3", color: "E86A10", x: 3.3, w: 2.7 }, { label: "Proliferation", time: "Day 3 – 4 Wks", color: C.teal, x: 6.2, w: 3.5 }, { label: "Remodelling", time: "Months–2 Yrs", color: C.navy, x: 9.9, w: 3.0 }, ]; phases.forEach(p => { s.addShape(pres.ShapeType.rect, { x: p.x, y: 1.9, w: p.w, h: 1.2, fill: { color: p.color } }); s.addText(p.label, { x: p.x, y: 1.9, w: p.w, h: 0.7, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "bottom" }); s.addText(p.time, { x: p.x, y: 2.6, w: p.w, h: 0.5, fontSize: 12, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", italic: true }); s.addShape(pres.ShapeType.rect, { x: p.x + p.w / 2 - 0.05, y: 3.1, w: 0.1, h: 0.3, fill: { color: p.color } }); }); const keyPoints = [ { x: 0.4, color: C.red, pts: ["Vasoconstriction", "Platelet plug forms", "Coagulation cascade → Fibrin clot"] }, { x: 3.3, color: "E86A10", pts: ["Neutrophils (days 1–2)", "Macrophages (days 2–3)", "Rubor, tumor, calor, dolor"] }, { x: 6.2, color: C.teal, pts: ["Fibroblast activity (day 3+)", "Collagen synthesis", "Angiogenesis + epithelialisation", "Granulation tissue formation"] }, { x: 9.9, color: C.navy, pts: ["Collagen remodelling III→I", "Tensile strength increases", "Myofibroblast contraction", "Scar matures: pale, flat"] }, ]; const colWs = [2.7, 2.7, 3.5, 3.0]; keyPoints.forEach((kp, i) => { const arr = kp.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < kp.pts.length - 1, fontSize: 14, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 4 } })); s.addShape(pres.ShapeType.rect, { x: kp.x, y: 3.4, w: colWs[i], h: 3.7, fill: { color: C.white }, line: { color: kp.color, width: 1.5 } }); s.addText(arr, { x: kp.x + 0.1, y: 3.45, w: colWs[i] - 0.2, h: 3.6, valign: "top" }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // SLIDES 5-8 — PHASE DETAILS // ══════════════════════════════════════════════════════════════ addPhaseSlide(1, "Haemostasis", C.red, "Minutes – Hours", [ { heading: "Vascular Response", points: ["Disruption of vascular endothelium → vasoconstriction", "Exposure of subendothelial extracellular matrix", "Limits initial blood loss"] }, { heading: "Platelet Activation & Aggregation", points: ["Platelets adhere, activate, aggregate → platelet plug", "Alpha granules release: TGF-β, PDGF, FGF, EGF, VEGF", "Growth factors drive ECM deposition, chemotaxis, angiogenesis"] }, { heading: "Coagulation Cascade", points: ["Tissue factor → initiates cascade", "Thrombin formed → fibrinogen → fibrin", "Fibrin stabilises plug; forms scaffold for cells"] }, { heading: "Key Outcome", points: ["Stable fibrin clot formed", "Scaffold ready for inflammatory cell infiltration", "Transition to inflammatory phase begins"] }, ]); addPhaseSlide(2, "Inflammation", "E86A10", "Days 1–3", [ { heading: "Early Phase (Days 1–2)", points: ["Platelet activation → influx of PMNs, especially neutrophils", "Neutrophils: minimise bacterial contamination", "Histamine, serotonin increase vascular permeability"] }, { heading: "Late Phase (Days 2–3)", points: ["Monocytes appear → differentiate into macrophages", "Macrophages: phagocytosis + proteolytic debridement", "Primary producers of cytokines & growth factors"] }, { heading: "Cardinal Signs of Inflammation", points: ["Rubor (redness)", "Tumor (swelling)", "Calor (heat)", "Dolor (pain)"] }, { heading: "Transition to Proliferation", points: ["Macrophages release PDGF, TGF-β → fibroblast proliferation", "Angiogenesis stimulated", "Phase overlaps proliferation from ~day 3"] }, ]); addPhaseSlide(3, "Proliferation", C.teal, "Day 3 – 2–4 Weeks", [ { heading: "Fibroblast Activity", points: ["Starts ~day 3; lasts 2–4 weeks", "Produce ground substance: glycosaminoglycans + proteoglycans", "Collagen synthesis — initially type III, later type I"] }, { heading: "Granulation Tissue", points: ["Pink, granular appearance (early phase)", "Consists of new capillaries, fibroblasts, and ECM", "Fills wound defect from base upwards"] }, { heading: "Re-epithelialisation", points: ["Epithelial cells migrate from wound edges & skin appendages", "Keratinocyte proliferation covers wound surface", "Dependent on moist wound environment"] }, { heading: "Angiogenesis", points: ["VEGF & FGF drive new vessel formation", "Essential for oxygen/nutrient delivery", "New vessels visible as red, granular tissue"] }, ]); addPhaseSlide(4, "Remodelling", C.navy, "Months – Up to 2 Years", [ { heading: "Collagen Remodelling", points: ["Type III collagen replaced by type I (stronger)", "Net collagen content decreases but organisation improves", "Collagen crosslinking increases tensile strength"] }, { heading: "Tensile Strength", points: ["50% of original strength at 6 weeks", "80% by 3 months", "Never exceeds ~80% of original skin strength"] }, { heading: "Wound Contraction", points: ["Myofibroblasts responsible for contraction", "Actin-containing cells contract wound edges", "Important in healing by secondary intention"] }, { heading: "Scar Maturation", points: ["Initially red and raised", "Progressively becomes pale, flat, soft", "Vascularity decreases over months"] }, ]); // ══════════════════════════════════════════════════════════════ // SLIDE 9 — ABNORMAL WOUND HEALING // ══════════════════════════════════════════════════════════════ addTwoColSlide( "ABNORMAL WOUND HEALING", ["Confined within original wound boundary","Eventually spontaneously regress","Areas of increased tension","Wounds crossing tension lines","Deep dermal burns","Wounds healing by secondary intention (> 3 weeks)","Collagen in parallel pattern","Treatment: silicone, intralesional steroids, compression"], ["Extend BEYOND original wound borders","Do NOT spontaneously regress","Can be locally destructive / debilitating","More common in darker skin types","Collagen in disorganised pattern","Common sites: face, earlobes, deltoid, presternal","May arise months after relatively minor trauma","Treatment: excision + adjuvant radiotherapy; more resistant"], "HYPERTROPHIC SCARS", "KELOID SCARS" ); // ══════════════════════════════════════════════════════════════ // SLIDE 10 — FACTORS AFFECTING WOUND HEALING // ══════════════════════════════════════════════════════════════ addTwoColSlide( "FACTORS AFFECTING WOUND HEALING (Summary Box 3.1)", ["Skin tension","Hypoxia and ischaemia","Vascular insufficiency","Lymphoedema","Contamination","Infection","Presence of foreign bodies","Radiotherapy"], ["Advancing age","Obesity","Malnutrition","Smoking","Diabetes mellitus","Connective tissue diseases","Immunocompromised states (e.g. AIDS)","Medications: steroids, immunosuppressants, chemotherapy"], "LOCAL FACTORS", "SYSTEMIC FACTORS" ); // ══════════════════════════════════════════════════════════════ // SECTION DIVIDER — TYPES OF HEALING // ══════════════════════════════════════════════════════════════ addDividerSlide("TYPES OF WOUND HEALING", "Intentions of Healing — Summary Box 3.2"); // ══════════════════════════════════════════════════════════════ // SLIDE 11 — 3 TYPES // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); titleBar(s, "TYPES OF WOUND HEALING"); const types = [ { title: "1st INTENTION\n(Primary)", color: C.green, x: 0.35, pts: ["Wound edges directly approximated","Aim of surgical treatment","No adverse influences → best scar","Methods: sutures, staples, glue, tape"] }, { title: "2nd INTENTION\n(Secondary)", color: "E86A10", x: 4.65, pts: ["Wound left OPEN","Heals by granulation, contraction, re-epithelialisation","Increased inflammation and proliferation","Results in a poorer scar"] }, { title: "3rd INTENTION\n(Tertiary / Delayed Primary)", color: C.navy, x: 8.95, pts: ["Wound initially left open (contaminated/untidy)","Edges apposed surgically after debridement","Wound must be clean first","Better outcome than secondary intention"] }, ]; types.forEach(t => { s.addShape(pres.ShapeType.rect, { x: t.x, y: 1.15, w: 4.1, h: 5.7, fill: { color: C.white }, line: { color: t.color, width: 2 } }); s.addShape(pres.ShapeType.rect, { x: t.x, y: 1.15, w: 4.1, h: 0.85, fill: { color: t.color } }); s.addText(t.title, { x: t.x + 0.05, y: 1.15, w: 4.0, h: 0.85, fontSize: 14, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" }); const arr = t.pts.map((p, j) => ({ text: p, options: { bullet: true, breakLine: j < t.pts.length - 1, fontSize: 16, color: C.navyDark, fontFace: "Calibri", paraSpaceBefore: 8 } })); s.addText(arr, { x: t.x + 0.15, y: 2.1, w: 3.8, h: 4.6, valign: "top" }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // SECTION DIVIDER — WOUND CLASSIFICATION // ══════════════════════════════════════════════════════════════ addDividerSlide("WOUND CLASSIFICATION", "Synopsis of Classification Systems — Summary Box 3.3"); // ══════════════════════════════════════════════════════════════ // SLIDE 12 — CDC TABLE // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.1, w: 13.18, h: 0.05, fill: { color: C.teal } }); s.addShape(pres.ShapeType.rect, { x: 0.12, y: 1.15, w: 13.18, h: 0.02, fill: { color: C.gold } }); s.addText("CDC SURGICAL WOUND CLASSIFICATION (Table 3.1)", { x: 0.35, y: 0, w: 12.7, h: 1.1, fontSize: 24, bold: true, color: C.navyDark, fontFace: "Calibri", valign: "middle", margin: 0 }); s.addText("US Centers for Disease Prevention and Control — originally introduced by US National Research Council (1964)", { x: 0.4, y: 1.22, w: 12.5, h: 0.4, fontSize: 13, italic: true, color: C.navy, fontFace: "Calibri" }); const classes = [ { cls: "Class I\nCLEAN", color: C.green, desc: "Uninfected operative wounds | No inflammation encountered | Respiratory, alimentary, genital, or urinary tracts NOT entered | Primarily closed ± closed drainage" }, { cls: "Class II\nCLEAN-CONTAMINATED", color: "1A7A2E", desc: "Respiratory, alimentary, genital or urinary tracts entered under controlled conditions | No unusual contamination | No evidence of infection or major break in technique" }, { cls: "Class III\nCONTAMINATED", color: "E86A10", desc: "Open, fresh, accidental wounds | Major breaks in sterile technique | Gross spillage from GI tract | Incisions with acute, non-purulent inflammation" }, { cls: "Class IV\nDIRTY", color: C.red, desc: "Old traumatic wounds with retained devitalised tissue | Existing clinical infection | Perforated viscera | Organisms present in surgical field BEFORE operation" }, ]; classes.forEach((c, i) => { const y = 1.7 + i * 1.4; s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 2.8, h: 1.25, fill: { color: c.color } }); s.addText(c.cls, { x: 0.4, y, w: 2.8, h: 1.25, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" }); s.addShape(pres.ShapeType.rect, { x: 3.3, y, w: 9.6, h: 1.25, fill: { color: C.white }, line: { color: c.color, width: 1 } }); s.addText(c.desc, { x: 3.4, y: y + 0.07, w: 9.4, h: 1.12, fontSize: 14, color: C.navyDark, fontFace: "Calibri", valign: "top" }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // SLIDE 13 — SYNOPSIS // ══════════════════════════════════════════════════════════════ addContentSlide("WOUND CLASSIFICATION — SYNOPSIS (Summary Box 3.3)", [ "AETIOLOGY:", { text: "Clean surgical, shearing/degloving, crush, blast, burn (thermal/electrical/chemical/radiation), cold injury, avulsion/traction, low/high energy, bite" }, "DEPTH:", { text: "Epidermal, Dermal (superficial or deep), Full thickness" }, "CONTAMINATION:", { text: "Clean, Clean–contaminated, Contaminated, Dirty | With or without implant" }, "COMPLEXITY:", { text: "Simple, Complex, Significant soft-tissue loss, Open fracture/joint, Visceral involvement" }, "COMPLICATED:", { text: "Infection, Necrosis, Haematoma, Gas gangrene, Compartment syndrome" }, "CHRONIC:", { text: "Vascular ulcers (venous or arterial), Pressure ulcers, Diabetic ulcers" }, ]); // ══════════════════════════════════════════════════════════════ // SLIDE 14 — NNIS RISK INDEX // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); titleBar(s, "NNIS RISK INDEX SCORE — Surgical Site Infection Risk"); s.addText("Score ranges 0 (lowest SSI risk) to 3 (highest). 1 point allocated for each of the following risk factors:", { x: 0.4, y: 1.15, w: 12.5, h: 0.55, fontSize: 16, italic: true, color: C.navy, fontFace: "Calibri", }); const factors = [ { num: "+1", label: "Contaminated or Dirty Wound", detail: "Class III or IV wound on CDC surgical wound classification", color: C.red }, { num: "+1", label: "ASA Score ≥ 3", detail: "American Society of Anesthesiologists physical status score 3 or higher indicating significant systemic disease", color: "E86A10" }, { num: "+1", label: "Prolonged Operative Time", detail: "Operative time longer than expected for similar procedures (> 75th percentile)", color: C.teal }, ]; factors.forEach((f, i) => { const x = 0.4 + i * 4.25; s.addShape(pres.ShapeType.rect, { x, y: 1.85, w: 4.0, h: 5.3, fill: { color: C.white }, line: { color: f.color, width: 2 } }); s.addShape(pres.ShapeType.rect, { x, y: 1.85, w: 4.0, h: 1.1, fill: { color: f.color } }); s.addText(f.num, { x, y: 1.85, w: 1.1, h: 1.1, fontSize: 40, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" }); s.addText(f.label, { x: x + 1.1, y: 1.85, w: 2.85, h: 1.1, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" }); s.addText(f.detail, { x: x + 0.15, y: 3.05, w: 3.7, h: 3.95, fontSize: 16, color: C.navyDark, fontFace: "Calibri", valign: "top" }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // SECTION DIVIDER — WOUND MANAGEMENT // ══════════════════════════════════════════════════════════════ addDividerSlide("WOUND MANAGEMENT", "Assessment & Treatment Principles"); // ══════════════════════════════════════════════════════════════ // SLIDE 15 — WOUND MANAGEMENT // ══════════════════════════════════════════════════════════════ addContentSlide("WOUND MANAGEMENT — KEY PRINCIPLES", [ "Use ATLS principles: identify life-threatening → limb-threatening conditions first", "Assess: site, size, geometry, nature of wound; signs of contamination, infection, swelling, pulsatile bleeding", "Look for: skin loss, degloving, exposed structures, underlying fractures / dislocations", "Correlate clinical examination with mechanism of injury (e.g. high-pressure injection injuries can track proximally)", "Ensure adequate analgesia before palpation; test motor and sensory function before local anaesthesia", "Imaging: to exclude foreign bodies, fractures, dislocations as appropriate", "Thorough wound irrigation for better visualisation and decontamination", "Multidisciplinary approach for complex wounds (e.g. open lower limb fractures: orthopaedic + plastic surgery)", "Management guided by timing, mechanism of injury, and patient-specific factors affecting healing", ]); // ══════════════════════════════════════════════════════════════ // SLIDE 16 — KEY TAKE-HOME POINTS // ══════════════════════════════════════════════════════════════ { let s = pres.addSlide(); whiteBg(s); titleBar(s, "KEY TAKE-HOME POINTS", 28); const rowColors = [C.teal, "E86A10", C.green, C.navy, C.red, "8E44AD", C.teal]; const points = [ "Wound healing has 4 phases: Haemostasis → Inflammation → Proliferation → Remodelling", "Remodelling is the longest phase (months to 2 years); tensile strength never exceeds ~80% of original", "CDC classification: Class I (Clean) → Class IV (Dirty) — standard for SSI risk assessment", "NNIS score (0–3): contaminated wound + ASA ≥3 + prolonged operative time each add 1 point", "3 types of healing: Primary (1st), Secondary (2nd — open wound), Tertiary/Delayed Primary (3rd)", "Hypertrophic scars stay within wound boundary; keloid scars extend beyond and do not regress", "Macrophages are the master regulators of wound healing — phagocytosis, cytokines, fibroblast stimulation", ]; points.forEach((p, i) => { const y = 1.2 + i * 0.82; s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 0.55, h: 0.68, fill: { color: rowColors[i] } }); s.addText("" + (i + 1), { x: 0.4, y, w: 0.55, h: 0.68, fontSize: 18, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" }); s.addShape(pres.ShapeType.rect, { x: 1.05, y, w: 11.9, h: 0.68, fill: { color: C.white }, line: { color: rowColors[i], width: 0.8 } }); s.addText(p, { x: 1.2, y: y + 0.02, w: 11.6, h: 0.64, fontSize: 15, color: C.navyDark, fontFace: "Calibri", valign: "middle" }); }); footer(s); } // ══════════════════════════════════════════════════════════════ // WRITE FILE // ══════════════════════════════════════════════════════════════ pres.writeFile({ fileName: "/home/daytona/workspace/wound-ppt/Wound_Classification_Healing_BaileyLove.pptx" }) .then(() => console.log("PPT created successfully!")) .catch(e => { console.error("ERROR:", e); process.exit(1); }); JSEOF echo "File written"
cd /home/daytona/workspace/wound-ppt && node create_ppt.js 2>&1
ls -lh /home/daytona/workspace/wound-ppt/Wound_Classification_Healing_BaileyLove.pptx
Wound Classification Healing BaileyLove
Presentation · PPTX