Hand functions
| Muscle | Action | Nerve |
|---|---|---|
| Abductor pollicis brevis | Thumb abduction | Median (C8, T1) |
| Opponens pollicis | Thumb opposition (CMC) | Median (C8, T1) |
| Flexor pollicis brevis (superficial head) | Thumb flexion (MCP) | Median (C8, T1) |
| Flexor pollicis brevis (deep head) | Thumb flexion | Ulnar (C8, T1) |
| Adductor pollicis | Thumb adduction, MCP flexion | Ulnar (C8, T1) |

The ability to grasp an object between the pad of the thumb and a finger depends entirely on the thenar muscles (recurrent branch of the median nerve, C8–T1). — Gray's Anatomy for Students
| Muscle | Action |
|---|---|
| Abductor digiti minimi | Abduction + MCP flexion of little finger; PIP/DIP extension |
| Flexor digiti minimi brevis | MCP flexion of little finger |
| Opponens digiti minimi | Opposition of little finger |


Flexing the MCP joints while simultaneously extending the PIP and DIP joints is entirely dependent on the intrinsic muscles, mainly innervated by the deep branch of the ulnar nerve (C8–T1). — Gray's Anatomy for Students
| Movement | Primary Muscles | Nerve |
|---|---|---|
| Finger flexion (DIP) | FDP | Anterior interosseous (median) to digits 2–3; ulnar to digits 4–5 |
| Finger flexion (PIP) | FDS | Median nerve |
| Finger flexion (MCP) | Interossei, lumbricals | Ulnar (± median for 1st/2nd lumbricals) |
| Finger extension | EDC + EIP + EDM | Radial/posterior interosseous nerve |
| Finger abduction | Dorsal interossei + abductor digiti minimi | Ulnar nerve |
| Finger adduction | Palmar interossei | Ulnar nerve |
| Thumb opposition | Opponens pollicis, abductor pollicis brevis, FPB | Median nerve (recurrent branch) |
| Thumb adduction | Adductor pollicis | Ulnar nerve |
| Thumb IP flexion | FPL | Anterior interosseous nerve (median) |
| Nerve | Key Hand Functions |
|---|---|
| Median | Thenar opposition/abduction; 1st & 2nd lumbrical; FDS & FDP (digits 2–3); FPL |
| Ulnar | All interossei; 3rd & 4th lumbricals; hypothenar muscles; adductor pollicis; FDP (digits 4–5) |
| Radial (PIN) | All finger and wrist extensors; no intrinsic function |
refer Pedretti book of occupational therapy for same topic and give me ppt
ls /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace/hand-functions-ppt
mkdir -p /home/daytona/workspace/hand-functions-ppt && ls /home/daytona/workspace/hand-functions-ppt
~/hand-functions-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Hand Functions – Occupational Therapy Perspective";
pres.author = "Pedretti's Occupational Therapy";
// ─── COLOR PALETTE ───────────────────────────────────────────────
const C = {
navy: "1A3A5C", // dominant dark bg
teal: "1B7FA3", // accent headers
amber: "E8A020", // highlight / accent
white: "FFFFFF",
offWhite:"F0F4F8",
lightBlue:"D6EAF5",
darkText: "1A2B3C",
midText: "2C4A6E",
grey: "6B7C93",
};
// ─── HELPER FUNCTIONS ────────────────────────────────────────────
function titleSlide(pres, title, subtitle) {
const s = pres.addSlide();
// Full navy background
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
// Teal accent bar left
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.4, h: 5.625, fill: { color: C.teal }, line: { color: C.teal } });
// Amber bottom stripe
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.amber }, line: { color: C.amber } });
s.addText(title, {
x: 0.7, y: 1.4, w: 8.6, h: 1.4,
fontSize: 38, bold: true, color: C.white, align: "left",
fontFace: "Calibri", wrap: true
});
s.addText(subtitle, {
x: 0.7, y: 2.95, w: 8.6, h: 0.8,
fontSize: 22, color: C.lightBlue, align: "left",
fontFace: "Calibri"
});
s.addText("Based on Pedretti's Occupational Therapy – Practice Skills for Physical Dysfunction", {
x: 0.7, y: 3.8, w: 8.6, h: 0.5,
fontSize: 13, color: C.grey, align: "left", italic: true, fontFace: "Calibri"
});
return s;
}
function sectionHeader(pres, sectionNum, title, subtitle) {
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.amber }, line: { color: C.amber } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.545, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal } });
s.addText(`0${sectionNum}`, {
x: 0.5, y: 1.0, w: 2, h: 1.8,
fontSize: 90, bold: true, color: C.amber, fontFace: "Calibri", opacity: 0.25
});
s.addText(title, {
x: 0.6, y: 1.8, w: 8.8, h: 1.1,
fontSize: 32, bold: true, color: C.white, fontFace: "Calibri"
});
s.addText(subtitle, {
x: 0.6, y: 3.0, w: 8.8, h: 0.7,
fontSize: 18, color: C.lightBlue, fontFace: "Calibri"
});
return s;
}
function contentSlide(pres, title, bullets, opts = {}) {
const s = pres.addSlide();
// Light background
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite } });
// Top header bar
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.9, fill: { color: C.navy }, line: { color: C.navy } });
// Amber accent left of title
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: 0.9, fill: { color: C.amber }, line: { color: C.amber } });
s.addText(title, {
x: 0.35, y: 0.0, w: 9.4, h: 0.9,
fontSize: 20, bold: true, color: C.white, valign: "middle",
fontFace: "Calibri", margin: 0
});
const startY = opts.startY || 1.05;
const contentW = opts.contentW || 9.2;
const contentH = opts.contentH || 4.2;
const bulletItems = bullets.map((b, i) => {
const isSubBullet = b.startsWith(" ");
const text = b.replace(/^ /, "");
const isLast = i === bullets.length - 1;
return {
text: text,
options: {
bullet: isSubBullet ? { indent: 25 } : { indent: 10 },
fontSize: isSubBullet ? 14 : 16,
color: isSubBullet ? C.midText : C.darkText,
bold: false,
breakLine: !isLast
}
};
});
s.addText(bulletItems, {
x: 0.4, y: startY, w: contentW, h: contentH,
fontFace: "Calibri", valign: "top", paraSpaceBefore: 4, paraSpaceAfter: 2
});
// Footer
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.45, w: 10, h: 0.175, fill: { color: C.teal }, line: { color: C.teal } });
s.addText("Pedretti's Occupational Therapy – Hand Functions", {
x: 0.3, y: 5.45, w: 9.4, h: 0.175,
fontSize: 9, color: C.white, valign: "middle", fontFace: "Calibri"
});
return s;
}
function twoColSlide(pres, title, leftTitle, leftBullets, rightTitle, rightBullets) {
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.9, fill: { color: C.navy }, line: { color: C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: 0.9, fill: { color: C.amber }, line: { color: C.amber } });
s.addText(title, {
x: 0.35, y: 0, w: 9.4, h: 0.9, fontSize: 20, bold: true, color: C.white,
valign: "middle", fontFace: "Calibri", margin: 0
});
// Left column
s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 1.0, w: 4.4, h: 4.3, fill: { color: C.white }, line: { color: C.lightBlue, pt: 1 }, shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.08 } });
s.addText(leftTitle, { x: 0.4, y: 1.05, w: 4.2, h: 0.45, fontSize: 15, bold: true, color: C.teal, fontFace: "Calibri" });
const leftItems = leftBullets.map((b, i) => ({ text: b, options: { bullet: { indent: 10 }, fontSize: 14, color: C.darkText, breakLine: i !== leftBullets.length - 1 } }));
s.addText(leftItems, { x: 0.4, y: 1.55, w: 4.2, h: 3.6, fontFace: "Calibri", valign: "top", paraSpaceBefore: 3 });
// Right column
s.addShape(pres.shapes.RECTANGLE, { x: 5.3, y: 1.0, w: 4.4, h: 4.3, fill: { color: C.white }, line: { color: C.lightBlue, pt: 1 }, shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.08 } });
s.addText(rightTitle, { x: 5.4, y: 1.05, w: 4.2, h: 0.45, fontSize: 15, bold: true, color: C.amber, fontFace: "Calibri" });
const rightItems = rightBullets.map((b, i) => ({ text: b, options: { bullet: { indent: 10 }, fontSize: 14, color: C.darkText, breakLine: i !== rightBullets.length - 1 } }));
s.addText(rightItems, { x: 5.4, y: 1.55, w: 4.2, h: 3.6, fontFace: "Calibri", valign: "top", paraSpaceBefore: 3 });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.45, w: 10, h: 0.175, fill: { color: C.teal }, line: { color: C.teal } });
s.addText("Pedretti's Occupational Therapy – Hand Functions", { x: 0.3, y: 5.45, w: 9.4, h: 0.175, fontSize: 9, color: C.white, valign: "middle", fontFace: "Calibri" });
return s;
}
function tableSlide(pres, title, headers, rows) {
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.9, fill: { color: C.navy }, line: { color: C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: 0.9, fill: { color: C.amber }, line: { color: C.amber } });
s.addText(title, { x: 0.35, y: 0, w: 9.4, h: 0.9, fontSize: 20, bold: true, color: C.white, valign: "middle", fontFace: "Calibri", margin: 0 });
const colW = 9.4 / headers.length;
const tableRows = [
headers.map(h => ({
text: h,
options: { bold: true, color: C.white, fill: { color: C.teal }, fontSize: 13, align: "center", fontFace: "Calibri" }
})),
...rows.map((row, ri) =>
row.map(cell => ({
text: cell,
options: { color: C.darkText, fill: { color: ri % 2 === 0 ? C.white : C.lightBlue }, fontSize: 12, fontFace: "Calibri" }
}))
)
];
s.addTable(tableRows, {
x: 0.3, y: 1.0, w: 9.4, colW: headers.map(() => colW),
border: { pt: 0.5, color: "CBD5E0" },
rowH: 0.42
});
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.45, w: 10, h: 0.175, fill: { color: C.teal }, line: { color: C.teal } });
s.addText("Pedretti's Occupational Therapy – Hand Functions", { x: 0.3, y: 5.45, w: 9.4, h: 0.175, fontSize: 9, color: C.white, valign: "middle", fontFace: "Calibri" });
return s;
}
// ─── SLIDE 1: TITLE ──────────────────────────────────────────────
titleSlide(pres, "Hand Functions", "Anatomy, Kinesiology & Occupational Performance");
// ─── SLIDE 2: OUTLINE ────────────────────────────────────────────
contentSlide(pres, "Outline", [
"01 Overview of Hand Function",
"02 Bones & Joints of the Hand",
"03 Extrinsic Muscles – Flexors",
"04 Extrinsic Muscles – Extensors",
"05 Intrinsic Muscles – Thenar & Hypothenar",
"06 Intrinsic Muscles – Lumbricals & Interossei",
"07 Nerve Supply of the Hand",
"08 Functional Movements & Prehension Patterns",
"09 Grip & Pinch Types (Pedretti's Classification)",
"10 Clinical Correlates & OT Assessment",
]);
// ─── SLIDE 3: SECTION 1 ──────────────────────────────────────────
sectionHeader(pres, 1, "Overview of Hand Function", "The hand as a tool of occupational performance");
// ─── SLIDE 4: OVERVIEW ───────────────────────────────────────────
contentSlide(pres, "Overview of Hand Function", [
"The hand is the primary end-organ for manipulation and occupational performance",
"Two categories of hand use:",
" Prehensile – grasping, holding, pinching (power or precision)",
" Non-prehensile – pushing, pressing, tapping",
"Hand function depends on:",
" Intact musculoskeletal framework (bones, joints, tendons)",
" Normal neuromuscular control (peripheral nerve integrity)",
" Sensory feedback (touch, proprioception, pain, temperature)",
" Coordinated interplay of extrinsic and intrinsic muscles",
"OT perspective (Pedretti): hand function assessed within context of ADL, productivity, and leisure",
]);
// ─── SLIDE 5: BONES & JOINTS ─────────────────────────────────────
sectionHeader(pres, 2, "Bones & Joints of the Hand", "Structural framework enabling mobility and stability");
contentSlide(pres, "Bones & Joints of the Hand", [
"27 bones in the hand and wrist:",
" 8 carpal bones (proximal & distal rows)",
" 5 metacarpal bones (MC1–MC5)",
" 14 phalanges: 3 per finger (proximal, middle, distal), 2 for thumb",
"Key joints:",
" Radiocarpal (wrist) joint – flexion, extension, radial/ulnar deviation",
" Carpometacarpal (CMC) joints – saddle joint of thumb allows opposition",
" Metacarpophalangeal (MCP) joints – flexion, extension, abduction, adduction",
" Proximal interphalangeal (PIP) joints – hinge, flexion/extension only",
" Distal interphalangeal (DIP) joints – hinge, flexion/extension only",
]);
// ─── SLIDE 6: EXTRINSIC FLEXORS ──────────────────────────────────
sectionHeader(pres, 3, "Extrinsic Muscles – Flexors", "Origin in forearm, insertion in hand");
contentSlide(pres, "Extrinsic Flexor Tendons", [
"9 flexor tendons pass through the carpal tunnel:",
"Flexor Digitorum Superficialis (FDS) ×4:",
" Inserts: volar surface of middle phalanx (digits 2–5)",
" Action: Flexes PIP and MCP joints",
" Nerve: Median nerve (C7, C8, T1)",
"Flexor Digitorum Profundus (FDP) ×4:",
" Inserts: volar base of distal phalanx (digits 2–5)",
" Action: Primarily flexes DIP; also PIP and MCP",
" Nerve: Median (digits 2–3) / Ulnar (digits 4–5)",
"Flexor Pollicis Longus (FPL) ×1:",
" Inserts: distal phalanx of thumb",
" Action: Flexes thumb IP joint",
" Nerve: Anterior interosseous branch of median nerve",
]);
// ─── SLIDE 7: EXTRINSIC EXTENSORS ────────────────────────────────
sectionHeader(pres, 4, "Extrinsic Muscles – Extensors", "Nine extensors in 6 compartments under extensor retinaculum");
contentSlide(pres, "Extrinsic Extensor Tendons", [
"9 extensor tendons divide under extensor retinaculum into 6 compartments",
"Extensor Digitorum Communis (EDC): extends fingers at MCP, PIP, DIP",
" Adjacent tendons connected by juncturae tendinum",
" Laceration proximal to juncture may still allow extension via neighbor",
"Extensor mechanism in the finger divides into:",
" Central slip → inserts on middle phalanx → extends PIP joint",
" Two lateral bands → join lumbrical/interosseous tendons",
" Terminal tendon (lateral bands) → inserts on distal phalanx → extends DIP",
"Other extensors: EIP (index), EDM (little finger), EPL/EPB/APL (thumb)",
"Nerve supply: Radial nerve / Posterior interosseous nerve (PIN)",
]);
// ─── SLIDE 8: THENAR & HYPOTHENAR ────────────────────────────────
sectionHeader(pres, 5, "Intrinsic Muscles – Thenar & Hypothenar", "Both origin and insertion within the hand");
twoColSlide(pres,
"Thenar Muscles (Median Nerve C8, T1)",
"Thenar Muscles",
[
"Abductor pollicis brevis",
" → Thumb abduction",
" → Median nerve (C8, T1)",
"Opponens pollicis",
" → CMC opposition (thumb)",
" → Median nerve (C8, T1)",
"Flexor pollicis brevis",
" → Superficial head: Median nerve",
" → Deep head: Ulnar nerve",
"Adductor pollicis",
" → Thumb adduction & MCP flexion",
" → Ulnar nerve (C8, T1)",
],
"Hypothenar Muscles (Ulnar Nerve C8, T1)",
[
"Abductor digiti minimi",
" → Little finger abduction",
" → MCP flexion; PIP/DIP extension",
"Flexor digiti minimi brevis",
" → Little finger MCP flexion",
"Opponens digiti minimi",
" → Little finger opposition",
"All three innervated by Ulnar nerve",
"Origin: flexor retinaculum & carpal bones",
"Lesion → loss of little finger opposition",
]
);
// ─── SLIDE 9: LUMBRICALS & INTEROSSEI ────────────────────────────
sectionHeader(pres, 6, "Intrinsic Muscles – Lumbricals & Interossei", "The key to combined MCP flexion + IP extension");
twoColSlide(pres,
"Lumbricals & Interossei",
"Lumbrical Muscles (×4)",
[
"Origin: FDP tendons (radial side)",
"Insertion: Dorsal digital expansion",
"Action (intrinsic-plus position):",
" → Flex MCP joints (digits 2–5)",
" → Extend PIP and DIP joints",
"Innervation:",
" 1st & 2nd → Median nerve (C8, T1)",
" 3rd & 4th → Ulnar nerve (C8, T1)",
"OT significance: essential for writing, pinch",
],
"Interossei Muscles",
[
"Dorsal interossei (×4) – Ulnar nerve C8/T1",
" → Abduct fingers from midline (DAB)",
" → Also flex MCP + extend PIP/DIP",
"Palmar interossei (×3) – Ulnar nerve C8/T1",
" → Adduct fingers to midline (PAD)",
" → Also flex MCP + extend PIP/DIP",
"Midline reference = middle (3rd) finger",
"OT significance: precision grip, typing, ADLs",
]
);
// ─── SLIDE 10: NERVE SUPPLY ───────────────────────────────────────
sectionHeader(pres, 7, "Nerve Supply of the Hand", "Median, Ulnar, and Radial nerve territories");
tableSlide(pres, "Nerve Supply – Motor Functions",
["Nerve", "Key Structures Innervated", "Functional Deficit if Lost"],
[
["Median nerve\n(C6–T1)", "Thenar muscles (APB, OP, FPB-superficial)\n1st & 2nd lumbricals\nFDS, FDP (digits 2–3), FPL", "Loss of thumb opposition\n'Ape hand' deformity\nWeak precision pinch"],
["Ulnar nerve\n(C8–T1)", "All interossei (dorsal & palmar)\n3rd & 4th lumbricals, hypothenar\nFDP (digits 4–5), adductor pollicis", "Claw hand (ring & little)\nLoss of finger abduction/adduction\nWeak power grip"],
["Radial nerve\n(C5–C8)", "All wrist & finger extensors\nNo intrinsic hand muscles", "Wrist drop\nInability to extend fingers\nNo intrinsic hand loss"],
]
);
// ─── SLIDE 11: FUNCTIONAL MOVEMENTS ──────────────────────────────
sectionHeader(pres, 8, "Functional Movements & Prehension", "Movement analysis for occupational performance");
contentSlide(pres, "Functional Movements of the Hand", [
"Wrist positioning provides the stable base for all hand function:",
" Wrist extension (30°–35°) = optimal tenodesis position",
" Wrist flexion weakens grip force significantly",
"Key finger movements:",
" DIP flexion – FDP (AIN/median or ulnar nerve)",
" PIP flexion – FDS (median nerve)",
" MCP flexion + IP extension – Intrinsic muscles (combined)",
" Finger abduction – Dorsal interossei (ulnar nerve)",
" Finger adduction – Palmar interossei (ulnar nerve)",
"Thumb movements:",
" Palmar abduction, opposition, adduction – critical for pinch",
" Composite opposition (O-ring test) requires median + ulnar nerve integrity",
]);
// ─── SLIDE 12: GRIP & PINCH ───────────────────────────────────────
sectionHeader(pres, 9, "Grip & Pinch Patterns", "Pedretti's classification of prehension patterns");
contentSlide(pres, "Prehension Patterns (Pedretti's Classification)", [
"POWER GRIPS (large force; whole hand; extrinsic + intrinsic):",
" Cylindrical grip – holding a hammer, jar, glass",
" Spherical grip – holding a ball, orange",
" Hook grip – carrying a briefcase (FDP dominant)",
" Lateral (key) pinch – may be classified under power",
"PRECISION GRIPS (fine control; fingertips; intrinsic-dominant):",
" Tip-to-tip pinch (pulp pinch) – threading a needle",
" Lateral (key) pinch – turning a key, holding card",
" Three-jaw chuck (tripod pinch) – holding a pen",
"Tenodesis grip: passive functional grip for C6 spinal cord injury",
" Wrist extension → passive finger flexion (natural tenodesis)",
" Wrist flexion → fingers open",
]);
// ─── SLIDE 13: OT ASSESSMENT ─────────────────────────────────────
sectionHeader(pres, 10, "Clinical Correlates & OT Assessment", "Nerve injuries, deformities, and functional evaluation");
twoColSlide(pres,
"Hand Dysfunction – OT Assessment & Intervention",
"Common Clinical Deformities",
[
"Claw hand (ulnar nerve palsy)",
" → MCP hyperextension, PIP/DIP flexion",
" → Ring & little fingers worst affected",
"Ape hand (median nerve palsy)",
" → Thenar wasting, no opposition",
"Wrist drop (radial nerve palsy)",
" → Loss of wrist & finger extension",
"Boutonnière deformity",
" → Central slip rupture → PIP flexion + DIP extension",
"Mallet finger",
" → Terminal tendon avulsion → DIP drop",
"Swan-neck deformity",
" → PIP hyperextension + DIP flexion",
],
"OT Evaluation & Approach",
[
"Range of motion (goniometry) – MCP, PIP, DIP",
"Grip strength – Jamar dynamometer (5 positions)",
"Pinch strength – Pinch gauge (tip, lateral, tripod)",
"Sensory testing – Semmes-Weinstein monofilaments, 2PD",
"Functional assessments:",
" → DASH, COPM, Jebsen-Taylor Hand Function Test",
" → Box & Block Test, Purdue Pegboard",
"OT intervention strategies:",
" → Splinting for deformity prevention/correction",
" → Tendon gliding exercises (FDS/FDP differentiation)",
" → ADL retraining, adaptive equipment",
" → Sensory re-education, desensitization",
]
);
// ─── SLIDE 14: SUMMARY ───────────────────────────────────────────
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.4, h: 5.625, fill: { color: C.teal }, line: { color: C.teal } });
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: C.amber }, line: { color: C.amber } });
s.addText("Key Takeaways", { x: 0.7, y: 0.5, w: 8.6, h: 0.7, fontSize: 28, bold: true, color: C.amber, fontFace: "Calibri" });
const pts = [
"Hand function = extrinsic muscle power + intrinsic muscle precision + intact sensation",
"Intrinsic muscles (lumbricals & interossei) enable the intrinsic-plus position: MCP flexion + IP extension — key for fine motor tasks",
"Median nerve → opposition and precision pinch; Ulnar nerve → grip strength and finger abduction/adduction; Radial nerve → extension",
"Pedretti classifies prehension into power grips (cylindrical, spherical, hook) and precision grips (tip, lateral, three-jaw chuck)",
"OT assessment must address ROM, strength, sensation, and performance in meaningful occupations",
];
const items = pts.map((p, i) => ({
text: p,
options: { bullet: { indent: 14 }, fontSize: 15, color: C.white, breakLine: i !== pts.length - 1 }
}));
s.addText(items, { x: 0.7, y: 1.35, w: 8.8, h: 3.6, fontFace: "Calibri", valign: "top", paraSpaceBefore: 10 });
s.addText("Reference: Pedretti's Occupational Therapy – Practice Skills for Physical Dysfunction, 7th ed.", {
x: 0.7, y: 5.1, w: 8.6, h: 0.4, fontSize: 11, color: C.navy, fontFace: "Calibri", italic: true
});
}
// ─── WRITE FILE ───────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/hand-functions-ppt/Hand_Functions_Pedretti_OT.pptx" })
.then(() => console.log("✅ PPTX created successfully"))
.catch(e => { console.error("❌ Error:", e); process.exit(1); });