Explain range of motion exercise in detail with proper reason and their explanation in hinglish with example
range of motion exercises types passive active assisted explanation physiotherapy
Simple Definition: ROM exercise = joint ko uski maximum movement tak baar baar carefully move karna.
| Karan | Explanation |
|---|---|
| Joint stiffness | Agar joint zyada time tak rest mein rahe (injury/surgery ke baad), toh wo stiff ho jaata hai |
| Muscle atrophy | Use na karne par muscles weak aur chhoti ho jaati hain |
| Blood circulation | ROM exercise se blood flow better hota hai joint mein |
| Contracture prevention | Muscles/tendons shorten ho sakti hain - ROM unhe stretch rakhin |
| Pain reduction | Synovial fluid distribute hota hai joint mein, lubrication badhti hai |
| Neurological conditions | Paralysis/stroke ke baad joints ko maintain karna zaroori hai |
Ramu bhai ko stroke aaya, unka left hand bilkul nahi hil raha. Physiotherapist unke haath ko pakad ke dhire dhire shoulder se upar uthata hai, phir neeche laata hai - ye Passive ROM hai. Ramu bhai ko kuch karne ki zaroorat nahi.
Geeta ji ka shoulder operation hua. Ab wo apna haath 60 degree tak hi utha sakti hain. Physiotherapist ek pulley system lagate hain - Geeta ji dono haath ek rope se bandhte hain. Theek haath neeche kheencha toh operation wala haath upar chala jaata hai. Geeta ji ka effort kam lagta hai, lekin movement poori hoti hai - ye AAROM hai.
Suresh ji ghar par apni neck exercises karte hain - sar ko aage, peeche, left, right move karte hain khud se. Koi nahi pakadta unhe. Ye poora AROM hai.
| Exercise | Movement | Normal Range |
|---|---|---|
| Flexion | Chin chest ki taraf | 0-45Β° |
| Extension | Sar peeche jhukana | 0-45Β° |
| Lateral Flexion | Sar side mein jhukana | 0-45Β° |
| Rotation | Left-right dekhna | 0-60Β° |
| Exercise | Movement | Normal Range |
|---|---|---|
| Flexion | Haath seedha aage upar | 0-180Β° |
| Extension | Haath peeche le jaana | 0-60Β° |
| Abduction | Haath side mein upar | 0-180Β° |
| Internal/External Rotation | Haath ko andar/bahar ghoomana | 0-90Β° each |
| Exercise | Movement | Normal Range |
|---|---|---|
| Flexion | Ghutna modna | 0-135Β° |
| Extension | Ghutna seedha karna | 135Β°-0Β° |
| Exercise | Movement | Normal Range |
|---|---|---|
| Dorsiflexion | Panjaa upar kheencho | 0-20Β° |
| Plantarflexion | Panjaa neeche karo (pointed) | 0-50Β° |
| Inversion | Panjaa andar | 0-35Β° |
| Eversion | Panjaa bahar | 0-15Β° |
| ROM Exercise | Stretching |
|---|---|
| Joint ko move karna | Muscle/tendon ko hold karke lengthen karna |
| Movement-based | Hold-based (15-30 sec) |
| Repetitive cycles | Static position |
| Joint health ke liye | Flexibility ke liye |
| Type | Kaun karta hai | Kab use hota hai | Example |
|---|---|---|---|
| Passive (PROM) | Therapist/caregiver | Paralysis, ICU, post-surgery | Nurse paralyzed patient ka haath hilati hai |
| Active-Assisted (AAROM) | Patient + help | Weak muscles, early recovery | Pulley se shoulder exercise |
| Active (AROM) | Patient khud | Recovery phase, normal exercise | Neck ghoomana, pair uthana |
Yaad rakho: ROM exercises ka goal hai - "Move it or Lose it!" Joint ko regularly move karo varna wo stiff aur useless ho jaata hai. Physiotherapist ki guidance mein karein especially agar koi injury ya surgery hui ho. - Miller's Review of Orthopaedics; Campbell's Operative Orthopaedics 15th Ed
Benifit s
benefits of range of motion exercises physiotherapy joint health detailed
Ramesh ji ko Rheumatoid Arthritis hai. Subah uthte hi unki ungliyan bilkul move nahi hoti. Doctor ne kaha - "Subah garam paani mein haath daalo aur ungliyan kholo-bando 10 baar." Ye simple ROM exercise se unki morning stiffness 30% tak kam hui!
ICU mein bhrti Seema ko coma se nikle 3 hafte ho gaye. Nurses roz uske pair ka ghutna chest tak laate hain aur wapis seedha karte hain (Passive ROM). Is wajah se Seema ke ghutne ka contracture nahi bana - jab wo theek hui toh seedha chal payi.
Hospital mein admit Vijay bhai ke pair mein swelling aa gayi thi. Nurse ne unhe ankle pumps karne ko kaha - paon ka panja upar neeche 20 baar. Ek ghante baad swelling clearly kam ho gayi thi - circulation improve hua tha!
Doctor ne surgery ke next day hi Mohan ko ghutna modne aur ankle ghoomane ke exercises bataye. Ye isliye ki blood clot na bane - ye ROM exercise DVT se zindagi bachati hai literally!
Priya ka leg fracture hua, plaster mein 6 hafte tha. Doctor ne hip aur ankle ke ROM exercises jaari rakhe. Plaster khulne ke baad uski thigh muscles utni kamzor nahi thi jitni usually hoti hain - kyunki circulation aur nerve signals maintain hue the.
Frozen shoulder ke patient Ko roz roz pendulum exercises karwaye jaate hain. Pehle baar dard hota hai, lekin 2 hafte baad patients khud kehte hain - "Dard 50% kam ho gaya!" - kyunki ROM se capsule stretch hua aur pain cycle break hui.
Sham ko office mein 8-9 ghante baithte hain. Doctor ne kaha - "Har 1 ghante mein uthke 5 minute knee aur hip ROM karo." Kyunki lagaataar baithne se knee cartilage ko poshan nahi milta!
Stroke ke baad Kiran bhabhi ka daaya haath nahi hilta tha. Physiotherapist roz unke haath ko move karta - haath upar neeche, left right. 3 mahine baad Kiran ne khud apna haath uthana shuru kiya - neuroplasticity ka kamal!
Bedridden patient jo hafte bhar se apna haath tak nahi hila pa raha tha - jab pehli baar khud se haath utha paaya (AROM), uski aankhon mein aansu aa gaye - ye psychological win bahut badi hoti hai recovery mein!
Hip replacement ke baad Rita ki ROM exercises se 6 hafte mein wo khud joote pahnane lagin - jo unka main goal tha. Functional independence = quality of life mein improvement!
| Benefit | Kis Ko Zyada Faayda | Kitne Time Mein Dikhe |
|---|---|---|
| Stiffness kam | Arthritis patients | 1-2 weeks |
| Contracture prevention | Bedridden/stroke | Ongoing - daily zaroori |
| Circulation better | Surgery post-op | Turant (same day) |
| DVT prevention | Bed rest patients | Preventive - immediate |
| Pain reduction | Chronic pain | 2-4 weeks |
| Muscle maintenance | Fracture/cast | Throughout immobilization |
| Cartilage health | Office workers, elderly | Long-term benefit |
| Neurological recovery | Stroke/paralysis | 3-6 months |
| Mental health | All patients | 2-3 weeks |
| Functional independence | Elderly, post-surgery | 4-8 weeks |
Bottom Line: ROM exercises ek aisi "free medicine" hai jiske koi side effects nahi aur benefits bahut saare hain - chahe young ho ya old, injured ho ya healthy, har kisi ke liye ek na ek benefit zaroor milega! Sahi technique se, sahi frequency mein karo - aur results khud dikhenge. π
Disadvantages and limitations
disadvantages limitations risks range of motion exercises physiotherapy contraindications
https://nursingcecentral.com/lessons/range-of-motion-passiveβ¦
Ramesh ke bete ne sochah "Papa ka haath zyada stretch karoonga toh jaldi theek hoga." Usne bahut force se shoulder exercise ki - result: rotator cuff tear ho gayi jo pehle nahi thi! Matlab - achha karne ki koshish mein zyada nuksaan ho gaya.
TBI (brain injury) ke baad Vikram ko well-meaning nurse ne aggressive hip stretching karaaya. 3 hafte baad X-ray mein hip ke paas extra bone dikh raha tha - HO ho gaya. Ab surgery zaroori thi!
Warning: Spinal cord injury ya brain injury ke patients mein PROM aggressive nahi karna chahiye - ye ek serious risk hai.
Dance student Priya naturally bahut flexible thi. Coach ne bola "Aur ROM exercises karo." Excessive stretching se uski shoulder joint recurrently dislocate hone lagi - kyunki ligaments overstretched ho gayi thi!
Sunita ko Gout attack aaya - angutha laal, sujan, aur unbearable dard. Kisi ne bola "Exercise karo theek ho jaega." Unhone ankle ROM ki - result: dard 10 guna badh gaya aur clinic emergency mein jaana pada.
Rule: Acute inflammation = REST first, phir ROM - kabhi bhi active flare mein nahi!
Operation ke 2nd day hi nurse ne ghutne ki ROM shuru kar di - theek tha. Lekin stitches ke upar directly kheeencha - 3 stitches toot gaye aur wound open ho gaya!
Reena ka hip replacement hua. Dusre din hi aggressive ROM karaaya gaya. Itna dard tha ki unhone decide kiya - "Main koi exercise nahi karoonga." Yahi refusal recovery mein sabse bada obstacle bana.
2 mahine se Asha ki behen roz unka haath hilati rahi (Passive ROM). Joint stiff nahi hua - achhi baat. Lekin jab Asha ne khud haath uthane ki koshish ki - muscles itni weak thi ki haath uthta hi nahi tha! Passive ROM ne strength nahi banaayi.
District hospital mein 40 ICU patients hain, 2 physiotherapists hain. Sabko daily ROM karna physically impossible hai - kuch patients skip ho jaate hain aur contracture develop kar lete hain.
78 saal ki Dadi ji ka severe osteoporosis tha. Nurse ne "gently" arm ROM kiya - lekin humerus (arm bone) crack ho gayi - kyunki bone density itni kam thi ki normal movement bhi tolerate nahi hui.
2 saal purana Frozen Shoulder - ROM exercises se 20-30% improvement hua. Lekin full motion wapas nahi aayi. Arthroscopic release (surgery) zaroori padi.
Severe knee osteoarthritis - jahaan cartilage almost gone hai aur bone on bone touching hai - ROM exercises se temporary relief toh milta hai lekin structural limitation exercise se theek nahi hoga.
Stroke ke baad Mohan ke haath ki muscles spastic hain - muthi band ho jaati hai apne aap. Physiotherapist haath kholke exercises karta hai - ek ghante mein haath wapas band. ROM useful hai lekin spasticity cure nahi karta.
Paraplegic Suresh ke parents roz 2 baar lower limb ROM karte hain - 5 saal se. Ab parents ki umar ho gayi, unke apne joints mein dard hai - caregiver ka emotional aur physical burden bahut zyada hai.
| Condition | Kyun ROM Nahi |
|---|---|
| Unstabilized fracture | Bone aur displace ho sakti hai |
| Fresh dislocation | Joint aur damage ho sakta hai |
| DVT (blood clot) | Clot dislodge ho ke lung mein ja sakta hai |
| Active infection (Septic arthritis) | Infection spread ho sakta hai |
| Severe osteoporosis | Fracture risk |
| Disadvantage/Limitation | Risk Level | Kab Hota Hai |
|---|---|---|
| Galat technique - injury | β οΈ High | Untrained log kare |
| Heterotopic ossification | β οΈβ οΈ Very High | TBI/SCI patients mein aggressive ROM |
| Hypermobile joint damage | β οΈ Medium | Already flexible joints |
| Acute inflammation worsening | β οΈ High | Gout/RA flare mein |
| Wound damage | β οΈ High | Fresh surgery/wounds |
| Pain exacerbation | β οΈ Medium | Too early/too aggressive |
| No strength gain (PROM) | βΉοΈ Limitation | Always - PROM se strength nahi |
| Osteoporosis fracture | β οΈβ οΈ Very High | Elderly brittle bones |
| Scar tissue - limited effect | βΉοΈ Limitation | Old established fibrosis |
| Spasticity - temporary only | βΉοΈ Limitation | Neuro patients |
| Caregiver burden | βΉοΈ Limitation | Long-term dependent patients |
Conclusion: ROM exercises ek powerful tool hai - lekin right hands mein, right time pe, right patient ke liye. Galat use karne par fayda nahi balki nuksaan zyada. Isliye hamesha trained physiotherapist ki guidance mein karo - khud se aggressive mat bano! - Nursing CE Central; Physio-Pedia
Make a PPT presentation on ROM exercises with visual demonstrations
mkdir -p /home/daytona/workspace/rom-ppt && ls /home/daytona/workspace/
range of motion exercise demonstration images free physiotherapy neck shoulder knee ankle
~/rom-ppt/create_rom_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE";
pres.title = "Range of Motion Exercises";
pres.author = "Physiotherapy Education";
// βββ COLOR PALETTE βββββββββββββββββββββββββββββββββββββββββββββββ
const C = {
navy: "0A2342", // dominant dark bg
teal: "00B4D8", // primary accent
tealDark: "0077A8",
tealLight: "ADE8F4",
white: "FFFFFF",
offWhite: "F0F8FF",
amber: "F4A261",
red: "E63946",
green: "2DC653",
gray: "8EAABF",
lightGray: "D8E9F0",
darkText: "1A2A3A",
};
// βββ HELPER: Dark slide background βββββββββββββββββββββββββββββββ
function darkBg(slide) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.navy }, line: { color: C.navy }
});
}
// βββ HELPER: Light slide background ββββββββββββββββββββββββββββββ
function lightBg(slide) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: "100%", h: "100%",
fill: { color: C.offWhite }, line: { color: C.offWhite }
});
}
// βββ HELPER: Teal accent bar (top) βββββββββββββββββββββββββββββββ
function topBar(slide, h = 0.08) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: "100%", h,
fill: { color: C.teal }, line: { color: C.teal }
});
}
// βββ HELPER: Bottom footer bar βββββββββββββββββββββββββββββββββββ
function footerBar(slide, text = "Range of Motion Exercises | Physiotherapy Education") {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 7.3, w: "100%", h: 0.2,
fill: { color: C.tealDark }, line: { color: C.tealDark }
});
slide.addText(text, {
x: 0, y: 7.3, w: "100%", h: 0.2,
fontSize: 8, color: C.white, align: "center", valign: "middle", margin: 0
});
}
// βββ HELPER: Card box ββββββββββββββββββββββββββββββββββββββββββββ
function card(slide, x, y, w, h, fillColor = C.white, radius = 0.1) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h,
fill: { color: fillColor },
line: { color: fillColor },
rectRadius: radius,
shadow: { type: "outer", color: "000000", blur: 8, offset: 3, angle: 135, opacity: 0.12 }
});
}
// βββ HELPER: Icon circle βββββββββββββββββββββββββββββββββββββββββ
function iconCircle(slide, x, y, r, bgColor, emoji, fontSize = 22) {
slide.addShape(pres.shapes.OVAL, {
x, y, w: r, h: r,
fill: { color: bgColor }, line: { color: bgColor }
});
slide.addText(emoji, {
x, y, w: r, h: r,
fontSize, align: "center", valign: "middle", margin: 0
});
}
// βββ HELPER: Section heading pill ββββββββββββββββββββββββββββββββ
function pill(slide, x, y, w, text, bg = C.teal) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h: 0.38,
fill: { color: bg }, line: { color: bg }, rectRadius: 0.19
});
slide.addText(text, {
x, y, w, h: 0.38,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", margin: 0
});
}
// βββ HELPER: Joint range indicator bar βββββββββββββββββββββββββββ
function rangeBar(slide, x, y, w, pct, label, degrees) {
// Background bar
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h: 0.28, fill: { color: C.lightGray }, line: { color: C.lightGray }, rectRadius: 0.14
});
// Fill bar
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: w * pct, h: 0.28, fill: { color: C.teal }, line: { color: C.teal }, rectRadius: 0.14
});
slide.addText(label, { x, y: y + 0.3, w: w * 0.65, h: 0.25, fontSize: 9, color: C.darkText });
slide.addText(degrees, { x: x + w * 0.65, y: y + 0.3, w: w * 0.35, h: 0.25, fontSize: 9, color: C.tealDark, bold: true, align: "right" });
}
// βββ HELPER: Step box ββββββββββββββββββββββββββββββββββββββββββββ
function stepBox(slide, x, y, num, title, body, bg = C.teal) {
card(slide, x, y, 2.7, 1.5, C.white);
slide.addShape(pres.shapes.OVAL, { x: x + 0.1, y: y + 0.1, w: 0.42, h: 0.42, fill: { color: bg }, line: { color: bg } });
slide.addText(String(num), { x: x + 0.1, y: y + 0.1, w: 0.42, h: 0.42, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
slide.addText(title, { x: x + 0.6, y: y + 0.12, w: 2.0, h: 0.38, fontSize: 11, bold: true, color: C.navy, valign: "middle" });
slide.addText(body, { x: x + 0.15, y: y + 0.6, w: 2.45, h: 0.8, fontSize: 9.5, color: C.darkText, wrap: true });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 1: TITLE SLIDE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
// Teal diagonal accent
sl.addShape(pres.shapes.RECTANGLE, {
x: 8.5, y: 0, w: 4.8, h: 7.5,
fill: { color: C.teal, transparency: 88 }, line: { color: C.teal, transparency: 88 }
});
// Big teal bar left
sl.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 0.18, h: "100%",
fill: { color: C.teal }, line: { color: C.teal }
});
// Subtitle pill
pill(sl, 0.5, 1.0, 3.2, "PHYSIOTHERAPY EDUCATION", C.teal);
// Title
sl.addText("Range of Motion", {
x: 0.5, y: 1.55, w: 8.5, h: 1.2,
fontSize: 52, bold: true, color: C.white, fontFace: "Calibri"
});
sl.addText("Exercises", {
x: 0.5, y: 2.7, w: 8.5, h: 1.0,
fontSize: 52, bold: true, color: C.teal, fontFace: "Calibri"
});
// Subtitle line
sl.addShape(pres.shapes.RECTANGLE, {
x: 0.5, y: 3.8, w: 4.5, h: 0.05,
fill: { color: C.tealLight }, line: { color: C.tealLight }
});
sl.addText("Joint Flexibility β’ Mobility β’ Rehabilitation", {
x: 0.5, y: 3.95, w: 8, h: 0.5,
fontSize: 16, color: C.tealLight, italic: true
});
// Topic icons row
const topics = [
{ icon: "π¦΄", label: "Joint Health" },
{ icon: "πͺ", label: "Strengthening" },
{ icon: "π©Ί", label: "Rehabilitation" },
{ icon: "π§", label: "Flexibility" },
];
topics.forEach((t, i) => {
const bx = 0.5 + i * 2.0;
iconCircle(sl, bx, 4.7, 0.72, C.tealDark, t.icon, 22);
sl.addText(t.label, { x: bx - 0.1, y: 5.48, w: 1.0, h: 0.3, fontSize: 9, color: C.gray, align: "center" });
});
// Bottom info
sl.addText("Presented by: Physiotherapy Department | June 2026", {
x: 0.5, y: 6.9, w: 10, h: 0.35,
fontSize: 10, color: C.gray, italic: true
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 2: WHAT IS ROM?
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
sl.addText("What is Range of Motion (ROM)?", {
x: 0.4, y: 0.2, w: 12, h: 0.65,
fontSize: 28, bold: true, color: C.navy, fontFace: "Calibri"
});
// Definition card
card(sl, 0.4, 1.0, 12.5, 1.2, C.navy);
sl.addText("π Definition:", {
x: 0.7, y: 1.05, w: 3, h: 0.4,
fontSize: 13, bold: true, color: C.teal, margin: 0
});
sl.addText("ROM is the full movement potential of a joint β the arc through which it can move without pain or restriction.", {
x: 0.7, y: 1.45, w: 12, h: 0.6,
fontSize: 14, color: C.white, italic: true
});
// 4 factor cards
const facts = [
{ icon: "π¦·", color: C.tealDark, title: "Joint Type", body: "Ball-and-socket (shoulder, hip) have more ROM than hinge joints (knee, elbow)" },
{ icon: "πͺ", color: "1B4D3E", title: "Muscle Flexibility", body: "Tight muscles limit how far the joint can move in any direction" },
{ icon: "π", color: "7B2D8B", title: "Ligaments & Tendons", body: "These connective tissues act as natural brakes on joint movement" },
{ icon: "β οΈ", color: "B5451B", title: "Age & Disease", body: "Arthritis, injury & aging reduce available ROM progressively" },
];
facts.forEach((f, i) => {
const cx = 0.4 + i * 3.18;
card(sl, cx, 2.4, 3.0, 2.4, C.white);
iconCircle(sl, cx + 1.14, 2.5, 0.72, f.color, f.icon, 20);
sl.addText(f.title, { x: cx + 0.1, y: 3.28, w: 2.8, h: 0.4, fontSize: 12, bold: true, color: C.navy, align: "center" });
sl.addText(f.body, { x: cx + 0.15, y: 3.72, w: 2.7, h: 0.9, fontSize: 9.5, color: C.darkText, align: "center", wrap: true });
});
// Measurement note
card(sl, 0.4, 5.0, 12.5, 0.85, C.tealDark);
sl.addText("π Measurement:", { x: 0.7, y: 5.05, w: 3, h: 0.35, fontSize: 11, bold: true, color: C.tealLight, margin: 0 });
sl.addText("ROM is measured using a GONIOMETER β a protractor-like device placed at the joint axis. Normal values are compared to the opposite side.", {
x: 0.7, y: 5.38, w: 12, h: 0.38, fontSize: 10.5, color: C.white
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 3: 3 TYPES OF ROM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
topBar(sl);
sl.addText("3 Types of ROM Exercises", {
x: 0.4, y: 0.15, w: 12, h: 0.65,
fontSize: 28, bold: true, color: C.white, fontFace: "Calibri"
});
// Type cards
const types = [
{
abbr: "PROM",
full: "Passive ROM",
color: "1D5F8A",
accent: C.teal,
icon: "π",
who: "Therapist / Caregiver",
when: "Paralysis, ICU, immediately post-op",
how: "Therapist moves the limb. Patient uses ZERO muscle effort.",
example: "Nurse moves paralyzed patient's knee from 0Β° to 90Β° and back",
steps: ["Support the limb fully", "Move slowly & gently", "Stay within pain-free range", "Hold 5 sec at end range", "Repeat 5β10 times"]
},
{
abbr: "AAROM",
full: "Active-Assisted ROM",
color: "1B4D3E",
accent: C.amber,
icon: "π€",
who: "Patient + Helper / Device",
when: "Weak muscles, early recovery phase",
how: "Patient tries to move, helper completes the arc.",
example: "Shoulder pulley: good arm pulls rope to lift operated arm",
steps: ["Patient initiates movement", "Therapist supports & assists", "Pulley / stick may be used", "Increase patient effort daily", "Track progress weekly"]
},
{
abbr: "AROM",
full: "Active ROM",
color: "3D1A60",
accent: C.green,
icon: "π",
who: "Patient Independently",
when: "Advanced recovery, daily maintenance",
how: "Patient uses own muscle power β no assistance needed.",
example: "Turning neck left & right, lifting arm above head",
steps: ["Move slowly & controlled", "Reach full available range", "No bouncing or jerking", "Breathe through movement", "2β3 sets of 10 reps/day"]
},
];
types.forEach((t, i) => {
const cx = 0.3 + i * 4.35;
// Main card
slide_card(sl, cx, 0.95, 4.1, 6.1, t.color);
// Abbr pill
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 0.15, y: 1.0, w: 1.2, h: 0.45,
fill: { color: t.accent }, line: { color: t.accent }, rectRadius: 0.2
});
sl.addText(t.abbr, { x: cx + 0.15, y: 1.0, w: 1.2, h: 0.45, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
// Icon
sl.addText(t.icon, { x: cx + 1.5, y: 0.98, w: 0.7, h: 0.5, fontSize: 24, align: "center" });
// Full name
sl.addText(t.full, { x: cx + 0.15, y: 1.52, w: 3.8, h: 0.42, fontSize: 14, bold: true, color: C.white });
// Who / When
sl.addText("π€ " + t.who, { x: cx + 0.15, y: 2.0, w: 3.8, h: 0.32, fontSize: 9.5, color: t.accent });
sl.addText("π " + t.when, { x: cx + 0.15, y: 2.32, w: 3.8, h: 0.32, fontSize: 9, color: C.lightGray, wrap: true });
// Separator
sl.addShape(pres.shapes.RECTANGLE, { x: cx + 0.15, y: 2.7, w: 3.7, h: 0.03, fill: { color: t.accent }, line: { color: t.accent } });
// How
sl.addText("How:", { x: cx + 0.15, y: 2.78, w: 1, h: 0.28, fontSize: 9, bold: true, color: t.accent });
sl.addText(t.how, { x: cx + 0.15, y: 3.06, w: 3.8, h: 0.52, fontSize: 9.5, color: C.white, wrap: true });
// Example
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 0.15, y: 3.62, w: 3.8, h: 0.6,
fill: { color: t.accent, transparency: 75 }, line: { color: t.accent, transparency: 50 }, rectRadius: 0.08
});
sl.addText("Example: " + t.example, { x: cx + 0.25, y: 3.66, w: 3.6, h: 0.52, fontSize: 9, color: C.white, italic: true, wrap: true });
// Steps
sl.addText("Steps:", { x: cx + 0.15, y: 4.3, w: 1, h: 0.28, fontSize: 9, bold: true, color: t.accent });
t.steps.forEach((s, si) => {
sl.addShape(pres.shapes.OVAL, { x: cx + 0.15, y: 4.62 + si * 0.3, w: 0.18, h: 0.18, fill: { color: t.accent }, line: { color: t.accent } });
sl.addText(s, { x: cx + 0.4, y: 4.58 + si * 0.3, w: 3.6, h: 0.28, fontSize: 8.5, color: C.lightGray });
});
});
footerBar(sl);
}
function slide_card(slide, x, y, w, h, fillColor) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h,
fill: { color: fillColor },
line: { color: fillColor },
rectRadius: 0.15,
shadow: { type: "outer", color: "000000", blur: 10, offset: 4, angle: 135, opacity: 0.25 }
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 4: NECK ROM EXERCISES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 2.2, "π¦· NECK EXERCISES", C.tealDark);
sl.addText("Cervical Spine Range of Motion", {
x: 2.8, y: 0.15, w: 10, h: 0.65,
fontSize: 26, bold: true, color: C.navy
});
// Range bars
const ranges = [
{ label: "Flexion (Chin β Chest)", deg: "0β45Β°", pct: 0.5 },
{ label: "Extension (Head Back)", deg: "0β45Β°", pct: 0.5 },
{ label: "Lateral Flexion (L/R)", deg: "0β45Β°", pct: 0.5 },
{ label: "Rotation (Left/Right)", deg: "0β60Β°", pct: 0.67 },
];
ranges.forEach((r, i) => {
rangeBar(sl, 0.5, 1.05 + i * 0.72, 4.0, r.pct, r.label, r.deg);
});
// Exercise cards
const exercises = [
{ icon: "β¬οΈ", title: "Flexion", steps: "Slowly bring chin to chest. Hold 5 sec. Return to neutral. Repeat 10x.", warning: "" },
{ icon: "β¬οΈ", title: "Extension", steps: "Gently tilt head back, looking at ceiling. Hold 5 sec. Don't strain. Repeat 10x.", warning: "β οΈ Avoid in cervical spondylosis" },
{ icon: "βοΈ", title: "Lateral Flexion", steps: "Tilt ear towards shoulder (don't raise shoulder). Hold 5 sec each side. Repeat 10x.", warning: "" },
{ icon: "π", title: "Rotation", steps: "Turn head to look over shoulder β left then right. Hold 5 sec. Repeat 10x.", warning: "" },
];
exercises.forEach((e, i) => {
const cx = 4.8 + (i % 2) * 4.2;
const cy = 1.05 + Math.floor(i / 2) * 2.0;
card(sl, cx, cy, 4.0, 1.75, C.white);
sl.addText(e.icon, { x: cx + 0.15, y: cy + 0.1, w: 0.6, h: 0.55, fontSize: 24, align: "center" });
sl.addText(e.title, { x: cx + 0.8, y: cy + 0.12, w: 3.0, h: 0.4, fontSize: 13, bold: true, color: C.navy });
sl.addText(e.steps, { x: cx + 0.15, y: cy + 0.62, w: 3.7, h: 0.75, fontSize: 9.5, color: C.darkText, wrap: true });
if (e.warning) {
sl.addText(e.warning, { x: cx + 0.15, y: cy + 1.42, w: 3.7, h: 0.25, fontSize: 8.5, color: C.red, bold: true });
}
});
// Key tip
card(sl, 0.4, 5.25, 12.8, 0.72, C.navy);
sl.addText("π‘ Key Tip:", { x: 0.7, y: 5.3, w: 1.5, h: 0.35, fontSize: 11, bold: true, color: C.teal, margin: 0 });
sl.addText("Always perform neck ROM in SITTING position. Never force movement. If dizziness occurs, STOP immediately β may indicate vertebral artery involvement.", {
x: 0.7, y: 5.63, w: 12.2, h: 0.28, fontSize: 10, color: C.white
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 5: SHOULDER ROM EXERCISES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 2.4, "πͺ SHOULDER EXERCISES", C.amber);
sl.addText("Shoulder Joint Range of Motion", {
x: 3.0, y: 0.15, w: 10, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
// Shoulder movements grid
const movements = [
{ icon: "β¬οΈ", name: "Flexion", range: "0β180Β°", color: "0A4F7A", desc: "Raise arm straight forward & overhead. Stand/sit straight, slow movement.", tip: "Keep elbow straight" },
{ icon: "β¬οΈ", name: "Extension", range: "0β60Β°", color: "1B4D3E", desc: "Move arm straight backward behind body. Keep trunk stable.", tip: "Don't rotate torso" },
{ icon: "βοΈ", name: "Abduction", range: "0β180Β°", color: "4A235A", desc: "Raise arm out to the side, up to ear level. Palm faces down.", tip: "Elbow stays straight" },
{ icon: "βοΈ", name: "Adduction", range: "0β30Β°", color: "5C2E00", desc: "Bring arm across body toward midline from abducted position.", tip: "Cross body gently" },
{ icon: "π", name: "Int. Rotation", range: "0β90Β°", color: "003333", desc: "Elbow at 90Β°, bring forearm toward abdomen (palm faces body).", tip: "Keep elbow at side" },
{ icon: "π", name: "Ext. Rotation", range: "0β90Β°", color: "1A3A00", desc: "Elbow at 90Β°, move forearm away from body (palm faces out).", tip: "Supported if painful" },
];
movements.forEach((m, i) => {
const cx = 0.4 + (i % 3) * 4.3;
const cy = 1.0 + Math.floor(i / 3) * 2.3;
slide_card(sl, cx, cy, 4.1, 2.1, m.color);
sl.addText(m.icon, { x: cx + 0.12, y: cy + 0.1, w: 0.65, h: 0.6, fontSize: 26, align: "center" });
sl.addText(m.name, { x: cx + 0.85, y: cy + 0.12, w: 2.5, h: 0.38, fontSize: 13, bold: true, color: C.white });
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 3.2, y: cy + 0.1, w: 0.75, h: 0.35,
fill: { color: C.amber }, line: { color: C.amber }, rectRadius: 0.1
});
sl.addText(m.range, { x: cx + 3.2, y: cy + 0.1, w: 0.75, h: 0.35, fontSize: 8.5, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0 });
sl.addText(m.desc, { x: cx + 0.15, y: cy + 0.62, w: 3.8, h: 0.85, fontSize: 9, color: C.lightGray, wrap: true });
sl.addShape(pres.shapes.RECTANGLE, { x: cx + 0.15, y: cy + 1.52, w: 3.8, h: 0.03, fill: { color: C.amber }, line: { color: C.amber } });
sl.addText("β " + m.tip, { x: cx + 0.15, y: cy + 1.6, w: 3.8, h: 0.35, fontSize: 8.5, color: C.amber, italic: true });
});
// Special exercise box
card(sl, 0.4, 5.65, 12.8, 0.88, "0D3D5C");
sl.addText("β Pendulum Exercise (Codman's):", { x: 0.7, y: 5.7, w: 4, h: 0.35, fontSize: 11, bold: true, color: C.teal, margin: 0 });
sl.addText("Lean forward with arm hanging freely. Gently swing arm in small circles (clockwise + anti-clockwise). Gravity provides natural traction. Best for: Frozen shoulder, post-fracture rehab. Sets: 2Γ20 circles, twice daily.", {
x: 0.7, y: 6.02, w: 12.2, h: 0.4, fontSize: 9.5, color: C.white, wrap: true
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 6: ELBOW, WRIST & HAND ROM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 3.2, "β ELBOW Β· WRIST Β· HAND", C.tealDark);
sl.addText("Upper Limb Distal ROM Exercises", {
x: 3.8, y: 0.15, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.navy
});
// ELBOW section
sl.addText("ELBOW", { x: 0.4, y: 0.9, w: 2, h: 0.38, fontSize: 12, bold: true, color: C.tealDark });
sl.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 1.28, w: 5.8, h: 0.03, fill: { color: C.tealDark }, line: { color: C.tealDark } });
const elbowEx = [
{ title: "Flexion / Extension", range: "0β145Β°", icon: "βοΈ", desc: "Bend elbow fully (fist to shoulder), then straighten completely. 10 reps." },
{ title: "Pronation / Supination", range: "0β90Β° each", icon: "π", desc: "Elbow at 90Β°. Rotate forearm: palm down (pronate), palm up (supinate). 10 reps." },
];
elbowEx.forEach((e, i) => {
card(sl, 0.4 + i * 3.0, 1.35, 2.8, 1.55, C.white);
sl.addText(e.icon, { x: 0.4 + i * 3.0 + 0.1, y: 1.4, w: 0.6, h: 0.55, fontSize: 22, align: "center" });
sl.addText(e.title, { x: 0.4 + i * 3.0 + 0.75, y: 1.42, w: 1.9, h: 0.38, fontSize: 10.5, bold: true, color: C.navy });
sl.addText(e.range, { x: 0.4 + i * 3.0 + 0.1, y: 1.85, w: 2.6, h: 0.25, fontSize: 9, color: C.teal, bold: true });
sl.addText(e.desc, { x: 0.4 + i * 3.0 + 0.1, y: 2.12, w: 2.6, h: 0.7, fontSize: 9, color: C.darkText, wrap: true });
});
// WRIST section
sl.addText("WRIST", { x: 0.4, y: 3.05, w: 2, h: 0.38, fontSize: 12, bold: true, color: "7B2D8B" });
sl.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 3.43, w: 5.8, h: 0.03, fill: { color: "7B2D8B" }, line: { color: "7B2D8B" } });
const wristEx = [
{ title: "Flexion / Extension", range: "0β80Β° / 0β70Β°", icon: "βοΈ", desc: "Bend wrist down (flexion) then up (extension). Support forearm on table. 10 reps." },
{ title: "Radial / Ulnar Deviation", range: "0β20Β° / 0β30Β°", icon: "βοΈ", desc: "Move wrist toward thumb side, then little finger side. 10 reps each." },
];
wristEx.forEach((e, i) => {
card(sl, 0.4 + i * 3.0, 3.5, 2.8, 1.55, C.white);
sl.addText(e.icon, { x: 0.4 + i * 3.0 + 0.1, y: 3.55, w: 0.6, h: 0.55, fontSize: 22, align: "center" });
sl.addText(e.title, { x: 0.4 + i * 3.0 + 0.75, y: 3.57, w: 1.9, h: 0.4, fontSize: 10.5, bold: true, color: C.navy });
sl.addText(e.range, { x: 0.4 + i * 3.0 + 0.1, y: 4.0, w: 2.6, h: 0.25, fontSize: 9, color: "7B2D8B", bold: true });
sl.addText(e.desc, { x: 0.4 + i * 3.0 + 0.1, y: 4.28, w: 2.6, h: 0.7, fontSize: 9, color: C.darkText, wrap: true });
});
// HAND section - right side
sl.addText("HAND & FINGERS", { x: 6.6, y: 0.9, w: 6, h: 0.38, fontSize: 12, bold: true, color: C.amber });
sl.addShape(pres.shapes.RECTANGLE, { x: 6.6, y: 1.28, w: 6.5, h: 0.03, fill: { color: C.amber }, line: { color: C.amber } });
const handEx = [
{ icon: "β", title: "Fist Grip", desc: "Make tight fist, hold 5 sec. Open fingers fully. Repeat 10β15x.\nBest for: Arthritis, post-fracture" },
{ icon: "π€", title: "Pinch Exercise", desc: "Touch tip of each finger to thumb one by one. Go through all 4 fingers.\nRepeat 5β10x each hand." },
{ icon: "ποΈ", title: "Finger Spread", desc: "Spread all fingers as wide as possible, hold 5 sec. Close back.\nRepeat 10x." },
{ icon: "π", title: "Finger Curl", desc: "Curl only finger joints (MCP, PIP, DIP) without making fist.\nRepeat 10x slowly." },
];
handEx.forEach((e, i) => {
const cx = 6.6 + (i % 2) * 3.3;
const cy = 1.4 + Math.floor(i / 2) * 1.85;
card(sl, cx, cy, 3.1, 1.7, C.white);
sl.addText(e.icon, { x: cx + 0.1, y: cy + 0.1, w: 0.7, h: 0.65, fontSize: 26, align: "center" });
sl.addText(e.title, { x: cx + 0.85, y: cy + 0.15, w: 2.1, h: 0.4, fontSize: 11, bold: true, color: C.navy });
sl.addText(e.desc, { x: cx + 0.15, y: cy + 0.65, w: 2.85, h: 0.95, fontSize: 9, color: C.darkText, wrap: true });
});
// Tip row
card(sl, 0.4, 5.2, 12.8, 0.62, "FFF3E0");
sl.addText("β οΈ Arthritis Tip: Perform hand exercises AFTER warm soak (warm water for 5 minutes). Never exercise during acute flare β wait for inflammation to settle.", {
x: 0.65, y: 5.28, w: 12.4, h: 0.48, fontSize: 10, color: C.darkText, italic: true
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 7: HIP & KNEE ROM EXERCISES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 2.5, "𦡠HIP & KNEE", C.green);
sl.addText("Lower Limb Range of Motion Exercises", {
x: 3.1, y: 0.15, w: 10, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
// HIP exercises
sl.addText("HIP JOINT", { x: 0.4, y: 0.95, w: 3, h: 0.4, fontSize: 14, bold: true, color: C.green });
const hipEx = [
{ icon: "β¬οΈ", title: "Hip Flexion", range: "0β120Β°", pos: "Lying/standing", steps: "Lying on back: bring knee to chest. Or standing: raise knee toward chest with support. Hold 5 sec. 10 reps." },
{ icon: "β¬οΈ", title: "Hip Extension", range: "0β30Β°", pos: "Lying prone / standing", steps: "Lie face down, raise straight leg off bed. Or hold rail, kick leg backward. Keep back straight. 10 reps." },
{ icon: "βοΈ", title: "Abduction", range: "0β45Β°", pos: "Lying on back", steps: "Slide leg out to side while keeping knee straight & toes pointing up. Bring back slowly. 10 reps." },
{ icon: "π", title: "Hip Rotation", range: "Int 0β45Β° / Ext 0β45Β°", pos: "Lying on back", steps: "Knee & hip at 90Β°. Roll knee inward (int. rotation), then outward (ext. rotation). 10 reps." },
];
hipEx.forEach((e, i) => {
const cx = 0.4 + (i % 2) * 6.5;
const cy = 1.42 + Math.floor(i / 2) * 2.0;
slide_card(sl, cx, cy, 6.2, 1.85, "0D3D2A");
sl.addText(e.icon, { x: cx + 0.12, y: cy + 0.15, w: 0.65, h: 0.6, fontSize: 26, align: "center" });
sl.addText(e.title, { x: cx + 0.85, y: cy + 0.15, w: 3.5, h: 0.42, fontSize: 12, bold: true, color: C.white });
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 4.5, y: cy + 0.12, w: 1.55, h: 0.38,
fill: { color: C.green }, line: { color: C.green }, rectRadius: 0.1
});
sl.addText(e.range, { x: cx + 4.5, y: cy + 0.12, w: 1.55, h: 0.38, fontSize: 8, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0 });
sl.addText("Position: " + e.pos, { x: cx + 0.15, y: cy + 0.64, w: 5.9, h: 0.28, fontSize: 9, color: C.tealLight, italic: true });
sl.addText(e.steps, { x: cx + 0.15, y: cy + 0.94, w: 5.9, h: 0.82, fontSize: 9.5, color: C.lightGray, wrap: true });
});
// KNEE exercises
sl.addText("KNEE JOINT", { x: 6.9, y: 0.95, w: 3, h: 0.4, fontSize: 14, bold: true, color: C.amber });
const kneeEx = [
{ icon: "βοΈ", title: "Flexion / Extension", range: "0β135Β°", desc: "Lying on back: slide heel toward buttocks (flexion), then straighten (extension). 10 slow reps.", note: "Heel slide exercise β can be done in bed" },
{ icon: "ποΈ", title: "Terminal Knee Ext.", range: "Last 30Β°", desc: "With theraband behind knee: straighten the final 30Β° only. Strengthens VMO muscle. 3Γ15.", note: "Key for quadriceps re-activation" },
{ icon: "π²", title: "Cycling Motion", range: "Full arc", desc: "Lying on back, cycle legs in the air. Combines hip + knee ROM. Great for early rehab. 2 min.", note: "Gravity-assisted, low-resistance" },
];
kneeEx.forEach((e, i) => {
slide_card(sl, 6.9, 1.42 + i * 1.95, 6.2, 1.78, "2A1500");
sl.addText(e.icon, { x: 7.02, y: 1.52 + i * 1.95, w: 0.65, h: 0.6, fontSize: 24, align: "center" });
sl.addText(e.title, { x: 7.72, y: 1.52 + i * 1.95, w: 3.5, h: 0.4, fontSize: 12, bold: true, color: C.white });
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 11.4, y: 1.52 + i * 1.95, w: 1.5, h: 0.35,
fill: { color: C.amber }, line: { color: C.amber }, rectRadius: 0.1
});
sl.addText(e.range, { x: 11.4, y: 1.52 + i * 1.95, w: 1.5, h: 0.35, fontSize: 8.5, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0 });
sl.addText(e.desc, { x: 7.05, y: 2.0 + i * 1.95, w: 5.9, h: 0.75, fontSize: 9.5, color: C.lightGray, wrap: true });
sl.addText("β " + e.note, { x: 7.05, y: 2.78 + i * 1.95, w: 5.9, h: 0.28, fontSize: 8.5, color: C.amber, italic: true });
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 8: ANKLE & FOOT ROM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 2.2, "π£ ANKLE & FOOT", C.red);
sl.addText("Ankle & Foot Range of Motion Exercises", {
x: 2.8, y: 0.15, w: 10, h: 0.65,
fontSize: 26, bold: true, color: C.navy
});
// Ankle movements
const ankleEx = [
{
icon: "β¬οΈ", title: "Dorsiflexion", range: "0β20Β°", color: "0A3050",
desc: "Pull toes/foot up toward shin. Feel stretch in calf. Hold 5 sec.",
why: "Required for normal walking β loss = steppage gait",
tip: "Do with knee straight AND bent (tests Achilles vs soleus)"
},
{
icon: "β¬οΈ", title: "Plantarflexion", range: "0β50Β°", color: "1B4D3E",
desc: "Point toes/foot down like ballet position. Hold 5 sec.",
why: "Essential for push-off phase of walking",
tip: "Ankle pumps (up+down) = DVT prevention exercise"
},
{
icon: "βοΈ", title: "Inversion", range: "0β35Β°", color: "4A235A",
desc: "Turn sole of foot inward (toward other foot). 10 slow reps.",
why: "Tibialis anterior & posterior control this movement",
tip: "Often limited after ankle sprains & fractures"
},
{
icon: "βοΈ", title: "Eversion", range: "0β15Β°", color: "5C2E00",
desc: "Turn sole outward (away from other foot). 10 slow reps.",
why: "Peroneal muscles β important for lateral stability",
tip: "Strengthening eversion prevents ankle re-sprains"
},
];
ankleEx.forEach((e, i) => {
const cx = 0.4 + (i % 2) * 6.5;
const cy = 1.0 + Math.floor(i / 2) * 2.25;
card(sl, cx, cy, 6.2, 2.1, C.white);
// Color top band
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx, y: cy, w: 6.2, h: 0.5,
fill: { color: e.color }, line: { color: e.color }, rectRadius: 0.1
});
sl.addText(e.icon + " " + e.title, { x: cx + 0.15, y: cy + 0.05, w: 4.5, h: 0.4, fontSize: 13, bold: true, color: C.white });
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 4.85, y: cy + 0.07, w: 1.2, h: 0.33,
fill: { color: C.teal }, line: { color: C.teal }, rectRadius: 0.1
});
sl.addText(e.range, { x: cx + 4.85, y: cy + 0.07, w: 1.2, h: 0.33, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
sl.addText(e.desc, { x: cx + 0.15, y: cy + 0.58, w: 5.9, h: 0.55, fontSize: 10, color: C.darkText, wrap: true });
sl.addText("π Why: " + e.why, { x: cx + 0.15, y: cy + 1.15, w: 5.9, h: 0.38, fontSize: 9, color: C.tealDark, italic: true, wrap: true });
sl.addText("β " + e.tip, { x: cx + 0.15, y: cy + 1.55, w: 5.9, h: 0.38, fontSize: 9, color: "7B2D8B", wrap: true });
});
// Alphabet exercise
card(sl, 0.4, 5.5, 12.8, 0.7, C.navy);
sl.addText("β Alphabet Exercise:", { x: 0.7, y: 5.55, w: 2.5, h: 0.3, fontSize: 11, bold: true, color: C.teal, margin: 0 });
sl.addText("Sitting or lying β use your big toe to 'write' all 26 letters of the alphabet in the air. Covers ALL ankle movements (dorsiflexion, plantarflexion, inversion, eversion, circumduction). Excellent post-sprain & post-surgery rehab.", {
x: 0.7, y: 5.84, w: 12.2, h: 0.32, fontSize: 9.5, color: C.white
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 9: SPINE / BACK ROM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
topBar(sl);
pill(sl, 0.4, 0.18, 2.5, "π§ SPINE EXERCISES", C.tealLight);
sl.addText("Lumbar Spine Range of Motion", {
x: 3.1, y: 0.15, w: 10, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
const spineEx = [
{
title: "Knee to Chest", icon: "π€Έ", range: "Flexion",
pos: "Lying on back", sets: "10 reps each side",
desc: "Bring one knee up to chest with both hands. Hold 20β30 sec. Switch sides. Then both knees together.",
benefit: "Stretches lumbar extensors & glutes. Relieves disc pressure.",
color: "0A4F7A"
},
{
title: "Cat-Camel Stretch", icon: "π±", range: "Flex + Ext",
pos: "On all fours (hands & knees)", sets: "10 slow cycles",
desc: "ARCH back up (cat β spine flexion). Then let belly DROP down (camel β spine extension). Move through full range slowly.",
benefit: "Lubricates facet joints. Improves full lumbar mobility.",
color: "1B4D3E"
},
{
title: "Trunk Rotation", icon: "π", range: "0β45Β° each side",
pos: "Lying on back", sets: "10 reps each side",
desc: "Knees bent, feet flat on bed. Let both knees fall to one side slowly. Hold 5 sec. Bring back to center. Repeat other side.",
benefit: "Stretches obliques & lumbar rotators. Reduces morning stiffness.",
color: "4A235A"
},
{
title: "Lateral Flexion", icon: "βοΈ", range: "0β25Β° each side",
pos: "Standing", sets: "10 reps each side",
desc: "Stand straight, arms at side. Slide one hand down thigh toward knee ('side bend'). Hold 5 sec. Return. Other side.",
benefit: "Stretches QL muscle (quadratus lumborum). Key in low back pain.",
color: "3D1A60"
},
{
title: "Pelvic Tilt", icon: "β¬οΈβ¬οΈ", range: "Neutral β Posterior",
pos: "Lying on back", sets: "15 reps",
desc: "Flatten lower back against floor by tightening abdomen & tilting pelvis. Hold 5 sec. Release. Repeat.",
benefit: "Activates core. Reduces lumbar lordosis. Foundation of back rehab.",
color: "1A3A00"
},
{
title: "Prone Extension", icon: "π¦Έ", range: "0β30Β°",
pos: "Lying face down", sets: "10 reps",
desc: "Lie face down. Push up with hands, letting lower back arch. Keep pelvis on floor. Hold 5 sec. (McKenzie extension).",
benefit: "Centralizes disc pain. McKenzie protocol for disc herniation rehab.",
color: "5C2E00"
},
];
spineEx.forEach((e, i) => {
const cx = 0.4 + (i % 3) * 4.35;
const cy = 1.0 + Math.floor(i / 3) * 2.65;
slide_card(sl, cx, cy, 4.1, 2.5, e.color);
// Icon + title
sl.addText(e.icon, { x: cx + 0.12, y: cy + 0.1, w: 0.62, h: 0.6, fontSize: 24, align: "center" });
sl.addText(e.title, { x: cx + 0.82, y: cy + 0.12, w: 2.6, h: 0.42, fontSize: 11.5, bold: true, color: C.white });
sl.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: cx + 3.2, y: cy + 0.1, w: 0.75, h: 0.35,
fill: { color: C.teal }, line: { color: C.teal }, rectRadius: 0.1
});
sl.addText(e.range, { x: cx + 3.2, y: cy + 0.1, w: 0.75, h: 0.35, fontSize: 7.5, color: C.white, align: "center", valign: "middle", margin: 0 });
sl.addText("π " + e.pos + " | " + e.sets, { x: cx + 0.12, y: cy + 0.62, w: 3.85, h: 0.28, fontSize: 8.5, color: C.tealLight, italic: true });
sl.addText(e.desc, { x: cx + 0.12, y: cy + 0.94, w: 3.85, h: 0.85, fontSize: 9, color: C.lightGray, wrap: true });
sl.addShape(pres.shapes.RECTANGLE, { x: cx + 0.12, y: cy + 1.85, w: 3.85, h: 0.03, fill: { color: C.teal }, line: { color: C.teal } });
sl.addText("β " + e.benefit, { x: cx + 0.12, y: cy + 1.9, w: 3.85, h: 0.52, fontSize: 8.5, color: C.teal, wrap: true, italic: true });
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 10: BENEFITS vs LIMITATIONS (COMPARISON)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
sl.addText("Benefits vs Limitations of ROM Exercises", {
x: 0.4, y: 0.18, w: 12.8, h: 0.65,
fontSize: 26, bold: true, color: C.navy
});
// Benefits column
slide_card(sl, 0.3, 0.95, 6.2, 5.85, "0A2342");
sl.addText("β
BENEFITS", { x: 0.55, y: 1.05, w: 5.7, h: 0.5, fontSize: 16, bold: true, color: C.green });
const benefits = [
{ icon: "π¬", text: "Reduces joint stiffness & improves synovial fluid distribution" },
{ icon: "π«", text: "Prevents contracture formation in bedridden patients" },
{ icon: "β€οΈ", text: "Improves blood circulation & prevents DVT" },
{ icon: "πͺ", text: "Maintains muscle mass & prevents atrophy" },
{ icon: "π", text: "Reduces pain via endorphin release & gate control" },
{ icon: "π§ ", text: "Aids neuroplasticity in stroke & SCI patients" },
{ icon: "π¦΄", text: "Provides cartilage nutrition via synovial fluid" },
{ icon: "π§", text: "Improves psychological well-being & independence" },
];
benefits.forEach((b, i) => {
sl.addShape(pres.shapes.RECTANGLE, {
x: 0.55, y: 1.65 + i * 0.58, w: 5.7, h: 0.5,
fill: { color: i % 2 === 0 ? "0D3D2A" : "0A4F7A", transparency: 20 },
line: { color: "FFFFFF", transparency: 90 }
});
sl.addText(b.icon + " " + b.text, {
x: 0.7, y: 1.67 + i * 0.58, w: 5.5, h: 0.46,
fontSize: 9.5, color: C.lightGray, valign: "middle"
});
});
// Limitations column
slide_card(sl, 6.8, 0.95, 6.2, 5.85, "2A0A0A");
sl.addText("β οΈ LIMITATIONS & RISKS", { x: 7.05, y: 1.05, w: 5.7, h: 0.5, fontSize: 16, bold: true, color: C.red });
const limits = [
{ icon: "π©Ή", text: "Wrong technique can cause ligament tear or nerve injury" },
{ icon: "π¦΄", text: "Risk of heterotopic ossification in TBI/SCI if too aggressive" },
{ icon: "π", text: "Hypermobile joints can become unstable with overuse" },
{ icon: "π₯", text: "Worsens acute inflammation β contraindicated in active flares" },
{ icon: "π©Έ", text: "Can displace blood clot (DVT) if ROM done on clotted limb" },
{ icon: "β", text: "Passive ROM does NOT build muscle strength" },
{ icon: "β³", text: "Time-intensive β resource burden in under-staffed settings" },
{ icon: "π¦΄", text: "Fracture risk in severe osteoporosis with even gentle ROM" },
];
limits.forEach((l, i) => {
sl.addShape(pres.shapes.RECTANGLE, {
x: 7.05, y: 1.65 + i * 0.58, w: 5.7, h: 0.5,
fill: { color: i % 2 === 0 ? "3D0A0A" : "5C1A00", transparency: 20 },
line: { color: "FFFFFF", transparency: 90 }
});
sl.addText(l.icon + " " + l.text, {
x: 7.2, y: 1.67 + i * 0.58, w: 5.5, h: 0.46,
fontSize: 9.5, color: C.lightGray, valign: "middle"
});
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 11: STEP-BY-STEP PROTOCOL
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
topBar(sl);
sl.addText("How to Perform ROM Exercises Safely", {
x: 0.4, y: 0.18, w: 12.8, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
// Step flow
const steps = [
{ n: 1, icon: "π", title: "Assess the Patient", body: "Check for contraindications: fracture, DVT, acute inflammation, open wounds. Verify doctor's order. Explain procedure to patient.", color: C.tealDark },
{ n: 2, icon: "π‘οΈ", title: "Prepare & Warm Up", body: "Apply warm towel/heat pack for 5β10 min. Ensure comfortable position. Expose only the joint being treated.", color: "1B4D3E" },
{ n: 3, icon: "π€²", title: "Support the Limb", body: "Use both hands β one proximal to joint, one distal. Never grip over the joint itself. Support weight of the limb fully.", color: "4A235A" },
{ n: 4, icon: "β‘", title: "Perform Movement", body: "Move SLOWLY through full available range. Gentle overpressure at end range (5 sec). STOP at first sign of pain/resistance.", color: "5C2E00" },
{ n: 5, icon: "π", title: "Repeat & Progress", body: "5β10 repetitions per movement. 2β3 sessions per day. Gradually increase range and resistance over days/weeks.", color: "1A3A00" },
{ n: 6, icon: "π", title: "Document & Monitor", body: "Record ROM angles with goniometer. Note pain level (0β10). Compare with previous session. Report any changes.", color: "0A3050" },
];
// Draw connecting arrows
for (let i = 0; i < 5; i++) {
const isBottom = i >= 3;
if (i < 2) {
sl.addShape(pres.shapes.RECTANGLE, { x: 4.35 + i * 4.4, y: 2.45, w: 0.5, h: 0.12, fill: { color: C.teal }, line: { color: C.teal } });
sl.addText("β", { x: 4.25 + i * 4.4, y: 2.35, w: 0.6, h: 0.35, fontSize: 18, color: C.teal, align: "center" });
} else if (i === 2) {
// Down arrow
sl.addText("β", { x: 11.6, y: 3.15, w: 0.6, h: 0.55, fontSize: 22, color: C.teal, align: "center" });
} else if (i < 5) {
sl.addShape(pres.shapes.RECTANGLE, { x: 4.35 + (4 - i) * 4.4, y: 4.75, w: 0.5, h: 0.12, fill: { color: C.amber }, line: { color: C.amber } });
sl.addText("β", { x: 4.25 + (4 - i) * 4.4, y: 4.62, w: 0.6, h: 0.35, fontSize: 18, color: C.amber, align: "center" });
}
}
steps.forEach((s, i) => {
const row = Math.floor(i / 3);
const col = row === 0 ? i : (2 - (i - 3));
const cx = 0.35 + col * 4.35;
const cy = 1.0 + row * 3.35;
slide_card(sl, cx, cy, 4.05, 2.9, s.color);
// Step number circle
sl.addShape(pres.shapes.OVAL, { x: cx + 0.15, y: cy + 0.12, w: 0.7, h: 0.7, fill: { color: C.white }, line: { color: C.white } });
sl.addText(String(s.n), { x: cx + 0.15, y: cy + 0.12, w: 0.7, h: 0.7, fontSize: 18, bold: true, color: s.color, align: "center", valign: "middle", margin: 0 });
// Icon
sl.addText(s.icon, { x: cx + 0.95, y: cy + 0.12, w: 0.6, h: 0.65, fontSize: 22, align: "center" });
// Title
sl.addText(s.title, { x: cx + 1.6, y: cy + 0.18, w: 2.3, h: 0.45, fontSize: 12, bold: true, color: C.white });
// Body
sl.addText(s.body, { x: cx + 0.18, y: cy + 0.95, w: 3.7, h: 1.8, fontSize: 10, color: C.lightGray, wrap: true });
});
// Warning
sl.addText("β οΈ RULE: If patient reports sharp pain, numbness, dizziness, or skin color change β STOP immediately and reassess.", {
x: 0.4, y: 7.1, w: 12.8, h: 0.3, fontSize: 9.5, color: C.amber, align: "center"
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 12: CONTRAINDICATIONS TABLE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
lightBg(sl);
topBar(sl);
sl.addText("Contraindications & Special Precautions", {
x: 0.4, y: 0.18, w: 12.8, h: 0.65,
fontSize: 26, bold: true, color: C.navy
});
// Absolute Contraindications
sl.addText("ABSOLUTE CONTRAINDICATIONS β DO NOT PERFORM", {
x: 0.4, y: 0.95, w: 12.8, h: 0.38,
fontSize: 12, bold: true, color: C.white
});
sl.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 0.92, w: 12.8, h: 0.42, fill: { color: C.red }, line: { color: C.red } });
sl.addText("ABSOLUTE CONTRAINDICATIONS β DO NOT PERFORM", { x: 0.4, y: 0.92, w: 12.8, h: 0.42, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle" });
const absolute = [
{ cond: "Unstabilized Fracture", reason: "Movement displaces bone fragments β malunion or neurovascular injury", icon: "π¦΄" },
{ cond: "Fresh Joint Dislocation", reason: "Further structural damage before reduction/stabilization", icon: "β οΈ" },
{ cond: "Deep Vein Thrombosis (DVT)", reason: "Clot may embolize to lungs (Pulmonary Embolism β life threatening)", icon: "π©Έ" },
{ cond: "Acute Septic Arthritis", reason: "Movement spreads infection to surrounding tissue", icon: "π₯" },
];
absolute.forEach((a, i) => {
const cx = 0.4 + (i % 2) * 6.5;
const cy = 1.42 + Math.floor(i / 2) * 0.72;
slide_card(sl, cx, cy, 6.2, 0.62, "FFF0F0");
sl.addText(a.icon + " " + a.cond, { x: cx + 0.15, y: cy + 0.07, w: 2.2, h: 0.48, fontSize: 10.5, bold: true, color: C.red, valign: "middle" });
sl.addText(a.reason, { x: cx + 2.4, y: cy + 0.07, w: 3.6, h: 0.48, fontSize: 9.5, color: C.darkText, valign: "middle", wrap: true });
});
// Relative Contraindications
sl.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 3.0, w: 12.8, h: 0.42, fill: { color: C.amber }, line: { color: C.amber } });
sl.addText("RELATIVE CONTRAINDICATIONS β MODIFY & PROCEED WITH CAUTION", { x: 0.4, y: 3.0, w: 12.8, h: 0.42, fontSize: 12, bold: true, color: C.navy, align: "center", valign: "middle" });
const relative = [
{ cond: "Severe Osteoporosis", mod: "Very gentle PROM only. Avoid forced movements.", icon: "π" },
{ cond: "Acute Inflammation / Flare", mod: "Rest during flare. Resume after inflammation settles.", icon: "π΄" },
{ cond: "Open Wounds / Skin Graft", mod: "Avoid direct pressure on wound. Modify positioning.", icon: "π©Ή" },
{ cond: "Hypermobile Joints", mod: "Stay within normal range. Avoid end-range overpressure.", icon: "π" },
{ cond: "Recent Ligament Repair", mod: "Follow surgeon's protocol. Time-specific restrictions.", icon: "π" },
{ cond: "Cardiac / Hemodynamic Instability", mod: "Monitor vitals. Keep ROM gentle & short duration.", icon: "π" },
];
relative.forEach((r, i) => {
const cx = 0.4 + (i % 3) * 4.35;
const cy = 3.52 + Math.floor(i / 3) * 0.95;
card(sl, cx, cy, 4.1, 0.82, "FFFBF0");
sl.addText(r.icon + " " + r.cond, { x: cx + 0.12, y: cy + 0.05, w: 3.8, h: 0.32, fontSize: 10, bold: true, color: "8B4500" });
sl.addText(r.mod, { x: cx + 0.12, y: cy + 0.4, w: 3.8, h: 0.35, fontSize: 9, color: C.darkText, wrap: true });
});
// Bottom note
card(sl, 0.4, 5.5, 12.8, 0.72, C.navy);
sl.addText("π Remember: When in doubt, CONSULT first β don't assume ROM is safe just because it appears gentle. Always take history and check medical notes.", {
x: 0.7, y: 5.55, w: 12.2, h: 0.6, fontSize: 10.5, color: C.white, italic: true
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 13: SUMMARY / CONCLUSION
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const sl = pres.addSlide();
darkBg(sl);
// Teal left bar
sl.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.18, h: "100%", fill: { color: C.teal }, line: { color: C.teal } });
pill(sl, 0.5, 0.3, 2.2, "SUMMARY", C.teal);
sl.addText("Key Takeaways", {
x: 0.5, y: 0.78, w: 12, h: 0.75,
fontSize: 38, bold: true, color: C.white, fontFace: "Calibri"
});
// Takeaway cards
const takeaways = [
{ n: "01", title: "3 Types", body: "Passive β Active-Assisted β Active. Progress based on patient's muscle strength and recovery stage.", color: C.tealDark },
{ n: "02", title: "Move Daily", body: "Joint stiffness begins in as little as 3 days of immobility. Early ROM is critical for all bedridden patients.", color: "1B4D3E" },
{ n: "03", title: "Pain = STOP", body: "Sharp pain, numbness, or resistance = immediate stop. ROM should cause mild discomfort at most, never sharp pain.", color: "4A235A" },
{ n: "04", title: "Know Limits", body: "Contraindicated in DVT, acute fracture, septic arthritis. Always assess before performing.", color: "5C2E00" },
];
takeaways.forEach((t, i) => {
const cx = 0.5 + (i % 2) * 6.5;
const cy = 1.75 + Math.floor(i / 2) * 2.05;
slide_card(sl, cx, cy, 6.2, 1.85, t.color);
sl.addText(t.n, { x: cx + 0.15, y: cy + 0.1, w: 0.85, h: 0.8, fontSize: 30, bold: true, color: C.teal, fontFace: "Calibri" });
sl.addText(t.title, { x: cx + 1.1, y: cy + 0.12, w: 4.9, h: 0.5, fontSize: 18, bold: true, color: C.white });
sl.addText(t.body, { x: cx + 1.1, y: cy + 0.72, w: 4.9, h: 0.95, fontSize: 10.5, color: C.lightGray, wrap: true });
});
// Final quote
sl.addShape(pres.shapes.RECTANGLE, { x: 0.5, y: 5.92, w: 12.3, h: 0.03, fill: { color: C.teal }, line: { color: C.teal } });
sl.addText('"Move it or Lose it β Regular ROM Exercises are the foundation of mobility, recovery, and quality of life."', {
x: 0.5, y: 6.0, w: 12.3, h: 0.55,
fontSize: 13, italic: true, color: C.tealLight, align: "center"
});
sl.addText("β Physiotherapy Department | June 2026", {
x: 0.5, y: 6.55, w: 12.3, h: 0.35,
fontSize: 10, color: C.gray, align: "center"
});
footerBar(sl);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SAVE FILE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
pres.writeFile({ fileName: "/home/daytona/workspace/rom-ppt/ROM_Exercises_Presentation.pptx" })
.then(() => console.log("β
Presentation saved: ROM_Exercises_Presentation.pptx"))
.catch(err => console.error("β Error:", err));