Neuromuscular monitoring in anaesthesia
neuromuscular monitoring residual blockade quantitative



| TOF Count | Approximate Receptor Occupancy | Clinical Correlation |
|---|---|---|
| 4 twitches present | 75% | Minimal/shallow block, clinical relaxation adequate |
| 3 twitches | 80% | Moderate-to-deep block |
| 2 twitches | ~85% | Deep block |
| 1 twitch | ~90% | Very deep block |
| 0 twitches | >90% | Profound block - use PTC |
| Depth of Block | TOF Count | PTC |
|---|---|---|
| Complete | 0 | 0 |
| Deep | 0 | ≥1 |
| Moderate | 1-3 | N/A |
| Shallow | 4 (TOF ratio <0.4) | N/A |
| Minimal | 4 (TOF ratio 0.4-0.9) | N/A |
| Recovered | 4 (TOF ratio ≥0.9) | N/A |
| Recovers EARLIER (more resistant) | Recovers LATER (more sensitive) |
|---|---|
| Diaphragm | Adductor pollicis (thumb) |
| Laryngeal adductors | Pharyngeal muscles |
| Orbicularis oculi | Genioglossus |
| Rectus abdominis | Upper airway muscles |
| Method | Mechanism | Notes |
|---|---|---|
| Mechanomyography (MMG) | Measures isometric muscle force directly | Gold standard/reference; requires immobilized limb setup; not practical clinically |
| Acceleromyography (AMG) | Piezoelectric crystal measures acceleration of thumb movement | Most common clinical device; thumb must be free to move; tends to overestimate TOF ratio vs MMG (bias +5-10%); goal TOF ratio for AMG ≥0.95-1.0 |
| Electromyography (EMG) | Measures compound muscle action potential | Fast onset, accurate, less affected by hypothermia; tends to underestimate vs MMG (bias -4.7%) |
| Kinemyography | Measures thumb bending via piezoelectric film | Less commonly used |

| Clinical Goal | Monitoring Action |
|---|---|
| Confirm intubating conditions | TOF count 0 (or PTC = 0 for complete block) |
| Intraoperative deep block for surgery | TOF count 0, PTC 1-5 |
| Intraoperative moderate block | TOF count 1-3 |
| When to give neostigmine | TOF count 4 with minimal fade |
| When sugammadex is preferred | Any depth, especially deep block |
| Safe extubation criterion | TOF ratio ≥0.9 (quantitative) |
Convert this into slides
mkdir -p /home/daytona/workspace/neuromuscular-monitoring && ls /home/daytona/workspace/
~/neuromuscular-monitoring/build.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// ── Palette ──────────────────────────────────────────────────────────────────
const C = {
darkBg: "0D1B2A", // deep navy – title / chapter slides
midBg: "1B2E41", // mid navy – content slides
accent: "00C6AE", // teal accent
accentAlt: "F4A261", // amber – warnings / key numbers
white: "FFFFFF",
offWhite: "E8F0F7",
lightGrey: "B0C4D8",
textDark: "0D1B2A",
card: "14253A", // slightly lighter than darkBg for cards
cardLight: "1F3550",
};
// ── Fetch images ─────────────────────────────────────────────────────────────
const IMG_URLS = [
"https://cdn.orris.care/cdss_images/0cdca82ee73f8cafc438a2ed2d07f4fc129c0acfd6a4eaa9b0a02858e7384017.png", // ulnar nerve
"https://cdn.orris.care/cdss_images/255397a14095e5d234e461b283b583729221de37a08283a6a5c9991fa08b0ee5.png", // TOF unblocked
"https://cdn.orris.care/cdss_images/8cc141547c1d93cbc58be13d70427ae6344b82a8825a094f861391854a98c0b9.png", // single twitch
"https://cdn.orris.care/cdss_images/79790f932c68d69e46b7a5c71bb542dee8f59054fe593eb52efe324510ed71f7.png", // RNMB incidence chart
"https://cdn.orris.care/cdss_images/133272c73f8ee1ba9a5a03bb35871b5b53bd9079da7b093701efa9312c9b1e8b.png", // TOF blocked
];
console.log("Fetching images...");
let images = [];
try {
images = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${IMG_URLS.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString());
console.log("Images fetched:", images.map(i => i.error ? "FAIL" : "OK"));
} catch(e) {
console.warn("Image fetch failed, continuing without images:", e.message);
images = IMG_URLS.map(u => ({ url: u, base64: null, error: "fetch failed" }));
}
const img = (i) => images[i] && !images[i].error ? { data: images[i].base64 } : null;
// ── Helper functions ─────────────────────────────────────────────────────────
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Neuromuscular Monitoring in Anaesthesia";
pres.author = "Orris Medical";
// Dark background base for all slides
function darkSlide() {
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkBg }, line: { color: C.darkBg } });
return s;
}
function midSlide() {
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.midBg }, line: { color: C.midBg } });
return s;
}
function addAccentBar(slide, w = 10) {
slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.3, w: w, h: 0.12, fill: { color: C.accent }, line: { color: C.accent } });
}
function addSlideLabel(slide, label) {
slide.addText(label.toUpperCase(), { x: 0.35, y: 0.18, w: 9, h: 0.28, fontSize: 8, color: C.accent, bold: true, charSpacing: 3 });
}
function addTitle(slide, txt, opts = {}) {
slide.addText(txt, { x: opts.x ?? 0.35, y: opts.y ?? 0.55, w: opts.w ?? 9.3, h: opts.h ?? 0.7, fontSize: opts.fs ?? 26, bold: true, color: C.white, ...opts });
}
function addSubtitle(slide, txt, opts = {}) {
slide.addText(txt, { x: 0.35, y: opts.y ?? 1.25, w: 9.3, h: 0.35, fontSize: 13, color: C.accent, bold: true, ...opts });
}
function addBody(slide, items, opts = {}) {
const bullets = items.map((t, i) => ({
text: t,
options: { bullet: { type: "bullet" }, color: C.offWhite, fontSize: opts.fs ?? 13, breakLine: i < items.length - 1 }
}));
slide.addText(bullets, { x: opts.x ?? 0.45, y: opts.y ?? 1.65, w: opts.w ?? 9.1, h: opts.h ?? 3.5, valign: "top", ...opts });
}
function addCard(slide, x, y, w, h, title, body, opts = {}) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill: { color: opts.bg ?? C.card }, line: { color: opts.border ?? C.accent, pt: 1 } });
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h: 0.35, fill: { color: opts.accent ?? C.accent }, line: { color: opts.accent ?? C.accent } });
slide.addText(title, { x: x + 0.12, y: y + 0.04, w: w - 0.2, h: 0.28, fontSize: 10, bold: true, color: C.darkBg });
if (Array.isArray(body)) {
const items = body.map((t, i) => ({ text: t, options: { bullet: { type: "bullet" }, color: C.offWhite, fontSize: 10.5, breakLine: i < body.length - 1 } }));
slide.addText(items, { x: x + 0.15, y: y + 0.42, w: w - 0.25, h: h - 0.5, valign: "top" });
} else {
slide.addText(body, { x: x + 0.15, y: y + 0.42, w: w - 0.25, h: h - 0.5, fontSize: 10.5, color: C.offWhite, valign: "top", wrap: true });
}
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
// Left accent strip
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: C.accent }, line: { color: C.accent } });
// Decorative circles
s.addShape(pres.shapes.OVAL, { x: 7.8, y: -0.5, w: 3.5, h: 3.5, fill: { color: C.card, transparency: 40 }, line: { color: C.card } });
s.addShape(pres.shapes.OVAL, { x: 8.5, y: 3.2, w: 2, h: 2, fill: { color: C.accent, transparency: 75 }, line: { color: C.accent, transparency: 75 } });
s.addText("NEUROMUSCULAR", { x: 0.4, y: 1.3, w: 8, h: 0.7, fontSize: 36, bold: true, color: C.white, charSpacing: 2 });
s.addText("MONITORING", { x: 0.4, y: 1.95, w: 8, h: 0.7, fontSize: 36, bold: true, color: C.accent, charSpacing: 2 });
s.addText("IN ANAESTHESIA", { x: 0.4, y: 2.6, w: 8, h: 0.5, fontSize: 22, color: C.lightGrey, charSpacing: 4 });
s.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 3.2, w: 1.8, h: 0.05, fill: { color: C.accentAlt }, line: { color: C.accentAlt } });
s.addText("Miller's Anesthesia 10e · Barash Clinical Anesthesia 9e · Morgan & Mikhail 7e", {
x: 0.4, y: 4.9, w: 9, h: 0.3, fontSize: 9, color: C.lightGrey, italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 2 – WHY MONITOR?
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Introduction");
addTitle(s, "Why Monitor Neuromuscular Function?");
// 3 key stat cards
const stats = [
{ val: "40%", label: "of patients reversed with neostigmine have residual paralysis" },
{ val: "5%", label: "residual paralysis rate even with sugammadex reversal" },
{ val: "230M", label: "surgical procedures globally per year — impact is enormous" },
];
stats.forEach((st, i) => {
const x = 0.3 + i * 3.2;
s.addShape(pres.shapes.RECTANGLE, { x, y: 1.2, w: 3.0, h: 1.6, fill: { color: C.card }, line: { color: C.accent, pt: 1 } });
s.addShape(pres.shapes.RECTANGLE, { x, y: 1.2, w: 3.0, h: 0.08, fill: { color: C.accent }, line: { color: C.accent } });
s.addText(st.val, { x: x + 0.1, y: 1.35, w: 2.8, h: 0.65, fontSize: 32, bold: true, color: C.accentAlt, align: "center" });
s.addText(st.label, { x: x + 0.1, y: 2.0, w: 2.8, h: 0.7, fontSize: 10.5, color: C.offWhite, align: "center", wrap: true });
});
addSubtitle(s, "Why clinical signs fail:", { y: 3.0 });
addBody(s, [
"5-second head lift: achieved by 11/12 volunteers despite TOF ratio ≤0.5",
"Tidal volume, vital capacity, grip strength — all INSENSITIVE to residual block",
"Time since last NMBD dose is NOT a reliable guide — interpatient variability is huge",
"8.4% of patients had TOF ratio <0.80 even 4 hours after a single vecuronium dose",
], { y: 3.3, fs: 12 });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 3 – PERIPHERAL NERVE STIMULATOR
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Equipment");
addTitle(s, "Peripheral Nerve Stimulator (PNS)");
// Left column – text
addBody(s, [
"Battery-operated device delivering square-wave monophasic current",
"Current: 10–80 mA | Pulse width: 100–300 µs",
"Must generate ≥50 mA across 1,000 Ω for supramaximal stimulation",
"Negative electrode (black) placed DISTALLY — 'Red toward the head'",
"Proper skin prep reduces resistance from 100,000 → <5,000 Ω",
"Silver-silver chloride electrodes, ideally 7–8 mm diameter",
], { y: 1.3, w: 5.4, fs: 12 });
addSubtitle(s, "Common monitoring sites:", { y: 3.6 });
const sites = ["Ulnar nerve → adductor pollicis (most common)", "Facial nerve → orbicularis oculi", "Posterior tibial nerve → flexor hallucis brevis"];
const siteItems = sites.map((t, i) => ({ text: t, options: { bullet: { type: "bullet" }, color: C.offWhite, fontSize: 11.5, breakLine: i < sites.length - 1 } }));
s.addText(siteItems, { x: 0.45, y: 3.95, w: 5.4, h: 1.3, valign: "top" });
// Right – ulnar nerve image
const ulnarImg = img(0);
if (ulnarImg) {
s.addImage({ ...ulnarImg, x: 5.8, y: 1.2, w: 3.9, h: 2.9, altText: "Ulnar nerve electrode placement" });
}
s.addText("Ulnar nerve electrode placement (negative electrode distal)", {
x: 5.8, y: 4.1, w: 3.9, h: 0.4, fontSize: 8.5, color: C.lightGrey, italic: true, align: "center"
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 4 – STIMULATION PATTERNS OVERVIEW
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
addAccentBar(s);
addSlideLabel(s, "Stimulation Patterns");
addTitle(s, "Patterns of Nerve Stimulation");
const patterns = [
{ name: "Single Twitch (ST)", freq: "0.1–1 Hz", use: "Onset of block only; requires baseline", note: "Cannot detect fade" },
{ name: "Train-of-Four (TOF)", freq: "2 Hz × 4", use: "Intraoperative depth; recovery assessment", note: "No baseline needed" },
{ name: "Tetanus", freq: "50 or 100 Hz / 5 s", use: "Sensitive test; painful in awake patients", note: "Causes post-tetanic facilitation" },
{ name: "Post-Tetanic Count (PTC)", freq: "50 Hz tetanus → 1 Hz singles", use: "When TOF count = 0 (profound block)", note: "PTC ≥1 = deep block" },
{ name: "Double-Burst (DBS)", freq: "50 Hz bursts × 2", use: "Better visual/tactile fade detection than TOF", note: "DBS3,3 or DBS3,2" },
];
patterns.forEach((p, i) => {
const x = 0.25;
const y = 1.2 + i * 0.82;
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 9.5, h: 0.72, fill: { color: i % 2 === 0 ? C.card : C.cardLight }, line: { color: C.card } });
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 0.07, h: 0.72, fill: { color: C.accent }, line: { color: C.accent } });
s.addText(p.name, { x: x + 0.18, y: y + 0.08, w: 2.6, h: 0.28, fontSize: 12, bold: true, color: C.white });
s.addText(p.freq, { x: x + 0.18, y: y + 0.36, w: 2.6, h: 0.25, fontSize: 10, color: C.accent });
s.addText(p.use, { x: x + 2.95, y: y + 0.1, w: 4.2, h: 0.52, fontSize: 11, color: C.offWhite, valign: "middle" });
s.addText(p.note, { x: x + 7.2, y: y + 0.1, w: 2.1, h: 0.52, fontSize: 10, color: C.lightGrey, italic: true, valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 5 – TRAIN-OF-FOUR (TOF) — detailed
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Train-of-Four");
addTitle(s, "Train-of-Four (TOF) Stimulation");
// Left – explanation
addBody(s, [
"4 successive 200-µs stimuli at 2 Hz (over 2 seconds)",
"TOF Ratio = T4/T1 amplitude (normally 1.0)",
"Nondepolarizing block → progressive FADE (T4 < T1)",
"Depolarizing block (succinylcholine) → uniform depression, NO fade",
"Can be repeated every 10–15 s without post-tetanic facilitation",
], { y: 1.3, w: 5.3, fs: 12.5 });
addSubtitle(s, "TOF Count vs. Block depth:", { y: 3.3 });
const rows = [
["4 twitches", "~75%", "Shallow / minimal"],
["3 twitches", "~80%", "Moderate"],
["2 twitches", "~85%", "Deep"],
["1 twitch", "~90%", "Deep"],
["0 twitches", ">90%", "Use PTC"],
];
const cols = [0.45, 2.35, 4.0];
const headers = ["TOF Count", "Receptor Occ.", "Depth"];
headers.forEach((h, ci) => {
s.addText(h, { x: cols[ci], y: 3.65, w: 1.7, h: 0.3, fontSize: 10, bold: true, color: C.accent });
});
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x: cols[ci], y: 3.95 + ri * 0.28, w: 1.7, h: 0.26, fill: { color: ri % 2 === 0 ? C.card : C.cardLight }, line: { color: C.card } });
s.addText(cell, { x: cols[ci] + 0.05, y: 3.96 + ri * 0.28, w: 1.6, h: 0.24, fontSize: 10, color: C.offWhite, valign: "middle" });
});
});
// Right – TOF image
const tofImg = img(1);
if (tofImg) {
s.addImage({ ...tofImg, x: 5.6, y: 1.2, w: 4.1, h: 2.3, altText: "TOF unblocked waveform" });
}
const tofBlockedImg = img(4);
if (tofBlockedImg) {
s.addImage({ ...tofBlockedImg, x: 5.6, y: 3.4, w: 4.1, h: 2.0, altText: "TOF blocked waveform" });
}
if (tofImg || tofBlockedImg) {
s.addText("Top: normal TOF ratio 1.0 | Bottom: fade after nondepolarizing block", {
x: 5.6, y: 5.1, w: 4.1, h: 0.3, fontSize: 8, color: C.lightGrey, italic: true, align: "center"
});
}
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 6 – POST-TETANIC COUNT & DBS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
addAccentBar(s);
addSlideLabel(s, "PTC & DBS");
addTitle(s, "Post-Tetanic Count & Double-Burst Stimulation");
// PTC card
addCard(s, 0.25, 1.15, 4.6, 3.9, "POST-TETANIC COUNT (PTC)", [
"Used when TOF count = 0 (profound block)",
"Method: 50 Hz tetanus × 5 s → wait 3 s → 1 Hz single twitches",
"Count the twitches after tetanus = PTC",
"PTC 1–2 → very deep; spontaneous TOF recovery 10–20 min",
"PTC >10 → first TOF twitch expected within minutes",
"PTC = 0 → complete block; cannot antagonise with neostigmine",
], { bg: C.card, border: C.accent });
// DBS card
addCard(s, 5.15, 1.15, 4.6, 3.9, "DOUBLE-BURST STIMULATION (DBS)", [
"Two variations of tetany; less painful for awake patients",
"DBS3,3: 3 bursts at 50 Hz → 750 ms gap → 3 bursts",
"DBS3,2: 3 bursts at 50 Hz → 750 ms gap → 2 bursts",
"More sensitive than TOF for VISUAL/TACTILE fade detection",
"Fade between the two bursts = residual block",
"Cannot distinguish between TOF ratios 0.6–0.9 subjectively",
], { bg: C.card, border: C.accentAlt, accent: C.accentAlt });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 7 – DEPTH OF BLOCK CLASSIFICATION
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Depth Classification");
addTitle(s, "Six Levels of Neuromuscular Blockade");
const depths = [
{ depth: "Complete", occ: ">95%", tof: "TOFC 0, PTC 0", col: "C0392B" },
{ depth: "Deep", occ: "90–95%", tof: "TOFC 0, PTC ≥1", col: "E67E22" },
{ depth: "Moderate", occ: "70–90%", tof: "TOFC 1–3", col: "F4A261" },
{ depth: "Shallow", occ: "60–70%", tof: "TOFC 4, ratio <0.4", col: "27AE60" },
{ depth: "Minimal", occ: "60–70%", tof: "TOFC 4, ratio 0.4–0.9", col: "2ECC71" },
{ depth: "Recovered", occ: "<70%", tof: "TOFC 4, ratio ≥0.9", col: "00C6AE" },
];
const headerY = 1.2;
["Depth", "Receptor Occupancy", "Quantitative Monitor Findings"].forEach((h, ci) => {
const xs = [0.25, 2.8, 5.0];
s.addText(h, { x: xs[ci], y: headerY, w: ci === 2 ? 4.8 : 2.4, h: 0.3, fontSize: 11, bold: true, color: C.accent });
});
depths.forEach((d, i) => {
const y = 1.55 + i * 0.61;
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y, w: 9.5, h: 0.55, fill: { color: C.card }, line: { color: C.card } });
s.addShape(pres.shapes.RECTANGLE, { x: 0.25, y, w: 0.08, h: 0.55, fill: { color: d.col }, line: { color: d.col } });
s.addText(d.depth, { x: 0.42, y: y + 0.08, w: 2.3, h: 0.38, fontSize: 12.5, bold: true, color: C.white });
s.addText(d.occ, { x: 2.8, y: y + 0.08, w: 2.0, h: 0.38, fontSize: 12, color: C.offWhite });
s.addText(d.tof, { x: 5.0, y: y + 0.08, w: 4.7, h: 0.38, fontSize: 12, color: C.offWhite });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 8 – QUANTITATIVE MONITORING
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
addAccentBar(s);
addSlideLabel(s, "Quantitative Monitoring");
addTitle(s, "Quantitative (Objective) Neuromuscular Monitors");
s.addText("The ONLY reliable method to confirm full recovery and safely avoid reversal agents", {
x: 0.35, y: 1.15, w: 9.3, h: 0.4, fontSize: 13, color: C.accentAlt, italic: true, bold: true
});
const monitors = [
{ name: "Mechanomyography\n(MMG)", detail: "Measures isometric force directly. Reference gold standard. Requires immobilised limb — impractical clinically.", bias: "Reference (0% bias)" },
{ name: "Electromyography\n(EMG)", detail: "Measures compound muscle action potential. Fast, accurate, unaffected by hand position. Underestimates vs MMG (bias −4.7%).", bias: "Biased goal: 0.85" },
{ name: "Acceleromyography\n(AMG)", detail: "Piezoelectric crystal measures thumb acceleration. Most common clinical device. Thumb must be free to move. Overestimates vs MMG.", bias: "Biased goal: ≥0.95" },
{ name: "Kinemyography\n(KMG)", detail: "Piezoelectric film measures thumb bend. Less common. Similar considerations to AMG.", bias: "Biased goal: ≥0.95" },
];
monitors.forEach((m, i) => {
const x = 0.25 + (i % 2) * 4.85;
const y = 1.65 + Math.floor(i / 2) * 1.65;
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 4.6, h: 1.55, fill: { color: C.card }, line: { color: i === 0 ? C.accentAlt : C.accent, pt: 1 } });
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 4.6, h: 0.32, fill: { color: i === 0 ? C.accentAlt : C.accent }, line: { color: i === 0 ? C.accentAlt : C.accent } });
s.addText(m.name, { x: x + 0.1, y: y + 0.03, w: 4.3, h: 0.28, fontSize: 10, bold: true, color: C.darkBg });
s.addText(m.detail, { x: x + 0.12, y: y + 0.36, w: 4.3, h: 0.85, fontSize: 10, color: C.offWhite, wrap: true, valign: "top" });
s.addText(m.bias, { x: x + 0.12, y: y + 1.22, w: 4.3, h: 0.25, fontSize: 9.5, color: C.accent, italic: true });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 9 – DIFFERENTIAL MUSCLE SENSITIVITY
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Muscle Sensitivity");
addTitle(s, "Differential Muscle Sensitivity to NMBDs");
s.addText("Not all muscles recover at the same rate — this drives extubation decisions", {
x: 0.35, y: 1.15, w: 9.3, h: 0.35, fontSize: 12.5, color: C.lightGrey, italic: true
});
// Two columns: resistant vs sensitive
// Left: resistant (recovers earlier)
s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 1.6, w: 4.5, h: 0.38, fill: { color: C.accent }, line: { color: C.accent } });
s.addText("MORE RESISTANT (Recovers FIRST)", { x: 0.3, y: 1.65, w: 4.5, h: 0.28, fontSize: 11, bold: true, color: C.darkBg, align: "center" });
const resistant = ["Diaphragm", "Laryngeal adductors", "Orbicularis oculi", "Rectus abdominis"];
const resItems = resistant.map((t, i) => ({ text: t, options: { bullet: { type: "bullet" }, color: C.offWhite, fontSize: 13, breakLine: i < resistant.length - 1 } }));
s.addText(resItems, { x: 0.5, y: 2.05, w: 4.1, h: 1.8, valign: "top" });
// Right: sensitive
s.addShape(pres.shapes.RECTANGLE, { x: 5.2, y: 1.6, w: 4.5, h: 0.38, fill: { color: C.accentAlt }, line: { color: C.accentAlt } });
s.addText("MORE SENSITIVE (Recovers LAST)", { x: 5.2, y: 1.65, w: 4.5, h: 0.28, fontSize: 11, bold: true, color: C.darkBg, align: "center" });
const sensitive = ["Adductor pollicis (thumb — standard monitor site)", "Pharyngeal muscles", "Genioglossus", "Upper airway muscles"];
const sensItems = sensitive.map((t, i) => ({ text: t, options: { bullet: { type: "bullet" }, color: C.offWhite, fontSize: 13, breakLine: i < sensitive.length - 1 } }));
s.addText(sensItems, { x: 5.4, y: 2.05, w: 4.1, h: 1.8, valign: "top" });
// Key implication box
s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.95, w: 9.4, h: 1.0, fill: { color: C.card }, line: { color: C.accentAlt, pt: 1.5 } });
s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.95, w: 0.1, h: 1.0, fill: { color: C.accentAlt }, line: { color: C.accentAlt } });
s.addText([
{ text: "Clinical implication: ", options: { bold: true, color: C.accentAlt, fontSize: 12 } },
{ text: "The adductor pollicis is MORE sensitive than pharyngeal and upper airway muscles. Recovery of the thumb DOES confirm airway muscle recovery — but only with quantitative monitoring (TOF ratio ≥0.9). Subjective assessment cannot reliably detect residual pharyngeal dysfunction.", options: { color: C.offWhite, fontSize: 12 } }
], { x: 0.5, y: 4.02, w: 9.0, h: 0.86, valign: "middle", wrap: true });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 10 – RESIDUAL NEUROMUSCULAR BLOCK
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
addAccentBar(s);
addSlideLabel(s, "Residual Block");
addTitle(s, "Residual Neuromuscular Block (RNMB)");
s.addText("Defined as TOF ratio <0.9 at extubation or in the PACU", {
x: 0.35, y: 1.15, w: 9.3, h: 0.35, fontSize: 12.5, color: C.accentAlt, bold: true
});
// Left column – consequences
addSubtitle(s, "Consequences of TOF ratio <0.9:", { y: 1.6 });
addBody(s, [
"Impaired pharyngeal function → aspiration risk",
"Upper airway obstruction",
"Impaired hypoxic ventilatory response",
"Blurry vision, diplopia, facial weakness",
"Increased PACU stay + nursing interventions",
"Increased postoperative pulmonary complications",
"Prolonged ICU ventilator weaning",
], { y: 1.95, w: 4.8, fs: 11.5 });
// Right – incidence chart image
const chartImg = img(3);
if (chartImg) {
s.addImage({ ...chartImg, x: 5.1, y: 1.3, w: 4.6, h: 3.5, altText: "RNMB incidence by time after NMBD" });
s.addText("% patients with residual block by time since NMBD dose (Debaeene et al.)", {
x: 5.1, y: 4.8, w: 4.6, h: 0.4, fontSize: 8.5, color: C.lightGrey, italic: true, align: "center"
});
} else {
addCard(s, 5.1, 1.3, 4.6, 3.5, "INCIDENCE DATA (Debaeene et al.)", [
"<60 min: 60% had TOF <0.90",
"60–90 min: 62% had TOF <0.90",
"90–120 min: 45% had TOF <0.90",
">120 min: 35% had TOF <0.90",
"Even 4h after vecuronium: 8.4% still <0.80",
]);
}
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 11 – REVERSAL AGENTS
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Reversal Agents");
addTitle(s, "Reversal of Neuromuscular Block");
// Neostigmine card
addCard(s, 0.25, 1.2, 4.6, 4.0, "NEOSTIGMINE (Anticholinesterase)", [
"Inhibits acetylcholinesterase → ↑ ACh at NMJ",
"Must co-administer glycopyrrolate or atropine",
"Dose: 20–70 mcg/kg IV",
"Onset: 5–10 min | Duration: 60–120 min",
"Most effective at MINIMAL block (TOFC 4, ratio 0.4–0.9)",
"Do NOT give at TOFC 0–2 — risk of paradoxical weakness",
"Residual paralysis rate: ~30–40%",
], { bg: C.card, border: C.accent });
// Sugammadex card
addCard(s, 5.15, 1.2, 4.6, 4.0, "SUGAMMADEX (Selective Binding Agent)", [
"Encapsulates steroidal NMBDs (rocuronium >> vecuronium)",
"Immediate reversal (no PTC): 16 mg/kg",
"Deep block (PTC ≥1, TOFC 0): 4 mg/kg",
"Moderate block (TOFC 1–2): 2–4 mg/kg",
"Shallow/minimal (TOFC ≥2): 2 mg/kg",
"Residual paralysis rate: ~5%",
"Safe in cholinesterase deficiency",
], { bg: C.card, border: C.accentAlt, accent: C.accentAlt });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 12 – CLINICAL DECISION GUIDE
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
addAccentBar(s);
addSlideLabel(s, "Clinical Guide");
addTitle(s, "Monitoring-Guided Clinical Decisions");
const rows2 = [
{ goal: "Confirm intubating conditions", mon: "TOFC = 0 (or PTC = 0 for complete block)", action: "Proceed with intubation" },
{ goal: "Deep intraoperative block", mon: "TOFC = 0, PTC 1–5", action: "Maintain block; no reversal yet" },
{ goal: "Moderate intraoperative block", mon: "TOFC 1–3", action: "Surgical relaxation adequate" },
{ goal: "Timing of neostigmine", mon: "TOFC = 4, ratio 0.4–0.9 (minimal block)", action: "Give neostigmine 20–70 mcg/kg" },
{ goal: "Sugammadex — deep reversal", mon: "TOFC = 0, PTC ≥1", action: "Sugammadex 4 mg/kg" },
{ goal: "Sugammadex — moderate block", mon: "TOFC 1–3", action: "Sugammadex 2–4 mg/kg" },
{ goal: "Safe extubation", mon: "TOF ratio ≥0.9 (quantitative)", action: "Extubation appropriate" },
];
const colX = [0.25, 3.5, 6.85];
const colW = [3.1, 3.25, 2.95];
const headers = ["Clinical Goal", "Monitoring Criterion", "Action"];
headers.forEach((h, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x: colX[ci], y: 1.2, w: colW[ci], h: 0.32, fill: { color: C.accent }, line: { color: C.accent } });
s.addText(h, { x: colX[ci] + 0.08, y: 1.22, w: colW[ci] - 0.1, h: 0.28, fontSize: 10, bold: true, color: C.darkBg });
});
rows2.forEach((r, i) => {
const y = 1.55 + i * 0.54;
const bg = i % 2 === 0 ? C.card : C.cardLight;
colX.forEach((cx, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x: cx, y, w: colW[ci], h: 0.5, fill: { color: bg }, line: { color: C.darkBg } });
});
s.addText(r.goal, { x: colX[0] + 0.08, y: y + 0.05, w: colW[0] - 0.12, h: 0.4, fontSize: 10, color: C.offWhite, wrap: true, valign: "middle" });
s.addText(r.mon, { x: colX[1] + 0.08, y: y + 0.05, w: colW[1] - 0.12, h: 0.4, fontSize: 10, color: C.accent, wrap: true, valign: "middle" });
s.addText(r.action, { x: colX[2] + 0.08, y: y + 0.05, w: colW[2] - 0.12, h: 0.4, fontSize: 10, color: C.accentAlt, wrap: true, valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 13 – GUIDELINES & EVIDENCE
// ═══════════════════════════════════════════════════════════════════════════
{
const s = midSlide();
addAccentBar(s);
addSlideLabel(s, "Guidelines");
addTitle(s, "Guidelines & Current Evidence");
// Countries
s.addText("Countries with quantitative NM monitoring guidelines:", {
x: 0.35, y: 1.15, w: 9.3, h: 0.32, fontSize: 12, bold: true, color: C.accent
});
const countries = ["Canada", "France", "Spain", "Australia", "New Zealand", "Czech Republic", "Portugal", "Japan", "USA (recently published)"];
countries.forEach((c, i) => {
const x = 0.35 + (i % 3) * 3.1;
const y = 1.5 + Math.floor(i / 3) * 0.45;
s.addShape(pres.shapes.RECTANGLE, { x, y, w: 2.9, h: 0.36, fill: { color: C.card }, line: { color: C.accent, pt: 0.5 } });
s.addShape(pres.shapes.OVAL, { x: x + 0.1, y: y + 0.09, w: 0.18, h: 0.18, fill: { color: C.accent }, line: { color: C.accent } });
s.addText(c, { x: x + 0.35, y: y + 0.06, w: 2.5, h: 0.24, fontSize: 11, color: C.offWhite });
});
// Recent evidence
addSubtitle(s, "Recent Evidence (2024–2026):", { y: 3.15 });
addBody(s, [
"Bijkerk et al. Br J Anaesth 2025 — RNMB in PACU remains common; supports routine quantitative monitoring [PMID: 39443187]",
"Alderman & Smith-Steinert J Perianesth Nurs 2026 — Evidence-based summary: recognition and treatment of postoperative residual paralysis [PMID: 41460225]",
"Vanlinthout et al. Paediatr Anaesth 2024 — Network meta-analysis of NMB recovery in paediatric patients [PMID: 38676354]",
], { y: 3.5, fs: 11 });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 14 – KEY POINTS (SUMMARY)
// ═══════════════════════════════════════════════════════════════════════════
{
const s = darkSlide();
// Left accent strip
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: C.accent }, line: { color: C.accent } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.3, w: 10, h: 0.12, fill: { color: C.accent }, line: { color: C.accent } });
s.addText("KEY TAKEAWAYS", { x: 0.35, y: 0.25, w: 9.3, h: 0.4, fontSize: 10, bold: true, color: C.accent, charSpacing: 4 });
const points = [
{ n: "01", t: "NMBDs do not cause amnesia or consciousness loss — paralysis only." },
{ n: "02", t: "Clinical signs (head lift, grip) are insensitive and cannot exclude residual block." },
{ n: "03", t: "TOF is the clinical standard; TOF ratio ≥0.9 (quantitative) = safe extubation." },
{ n: "04", t: "PTC guides management during deep block when TOFC = 0." },
{ n: "05", t: "Adductor pollicis recovers last — monitoring it protects airway muscle function." },
{ n: "06", t: "Quantitative monitoring reduces PACU RNMB and respiratory complications." },
{ n: "07", t: "Neostigmine: minimal block only. Sugammadex: any depth, lower residual rate." },
];
points.forEach((p, i) => {
const y = 0.78 + i * 0.66;
s.addShape(pres.shapes.OVAL, { x: 0.25, y: y + 0.05, w: 0.5, h: 0.5, fill: { color: C.accent, transparency: 15 }, line: { color: C.accent } });
s.addText(p.n, { x: 0.27, y: y + 0.08, w: 0.46, h: 0.4, fontSize: 11, bold: true, color: C.darkBg, align: "center" });
s.addText(p.t, { x: 0.88, y: y + 0.06, w: 8.8, h: 0.5, fontSize: 12.5, color: C.offWhite, valign: "middle" });
});
}
// ── Write file ─────────────────────────────────────────────────────────────
const OUT = "/home/daytona/workspace/neuromuscular-monitoring/Neuromuscular_Monitoring_Anaesthesia.pptx";
pres.writeFile({ fileName: OUT }).then(() => {
console.log("✓ Saved:", OUT);
}).catch(err => {
console.error("Error:", err);
process.exit(1);
});
cd /home/daytona/workspace/neuromuscular-monitoring && node build.js 2>&1
ls -lh /home/daytona/workspace/neuromuscular-monitoring/Neuromuscular_Monitoring_Anaesthesia.pptx
Neuromuscular Monitoring Anaesthesia
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title slide |
| 2 | Why Monitor? (stats cards + why clinical signs fail) |
| 3 | Peripheral Nerve Stimulator — setup, electrode placement, sites (with ulnar nerve image) |
| 4 | All 5 stimulation patterns overview table |
| 5 | Train-of-Four in detail — TOF count vs block depth + waveform images |
| 6 | Post-Tetanic Count & Double-Burst Stimulation (side-by-side cards) |
| 7 | Six Levels of Neuromuscular Blockade (colour-coded by depth) |
| 8 | Quantitative Monitors — MMG, EMG, AMG, KMG with bias data |
| 9 | Differential Muscle Sensitivity + clinical implication box |
| 10 | Residual NMB — consequences + incidence chart image |
| 11 | Reversal Agents — Neostigmine vs Sugammadex (side-by-side) |
| 12 | Monitoring-Guided Clinical Decisions table |
| 13 | Guidelines (9 countries) + 2024–2026 PubMed evidence |
| 14 | 7 Key Takeaways summary slide |