NCS METHOD IN CTS FOR DM NEUROLOGY STUDENT
NCS method carpal tunnel syndrome diabetic neuropathy neurology DM student
"carpal tunnel syndrome" AND "nerve conduction" AND "diabetes mellitus"

| Parameter | What it reflects | Normal (Median) |
|---|---|---|
| Distal latency (onset) | Conduction through the carpal tunnel to thenar muscle | < 4.2 ms (APB, 6-8 cm) |
| CMAP amplitude | Number of functioning motor axons | > 4.4 mV |
| Motor conduction velocity | Speed of fastest large fibers, forearm segment | > 49 m/s |
| F-wave latency | Proximal conduction integrity | < 31 ms |

| Parameter | Normal (Median - Digit II antidromic) |
|---|---|
| Onset latency (wrist → finger 2, ~13-14 cm) | < 3.5 ms |
| Peak latency | < 3.6 ms |
| SNAP amplitude | > 20 µV |
| Sensory conduction velocity | > 50 m/s |
Key point: Sensory NCS is more sensitive than motor NCS in early CTS, because sensory fibers are affected first by compression. A prolonged sensory distal latency is the earliest NCS abnormality in CTS.
| Comparison Study | Technique | Abnormal Criterion |
|---|---|---|
| Median-Ulnar Palmar Mixed Study | Stimulate palm (8 cm from wrist), record at wrist for both nerves | Median latency > ulnar by > 0.3 ms |
| Median-Ulnar Ring Finger (Sensory) | Stimulate wrist, record at ring finger (digit IV) antidromically | Median latency > ulnar by > 0.4 ms |
| Median-Ulnar Lumbrical-Interossei Motor | Stimulate median and ulnar at wrist, record at 2nd interossei space | Median CMAP latency exceeds ulnar by > 0.4-0.5 ms |
| Median-Radial Sensory to Thumb | Stimulate median and radial at wrist, record at thumb | Median latency > radial by > 0.5 ms |


| Grade | NCS Findings |
|---|---|
| Mild | Only prolonged median sensory latency; normal motor latency and CMAP amplitude |
| Moderate | Prolonged motor and sensory latencies; SNAP may be reduced in amplitude |
| Severe | Absent SNAP; significantly prolonged/absent CMAP; reduced CMAP amplitude |
| Extreme | Absent both sensory and motor responses from median nerve; needle EMG shows active denervation (fibrillations) in APB |
| Feature | Focal CTS | Diffuse DPN |
|---|---|---|
| Sensory latency prolongation | Median > Ulnar (focal) | Both equally prolonged |
| Motor latency | Median forearm NCV normal; only distal latency prolonged | All nerves slowed |
| Upper vs lower limb | Upper limb isolated | Lower limb worse (length-dependent) |
| Sural nerve | Normal | Abnormal (reduced/absent SNAP) |
| F-waves | Normal (forearm) | All prolonged |
Suspected CTS in DM patient
|
v
NCS: Median motor + sensory
Ulnar motor + sensory
Lower limb NCS (sural, peroneal)
|
___________________________________________
| |
All nerves slowed Median specifically slow,
(length-dependent pattern) ulnar relatively normal
DPN confirmed |
| Internal comparison studies
v (Median-Ulnar palmar/ring)
Consider skin biopsy |
for small fiber DPN Median latency > Ulnar
by >0.3 ms → CTS CONFIRMED
(superimposed on DPN)
| Nerve | Study | Latency | Amplitude | Velocity |
|---|---|---|---|---|
| Median motor | Wrist → APB | < 4.2 ms | > 4.4 mV | > 49 m/s |
| Ulnar motor | Wrist → ADM | < 3.4 ms | > 6.0 mV | > 49 m/s |
| Median sensory | Wrist → Digit II | < 3.5 ms | > 20 µV | > 50 m/s |
| Ulnar sensory | Wrist → Digit V | < 3.1 ms | > 17 µV | > 50 m/s |
| Sural sensory | Calf → Ankle | < 4.4 ms | > 6 µV | > 40 m/s |
| Peroneal motor | Ankle → EDB | < 5.8 ms | > 2.0 mV | > 42 m/s |
create a ppt
mkdir -p /home/daytona/workspace/ncs-cts-ppt && ls /home/daytona/workspace/ncs-cts-ppt/
node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://cdn.orris.care/cdss_images/b203dfd885b17223f0b2bf8cebd7dab9aba808948e9b7284ed2c6adccdb3cfca.png" \ "https://cdn.orris.care/cdss_images/d2accc4312c900bf30cf3cdf0c2cee6a8c4140c8dee51cbdf0103daa1b23eb47.png" \ "https://cdn.orris.care/cdss_images/90e1a9f46aa08154916f1be040155d057fbfad83bd1845eb29e39035a7afd24b.png" \ "https://cdn.orris.care/cdss_images/d449c153f8a679861b4d9f0239176a4da805e177d8cfdbf8c5780a4b337da9b6.png" \ 2>/dev/null | node -e "const d=require('fs');const j=JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));j.forEach((x,i)=>{if(x.base64){const b=x.base64.split(',')[1];d.writeFileSync('/home/daytona/workspace/ncs-cts-ppt/img'+i+'.png',Buffer.from(b,'base64'));}});console.log('done',j.map(x=>x.error||'ok'))"
~/ncs-cts-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "NCS in Carpal Tunnel Syndrome - DM Neurology";
pres.author = "DM Neurology";
// ─── THEME ────────────────────────────────────────────────────────────────────
const C = {
navy: "0B1F4B", // dominant dark
teal: "00838F", // heading accent
tealLt: "00ACC1", // lighter teal
gold: "FFB300", // accent / highlight
white: "FFFFFF",
offW: "F0F4F8",
slate: "546E7A",
ltGray: "ECEFF1",
red: "E53935",
green: "388E3C",
charcoal:"263238",
};
// ─── HELPERS ──────────────────────────────────────────────────────────────────
function addBg(slide, color) {
slide.background = { color };
}
function header(slide, title, y = 0.18, color = C.white, bkColor = C.teal) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: bkColor }, line: { color: bkColor }
});
slide.addText(title, {
x: 0.35, y: 0, w: 9.3, h: 0.75, margin: 0,
fontSize: 22, bold: true, color, valign: "middle",
fontFace: "Calibri"
});
}
function sectionTag(slide, tag, x = 8.6, y = 0.18) {
slide.addShape(pres.ShapeType.rect, {
x, y: 0.16, w: 1.2, h: 0.42,
fill: { color: C.gold }, line: { color: C.gold }
});
slide.addText(tag, {
x, y: 0.16, w: 1.2, h: 0.42, margin: 0,
fontSize: 11, bold: true, color: C.charcoal, align: "center", valign: "middle",
fontFace: "Calibri"
});
}
function card(slide, x, y, w, h, fillColor = C.white, borderColor = C.teal, radius = 0.08) {
slide.addShape(pres.ShapeType.rect, {
x, y, w, h,
fill: { color: fillColor },
line: { color: borderColor, width: 1.5 },
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.1 }
});
}
function tableRow(cells, opts = {}) {
return cells.map(t => ({
text: t,
options: {
fontSize: opts.fontSize || 11,
bold: opts.bold || false,
color: opts.color || C.charcoal,
fill: opts.fill || C.white,
align: opts.align || "center",
fontFace: "Calibri",
border: { pt: 0.5, color: "CFD8DC" },
valign: "middle"
}
}));
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.navy);
// Left accent bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 0.5, h: 5.625,
fill: { color: C.teal }, line: { color: C.teal }
});
// Gold stripe
s.addShape(pres.ShapeType.rect, {
x: 0.5, y: 0, w: 0.08, h: 5.625,
fill: { color: C.gold }, line: { color: C.gold }
});
// Main title
s.addText("NCS in Carpal Tunnel Syndrome", {
x: 0.85, y: 1.1, w: 8.8, h: 1.2,
fontSize: 38, bold: true, color: C.white,
fontFace: "Calibri", align: "left"
});
// Subtitle
s.addText("Method, Interpretation & Special Considerations in Diabetes", {
x: 0.85, y: 2.35, w: 8.8, h: 0.65,
fontSize: 20, bold: false, color: C.tealLt,
fontFace: "Calibri", align: "left"
});
// Gold divider line
s.addShape(pres.ShapeType.rect, {
x: 0.85, y: 3.08, w: 5.0, h: 0.05,
fill: { color: C.gold }, line: { color: C.gold }
});
// For / audience
s.addText("DM Neurology — Electrophysiology Seminar", {
x: 0.85, y: 3.25, w: 8.8, h: 0.45,
fontSize: 15, bold: false, color: C.slate,
fontFace: "Calibri", align: "left", italic: true
});
// Bottom tags
const tags = ["Motor NCS", "Sensory NCS", "Inching Technique", "CTS + DM"];
tags.forEach((t, i) => {
s.addShape(pres.ShapeType.rect, {
x: 0.85 + i * 2.2, y: 4.8, w: 2.0, h: 0.45,
fill: { color: C.teal, transparency: 60 }, line: { color: C.tealLt }
});
s.addText(t, {
x: 0.85 + i * 2.2, y: 4.8, w: 2.0, h: 0.45, margin: 0,
fontSize: 12, color: C.white, align: "center", valign: "middle",
fontFace: "Calibri"
});
});
// Source
s.addText("Source: Bradley & Daroff's Neurology | Adams & Victor's Principles of Neurology", {
x: 0.85, y: 5.25, w: 9, h: 0.3,
fontSize: 9, italic: true, color: "4A6FA5",
fontFace: "Calibri", align: "left"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / AGENDA
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Session Overview", 0.18, C.white, C.navy);
const items = [
{ num: "01", title: "Why NCS in CTS?", sub: "Role, indications & what it measures" },
{ num: "02", title: "NCS Parameters", sub: "Latency, amplitude, velocity - normal values" },
{ num: "03", title: "Standard Protocol", sub: "Motor → Sensory → Comparison studies" },
{ num: "04", title: "Inching Technique", sub: "Segmental stimulation for precise localization" },
{ num: "05", title: "Severity Grading", sub: "Mild / Moderate / Severe / Extreme" },
{ num: "06", title: "CTS + Diabetes", sub: "DPN background, pitfalls & internal comparison" },
{ num: "07", title: "Exam Key Points", sub: "High-yield takeaways for DM Neurology" },
];
items.forEach((item, i) => {
const col = i < 4 ? 0 : 1;
const row = i < 4 ? i : i - 4;
const x = 0.3 + col * 4.85;
const y = 0.95 + row * 1.1;
// card bg
card(s, x, y, 4.55, 0.95, C.white, C.teal);
// number circle
s.addShape(pres.ShapeType.ellipse, {
x: x + 0.12, y: y + 0.15, w: 0.62, h: 0.62,
fill: { color: C.teal }, line: { color: C.teal }
});
s.addText(item.num, {
x: x + 0.12, y: y + 0.15, w: 0.62, h: 0.62, margin: 0,
fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle",
fontFace: "Calibri"
});
s.addText(item.title, {
x: x + 0.85, y: y + 0.08, w: 3.55, h: 0.38,
fontSize: 14, bold: true, color: C.navy,
fontFace: "Calibri", valign: "bottom"
});
s.addText(item.sub, {
x: x + 0.85, y: y + 0.49, w: 3.55, h: 0.35,
fontSize: 10, color: C.slate, italic: true,
fontFace: "Calibri", valign: "top"
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — WHY NCS IN CTS?
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Why NCS in Carpal Tunnel Syndrome?", 0.18, C.white, C.teal);
sectionTag(s, "RATIONALE");
const reasons = [
{ icon: "✔", title: "CONFIRM Diagnosis", body: "Differentiates CTS from C6/C7 radiculopathy, proximal median neuropathy, and diffuse polyneuropathy" },
{ icon: "📍", title: "LOCALIZE Compression", body: "Identifies the exact segment of focal slowing within the carpal tunnel using distal latency and inching technique" },
{ icon: "📊", title: "GRADE Severity", body: "Mild (sensory only) → Moderate (motor + sensory) → Severe (absent SNAP) → Extreme (axonal loss, denervation on EMG)" },
{ icon: "💊", title: "GUIDE Treatment", body: "Mild: splints / steroid injection | Severe: surgical decompression (carpal tunnel release)" },
{ icon: "📈", title: "MONITOR Progress", body: "Repeat NCS post-surgery or injection; sensory improvement precedes NCS normalization" },
];
reasons.forEach((r, i) => {
const y = 0.92 + i * 0.88;
// colored left bar
s.addShape(pres.ShapeType.rect, {
x: 0.3, y, w: 0.08, h: 0.72,
fill: { color: i % 2 === 0 ? C.teal : C.gold }, line: { color: i % 2 === 0 ? C.teal : C.gold }
});
card(s, 0.45, y, 9.25, 0.72, C.white, C.ltGray);
s.addText(r.icon + " " + r.title, {
x: 0.6, y: y + 0.04, w: 2.6, h: 0.36,
fontSize: 13, bold: true, color: C.navy, fontFace: "Calibri"
});
s.addText(r.body, {
x: 3.3, y: y + 0.1, w: 6.2, h: 0.5,
fontSize: 11.5, color: C.charcoal, fontFace: "Calibri", valign: "middle"
});
// divider between title and body
s.addShape(pres.ShapeType.rect, {
x: 3.2, y: y + 0.15, w: 0.04, h: 0.42,
fill: { color: C.ltGray }, line: { color: C.ltGray }
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — NCS PARAMETERS (with motor diagram image)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "NCS Parameters — What We Measure", 0.18, C.white, C.navy);
sectionTag(s, "PARAMETERS");
// Left: image of motor NCS setup
card(s, 0.25, 0.85, 4.0, 3.6, C.white, C.teal);
s.addImage({ path: "/home/daytona/workspace/ncs-cts-ppt/img0.png", x: 0.35, y: 0.92, w: 3.8, h: 3.45 });
// Right: parameter boxes
const params = [
{ label: "Distal Latency", val: "Time from stimulus → CMAP onset", unit: "Normal median: <4.2 ms", col: C.teal },
{ label: "CMAP Amplitude", val: "Height of motor potential = axon count", unit: "Normal median: >4.4 mV", col: C.tealLt },
{ label: "Motor Conduction Velocity", val: "Distance ÷ (proximal − distal latency)", unit: "Normal: >49 m/s (arm)", col: C.navy },
{ label: "F-Wave Latency", val: "Tests proximal conduction (forearm → cord)", unit: "Normal median: <31 ms", col: C.gold },
];
params.forEach((p, i) => {
const y = 0.88 + i * 0.88;
s.addShape(pres.ShapeType.rect, {
x: 4.55, y, w: 0.22, h: 0.72,
fill: { color: p.col }, line: { color: p.col }
});
card(s, 4.77, y, 4.95, 0.72, C.white, C.ltGray);
s.addText(p.label, {
x: 4.9, y: y + 0.04, w: 4.7, h: 0.3,
fontSize: 12, bold: true, color: p.col === C.gold ? C.charcoal : p.col,
fontFace: "Calibri"
});
s.addText(p.val, {
x: 4.9, y: y + 0.32, w: 3.4, h: 0.25,
fontSize: 10, color: C.charcoal, fontFace: "Calibri"
});
s.addShape(pres.ShapeType.rect, {
x: 7.0, y: y + 0.16, w: 1.6, h: 0.4,
fill: { color: p.col }, line: { color: p.col }
});
s.addText(p.unit, {
x: 7.0, y: y + 0.16, w: 1.6, h: 0.4, margin: 0,
fontSize: 9, bold: true, color: p.col === C.gold ? C.charcoal : C.white,
align: "center", valign: "middle", fontFace: "Calibri"
});
});
// Caption
s.addText("Fig: Median nerve stimulated at wrist (1) & antecubital fossa (2). CMAP at APB.\nMCV = Segment C ÷ (B'−A') — Adams & Victor's Neurology, Fig. 2-11", {
x: 0.25, y: 4.52, w: 4.0, h: 0.78,
fontSize: 8.5, italic: true, color: C.slate, fontFace: "Calibri", align: "center"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — SENSORY NCS (with SNAP image)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Sensory NCS — SNAP Parameters", 0.18, C.white, C.teal);
sectionTag(s, "SENSORY NCS");
// SNAP image on the right
card(s, 6.2, 0.85, 3.55, 4.3, C.white, C.teal);
s.addImage({ path: "/home/daytona/workspace/ncs-cts-ppt/img1.png", x: 6.35, y: 0.92, w: 3.25, h: 4.1 });
s.addText("Antidromic Median SNAP\n(Wrist stimulation → Digit II recording)\nBradley & Daroff Fig. 36.2", {
x: 6.2, y: 5.18, w: 3.55, h: 0.3, margin: 0,
fontSize: 8, italic: true, color: C.slate, align: "center", fontFace: "Calibri"
});
// Left content
s.addText("Key SNAP Measurements:", {
x: 0.3, y: 0.88, w: 5.6, h: 0.38,
fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri"
});
const snapParams = [
{ name: "Onset Latency", def: "Stimulus → first deflection from baseline", norm: "< 3.5 ms (13 cm)", key: true },
{ name: "Peak Latency", def: "Stimulus → peak of SNAP", norm: "< 3.6 ms", key: false },
{ name: "SNAP Amplitude", def: "Baseline → peak height (µV)", norm: "> 20 µV", key: false },
{ name: "Sensory CV", def: "Distance ÷ onset latency", norm: "> 50 m/s (median)", key: false },
];
snapParams.forEach((p, i) => {
const y = 1.35 + i * 0.82;
card(s, 0.3, y, 5.7, 0.72, p.key ? "E3F2FD" : C.white, p.key ? C.teal : C.ltGray);
s.addText(p.name, {
x: 0.45, y: y + 0.06, w: 2.2, h: 0.3,
fontSize: 12.5, bold: true, color: C.teal, fontFace: "Calibri"
});
s.addText(p.def, {
x: 0.45, y: y + 0.38, w: 3.2, h: 0.28,
fontSize: 10, color: C.slate, italic: true, fontFace: "Calibri"
});
s.addShape(pres.ShapeType.rect, {
x: 3.8, y: y + 0.14, w: 2.0, h: 0.42,
fill: { color: p.key ? C.teal : C.ltGray }, line: { color: p.key ? C.teal : C.ltGray }
});
s.addText(p.norm, {
x: 3.8, y: y + 0.14, w: 2.0, h: 0.42, margin: 0,
fontSize: 11, bold: true, color: p.key ? C.white : C.charcoal,
align: "center", valign: "middle", fontFace: "Calibri"
});
});
// Key point box at bottom
s.addShape(pres.ShapeType.rect, {
x: 0.3, y: 4.65, w: 5.7, h: 0.72,
fill: { color: C.gold, transparency: 30 }, line: { color: C.gold }
});
s.addText("⚡ Key Point: Sensory NCS is MORE SENSITIVE than motor NCS in early CTS.\nA prolonged median sensory latency is the EARLIEST NCS abnormality.", {
x: 0.4, y: 4.68, w: 5.5, h: 0.65,
fontSize: 11.5, bold: true, color: C.charcoal, fontFace: "Calibri", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — STANDARD PROTOCOL
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Standard NCS Protocol for CTS", 0.18, C.white, C.navy);
sectionTag(s, "PROTOCOL");
const steps = [
{
step: "STEP 1", title: "Median MOTOR NCS",
stim: "Wrist (8 cm from APB)", rec: "Abductor Pollicis Brevis (APB)",
measure: "Distal latency, CMAP amplitude; then elbow → MCV",
abnormal: "DML > 4.2 ms; forearm MCV normal (focal tunnel slowing)",
col: C.teal
},
{
step: "STEP 2", title: "Median SENSORY NCS (Antidromic)",
stim: "Wrist", rec: "Ring electrodes Digit II or III",
measure: "Onset latency, peak latency, SNAP amplitude, SCV",
abnormal: "Onset latency > 3.5 ms; reduced amplitude; slowed SCV",
col: C.tealLt
},
{
step: "STEP 3", title: "Ulnar MOTOR + SENSORY NCS (Comparator)",
stim: "Wrist", rec: "ADM (motor) | Digit V (sensory)",
measure: "Latency and amplitude of both",
abnormal: "Should be NORMAL in isolated CTS — any ulnar abnormality suggests polyneuropathy",
col: C.navy
},
{
step: "STEP 4", title: "Internal Comparison Studies",
stim: "See next slide", rec: "See next slide",
measure: "Median vs Ulnar latency difference at equal distance",
abnormal: "Median > Ulnar by >0.3–0.4 ms → CTS confirmed",
col: C.gold
},
];
steps.forEach((st, i) => {
const y = 0.88 + i * 1.1;
s.addShape(pres.ShapeType.rect, {
x: 0.25, y, w: 9.5, h: 0.98,
fill: { color: C.white },
line: { color: C.ltGray },
shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.08 }
});
// step color bar
s.addShape(pres.ShapeType.rect, {
x: 0.25, y, w: 1.1, h: 0.98,
fill: { color: st.col }, line: { color: st.col }
});
s.addText(st.step, {
x: 0.25, y, w: 1.1, h: 0.48, margin: 0,
fontSize: 10, bold: true, color: st.col === C.gold ? C.charcoal : C.white,
align: "center", valign: "bottom", fontFace: "Calibri"
});
s.addText(st.title, {
x: 0.25, y: y + 0.48, w: 1.1, h: 0.48, margin: 0,
fontSize: 8.5, color: st.col === C.gold ? C.charcoal : C.white,
align: "center", valign: "top", fontFace: "Calibri"
});
// content
s.addText(st.stim ? `Stimulate: ${st.stim} | Record: ${st.rec}` : "", {
x: 1.5, y: y + 0.05, w: 8.1, h: 0.3,
fontSize: 10.5, bold: true, color: C.navy, fontFace: "Calibri"
});
s.addText(`Measure: ${st.measure}`, {
x: 1.5, y: y + 0.36, w: 8.1, h: 0.25,
fontSize: 10, color: C.slate, fontFace: "Calibri"
});
s.addText(`⚠ Abnormal: ${st.abnormal}`, {
x: 1.5, y: y + 0.62, w: 8.1, h: 0.25,
fontSize: 10, bold: true, color: C.red, fontFace: "Calibri"
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — INTERNAL COMPARISON STUDIES (TABLE)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Internal Comparison Studies — Most Sensitive NCS Methods", 0.18, C.white, C.teal);
sectionTag(s, "COMPARISON");
s.addText("Since both median and ulnar nerves travel through the same forearm, comparing their latencies at equal distances eliminates the effect of background polyneuropathy (e.g. DM neuropathy)", {
x: 0.3, y: 0.85, w: 9.4, h: 0.45,
fontSize: 11, italic: true, color: C.slate, fontFace: "Calibri"
});
const rows = [
["Median–Ulnar\nPalmar Mixed", "Stimulate palm (8 cm from wrist)\nRecord at wrist for both nerves", "Orthodromic mixed\n(most widely used)", "Median > Ulnar\nby > 0.3 ms", "Most sensitive\nin early CTS"],
["Median–Ulnar\nSensory Ring Finger", "Stimulate wrist, record at\nDigit IV (ring finger) antidromically", "Antidromic sensory", "Median > Ulnar\nby > 0.4 ms", "Useful when\npalmar study normal"],
["Median–Ulnar\nLumbrical–Interossei", "Stimulate at wrist, record at\n2nd interosseous space", "Motor comparison", "Median > Ulnar\nby > 0.4–0.5 ms", "Best for\nmotor CTS"],
["Median–Radial\nSensory to Thumb", "Stimulate median & radial at wrist\nRecord at thumb", "Antidromic sensory", "Median > Radial\nby > 0.5 ms", "Useful in\nsevere DPN"],
];
const hdrs = ["Study", "Technique", "Type", "Abnormal Criterion", "Clinical Use"];
const colW = [1.6, 2.6, 1.5, 1.8, 1.7];
const startX = 0.3;
let curX = startX;
// header row
const hdrRow = hdrs.map((h, i) => ({
text: h,
options: {
fontSize: 11, bold: true, color: C.white,
fill: C.navy, align: "center",
border: { pt: 0.5, color: "FFFFFF" }, valign: "middle",
fontFace: "Calibri"
}
}));
const dataRows = rows.map((r, ri) => r.map((cell, ci) => ({
text: cell,
options: {
fontSize: 10, bold: ci === 3,
color: ci === 3 ? C.red : C.charcoal,
fill: ri % 2 === 0 ? C.white : C.offW,
align: "center", valign: "middle",
border: { pt: 0.5, color: "CFD8DC" },
fontFace: "Calibri"
}
})));
s.addTable([hdrRow, ...dataRows], {
x: 0.3, y: 1.38, w: 9.4, h: 3.7,
rowH: 0.74,
colW: colW,
border: { pt: 1, color: "CFD8DC" }
});
// Source footnote
s.addText("Source: Bradley & Daroff's Neurology in Clinical Practice, Table 106.4 (p. 2636)", {
x: 0.3, y: 5.2, w: 9.4, h: 0.25,
fontSize: 9, italic: true, color: C.slate, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — INCHING TECHNIQUE (with images)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "The Inching (Segmental Stimulation) Technique", 0.18, C.white, C.navy);
sectionTag(s, "INCHING");
// Left image - hand photo
card(s, 0.25, 0.85, 3.2, 3.8, C.white, C.teal);
s.addImage({ path: "/home/daytona/workspace/ncs-cts-ppt/img2.png", x: 0.3, y: 0.9, w: 3.1, h: 3.7 });
s.addText("Fig 36.3A: 12 stimulation sites\nin 1-cm increments across wrist.\nReference (0) = distal wrist crease", {
x: 0.25, y: 4.68, w: 3.2, h: 0.5, margin: 0,
fontSize: 8.5, italic: true, color: C.slate, align: "center", fontFace: "Calibri"
});
// Right image - waveforms
card(s, 3.65, 0.85, 6.1, 3.8, C.white, C.teal);
s.addImage({ path: "/home/daytona/workspace/ncs-cts-ppt/img3.png", x: 3.72, y: 0.9, w: 5.95, h: 3.7 });
s.addText("Fig 36.4: LEFT = CTS — abrupt latency jump at -2 cm (site of compression)\nRIGHT = Normal — linear latency increase of 0.16-0.21 ms per cm\nBradley & Daroff's Neurology", {
x: 3.65, y: 4.68, w: 6.1, h: 0.5, margin: 0,
fontSize: 8.5, italic: true, color: C.slate, align: "center", fontFace: "Calibri"
});
// Key principle box
s.addShape(pres.ShapeType.rect, {
x: 0.25, y: 5.18, w: 9.5, h: 0.32,
fill: { color: C.gold, transparency: 20 }, line: { color: C.gold }
});
s.addText("Principle: Normal = ~0.16–0.21 ms/cm linear increase | Pathological = abrupt jump > 0.5 ms over a single 1-cm segment | CTS: focal slowing at / just distal to the transverse carpal ligament", {
x: 0.3, y: 5.18, w: 9.4, h: 0.32, margin: 0,
fontSize: 10, bold: true, color: C.charcoal, align: "center", valign: "middle",
fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — SEVERITY GRADING
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "NCS Severity Grading in Carpal Tunnel Syndrome", 0.18, C.white, C.teal);
sectionTag(s, "GRADING");
const grades = [
{
grade: "MILD", color: C.green, bg: "E8F5E9",
findings: [
"Prolonged median sensory latency / slowed SCV only",
"Motor distal latency: NORMAL",
"CMAP amplitude: NORMAL",
"No denervation on EMG"
],
tx: "Splints + NSAID / Steroid injection"
},
{
grade: "MODERATE", color: "E65100", bg: "FFF3E0",
findings: [
"Prolonged motor AND sensory distal latencies",
"SNAP amplitude reduced (but still present)",
"CMAP amplitude may be mildly reduced",
"No active denervation on EMG"
],
tx: "Steroid injection → Consider surgical release"
},
{
grade: "SEVERE", color: C.red, bg: "FFEBEE",
findings: [
"SNAP absent (median)",
"Significantly prolonged motor latency",
"Reduced CMAP amplitude (axonal loss)",
"EMG: may show chronic neurogenic changes in APB"
],
tx: "Surgical carpal tunnel release (urgent)"
},
{
grade: "EXTREME", color: "4A148C", bg: "F3E5F5",
findings: [
"Absent SNAP and absent / minimal CMAP",
"Fibrillations + positive sharp waves in APB (active denervation)",
"Reduced / absent MUPs on voluntary activation",
"EMG mandatory to assess axonal loss"
],
tx: "Emergency surgical release; recovery guarded"
},
];
grades.forEach((g, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.25 + col * 4.85;
const y = 0.88 + row * 2.28;
card(s, x, y, 4.6, 2.18, g.bg, g.color);
// grade banner
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.6, h: 0.46,
fill: { color: g.color }, line: { color: g.color }
});
s.addText(g.grade, {
x, y, w: 4.6, h: 0.46, margin: 0,
fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle",
fontFace: "Calibri"
});
g.findings.forEach((f, fi) => {
s.addText([{ text: "• ", options: { bold: true, color: g.color } }, { text: f, options: {} }], {
x: x + 0.15, y: y + 0.5 + fi * 0.3, w: 4.3, h: 0.28,
fontSize: 10, color: C.charcoal, fontFace: "Calibri"
});
});
// treatment
s.addShape(pres.ShapeType.rect, {
x: x + 0.1, y: y + 1.76, w: 4.4, h: 0.3,
fill: { color: g.color, transparency: 70 }, line: { color: g.color }
});
s.addText("Rx: " + g.tx, {
x: x + 0.1, y: y + 1.76, w: 4.4, h: 0.3, margin: 0,
fontSize: 9.5, bold: true, color: C.charcoal, align: "center", valign: "middle",
fontFace: "Calibri"
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — NORMAL VALUES TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "Normal NCS Reference Values", 0.18, C.white, C.navy);
sectionTag(s, "NORMAL VALUES");
s.addText("Adams & Victor's Principles of Neurology — Table 2-5 (Mean ± 2SD, Adults 16–65 yr)", {
x: 0.3, y: 0.85, w: 9.4, h: 0.3,
fontSize: 10.5, italic: true, color: C.slate, fontFace: "Calibri"
});
// Motor table
s.addText("MOTOR NCS", {
x: 0.3, y: 1.22, w: 4.5, h: 0.32,
fontSize: 13, bold: true, color: C.teal, fontFace: "Calibri"
});
const motorHdr = [["Nerve", "Stimulate", "Record", "DML (ms)", "Amp (mV)", "CV (m/s)", "F-wave (ms)"]];
const motorData = [
["Median", "Wrist", "APB", "< 4.2", "> 4.4", "> 49", "< 31"],
["Ulnar", "Wrist", "ADM", "< 3.4", "> 6.0", "> 49", "< 32"],
["Peroneal", "Ankle", "EDB", "< 5.8", "> 2.0", "> 42", "< 58"],
["Tibial", "Ankle", "AH", "< 6.5", "> 3.0", "> 41", "< 59"],
];
const allMotor = [motorHdr[0], ...motorData];
s.addTable(allMotor.map((row, ri) => row.map((cell, ci) => ({
text: cell,
options: {
fontSize: 10.5, bold: ri === 0,
color: ri === 0 ? C.white : (ci >= 3 ? C.teal : C.charcoal),
fill: ri === 0 ? C.navy : (ri % 2 === 0 ? C.white : C.offW),
align: "center", valign: "middle",
border: { pt: 0.5, color: "CFD8DC" },
fontFace: "Calibri"
}
}))), {
x: 0.3, y: 1.55, w: 9.4, h: 1.55,
rowH: 0.31,
colW: [1.5, 1.3, 1.1, 1.4, 1.35, 1.35, 1.4]
});
// Sensory table
s.addText("SENSORY NCS", {
x: 0.3, y: 3.2, w: 4.5, h: 0.32,
fontSize: 13, bold: true, color: C.tealLt, fontFace: "Calibri"
});
const sensData = [
["Median", "Wrist", "Digit II", "< 3.5", "< 3.6", "> 20", "> 50"],
["Ulnar", "Wrist", "Digit V", "< 3.1", "< 3.2", "> 17", "> 50"],
["Sural", "Calf", "Ankle", "< 4.4", "–", "> 6", "> 40"],
["Radial", "Forearm", "Thumb", "< 2.9", "–", "> 15", "> 50"],
];
const sensHdr = ["Nerve", "Stimulate", "Record", "Onset (ms)", "Peak (ms)", "Amp (µV)", "CV (m/s)"];
s.addTable([[sensHdr, ...sensData][0], ...sensData.map((r) => r)].map((row, ri) => {
const isHdr = ri === 0 && row === sensHdr;
const actualRow = ri === 0 ? sensHdr : sensData[ri - 1];
return actualRow.map((cell, ci) => ({
text: cell,
options: {
fontSize: 10.5, bold: ri === 0,
color: ri === 0 ? C.white : (ci >= 3 ? C.tealLt : C.charcoal),
fill: ri === 0 ? C.teal : (ri % 2 === 0 ? C.white : C.offW),
align: "center", valign: "middle",
border: { pt: 0.5, color: "CFD8DC" },
fontFace: "Calibri"
}
}));
}), {
x: 0.3, y: 3.53, w: 9.4, h: 1.55,
rowH: 0.31,
colW: [1.5, 1.3, 1.1, 1.4, 1.35, 1.35, 1.4]
});
// Highlight box
s.addShape(pres.ShapeType.rect, {
x: 0.3, y: 5.18, w: 9.4, h: 0.3,
fill: { color: C.gold, transparency: 25 }, line: { color: C.gold }
});
s.addText("⭐ For CTS: Median motor DML > 4.2 ms | Median sensory latency > 3.5 ms | SNAP amplitude < 20 µV → All suggest pathology in the carpal tunnel", {
x: 0.35, y: 5.18, w: 9.3, h: 0.3, margin: 0,
fontSize: 10.5, bold: true, color: C.charcoal, align: "center", valign: "middle",
fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — CTS IN DIABETES
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.navy);
// White top band
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: C.red }, line: { color: C.red }
});
s.addText("CTS in Diabetic Patients — The Diagnostic Challenge", {
x: 0.35, y: 0, w: 9.3, h: 0.75, margin: 0,
fontSize: 22, bold: true, color: C.white, valign: "middle", fontFace: "Calibri"
});
sectionTag(s, "DM + CTS");
// 3 challenge cards
const challenges = [
{
title: "Problem 1: Elevated Baselines",
body: "DPN prolongs latencies and reduces amplitudes across ALL nerves.\nA median latency of 4.8 ms may look like \"mild CTS\" when the ulnar is also 4.5 ms — suggesting DPN, not focal CTS.",
col: C.red
},
{
title: "Problem 2: DM is a CTS Risk Factor",
body: "Diabetics have 2–3× higher CTS prevalence.\nMechanisms: metabolic accumulation, flexor tenosynovitis, microangiopathy of the vasa nervorum.",
col: C.gold
},
{
title: "Problem 3: Small Fiber DPN",
body: "NCS only measures large myelinated fibers (A-alpha/A-beta).\nIn predominantly small-fiber DPN, NCS can be NORMAL despite severe symptoms.\nRequires skin biopsy (IENFD) or QSART.",
col: C.teal
},
];
challenges.forEach((c, i) => {
const y = 0.9 + i * 1.45;
s.addShape(pres.ShapeType.rect, {
x: 0.3, y, w: 9.4, h: 1.3,
fill: { color: "1A2F5A" }, line: { color: c.col }
});
s.addShape(pres.ShapeType.rect, {
x: 0.3, y, w: 0.2, h: 1.3,
fill: { color: c.col }, line: { color: c.col }
});
s.addText(c.title, {
x: 0.65, y: y + 0.06, w: 8.9, h: 0.38,
fontSize: 14, bold: true, color: c.col === C.gold ? C.gold : c.col,
fontFace: "Calibri"
});
s.addText(c.body, {
x: 0.65, y: y + 0.46, w: 8.8, h: 0.75,
fontSize: 11, color: "B0BEC5", fontFace: "Calibri"
});
});
// Solution teaser
s.addShape(pres.ShapeType.rect, {
x: 0.3, y: 5.22, w: 9.4, h: 0.28,
fill: { color: C.teal, transparency: 40 }, line: { color: C.teal }
});
s.addText("➤ Solution: Internal Comparison Studies (next slide) isolate focal CTS from background DPN", {
x: 0.35, y: 5.22, w: 9.3, h: 0.28, margin: 0,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle",
fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — NCS PROTOCOL IN DM + CTS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.offW);
header(s, "NCS Protocol: CTS Superimposed on Diabetic Neuropathy", 0.18, C.white, C.teal);
sectionTag(s, "DM PROTOCOL");
// Left: step-by-step protocol
s.addText("Step-by-Step Protocol", {
x: 0.3, y: 0.87, w: 5.5, h: 0.35,
fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri"
});
const protocolSteps = [
{ n: 1, text: "Ensure skin temperature > 32°C (cold falsely prolongs latency — critical in DM patients with poor perfusion)" },
{ n: 2, text: "Median motor NCS (wrist → APB) + ulnar motor NCS (comparator)" },
{ n: 3, text: "Median sensory NCS antidromic (wrist → Digit II)" },
{ n: 4, text: "Median–Ulnar palmar mixed comparison (most sensitive for CTS)" },
{ n: 5, text: "Median–Radial sensory to thumb (useful when DPN is severe)" },
{ n: 6, text: "Sural + peroneal NCS — grade severity of background DPN (lower limb worse in DPN)" },
{ n: 7, text: "If severe CTS suspected: Needle EMG of APB — fibrillations confirm axonal loss" },
];
protocolSteps.forEach((step, i) => {
const y = 1.28 + i * 0.56;
s.addShape(pres.ShapeType.ellipse, {
x: 0.3, y: y + 0.04, w: 0.4, h: 0.4,
fill: { color: C.teal }, line: { color: C.teal }
});
s.addText(String(step.n), {
x: 0.3, y: y + 0.04, w: 0.4, h: 0.4, margin: 0,
fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle",
fontFace: "Calibri"
});
s.addText(step.text, {
x: 0.82, y, w: 5.0, h: 0.5,
fontSize: 10, color: C.charcoal, fontFace: "Calibri", valign: "middle"
});
});
// Right: distinguishing table
s.addText("Focal CTS vs. Diffuse DPN", {
x: 6.1, y: 0.87, w: 3.65, h: 0.35,
fontSize: 13, bold: true, color: C.navy, fontFace: "Calibri"
});
const diffRows = [
["Feature", "Focal CTS", "Diffuse DPN"],
["Sensory latency", "Median > Ulnar", "Both equal"],
["Motor latency", "DML prolonged\nforearm MCV normal", "All segments\nslowed"],
["Upper vs Lower", "Upper limb\nisolated", "Lower limb\nworse"],
["Sural nerve", "Normal", "Abnormal\n(absent SNAP)"],
["F-waves", "Normal", "All prolonged"],
];
s.addTable(diffRows.map((row, ri) => row.map((cell, ci) => ({
text: cell,
options: {
fontSize: 9.5, bold: ri === 0 || ci === 0,
color: ri === 0 ? C.white : (ci === 1 ? C.teal : (ci === 2 ? C.red : C.charcoal)),
fill: ri === 0 ? C.navy : (ri % 2 === 0 ? C.offW : C.white),
align: "center", valign: "middle",
border: { pt: 0.5, color: "CFD8DC" },
fontFace: "Calibri"
}
}))), {
x: 6.1, y: 1.28, w: 3.65, h: 3.6,
rowH: 0.6,
colW: [1.25, 1.2, 1.2]
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — KEY EXAM POINTS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.navy);
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("High-Yield Exam Points — DM Neurology", {
x: 0.35, y: 0, w: 9.3, h: 0.75, margin: 0,
fontSize: 22, bold: true, color: C.charcoal, valign: "middle", fontFace: "Calibri"
});
const points = [
{ num: "1", text: "Sensory NCS is MORE SENSITIVE than motor in early CTS — prolonged median sensory latency is the FIRST NCS abnormality", col: C.gold },
{ num: "2", text: "Internal comparison (Median > Ulnar by >0.3 ms palmar mixed) is the most sensitive method — MANDATORY when DPN coexists", col: C.tealLt },
{ num: "3", text: "Inching technique: normal = 0.16–0.21 ms/cm; pathological = abrupt jump >0.5 ms/cm at carpal ligament level", col: C.teal },
{ num: "4", text: "In DM + CTS: use Median–Ulnar palmar comparison AND Median–Radial thumb comparison to isolate focal component", col: C.gold },
{ num: "5", text: "Temperature MUST be >32°C before NCS — DM patients have cold extremities that falsely prolong latencies", col: C.tealLt },
{ num: "6", text: "Add needle EMG of APB in moderate–severe CTS: fibrillations & reduced MUP recruitment = axonal loss → surgical urgency", col: C.teal },
{ num: "7", text: "Post-surgical NCS improvement: sensory SYMPTOMS improve first; NCS latency normalization lags by months", col: C.gold },
];
points.forEach((p, i) => {
const y = 0.88 + i * 0.66;
s.addShape(pres.ShapeType.rect, {
x: 0.28, y, w: 9.44, h: 0.58,
fill: { color: "0D2545" }, line: { color: p.col }
});
s.addShape(pres.ShapeType.rect, {
x: 0.28, y, w: 0.55, h: 0.58,
fill: { color: p.col }, line: { color: p.col }
});
s.addText(p.num, {
x: 0.28, y, w: 0.55, h: 0.58, margin: 0,
fontSize: 16, bold: true, color: p.col === C.gold ? C.charcoal : C.white,
align: "center", valign: "middle", fontFace: "Calibri"
});
s.addText(p.text, {
x: 0.9, y: y + 0.06, w: 8.7, h: 0.46,
fontSize: 11, color: C.white, fontFace: "Calibri", valign: "middle"
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — THANK YOU / REFERENCES
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
addBg(s, C.navy);
// Left color bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 0.5, h: 5.625,
fill: { color: C.teal }, line: { color: C.teal }
});
s.addShape(pres.ShapeType.rect, {
x: 0.5, y: 0, w: 0.08, h: 5.625,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("Thank You", {
x: 0.85, y: 0.8, w: 8.8, h: 1.0,
fontSize: 44, bold: true, color: C.white, fontFace: "Calibri", align: "left"
});
s.addShape(pres.ShapeType.rect, {
x: 0.85, y: 1.85, w: 4.5, h: 0.06,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("References", {
x: 0.85, y: 2.1, w: 9, h: 0.38,
fontSize: 17, bold: true, color: C.teal, fontFace: "Calibri"
});
const refs = [
"1. Bradley WG, Daroff RB et al. Bradley and Daroff's Neurology in Clinical Practice, 8th Ed. — Ch. 36 (EMG/NCS) & Ch. 106 (Median Nerve)",
"2. Adams RD, Victor M, Ropper AH. Adams and Victor's Principles of Neurology, 12th Ed. — Ch. 2 (Electrophysiologic Studies)",
"3. Campbell's Operative Orthopaedics, 15th Ed. — Carpal Tunnel Syndrome (NCS in diagnosis)",
"4. Kimura J. The carpal tunnel syndrome: localization of conduction abnormalities. Brain 1979;102:619–635.",
"5. American Association of Neuromuscular & Electrodiagnostic Medicine (AANEM) Practice Guidelines — CTS Electrodiagnosis",
];
refs.forEach((r, i) => {
s.addText(r, {
x: 0.85, y: 2.55 + i * 0.5, w: 9.0, h: 0.42,
fontSize: 10.5, color: "90A4AE", fontFace: "Calibri"
});
});
s.addShape(pres.ShapeType.rect, {
x: 0.85, y: 5.05, w: 4.0, h: 0.36,
fill: { color: C.teal, transparency: 60 }, line: { color: C.teal }
});
s.addText("DM Neurology — Electrophysiology Seminar", {
x: 0.85, y: 5.05, w: 4.0, h: 0.36, margin: 0,
fontSize: 12, italic: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri"
});
}
// ─── WRITE ───────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx" })
.then(() => console.log("✅ Presentation saved successfully."))
.catch(err => console.error("❌ Error:", err));
cd /home/daytona/workspace/ncs-cts-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx
NCS in CTS DM Neurology
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide — dark navy with teal/gold theme |
| 2 | Session overview / agenda (7 topics with numbered cards) |
| 3 | Why NCS in CTS? (5 reasons: confirm / localize / grade / guide / monitor) |
| 4 | NCS Parameters — Motor (with textbook diagram of median nerve stimulation) |
| 5 | Sensory NCS — SNAP parameters (with annotated SNAP waveform image) |
| 6 | Standard 4-step NCS Protocol for CTS |
| 7 | Internal Comparison Studies — full table (palmar mixed, ring finger, lumbrical, radial-thumb) |
| 8 | Inching Technique — both textbook images (hand photo + waveform panels) |
| 9 | NCS Severity Grading — Mild / Moderate / Severe / Extreme with treatment |
| 10 | Normal NCS Reference Values table (motor + sensory, all major nerves) |
| 11 | CTS in Diabetes — 3 challenges (dark slide for impact) |
| 12 | NCS Protocol for DM + CTS + distinguishing table (Focal CTS vs Diffuse DPN) |
| 13 | 7 High-Yield Exam Points (dark slide with gold/teal accents) |
| 14 | Thank You + References (Bradley & Daroff, Adams & Victor, Kimura 1979, AANEM) |
try again
cd /home/daytona/workspace/ncs-cts-ppt && python -m markitdown NCS_in_CTS_DM_Neurology.pptx 2>&1 | head -80
cd /home/daytona/workspace/ncs-cts-ppt && python3 -c " from pptx import Presentation prs = Presentation('NCS_in_CTS_DM_Neurology.pptx') for i, slide in enumerate(prs.slides): print(f'Slide {i+1}:') for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: t = para.text.strip() if t: print(f' {t[:80]}') " 2>&1 | head -100
cd /home/daytona/workspace/ncs-cts-ppt && node -e " const pptxgen = require('pptxgenjs'); const p = new pptxgen(); const s = p.addSlide(); s.addText('Test', {x:1,y:1,w:4,h:1,fontSize:24}); p.writeFile({fileName:'test.pptx'}).then(()=>console.log('ok')).catch(e=>console.error(e)); " 2>&1
ls -lh /home/daytona/workspace/ncs-cts-ppt/ && file /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx
cd /home/daytona/workspace/ncs-cts-ppt && node build.js 2>&1
cp /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx /home/daytona/workspace/NCS_CTS_DM_Neurology.pptx && ls -lh /home/daytona/workspace/NCS_CTS_DM_Neurology.pptx
NCS in CTS DM Neurology
Presentation · PPTX
NCS CTS DM Neurology
Presentation · PPTX
file is corrupted
cd /home/daytona/workspace/ncs-cts-ppt && node -e " const pptxgen = require('pptxgenjs'); const p = new pptxgen(); // Test with one image to see if that's the issue const s = p.addSlide(); s.addImage({ path: './img0.png', x: 1, y: 1, w: 4, h: 3 }); s.addText('Image test', {x:1,y:4.2,w:4,h:0.5,fontSize:18}); p.writeFile({fileName:'img_test.pptx'}).then(()=>console.log('ok')).catch(e=>console.error('ERR',e)); " 2>&1
# Unzip the main pptx and check for XML errors cd /home/daytona/workspace/ncs-cts-ppt cp NCS_in_CTS_DM_Neurology.pptx check.zip unzip -t check.zip 2>&1 | tail -20
# Check slide XML for any malformed table rows (the likely culprit in slide 10) cd /home/daytona/workspace/ncs-cts-ppt unzip -p check.zip ppt/slides/slide10.xml | python3 -c " import sys, xml.etree.ElementTree as ET try: ET.parse(sys.stdin) print('slide10 XML OK') except Exception as e: print('slide10 XML ERROR:', e) " 2>&1 unzip -p check.zip ppt/slides/slide7.xml | python3 -c " import sys, xml.etree.ElementTree as ET try: ET.parse(sys.stdin) print('slide7 XML OK') except Exception as e: print('slide7 XML ERROR:', e) " 2>&1
# Check all slide XML files at once cd /home/daytona/workspace/ncs-cts-ppt for i in $(seq 1 14); do result=$(unzip -p check.zip ppt/slides/slide${i}.xml 2>/dev/null | python3 -c " import sys, xml.etree.ElementTree as ET try: ET.parse(sys.stdin) print('OK') except Exception as e: print('ERROR:', e) " 2>&1) echo "Slide $i: $result" done
# Try LibreOffice to validate/repair the file libreoffice --headless --convert-to pptx /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx --outdir /home/daytona/workspace/ 2>&1
# LibreOffice can READ it - convert to PDF to verify content is intact libreoffice --headless --convert-to pdf /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx --outdir /home/daytona/workspace/ncs-cts-ppt/ 2>&1
libreoffice --headless --convert-to pdf /home/daytona/workspace/ncs-cts-ppt/NCS_in_CTS_DM_Neurology.pptx --outdir /tmp/ 2>&1 && ls -lh /tmp/*.pdf 2>&1
cp /tmp/NCS_in_CTS_DM_Neurology.pdf /home/daytona/workspace/NCS_in_CTS_DM_Neurology.pdf ls -lh /home/daytona/workspace/NCS_in_CTS_DM_Neurology.pdf
NCS CTS DM Neurology
Presentation · PPTX
NCS in CTS DM Neurology
PDF Document · PDF
I now have comprehensive content from authoritative neurology textbooks. Let me compile the full answer. --- # NCS Method in Carpal Tunnel Syndrome (CTS) - For DM Neurology Students *Sources: Bradley & Daroff's Neurology in Clinical Practice; Adams & Victor's Principles of Neurology, 12th Ed.* --- ## 1. WHY NCS in CTS? NCS is the **gold standard** for: - Confirming median nerve entrapment at the wrist - Localizing the exact site of compression (within the carpal tunnel) - Grading severity (mild/moderate/severe) - which guides treatment - Distinguishing CTS from cervical radiculopathy (C6/C7), proximal median neuropathy, or polyneuropathy - Monitoring recovery post-surgery or steroid injection --- ## 2. BASIC NCS PRINCIPLES ### What is Measured **Motor NCS (CMAP - Compound Muscle Action Potential):**  *Fig: Median nerve stimulated at the wrist (site 1) and antecubital fossa (site 2), CMAP recorded at APB. Distal latency = A', Proximal latency = B', MCV = segment C / (B' - A')* | Parameter | What it reflects | Normal (Median) | |-----------|-----------------|-----------------| | Distal latency (onset) | Conduction through the carpal tunnel to thenar muscle | **< 4.2 ms** (APB, 6-8 cm) | | CMAP amplitude | Number of functioning motor axons | **> 4.4 mV** | | Motor conduction velocity | Speed of fastest large fibers, forearm segment | **> 49 m/s** | | F-wave latency | Proximal conduction integrity | **< 31 ms** | **Sensory NCS (SNAP - Sensory Nerve Action Potential):**  *Fig: SNAP parameters - onset latency, peak latency, amplitude (µV), duration, and area* | Parameter | Normal (Median - Digit II antidromic) | |-----------|--------------------------------------| | Onset latency (wrist → finger 2, ~13-14 cm) | **< 3.5 ms** | | Peak latency | < 3.6 ms | | SNAP amplitude | **> 20 µV** | | Sensory conduction velocity | **> 50 m/s** | > **Key point:** Sensory NCS is more sensitive than motor NCS in early CTS, because sensory fibers are affected first by compression. A prolonged sensory distal latency is the **earliest NCS abnormality** in CTS. --- ## 3. STANDARD NCS PROTOCOL FOR CTS ### Step 1 - Median Motor NCS - **Stimulate:** Median nerve at the wrist (7-8 cm proximal to APB) - **Record:** Surface electrode over **abductor pollicis brevis (APB)** - **Measure:** Distal latency, CMAP amplitude, and after proximal (elbow) stimulation - motor conduction velocity - **Abnormal in CTS:** Prolonged distal motor latency > 4.2 ms; normal forearm MCV (focal slowing at tunnel) ### Step 2 - Median Sensory NCS (Antidromic) - **Stimulate:** Median nerve at the wrist - **Record:** Ring electrodes on **digit II (index) or digit III (middle finger)** - **Distance:** 13-14 cm - **Abnormal in CTS:** Prolonged peak latency, reduced SNAP amplitude, slowed SCV ### Step 3 - Ulnar Sensory and Motor NCS (Mandatory comparison) - Stimulate ulnar nerve at wrist; record at digit V (ADM for motor) - Used as an internal comparator - ulnar should be normal in isolated CTS ### Step 4 - Internal Comparison Studies (Critical - see below) --- ## 4. INTERNAL COMPARISON STUDIES IN CTS These are the **most sensitive** NCS methods for CTS. Since both median and ulnar pass through similar forearm segments, comparing their latencies across equal distances eliminates the effect of generalized neuropathy (such as DM polyneuropathy): | Comparison Study | Technique | Abnormal Criterion | |-----------------|-----------|-------------------| | **Median-Ulnar Palmar Mixed Study** | Stimulate palm (8 cm from wrist), record at wrist for both nerves | Median latency > ulnar by **> 0.3 ms** | | **Median-Ulnar Ring Finger (Sensory)** | Stimulate wrist, record at ring finger (digit IV) antidromically | Median latency > ulnar by **> 0.4 ms** | | **Median-Ulnar Lumbrical-Interossei Motor** | Stimulate median and ulnar at wrist, record at 2nd interossei space | Median CMAP latency exceeds ulnar by **> 0.4-0.5 ms** | | **Median-Radial Sensory to Thumb** | Stimulate median and radial at wrist, record at thumb | Median latency > radial by **> 0.5 ms** | *(- Bradley & Daroff's Neurology, Table 106.4, p. 2636)* --- ## 5. THE INCHING / SEGMENTAL STIMULATION TECHNIQUE This is the **most precise method** for localizing the exact site of median nerve compression within the carpal tunnel. **Principle:** Stimulate the median nerve in **1-cm increments** across the wrist. A normal nerve shows latency increase of ~0.16-0.21 ms per cm. An **abrupt increase > 0.5 ms over a single 1-cm segment** indicates a focal lesion at that point. **Why this is superior to routine NCS:** - A 0.2 ms slowing over a 10-cm segment = only 10% change (can be missed) - The same 0.2 ms slowing over 1 cm = **100% change** - unmistakable  *Fig 36.3A: 12 stimulation sites in 1-cm increments. Reference "0" = distal wrist crease (origin of transverse carpal ligament). SNAPs recorded from digit II; CMAPs from APB*  *Fig 36.4: Bilateral CTS. Panel A (right) shows normal linear latency increments. Panel B (left) shows an abrupt latency jump at the -2 cm level, localizing the compression point precisely* --- ## 6. NCS SEVERITY GRADING IN CTS | Grade | NCS Findings | |-------|-------------| | **Mild** | Only prolonged median sensory latency; normal motor latency and CMAP amplitude | | **Moderate** | Prolonged motor and sensory latencies; SNAP may be reduced in amplitude | | **Severe** | Absent SNAP; significantly prolonged/absent CMAP; reduced CMAP amplitude | | **Extreme** | Absent both sensory and motor responses from median nerve; needle EMG shows active denervation (fibrillations) in APB | --- ## 7. CTS IN DIABETIC PATIENTS - THE KEY CHALLENGE Diabetic mellitus (DM) causes **peripheral polyneuropathy (DPN)** - a generalized, length-dependent sensorimotor neuropathy that affects ALL peripheral nerves. This creates several complications for NCS interpretation in CTS: ### Problem 1: Elevated Baselines DPN itself prolongs latencies and reduces amplitudes across all nerves. So a median latency of 4.8 ms may look "mildly abnormal for CTS" when in fact the ulnar is also at 4.5 ms - suggesting generalized neuropathy rather than focal entrapment. ### Problem 2: DM Is a Risk Factor for CTS Diabetics have ~2-3x higher CTS prevalence than the general population (metabolic accumulation, tenosynovitis, microangiopathy). ### Problem 3: Small Fiber Neuropathy in DM DPN in DM predominantly affects small fibers (C and A-delta). NCS only measures large myelinated fibers (A-alpha and A-beta). In **predominantly small-fiber DPN**, NCS can be **normal or near-normal** even with significant clinical neuropathy. Skin biopsy (intraepidermal nerve fiber density) or QSART is then required. ### Solution: Use Internal Comparison Studies The **median-ulnar comparison** methodology is essential here. Since both median and ulnar nerves pass through the same forearm (equally affected by DPN), a **relative prolongation of median over ulnar** across equal distances isolates the focal carpal tunnel component from the background neuropathy: - Median-Ulnar palmar mixed latency difference **> 0.3 ms** still favors CTS superimposed on DPN - The **median-radial sensory thumb comparison** is also very useful, as the radial sensory nerve bypasses the carpal tunnel entirely ### Practical NCS Protocol for DM + Suspected CTS: 1. Standard median motor and sensory NCS 2. Standard ulnar motor and sensory NCS (comparator) 3. **Median-Ulnar palmar mixed nerve comparison** (most sensitive internal comparison) 4. **Median-Radial sensory to thumb** comparison 5. Sural nerve NCS - to document background DPN severity (lower limb is more affected in DPN, helping grade overall polyneuropathy) 6. Consider lower limb NCS (peroneal, tibial, sural) to complete polyneuropathy assessment 7. **Temperature control is mandatory** - DM patients often have cold extremities; skin temperature must be > 32°C before testing (cold falsely prolongs latency and mimics neuropathy) ### NCS Parameters Distinguishing Focal CTS from Diffuse DPN: | Feature | Focal CTS | Diffuse DPN | |---------|-----------|-------------| | Sensory latency prolongation | **Median > Ulnar** (focal) | Both equally prolonged | | Motor latency | Median forearm NCV normal; only distal latency prolonged | All nerves slowed | | Upper vs lower limb | Upper limb isolated | **Lower limb worse** (length-dependent) | | Sural nerve | Normal | Abnormal (reduced/absent SNAP) | | F-waves | Normal (forearm) | All prolonged | --- ## 8. CTS DIAGNOSIS FLOWCHART FOR DM PATIENTS ``` Suspected CTS in DM patient | v NCS: Median motor + sensory Ulnar motor + sensory Lower limb NCS (sural, peroneal) | ___________________________________________ | | All nerves slowed Median specifically slow, (length-dependent pattern) ulnar relatively normal DPN confirmed | | Internal comparison studies v (Median-Ulnar palmar/ring) Consider skin biopsy | for small fiber DPN Median latency > Ulnar by >0.3 ms → CTS CONFIRMED (superimposed on DPN) ``` --- ## 9. QUICK REFERENCE: NORMAL NCS VALUES | Nerve | Study | Latency | Amplitude | Velocity | |-------|-------|---------|-----------|----------| | Median motor | Wrist → APB | < 4.2 ms | > 4.4 mV | > 49 m/s | | Ulnar motor | Wrist → ADM | < 3.4 ms | > 6.0 mV | > 49 m/s | | Median sensory | Wrist → Digit II | < 3.5 ms | > 20 µV | > 50 m/s | | Ulnar sensory | Wrist → Digit V | < 3.1 ms | > 17 µV | > 50 m/s | | Sural sensory | Calf → Ankle | < 4.4 ms | > 6 µV | > 40 m/s | | Peroneal motor | Ankle → EDB | < 5.8 ms | > 2.0 mV | > 42 m/s | *(Adams & Victor's, Table 2-5, p. 52)* --- ## 10. KEY TEACHING POINTS FOR DM NEUROLOGY EXAM 1. **Sensory NCS is more sensitive than motor** in early CTS - abnormal sensory latency/velocity is the first finding 2. **Internal comparison methods** (median vs ulnar at equal distances) are the most sensitive and are essential when DPN co-exists 3. The **inching technique** (1-cm increments across wrist) is the most precise localizer - a jump > 0.5 ms/cm is pathological 4. In **DM + CTS**, use median-ulnar palmar comparison and median-radial thumb comparison to isolate the focal component 5. **Temperature correction** is mandatory - keep limb > 32°C before testing 6. **EMG (needle)** of APB must be added in severe/moderate CTS - fibrillations and reduced recruitment confirm axonal loss and indicate surgical urgency 7. Post-surgical improvement: sensory symptoms improve first; NCS improvement (latency normalization) may lag by months *(- Bradley & Daroff's Neurology in Clinical Practice, Chapter 36 & 106; Adams & Victor's Principles of Neurology, Chapter 2)*
~/ncs-cts-ppt/build2.js
"use strict";
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9"; // 10 x 5.625 inches
// ── PALETTE ─────────────────────────────────────────────────────────────────
const NAVY = "0B1F4B";
const TEAL = "007A87";
const TEAL2 = "00ACC1";
const GOLD = "F4A700";
const WHITE = "FFFFFF";
const OFFWH = "F2F6FA";
const SLATE = "546E7A";
const LGRAY = "DDE6EE";
const CHAR = "1E2D3D";
const RED = "C62828";
const GREEN = "2E7D32";
const PURPLE = "4A148C";
const ORANGE = "E65100";
// ── HELPERS ──────────────────────────────────────────────────────────────────
function topBar(slide, color, text) {
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:0.72, fill:{color}, line:{color} });
slide.addText(text, { x:0.35, y:0, w:9.3, h:0.72, margin:0,
fontSize:21, bold:true, color:WHITE, valign:"middle", fontFace:"Calibri" });
}
function tag(slide, label, col) {
col = col || GOLD;
slide.addShape(pres.ShapeType.rect, { x:8.55, y:0.14, w:1.3, h:0.44,
fill:{color:col}, line:{color:col} });
slide.addText(label, { x:8.55, y:0.14, w:1.3, h:0.44, margin:0,
fontSize:10, bold:true, color:col===GOLD?CHAR:WHITE,
align:"center", valign:"middle", fontFace:"Calibri" });
}
function box(slide, x, y, w, h, fill, border) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h,
fill:{color:fill||WHITE}, line:{color:border||LGRAY, width:1.2},
shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.08} });
}
function lbar(slide, x, y, h, color) {
slide.addShape(pres.ShapeType.rect, { x, y, w:0.07, h,
fill:{color}, line:{color} });
}
function circle(slide, x, y, d, fill, text, textColor) {
slide.addShape(pres.ShapeType.ellipse, { x, y, w:d, h:d,
fill:{color:fill}, line:{color:fill} });
slide.addText(text, { x, y, w:d, h:d, margin:0,
fontSize:13, bold:true, color:textColor||WHITE,
align:"center", valign:"middle", fontFace:"Calibri" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 TITLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:NAVY};
// left accent
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:0.45,h:5.625,fill:{color:TEAL},line:{color:TEAL}});
s.addShape(pres.ShapeType.rect, {x:0.45,y:0,w:0.07,h:5.625,fill:{color:GOLD},line:{color:GOLD}});
s.addText("NCS in Carpal Tunnel Syndrome", {
x:0.75, y:1.0, w:9.0, h:1.1,
fontSize:38, bold:true, color:WHITE, fontFace:"Calibri", align:"left"
});
s.addText("Method, Interpretation & Special Considerations in Diabetes", {
x:0.75, y:2.15, w:9.0, h:0.6,
fontSize:19, color:TEAL2, fontFace:"Calibri", align:"left"
});
s.addShape(pres.ShapeType.rect,{x:0.75,y:2.88,w:4.8,h:0.055,fill:{color:GOLD},line:{color:GOLD}});
s.addText("DM Neurology — Electrophysiology Seminar", {
x:0.75, y:3.02, w:9.0, h:0.42,
fontSize:14, italic:true, color:SLATE, fontFace:"Calibri", align:"left"
});
const chips = ["Motor NCS","Sensory NCS","Inching Technique","CTS + DM"];
chips.forEach((c,i)=>{
s.addShape(pres.ShapeType.rect,{x:0.75+i*2.25,y:4.7,w:2.1,h:0.42,
fill:{color:TEAL,transparency:55},line:{color:TEAL2}});
s.addText(c,{x:0.75+i*2.25,y:4.7,w:2.1,h:0.42,margin:0,
fontSize:12,color:WHITE,align:"center",valign:"middle",fontFace:"Calibri"});
});
s.addText("Sources: Bradley & Daroff's Neurology in Clinical Practice | Adams & Victor's Principles of Neurology, 12th Ed.", {
x:0.75,y:5.22,w:9.0,h:0.28,
fontSize:8.5,italic:true,color:"4A6FA5",fontFace:"Calibri",align:"left"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 WHY NCS IN CTS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, NAVY, "Why NCS in Carpal Tunnel Syndrome?");
tag(s, "RATIONALE");
const items = [
{icon:"✔", head:"CONFIRM Diagnosis", body:"Differentiates CTS from C6/C7 radiculopathy, proximal median neuropathy, and diffuse polyneuropathy", col:TEAL},
{icon:"📍",head:"LOCALIZE Compression", body:"Identifies the exact segment of focal slowing within the carpal tunnel — distal latency + inching technique", col:TEAL2},
{icon:"📊",head:"GRADE Severity", body:"Mild (sensory only) → Moderate (motor+sensory) → Severe (absent SNAP) → Extreme (axonal loss + EMG denervation)", col:NAVY},
{icon:"💊",head:"GUIDE Treatment", body:"Mild: splints / steroid injection | Severe: surgical carpal tunnel release", col:GOLD},
{icon:"📈",head:"MONITOR Recovery", body:"Repeat NCS post-surgery / injection; sensory symptom improvement precedes NCS latency normalisation", col:TEAL},
];
items.forEach((it,i)=>{
const y = 0.88 + i*0.89;
lbar(s, 0.28, y, 0.74, it.col);
box(s, 0.38, y, 9.28, 0.74, WHITE, LGRAY);
s.addText(it.icon+" "+it.head, {x:0.52,y:y+0.05,w:2.8,h:0.35,
fontSize:12.5,bold:true,color:it.col===GOLD?CHAR:it.col,fontFace:"Calibri"});
s.addShape(pres.ShapeType.rect,{x:3.4,y:y+0.16,w:0.04,h:0.42,fill:{color:LGRAY},line:{color:LGRAY}});
s.addText(it.body, {x:3.52,y:y+0.1,w:5.9,h:0.52,
fontSize:11,color:CHAR,fontFace:"Calibri",valign:"middle"});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 NCS PARAMETERS — MOTOR
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, TEAL, "NCS Parameters — Motor (CMAP)");
tag(s, "MOTOR NCS");
// diagram placeholder box
box(s, 0.28, 0.84, 4.1, 2.9, "E8F4F7", TEAL);
s.addText("MOTOR NCS SETUP", {x:0.38,y:0.9,w:3.9,h:0.38,
fontSize:13,bold:true,color:TEAL,align:"center",fontFace:"Calibri"});
s.addText([
{text:"Stimulate: ",options:{bold:true}},{text:"Median nerve at WRIST (site 1)\n"},
{text:"Stimulate: ",options:{bold:true}},{text:"Median nerve at ELBOW (site 2)\n"},
{text:"Record: ",options:{bold:true}},{text:"Abductor Pollicis Brevis (APB)\n\n"},
{text:"Distal Latency (A') ",options:{bold:true,color:RED}},{text:"= stimulus → CMAP onset\n"},
{text:"Proximal Latency (B') ",options:{bold:true,color:TEAL}},{text:"= elbow stimulus → CMAP onset\n\n"},
{text:"MCV = Distance C ÷ (B' − A')",options:{bold:true,color:NAVY}},
],{x:0.42,y:1.34,w:3.82,h:2.2,
fontSize:11,color:CHAR,fontFace:"Calibri",valign:"top"});
// Parameter table
const rows = [
["Parameter","Reflects","Normal (Median)"],
["Distal Latency","Conduction through carpal tunnel → APB","< 4.2 ms"],
["CMAP Amplitude","Number of functioning motor axons","> 4.4 mV"],
["Motor CV","Speed of fastest fibers (forearm segment)","> 49 m/s"],
["F-Wave Latency","Proximal conduction integrity","< 31 ms"],
];
s.addTable(rows.map((row,ri)=>row.map((cell,ci)=>({
text:cell,
options:{
fontSize:11, bold:ri===0,
color:ri===0?WHITE:(ci===2?TEAL:CHAR),
fill:ri===0?NAVY:(ri%2===0?WHITE:OFFWH),
align:"center", valign:"middle",
border:{pt:0.5,color:"C5D5E0"}, fontFace:"Calibri"
}
}))),{x:4.55,y:0.84,w:5.18,h:2.9,rowH:0.58,colW:[1.7,2.3,1.18]});
// Key rule
box(s, 0.28, 3.85, 9.44, 0.62, "FFF8E1", GOLD);
s.addText("⭐ In CTS: ONLY the distal motor latency is prolonged — the forearm MCV is NORMAL (confirms focal slowing within the tunnel, not a diffuse neuropathy)", {
x:0.45,y:3.88,w:9.1,h:0.55,
fontSize:11.5,bold:true,color:CHAR,fontFace:"Calibri",valign:"middle"
});
// Formula box
box(s,0.28,4.55,9.44,0.82,NAVY,NAVY);
s.addText("Motor Conduction Velocity = Distance between stimulation sites (mm) ÷ [Proximal Latency − Distal Latency (ms)]", {
x:0.42,y:4.57,w:9.1,h:0.76,
fontSize:13,bold:true,color:WHITE,align:"center",valign:"middle",fontFace:"Calibri"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 NCS PARAMETERS — SENSORY
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, TEAL, "NCS Parameters — Sensory (SNAP)");
tag(s, "SENSORY NCS");
// SNAP diagram box
box(s, 0.28, 0.84, 3.5, 4.5, "E8F4F7", TEAL);
s.addText("SNAP WAVEFORM", {x:0.38,y:0.9,w:3.3,h:0.35,
fontSize:13,bold:true,color:TEAL,align:"center",fontFace:"Calibri"});
// ASCII-art style waveform labels
const waveLabels = [
{label:"Onset Latency",desc:"Stimulus → first deflection from baseline",col:RED},
{label:"Peak Latency", desc:"Stimulus → peak of SNAP",col:TEAL},
{label:"Amplitude", desc:"Baseline to peak height (measured in µV)",col:NAVY},
{label:"Duration", desc:"Width of the negative phase",col:SLATE},
{label:"Area", desc:"Area under negative phase curve",col:SLATE},
];
waveLabels.forEach((w,i)=>{
const y = 1.3 + i*0.73;
s.addShape(pres.ShapeType.rect,{x:0.38,y,w:0.2,h:0.48,fill:{color:w.col},line:{color:w.col}});
s.addText(w.label,{x:0.65,y:y+0.02,w:3.0,h:0.24,
fontSize:11,bold:true,color:w.col===GOLD?CHAR:w.col,fontFace:"Calibri"});
s.addText(w.desc,{x:0.65,y:y+0.25,w:3.0,h:0.22,
fontSize:9.5,color:SLATE,italic:true,fontFace:"Calibri"});
});
// Right: parameters
s.addText("Normal Values — Antidromic Median SNAP\n(Wrist stimulation → Digit II, ~13–14 cm)", {
x:4.05,y:0.87,w:5.7,h:0.55,
fontSize:13,bold:true,color:NAVY,fontFace:"Calibri"
});
const snapRows = [
["Parameter","Normal Value","Significance"],
["Onset Latency","< 3.5 ms","MOST SENSITIVE — first to prolong"],
["Peak Latency","< 3.6 ms","Easier to measure (less shock artifact)"],
["SNAP Amplitude","> 20 µV","Reduced = axonal loss"],
["Sensory CV","> 50 m/s","Slowed = demyelination"],
["Ulnar sensory","< 3.1 ms | >17 µV","Comparator — should be NORMAL in CTS"],
];
s.addTable(snapRows.map((row,ri)=>row.map((cell,ci)=>({
text:cell,
options:{
fontSize:10.5, bold:ri===0||(ri===1&&ci===2),
color:ri===0?WHITE:(ci===2?TEAL:CHAR),
fill:ri===0?TEAL:(ri===1?"E3F2FD":(ri%2===0?WHITE:OFFWH)),
align:"center",valign:"middle",
border:{pt:0.5,color:"C5D5E0"}, fontFace:"Calibri"
}
}))),{x:4.05,y:1.5,w:5.7,h:2.7,rowH:0.54,colW:[1.55,1.35,2.8]});
// Big key point
box(s,4.05,4.28,5.7,1.05,NAVY,NAVY);
s.addText("⚡ KEY POINT", {x:4.2,y:4.32,w:5.4,h:0.28,
fontSize:12,bold:true,color:GOLD,fontFace:"Calibri"});
s.addText("Sensory NCS is MORE SENSITIVE than motor NCS in early CTS. A prolonged median sensory latency is the EARLIEST NCS abnormality — before any motor changes appear.", {
x:4.2,y:4.6,w:5.4,h:0.68,
fontSize:11,color:WHITE,fontFace:"Calibri",valign:"top"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 STANDARD PROTOCOL
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, NAVY, "Standard NCS Protocol for CTS");
tag(s, "PROTOCOL");
const steps = [
{n:"1",title:"Median MOTOR NCS",
stim:"Wrist (7–8 cm from APB) → Elbow",
rec:"Abductor Pollicis Brevis (APB)",
measure:"Distal latency, CMAP amplitude, motor CV",
abnormal:"DML > 4.2 ms; forearm MCV normal (focal tunnel slowing)",col:TEAL},
{n:"2",title:"Median SENSORY NCS (Antidromic)",
stim:"Wrist",rec:"Ring electrodes at Digit II or Digit III (13–14 cm)",
measure:"Onset latency, peak latency, SNAP amplitude, SCV",
abnormal:"Onset latency > 3.5 ms; reduced SNAP amplitude; slowed SCV",col:TEAL2},
{n:"3",title:"Ulnar MOTOR + SENSORY NCS (Comparator)",
stim:"Wrist",rec:"ADM for motor | Digit V for sensory",
measure:"Latency and amplitude for both",
abnormal:"Should be NORMAL in isolated CTS — abnormal ulnar suggests polyneuropathy",col:NAVY},
{n:"4",title:"Internal Comparison Studies (See next slide)",
stim:"Palm (8 cm from wrist) for palmar mixed | Wrist for ring-finger/thumb studies",
rec:"Wrist recording for palmar | Digit IV / Thumb for sensory comparisons",
measure:"Median vs Ulnar latency difference at equal distances",
abnormal:"Median > Ulnar by > 0.3–0.4 ms → CTS confirmed even on background of DPN",col:GOLD},
];
steps.forEach((st,i)=>{
const y = 0.86 + i*1.13;
// full row bg
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:9.44,h:1.0,
fill:{color:WHITE},line:{color:LGRAY},
shadow:{type:"outer",color:"000000",blur:3,offset:1,angle:135,opacity:0.07}});
// step color panel
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:0.9,h:1.0,
fill:{color:st.col},line:{color:st.col}});
s.addText("STEP",{x:0.28,y:y+0.06,w:0.9,h:0.28,margin:0,
fontSize:8,bold:true,color:st.col===GOLD?CHAR:WHITE,align:"center",fontFace:"Calibri"});
s.addText(st.n,{x:0.28,y:y+0.3,w:0.9,h:0.45,margin:0,
fontSize:24,bold:true,color:st.col===GOLD?CHAR:WHITE,align:"center",valign:"top",fontFace:"Calibri"});
// content
s.addText(st.title,{x:1.28,y:y+0.06,w:8.3,h:0.3,
fontSize:13,bold:true,color:NAVY,fontFace:"Calibri"});
s.addText("Stim: "+st.stim+" | Rec: "+st.rec,{x:1.28,y:y+0.36,w:8.3,h:0.24,
fontSize:10,color:SLATE,fontFace:"Calibri"});
s.addText("⚠ Abnormal: "+st.abnormal,{x:1.28,y:y+0.62,w:8.3,h:0.3,
fontSize:10.5,bold:true,color:RED,fontFace:"Calibri"});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 INTERNAL COMPARISON STUDIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, TEAL, "Internal Comparison Studies — Most Sensitive NCS Methods");
tag(s, "COMPARISON");
s.addText("Both median and ulnar nerves travel through the same forearm, so comparing their latencies at equal distances eliminates background polyneuropathy effects (e.g. diabetic neuropathy)", {
x:0.3,y:0.82,w:9.4,h:0.42,
fontSize:11,italic:true,color:SLATE,fontFace:"Calibri"
});
const trows = [
["Study","Technique","Type","Abnormal Criterion","Usefulness"],
["Median–Ulnar\nPalmar Mixed","Stimulate palm (8 cm)\nRecord at wrist for both","Orthodromic\nmixed nerve","Median > Ulnar\nby > 0.3 ms","Most sensitive;\nbest first-line"],
["Median–Ulnar\nRing Finger","Stim wrist; record at\nDigit IV antidromically","Antidromic\nsensory","Median > Ulnar\nby > 0.4 ms","Useful when\npalmar normal"],
["Median–Ulnar\nLumbrical–Interossei","Stim wrist; record at\n2nd interosseous space","Motor\ncomparison","Median > Ulnar\nby > 0.4–0.5 ms","Best for\nmotor CTS"],
["Median–Radial\nSensory to Thumb","Stim median & radial\nat wrist; record at thumb","Antidromic\nsensory","Median > Radial\nby > 0.5 ms","Best when DPN\nis severe"],
];
s.addTable(trows.map((row,ri)=>row.map((cell,ci)=>({
text:cell,
options:{
fontSize:10.5, bold:ri===0||(ri>0&&ci===3),
color:ri===0?WHITE:(ci===3?RED:CHAR),
fill:ri===0?NAVY:(ri%2===0?WHITE:OFFWH),
align:"center",valign:"middle",
border:{pt:0.6,color:"C5D5E0"}, fontFace:"Calibri"
}
}))),{x:0.3,y:1.32,w:9.4,h:3.65,rowH:0.73,colW:[1.65,2.3,1.45,1.75,1.75]});
// footnote + key rule
s.addText("Source: Bradley & Daroff's Neurology in Clinical Practice, Table 106.4, p. 2636", {
x:0.3,y:5.04,w:6,h:0.28,
fontSize:9,italic:true,color:SLATE,fontFace:"Calibri"
});
box(s,0.3,5.3,9.4,0.2,GOLD,GOLD);
s.addText("⭐ Rule: If Median latency exceeds Ulnar by the criterion value at equal distance → CTS is present, even if absolute latency is within 'normal' range due to background neuropathy", {
x:0.4,y:5.3,w:9.2,h:0.2,margin:0,
fontSize:9.5,bold:true,color:CHAR,align:"center",valign:"middle",fontFace:"Calibri"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 INCHING TECHNIQUE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, NAVY, "The Inching (Segmental Stimulation) Technique");
tag(s, "INCHING");
// Left — principle
box(s, 0.28, 0.83, 4.65, 4.15, WHITE, TEAL);
s.addText("Principle", {x:0.42,y:0.88,w:4.4,h:0.38,
fontSize:15,bold:true,color:TEAL,fontFace:"Calibri"});
s.addText([
{text:"• Stimulate median nerve in ",options:{}},
{text:"1-cm increments",options:{bold:true,color:TEAL}},
{text:" across the wrist\n\n",options:{}},
{text:"• Normal response: ",options:{bold:true}},
{text:"latency increases linearly by ~0.16–0.21 ms per cm\n\n",options:{}},
{text:"• Pathological: ",options:{bold:true,color:RED}},
{text:"abrupt latency jump > 0.5 ms over a single 1-cm segment → focal lesion\n\n",options:{color:RED}},
{text:"• Reference point (0): ",options:{bold:true}},
{text:"distal wrist crease = origin of the transverse carpal ligament\n\n",options:{}},
{text:"• SNAPs recorded from Digit II\n","CMAPs recorded from APB",options:{}},
],{x:0.42,y:1.3,w:4.35,h:3.5,
fontSize:11.5,color:CHAR,fontFace:"Calibri",valign:"top"});
// Right — why it's superior
box(s, 5.1, 0.83, 4.65, 2.0, WHITE, TEAL2);
s.addText("Why Inching is Superior to Routine NCS", {x:5.24,y:0.88,w:4.4,h:0.38,
fontSize:13,bold:true,color:NAVY,fontFace:"Calibri"});
s.addText([
{text:"Over a 10-cm segment: ",options:{bold:true}},
{text:"0.2 ms slowing = 10% change → easily MISSED\n\n",options:{color:SLATE}},
{text:"Over a 1-cm segment: ",options:{bold:true}},
{text:"0.2 ms slowing = 100% change → UNMISTAKABLE",options:{color:RED,bold:true}},
],{x:5.24,y:1.3,w:4.35,h:1.4,
fontSize:11,color:CHAR,fontFace:"Calibri",valign:"top"});
// Right — CTS findings box
box(s, 5.1, 2.93, 4.65, 2.05, "EBF5FB", TEAL);
s.addText("CTS Pattern on Inching", {x:5.24,y:2.98,w:4.4,h:0.35,
fontSize:13,bold:true,color:TEAL,fontFace:"Calibri"});
s.addText([
{text:"Normal subject: ",options:{bold:true,color:GREEN}},
{text:"uniform ~0.16–0.21 ms/cm increase throughout\n\n",options:{}},
{text:"CTS patient: ",options:{bold:true,color:RED}},
{text:"abrupt jump (>0.5 ms) at a single level, usually at or just distal to the distal wrist crease (transverse carpal ligament)\n\n",options:{}},
{text:"Waveform change ",options:{bold:true}},
{text:"(amplitude drop, shape change) accompanies the latency jump",options:{}},
],{x:5.24,y:3.36,w:4.35,h:1.55,
fontSize:10.5,color:CHAR,fontFace:"Calibri",valign:"top"});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 SEVERITY GRADING
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, TEAL, "NCS Severity Grading in CTS");
tag(s, "GRADING");
const grades = [
{grade:"MILD", col:GREEN, bg:"E8F5E9",
f:["Prolonged median sensory latency / slowed SCV only",
"Motor distal latency: NORMAL",
"CMAP amplitude: NORMAL",
"No denervation on EMG"],
rx:"Splints in neutral + NSAID / Corticosteroid injection"},
{grade:"MODERATE",col:ORANGE,bg:"FFF3E0",
f:["Prolonged motor AND sensory distal latencies",
"SNAP amplitude reduced (but present)",
"CMAP amplitude mildly reduced",
"No active denervation on EMG"],
rx:"Steroid injection → Consider surgical release"},
{grade:"SEVERE", col:RED, bg:"FFEBEE",
f:["Absent median SNAP",
"Significantly prolonged motor latency",
"Reduced CMAP amplitude (axonal loss)",
"EMG: chronic neurogenic changes in APB"],
rx:"Surgical carpal tunnel release (urgent)"},
{grade:"EXTREME",col:PURPLE, bg:"F3E5F5",
f:["Absent SNAP and absent/minimal CMAP",
"Fibrillations + PSWs in APB (active denervation)",
"Reduced/absent MUPs on voluntary activation",
"EMG mandatory to quantify axonal loss"],
rx:"Emergency surgical release — recovery guarded"},
];
grades.forEach((g,i)=>{
const col = i%2; const row = Math.floor(i/2);
const x = 0.28 + col*4.84; const y = 0.84 + row*2.32;
box(s,x,y,4.6,2.22,g.bg,g.col);
// grade banner
s.addShape(pres.ShapeType.rect,{x,y,w:4.6,h:0.46,fill:{color:g.col},line:{color:g.col}});
s.addText(g.grade,{x,y,w:4.6,h:0.46,margin:0,
fontSize:18,bold:true,color:WHITE,align:"center",valign:"middle",fontFace:"Calibri"});
g.f.forEach((fi,ii)=>{
s.addText("• "+fi,{x:x+0.15,y:y+0.5+ii*0.3,w:4.3,h:0.28,
fontSize:10,color:CHAR,fontFace:"Calibri"});
});
// rx band
s.addShape(pres.ShapeType.rect,{x:x+0.1,y:y+1.78,w:4.4,h:0.32,
fill:{color:g.col,transparency:65},line:{color:g.col}});
s.addText("Rx: "+g.rx,{x:x+0.12,y:y+1.78,w:4.36,h:0.32,margin:0,
fontSize:9.5,bold:true,color:CHAR,align:"center",valign:"middle",fontFace:"Calibri"});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 NORMAL VALUES TABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, NAVY, "Normal NCS Reference Values");
tag(s, "NORMAL VALUES", TEAL);
s.addText("Adams & Victor's Principles of Neurology, Table 2-5 (Mean ± 2SD, Adults 16–65 yr)", {
x:0.3,y:0.82,w:9.4,h:0.3,
fontSize:10,italic:true,color:SLATE,fontFace:"Calibri"
});
s.addText("MOTOR NCS",{x:0.3,y:1.17,w:2,h:0.3,
fontSize:13,bold:true,color:TEAL,fontFace:"Calibri"});
const mhdr = ["Nerve","Stimulate","Record","DML (ms)","Amp (mV)","CV (m/s)","F-wave (ms)"];
const mdat = [
["Median","Wrist","APB","< 4.2","> 4.4","> 49","< 31"],
["Ulnar","Wrist","ADM","< 3.4","> 6.0","> 49","< 32"],
["Peroneal","Ankle","EDB","< 5.8","> 2.0","> 42","< 58"],
["Tibial","Ankle","AH","< 6.5","> 3.0","> 41","< 59"],
];
s.addTable([mhdr,...mdat].map((row,ri)=>row.map((cell,ci)=>({
text:cell, options:{
fontSize:10.5, bold:ri===0,
color:ri===0?WHITE:(ci>=3?TEAL:CHAR),
fill:ri===0?NAVY:(ri%2===0?WHITE:OFFWH),
align:"center",valign:"middle",
border:{pt:0.5,color:"C5D5E0"},fontFace:"Calibri"
}
}))),{x:0.3,y:1.5,w:9.4,h:1.55,rowH:0.31,colW:[1.3,1.2,1.0,1.45,1.3,1.3,1.45]});
s.addText("SENSORY NCS",{x:0.3,y:3.12,w:2.2,h:0.3,
fontSize:13,bold:true,color:TEAL2,fontFace:"Calibri"});
const shdr = ["Nerve","Stimulate","Record","Onset (ms)","Peak (ms)","Amp (µV)","CV (m/s)"];
const sdat = [
["Median","Wrist","Digit II","< 3.5","< 3.6","> 20","> 50"],
["Ulnar","Wrist","Digit V","< 3.1","< 3.2","> 17","> 50"],
["Sural","Calf","Ankle","< 4.4","–","> 6","> 40"],
["Radial","Forearm","Thumb","< 2.9","–","> 15","> 50"],
];
s.addTable([shdr,...sdat].map((row,ri)=>row.map((cell,ci)=>({
text:cell, options:{
fontSize:10.5, bold:ri===0,
color:ri===0?WHITE:(ci>=3?TEAL2:CHAR),
fill:ri===0?TEAL:(ri%2===0?WHITE:OFFWH),
align:"center",valign:"middle",
border:{pt:0.5,color:"C5D5E0"},fontFace:"Calibri"
}
}))),{x:0.3,y:3.45,w:9.4,h:1.55,rowH:0.31,colW:[1.3,1.2,1.0,1.45,1.3,1.3,1.45]});
// CTS highlight
box(s,0.3,5.07,9.4,0.35,"FFF8E1",GOLD);
s.addText("CTS cut-offs: Median motor DML > 4.2 ms | Median sensory onset > 3.5 ms | SNAP amplitude < 20 µV → Pathological", {
x:0.42,y:5.07,w:9.2,h:0.35,margin:0,
fontSize:11.5,bold:true,color:CHAR,align:"center",valign:"middle",fontFace:"Calibri"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 CTS IN DIABETES — CHALLENGES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:NAVY};
s.addShape(pres.ShapeType.rect,{x:0,y:0,w:10,h:0.72,fill:{color:RED},line:{color:RED}});
s.addText("CTS in Diabetic Patients — The Diagnostic Challenge",{
x:0.35,y:0,w:9.3,h:0.72,margin:0,
fontSize:21,bold:true,color:WHITE,valign:"middle",fontFace:"Calibri"});
tag(s,"DM + CTS",WHITE);
const chal = [
{n:"1",title:"Problem: Elevated Baselines (Background DPN)",col:RED,
body:"Diabetic peripheral neuropathy (DPN) prolongs latencies and reduces amplitudes across ALL nerves. A median DML of 4.8 ms looks like 'mild CTS' when the ulnar is also 4.5 ms — this pattern reflects diffuse neuropathy, NOT focal entrapment. Absolute values alone are unreliable in DM."},
{n:"2",title:"Problem: DM is an Independent CTS Risk Factor",col:GOLD,
body:"Diabetics have 2–3× higher CTS prevalence than the general population. Mechanisms include: metabolic accumulation within the flexor tendons, tenosynovitis, microangiopathy of the vasa nervorum, and increased susceptibility of already-compromised nerves to compressive injury ('double crush' phenomenon)."},
{n:"3",title:"Problem: Small Fiber DPN — NCS May Be Normal",col:TEAL2,
body:"NCS only captures large myelinated fibres (A-alpha / A-beta). In DM, early and predominant small fibre (C and A-delta) involvement gives NORMAL NCS despite severe burning pain, autonomic dysfunction, and reduced IENFD on skin biopsy. Skin biopsy or QSART is needed for diagnosis in these patients."},
];
chal.forEach((c,i)=>{
const y = 0.86 + i*1.48;
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:9.44,h:1.35,
fill:{color:"0D2849"},line:{color:c.col}});
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:0.55,h:1.35,fill:{color:c.col},line:{color:c.col}});
s.addText(c.n,{x:0.28,y,w:0.55,h:1.35,margin:0,
fontSize:28,bold:true,color:c.col===GOLD?CHAR:WHITE,align:"center",valign:"middle",fontFace:"Calibri"});
s.addText(c.title,{x:0.95,y:y+0.08,w:8.6,h:0.32,
fontSize:13,bold:true,color:c.col===GOLD?GOLD:c.col,fontFace:"Calibri"});
s.addText(c.body,{x:0.95,y:y+0.44,w:8.6,h:0.82,
fontSize:10.5,color:"B0C4D8",fontFace:"Calibri",valign:"top"});
});
s.addShape(pres.ShapeType.rect,{x:0.28,y:5.32,w:9.44,h:0.2,fill:{color:TEAL},line:{color:TEAL}});
s.addText("Solution: Internal Comparison Studies (next slide) isolate the focal CTS component from background DPN", {
x:0.38,y:5.32,w:9.2,h:0.2,margin:0,
fontSize:10,bold:true,color:WHITE,align:"center",valign:"middle",fontFace:"Calibri"});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 DM+CTS PROTOCOL + DISTINGUISHING TABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, TEAL, "NCS Protocol: CTS Superimposed on Diabetic Neuropathy");
tag(s,"DM PROTOCOL");
// Left column — steps
s.addText("Step-by-Step Protocol", {x:0.28,y:0.84,w:5.5,h:0.32,
fontSize:14,bold:true,color:NAVY,fontFace:"Calibri"});
const steps = [
"Ensure skin temperature > 32°C — cold falsely prolongs latency; critical in DM",
"Median motor NCS (wrist → APB) + Ulnar motor NCS (comparator)",
"Median sensory NCS antidromic (wrist → Digit II)",
"Median–Ulnar palmar mixed comparison (most sensitive single test)",
"Median–Radial sensory to thumb comparison (best when DPN is severe)",
"Sural + Peroneal NCS — grade severity of background DPN (lower limb worse)",
"Needle EMG of APB if moderate–severe CTS: fibrillations = axonal loss = surgical urgency",
];
steps.forEach((st,i)=>{
const y = 1.22 + i*0.57;
circle(s, 0.28, y+0.06, 0.38, TEAL, String(i+1));
s.addText(st,{x:0.75,y,w:5.15,h:0.5,
fontSize:10,color:CHAR,fontFace:"Calibri",valign:"middle"});
});
// Right column — distinguishing table
s.addText("Focal CTS vs Diffuse DPN",{x:6.15,y:0.84,w:3.7,h:0.32,
fontSize:13,bold:true,color:NAVY,fontFace:"Calibri"});
const drows = [
["Feature","Focal CTS","Diffuse DPN"],
["Sensory latency","Median > Ulnar","Both equal"],
["Motor latency","DML only prolonged;\nforearm MCV normal","All segments\nslowed"],
["Upper vs Lower","Upper limb\nisolated","Lower limb\nworse"],
["Sural nerve","Normal","Abnormal/absent\nSNAP"],
["F-waves","Normal","All prolonged"],
];
s.addTable(drows.map((row,ri)=>row.map((cell,ci)=>({
text:cell, options:{
fontSize:9.5, bold:ri===0||ci===0,
color:ri===0?WHITE:(ci===1?TEAL:(ci===2?RED:CHAR)),
fill:ri===0?NAVY:(ri%2===0?WHITE:OFFWH),
align:"center",valign:"middle",
border:{pt:0.5,color:"C5D5E0"},fontFace:"Calibri"
}
}))),{x:6.15,y:1.22,w:3.7,h:3.65,rowH:0.61,colW:[1.3,1.2,1.2]});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 12 DIAGNOSIS FLOWCHART
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:OFFWH};
topBar(s, NAVY, "Diagnostic Flowchart — CTS in the Diabetic Patient");
tag(s, "FLOWCHART");
// ── boxes ──
function fbox(x,y,w,h,fill,border,text,tcolor,fs,bold){
s.addShape(pres.ShapeType.rect,{x,y,w,h,fill:{color:fill},line:{color:border||fill},
shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.1}});
s.addText(text,{x,y,w,h,margin:0,
fontSize:fs||11,bold:bold!==false,color:tcolor||WHITE,
align:"center",valign:"middle",fontFace:"Calibri"});
}
function arr(x,y,len,horiz){
if(horiz){
s.addShape(pres.ShapeType.rect,{x,y:y+0.05,w:len,h:0.08,fill:{color:SLATE},line:{color:SLATE}});
s.addShape(pres.ShapeType.triangle,{x:x+len-0.12,y,w:0.18,h:0.18,fill:{color:SLATE},line:{color:SLATE}});
} else {
s.addShape(pres.ShapeType.rect,{x:x+0.05,y,w:0.08,h:len,fill:{color:SLATE},line:{color:SLATE}});
s.addShape(pres.ShapeType.triangle,{x,y:y+len-0.1,w:0.18,h:0.18,fill:{color:SLATE},line:{color:SLATE}});
}
}
// Top: suspected CTS
fbox(3.2,0.88,3.6,0.52,NAVY,NAVY,"Suspected CTS in DM Patient",WHITE,12);
arr(5.0,1.4,0.35,false);
// NCS box
fbox(2.0,1.75,6.0,0.72,TEAL,TEAL,
"NCS: Median motor + sensory | Ulnar motor + sensory\nLower limb NCS (sural, peroneal, tibial)",WHITE,11);
arr(5.0,2.47,0.32,false);
// Decision diamond
s.addShape(pres.ShapeType.rect,{x:2.8,y:2.79,w:4.4,h:0.62,
fill:{color:"FFF8E1"},line:{color:GOLD,width:2}});
s.addText("Are ALL nerves equally slowed?\n(length-dependent pattern, lower limbs worse?)",{
x:2.8,y:2.79,w:4.4,h:0.62,margin:0,
fontSize:11,bold:true,color:CHAR,align:"center",valign:"middle",fontFace:"Calibri"});
// YES branch (left)
arr(2.8,3.1,0.38,true); // horiz left
s.addShape(pres.ShapeType.rect,{x:0.28,y:3.04,w:2.48,h:0.15,fill:{color:SLATE},line:{color:SLATE}});
arr(1.42,3.19,0.32,false);
fbox(0.28,3.51,2.9,0.54,ORANGE,ORANGE,"YES → Diffuse DPN\nconfirmed",WHITE,10.5);
arr(1.73,4.05,0.32,false);
fbox(0.28,4.37,2.9,0.62,SLATE,SLATE,
"Consider skin biopsy\n(IENFD) or QSART\nfor small-fiber DPN",WHITE,10,true);
// NO branch (right)
arr(7.2,3.1,0.52,true);
fbox(7.2,3.04,2.52,0.15,SLATE,SLATE,"",SLATE,1);
arr(8.46,3.19,0.32,false);
fbox(7.1,3.51,2.62,0.54,TEAL,TEAL,"NO → Median > Ulnar\nRun internal comparisons",WHITE,10.5);
arr(8.41,4.05,0.32,false);
fbox(7.1,4.37,2.62,0.62,GREEN,GREEN,
"Median > Ulnar > 0.3 ms\n(palmar mixed)\n→ CTS CONFIRMED",WHITE,10,true);
// Bottom: treatment
arr(5.0,4.4,0.35,false);
fbox(2.85,4.75,4.3,0.65,NAVY,NAVY,
"Grade severity (Mild/Moderate/Severe)\nTreat accordingly: splint / steroid / surgery",WHITE,11);
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 13 KEY EXAM POINTS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:NAVY};
s.addShape(pres.ShapeType.rect,{x:0,y:0,w:10,h:0.72,fill:{color:GOLD},line:{color:GOLD}});
s.addText("High-Yield Exam Points — DM Neurology",{
x:0.35,y:0,w:9.3,h:0.72,margin:0,
fontSize:22,bold:true,color:CHAR,valign:"middle",fontFace:"Calibri"});
const pts = [
{n:"1",t:"Sensory NCS is MORE SENSITIVE than motor in early CTS — prolonged median sensory latency is the FIRST NCS abnormality",col:GOLD},
{n:"2",t:"Internal comparison (Median > Ulnar by >0.3 ms palmar mixed) is the MOST SENSITIVE method — MANDATORY when DPN coexists",col:TEAL2},
{n:"3",t:"Inching technique: normal = 0.16–0.21 ms/cm; pathological = abrupt jump >0.5 ms over a single 1-cm segment at the carpal ligament",col:TEAL},
{n:"4",t:"In DM + CTS: use Median–Ulnar palmar comparison AND Median–Radial thumb comparison to isolate the focal component from DPN",col:GOLD},
{n:"5",t:"Temperature MUST be >32°C before NCS — DM patients have cold extremities that falsely prolong latencies and mimic neuropathy",col:TEAL2},
{n:"6",t:"Needle EMG of APB in moderate–severe CTS: fibrillations + reduced MUP recruitment = axonal loss → surgical urgency",col:TEAL},
{n:"7",t:"Post-surgical recovery: sensory SYMPTOMS improve first; NCS latency normalisation lags by months — do not re-test too early",col:GOLD},
];
pts.forEach((p,i)=>{
const y = 0.85 + i*0.66;
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:9.44,h:0.58,
fill:{color:"0D2849"},line:{color:p.col}});
s.addShape(pres.ShapeType.rect,{x:0.28,y,w:0.5,h:0.58,fill:{color:p.col},line:{color:p.col}});
s.addText(p.n,{x:0.28,y,w:0.5,h:0.58,margin:0,
fontSize:18,bold:true,color:p.col===GOLD?CHAR:WHITE,
align:"center",valign:"middle",fontFace:"Calibri"});
s.addText(p.t,{x:0.88,y:y+0.06,w:8.7,h:0.46,
fontSize:11,color:WHITE,fontFace:"Calibri",valign:"middle"});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 14 THANK YOU / REFERENCES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = {color:NAVY};
s.addShape(pres.ShapeType.rect,{x:0,y:0,w:0.45,h:5.625,fill:{color:TEAL},line:{color:TEAL}});
s.addShape(pres.ShapeType.rect,{x:0.45,y:0,w:0.07,h:5.625,fill:{color:GOLD},line:{color:GOLD}});
s.addText("Thank You",{x:0.75,y:0.7,w:9,h:1.0,
fontSize:46,bold:true,color:WHITE,fontFace:"Calibri",align:"left"});
s.addShape(pres.ShapeType.rect,{x:0.75,y:1.74,w:5,h:0.055,fill:{color:GOLD},line:{color:GOLD}});
s.addText("References",{x:0.75,y:1.96,w:9,h:0.35,
fontSize:17,bold:true,color:TEAL2,fontFace:"Calibri"});
const refs = [
"1. Bradley WG, Daroff RB et al. Bradley and Daroff's Neurology in Clinical Practice, 8th Ed. — Chapter 36 (EMG/NCS) & Chapter 106 (Entrapment Neuropathies)",
"2. Adams RD, Victor M, Ropper AH. Adams and Victor's Principles of Neurology, 12th Ed. — Chapter 2 (Electrophysiologic Studies, Table 2-5)",
"3. Kimura J. The carpal tunnel syndrome: localization of conduction abnormalities within the distal segment of the median nerve. Brain 1979;102:619–635",
"4. American Association of Neuromuscular & Electrodiagnostic Medicine (AANEM). Practice Guidelines for CTS Electrodiagnosis",
"5. Campbell's Operative Orthopaedics, 15th Ed. 2026 — Carpal Tunnel Syndrome (NCS in surgical planning)",
];
refs.forEach((r,i)=>{
s.addText(r,{x:0.75,y:2.38+i*0.52,w:9.0,h:0.44,
fontSize:10,color:"7B9EC4",fontFace:"Calibri"});
});
s.addShape(pres.ShapeType.rect,{x:0.75,y:5.05,w:4,h:0.36,
fill:{color:TEAL,transparency:60},line:{color:TEAL2}});
s.addText("DM Neurology — Electrophysiology Seminar",{
x:0.75,y:5.05,w:4,h:0.36,margin:0,
fontSize:12,italic:true,color:WHITE,align:"center",valign:"middle",fontFace:"Calibri"});
}
// ── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({fileName:"/home/daytona/workspace/NCS_CTS_DM_v2.pptx"})
.then(()=>{ console.log("DONE"); })
.catch(e=>{ console.error("FAIL",e); process.exit(1); });
cd /home/daytona/workspace/ncs-cts-ppt && node build2.js 2>&1
~/ncs-cts-ppt/build2.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ncs-cts-ppt/build2.js'
cd /home/daytona/workspace/ncs-cts-ppt && node build2.js 2>&1
# Verify ZIP integrity and convert to PDF via LibreOffice to confirm it opens ls -lh /home/daytona/workspace/NCS_CTS_DM_v2.pptx unzip -t /home/daytona/workspace/NCS_CTS_DM_v2.pptx 2>&1 | tail -5 libreoffice --headless --convert-to pdf /home/daytona/workspace/NCS_CTS_DM_v2.pptx --outdir /tmp/ 2>&1 ls -lh /tmp/NCS_CTS_DM_v2.pdf 2>&1
cp /tmp/NCS_CTS_DM_v2.pdf /home/daytona/workspace/NCS_CTS_DM_v2.pdf && ls -lh /home/daytona/workspace/NCS_CTS_DM_v2.pdf
NCS CTS DM v2
Presentation · PPTX
NCS CTS DM v2
PDF Document · PDF
| # | Slide |
|---|---|
| 1 | Title |
| 2 | Why NCS in CTS? (5 reasons) |
| 3 | Motor NCS — CMAP parameters + formula |
| 4 | Sensory NCS — SNAP parameters + key point box |
| 5 | Standard 4-step Protocol |
| 6 | Internal Comparison Studies table |
| 7 | Inching Technique — principle + why it's superior |
| 8 | Severity Grading — Mild/Moderate/Severe/Extreme |
| 9 | Normal NCS Reference Values (motor + sensory tables) |
| 10 | CTS in Diabetes — 3 problems (dark slide) |
| 11 | DM+CTS Protocol + Focal CTS vs Diffuse DPN table |
| 12 | Diagnostic Flowchart |
| 13 | 7 High-Yield Exam Points |
| 14 | References |