I have uploaded NMES & Instrumentation of NMES topics now make 20 marks answer for NMES & then 10 marks answer for Instrumentation of NMES
python -m markitdown "/home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/NMES.pptx" 2>&1
python -m markitdown "/home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/Instrumentation of NMES.pptx" 2>&1
cd /home/daytona/workspace && python3 -c " import zipfile, os def extract_pptx_text(pptx_path): texts = [] with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and f.endswith('.xml')]) for sf in slide_files: with z.open(sf) as f: content = f.read().decode('utf-8') import re # Extract text from <a:t> tags raw = re.findall(r'<a:t[^>]*>(.*?)</a:t>', content) slide_text = ' '.join(raw).strip() if slide_text: texts.append(f'--- {sf} ---\n{slide_text}') return '\n\n'.join(texts) nmes = extract_pptx_text('/home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/NMES.pptx') print('=== NMES.pptx ===') print(nmes[:8000]) "
cd /home/daytona/workspace && python3 -c " import zipfile, re def extract_pptx_text(pptx_path): texts = [] with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and f.endswith('.xml')]) for sf in slide_files: with z.open(sf) as f: content = f.read().decode('utf-8') raw = re.findall(r'<a:t[^>]*>(.*?)</a:t>', content) slide_text = ' '.join(raw).strip() if slide_text: texts.append(f'--- {sf} ---\n{slide_text}') return '\n\n'.join(texts) inst = extract_pptx_text('/home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/Instrumentation of NMES.pptx') print('=== Instrumentation of NMES.pptx ===') print(inst[:8000]) "
cd /home/daytona/workspace && python3 -c " import zipfile, re def extract_pptx_text_full(pptx_path): texts = [] with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and f.endswith('.xml')]) for sf in slide_files: with z.open(sf) as f: content = f.read().decode('utf-8') raw = re.findall(r'<a:t[^>]*>(.*?)</a:t>', content) slide_text = ' '.join(raw).strip() if slide_text: texts.append(f'--- {sf} ---\n{slide_text}') return '\n\n'.join(texts) nmes = extract_pptx_text_full('/home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/NMES.pptx') print(nmes[8000:]) "
| Parameter | Recommendation |
|---|---|
| Frequency | 60-100 Hz for maximum force; 20 Hz for reduced fatigue (~65% force) |
| Pulse Width | 300-400 microseconds |
| Duty Cycle | 1:9 for very weak; progress to 1:1 for fit/end-stage rehab |
| Ramp Up | 2-4 seconds |
| Ramp Down | 1-2 seconds |
| Contractions/session | 8-15 (athletes); 100-200 (rehabilitation) |
| Frequency of sessions | 3-5 sessions/week for 3-6 weeks |
| Goal | Frequency | Pulse Width | Duty Cycle | Duration |
|---|---|---|---|---|
| Muscle Strengthening | 30-35 Hz | 400 µs | 4 sec ON / 4 sec OFF minimum (usually 10 sec ON/OFF) | ≥15 min, alternate days (usually 30 min/day) |
| Muscle Endurance | 20 Hz | 400 µs | 2 sec ON / 2 sec OFF minimum | ≥1 hour/day |
| Very Weak / Marked Atrophy | 10 Hz | 400 µs | 2 sec ON / 2 sec OFF minimum | Minimum 1 hour/day |
| Feature | Portable Stimulator | Clinical Stimulator |
|---|---|---|
| Power source | Battery | 60 Hz AC mains |
| Output capacity | May be insufficient for therapeutic contraction levels | Higher output available |
| Battery drain | High output drains battery quickly | Not applicable |
| Analog/digital output | Generally lacks outputs | Usually available |
| Portability | High - patient can use at home | Low |
create summary of this topic including diagrams or flowchart wherever necessary
ls /home/daytona/workspace/attachments/9ee68a3a-fde0-42b1-9f14-e518b9123ffe/ && ls /home/daytona/skills/docx/scripts/ 2>/dev/null || echo "no scripts dir"
mkdir -p /home/daytona/workspace/nmes-summary && node -e "require('docx'); console.log('docx available')" 2>&1
~/nmes-summary/generate_summary.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageBreak, TableLayoutType, UnderlineType
} = require('docx');
const fs = require('fs');
// ─── COLORS ────────────────────────────────────────────────────────────────
const TEAL = "1B7A84";
const TEAL_LIGHT = "D0ECEF";
const TEAL_MID = "5BBDC8";
const DARK = "1A2E35";
const ACCENT = "E07B39";
const ACCENT_LT = "FAE8DA";
const GRAY_BG = "F2F7F8";
const WHITE = "FFFFFF";
const BORDER_CLR = "1B7A84";
// ─── HELPERS ────────────────────────────────────────────────────────────────
function hline() {
return new Paragraph({
border: { bottom: { color: TEAL, space: 1, style: BorderStyle.SINGLE, size: 12 } },
spacing: { before: 40, after: 40 }
});
}
function spacer(before = 80, after = 80) {
return new Paragraph({ spacing: { before, after } });
}
function sectionTitle(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
children: [new TextRun({ text, bold: true, color: WHITE, size: 30, font: "Calibri" })],
shading: { fill: TEAL, type: ShadingType.SOLID },
spacing: { before: 240, after: 120 },
indent: { left: 200, right: 200 }
});
}
function subTitle(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text, bold: true, color: WHITE, size: 24, font: "Calibri" })],
shading: { fill: TEAL_MID, type: ShadingType.SOLID },
spacing: { before: 160, after: 80 },
indent: { left: 160 }
});
}
function subSubTitle(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_3,
children: [new TextRun({ text, bold: true, color: TEAL, size: 22, font: "Calibri" })],
spacing: { before: 120, after: 60 }
});
}
function body(text, opts = {}) {
return new Paragraph({
children: [new TextRun({
text,
size: 20,
font: "Calibri",
bold: opts.bold || false,
italic: opts.italic || false,
color: opts.color || DARK
})],
spacing: { before: opts.before || 40, after: opts.after || 40 },
indent: opts.indent ? { left: opts.indent } : {}
});
}
function bullet(text, level = 0) {
return new Paragraph({
children: [new TextRun({ text, size: 20, font: "Calibri", color: DARK })],
bullet: { level },
spacing: { before: 30, after: 30 },
indent: { left: 360 + level * 360 }
});
}
function keyVal(key, val) {
return new Paragraph({
children: [
new TextRun({ text: key + ": ", bold: true, size: 20, font: "Calibri", color: TEAL }),
new TextRun({ text: val, size: 20, font: "Calibri", color: DARK })
],
spacing: { before: 30, after: 30 },
indent: { left: 360 }
});
}
function noteBox(text) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [new TableRow({ children: [new TableCell({
shading: { fill: ACCENT_LT, type: ShadingType.SOLID },
borders: { top: { style: BorderStyle.THICK, color: ACCENT, size: 6 }, bottom: { style: BorderStyle.THICK, color: ACCENT, size: 6 }, left: { style: BorderStyle.THICK, color: ACCENT, size: 6 }, right: { style: BorderStyle.THICK, color: ACCENT, size: 6 } },
margins: { top: 100, bottom: 100, left: 200, right: 200 },
children: [new Paragraph({ children: [new TextRun({ text: " " + text, size: 19, font: "Calibri", italic: true, color: "7D3C00" })] })]
})] })]
});
}
function makeTable(headers, rows, colWidths) {
const headerRow = new TableRow({
tableHeader: true,
children: headers.map((h, i) => new TableCell({
shading: { fill: TEAL, type: ShadingType.SOLID },
width: colWidths ? { size: colWidths[i], type: WidthType.PERCENTAGE } : undefined,
margins: { top: 80, bottom: 80, left: 160, right: 160 },
verticalAlign: VerticalAlign.CENTER,
borders: { top: { style: BorderStyle.SINGLE, color: WHITE, size: 4 }, bottom: { style: BorderStyle.SINGLE, color: WHITE, size: 4 }, left: { style: BorderStyle.SINGLE, color: WHITE, size: 4 }, right: { style: BorderStyle.SINGLE, color: WHITE, size: 4 } },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: h, bold: true, color: WHITE, size: 19, font: "Calibri" })] })]
}))
});
const dataRows = rows.map((row, ri) => new TableRow({
children: row.map((cell, ci) => new TableCell({
shading: { fill: ri % 2 === 0 ? GRAY_BG : WHITE, type: ShadingType.SOLID },
margins: { top: 70, bottom: 70, left: 160, right: 160 },
borders: { top: { style: BorderStyle.SINGLE, color: "CCCCCC", size: 2 }, bottom: { style: BorderStyle.SINGLE, color: "CCCCCC", size: 2 }, left: { style: BorderStyle.SINGLE, color: "CCCCCC", size: 2 }, right: { style: BorderStyle.SINGLE, color: "CCCCCC", size: 2 } },
children: [new Paragraph({ children: [new TextRun({ text: cell, size: 19, font: "Calibri", color: DARK })] })]
}))
}));
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [headerRow, ...dataRows]
});
}
// ─── FLOWCHART BOX ──────────────────────────────────────────────────────────
function flowBox(label, fill = TEAL_LIGHT, textColor = DARK) {
return new Table({
width: { size: 60, type: WidthType.PERCENTAGE },
margins: { top: 0, bottom: 0 },
rows: [new TableRow({ children: [new TableCell({
shading: { fill, type: ShadingType.SOLID },
borders: {
top: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
bottom: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
left: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
right: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 }
},
margins: { top: 100, bottom: 100, left: 200, right: 200 },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: label, bold: true, size: 19, font: "Calibri", color: textColor })]
})]
})] })]
});
}
function arrow() {
return new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "\u25BC", size: 22, color: TEAL, bold: true })],
spacing: { before: 40, after: 40 }
});
}
function flowRow(boxes) {
// side-by-side boxes in a row
const cells = [];
boxes.forEach((b, i) => {
cells.push(new TableCell({
shading: { fill: b.fill || TEAL_LIGHT, type: ShadingType.SOLID },
borders: {
top: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
bottom: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
left: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 },
right: { style: BorderStyle.SINGLE, color: BORDER_CLR, size: 6 }
},
margins: { top: 80, bottom: 80, left: 140, right: 140 },
verticalAlign: VerticalAlign.CENTER,
width: { size: Math.floor(100 / boxes.length), type: WidthType.PERCENTAGE },
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: b.label, bold: b.bold || false, size: 18, font: "Calibri", color: b.color || DARK })]
})]
}));
if (i < boxes.length - 1) {
cells.push(new TableCell({
borders: { top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE }, left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE } },
width: { size: 4, type: WidthType.PERCENTAGE },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "\u25B6", size: 20, color: TEAL })] })]
}));
}
});
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [new TableRow({ children: cells })]
});
}
// ─── DOCUMENT CONTENT ───────────────────────────────────────────────────────
const content = [
// COVER TITLE
spacer(200, 80),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "NEUROMUSCULAR ELECTRICAL STIMULATION", bold: true, size: 52, font: "Calibri", color: TEAL })],
spacing: { before: 100, after: 60 }
}),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "(NMES) & INSTRUMENTATION", bold: true, size: 40, font: "Calibri", color: ACCENT })],
spacing: { before: 20, after: 80 }
}),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Comprehensive Summary", size: 26, font: "Calibri", color: DARK, italic: true })],
spacing: { before: 20, after: 20 }
}),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Dr. Nikita Patel | C.M. Patel College of Physiotherapy, Gandhinagar", size: 20, font: "Calibri", color: "555555", italic: true })],
spacing: { before: 10, after: 200 }
}),
hline(),
spacer(60, 60),
// ─── SECTION 1: NMES OVERVIEW ────────────────────────────────────────────
sectionTitle("SECTION 1: OVERVIEW OF NMES"),
body("Neuromuscular Electrical Stimulation (NMES) is a therapeutic modality that applies electrical current to activate peripheral motor nerves, thereby eliciting contractions of normally innervated skeletal muscle. Its clinical use in physical medicine spans over half a century."),
spacer(40, 40),
subSubTitle("Historical Background"),
bullet("Through the early 1960s: Focus mainly on management of denervation atrophy"),
bullet("Post 1960s: Studies expanded to electrical activation of normal innervated muscle via peripheral nerve"),
bullet("Modern NMES: Strengthening, spasticity control, ROM, cardiovascular rehab, neurological conditions"),
spacer(40, 80),
// FLOWCHART 1: NMES Mechanism
subSubTitle("Flowchart 1: How NMES Works - Mechanism"),
spacer(40, 40),
flowBox("Electrical Stimulus Applied via Surface Electrodes", TEAL, WHITE),
arrow(),
flowBox("Current Activates Peripheral Motor Nerve Fibers", TEAL_LIGHT, DARK),
arrow(),
flowBox("Motor Nerve Transmits Signal to Neuromuscular Junction", TEAL_LIGHT, DARK),
arrow(),
flowBox("Acetylcholine Released → Action Potential in Muscle Fiber", TEAL_LIGHT, DARK),
arrow(),
flowBox("Muscle Fiber Contracts (Twitch / Tetanic)", ACCENT_LT, "7D3C00"),
arrow(),
flowBox("Therapeutic Effect: Strength / ROM / Spasticity Reduction", TEAL, WHITE),
spacer(80, 40),
subSubTitle("Key Neural Mechanisms for Strength Gains"),
bullet("Spinal motor pool activation"),
bullet("Synaptic facilitation"),
bullet("Changes in muscle motor unit firing patterns (SO → FOG or FG conversion)"),
bullet("Best effects seen in already weakened muscles (Gibson et al., 1988)"),
spacer(40, 80),
// ─── SECTION 2: WAVEFORMS ─────────────────────────────────────────────────
sectionTitle("SECTION 2: WAVEFORMS FOR NMES"),
body("Waveform selection is critical for both comfort and effectiveness. The type of waveform affects current spread, motor nerve recruitment, comfort levels, and force production."),
spacer(40, 60),
makeTable(
["Waveform Type", "Comfort", "Force of Contraction", "Clinical Use"],
[
["Symmetric Biphasic", "Comparable to others", "Effective", "General NMES"],
["Asymmetric Biphasic", "Comparable", "Best force output (quadriceps)", "Strengthening protocols"],
["Burst AC (2500 Hz)", "Good toleration", "Strong - with 300-400 pulses", "Athlete / post-surgical rehab"],
["Monophasic (short duration)", "Moderate", "Slightly less effective", "Denervation stimulation"],
["Sinusoidal", "No clear superiority", "Comparable to rectangular", "Experimental / comfort trials"]
],
[25, 20, 25, 30]
),
spacer(60, 40),
noteBox("Key Finding (Delitto & Rose): No single symmetrical biphasic waveform (sinusoidal, triangular, or rectangular) was found to be most comfortable when evoking comparable torque levels. Asymmetric biphasic waveforms produce best quadriceps force (Kramer 1984, Walmsley 1984, Snyder-Mackler 1989)."),
spacer(60, 80),
// ─── SECTION 3: STIMULATION PARAMETERS ───────────────────────────────────
sectionTitle("SECTION 3: STIMULATION PARAMETERS"),
spacer(40, 40),
subTitle("3A. Frequency"),
makeTable(
["Frequency", "Effect", "Trade-off"],
[
["60-100 Hz", "Maximum tetanic force", "High discomfort, rapid fatigue, muscle damage risk"],
["20-35 Hz", "~65% max force; minimum tetany", "Low fatigue - preferred for rehabilitation"],
["10 Hz", "Low-level contraction", "Very weak muscles / marked atrophy"]
],
[25, 40, 35]
),
spacer(60, 40),
subTitle("3B. Duty Cycle (ON:OFF Ratio)"),
body("The duty cycle determines work-to-rest ratio during stimulation. Weaker muscles need longer rest periods to prevent fatigue."),
spacer(40, 40),
flowRow([
{ label: "Very Weak Patient\n1:9 Ratio\n(10s ON : 90s OFF)", fill: ACCENT_LT, color: "7D3C00", bold: true },
{ label: "Moderate Weakness\n1:5 to 1:4 Ratio", fill: TEAL_LIGHT, color: DARK },
{ label: "Improving Strength\n1:3 to 1:2 Ratio", fill: TEAL_LIGHT, color: DARK },
{ label: "Fit / End-Stage Rehab\n1:1 Ratio", fill: TEAL, color: WHITE, bold: true }
]),
spacer(60, 40),
noteBox("Example: Post-TKR patient (very weak quads): 10 sec stimulation followed by 90 sec rest (1:9). Progressively reduce ratio as strength improves."),
spacer(60, 40),
subTitle("3C. Ramp Modulation"),
body("Gradually increases stimulation strength at the start and decreases it at the end of each stimulation train - making it more physiological and comfortable."),
spacer(40, 40),
flowBox("Ramp UP: 2-4 seconds (gradual rise in amplitude)", TEAL_LIGHT, DARK),
arrow(),
flowBox("PLATEAU: Full contraction maintained for ON time", TEAL, WHITE),
arrow(),
flowBox("Ramp DOWN: 1-2 seconds (gradual decline in amplitude)", TEAL_LIGHT, DARK),
spacer(60, 40),
subTitle("3D. Pulse Width"),
bullet("Optimal: 300-400 microseconds (µs)"),
bullet("Wider pulse width = greater sensory fiber recruitment = more discomfort"),
bullet("300-400 µs: best balance of force production and comfort"),
spacer(40, 80),
// ─── SECTION 4: CLINICAL TREATMENT PARAMETERS ────────────────────────────
sectionTitle("SECTION 4: CLINICAL TREATMENT PARAMETERS"),
spacer(40, 40),
makeTable(
["Goal", "Frequency", "Pulse Width", "Duty Cycle", "Duration", "Notes"],
[
["Muscle Strengthening", "30-35 Hz", "400 µs", "4s ON / 4s OFF min\n(usually 10s ON/OFF)", "≥15 min, alt days\n(usually 30 min/day)", "Strong contraction + voluntary exercise"],
["Muscle Endurance", "20 Hz", "400 µs", "2s ON / 2s OFF min", "≥1 hour/day", "Minimal contractions"],
["Very Weak / Atrophy", "10 Hz", "400 µs", "2s ON / 2s OFF min", "Min 1 hour/day", "Minimal force required"]
],
[18, 13, 12, 20, 20, 17]
),
spacer(80, 40),
// ─── SECTION 5: ELECTRODE PLACEMENT ──────────────────────────────────────
sectionTitle("SECTION 5: ELECTRODE PLACEMENT"),
spacer(40, 40),
subSubTitle("Flowchart 2: Electrode Selection & Placement Decision"),
spacer(40, 40),
flowBox("Identify Target Muscle for Stimulation", TEAL, WHITE),
arrow(),
flowBox("Locate MOTOR POINT of muscle\n(lowest resistance site - strongest contraction at lowest current)", TEAL_LIGHT, DARK),
arrow(),
flowBox("Place one electrode AT / NEAR motor point\nPlace second electrode on distal muscle belly", TEAL_LIGHT, DARK),
arrow(),
flowBox("Use LONGITUDINAL orientation\n(Brooks et al. 1990 - stronger contraction, less discomfort)", ACCENT_LT, "7D3C00"),
arrow(),
flowBox("Use LARGER electrodes to reduce current density and discomfort", TEAL_LIGHT, DARK),
spacer(60, 40),
makeTable(
["Electrode Type", "Properties", "Considerations"],
[
["Metal electrodes", "Rigid, durable", "Require conductive medium (gel/sponge)"],
["Carbon-impregnated silicone rubber", "Flexible, reusable, common", "Good for large muscle areas"],
["Solvent-activated silver-impregnated tape", "Conforms to skin", "Limited reuse"],
["Self-adhering pre-gelled electrodes", "Easiest application, consistent contact", "Most common in clinical practice"],
["Specialist electrodes", "Pelvic floor, glove, sock types", "Specific anatomical applications"]
],
[25, 40, 35]
),
spacer(40, 80),
// ─── SECTION 6: STRENGTHENING PROTOCOLS ──────────────────────────────────
sectionTitle("SECTION 6: STRENGTHENING PROTOCOLS"),
spacer(40, 40),
subTitle("6A. Athletes / Non-Injured Subjects"),
makeTable(
["Parameter", "Recommendation"],
[
["Waveform", "2500 Hz burst AC OR asymmetric biphasic pulsed"],
["Frequency", "~60 Hz"],
["Intensity", "Maximum tolerance; effective at 25-50% MVC isometric"],
["Pulse Width", "300-400 µs"],
["Duty Cycle", "1:8-1:5 (fatigue-prone) → 1:3-1:2-1:1 (fit)"],
["Ramp", "2-4 sec up / 1-2 sec down"],
["Contractions/session", "8-15 maximum"],
["Frequency", "3-5 sessions/week for 3-6 weeks"]
],
[40, 60]
),
spacer(60, 40),
subTitle("6B. Rehabilitation Programmes"),
bullet("Use LOWER frequencies: 20-35 Hz (minimum to achieve tetany)"),
bullet("Continue for longer per session"),
bullet("Duty cycle minimises fatigue: at least 1:4 or more"),
bullet("100-200 contractions/session, typically over 1-2 hours"),
spacer(40, 80),
// FLOWCHART 3: NMES STRENGTHENING PROTOCOL FLOWCHART
subSubTitle("Flowchart 3: NMES Strengthening Protocol Selection"),
spacer(40, 40),
flowBox("PATIENT ASSESSMENT\nDetermine muscle strength & diagnosis", TEAL, WHITE),
arrow(),
flowRow([
{ label: "ATHLETE /\nNon-Injured\n(Strong baseline)", fill: TEAL_LIGHT, color: DARK, bold: true },
{ label: "REHABILITATION\nPost-surgical /\nModerate weakness", fill: TEAL_LIGHT, color: DARK, bold: true },
{ label: "MARKED ATROPHY\nVery weak muscles", fill: ACCENT_LT, color: "7D3C00", bold: true }
]),
arrow(),
flowRow([
{ label: "60 Hz | 1:1-1:3 DC\n8-15 contractions\n3-5x/week", fill: TEAL_LIGHT, color: DARK },
{ label: "20-35 Hz | 1:4+ DC\n100-200 contractions\n1-2 hrs/session", fill: TEAL_LIGHT, color: DARK },
{ label: "10 Hz | 1:9 DC\nMinimal contraction\n1 hr+/day", fill: ACCENT_LT, color: "7D3C00" }
]),
spacer(80, 40),
// ─── SECTION 7: CONCLUSIONS ON NMES STRENGTHENING ────────────────────────
sectionTitle("SECTION 7: KEY CONCLUSIONS - NMES & STRENGTHENING"),
spacer(40, 40),
makeTable(
["Finding", "Evidence"],
[
["NMES increases strength vs. unexercised controls", "Consistent across studies"],
["NMES = voluntary exercise for strength gains (similar regimens)", "No significant difference between groups"],
["No added benefit of NMES + voluntary exercise combined vs. either alone", "Multiple studies"],
["Electrically elicited quadriceps contractions 80-100% MVIT are achievable", "Research confirmed"],
["Certain NMES regimens produce greater gains than voluntary exercise", "Patient populations specifically"],
["Positive correlation: training intensity → strength gains in weakness", "Balogun 1993; Gibson 1988"],
["Positive correlation: phase charge → torque-generating capability", "Clinical evidence"],
["Crossover effect: treated limb gains also seen in contralateral limb (10%)", "Balogun 1993"]
],
[55, 45]
),
spacer(80, 40),
// ─── SECTION 8: NMES FOR ROM ──────────────────────────────────────────────
sectionTitle("SECTION 8: NMES FOR RANGE OF MOTION (ROM)"),
spacer(40, 40),
subTitle("8A. Passive ROM"),
body("Limitations in passive ROM arise from: spinal cord trauma, CVA, TBI, muscle contracture, capsule tightening."),
spacer(30, 40),
bullet("Munsat et al.: NMES of quadriceps 6 hrs/day reduced knee flexion contractures in 4/5 comatose patients (after surgical hamstring lengthening)"),
bullet("Rancho Los Amigos (1979): NMES to wrist & finger extensors in 16 hemiplegic patients"),
bullet(" - Started: 15 min twice daily → progressed to 3 sessions/day, 7 days/week for 4 weeks"),
bullet(" - Amplitude: maximum comfortable extensor contraction through full available ROM"),
bullet(" - Key finding: when NMES discontinued in 4 patients, passive extension gradually declined"),
spacer(40, 40),
subTitle("8B. Active ROM"),
bullet("Bowman et al.: 30 hemiplegic patients with full passive ROM but limited active ROM (5-30 degrees)"),
bullet("Treatment: 30 min twice daily, 5 days/week for 4 weeks (NMES group vs. conventional therapy only)"),
bullet("Result: NMES group improved active wrist extension by 35% vs. 8% in control group"),
spacer(40, 80),
// ─── SECTION 9: NMES FOR SPASTICITY ──────────────────────────────────────
sectionTitle("SECTION 9: NMES FOR SPASTICITY CONTROL"),
body("Spasticity = hyperactive phasic & tonic stretch reflexes, hyperactive flexion reflexes, decreased dexterity & strength. Associated with CNS damage (stroke, SCI, MS)."),
spacer(40, 60),
subSubTitle("Flowchart 4: Three Approaches to NMES for Spasticity"),
spacer(40, 40),
flowBox("SPASTICITY (CNS Damage - Stroke / SCI / MS)", TEAL, WHITE),
arrow(),
flowRow([
{ label: "APPROACH 1\nANTAGONIST\nMuscle Stimulation", fill: TEAL_LIGHT, color: DARK, bold: true },
{ label: "APPROACH 2\nSPASTIC MUSCLE\nDirect Stimulation", fill: TEAL_LIGHT, color: DARK, bold: true },
{ label: "APPROACH 3\nCOMBINED\nAgonist + Antagonist", fill: TEAL_LIGHT, color: DARK, bold: true }
]),
spacer(40, 40),
makeTable(
["Approach", "Technique", "Parameters", "Result"],
[
["Antagonist Stimulation\n(Baker et al., late 1970s)", "Stimulate antagonist of spastic muscle (wrist/finger extensors in flexor spasticity)", "Monophasic rectangular; 200 µs; 33 pps; 7s ON/10s OFF; 15 min → 30 min 3x/day; 4 weeks", "Reduced wrist flexor spasticity persisting ~30 min post-stimulation"],
["Direct Spastic Muscle Stimulation\n(Lee et al.)", "NMES to activate the spastic muscle itself; alternating contraction & relaxation", "Bipolar; faradic 60-100 pps or sinusoidal 60-350 Hz; amplitude to maintain max contraction", "Reduction in hypertonicity; improvements in ADL, mobility, posture"],
["Combined Agonist + Antagonist\n(Vodovnik et al., early 1980s)", "Rhythmically alternate activation of spastic and antagonist muscles", "Asymmetric biphasic; 30 pps; 300 µs; 100 mA; 5s ON/5s OFF in 7 SCI patients", "No superiority over either approach alone"]
],
[22, 28, 28, 22]
),
spacer(40, 80),
// ─── SECTION 10: PRECAUTIONS & CONTRAINDICATIONS ─────────────────────────
sectionTitle("SECTION 10: PRECAUTIONS & CONTRAINDICATIONS"),
spacer(40, 40),
makeTable(
["Category", "Specific Contraindication / Precaution"],
[
["Implanted devices", "Cardiac pacemakers, phrenic nerve stimulators, urinary bladder stimulators"],
["Vascular", "Carotid sinus stimulation, peripheral vascular disease, hypertensive/hypotensive patients"],
["Pathological conditions", "Neoplasm (cancer), active infection over stimulation site"],
["Body composition", "Obese patients (electrode contact and current delivery may be compromised)"],
["Regional precaution", "Avoid thoracic region application when pacemakers present"]
],
[30, 70]
),
spacer(40, 80),
// ─── SECTION 11: APPLICATION PRINCIPLES ──────────────────────────────────
sectionTitle("SECTION 11: APPLICATION PRINCIPLES FOR NMES"),
spacer(40, 40),
subSubTitle("Flowchart 5: Step-by-Step Clinical NMES Application"),
spacer(40, 40),
flowBox("STEP 1: Patient Assessment\nDiagnosis, muscle strength, precautions check", TEAL, WHITE),
arrow(),
flowBox("STEP 2: Select Stimulation Parameters\n(Frequency, Pulse Width, Duty Cycle, Ramp, Waveform)", TEAL_LIGHT, DARK),
arrow(),
flowBox("STEP 3: Electrode Preparation & Placement\n(Motor point, bipolar, longitudinal, adequate size)", TEAL_LIGHT, DARK),
arrow(),
flowBox("STEP 4: Stabilize Patient\n(Firm, proper support of limb/body part)", TEAL_LIGHT, DARK),
arrow(),
flowBox("STEP 5: Initiate Stimulation\n(Gradually increase amplitude to motor threshold, then exceed)", ACCENT_LT, "7D3C00"),
arrow(),
flowBox("STEP 6: First Session Protocol\n(Increase amplitude contraction-by-contraction to build tolerance)", TEAL_LIGHT, DARK),
arrow(),
flowBox("STEP 7: Monitor & Progress\n(Adjust duty cycle, intensity, duration over 5-7 day programme)", TEAL_LIGHT, DARK),
arrow(),
flowBox("STEP 8: Reassess & Document\nTrack strength, ROM, spasticity scores", TEAL, WHITE),
spacer(80, 40),
new Paragraph({ children: [new PageBreak()] }),
// ─── SECTION 12: INSTRUMENTATION ─────────────────────────────────────────
sectionTitle("SECTION 12: INSTRUMENTATION OF NMES"),
body("Proper instrumentation is fundamental to delivering safe and effective NMES therapy. It encompasses stimulator selection, waveform controls, electrode choice, and electrode placement."),
spacer(40, 80),
subTitle("12A. General Considerations"),
makeTable(
["Topic", "Description"],
[
["Current waveform selection", "Waveform type, amplitude, duration, frequency all affect comfort and contraction force"],
["Recommended stimulator features", "Controls needed for flexible, safe NMES delivery"],
["Portable vs. clinical stimulators", "Trade-offs in output, portability, and monitoring capability"],
["Electrode types & placement", "Type of electrode and position affects current delivery and efficacy"],
["Application principles", "Systematic approach to initiation and progression of NMES"]
],
[35, 65]
),
spacer(60, 40),
subTitle("12B. Waveform Selection"),
body("The force of contraction depends on: Amplitude, Pulse Duration, Frequency, and Waveform shape."),
spacer(40, 40),
bullet("Symmetrical biphasic waveforms (sinusoidal, triangular, rectangular) - no waveform is most comfortable at comparable torque"),
bullet("Asymmetric biphasic pulsed = best force output for quadriceps strengthening"),
bullet("Burst-modulated sinusoidal AC waveforms (2500 Hz carrier) - appropriate for normally innervated skeletal muscle"),
bullet("Short duration monophasic - slightly less effective than biphasic; mainly for denervated muscle"),
spacer(40, 80),
subTitle("12C. Recommended Stimulator Features & Controls"),
makeTable(
["Feature / Control", "Purpose"],
[
["Two output channels", "Allow bipolar or dual muscle group stimulation simultaneously"],
["Pulse / phase duration control", "Adjust stimulus duration for comfort and motor nerve threshold"],
["Frequency control", "Select appropriate frequency for therapeutic goal (strength vs. endurance vs. atrophy)"],
["Independent amplitude controls", "Separate intensity control for each channel"],
["ON time / OFF time controls", "Set and adjust duty cycle (contraction and rest periods)"],
["Ramp modulation control", "Gradually ramp up/down stimulation for comfort and safety"],
["Timer", "Monitor session duration for consistent treatment delivery"]
],
[40, 60]
),
spacer(40, 40),
noteBox("Clinical note: Considerable flexibility in stimulus adjustments places additional responsibility on the clinician to understand the consequence of changing each stimulator setting to ensure safe and effective treatment."),
spacer(60, 40),
subTitle("12D. Portable vs. Clinical Stimulators"),
flowRow([
{ label: "PORTABLE\n(Battery-operated)\n\n+ Home use / compliance\n+ Lightweight\n\n- May lack output for therapeutic levels\n- Battery drains quickly at high output\n- No analog/digital outputs", fill: TEAL_LIGHT, color: DARK },
{ label: "CLINICAL\n(60 Hz AC mains)\n\n+ Higher output\n+ Monitoring capability\n+ Analog/digital outputs\n\n- Not portable\n- Clinic use only", fill: ACCENT_LT, color: "7D3C00" }
]),
spacer(60, 40),
noteBox("Some battery-operated stimulators at high output levels drain battery quickly and require frequent replacement. They generally lack analog/digital outputs for monitoring."),
spacer(60, 40),
subTitle("12E. Electrodes & Electrode Placement"),
body("Nelson et al. evaluated four electrode types for NMES effectiveness:"),
spacer(30, 40),
makeTable(
["Electrode Type", "Characteristics", "Clinical Use"],
[
["Metal electrodes", "Rigid, conductive surface", "Require conductive gel or wet sponge"],
["Carbon-impregnated silicone rubber", "Flexible, reusable, good conductivity", "Most versatile clinical electrode"],
["Solvent-activated silver-impregnated tape", "Conforms well to body contours", "Limited reuse"],
["Self-adhering pre-gelled electrodes", "Consistent contact, easiest application", "Standard current clinical practice"],
["Specialist electrodes", "Pelvic floor, glove, sock designs", "Specific anatomical regions"]
],
[28, 37, 35]
),
spacer(40, 40),
subSubTitle("Flowchart 6: Electrode Placement for Optimal NMES"),
spacer(30, 40),
flowBox("Identify Target Muscle", TEAL, WHITE),
arrow(),
flowBox("Locate Motor Point\n(site of lowest resistance - maximum contraction at minimum current)", TEAL_LIGHT, DARK),
arrow(),
flowBox("Select electrode size: LARGER = lower current density = less discomfort", TEAL_LIGHT, DARK),
arrow(),
flowBox("Place one electrode at/near MOTOR POINT\nPlace second electrode on MUSCLE BELLY", TEAL_LIGHT, DARK),
arrow(),
flowBox("Orient electrodes LONGITUDINALLY along muscle fibers\n(Brooks et al. 1990 - stronger contraction, less discomfort)", ACCENT_LT, "7D3C00"),
arrow(),
flowBox("Secure firmly - ensure good skin contact\nProceed with stimulation", TEAL, WHITE),
spacer(60, 40),
subTitle("12F. General Application Principles - Instrumentation"),
bullet("Goal: Achieve HIGH levels of stimulated muscle contraction"),
bullet("Amplitude: Gradually increase until motor threshold is reached and then exceeded"),
bullet("First session: Increase amplitude contraction-by-contraction to build subject tolerance"),
bullet("Flexibility in parameter adjustment = clinician's responsibility to optimize safely"),
bullet("Monitor contraction strength: not just a mild twitch - a strong, visible contraction is required for therapeutic benefit"),
spacer(40, 80),
// ─── SECTION 13: CLINICAL APPLICATIONS ───────────────────────────────────
sectionTitle("SECTION 13: CLINICAL APPLICATIONS"),
spacer(40, 40),
makeTable(
["Domain", "Application", "Key Reference"],
[
["Orthopaedic", "Quadriceps strengthening post bilateral TKA", "Stevens et al. 2004"],
["Orthopaedic", "Patellofemoral pain management", "Callaghan & Oldham 2004"],
["Orthopaedic", "Clinical vs. portable stimulator torque comparison", "Lyons et al. 2005"],
["Cardiovascular", "Low-frequency thigh stimulation in chronic heart failure", "Nuhr et al. 2004"],
["Cardiovascular", "NMES for muscle weakness in advanced disease (Cochrane)", "Maddocks et al. 2013"],
["Neuro - Stroke", "Shoulder pain/dysfunction in hemiplegia", "Chantraine et al. 1999"],
["Neuro - Stroke", "Prevention of shoulder subluxation post-stroke (meta-analysis)", "Ada & Foongchomcheay 2002"],
["Neuro - Stroke", "Quadriceps motor unit recruitment post-stroke", "Newsam & Baker 2004"],
["Neuro - SCI", "Skeletal muscle adaptability with ES leg training", "Crameri et al. 2002"],
["Neuro - SCI", "Acute phase ES training in SCI", "Crameri et al. 2000"],
["Neuro - SCI", "Clinical applications of ES post-SCI", "Creasey et al. 2004"],
["Neuro - SCI", "Switching stimulation patterns in paralyzed quadriceps", "Scott et al. 2005"]
],
[18, 52, 30]
),
spacer(60, 80),
// ─── QUICK REFERENCE ──────────────────────────────────────────────────────
sectionTitle("QUICK REFERENCE SUMMARY"),
spacer(40, 40),
makeTable(
["Topic", "Key Points"],
[
["Definition", "Electrical current activates peripheral motor nerve → muscle contraction"],
["Best Waveform", "Asymmetric biphasic pulsed / Burst AC (2500 Hz)"],
["Optimal Pulse Width", "300-400 µs"],
["Freq for Strength", "60-100 Hz (max force); 30-35 Hz (clinical)"],
["Freq for Endurance", "20 Hz"],
["Very Weak Muscle", "10 Hz"],
["Duty Cycle Start", "1:9 (very weak) → progress to 1:1 (fit)"],
["Ramp Up/Down", "2-4 sec up / 1-2 sec down"],
["Electrode", "At/near motor point; longitudinal; larger = more comfortable"],
["Contraindications", "Pacemakers, phrenic stimulators, carotid sinus, PVD, neoplasm"],
["Spasticity", "3 approaches: antagonist / direct / combined stimulation"],
["ROM", "NMES to extensors 35% improvement in active ROM vs 8% conventional"],
["Stimulator Features", "2 channels, pulse/freq/amplitude/ON-OFF/ramp controls + timer"]
],
[35, 65]
),
spacer(40, 40),
hline(),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "End of NMES & Instrumentation Summary", size: 20, font: "Calibri", italic: true, color: "888888" })],
spacing: { before: 60, after: 40 }
})
];
const doc = new Document({
creator: "NMES Summary Generator",
title: "NMES & Instrumentation of NMES - Comprehensive Summary",
description: "A comprehensive summary with flowcharts and tables",
styles: {
default: {
document: {
run: { font: "Calibri", size: 20, color: DARK }
}
}
},
sections: [{
properties: {
page: {
margin: { top: 900, right: 900, bottom: 900, left: 900 }
}
},
children: content
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/nmes-summary/NMES_Summary.docx", buffer);
console.log("Done: NMES_Summary.docx created");
}).catch(err => {
console.error("Error:", err.message);
process.exit(1);
});
cd /home/daytona/workspace/nmes-summary && node generate_summary.js 2>&1
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/nmes-summary/NMES_Summary.docx 2>&1
# Validate by checking it's a valid ZIP with expected structure python3 -c " import zipfile path = '/home/daytona/workspace/nmes-summary/NMES_Summary.docx' with zipfile.ZipFile(path, 'r') as z: names = z.namelist() required = ['word/document.xml', '[Content_Types].xml', 'word/_rels/document.xml.rels'] for r in required: print(r, ':', 'FOUND' if r in names else 'MISSING') print('Total files:', len(names)) import os size = os.path.getsize(path) print('File size:', size, 'bytes') "
NMES Summary
Word Document · DOCX
| Section | Content |
|---|---|
| 1 | Overview & Historical Background |
| 2 | Waveforms for NMES (comparison table) |
| 3 | Stimulation Parameters - Frequency, Duty Cycle, Ramp, Pulse Width |
| 4 | Clinical Treatment Parameters (goal-based table) |
| 5 | Electrode Types & Placement |
| 6 | Strengthening Protocols (Athletes vs. Rehab) |
| 7 | Key Conclusions on NMES Strengthening |
| 8 | NMES for Range of Motion |
| 9 | NMES for Spasticity Control |
| 10 | Precautions & Contraindications |
| 11 | Application Principles |
| 12 | Instrumentation (waveforms, controls, portable vs. clinical, electrodes) |
| 13 | Clinical Applications & Quick Reference |
now teach me both topics in simple language which I can memorize during exams
NMES = Using electricity to make a nerve fire, which then makes a muscle contract.
Easy memory: "NMES teaches the nervous system to work better, not just the muscle."
| Researcher | Finding |
|---|---|
| Balogun (1993) | 24% strength increase in treated limb, 10% in the other limb too (crossover effect!) |
| Gibson (1988) | Best effects in already weak muscles |
| Hon Sun Loi (1988) | High intensity = best results; gains in isometric then concentric; no change in eccentric |
You stimulate the right quad, and the left quad also gets a bit stronger (10%). This happens because the spinal cord is shared!
| Frequency | Effect | Use |
|---|---|---|
| 60-100 Hz | Maximum force (tetanic) | Athletes |
| 30-35 Hz | Good strength, less fatigue | Clinical strengthening |
| 20 Hz | 65% force, much less fatigue | Endurance training |
| 10 Hz | Minimal contraction | Very weak/atrophied muscles |
Memory trick: Higher Hz = More force BUT more fatigue. Like running fast - you get tired quickly.
Memory trick: Think of it as how long you press a doorbell. Too short = nothing happens. Too long = annoying.
| Patient Condition | Duty Cycle | Example |
|---|---|---|
| Very weak (post-TKR) | 1:9 | 10s ON, 90s OFF |
| Moderate weakness | 1:5 to 1:4 | |
| Improving | 1:3 to 1:2 | |
| Fit/End-stage rehab | 1:1 | Equal work and rest |
Memory trick: "Weaker patient = MORE rest. Like a new gym member who needs long breaks between sets."
Progress direction: Start at 1:9 → work toward 1:1 as patient gets stronger.
Memory trick: Like a car - don't floor the accelerator from zero. Ease in, ease out. Up is longer (2-4s), down is shorter (1-2s).
Winner: Asymmetric Biphasic Pulsed current (best force for quadriceps) Runner-up: Burst AC (2500 Hz)
| Waveform | What it means | Effectiveness |
|---|---|---|
| Asymmetric biphasic | Unequal positive and negative phases | BEST force output |
| Symmetric biphasic | Equal phases | Good, no waveform is most comfortable |
| Burst AC (2500 Hz) | High frequency carrier, burst-modulated | Strong contractions |
| Monophasic | One direction only | Slightly less effective |
Simple memory: "Asymmetric Biphasic Wins" - ABW
| Type of Patient | Frequency | Duty Cycle | Sessions | Duration |
|---|---|---|---|---|
| Athletes | ~60 Hz | 1:8 → 1:1 | 3-5x/week, 3-6 weeks | 8-15 contractions/session |
| Rehab patients | 20-35 Hz | 1:4+ | Longer | 100-200 contractions/1-2 hrs |
| Very weak | 10 Hz | 1:9 | Daily | 1 hr+ |
| Clinical strengthening | 30-35 Hz, 400µs | 10s ON/OFF | Alt days | 30 min |
| Endurance | 20 Hz, 400µs | 2s ON/OFF | Daily | 1 hr |
Memory: 35 vs 8 - NMES wins big!
Spasticity = Hyperactive stretch reflexes + reduced dexterity from CNS damage (stroke, SCI, MS)
| Approach | What you do | Key finding |
|---|---|---|
| Antagonist stimulation | Stimulate the muscle OPPOSITE to the spastic one | Spasticity relief lasts ~30 min after stimulation (Baker et al.) |
| Direct stimulation | Stimulate the SPASTIC muscle itself | Reduction in hypertonicity, improved ADL |
| Combined | Alternate between both | NOT superior to either alone (Vodovnik) |
Baker's key parameters: Monophasic rectangular, 200 µs, 33 pps, 7s ON/10s OFF, bipolar
Instrumentation = The machine, waveform, controls, and electrodes used to deliver NMES.
Memory: "All three are equal - no winner for comfort"
"A stimulator needs 7 controls" - remember: "2-PF-AOR-T"
| Control | Purpose |
|---|---|
| 2 output channels | Stimulate two areas/muscles |
| Pulse/phase duration | Adjust pulse width |
| Frequency | Set Hz for strength/endurance goal |
| Amplitude (independent per channel) | Control intensity |
| ON/OFF time | Set duty cycle |
| Ramp modulation | Smooth start and finish |
| Timer | Manage session time |
Simple memory: "2 channels, 5 controls, 1 timer" = a complete NMES machine
| Portable (Battery) | Clinical (Mains AC) | |
|---|---|---|
| Power | Battery | 60 Hz AC mains |
| Output | May be insufficient | Higher, reliable |
| Battery drain | Fast at high output | N/A |
| Outputs (monitoring) | Generally NONE | Has analog/digital |
| Portability | High (home use) | Low (clinic only) |
Memory trick: "Portable is convenient but limited. Clinical is powerful but you can't take it home."
Key exam point: Some portable units at high output drain battery quickly AND lack digital/analog outputs for monitoring.
| Type | Key Feature |
|---|---|
| Metal | Rigid; need gel/sponge |
| Carbon-impregnated silicone rubber | Flexible, reusable - most common |
| Solvent-activated silver-impregnated tape | Conforms to skin |
| Self-adhering pre-gelled | Easiest application, standard clinical use |
| Specialist (pelvic floor, glove, sock) | Region-specific |
"MOLL" again - Motor point, One there, Longitudinal, Larger
Goal Freq PW Duty Cycle Duration
─────────────────────────────────────────────────────────
Strengthening 30-35Hz 400µs 10s ON/10s OFF 30 min/day
Endurance 20Hz 400µs 2s ON/2s OFF 1 hr/day
Very Weak 10Hz 400µs 2s ON/2s OFF 1 hr+/day
Athletes ~60Hz 300- 1:8 → 1:1 8-15 contractions
400µs
Study tip: Read the cheat sheet 3 times tonight, cover it and write it from memory tomorrow morning. The numbers stick faster when you connect them to a clinical image - picture a post-knee surgery patient resting for 90 seconds between 10-second contractions, and the numbers will stay.
Make a visual poster/infographic summarizing NMES parameters and choices
A professional medical education infographic/poster titled "NMES Parameters & Clinical Choices" for physiotherapy students. Clean, modern design with a teal and white color scheme on a dark navy background. Layout sections: TOP HEADER: Large bold title "NMES - Neuromuscular Electrical Stimulation" with subtitle "Parameters & Clinical Choices Quick Reference" Section 1 - WAVEFORMS (left column, icon of sine wave): - Asymmetric Biphasic Pulsed → BEST force output - Burst AC 2500 Hz → Strong contractions - Symmetric Biphasic → Good, comfortable - Monophasic → Less effective Section 2 - FREQUENCY (center-left, icon of frequency waves): Visual scale/bar showing: - 10 Hz → Very weak muscles / Atrophy - 20 Hz → Endurance (65% force, low fatigue) - 30-35 Hz → Clinical Strengthening - 60-100 Hz → Maximum force / Athletes Section 3 - PULSE WIDTH (center): - Optimal: 300-400 microseconds - Wider = more discomfort - 400 µs used in most clinical protocols Section 4 - DUTY CYCLE (center-right, icon of timer): Arrow progression bar showing: 1:9 (Very Weak) → 1:5 → 1:4 → 1:3 → 1:2 → 1:1 (Fit/Athletes) Label: "Progress as strength improves" Section 5 - RAMP (right column, icon of slope): UP: 2-4 seconds (gradual rise) PLATEAU: Full contraction DOWN: 1-2 seconds (gradual fall) Small diagram showing ramp-up plateau ramp-down shape Section 6 - CLINICAL PROTOCOLS TABLE (bottom, 3 columns in colored boxes): STRENGTHENING: 30-35 Hz | 400µs | 10s ON/10s OFF | 30 min/day ENDURANCE: 20 Hz | 400µs | 2s ON/2s OFF | 1 hr/day VERY WEAK/ATROPHY: 10 Hz | 400µs | 2s ON/2s OFF | 1 hr+/day ATHLETES: 60 Hz | 300-400µs | 1:1 ratio | 8-15 contractions Section 7 - ELECTRODE PLACEMENT (small box bottom-right): Motor point placement, Longitudinal orientation, Larger = less discomfort Bipolar configuration diagram Section 8 - CONTRAINDICATIONS (red warning box bottom-left): Pacemakers | Carotid sinus | PVD | Neoplasm | Hypo/Hypertension | Phrenic stimulators Use icons, color-coded sections (teal, orange accent, dark navy), clean sans-serif typography, medical professional style. Dense but organized. Print-quality poster layout.

Create instrumentation/equipment infographic
A professional medical education infographic/poster titled "Instrumentation of NMES" for physiotherapy students. Clean, modern design with deep teal, orange accent, and white on a dark navy background. Print-quality, dense but well-organized layout. TOP HEADER: Large bold title "INSTRUMENTATION OF NMES" subtitle "Equipment, Controls, Electrodes & Application" --- SECTION 1 (top-left panel, teal background): WAVEFORM SELECTION Title: "Current Waveform Selection" Small waveform shape icons next to each: • Asymmetric Biphasic Pulsed → Best force output for strength • Symmetric Biphasic (sinusoidal/triangular/rectangular) → No one waveform most comfortable (Delitto & Rose) • Burst-modulated Sinusoidal AC (2500 Hz) → Appropriate for normally innervated muscle • Short-duration Monophasic → Slightly less effective than biphasic Bottom note: "Force depends on: Amplitude + Duration + Frequency + Waveform shape" --- SECTION 2 (top-center panel, dark navy with teal border): STIMULATOR CONTROLS Title: "7 Essential Stimulator Controls" Numbered list with small icons: 1. Two Output Channels - stimulate two muscle groups 2. Pulse/Phase Duration Control - adjust pulse width 3. Frequency Control - select Hz for goal 4. Independent Amplitude Controls - separate intensity per channel 5. ON Time / OFF Time Controls - set duty cycle 6. Ramp Modulation Control - smooth rise and fall 7. Timer - manage session duration Bottom note: "Flexibility = Clinician's responsibility for safe use" --- SECTION 3 (top-right panel, orange accent): PORTABLE vs CLINICAL STIMULATORS Title: "Portable vs Clinical" Two-column comparison table: PORTABLE (battery icon): + Home use, lightweight + Patient compliance - May lack therapeutic output - Battery drains fast at high output - No analog/digital outputs CLINICAL (plug/mains icon): + High reliable output + Analog & digital monitoring + Suitable for complex cases - Not portable - Clinic use only --- SECTION 4 (middle-left, light teal background): ELECTRODE TYPES Title: "4 Electrode Types (Nelson et al.)" Icon of electrode next to each: 1. Metal Electrodes - rigid, need conductive gel 2. Carbon-impregnated Silicone Rubber - flexible, reusable, most versatile 3. Solvent-activated Silver-impregnated Tape - conforms to skin 4. Self-adhering Pre-gelled - easiest, standard clinical practice Plus: Specialist Electrodes (pelvic floor, glove, sock) --- SECTION 5 (middle-center, dark panel): ELECTRODE PLACEMENT DIAGRAM Title: "Electrode Placement Rules" Simple anatomy diagram of a muscle (like quadriceps) showing: - Motor Point marked with a star (place one electrode here) - Second electrode on distal muscle belly - Arrow showing LONGITUDINAL orientation along muscle fibers Rules listed: • Both electrodes on muscle belly (bipolar) • One at/near motor point • Longitudinal = stronger contraction, less discomfort (Brooks 1990) • LARGER electrodes = lower current density = less pain --- SECTION 6 (middle-right, orange panel): GENERAL APPLICATION PRINCIPLES Title: "Application Principles" Step-by-step numbered flow: Step 1: Assess patient + check contraindications Step 2: Select all parameters (freq, PW, duty cycle, ramp) Step 3: Prepare and place electrodes correctly Step 4: Stabilize the body part firmly Step 5: Gradually increase amplitude → reach motor threshold → exceed it Step 6: First session: increase contraction-by-contraction to build tolerance Goal: Strong visible contraction, NOT just a mild twitch! --- BOTTOM PANEL (full width, dark teal): KEY FACTS TO REMEMBER Three columns: Column 1 - COMFORT STUDY: "Delitto & Rose: Sinusoidal vs Triangular vs Rectangular biphasic waveforms tested on quadriceps. Result: NO waveform was most comfortable at comparable torque. VAS used for comfort rating." Column 2 - FORCE STUDY: "Symmetric biphasic + burst-modulated sinusoidal AC = most appropriate for normally innervated muscle. Monophasic (short duration) = slightly LESS effective." Column 3 - MNEMONICS: "7 Controls = 2-PF-AOR-T: 2 channels, Pulse, Frequency, Amplitude, ON/OFF, Ramp, Timer. Electrode types = MCSS: Metal, Carbon, Silver-tape, Self-adhering" Use bold clean sans-serif fonts, medical icons, color-coded sections, professional physiotherapy education style.

| Panel | Content |
|---|---|
| Top-left | Waveform selection with shape icons - ranked by effectiveness |
| Top-center | 7 essential stimulator controls numbered clearly |
| Top-right | Portable vs. Clinical stimulator comparison |
| Middle-left | 4 electrode types (Nelson et al.) with MCSS mnemonic |
| Middle-center | Electrode placement diagram on a muscle - motor point, bipolar, longitudinal |
| Middle-right | 6-step application principles flow |
| Bottom strip | Key study facts + mnemonics (2-PF-AOR-T and MCSS) |