~/bpt-curriculum/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, Header, Footer, PageBreak,
TableOfContents, StyleLevel, UnderlineType
} = require('docx');
const fs = require('fs');
// ── Color palette ──────────────────────────────────────────────────────────
const DARK_BLUE = "1A3C5E";
const MID_BLUE = "2E6DA4";
const LIGHT_BLUE = "D6E4F0";
const ACCENT = "E8F4FD";
const WHITE = "FFFFFF";
const DARK_TEXT = "1A1A2E";
const GRAY_ROW = "F5F8FA";
// ── Helper: thin border set ────────────────────────────────────────────────
const thinBorder = {
top: { style: BorderStyle.SINGLE, size: 4, color: "AACCE0" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "AACCE0" },
left: { style: BorderStyle.SINGLE, size: 4, color: "AACCE0" },
right: { style: BorderStyle.SINGLE, size: 4, color: "AACCE0" },
};
const headerBorder = {
top: { style: BorderStyle.SINGLE, size: 8, color: DARK_BLUE },
bottom: { style: BorderStyle.SINGLE, size: 8, color: DARK_BLUE },
left: { style: BorderStyle.SINGLE, size: 8, color: DARK_BLUE },
right: { style: BorderStyle.SINGLE, size: 8, color: DARK_BLUE },
};
// ── Helper: make a heading paragraph ──────────────────────────────────────
function h1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 360, after: 120 },
children: [new TextRun({ text, bold: true, color: WHITE, size: 28 })],
shading: { type: ShadingType.SOLID, color: DARK_BLUE },
indent: { left: 200, right: 200 },
});
}
function h2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 280, after: 80 },
children: [new TextRun({ text, bold: true, color: DARK_BLUE, size: 24 })],
border: {
bottom: { style: BorderStyle.SINGLE, size: 6, color: MID_BLUE },
},
});
}
function h3(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_3,
spacing: { before: 200, after: 60 },
children: [new TextRun({ text, bold: true, color: MID_BLUE, size: 22 })],
});
}
function h4(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_4,
spacing: { before: 160, after: 40 },
children: [new TextRun({ text, bold: true, italics: true, color: DARK_TEXT, size: 21 })],
});
}
function body(text, spacing = { before: 60, after: 80 }) {
return new Paragraph({
spacing,
children: [new TextRun({ text, size: 21, color: DARK_TEXT })],
});
}
function bullet(text) {
return new Paragraph({
bullet: { level: 0 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, size: 21, color: DARK_TEXT })],
});
}
function subbullet(text) {
return new Paragraph({
bullet: { level: 1 },
spacing: { before: 30, after: 30 },
children: [new TextRun({ text, size: 20, color: DARK_TEXT })],
});
}
function pageBreak() {
return new Paragraph({ children: [new PageBreak()] });
}
function spacer() {
return new Paragraph({ spacing: { before: 60, after: 60 }, children: [] });
}
// ── Helper: make a table ───────────────────────────────────────────────────
function makeTable(headers, rows, colWidths) {
const headerRow = new TableRow({
tableHeader: true,
children: headers.map((h, i) =>
new TableCell({
width: { size: colWidths[i], type: WidthType.DXA },
shading: { type: ShadingType.SOLID, color: DARK_BLUE },
borders: headerBorder,
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 60 },
children: [new TextRun({ text: h, bold: true, color: WHITE, size: 19 })],
})],
})
),
});
const dataRows = rows.map((row, ri) =>
new TableRow({
children: row.map((cell, ci) =>
new TableCell({
width: { size: colWidths[ci], type: WidthType.DXA },
shading: { type: ShadingType.SOLID, color: ri % 2 === 0 ? WHITE : GRAY_ROW },
borders: thinBorder,
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
spacing: { before: 60, after: 60 },
indent: { left: 80 },
children: [new TextRun({ text: String(cell), size: 19, color: DARK_TEXT })],
})],
})
),
})
);
return new Table({
width: { size: 9200, type: WidthType.DXA },
rows: [headerRow, ...dataRows],
});
}
// ──────────────────────────────────────────────────────────────────────────
// DOCUMENT SECTIONS
// ──────────────────────────────────────────────────────────────────────────
const children = [];
// ── COVER ─────────────────────────────────────────────────────────────────
children.push(
new Paragraph({ spacing: { before: 1200 }, children: [] }),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 200, after: 60 },
children: [new TextRun({ text: "BACHELOR OF PHYSIOTHERAPY (BPT)", bold: true, size: 40, color: DARK_BLUE })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 60 },
children: [new TextRun({ text: "Curriculum Development & Clinical Rotation Blueprint", size: 30, color: MID_BLUE, italics: true })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 60 },
children: [new TextRun({ text: "Institutional Reference Document", size: 24, color: DARK_TEXT })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 200 },
children: [new TextRun({ text: "MPT Academic Standards | Prepared June 2026", size: 22, color: "777777" })],
}),
spacer(), spacer(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 100, after: 60 },
children: [new TextRun({ text: "CONFIDENTIAL — INSTITUTIONAL ACADEMIC DOCUMENT", bold: true, size: 20, color: "CC0000" })],
}),
pageBreak()
);
// ── PART 0: FOUNDATIONS ───────────────────────────────────────────────────
children.push(
h1("PART I: FOUNDATIONS OF CURRICULUM DEVELOPMENT"),
spacer(),
h2("1. Definitions of Curriculum"),
body("The word 'curriculum' derives from the Latin meaning 'runway' — a course one runs to reach a goal (Brubacher). Educators define it across a wide spectrum, from narrow subject-focused frameworks to broad life-experience models."),
spacer(),
makeTable(
["Authority / Source", "Definition"],
[
["Cunningham", "A tool in the hands of the artist (teacher) to mould his material (pupil) in accordance with his ideals in his studio (the school)."],
["Brubacher", "Derived from Latin 'runway' — a course one runs to reach a goal; a course of study."],
["Alberty & Alberty (1959)", "The sum total of student activities which the school sponsors for the purpose of achieving its objectives."],
["Doll R (1982)", "Embodies all experiences offered to learn under the auspices or direction of the school."],
["Heidgerken (for PT)", "All planned learning opportunities — subject matter, knowledge, skills, values, attitudes, and learning activities planned by faculty in classroom, laboratory, and clinical settings for a defined student group."],
["Florence Nightingale", "The systematic arrangement of the sum total of experiences planned by the school for a defined group of students to attain the aims of a particular educational program."],
],
[3200, 6000]
),
spacer(),
h2("2. The Curriculum Committee"),
body("The Curriculum Committee governs structural design and comprises six key participant entities:"),
bullet("Students"),
bullet("Teachers"),
bullet("Administration"),
bullet("State Board of Physical Therapy Examiners"),
bullet("State Department of Education"),
bullet("State Legislators"),
spacer(),
h2("3. Influencing Factors and Foundations"),
bullet("Philosophy of Physiotherapy Education — provides directive knowledge and guiding principles."),
bullet("Educational Psychology — addresses individual differences, evaluation, and learning dynamics."),
bullet("Society — addresses healthcare and social needs of patients, families, and communities."),
bullet("The Student — considers the learner holistically: intellectual, emotional, social, and physical dimensions."),
bullet("Life and Professional Activities — draws objectives from professional, community, and leisure domains."),
bullet("Knowledge and Scientific Disciplines — anchors PT in Humanities, Behavioral Sciences, and Physical Sciences."),
spacer(),
h2("4. The PISSE Development Model"),
body("The PISSE model governs holistic student training across all four BPT years. The ultimate goal is to develop a professional and well-integrated personality."),
spacer(),
makeTable(
["Dimension", "Focus Area", "BPT Application"],
[
["P — Physical", "Health, professional appearance, physical well-being", "Manual therapy, postural training, fitness"],
["I — Intellectual", "Intelligence, memory, problem-solving, creative thinking", "Case-based learning, clinical reasoning"],
["S — Spiritual", "Inner well-being, ethical grounding", "Professional ethics, patient-centered care"],
["S — Sociability", "Interpersonal relationships, teamwork", "Ward rounds, multidisciplinary team work"],
["E — Emotional Stability", "Psychological balance under pressure", "Palliative care, ICU, disability management"],
],
[2400, 3600, 3200]
),
spacer(),
h2("5. Structural Curriculum Patterns"),
makeTable(
["Pattern", "Description", "BPT Year Applied"],
[
["Subject-Centered", "Organized into distinct academic disciplines; transmits cultural heritage sequentially.", "Year 1"],
["Co-related", "Subjects remain distinct but are timed and thematically aligned to link disciplines.", "Year 2"],
["Experience-Centered", "Balances direct (clinical postings) and indirect (case presentations, simulation) experience.", "Year 3"],
["Integrated", "Blends previously isolated subjects into unified courses and experiences.", "Year 4"],
["Student-Centered", "Education built entirely around student interests and adaptive needs.", "All years (elective, tutorials)"],
["Activity-Centered", "Prioritizes active physical and intellectual engagement over passive memorization.", "Practical labs, all years"],
],
[2400, 4400, 2400]
),
spacer(),
h2("6. Core Principles of Curriculum Construction"),
makeTable(
["Principle", "Description"],
[
["Conservative Principle", "Preserves and transmits foundational traditional knowledge and standards."],
["Forward-Looking Principle", "Enables students to grow into progressive future professionals."],
["Creative Principle", "Develops individual creativity, unique interests, and positive attitudes."],
["Activity Principle", "Focuses on active engagement; optimal growth when body and mind experience learning."],
["Preparation for Life", "Structures students to face complex future challenges and professional roles."],
["Principle of Maturity", "Aligns course standards with the mental/physical development of target students."],
["Individual Differences", "Maintains flexibility to adjust for varying temperaments, skills, and abilities."],
["Vertical & Horizontal Continuity", "Each year builds on preceding work and serves as prerequisite for the next."],
["Linking with Life", "Directly reflects community characteristics and changing societal needs."],
["Comprehensiveness & Balance", "Balances economic, social, occupational, and spiritual elements equitably."],
["Flexibility & Elasticity", "Allows structural variations based on local contexts (rural vs. urban)."],
["Principle of Loyalties", "Fosters responsibility to family, school, community, country, and the world."],
],
[3200, 6000]
),
spacer(),
h2("7. Clinical Rotation Planning — Principles"),
body("A Rotation Plan (or Master Rotation Plan) is a comprehensive framework dictating: the specific clinical areas to which students are assigned, the precise duration of each posting, and the corresponding theoretical content to be covered concurrently."),
spacer(),
makeTable(
["Principle", "Application in BPT"],
[
["Strict Curriculum Alignment", "Theory completed before matching clinical posting begins."],
["Spatiotemporal Accuracy", "Right student group in the right department at the right time."],
["Pedagogical Progression", "Simple to complex, known to unknown, normal to abnormal."],
["Objective Awareness", "Educational outcomes communicated to students before each posting."],
["Qualified Supervision", "All clinical hours under credentialed supervisor; defined ratios."],
["Statutory Compliance", "Minimum hours meet or exceed IAP/University mandated benchmarks."],
["Rigorous Records Management", "Attendance, log books, competency checklists meticulously maintained."],
["Quality over Quantity", "Competency sign-off required; case write-ups, not merely hours."],
["Continuous Objective Evaluation", "Formative (Mini-CEX, DOPS) and summative evaluations each block."],
],
[3200, 6000]
),
pageBreak()
);
// ── YEAR 1 ────────────────────────────────────────────────────────────────
children.push(
h1("PART II: FIRST YEAR BPT — FOUNDATION SCIENCES PHASE"),
spacer(),
h2("Overview"),
body("Phase: Foundation Sciences | Pattern: Subject-Centered | Clinical Mode: Observational"),
body("PISSE Focus: Physical + Intellectual dimensions. Students build cognitive frameworks in basic sciences while developing professional discipline, laboratory skills, and introductory clinical observation competencies."),
spacer(),
h2("Aims"),
bullet("Equip students with structural and functional basis of the human body."),
bullet("Introduce the philosophical and scientific foundations of physiotherapy practice."),
bullet("Develop observational and introductory clinical skills through supervised clinical exposure."),
bullet("Cultivate professional attitudes, communication skills, and ethical awareness."),
bullet("Build academic skills required for a university-level professional program."),
spacer(),
h2("Theory & Practical Distribution"),
makeTable(
["Subject", "Theory Hours", "Practical Hours", "Total"],
[
["Anatomy (Regional, Systemic, Embryology, Histology)", "120", "80", "200"],
["Physiology", "100", "60", "160"],
["Biochemistry", "60", "40", "100"],
["Fundamentals of Physiotherapy", "80", "60", "140"],
["Psychology", "50", "20", "70"],
["Sociology", "40", "20", "60"],
["English & Communication Skills", "40", "20", "60"],
["Basic Biomechanics", "60", "40", "100"],
["TOTAL", "550", "340", "890"],
],
[3600, 1400, 1600, 1200]
),
spacer(),
h2("Key Subject Content Highlights"),
h3("Anatomy"),
bullet("Regional anatomy: upper limb, lower limb, thorax, abdomen, pelvis, head & neck, back."),
bullet("Systemic anatomy: skeletal, muscular, cardiovascular, respiratory, neurological systems."),
bullet("Embryology: organ development and clinically relevant anomalies."),
bullet("Histology: epithelial, connective, muscular, and nervous tissue types."),
bullet("Surface and living anatomy: palpation of bony landmarks, muscles, vessels."),
h3("Physiology"),
bullet("Cardiovascular physiology: cardiac cycle, ECG basics, hemodynamics."),
bullet("Respiratory physiology: lung volumes, gas exchange, mechanics of breathing."),
bullet("Neurophysiology: nerve conduction, reflexes, motor control."),
bullet("Muscle physiology: sliding filament theory, motor unit, fatigue."),
h3("Fundamentals of Physiotherapy"),
bullet("History and development of the physiotherapy profession."),
bullet("Scope of practice, professional ethics, and IAP guidelines."),
bullet("Basic assessment: subjective history-taking, objective examination."),
bullet("Patient handling, positioning, transfer techniques."),
bullet("Documentation: SOAP notes, clinical record-keeping, ward etiquette."),
spacer(),
h2("Year 1 — Master Rotation Plan"),
makeTable(
["Rotation Block", "Setting", "Duration", "Semester"],
[
["Hospital Orientation & Ward Familiarization", "General / Teaching Hospital", "2 weeks", "Semester 1"],
["OPD Physiotherapy — Observation", "OPD Physiotherapy Department", "4 weeks", "Semester 1"],
["Inpatient Ward Observation", "Medical/Surgical Ward", "2 weeks", "Semester 2"],
["Physiotherapy Assessment Skills Lab", "PT Skills Lab", "4 weeks (distributed)", "Semester 2"],
["Community Orientation Visit", "PHC / Community Setting", "1 week", "Semester 2"],
["TOTAL", "", "~200 hours", ""],
],
[3200, 2600, 1800, 1600]
),
spacer(),
h2("Year 1 Assessment Framework"),
makeTable(
["Component", "Marks"],
[
["University Theory Examination (each subject)", "80 marks Theory + 20 marks IA"],
["Practical / Viva Examination (per practical subject)", "50 marks"],
["Clinical Observation Log Book", "Pass/Fail — mandatory for promotion"],
["Internal Assessment (IA) Tests", "3 per semester per subject"],
],
[5600, 3600]
),
spacer(),
h2("Key Curricular Principles — Year 1"),
bullet("Conservative Principle: Anatomy, Physiology, Biochemistry are non-negotiable foundational content."),
bullet("Principle of Maturity: Content complexity matches students transitioning from +2 level."),
bullet("Vertical Continuity: All Year 1 content is explicitly prerequisite for Year 2 clinical sciences."),
bullet("Individual Differences: Tutorial groups of 15-20 + remedial sessions for varying science backgrounds."),
pageBreak()
);
// ── YEAR 2 ────────────────────────────────────────────────────────────────
children.push(
h1("PART III: SECOND YEAR BPT — BASIC CLINICAL SCIENCES PHASE"),
spacer(),
h2("Overview"),
body("Phase: Basic Clinical Sciences | Pattern: Co-related | Clinical Mode: Supervised Active Participation"),
body("PISSE Focus: Intellectual (I) and Sociability (S). Students develop clinical reasoning, begin functioning within multidisciplinary hospital teams, and apply core PT modalities in real settings."),
spacer(),
h2("Aims"),
bullet("Develop scientific understanding of disease processes, pharmacology, and clinical investigation."),
bullet("Introduce core PT modalities: exercise therapy and electrotherapy."),
bullet("Develop competency in basic PT assessment and clinical reasoning."),
bullet("Provide supervised, active clinical experience in medical and orthopedic settings."),
bullet("Introduce research thinking through biostatistics and scientific writing."),
spacer(),
h2("Theory & Practical Distribution"),
makeTable(
["Subject", "Theory Hours", "Practical Hours", "Total"],
[
["Pathology", "80", "40", "120"],
["Microbiology", "60", "40", "100"],
["Pharmacology", "80", "20", "100"],
["Exercise Therapy", "90", "90", "180"],
["Electrotherapy - I (Basic Physical Agents)", "90", "90", "180"],
["Clinical Diagnosis & Assessment in PT", "80", "60", "140"],
["Biomechanics & Kinesiology (Advanced)", "70", "60", "130"],
["Research Methodology & Biostatistics (Intro)", "40", "20", "60"],
["TOTAL", "590", "420", "1010"],
],
[3600, 1400, 1600, 1200]
),
spacer(),
h2("Key Subject Content Highlights"),
h3("Exercise Therapy (Central Modality Subject)"),
bullet("Types of muscle contraction: isometric, isotonic (concentric/eccentric), isokinetic."),
bullet("Passive, active, and resisted movements — manual and mechanical."),
bullet("Progressive Resistive Exercise (PRE): DeLorme and Oxford techniques."),
bullet("PNF: principles, diagonal patterns, contract-relax, hold-relax."),
bullet("Stretching: static, ballistic, dynamic, contract-relax."),
bullet("Mobilization principles: Maitland grades I-IV (introductory)."),
bullet("Aquatic therapy, aerobic conditioning, cardiovascular endurance training."),
h3("Electrotherapy - I"),
bullet("Superficial heating: hot packs, paraffin wax bath."),
bullet("Deep heating: SWD (continuous/pulsed), Microwave Diathermy, Ultrasound therapy."),
bullet("Cryotherapy: physiological effects, indications, contraindications."),
bullet("TENS: types, parameters, pain gate theory, endorphin theory."),
bullet("NMES: denervated vs innervated muscle, Faradic vs Galvanic current."),
h3("Pharmacology (PT-Relevant Focus)"),
bullet("NSAIDs, corticosteroids, analgesics — precautions during PT."),
bullet("Anticoagulants (Warfarin, Heparin) — precautions during electrotherapy."),
bullet("Anti-spasmodics, muscle relaxants — relevance to tone management."),
bullet("Cardioactive drugs (beta-blockers, diuretics) — exercise prescription implications."),
spacer(),
h2("Year 2 — Master Rotation Plan"),
makeTable(
["Rotation Block", "Setting", "Duration", "Timing"],
[
["Orthopedic OPD & Ward", "Orthopedic Department", "8 weeks", "Semester 3"],
["Medical Ward (General Medicine)", "Medical Ward", "6 weeks", "Semester 3"],
["Electrotherapy Clinical Lab", "PT Department", "4 weeks (integrated)", "Semester 3"],
["Surgical Ward (Post-operative PT)", "Surgical Ward", "6 weeks", "Semester 4"],
["Neurology Ward (Introductory)", "Neurology Ward", "4 weeks", "Semester 4"],
["Community Health Visit", "PHC / Community Camp", "2 weeks", "Semester 4"],
["TOTAL", "", "~400 hours", ""],
],
[3200, 2400, 1800, 1800]
),
spacer(),
h2("Year 2 Assessment Framework"),
makeTable(
["Component", "Marks"],
[
["University Theory Examination (per subject)", "80 marks Theory + 20 marks IA"],
["Practical / Viva Examination", "50 marks per practical subject"],
["Clinical Case Write-up Portfolio (min 5 per block)", "20 marks (internal)"],
["Mid-rotation Competency Assessment", "Pass/Fail — mandatory for promotion"],
["Structured Clinical Examination (SCE)", "50 marks"],
],
[5600, 3600]
),
spacer(),
h2("Key Curricular Principles — Year 2"),
bullet("Co-related Pattern: Pathology, Pharmacology, and Clinical Diagnosis are timed around clinical posting blocks."),
bullet("Vertical Continuity: Year 1 sciences link forward into Year 2 pathology and clinical assessment."),
bullet("Forward-Looking Principle: Evidence-Based Practice introduction prepares students for Years 3 and 4."),
bullet("Quality over Quantity: Minimum 5 detailed case write-ups per rotation block — not merely hours."),
pageBreak()
);
// ── YEAR 3 ────────────────────────────────────────────────────────────────
children.push(
h1("PART IV: THIRD YEAR BPT — APPLIED CLINICAL SPECIALTIES PHASE"),
spacer(),
h2("Overview"),
body("Phase: Applied Clinical Specialties | Pattern: Experience-Centered | Clinical Mode: Supervised Autonomous Practice"),
body("PISSE Focus: All five dimensions actively engaged. Particular emphasis on Sociability (S) — multidisciplinary team functioning — and Emotional Stability (E) — managing complex, high-dependency patients."),
spacer(),
h2("Aims"),
bullet("Develop advanced clinical competencies in musculoskeletal, neurological, cardiopulmonary, and pediatric PT."),
bullet("Introduce advanced electrotherapy modalities and evidence-based clinical decision-making."),
bullet("Develop Community-Based Rehabilitation (CBR) and public health physiotherapy skills."),
bullet("Cultivate critical appraisal skills through formal Research Methodology II education."),
bullet("Prepare students for the full supervised internship of Year 4 through increasing clinical autonomy."),
spacer(),
h2("Theory & Practical Distribution"),
makeTable(
["Subject", "Theory Hours", "Practical Hours", "Total"],
[
["Musculoskeletal & Sports Physiotherapy", "90", "90", "180"],
["Neurological Rehabilitation", "90", "90", "180"],
["Cardiopulmonary Physiotherapy", "70", "70", "140"],
["Pediatric Physiotherapy", "70", "70", "140"],
["Electrotherapy - II (Advanced Modalities)", "70", "70", "140"],
["Community Rehabilitation (CBR & Public Health)", "50", "70", "120"],
["Geriatric Physiotherapy", "50", "50", "100"],
["Research Methodology II & Dissertation Proposal", "50", "30", "80"],
["TOTAL", "540", "540", "1080"],
],
[3600, 1400, 1600, 1200]
),
spacer(),
h2("Key Subject Content Highlights"),
h3("Musculoskeletal & Sports PT"),
bullet("MSK: Fracture rehabilitation, soft tissue injuries, osteoarthritis, RA, ankylosing spondylitis."),
bullet("Spinal conditions: disc prolapse, spondylosis, acute LBP — McKenzie approach, stabilization exercises."),
bullet("Post-surgical rehab: TKR, THR, ACL reconstruction protocols."),
bullet("Manual therapy: Maitland grades I-IV, MET, soft tissue mobilization."),
bullet("Sports: field-side emergency management, return-to-sport (RTS) protocols, taping and strapping."),
h3("Neurological Rehabilitation"),
bullet("Assessment: Ashworth Scale, FIM, Barthel Index, coordination, sensation testing."),
bullet("Stroke: Bobath/NDT concept, task-oriented approach, CIMT, mirror therapy."),
bullet("SCI: ASIA classification, functional goals by level, respiratory management."),
bullet("Parkinson's: LSVT-BIG, treadmill training, dual-task training, fall prevention."),
bullet("CP: GMFCS classification, NDT, sensory integration therapy."),
h3("Cardiopulmonary PT"),
bullet("Cardiac rehabilitation: Phases I-IV, exercise prescription post-MI and post-CABG."),
bullet("Pulmonary rehab: COPD management, inspiratory muscle training."),
bullet("Chest PT: postural drainage, ACBT, PEP therapy, percussion and vibration."),
bullet("ICU physiotherapy: early mobilization, ventilator awareness, endotracheal suction assistance."),
h3("Electrotherapy - II (Advanced)"),
bullet("IFT (Interferential Therapy), EMG Biofeedback, FES for drop foot and upper limb rehab."),
bullet("Iontophoresis, HVPC for wound healing, ESWT for tendinopathy."),
bullet("Aquatic PT equipment: Hubbard tank, underwater treadmill."),
spacer(),
h2("Year 3 — Master Rotation Plan"),
makeTable(
["Rotation Block", "Setting", "Duration", "Timing"],
[
["Musculoskeletal / Orthopedic PT", "Orthopedic OPD + Sports PT Unit", "8 weeks", "Semester 5"],
["Neurology Ward & Stroke Rehab Unit", "Neurology / Neurorehabilitation Ward", "8 weeks", "Semester 5"],
["Cardiothoracic & Pulmonary Rehab", "CT Ward + Pulmonary Rehab Unit", "4 weeks", "Semester 5"],
["Pediatric Rehabilitation", "Pediatric Ward + Developmental PT Clinic", "4 weeks", "Semester 6"],
["Community Health / CBR Camp", "PHC, Rural Camp, School Visit", "4 weeks", "Semester 6"],
["Sports PT / Sports Medicine Unit", "Sports Medicine Center", "4 weeks", "Semester 6"],
["Geriatrics / Long-Term Care", "Geriatric Ward / Old Age Home", "2 weeks", "Semester 6"],
["TOTAL", "", "~600 hours", ""],
],
[3200, 2400, 1600, 2000]
),
spacer(),
h2("Year 3 — Batch Rotation Matrix (Two Batches)"),
makeTable(
["Weeks", "Batch A", "Batch B"],
[
["1-8", "Musculoskeletal OPD", "Neurology Ward"],
["9-12", "Cardiopulmonary", "Pediatrics"],
["13-16", "Community / CBR", "Sports Medicine"],
["17-20", "Neurology Ward", "Musculoskeletal OPD"],
["21-24", "Pediatrics", "Cardiopulmonary"],
["25-28", "Sports Medicine", "Community / CBR"],
["29-30", "Geriatrics", "Geriatrics"],
],
[2000, 3600, 3600]
),
spacer(),
h2("Year 3 Assessment Framework"),
makeTable(
["Component", "Marks"],
[
["University Theory Examination (per subject)", "80 marks Theory + 20 marks IA"],
["Practical / Viva Examination", "50 marks per practical subject"],
["Clinical Rotation Portfolio (all 6 blocks)", "30 marks (internal)"],
["Long-Case Presentation Assessment (3 per block)", "20 marks (internal)"],
["Research Methodology II & Dissertation Proposal", "50 marks (Internal + Viva)"],
["Structured Clinical Examination (SCE/OSCE)", "50 marks"],
],
[5600, 3600]
),
pageBreak()
);
// ── YEAR 4 ────────────────────────────────────────────────────────────────
children.push(
h1("PART V: FOURTH YEAR BPT — ADVANCED CLINICAL INTERNSHIP PHASE"),
spacer(),
h2("Overview"),
body("Phase: Professional Internship | Pattern: Integrated | Clinical Mode: Near-Autonomous with Consultative Supervision"),
body("PISSE Focus: All five dimensions fully realized. The ultimate curricular goal of the BPT programme is achieved: to develop a professional and well-integrated personality ready for entry into independent practice."),
spacer(),
h2("Aims"),
bullet("Consolidate and integrate all prior clinical learning into autonomous, supervised internship practice."),
bullet("Complete and defend a full original research dissertation."),
bullet("Develop competency in physiotherapy service management and administration."),
bullet("Prepare graduates for IAP national PT registration examinations."),
bullet("Ensure statutory compliance with IAP and University minimum clinical hour requirements for degree conferral."),
spacer(),
h2("Academic Components Distribution"),
makeTable(
["Component", "Hours / Duration", "Credit Weight"],
[
["Supervised Clinical Internship (Rotational)", "36 weeks (~1080 hours)", "Primary"],
["Dissertation — Execution, Analysis, Writing, Viva", "Continuous (parallel to rotations)", "100 marks"],
["Professional Ethics & Healthcare Management", "40 theory hours", "80 marks"],
["Evidence-Based Practice & Critical Appraisal", "30 seminar hours", "Integrated"],
["Community Physiotherapy Project", "4 weeks (within rotation)", "Pass/Fail"],
],
[3600, 2800, 2800]
),
spacer(),
h2("Didactic Content Highlights"),
h3("Professional Ethics & Healthcare Management"),
bullet("Physiotherapy code of ethics and professional conduct (IAP guidelines)."),
bullet("Informed consent, patient autonomy, confidentiality, duty of care."),
bullet("Medico-legal documentation, negligence, professional liability."),
bullet("Organizational structure and HR management of a PT department."),
bullet("Quality assurance: NABH standards, clinical audit, infection control management."),
bullet("Entrepreneurship: setting up private PT practice, business planning, marketing."),
h3("Dissertation Execution"),
bullet("Data collection and management (SPSS/R software)."),
bullet("Blinded data analysis and results write-up."),
bullet("Discussion linking findings to existing literature."),
bullet("Final dissertation: approximately 10,000-15,000 words."),
bullet("Dissertation Viva Voce before internal and external examiner panel."),
spacer(),
h2("Year 4 — Master Internship Rotation Plan"),
makeTable(
["Rotation Block", "Clinical Setting", "Duration", "Supervisor Ratio"],
[
["Orthopedics & Trauma Rehabilitation", "Orthopedic Ward + OPD", "6 weeks", "1:6"],
["Neurology & Neurorehabilitation", "Neurology Ward + Stroke Unit", "6 weeks", "1:6"],
["Cardiopulmonary Rehabilitation (incl. ICU-PT)", "Cardiac Rehab + ICU", "4 weeks", "1:4"],
["Pediatric Rehabilitation", "Pediatric Ward + CP Clinic", "4 weeks", "1:5"],
["Sports Physiotherapy", "Sports Medicine / PT Clinic", "4 weeks", "1:6"],
["Geriatrics & Long-Term Care", "Geriatric Ward / Rehab Centre", "3 weeks", "1:5"],
["Community Rehabilitation / Rural Camp", "PHC / CBR Field Posting", "4 weeks", "1:8"],
["Administration & Management", "PT Department Office / NABH Audit", "2 weeks", "1:all"],
["Elective Specialty (student choice)", "Pelvic Floor PT, Oncology PT, Hand Therapy, etc.", "3 weeks", "1:6"],
["TOTAL", "", "36 weeks", ""],
],
[2800, 2400, 1600, 1600]
),
spacer(),
h2("Year 4 — Multi-Batch Staggered Rotation Matrix (4 Batches)"),
makeTable(
["Block Period", "Batch A", "Batch B", "Batch C", "Batch D"],
[
["Weeks 1-6", "Orthopedics", "Neurology", "Cardiopulmonary + ICU", "Pediatrics"],
["Weeks 7-12", "Neurology", "Orthopedics", "Pediatrics", "Cardiopulmonary + ICU"],
["Weeks 13-16", "Sports PT", "Community", "Geriatrics", "Elective"],
["Weeks 17-20", "Community", "Sports PT", "Elective", "Geriatrics"],
["Weeks 21-22", "Administration", "Administration", "Administration", "Administration"],
["Weeks 23-25", "Elective", "Geriatrics", "Sports PT", "Community"],
["Weeks 26-28", "Geriatrics", "Elective", "Community", "Sports PT"],
["Weeks 29-34", "Cardiopulmonary", "Pediatrics", "Orthopedics", "Neurology"],
["Weeks 35-36", "Pediatrics", "Cardiopulmonary", "Neurology", "Orthopedics"],
],
[1800, 1850, 1850, 1850, 1850]
),
spacer(),
h2("Clinical Portfolio — Year 4 Requirements"),
body("Each student must maintain a Comprehensive Clinical Portfolio as mandatory documentation for degree conferral:"),
bullet("Daily attendance log (countersigned by supervisor every day)."),
bullet("Minimum 5 long-case write-ups per rotation block."),
bullet("Competency sign-off checklist per rotation block (all listed skills must be signed)."),
bullet("Mid-rotation and end-rotation supervisor evaluation forms."),
bullet("Reflective practice journal (minimum one entry per week)."),
bullet("Dissertation progress log."),
bullet("CPD log: journal clubs, case conferences, and guest lectures attended."),
spacer(),
h2("Year 4 Assessment Framework"),
makeTable(
["Component", "Marks"],
[
["Theory: Professional Ethics & Healthcare Management", "80 marks Theory + 20 marks IA"],
["Dissertation Submission & Viva Voce", "100 marks"],
["Structured Clinical Examination (Long case + OSCE)", "100 marks"],
["Clinical Portfolio (all rotation blocks)", "50 marks"],
["Community Physiotherapy Project Report", "Pass/Fail"],
["Internship Completion Certificate (Statutory)", "Mandatory — required for degree conferral"],
],
[5600, 3600]
),
spacer(),
h2("Key Curricular Principles — Year 4"),
bullet("Preparation for Life: Every element prepares the student for independent professional practice."),
bullet("Integrated Pattern: Clinical practice, research, management, ethics, and community are fused."),
bullet("Comprehensiveness & Balance: 9 rotation blocks ensure no domain is missed."),
bullet("Flexibility & Elasticity: Elective block allows individual career-aligned specialty choice."),
bullet("Principle of Loyalties: Professional ethics and reflective journal cultivate responsibility to patients and profession."),
pageBreak()
);
// ── SUMMARY TABLE ─────────────────────────────────────────────────────────
children.push(
h1("PART VI: FOUR-YEAR PROGRAMME SUMMARY"),
spacer(),
h2("Programme Overview Matrix"),
makeTable(
["Year", "Phase", "Pattern", "PISSE Focus", "Clinical Mode", "Total Hours"],
[
["Year 1", "Foundation Sciences", "Subject-Centered", "Physical + Intellectual", "Observational", "~890"],
["Year 2", "Basic Clinical Sciences", "Co-related", "Intellectual + Sociability", "Supervised Participation", "~1010"],
["Year 3", "Applied Specialties", "Experience-Centered", "All Five Dimensions", "Supervised Autonomous", "~1080"],
["Year 4", "Professional Internship", "Integrated", "All — Fully Realized", "Near-Autonomous", "~1150"],
],
[900, 1700, 1600, 1800, 1800, 1200]
),
spacer(),
h2("Master Rotation Plan — All Four Years"),
makeTable(
["Clinical Area", "Year 1", "Year 2", "Year 3", "Year 4", "Total"],
[
["Basic PT / OPD Observation", "6 wks", "-", "-", "-", "6 wks"],
["Medical-Surgical Ward", "-", "10 wks", "4 wks", "6 wks", "20 wks"],
["Orthopedics / MSK", "-", "8 wks", "8 wks", "6 wks", "22 wks"],
["Neurology / Neurorehab", "-", "4 wks", "8 wks", "6 wks", "18 wks"],
["Cardiopulmonary", "-", "-", "4 wks", "4 wks", "8 wks"],
["Pediatrics", "-", "-", "4 wks", "4 wks", "8 wks"],
["Community / CBR", "-", "2 wks", "4 wks", "4 wks", "10 wks"],
["Sports PT", "-", "-", "4 wks", "4 wks", "8 wks"],
["Geriatrics", "-", "-", "2 wks", "3 wks", "5 wks"],
["Administration", "-", "-", "-", "2 wks", "2 wks"],
["Elective", "-", "-", "-", "3 wks", "3 wks"],
],
[2400, 1360, 1360, 1360, 1360, 1360]
),
spacer(),
h2("Programme-Wide Assessment Summary"),
makeTable(
["Year", "Theory Exams", "Practical / Viva", "Clinical Portfolio", "Special Component"],
[
["Year 1", "5 subjects × 100 marks", "4 practicals × 50 marks", "Log Book (Pass/Fail)", "—"],
["Year 2", "7 subjects × 100 marks", "5 practicals × 50 marks", "Case Portfolio 20 marks", "SCE 50 marks"],
["Year 3", "8 subjects × 100 marks", "6 practicals × 50 marks", "Rotation Portfolio 30 marks", "Dissertation Proposal + OSCE"],
["Year 4", "1 subject × 100 marks", "OSCE 100 marks", "Portfolio 50 marks", "Dissertation 100 marks"],
],
[900, 2200, 2000, 2000, 2100]
),
spacer(),
h2("Conclusion"),
body("The four-year BPT curriculum, when designed on these foundational principles, produces a well-integrated professional — the ultimate goal articulated by the PISSE model. The programme progresses deliberately from pure foundational science (Year 1) through applied clinical sciences (Year 2), specialty clinical practice (Year 3), and professional consolidation through supervised internship (Year 4)."),
spacer(),
body("The Master Rotation Plan serves as the operational backbone ensuring structured, gap-free, non-overlapping clinical exposure across all major physiotherapy specialties, in strict alignment with IAP and University statutory norms. Each year is governed by the core curricular principles of maturity, individual differences, vertical continuity, linking with life, and preparation for future professional responsibilities."),
spacer(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 400, after: 200 },
shading: { type: ShadingType.SOLID, color: LIGHT_BLUE },
children: [
new TextRun({ text: "Confidential — Institutional Academic Document", bold: true, size: 18, color: DARK_BLUE }),
new TextRun({ text: " | Prepared June 2026 | MPT Academic Standards", size: 18, color: "555555" }),
],
})
);
// ── BUILD DOCUMENT ─────────────────────────────────────────────────────────
const doc = new Document({
styles: {
default: {
document: {
run: { font: "Calibri", size: 21, color: DARK_TEXT },
},
},
},
sections: [{
properties: {
page: {
margin: { top: 1080, bottom: 1080, left: 1200, right: 1200 },
},
},
headers: {
default: new Header({
children: [
new Paragraph({
alignment: AlignmentType.RIGHT,
shading: { type: ShadingType.SOLID, color: DARK_BLUE },
spacing: { before: 60, after: 60 },
children: [
new TextRun({ text: "BPT Curriculum Development & Clinical Rotation Blueprint ", bold: true, color: WHITE, size: 18 }),
],
}),
],
}),
},
footers: {
default: new Footer({
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
border: { top: { style: BorderStyle.SINGLE, size: 4, color: MID_BLUE } },
spacing: { before: 60 },
children: [
new TextRun({ text: "Confidential — Institutional Academic Document | Page ", size: 17, color: "666666" }),
new TextRun({ children: [PageNumber.CURRENT], size: 17, color: "666666" }),
new TextRun({ text: " of ", size: 17, color: "666666" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 17, color: "666666" }),
],
}),
],
}),
},
children,
}],
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/bpt-curriculum/BPT_Curriculum_Framework.docx", buffer);
console.log("SUCCESS: Document written.");
});