attachment
attachment

Prepare physiotherapy protocol for 1 month

Reading File
Searching the Web

physiotherapy protocol after arthroscopic lateral meniscus repair 1 month rehabilitation

Reading Web Page

https://www.massgeneral.org/assets/mgh/pdf/orthopaedics/spor…

Finding Sources
Reading File
Running Command

mkdir -p /home/daytona/workspace/physio-protocol && ls /home/daytona/workspace/p…

Writing File

~/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.");
});
Running Command

cd /home/daytona/workspace/physio-protocol && node generate_abhishek_protocol.js…

Reading File
Editing File

~/physio-protocol/generate_abhishek_protocol.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/physio-protocol/generate_abhishek_protocol.js'
Editing File

~/physio-protocol/generate_abhishek_protocol.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/physio-protocol/generate_abhishek_protocol.js'
Running Command

cd /home/daytona/workspace/physio-protocol && node generate_abhishek_protocol.js…

Running Command

python3 /home/daytona/workspace/scripts/office/validate.py /home/daytona/workspa…

Running Command

python3 /home/daytona/skills/office/validate.py /home/daytona/workspace/physio-p…

Here is the complete 1-month physiotherapy protocol for Mr. Abhishek Dadhich, based on his discharge summary.

Download

Abhishek Dadhich Physio Protocol

Word Document · DOCX


POST-OPERATIVE PHYSIOTHERAPY PROTOCOL

Left Knee Arthroscopic Lateral Meniscus Repair (All-Inside)

Patient: Mr. Abhishek Dadhich | Age: 39 Years/Male | Surgeon: Dr. Nilesh Kamat | Surgery Date: 23 June 2026

IMPORTANT PRECAUTIONS (Read Before Starting)

  • NO active resisted hamstring exercises or open-chain knee flexion for 8 weeks
  • NO deep squatting (>90° flexion) for minimum 8 weeks
  • NO tibial rotation or twisting movements during the first 4 weeks
  • NO submerging knee in water for 4 weeks
  • Brace LOCKED at 0° (full extension) during all walking for first 4 weeks
  • Use 2 crutches for weight bearing as instructed
  • Stop immediately if sharp pain, locking, or significant swelling occurs

PHASE I - MAXIMUM PROTECTION

Weeks 1-2 (Days 1-14 Post-Op)

Goals:
  • Control pain, swelling, and inflammation
  • Protect the meniscal repair - no excess stress on sutures
  • Restore full passive knee extension (0°)
  • Achieve 0-90° flexion by end of Week 2
  • Activate quadriceps and regain muscle control
Weight Bearing & Brace:
  • Touch-down / toe-touch only with 2 crutches
  • Brace locked at 0° during all ambulation
  • Brace can be unlocked 0-90° while sitting or lying (NOT during walking)
  • Wear brace at night
Modalities:
ModalityDose
Cryotherapy (Ice pack)20 min every 1-2 hours while awake; after every session
Limb elevationAs much as possible above heart level
TENS / IFT10-15 min once daily for pain control
Compression bandageAs applied; change per surgeon instructions
Therapeutic Exercises (3x per day):
ExerciseSets x RepsNotes
Quad Sets (isometric quad contraction)3 x 10, hold 10 secVMO activation - most important exercise
Straight Leg Raises (SLR)3 x 10Only if no extension lag; use NMES if weak
Ankle Pumps10 reps every hourDVT prevention
Heel Prop / Prone Hang3-5 x 10 min dailyPriority - achieves 0° extension
Patellar Mobilisation2 x 1 min each directionGentle glides: medial, lateral, superior, inferior
Passive Knee Flexion (Heel slides)Wk 1-2: 0-90° onlyPassive only - do NOT force
Hip Abduction (Side-lying)3 x 15 repsSupport brace if standing
Passive Hamstring Stretch3 x 30 sec holdWith towel under ankle; NO active hamstring
Seated Knee Flexion (gravity assist)3 x 10, 5 sec holdUnaffected leg supports on the way up
Criteria to Progress to Phase II (ALL must be met):
  • Full passive extension (0°, equal to other side)
  • Knee flexion ROM ≥90°
  • Quad contraction with visible patella glide
  • 3 sets of 20 SLRs without extension lag
  • Minimal pain and swelling at rest

PHASE II - MODERATE PROTECTION & RANGE RESTORATION

Weeks 3-4 (Days 15-28 Post-Op)

Goals:
  • Progress knee flexion ROM toward 115° by Week 4
  • Normalise gait pattern (progress from 2 crutches toward 1 crutch)
  • Strengthen quadriceps to 50% limb symmetry index (LSI)
  • Begin closed-chain lower extremity strengthening
  • Improve proprioception and neuromuscular control
Weight Bearing & Brace:
  • Week 3: Continue touch-down weight bearing; brace locked at 0° for walking
  • Week 4: Progress to partial weight bearing if quad control is adequate (surgeon's discretion)
  • Brace unlocked 0-90° when sitting or lying
Modalities:
ModalityDose
CryotherapyContinue after each exercise session, 15-20 min
IFT/TENSContinue if pain still present
Therapeutic Ultrasound1 MHz, pulsed (1:4 ratio), 5-7 min over knee joint
Low Level Laser TherapyOptional - reduces inflammation, promotes tissue repair
Therapeutic Exercises (2-3x per day; formal PT 2-3x per week):
ExerciseSets x RepsNotes
ALL Phase I exercisesAs prescribedContinue progressing reps/sets
Passive Knee FlexionWk 3-4: Target 0-115°Heel/wall slides; gentle overpressure if plateau
Mini-Squat / Wall Slide3 x 15Flexion MUST stay <90°; no deep squats
Bilateral Leg Press3 x 15, light resistanceRange 0-60° only; no deep angles
Hip Extension (prone/standing)3 x 15Strengthens glutes without knee stress
Calf Raises (bilateral)3 x 20Progress to single leg only after Week 4
4-Way Hip Exercises3 x 15 each directionFlexion, extension, abduction, adduction
Stationary Cycle (low resistance)10-15 minHIGH seat to limit flexion; start Week 3 if flexion ≥90°
Bilateral Weight Shifts3 x 1 minSagittal/frontal planes; progress to single-leg balance Week 4
Prone Knee Flexion ROM3 x 10NO resisted hamstring curl - gravity only
Retro (Backward) Walking2 x 5 minBuilds quad and proprioception; start Week 4 if gait normal
Criteria to Progress to Phase III (at 4-week review):
  • Knee flexion ≥120°, extension equal to contralateral side
  • Normalised gait (no limp)
  • Minimal to no joint effusion
  • Quad strength LSI ≥50%
  • 1-minute single leg squat without pain

HOME EXERCISE DAILY CHECKLIST

TimeExerciseDose
MorningIce + Ankle pumps + Quad setsIce 20 min; Pumps 10x; Quads 3x10
MorningHeel prop (extension stretch)2 x 10 minutes
Mid-MorningSLR + Hip abduction3 x 10-15 reps each
AfternoonHeel slides + Patellar mobilisation3 x 10; patella 1 min each direction
EveningStationary bike (Week 3+) OR seated ROM10-15 minutes
EveningIce after exercises + limb elevation20 minutes
BedtimeProne hang or heel prop10 minutes

MILESTONE FOLLOW-UP SCHEDULE

WhenVisitExpected Milestone
Week 1 (Day 7)Surgeon: Wound checkNo infection, extension 0°, SLR possible
Week 2 (Day 14)Physio AssessmentFlexion 90°, SLR 3x20, minimal swelling
Week 3 (Day 21)Physio Progress ReviewFlexion 100-110°, bike started
Week 4 / 1 Month (Day 28)Surgeon: Full Review + Motion CheckFlexion 115°, gait normal, Phase III planning
Week 6Surgeon: Brace & Strength CheckBrace likely discontinued, flexion 130°
Week 12Surgeon: Full Strength AssessmentQuad LSI >70%, near full ROM

RED FLAGS - Seek Immediate Medical Attention

  • Sudden severe increase in pain, especially with a locking or catching sensation
  • Rapid worsening of knee swelling (joint effusion)
  • Signs of infection: redness, warmth, wound discharge, fever above 38°C
  • Calf pain, swelling, or redness (possible DVT)
  • Persistent numbness or pins-and-needles in the foot
  • Wound edges separating or sutures loosening

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.
This is a shared conversation. Sign in to Orris to start your own chat.