Suggest me brief notes on single interrupted sutures , vertical matress , horizontal matress sutures when they are preferred and also give short video links that i can show in my seminar
single interrupted suture vertical horizontal mattress suture technique YouTube video tutorial surgery
vertical mattress suture horizontal mattress suture indications preferred uses wound closure surgery
| Feature | Simple Interrupted | Vertical Mattress | Horizontal Mattress |
|---|---|---|---|
| Eversion | Moderate | Excellent | Moderate |
| Tension handling | Low-moderate | Moderate-high | High |
| Hemostasis | Minimal | Minimal | Good |
| Speed | Moderate | Slow | Faster |
| Tissue trauma | Low | Moderate | Higher |
| Best site | Most wounds | Posterior neck, back, concave areas | Joints, fragile skin, scalp |
| Vascular risk | Low | Low-moderate | Moderate-high |
| Suture | Source | Link |
|---|---|---|
| Simple Interrupted | Suture tutorial HD | Watch on YouTube |
| Vertical Mattress | Stanford Dept. of Surgery | Watch on YouTube |
| Horizontal Mattress | CSL Interrupted Sutures | Watch on YouTube |
| Both Mattress (combined) | Behind The Knife Boot Camp | Watch on YouTube |
| Horizontal Mattress (alternate) | General tutorial HD | Watch on YouTube |
Give detail about continuous suturing and continuous inturupted suture
continuous running suture types simple continuous locking subcuticular technique indications surgery
continuous interlocking locking suture vs simple running suture subcuticular differences YouTube video
| Feature | Simple Running | Locking Running | Subcuticular |
|---|---|---|---|
| Speed | Fast | Moderate | Slow |
| Tension handling | Low | Moderate | Minimal |
| Hemostasis | Moderate | Good | None |
| Wound eversion | Moderate | Poor (inverts) | Dependent on deep sutures |
| Track marks | Possible | Possible | None |
| Failure risk | Entire wound | Entire wound | Entire wound |
| Suture removal | Required (if non-absorbable) | Required | Optional (absorbable) |
| Best use | Long clean incisions | Scalp, moderate tension | Cosmetic closures, face, neck |
| Over joints? | No | No | No |
| Technique | Source | Link |
|---|---|---|
| Simple Continuous Running | Surgical Knowledge channel | Watch on YouTube |
| Running Locking (Lock Stitch) | VATA Suture Trainer | Watch on YouTube |
| Subcuticular (Continuous) | CSL Sutures series | Watch on YouTube |
| Continuous Subcuticular Closure | J&J MedTech | Watch on YouTube |
Make a comparison poster: Interrupted vs Continuous sutures
A professional medical education comparison poster titled "Interrupted vs Continuous Sutures" for a surgery seminar. The poster has a clean clinical white background with two main columns side by side. Left column has a dark blue header "INTERRUPTED SUTURES" and right column has a teal/green header "CONTINUOUS (RUNNING) SUTURES". At the top of each column, include a simple clear line diagram illustration: left shows 3 separate individual suture loops each tied independently with knots on top; right shows a single continuous running thread zigzagging along a wound with knots only at the two ends. Below each illustration, show these comparison rows with icons or bullet points: INTERRUPTED column: - Definition: Each stitch tied and cut individually - Knots: Multiple (one per stitch) - Speed: Slower - Tension: Isolated per stitch - Infection risk: Selective removal possible - If one fails: Rest of wound stays closed - Hemostasis: Minimal - Track marks: More likely - Best for: Irregular wounds, infected wounds, high-risk areas, learning - Types: Simple interrupted, Vertical mattress, Horizontal mattress CONTINUOUS column: - Definition: Single thread runs entire wound length - Knots: Only 2 (at each end) - Speed: Faster - Tension: Evenly distributed - Infection risk: Entire wound may open - If one fails: Entire wound can dehisce - Hemostasis: Better (locking variant) - Track marks: Fewer (especially subcuticular) - Best for: Long clean wounds, cosmetic closures, well-supported wounds - Types: Simple running, Locking running, Subcuticular At the bottom, a comparison summary bar showing: "Both: Never use over joints | Close dead space first with deep buried sutures" Color scheme: navy blue and teal on white, with red warning icons for risks, green checkmarks for advantages. Medical, clean, professional poster style suitable for a surgical seminar presentation.

Generate a PowerPoint presentation on wound closure covering all suture types
ls -la /home/daytona/workspace/
~/wound-closure-ppt/generate.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Wound Closure: Suture Types & Techniques";
pres.author = "Surgery Seminar";
// ─── COLOR PALETTE ───────────────────────────────────────
const C = {
navy: "1B3A5C",
teal: "1A7A6E",
accent: "E8A020",
red: "C0392B",
green: "1E8449",
light: "F4F7FB",
white: "FFFFFF",
grey: "7F8C8D",
lgrey: "ECF0F1",
dark: "0D1B2A",
midblue: "2E6DA4",
skyblue: "AED6F1",
};
// ─── HELPERS ─────────────────────────────────────────────
function darkSlide(slide) {
slide.background = { color: C.dark };
}
function lightSlide(slide) {
slide.background = { color: C.light };
}
function whiteSlide(slide) {
slide.background = { color: C.white };
}
function addHeader(slide, text, color = C.navy, y = 0, h = 0.65) {
slide.addShape(pres.shapes.RECTANGLE, { x: 0, y, w: 10, h, fill: { color } });
slide.addText(text, { x: 0.3, y, w: 9.4, h, fontSize: 22, bold: true, color: C.white, valign: "middle", margin: 0 });
}
function addFooter(slide) {
slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.3, w: 10, h: 0.32, fill: { color: C.navy } });
slide.addText("Wound Closure: Suture Types & Techniques | Surgery Seminar", {
x: 0, y: 5.3, w: 10, h: 0.32, fontSize: 9, color: C.white, align: "center", valign: "middle", margin: 0
});
}
function card(slide, x, y, w, h, fillColor = C.white, radius = 0.08) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h,
fill: { color: fillColor },
line: { color: "D0D8E4", width: 0.5 },
shadow: { type: "outer", color: "000000", blur: 8, offset: 2, angle: 135, opacity: 0.1 },
rectRadius: radius,
});
}
function sectionBadge(slide, text, color, x, y) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w: 1.5, h: 0.32, fill: { color }, rectRadius: 0.06 });
slide.addText(text, { x, y, w: 1.5, h: 0.32, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
}
// ══════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.dark };
// Big accent bar left
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.teal } });
// Decorative shapes
s.addShape(pres.shapes.RECTANGLE, { x: 0.18, y: 0, w: 9.82, h: 0.08, fill: { color: C.accent } });
s.addShape(pres.shapes.RECTANGLE, { x: 0.18, y: 5.545, w: 9.82, h: 0.08, fill: { color: C.accent } });
// Suture line decorative element
for (let i = 0; i < 6; i++) {
s.addShape(pres.shapes.RECTANGLE, { x: 0.4 + i * 1.55, y: 1.35, w: 0.9, h: 0.04, fill: { color: C.grey } });
}
s.addText("WOUND CLOSURE", {
x: 0.4, y: 1.5, w: 9.2, h: 0.7,
fontSize: 42, bold: true, color: C.white, charSpacing: 6, margin: 0
});
s.addText("Suture Types, Techniques & Clinical Indications", {
x: 0.4, y: 2.25, w: 9.2, h: 0.5,
fontSize: 20, color: C.skyblue, italic: true, margin: 0
});
// Divider
s.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 2.85, w: 3.5, h: 0.05, fill: { color: C.teal } });
const topics = ["Interrupted Sutures", "Continuous (Running) Sutures", "Subcuticular Sutures", "Clinical Comparison"];
topics.forEach((t, i) => {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.4 + i * 2.35, y: 3.1, w: 2.1, h: 0.52, fill: { color: C.navy }, rectRadius: 0.06 });
s.addText(t, { x: 0.4 + i * 2.35, y: 3.1, w: 2.1, h: 0.52, fontSize: 9.5, color: C.white, align: "center", valign: "middle", margin: 4 });
});
s.addText("Surgery Seminar · Principles of Wound Closure", {
x: 0.4, y: 4.85, w: 7, h: 0.35, fontSize: 11, color: C.grey, margin: 0
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW: PRINCIPLES OF WOUND CLOSURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Principles of Wound Closure", C.navy);
addFooter(s);
const principles = [
{ icon: "①", title: "Eversion", desc: "Wound edges must be slightly everted — scars contract and flatten during healing. An everted closure heals flat; an inverted closure heals depressed." },
{ icon: "②", title: "Eliminate Dead Space", desc: "Dead space allows blood/serum to collect → hematoma → infection. Deep buried sutures close dead space before surface closure." },
{ icon: "③", title: "Tension-Free Closure", desc: "Surface sutures should approximate, not hold. Buried deep dermal sutures bear the tension. Excessive tension → necrosis, suture marks, wound dehiscence." },
{ icon: "④", title: "Layered Closure", desc: "Subcutaneous → deep dermal → epidermal. Each layer has a specific purpose: strength, eversion, and cosmesis." },
{ icon: "⑤", title: "Suture Selection", desc: "Match suture size to anatomic site. Face: 5-0/6-0. Neck: 4-0/5-0. Trunk/extremities: 3-0/4-0. Scalp: 3-0/4-0." },
{ icon: "⑥", title: "Timing of Removal", desc: "Face 5-7 days · Neck 7 days · Scalp 7-14 days · Trunk/limbs 10-14 days. Longer in high-tension sites." },
];
principles.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.25 + col * 4.9;
const y = 0.85 + row * 1.4;
card(s, x, y, 4.6, 1.25, C.white);
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 0.08, h: 1.25, fill: { color: C.teal } });
s.addText(p.icon, { x: x + 0.15, y: y + 0.05, w: 0.5, h: 0.45, fontSize: 18, bold: true, color: C.navy, margin: 0 });
s.addText(p.title, { x: x + 0.15, y: y + 0.05, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: C.navy, margin: 0, align: "right" });
s.addText(p.desc, { x: x + 0.18, y: y + 0.48, w: 4.28, h: 0.72, fontSize: 9, color: "333333", margin: 0, wrap: true });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 3 — INTERRUPTED SUTURES: OVERVIEW
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Interrupted Sutures — Overview", C.teal);
addFooter(s);
// Definition box
card(s, 0.25, 0.75, 9.5, 0.78, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 0.75, w: 0.08, h: 0.78, fill: { color: C.accent } });
s.addText("Each stitch is placed, tied, and cut INDEPENDENTLY. Failure of one suture does not affect adjacent stitches.", {
x: 0.5, y: 0.8, w: 9.1, h: 0.68, fontSize: 12, color: C.dark, italic: true, valign: "middle", margin: 0, wrap: true
});
// Advantages & Disadvantages side by side
card(s, 0.25, 1.65, 4.6, 2.1, C.white);
s.addText("✔ ADVANTAGES", { x: 0.35, y: 1.7, w: 4.4, h: 0.35, fontSize: 11, bold: true, color: C.green, margin: 0 });
const advs = ["Selective removal if infection occurs", "Wound inspection between sutures", "Each stitch independently secure", "Most versatile — adapts to any wound", "Best for irregular / curved wounds", "Safest technique for contaminated wounds"];
advs.forEach((a, i) => {
s.addText("• " + a, { x: 0.38, y: 2.12 + i * 0.25, w: 4.3, h: 0.25, fontSize: 9.5, color: "333333", margin: 0 });
});
card(s, 5.1, 1.65, 4.65, 2.1, C.white);
s.addText("✖ DISADVANTAGES", { x: 5.2, y: 1.7, w: 4.4, h: 0.35, fontSize: 11, bold: true, color: C.red, margin: 0 });
const disadvs = ["More time-consuming", "More knots = more suture material", "More suture track marks if left long", "Requires more technical skill per stitch", "Not ideal for very long incisions"];
disadvs.forEach((d, i) => {
s.addText("• " + d, { x: 5.2, y: 2.12 + i * 0.25, w: 4.4, h: 0.25, fontSize: 9.5, color: "333333", margin: 0 });
});
// Types row
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 3.88, w: 9.5, h: 0.28, fill: { color: C.navy } });
s.addText("TYPES: Simple Interrupted · Vertical Mattress · Horizontal Mattress · Half-buried Mattress (Corner / Gillies)", {
x: 0.25, y: 3.88, w: 9.5, h: 0.28, fontSize: 10, color: C.white, align: "center", valign: "middle", bold: true, margin: 0
});
// When to use
card(s, 0.25, 4.22, 9.5, 0.82, C.lgrey);
s.addText("When to Use Interrupted:", { x: 0.4, y: 4.27, w: 2.5, h: 0.28, fontSize: 10, bold: true, color: C.navy, margin: 0 });
s.addText("Most wounds · Contaminated/infected wounds · Irregular wounds needing precise alignment · Any wound at risk of partial breakdown · Learning/teaching settings", {
x: 0.4, y: 4.55, w: 9.2, h: 0.42, fontSize: 9.5, color: "333333", margin: 0, wrap: true
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 4 — SIMPLE INTERRUPTED SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "1. Simple Interrupted Suture", C.navy);
addFooter(s);
// Steps card
card(s, 0.25, 0.75, 5.7, 4.25, C.white);
s.addText("TECHNIQUE", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.navy, margin: 0 });
const steps = [
"Enter skin 3–5 mm from wound edge, perpendicular to skin surface",
'Pass needle through dermis in a "flask-shaped" arc — wider at base for eversion',
"Exit 3–5 mm from opposite wound edge (mirror entry depth)",
"Tie with surgeon's knot (3 throws for monofilament)",
"Place knot to one side — never directly over the incision",
"Cut, leaving 3–5 mm tails. Repeat at equal intervals along wound",
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.ELLIPSE, { x: 0.35, y: 1.25 + i * 0.55, w: 0.28, h: 0.28, fill: { color: C.teal } });
s.addText(String(i + 1), { x: 0.35, y: 1.25 + i * 0.55, w: 0.28, h: 0.28, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st, { x: 0.72, y: 1.24 + i * 0.55, w: 5.1, h: 0.48, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
// Preferred / indications card
card(s, 6.1, 0.75, 3.65, 2.2, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.2, fill: { color: C.accent } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.navy, margin: 0 });
const indics = ["Any general wound (workhorse stitch)", "Contaminated / infected wounds", "Irregular or curved wound edges", "Layered closures (deep + epidermal)", "Wounds with partial breakdown risk", "Teaching / training environments"];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.28, w: 3.38, h: 0.28, fontSize: 9, color: "333333", margin: 0 });
});
// Key points card
card(s, 6.1, 3.1, 3.65, 1.9, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 3.1, w: 0.08, h: 1.9, fill: { color: C.red } });
s.addText("KEY POINTS", { x: 6.25, y: 3.15, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const kps = ["Bite size = distance from wound edge", "Knot lateral to incision line", "Remove before 7 days on face", "Evert edges — flask-shaped bite", "Most forgiving technique to learn"];
kps.forEach((k, i) => {
s.addText("• " + k, { x: 6.25, y: 3.55 + i * 0.27, w: 3.38, h: 0.27, fontSize: 9, color: "333333", margin: 0 });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 5 — VERTICAL MATTRESS SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "2. Vertical Mattress Suture (Far-Far / Near-Near)", C.navy);
addFooter(s);
card(s, 0.25, 0.75, 5.7, 4.25, C.white);
s.addText("TECHNIQUE (F-F / N-N)", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.navy, margin: 0 });
const steps = [
{ num: "FF", step: "FAR-FAR PASS: Enter 5–10 mm from wound edge, pass deep below dermis, exit 5–10 mm on opposite side" },
{ num: "NN", step: "NEAR-NEAR PASS: Re-enter 2–4 mm from wound edge (same side as exit), pass superficially through papillary dermis" },
{ num: "3", step: "Exit 2–4 mm from wound edge on the starting side (needle returns to starting side)" },
{ num: "4", step: "Tie both ends together — produces marked wound edge eversion" },
{ num: "5", step: "The stitch shows 2 parallel loops crossing the wound on the skin surface" },
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.RECTANGLE, { x: 0.35, y: 1.28 + i * 0.62, w: 0.42, h: 0.28, fill: { color: C.navy } });
s.addText(st.num, { x: 0.35, y: 1.28 + i * 0.62, w: 0.42, h: 0.28, fontSize: 8, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st.step, { x: 0.86, y: 1.27 + i * 0.62, w: 5.0, h: 0.55, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
card(s, 6.1, 0.75, 3.65, 2.0, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.0, fill: { color: C.teal } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.teal, margin: 0 });
const indics = [
"Wounds that tend to INVERT (posterior neck, dorsal hand, concave surfaces)",
"High tension wounds — back, shoulders",
"When deep + surface closure needed in one stitch",
"Eyelid margin repair",
"Wounds at risk of edge separation",
];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.3, w: 3.38, h: 0.3, fontSize: 8.5, color: "333333", margin: 0, wrap: true });
});
card(s, 6.1, 2.9, 3.65, 2.1, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 2.9, w: 0.08, h: 2.1, fill: { color: C.red } });
s.addText("CAUTIONS", { x: 6.25, y: 2.95, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const caut = ["Remove early — embedded track marks", "Never tie too tightly → ischemia/necrosis", "More complex to place correctly", "Cross-hatching scars if delayed removal"];
caut.forEach((c, i) => {
s.addText("⚠ " + c, { x: 6.25, y: 3.35 + i * 0.35, w: 3.38, h: 0.35, fontSize: 9, color: C.red, margin: 0, wrap: true });
});
// Summary bar
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 4.62, w: 5.7, h: 0.35, fill: { color: C.navy } });
s.addText("Best for: EVERSION + TENSION in one stitch", {
x: 0.25, y: 4.62, w: 5.7, h: 0.35, fontSize: 10, color: C.white, align: "center", valign: "middle", bold: true, margin: 0
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 6 — HORIZONTAL MATTRESS SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "3. Horizontal Mattress Suture", C.navy);
addFooter(s);
card(s, 0.25, 0.75, 5.7, 4.25, C.white);
s.addText("TECHNIQUE", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.navy, margin: 0 });
const steps = [
"Enter 5–8 mm from wound edge, pass full dermis depth, exit opposite side",
"Move LATERALLY 3–5 mm along wound (parallel to wound)",
"Re-enter on the far side and pass back across to original side",
"Exit same side as entry — suture now runs PARALLEL to wound on surface",
"Tie both ends — creates broad tension distribution across wound",
"Surface shows two parallel threads running along (not across) the wound",
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.ELLIPSE, { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fill: { color: C.midblue } });
s.addText(String(i + 1), { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st, { x: 0.72, y: 1.27 + i * 0.55, w: 5.1, h: 0.5, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
card(s, 6.1, 0.75, 3.65, 2.0, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.0, fill: { color: C.midblue } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.midblue, margin: 0 });
const indics = [
"Wide GAPING wounds under HIGH tension",
"Lacerations over joints (knee, elbow)",
"Fragile/thin skin — elderly, steroid atrophy",
"Scalp lacerations",
"Skin flap tips (corner/Gillies variant)",
"Stay / anchoring stitches",
"Hemostatic suture — compresses vessels",
];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.25, w: 3.38, h: 0.25, fontSize: 8.5, color: "333333", margin: 0, wrap: true });
});
card(s, 6.1, 2.9, 3.65, 2.1, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 2.9, w: 0.08, h: 2.1, fill: { color: C.red } });
s.addText("CAUTIONS", { x: 6.25, y: 2.95, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const caut = ["Highest risk of wound edge ISCHEMIA/NECROSIS if too tight", "Poor eversion vs. vertical mattress", "Track marks if left >7 days", "Not for cosmetically sensitive areas"];
caut.forEach((c, i) => {
s.addText("⚠ " + c, { x: 6.25, y: 3.35 + i * 0.38, w: 3.38, h: 0.38, fontSize: 9, color: C.red, margin: 0, wrap: true });
});
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 4.62, w: 5.7, h: 0.35, fill: { color: C.midblue } });
s.addText("Best for: TENSION RELIEF + HEMOSTASIS + FRAGILE SKIN", {
x: 0.25, y: 4.62, w: 5.7, h: 0.35, fontSize: 10, color: C.white, align: "center", valign: "middle", bold: true, margin: 0
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 7 — CONTINUOUS SUTURES OVERVIEW
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Continuous (Running) Sutures — Overview", C.teal);
addFooter(s);
card(s, 0.25, 0.75, 9.5, 0.72, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 0.75, w: 0.08, h: 0.72, fill: { color: C.accent } });
s.addText("A single strand of suture runs the ENTIRE wound length, forming a helical coil through tissue. Only TWO knots are needed — one at each end.", {
x: 0.5, y: 0.8, w: 9.1, h: 0.62, fontSize: 12, color: C.dark, italic: true, valign: "middle", margin: 0, wrap: true
});
card(s, 0.25, 1.58, 4.6, 2.3, C.white);
s.addText("✔ ADVANTAGES", { x: 0.38, y: 1.63, w: 4.35, h: 0.35, fontSize: 11, bold: true, color: C.green, margin: 0 });
const advs = ["Fastest technique for long wounds", "Only 2 knots — fewer weak points", "Even tension distribution along entire wound", "Better hemostasis than interrupted", "Accommodates mild postoperative swelling", "Fewer suture track marks (subcuticular variant)"];
advs.forEach((a, i) => {
s.addText("• " + a, { x: 0.38, y: 2.08 + i * 0.28, w: 4.35, h: 0.28, fontSize: 9.5, color: "333333", margin: 0 });
});
card(s, 5.1, 1.58, 4.65, 2.3, C.white);
s.addText("✖ DISADVANTAGES / WARNINGS", { x: 5.2, y: 1.63, w: 4.4, h: 0.35, fontSize: 11, bold: true, color: C.red, margin: 0 });
const disadvs = ["One loop breaks → ENTIRE wound may open", "Infection → cutting one loop = full dehiscence", "Cannot be used OVER JOINTS", "Fine adjustments per point are difficult", "Tends to invert edges without deep buried sutures", "Puckering risk on thin/lax skin"];
disadvs.forEach((d, i) => {
s.addText("⚠ " + d, { x: 5.2, y: 2.08 + i * 0.28, w: 4.4, h: 0.28, fontSize: 9.5, color: C.red, margin: 0 });
});
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y: 4.0, w: 9.5, h: 0.28, fill: { color: C.navy } });
s.addText("TYPES: Simple Running · Locking (Interlocking) Running · Subcuticular (Intradermal)", {
x: 0.25, y: 4.0, w: 9.5, h: 0.28, fontSize: 10.5, color: C.white, align: "center", valign: "middle", bold: true, margin: 0
});
card(s, 0.25, 4.38, 9.5, 0.7, C.lgrey);
s.addText("Critical Rule:", { x: 0.4, y: 4.43, w: 1.5, h: 0.28, fontSize: 10, bold: true, color: C.navy, margin: 0 });
s.addText("Always close dead space and eliminate tension with DEEP BURIED SUTURES first. Continuous surface sutures are for approximation and cosmesis — not structural support.", {
x: 1.9, y: 4.43, w: 7.7, h: 0.6, fontSize: 9.5, color: "333333", margin: 0, wrap: true
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 8 — SIMPLE CONTINUOUS RUNNING SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "4. Simple Continuous (Running) Suture", C.teal);
addFooter(s);
card(s, 0.25, 0.75, 5.7, 4.25, C.white);
s.addText("TECHNIQUE", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.teal, margin: 0 });
const steps = [
"Place interrupted stitch at one end — tie it, but cut only the FREE TAIL (leave needle-end long)",
"Pass needle through both wound edges at 45° to the wound, same depth as interrupted",
"Continue passing at equal intervals — do NOT lock or loop back through previous stitch",
"Suture spirals down the wound as a simple helix (no locking)",
"At the far end, leave last loop as a loop; tie the running end to this loop",
"Alternatively, place a final interrupted stitch and tie running suture to it",
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.ELLIPSE, { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fill: { color: C.teal } });
s.addText(String(i + 1), { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st, { x: 0.72, y: 1.27 + i * 0.55, w: 5.1, h: 0.5, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
card(s, 6.1, 0.75, 3.65, 2.35, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.35, fill: { color: C.teal } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.teal, margin: 0 });
const indics = ["Long clean incisions well-supported by deep sutures", "Thin, lax skin — eyelids, ears, neck, scrotum", "Skin graft attachment to wound edges", "Flat, immobile skin surfaces", "When speed is needed with minimal tension", "Low-risk, clean surgical wounds"];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.3, w: 3.38, h: 0.3, fontSize: 8.5, color: "333333", margin: 0, wrap: true });
});
card(s, 6.1, 3.25, 3.65, 1.72, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 3.25, w: 0.08, h: 1.72, fill: { color: C.red } });
s.addText("DO NOT USE WHEN:", { x: 6.25, y: 3.3, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const dont = ["Deep space not closed first", "Wound overlies a joint", "Infected / contaminated wound", "Wound edges uneven or irregular", "High-tension skin"];
dont.forEach((d, i) => {
s.addText("✗ " + d, { x: 6.25, y: 3.72 + i * 0.27, w: 3.38, h: 0.27, fontSize: 9, color: C.red, margin: 0 });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 9 — LOCKING RUNNING SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "5. Running Locking (Interlocking) Suture", C.teal);
addFooter(s);
card(s, 0.25, 0.75, 5.7, 3.4, C.white);
s.addText("TECHNIQUE", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.teal, margin: 0 });
const steps = [
"Begin exactly like a simple running suture — interrupted stitch at wound apex",
"After each pass through tissue, thread needle BACK THROUGH the previous loop before making the next pass",
"Each stitch is thereby LOCKED in place — cannot slide or creep along wound",
"Continue locking each successive loop down the length of the wound",
"Surface shows a visible chain-link / herringbone pattern",
"End with a loop and tie",
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.RECTANGLE, { x: 0.35, y: 1.28 + i * 0.52, w: 0.42, h: 0.26, fill: { color: C.midblue } });
s.addText(String(i + 1), { x: 0.35, y: 1.28 + i * 0.52, w: 0.42, h: 0.26, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st, { x: 0.86, y: 1.27 + i * 0.52, w: 5.0, h: 0.48, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
card(s, 0.25, 4.3, 5.7, 0.65, C.navy);
s.addText("Locking = STRONGER than simple running but LESS FORGIVING — cannot loosen once locked", {
x: 0.4, y: 4.35, w: 5.4, h: 0.55, fontSize: 10, color: C.white, valign: "middle", margin: 0, italic: true, wrap: true
});
card(s, 6.1, 0.75, 3.65, 2.0, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.0, fill: { color: C.midblue } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.midblue, margin: 0 });
const indics = ["SCALP lacerations (classic site)", "Moderate tension wounds", "Well-vascularized wounds needing hemostasis", "Sites without tendency for inversion"];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.33, w: 3.38, h: 0.33, fontSize: 9, color: "333333", margin: 0, wrap: true });
});
card(s, 6.1, 2.9, 3.65, 2.1, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 2.9, w: 0.08, h: 2.1, fill: { color: C.red } });
s.addText("SPECIFIC RISKS", { x: 6.25, y: 2.95, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const caut = ["Wound edge NECROSIS if tied too tight", "Worsens inversion — avoid on inverted wounds", "Postoperative swelling has NO accommodation", "Suture cannot be loosened once locked"];
caut.forEach((c, i) => {
s.addText("⚠ " + c, { x: 6.25, y: 3.38 + i * 0.38, w: 3.38, h: 0.38, fontSize: 9, color: C.red, margin: 0, wrap: true });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 10 — SUBCUTICULAR (INTRADERMAL) SUTURE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "6. Running Subcuticular (Intradermal) Suture", C.teal);
addFooter(s);
card(s, 0.25, 0.75, 5.7, 4.25, C.white);
s.addText("TECHNIQUE", { x: 0.38, y: 0.8, w: 5.4, h: 0.35, fontSize: 11, bold: true, color: C.teal, margin: 0 });
const steps = [
"Needle enters skin at apex of wound — exits HORIZONTALLY into superficial dermis (does NOT pass through skin surface to outside)",
"Needle passes horizontally WITHIN the dermis — alternating small bites on each side of wound (L then R then L...)",
"Each bite stays just beneath the epidermis — entire suture runs INSIDE the skin",
"Suture exits at far apex of wound with a tail (or is buried with an absorbable knot)",
"Non-absorbable (Prolene): both tails out at each apex — pull out for removal",
"Absorbable (Monocryl/PDS): buried entirely — dissolves in situ, no removal needed",
];
steps.forEach((st, i) => {
s.addShape(pres.shapes.ELLIPSE, { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fill: { color: C.green } });
s.addText(String(i + 1), { x: 0.35, y: 1.28 + i * 0.55, w: 0.28, h: 0.28, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(st, { x: 0.72, y: 1.27 + i * 0.55, w: 5.1, h: 0.5, fontSize: 9.5, color: "333333", margin: 0, wrap: true, valign: "middle" });
});
card(s, 6.1, 0.75, 3.65, 2.6, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 0.75, w: 0.08, h: 2.6, fill: { color: C.green } });
s.addText("WHEN PREFERRED", { x: 6.25, y: 0.8, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.green, margin: 0 });
const indics = [
"Cosmetically sensitive areas — face, neck, breast, abdomen",
"Sutures needed >5–7 days (no track marks)",
"Patients prone to keloid/hypertrophic scar",
"When suture removal is not feasible (absorbable version)",
"Paediatric patients — avoids painful removal",
"Clean surgical incisions after layered deep closure",
"Anywhere a fine linear scar is the priority",
];
indics.forEach((ind, i) => {
s.addText("▸ " + ind, { x: 6.25, y: 1.22 + i * 0.28, w: 3.38, h: 0.28, fontSize: 8.5, color: "333333", margin: 0, wrap: true });
});
card(s, 6.1, 3.5, 3.65, 1.47, C.white);
s.addShape(pres.shapes.RECTANGLE, { x: 6.1, y: 3.5, w: 0.08, h: 1.47, fill: { color: C.red } });
s.addText("LIMITATIONS", { x: 6.25, y: 3.55, w: 3.38, h: 0.35, fontSize: 10, bold: true, color: C.red, margin: 0 });
const lim = ["NO structural support on its own", "Deep buried sutures MANDATORY first", "Cannot adjust individual points", "Breakage = entire wound may open"];
lim.forEach((l, i) => {
s.addText("✗ " + l, { x: 6.25, y: 3.97 + i * 0.27, w: 3.38, h: 0.27, fontSize: 9, color: C.red, margin: 0 });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 11 — MASTER COMPARISON TABLE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Master Comparison — All Suture Types", C.dark);
addFooter(s);
const headers = ["Feature", "Simple Interrupted", "Vertical Mattress", "Horizontal Mattress", "Simple Running", "Locking Running", "Subcuticular"];
const rows = [
["Knots", "Many", "One per stitch", "One per stitch", "2 total", "2 total", "2 (or buried)"],
["Speed", "Moderate", "Slow", "Moderate", "Fast", "Moderate", "Slow"],
["Eversion", "✔ Moderate", "✔✔ Excellent", "✔ Moderate", "Poor alone", "Poor", "Depends on deep"],
["Tension", "Low-Moderate", "Moderate-High", "High", "Low", "Moderate", "Minimal"],
["Hemostasis", "Minimal", "Minimal", "✔ Good", "Moderate", "✔ Good", "None"],
["Track marks", "Yes", "High risk", "Yes", "Possible", "Possible", "None"],
["Failure risk", "Isolated", "Isolated", "Isolated", "Total wound", "Total wound", "Total wound"],
["Over joints?", "✔ Yes", "✔ Yes", "✔ Yes", "✗ No", "✗ No", "✗ No"],
["Best site", "Any wound", "Neck/Back/Hand", "Scalp/Joints", "Long incisions", "Scalp", "Face/Cosmetic"],
];
const colW = [1.45, 1.38, 1.38, 1.38, 1.38, 1.38, 1.25];
const startX = 0.1;
let startY = 0.72;
const rowH = 0.42;
const headerColors = [C.dark, C.navy, C.midblue, C.teal, C.teal, C.teal, C.green];
// Header row
let cx = startX;
headers.forEach((h, i) => {
s.addShape(pres.shapes.RECTANGLE, { x: cx, y: startY, w: colW[i], h: 0.38, fill: { color: headerColors[i] } });
s.addText(h, { x: cx, y: startY, w: colW[i], h: 0.38, fontSize: 8, bold: true, color: C.white, align: "center", valign: "middle", margin: 2 });
cx += colW[i];
});
startY += 0.38;
rows.forEach((row, ri) => {
cx = startX;
const bgColor = ri % 2 === 0 ? C.white : C.lgrey;
row.forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x: cx, y: startY, w: colW[ci], h: rowH, fill: { color: ci === 0 ? "D6E4F0" : bgColor }, line: { color: "CCCCCC", width: 0.3 } });
const isWarning = cell.includes("✗") || cell.includes("Total wound") || cell.includes("High risk");
const isGood = cell.includes("✔") || cell.includes("None");
const cellColor = isWarning ? C.red : (isGood ? C.green : "333333");
s.addText(cell, { x: cx, y: startY, w: colW[ci], h: rowH, fontSize: ci === 0 ? 8.5 : 8, bold: ci === 0, color: ci === 0 ? C.navy : cellColor, align: "center", valign: "middle", margin: 2, wrap: true });
cx += colW[ci];
});
startY += rowH;
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 12 — SUTURE MATERIAL SELECTION
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Suture Material Selection by Anatomic Site", C.navy);
addFooter(s);
const data = [
{ site: "Eyelids", size: "6-0", type: "Prolene / Nylon", timing: "5–7 days" },
{ site: "Face & Ears", size: "5-0", type: "Prolene / Nylon", timing: "5–7 days" },
{ site: "Neck", size: "4-0 / 5-0", type: "Nylon / Monocryl (subcuticular)", timing: "7 days" },
{ site: "Scalp", size: "3-0 / 4-0", type: "Nylon or Staples", timing: "7–14 days" },
{ site: "Trunk / Extremities", size: "3-0 / 4-0", type: "Nylon / Prolene", timing: "10–14 days*" },
{ site: "Deep Dermal (buried)", size: "3-0 / 4-0", type: "Vicryl / Monocryl / PDS", timing: "Absorbable — no removal" },
{ site: "Subcuticular", size: "3-0 / 4-0", type: "Monocryl (absorbable) or Prolene", timing: "Absorbable or pull-out" },
];
const colLabels = ["Anatomic Site", "Suture Size", "Recommended Material", "Removal Timing"];
const colX = [0.25, 2.55, 4.65, 7.7];
const colW2 = [2.2, 2.0, 3.0, 2.0];
colLabels.forEach((h, i) => {
s.addShape(pres.shapes.RECTANGLE, { x: colX[i], y: 0.72, w: colW2[i], h: 0.38, fill: { color: C.navy } });
s.addText(h, { x: colX[i], y: 0.72, w: colW2[i], h: 0.38, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", margin: 2 });
});
data.forEach((row, ri) => {
const bg = ri % 2 === 0 ? C.white : C.lgrey;
const y = 1.1 + ri * 0.46;
const cells = [row.site, row.size, row.type, row.timing];
cells.forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x: colX[ci], y, w: colW2[ci], h: 0.44, fill: { color: ci === 0 ? C.skyblue : bg }, line: { color: "CCCCCC", width: 0.3 } });
s.addText(cell, { x: colX[ci], y, w: colW2[ci], h: 0.44, fontSize: ci === 0 ? 10 : 9.5, bold: ci === 0, color: ci === 0 ? C.navy : "333333", align: "center", valign: "middle", margin: 2, wrap: true });
});
});
card(s, 0.25, 4.4, 9.5, 0.58, C.lgrey);
s.addText("* High-tension sites or poor wound healing may require sutures to remain longer. Suture size notation: smaller number = larger diameter = greater strength (3-0 > 4-0 > 5-0 > 6-0)", {
x: 0.4, y: 4.45, w: 9.2, h: 0.48, fontSize: 9, color: C.grey, margin: 0, italic: true, wrap: true
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 13 — CLINICAL DECISION GUIDE
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s);
addHeader(s, "Clinical Decision Guide — Which Suture to Use?", C.teal);
addFooter(s);
const decisions = [
{ q: "General / any wound", ans: "Simple Interrupted", color: C.navy },
{ q: "Infected / contaminated wound", ans: "Simple Interrupted (selective removal possible)", color: C.red },
{ q: "Edges tend to INVERT (posterior neck, concave surface)", ans: "Vertical Mattress", color: C.midblue },
{ q: "Gaping wound over joint or high tension", ans: "Horizontal Mattress", color: C.teal },
{ q: "Fragile / thin skin, elderly, steroids", ans: "Horizontal Mattress (broad tension distribution)", color: C.teal },
{ q: "Skin flap tip / corner repair", ans: "Half-buried (Gillies Corner) Stitch", color: C.midblue },
{ q: "Long clean incision — deep sutures placed", ans: "Simple Continuous Running", color: C.green },
{ q: "Scalp laceration — hemostasis needed", ans: "Running Locking (Interlocking)", color: C.green },
{ q: "Cosmetic closure — no track marks", ans: "Subcuticular (Intradermal)", color: C.green },
{ q: "Paediatric patient — avoid removal", ans: "Subcuticular with absorbable Monocryl", color: C.green },
];
decisions.forEach((d, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.25 + col * 4.9;
const y = 0.78 + row * 0.9;
card(s, x, y, 4.6, 0.82, C.white);
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 0.07, h: 0.82, fill: { color: d.color } });
s.addText("IF: " + d.q, { x: x + 0.18, y: y + 0.04, w: 4.32, h: 0.32, fontSize: 8.5, color: C.grey, margin: 0, italic: true, wrap: true });
s.addText("→ " + d.ans, { x: x + 0.18, y: y + 0.44, w: 4.32, h: 0.34, fontSize: 9.5, bold: true, color: d.color, margin: 0, wrap: true });
});
}
// ══════════════════════════════════════════════════════════
// SLIDE 14 — KEY TEACHING POINTS / SUMMARY
// ══════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.dark };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.accent } });
s.addShape(pres.shapes.RECTANGLE, { x: 0.18, y: 0, w: 9.82, h: 0.06, fill: { color: C.teal } });
s.addText("KEY TEACHING POINTS", {
x: 0.4, y: 0.12, w: 9.2, h: 0.52, fontSize: 26, bold: true, color: C.white, charSpacing: 4, margin: 0
});
s.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 0.7, w: 3, h: 0.04, fill: { color: C.accent } });
const points = [
{ num: "01", text: "EVERSION is always the goal — wound edges contract. An everted wound heals flat; an inverted wound heals depressed and more visible." },
{ num: "02", text: "Always close DEAD SPACE with deep buried sutures FIRST before placing any surface suture (interrupted or continuous)." },
{ num: "03", text: "VERTICAL MATTRESS = eversion + tension in one stitch. Best for posterior neck, back, concave surfaces." },
{ num: "04", text: "HORIZONTAL MATTRESS = tension relief + hemostasis + fragile skin. Risk of ischemia if too tight." },
{ num: "05", text: "CONTINUOUS SUTURES — one break or infection = entire wound may dehisce. NEVER use over joints." },
{ num: "06", text: "SUBCUTICULAR suture provides NO structural support — it is purely for cosmesis. Deep closure must be complete first." },
{ num: "07", text: "Remove sutures on time: Face 5–7 days · Neck 7 days · Scalp 7–14 days · Trunk/limbs 10–14 days." },
];
points.forEach((p, i) => {
const col = i < 4 ? 0 : 1;
const row = i < 4 ? i : i - 4;
const x = 0.4 + col * 4.8;
const y = 0.9 + row * 1.05;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w: 4.5, h: 0.92, fill: { color: "172A3F" }, rectRadius: 0.07 });
s.addShape(pres.shapes.RECTANGLE, { x: x, y: y, w: 0.55, h: 0.92, fill: { color: C.teal } });
s.addText(p.num, { x: x, y, w: 0.55, h: 0.92, fontSize: 15, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(p.text, { x: x + 0.65, y: y + 0.08, w: 3.75, h: 0.78, fontSize: 8.5, color: "CCDDEE", margin: 0, wrap: true, valign: "middle" });
});
// Last point full width
const lastIdx = 6;
const col = 1, row = 3;
// already placed above in loop
s.addText("Wound Closure: Suture Types & Techniques | Surgery Seminar", {
x: 0.4, y: 5.35, w: 9.2, h: 0.22, fontSize: 9, color: C.grey, margin: 0
});
}
// ─── WRITE FILE ──────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/wound-closure-ppt/Wound_Closure_Suture_Types.pptx" })
.then(() => console.log("SUCCESS: Wound_Closure_Suture_Types.pptx written"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/wound-closure-ppt && node generate.js 2>&1
node -e "const p = require('pptxgenjs'); const pr = new p(); console.log(Object.keys(pr.shapes).filter(k => k.toLowerCase().includes('ellip') || k.toLowerCase().includes('oval') || k.toLowerCase().includes('circle')))"
sed -i 's/pres\.shapes\.ELLIPSE/pres.shapes.OVAL/g' /home/daytona/workspace/wound-closure-ppt/generate.js && echo "Done"
grep -n "ELLIPSE" /home/daytona/workspace/wound-closure-ppt/generate.js
~/wound-closure-ppt/generate.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-closure-ppt/generate.js'
~/wound-closure-ppt/generate.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-closure-ppt/generate.js'
~/wound-closure-ppt/generate.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-closure-ppt/generate.js'
~/wound-closure-ppt/generate.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/wound-closure-ppt/generate.js'
cd /home/daytona/workspace/wound-closure-ppt && node generate.js 2>&1
ls -lh /home/daytona/workspace/wound-closure-ppt/Wound_Closure_Suture_Types.pptx
Wound Closure Suture Types
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - dark navy design with topic overview badges |
| 2 | Principles of Wound Closure - 6 core principles (eversion, dead space, tension, layering, material, timing) |
| 3 | Interrupted Sutures Overview - advantages, disadvantages, when to use |
| 4 | Simple Interrupted - step-by-step technique, indications, key points |
| 5 | Vertical Mattress - Far-Far/Near-Near steps, when preferred, cautions |
| 6 | Horizontal Mattress - technique, indications (scalp, joints, fragile skin), ischemia warnings |
| 7 | Continuous Sutures Overview - advantages vs. risks, critical rule |
| 8 | Simple Running Suture - technique, when preferred, do-not-use situations |
| 9 | Locking (Interlocking) Suture - technique, scalp indications, necrosis risk |
| 10 | Subcuticular Suture - technique, absorbable vs. non-absorbable, cosmetic indications |
| 11 | Master Comparison Table - all 6 types compared across 9 parameters |
| 12 | Suture Material Selection - size, material type, removal timing by anatomic site |
| 13 | Clinical Decision Guide - 10 clinical scenarios mapped to correct suture choice |
| 14 | Key Teaching Points - dark summary slide with 7 numbered takeaways |