Prepare physiotherapy protocol for 1 month
physiotherapy protocol after arthroscopic lateral meniscus repair 1 month rehabilitation
https://www.massgeneral.org/assets/mgh/pdf/orthopaedics/spor…
mkdir -p /home/daytona/workspace/physio-protocol && ls /home/daytona/workspace/p…
~/physio-protocol/generate_abhishek_protocol.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, VerticalAlign,
ShadingType, Header, Footer, PageNumber, NumberFormat
} = require('docx');
const fs = require('fs');
// Helper: bold paragraph
function boldPara(text, size = 24, color = "000000", align = AlignmentType.LEFT, spacing = 80) {
return new Paragraph({
alignment: align,
spacing: { after: spacing },
children: [new TextRun({ text, bold: true, size, color })]
});
}
// Helper: normal paragraph
function normalPara(text, size = 22, indent = false, spacing = 60) {
return new Paragraph({
alignment: AlignmentType.LEFT,
spacing: { after: spacing },
indent: indent ? { left: 360 } : {},
children: [new TextRun({ text, size })]
});
}
// Helper: bullet paragraph
function bullet(text, size = 22) {
return new Paragraph({
bullet: { level: 0 },
spacing: { after: 50 },
children: [new TextRun({ text, size })]
});
}
// Helper: sub-bullet
function subBullet(text, size = 21) {
return new Paragraph({
bullet: { level: 1 },
spacing: { after: 40 },
children: [new TextRun({ text, size, italics: true })]
});
}
// Helper: shaded header row cell
function headerCell(text) {
return new TableCell({
shading: { type: ShadingType.SOLID, color: "1B4F72", fill: "1B4F72" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text, bold: true, color: "FFFFFF", size: 20 })]
})]
});
}
function dataCell(text, shade = false) {
return new TableCell({
shading: shade ? { type: ShadingType.SOLID, color: "D6EAF8", fill: "D6EAF8" } : {},
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.LEFT,
spacing: { after: 30 },
children: [new TextRun({ text, size: 20 })]
})]
});
}
// Phase heading bar
function phaseHeader(title, subtitle) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE },
bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE },
right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE },
insideV: { style: BorderStyle.NONE },
},
rows: [
new TableRow({
children: [
new TableCell({
shading: { type: ShadingType.SOLID, color: "154360", fill: "154360" },
margins: { top: 120, bottom: 120, left: 200, right: 200 },
children: [
new Paragraph({
alignment: AlignmentType.LEFT,
spacing: { after: 20 },
children: [new TextRun({ text: title, bold: true, color: "FFFFFF", size: 26 })]
}),
new Paragraph({
alignment: AlignmentType.LEFT,
children: [new TextRun({ text: subtitle, color: "AED6F1", size: 20, italics: true })]
})
]
})
]
})
]
});
}
const doc = new Document({
styles: {
default: {
document: {
run: { font: "Calibri" }
}
}
},
sections: [{
properties: {
page: {
margin: { top: 900, bottom: 900, left: 1000, right: 1000 }
}
},
headers: {
default: new Header({
children: [
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.THICK, size: 6, color: "1B4F72" },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE }
},
rows: [new TableRow({
children: [
new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: "PHYSIOTHERAPY REHABILITATION PROTOCOL", bold: true, size: 20, color: "1B4F72" })]
})]
}),
new TableCell({
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
children: [new TextRun({ text: "Left Knee Arthroscopic LM Repair", size: 18, color: "555555", italics: true })]
})]
})
]
})]
})
]
})
},
footers: {
default: new Footer({
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "Confidential - For Patient Use Only | Page ", size: 18, color: "888888" }),
new TextRun({ children: [PageNumber.CURRENT], size: 18, color: "888888" }),
new TextRun({ text: " of ", size: 18, color: "888888" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: "888888" })
]
})
]
})
},
children: [
// ─── TITLE BLOCK ───────────────────────────────────────────────────────────
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE }
},
rows: [new TableRow({
children: [new TableCell({
shading: { type: ShadingType.SOLID, color: "1B4F72", fill: "1B4F72" },
margins: { top: 200, bottom: 200, left: 300, right: 300 },
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 50 },
children: [new TextRun({ text: "POST-OPERATIVE PHYSIOTHERAPY PROTOCOL", bold: true, color: "FFFFFF", size: 36 })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 40 },
children: [new TextRun({ text: "Left Knee Arthroscopic Lateral Meniscus Repair (All-Inside Technique)", color: "AED6F1", size: 24 })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "1-Month Rehabilitation Programme | Date of Surgery: 23 June 2026", color: "D6EAF8", size: 20, italics: true })]
})
]
})]
})]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── PATIENT INFO TABLE ────────────────────────────────────────────────────
boldPara("PATIENT INFORMATION", 22, "1B4F72"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" }
},
rows: [
new TableRow({ children: [headerCell("Field"), headerCell("Details"), headerCell("Field"), headerCell("Details")] }),
new TableRow({ children: [dataCell("Patient Name", true), dataCell("Mr. Abhishek Dadhich"), dataCell("Patient ID", true), dataCell("309057")] }),
new TableRow({ children: [dataCell("Age / Sex", true), dataCell("39 Years / Male"), dataCell("Department", true), dataCell("Orthopaedics")] }),
new TableRow({ children: [dataCell("Surgery Performed", true), dataCell("Left Knee Arthroscopic LM Repair (All-Inside)"), dataCell("Date of Surgery", true), dataCell("23 June 2026")] }),
new TableRow({ children: [dataCell("Surgeon", true), dataCell("Dr. Nilesh Kamat"), dataCell("Protocol Start Date", true), dataCell("24 June 2026 (Day 1 Post-Op)")] }),
new TableRow({ children: [dataCell("Protocol Duration", true), dataCell("4 Weeks (1 Month)"), dataCell("Goal", true), dataCell("Restore function, reduce pain, prepare for Phase 2")] }),
]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── IMPORTANT PRECAUTIONS ─────────────────────────────────────────────────
boldPara("IMPORTANT PRECAUTIONS — READ BEFORE STARTING", 22, "C0392B"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
left: { style: BorderStyle.SINGLE, size: 6, color: "C0392B" },
right: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "DDDDDD" },
insideV: { style: BorderStyle.NONE }
},
rows: [
new TableRow({ children: [new TableCell({
shading: { type: ShadingType.SOLID, color: "FADBD8", fill: "FADBD8" },
children: [
bullet("NO active resisted hamstring exercises or open-chain knee flexion for 8 weeks"),
bullet("NO deep squatting (>90° flexion) for minimum 8 weeks"),
bullet("NO tibial rotation or twisting movements during first 4 weeks"),
bullet("NO submerging knee in water for 4 weeks post-surgery"),
bullet("Brace LOCKED in full extension (0°) during all walking for first 4 weeks"),
bullet("Weight bearing restricted — use crutches as instructed by surgeon"),
bullet("Stop any exercise immediately if sharp pain, locking, or significant swelling occurs"),
bullet("Consult Dr. Nilesh Kamat before progressing if in doubt"),
]
})] })]
]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── PHASE I ───────────────────────────────────────────────────────────────
phaseHeader("PHASE I — MAXIMUM PROTECTION", "Weeks 1–2 | Days 1–14 Post-Operative"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Goals", 22, "154360"),
bullet("Control pain, swelling, and inflammation"),
bullet("Protect the meniscal repair — NO excess stress on the sutures"),
bullet("Restore full passive knee extension (0°)"),
bullet("Achieve 0–90° flexion range of motion by end of Week 2"),
bullet("Activate quadriceps and regain muscle control"),
bullet("Restore patellar mobility"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Weight Bearing & Brace", 22, "154360"),
bullet("Weight bearing: Touch-down / toe-touch only, with 2 crutches"),
bullet("Brace: LOCKED at 0° (full extension) at all times during ambulation"),
bullet("Brace may be unlocked (0–90°) when sitting or lying — NOT during walking"),
bullet("Wear brace at night until surgeon advises otherwise"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Modalities (Pain & Swelling Control)", 22, "154360"),
bullet("Cryotherapy (Ice pack / cryotherapy cuff) — 20 minutes, every 1–2 hours while awake"),
subBullet("Do NOT place ice directly on skin — use a cloth/towel"),
subBullet("Apply after every exercise session for the first 6 weeks"),
bullet("Elevation of the limb above heart level as much as possible"),
bullet("Compression bandage as applied — change dressing as advised"),
bullet("TENS / IFT (Interferential Therapy) for pain: 10–15 min per session, once daily"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Therapeutic Exercises — Phase I (3× per day)", 22, "154360"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" }
},
rows: [
new TableRow({ children: [headerCell("Exercise"), headerCell("Sets × Reps / Duration"), headerCell("Notes")] }),
new TableRow({ children: [dataCell("Quad Sets (Isometric quadriceps contraction)"), dataCell("3 × 10 reps; hold 10 sec"), dataCell("Tighten quad with knee straight; essential for VMO activation")] }),
new TableRow({ children: [dataCell("Straight Leg Raises (SLR)"), dataCell("3 × 10 reps"), dataCell("Only if no extension lag. Use NMES if quad is weak.")] }),
new TableRow({ children: [dataCell("Ankle Pumps"), dataCell("10 reps every hour"), dataCell("Prevents DVT; perform frequently throughout the day")] }),
new TableRow({ children: [dataCell("Heel Prop / Prone Hang (Extension stretch)"), dataCell("3–5 × 10 min per day"), dataCell("Low-load long-duration — PRIORITY to achieve 0° extension")] }),
new TableRow({ children: [dataCell("Patellar Mobilisation"), dataCell("2 × 1 min each direction"), dataCell("4 directions: medial, lateral, superior, inferior — gentle glides")] }),
new TableRow({ children: [dataCell("Passive Knee Flexion ROM"), dataCell("Weeks 1–2: 0–90° only"), dataCell("Heel/wall slides; passive only — do NOT force flexion")] }),
new TableRow({ children: [dataCell("Hip Abduction (Side-lying or standing)"), dataCell("3 × 15 reps"), dataCell("Support knee in brace if standing")] }),
new TableRow({ children: [dataCell("Hamstring Stretch (Passive)"), dataCell("3 × 30 sec hold"), dataCell("With towel under ankle — avoid active hamstring contraction")] }),
new TableRow({ children: [dataCell("Seated Knee Flexion (Gravity assist)"), dataCell("3 × 10 reps, 5-sec hold"), dataCell("Allow gravity; use unaffected leg for support on the way up")] }),
]
}),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Criteria to Progress to Phase II (must meet ALL):", 22, "154360"),
bullet("Knee extension ROM: 0° (full extension, equal to other side)"),
bullet("Knee flexion ROM: ≥90°"),
bullet("Strong quad contraction with visible patella glide and full active extension"),
bullet("Able to complete 3 sets of 20 SLRs without extension lag"),
bullet("Minimal pain and swelling at rest"),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── PHASE II ──────────────────────────────────────────────────────────────
phaseHeader("PHASE II — MODERATE PROTECTION & RANGE RESTORATION", "Weeks 3–4 | Days 15–28 Post-Operative"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Goals", 22, "154360"),
bullet("Progress knee flexion ROM toward 115° by end of Week 4"),
bullet("Normalise gait pattern with crutches progressing to single crutch (as tolerated)"),
bullet("Strengthen quadriceps to 50% limb symmetry index (LSI) vs unaffected leg"),
bullet("Begin closed-chain lower extremity strengthening"),
bullet("Improve proprioception and neuromuscular control"),
bullet("Maintain full extension ROM achieved in Phase I"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Weight Bearing & Brace", 22, "154360"),
bullet("Week 3: Continue touch-down weight bearing; brace locked at 0° for walking"),
bullet("Week 4: May progress to partial weight bearing if quad control is adequate (MD discretion)"),
bullet("Brace may be unlocked 0–90° when sitting or lying"),
bullet("Blood Flow Restriction (BFR) training may be introduced once unlocked ambulation is achieved"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Modalities (continuing as needed)", 22, "154360"),
bullet("Cryotherapy: Continue after each exercise session for 15–20 minutes"),
bullet("IFT / TENS: Continue for pain management (if still required)"),
bullet("Ultrasound therapy: 1 MHz, pulsed mode (1:4 ratio), 5–7 min over knee joint — promotes healing"),
bullet("Laser therapy (Low Level): Optional — reduces inflammation, promotes tissue repair"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Therapeutic Exercises — Phase II (2–3× per day; formal PT 2–3× per week)", 22, "154360"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" }
},
rows: [
new TableRow({ children: [headerCell("Exercise"), headerCell("Sets × Reps / Duration"), headerCell("Notes")] }),
new TableRow({ children: [dataCell("ALL Phase I exercises continued"), dataCell("As prescribed"), dataCell("Progress reps/sets as tolerated; continue ROM work daily")] }),
new TableRow({ children: [dataCell("Passive Knee Flexion ROM"), dataCell("Weeks 3–4: Target 0–115°"), dataCell("Progress heel/wall slides; passive overpressure if plateau")] }),
new TableRow({ children: [dataCell("Mini-Squat / Wall Slide"), dataCell("3 × 15 reps"), dataCell("Flexion MUST stay <90°; no deep squats yet")] }),
new TableRow({ children: [dataCell("Leg Press (Bilateral)"), dataCell("3 × 15 reps, light resistance"), dataCell("Range 0–60° only; avoid deep angles; progress load gradually")] }),
new TableRow({ children: [dataCell("Hip Extension (Prone or Standing)"), dataCell("3 × 15 reps"), dataCell("Strengthens glutes and hamstring synergy without knee stress")] }),
new TableRow({ children: [dataCell("Calf Raises (Bilateral)"), dataCell("3 × 20 reps"), dataCell("Progress to single leg only after week 4 if pain-free")] }),
new TableRow({ children: [dataCell("4-Way Hip Exercises"), dataCell("3 × 15 reps each direction"), dataCell("Flexion, extension, abduction, adduction — all supported")] }),
new TableRow({ children: [dataCell("Stationary Cycle (low resistance)"), dataCell("10–15 min"), dataCell("HIGH seat to limit flexion; introduce in Week 3 only if flexion ≥90°")] }),
new TableRow({ children: [dataCell("Weight Shifts (Bilateral)"), dataCell("3 × 1 min"), dataCell("Sagittal and frontal planes; progress to single leg balance week 4")] }),
new TableRow({ children: [dataCell("Prone Knee Flexion ROM"), dataCell("3 × 10 reps"), dataCell("NO resisted hamstring curl — gravity only at this stage")] }),
new TableRow({ children: [dataCell("Retro (Backward) Walking"), dataCell("2 × 5 min"), dataCell("Low speed; builds quad and proprioception; start in Week 4 if gait normal")] }),
]
}),
new Paragraph({ spacing: { after: 80 }, children: [new TextRun("")] }),
boldPara("Criteria to Progress to Phase III (post 4-week review — future phase):", 22, "154360"),
bullet("Knee flexion ROM ≥120° with extension equal to contralateral side"),
bullet("Normalised gait — no limp (antalgic gait resolved)"),
bullet("Minimal to no joint effusion (Modified Stroke Test negative)"),
bullet("Quad strength LSI ≥50% (confirmed by physiotherapist)"),
bullet("Able to perform 1 minute single leg squat with Vail Sport Cord criteria"),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── HOME PROGRAMME ────────────────────────────────────────────────────────
phaseHeader("HOME EXERCISE PROGRAMME — DAILY CHECKLIST", "To be performed every day in addition to PT clinic sessions"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" }
},
rows: [
new TableRow({ children: [headerCell("Time of Day"), headerCell("Exercise"), headerCell("Duration / Reps")] }),
new TableRow({ children: [dataCell("Morning", true), dataCell("Ice pack on knee + Ankle pumps + Quad sets"), dataCell("Ice 20 min; Pumps 10×; Quads 3×10")] }),
new TableRow({ children: [dataCell("Morning", true), dataCell("Heel prop (extension stretch, prone or supine)"), dataCell("2 × 10 minutes")] }),
new TableRow({ children: [dataCell("Mid-Morning", true), dataCell("SLR + Hip abduction"), dataCell("3 × 10–15 reps each")] }),
new TableRow({ children: [dataCell("Afternoon", true), dataCell("Passive knee flexion (heel slides) + patellar mobilisation"), dataCell("3 × 10 reps; patella 1 min each way")] }),
new TableRow({ children: [dataCell("Evening", true), dataCell("Stationary bike (Week 3+) OR seated ROM exercises"), dataCell("10–15 minutes")] }),
new TableRow({ children: [dataCell("Evening", true), dataCell("Ice pack after exercises + limb elevation"), dataCell("20 minutes")] }),
new TableRow({ children: [dataCell("Bedtime", true), dataCell("Prone hang or heel prop for extension"), dataCell("10 minutes")] }),
]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── MILESTONE FOLLOW-UP ───────────────────────────────────────────────────
phaseHeader("MILESTONE FOLLOW-UP SCHEDULE", "Clinic visits and physiotherapy milestones"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1B4F72" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" }
},
rows: [
new TableRow({ children: [headerCell("Week"), headerCell("Visit Type"), headerCell("Expected Milestones")] }),
new TableRow({ children: [dataCell("Week 1 (Day 7)", true), dataCell("Surgeon: Wound / Incision Check"), dataCell("Pain controlled, no wound infection, SLR possible, extension 0°")] }),
new TableRow({ children: [dataCell("Week 2 (Day 14)", true), dataCell("Physiotherapy Assessment"), dataCell("Flexion 90°, extension 0°, SLR 3×20 without lag, minimal swelling")] }),
new TableRow({ children: [dataCell("Week 3 (Day 21)", true), dataCell("Physiotherapy Progress Review"), dataCell("Flexion 100–110°, improved gait, stationary bike started")] }),
new TableRow({ children: [dataCell("Week 4 / 1 Month (Day 28)", true), dataCell("Surgeon: Motion Check + Full Review"), dataCell("Flexion 115°, gait normalised, quad strength improving, Phase III planning")] }),
new TableRow({ children: [dataCell("Week 6", true), dataCell("Surgeon: Brace & Strength Check"), dataCell("Brace review — likely discontinued if quad control adequate, flexion 130°")] }),
new TableRow({ children: [dataCell("Week 12", true), dataCell("Surgeon: Full Strength Assessment"), dataCell("Quad LSI >70%, ROM near full, begin progressive loading")] }),
]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── MEDICATIONS & WOUND CARE ──────────────────────────────────────────────
phaseHeader("MEDICATIONS & WOUND CARE REMINDERS", "As per discharge summary — consult Dr. Nilesh Kamat for any changes"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Prescribed Medications (Discharge):", 22, "154360"),
bullet("Continue prescribed oral analgesics / anti-inflammatory medicines as directed"),
bullet("DVT prophylaxis: Inj. Clexane 0.4cc S/C was given — confirm if any oral anticoagulant to continue"),
bullet("Do not self-medicate or stop medicines without consulting your surgeon"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
boldPara("Wound Care:", 22, "154360"),
bullet("Keep incision sites clean and dry"),
bullet("Steri-strips: leave in place until first post-op visit (7 days)"),
bullet("Change gauze + ace bandage every 72 hours (or as instructed)"),
bullet("Do NOT soak the knee in water for 4 weeks (no swimming, bathing in tub)"),
bullet("Showering permitted after first post-op visit — keep knee dry initially"),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── RED FLAGS ────────────────────────────────────────────────────────────
phaseHeader("RED FLAGS — SEEK IMMEDIATE MEDICAL ATTENTION", "Contact Dr. Nilesh Kamat or go to emergency if any of the following occur"),
new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
left: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
right: { style: BorderStyle.SINGLE, size: 4, color: "C0392B" },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "DDDDDD" },
insideV: { style: BorderStyle.NONE }
},
rows: [
new TableRow({ children: [new TableCell({
shading: { type: ShadingType.SOLID, color: "FADBD8", fill: "FADBD8" },
children: [
bullet("Sudden severe increase in pain, especially with a locking or catching sensation"),
bullet("Significant rapid swelling of the knee (joint effusion worsening)"),
bullet("Signs of infection: increasing redness, warmth, discharge from wound, fever >38°C"),
bullet("Calf pain, swelling, or redness (possible deep vein thrombosis - DVT)"),
bullet("Loss of sensation or persistent pins-and-needles in the foot"),
bullet("Inability to weight-bear that was not present before"),
bullet("Wound edges separating or sutures loosening"),
]
})] })]
]
}),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun("")] }),
// ─── DISCLAIMER ────────────────────────────────────────────────────────────
new Paragraph({
spacing: { after: 40 },
children: [new TextRun({
text: "DISCLAIMER: This protocol is a general rehabilitation guideline for arthroscopic lateral meniscus repair (all-inside technique). It is prepared based on the discharge summary of Mr. Abhishek Dadhich (Patient ID: 309057) and accepted clinical rehabilitation standards from MGH Sports Medicine, Texas Health, and Brigham & Women's Hospital. It must be supervised and modified by the treating physiotherapist and surgeon based on individual progress, pain levels, and clinical findings. Do not progress phases without meeting stated criteria.",
size: 18, color: "888888", italics: true
})]
}),
]
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/physio-protocol/Abhishek_Dadhich_Physio_Protocol.docx", buffer);
console.log("SUCCESS: Document created.");
});
cd /home/daytona/workspace/physio-protocol && node generate_abhishek_protocol.js…
~/physio-protocol/generate_abhishek_protocol.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/physio-protocol/generate_abhishek_protocol.js'
~/physio-protocol/generate_abhishek_protocol.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/physio-protocol/generate_abhishek_protocol.js'
cd /home/daytona/workspace/physio-protocol && node generate_abhishek_protocol.js…
python3 /home/daytona/workspace/scripts/office/validate.py /home/daytona/workspa…
python3 /home/daytona/skills/office/validate.py /home/daytona/workspace/physio-p…
Abhishek Dadhich Physio Protocol
Word Document · DOCX
| Modality | Dose |
|---|---|
| Cryotherapy (Ice pack) | 20 min every 1-2 hours while awake; after every session |
| Limb elevation | As much as possible above heart level |
| TENS / IFT | 10-15 min once daily for pain control |
| Compression bandage | As applied; change per surgeon instructions |
| Exercise | Sets x Reps | Notes |
|---|---|---|
| Quad Sets (isometric quad contraction) | 3 x 10, hold 10 sec | VMO activation - most important exercise |
| Straight Leg Raises (SLR) | 3 x 10 | Only if no extension lag; use NMES if weak |
| Ankle Pumps | 10 reps every hour | DVT prevention |
| Heel Prop / Prone Hang | 3-5 x 10 min daily | Priority - achieves 0° extension |
| Patellar Mobilisation | 2 x 1 min each direction | Gentle glides: medial, lateral, superior, inferior |
| Passive Knee Flexion (Heel slides) | Wk 1-2: 0-90° only | Passive only - do NOT force |
| Hip Abduction (Side-lying) | 3 x 15 reps | Support brace if standing |
| Passive Hamstring Stretch | 3 x 30 sec hold | With towel under ankle; NO active hamstring |
| Seated Knee Flexion (gravity assist) | 3 x 10, 5 sec hold | Unaffected leg supports on the way up |
| Modality | Dose |
|---|---|
| Cryotherapy | Continue after each exercise session, 15-20 min |
| IFT/TENS | Continue if pain still present |
| Therapeutic Ultrasound | 1 MHz, pulsed (1:4 ratio), 5-7 min over knee joint |
| Low Level Laser Therapy | Optional - reduces inflammation, promotes tissue repair |
| Exercise | Sets x Reps | Notes |
|---|---|---|
| ALL Phase I exercises | As prescribed | Continue progressing reps/sets |
| Passive Knee Flexion | Wk 3-4: Target 0-115° | Heel/wall slides; gentle overpressure if plateau |
| Mini-Squat / Wall Slide | 3 x 15 | Flexion MUST stay <90°; no deep squats |
| Bilateral Leg Press | 3 x 15, light resistance | Range 0-60° only; no deep angles |
| Hip Extension (prone/standing) | 3 x 15 | Strengthens glutes without knee stress |
| Calf Raises (bilateral) | 3 x 20 | Progress to single leg only after Week 4 |
| 4-Way Hip Exercises | 3 x 15 each direction | Flexion, extension, abduction, adduction |
| Stationary Cycle (low resistance) | 10-15 min | HIGH seat to limit flexion; start Week 3 if flexion ≥90° |
| Bilateral Weight Shifts | 3 x 1 min | Sagittal/frontal planes; progress to single-leg balance Week 4 |
| Prone Knee Flexion ROM | 3 x 10 | NO resisted hamstring curl - gravity only |
| Retro (Backward) Walking | 2 x 5 min | Builds quad and proprioception; start Week 4 if gait normal |
| Time | Exercise | Dose |
|---|---|---|
| Morning | Ice + Ankle pumps + Quad sets | Ice 20 min; Pumps 10x; Quads 3x10 |
| Morning | Heel prop (extension stretch) | 2 x 10 minutes |
| Mid-Morning | SLR + Hip abduction | 3 x 10-15 reps each |
| Afternoon | Heel slides + Patellar mobilisation | 3 x 10; patella 1 min each direction |
| Evening | Stationary bike (Week 3+) OR seated ROM | 10-15 minutes |
| Evening | Ice after exercises + limb elevation | 20 minutes |
| Bedtime | Prone hang or heel prop | 10 minutes |
| When | Visit | Expected Milestone |
|---|---|---|
| Week 1 (Day 7) | Surgeon: Wound check | No infection, extension 0°, SLR possible |
| Week 2 (Day 14) | Physio Assessment | Flexion 90°, SLR 3x20, minimal swelling |
| Week 3 (Day 21) | Physio Progress Review | Flexion 100-110°, bike started |
| Week 4 / 1 Month (Day 28) | Surgeon: Full Review + Motion Check | Flexion 115°, gait normal, Phase III planning |
| Week 6 | Surgeon: Brace & Strength Check | Brace likely discontinued, flexion 130° |
| Week 12 | Surgeon: Full Strength Assessment | Quad LSI >70%, near full ROM |
Protocol References: Massachusetts General Hospital Sports Medicine, Texas Health / Parker Orthopedics Meniscus Repair Protocol, Brigham & Women's Hospital Meniscal Repair Protocol. This protocol is adapted for an all-inside lateral meniscus repair and must be supervised by the treating physiotherapist and surgeon. Progress must be criteria-based, not time-based alone.