1.Shoulder Dynamic Stabilizers: Understand the role of the rotator cuff muscles in stabilizing the humeral head. 2.Lateral Shoulder Pain: Link this specific presentation directly to rotator cuff disease. 3.Infraspinatus Function: Know that weakness in shoulder external rotation points to an injury of the infraspinatus muscle. 4.Adhesive Capsulitis: Identify frozen shoulder by its classic restriction of both active and passive ROM. 5.Forearm Rotation Joint: Remember that pronation and supination occur at the proximal radioulnar joint. 6.Epicondylitis Differentiation: I.Lateral epicondylitis (Tennis elbow) causing lateral elbow pain. II.Medial epicondylitis (Golfer's elbow) causing medial elbow pain. 7.Elbow Palpation: Locate the radial head immediately distal to the lateral epicondyle. 8.Nerve Vulnerability: Study the ulnar nerve at the cubital tunnel and its injury presentation. 9.Carpal Tunnel Syndrome: Identify median nerve compression as the root cause of carpal tunnel symptoms. 10.Scaphoid Fracture (FOOSH): Core knowledge regarding fall on an outstretched hand, anatomical snuffbox tenderness, and the use of MRI for occult fractures. 11.Tendon Integrity: Associate the inability to flex fingers with a flexor tendon injury. 12.Knee Twisting Mechanisms: Know that twisting injuries heavily damage ligaments and cause hemarthrosis (rapid swelling). 13.Ankle Sprains: Recall that inversion/twisting injuries typically sprain the lateral ligaments 14.Ottawa Ankle Rules: Memorize the key criterion for ordering an X-ray: the inability to bear weight. 15.Vascular Assessments: Learn to assess the dorsalis pedis pulse in ankle/foot trauma. 16.Achilles Tendon Rupture: Master the Thompson test as the definitive diagnostic maneuver. 17.Knee Dislocation Emergency: Focus on popliteal artery vulnerability and why a CT angiography is mandatory even if distal pulses seem normal 18.Nerve Injuries of the Leg: Connect common peroneal nerve injury with the clinical sign of foot drop. 19.Pelvic Fractures: I.Usually caused by high-energy trauma. II.an trigger massive hemorrhage and shock. III.Strongly associated with bladder injury (detected via hematuria). IV.Pelvic Compression Protocol: Remember this test must be performed only once to avoid worsening internal bleeding 20.First-Line Imaging: Solidify the principle that X-ray is always the initial investigation for fractures/dislocations, while CT scans are reserved for complex fractures and MRI for soft tissue structures. 21.FAST Ultrasound: Understand that FAST is utilized for rapid screening of intra-abdominal 22.Cast Care Fundamentals: Know that casts immobilize and maintain bone alignment, and the limb must be elevated immediately to reduce edema. 23.Neurovascular Post-Reduction Cheeks: Remember to always check neurovascular status immediately after reducing a dislocated joint. 24.The "5 Ps" Matrix: Memorize the components: Pain, Pallor, Pulse, Paresthesia, and Paralysis. 25.Compartment Syndrome Signs: Identify severe pain out of proportion (especially on passive stretch) as the earliest, most vital warning sign. 26.Surgical Emergencies: Recognize tight casts and rising compartment pressure as emergencies requiring an urgent fasciotomy. 27.ATLS Guidelines: Understand the primary survey hierarchy (ABCDE protocol); treating life-threatening conditions always takes precedence over fracture fixation. 28.Fracture Treatment Choices: Classify management into conservative (e.g., cast immobilization for stable fractures) and surgical (e.g., plates, nails for displaced or unstable fractures). 29.What is the correct sequence in musculoskeletal evaluation? A. Physical exam→ History → Imaging B. Imaging History → Physical exam C. History Physical exam→ Investigations D. Imaging Physical exam → History Correct answer: C 30.Which component of the clinical assessment often provides the most important diagnost information? A. Imaging B. Laboratory tests C. History taking D. Special tests Correct answer: C 31.Which of the following pain characteristics suggests inflammatory pathology? A. Pain worse with activity B. Pain relieved by rest C. Night pain and morning stiffness D. Pain only after trauma Correct answer: C 32.A twisting injury of the knee most commonly results in: A. Fracture B. Ligament injury C. Infection D. Tumor Correct answer: B 32.Question 5 Which of the following is considered a red flag in musculoskeletal history? A. Pain after exercise B. Mild swelling C. Night pain D. Local tendemess Correct answer: C 33.Question 6 What is the first step in physical examination of a joint? A. Palpation B. Inspection C. Special tests D. Strength testing Correct answer: B 34.Lateral elbow pain is most commonly associated with: A. Olecranon bursitis B. Medial epicondylitis C. Lateral epicondylitis D. Ulnar nerve entrapment Correct answer: C 35.Which structure is palpated just distal to the lateral epicondyle? Which procure in tribesel just draai to the lateral spicorlyde A. Olecranon B. Radial head C. Coronoid process D. Ulnar nerve Correct answer: B 36.Pain over the medial epicondyle is most likely due to: A. Tennis elbow B. Golfer's elbow C. Olecranon bursitis D. Radial fracture 37.Which nerve is most commonly affected at the elbow? A. Radial nerve B. Median nerve C. Ulnar nerve D. Axillary nerve Correct answer: C 38.What is the first-line imaging modality in elbow trauma? A. MRI B. CT scan C. Ultrasound D. X-ray 39.What is the first-line imaging modality in elbow trauma? A. MRI B. CT scan C. Ultrasound D. X-ray Correct answer: D 40.Which modality is best for evaluating soft tissue structures of the elbow? A. X-ray B. CT scan C. MRI D. Fluoroscopy Correct answer: C 41.The primary purpose of a cast is to: A. Reduce pain only B. Improve circulation C. Immobilize and maintain alignment D. Prevent infection Correct answer: C 42.Which of the following is the MOST important immediate care after applying a cast? A. Remove the cast B. Elevate the limb C. Start physiotherapy D. Give antibiotics. Correct answer: B. Answer me these question from pdfs and general orthopedic for mcqs medical exam
cd /home/daytona/workspace/attachments/55f65a5c-0e1e-4b2c-a000-6f0895bbb578 && python3 -c " import pdfplumber, os files = { '1_MSK': '1 Examination of the Musculoskeletal System.pdf', '2_Shoulder': '2 Shoulder_Arm_Examination_with_notes.pdf', '3_Elbow': '3 elbow_forearm.pdf', '4_Cast': 'bài 4 Cast_Fixation_Care.pdf', '5_Ankle': 'bài 5 ankle_foot.pdf', '6_Knee': 'bài 6 Thigh_Knee_Examination.pdf', '7_Wrist': 'bài 7 Wrist_Hand_Examination.pdf', '8_Pelvis': 'bài 8 Pelvis_Hip_Examination.pdf', '9_Treatment': 'bài 9 điều trị chấn thương chỉnh hình.pdf', } for key, fname in files.items(): print(f'\n\n========== {key}: {fname} ==========') try: with pdfplumber.open(fname) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- Page {i+1} ---') print(text[:3000]) except Exception as e: print(f'ERROR: {e}') " 2>&1 | head -600
cd /home/daytona/workspace/attachments/55f65a5c-0e1e-4b2c-a000-6f0895bbb578 && python3 -c " import pdfplumber files = { '5_Ankle': 'bài 5 ankle_foot.pdf', '6_Knee': 'bài 6 Thigh_Knee_Examination.pdf', '7_Wrist': 'bài 7 Wrist_Hand_Examination.pdf', '8_Pelvis': 'bài 8 Pelvis_Hip_Examination.pdf', '9_Treatment': 'bài 9 điều trị chấn thương chỉnh hình.pdf', } for key, fname in files.items(): print(f'\n\n========== {key}: {fname} ==========') try: with pdfplumber.open(fname) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- Page {i+1} ---') print(text) except Exception as e: print(f'ERROR: {e}') " 2>&1
"Lateral → cuff"
"External rotation" is listed as a specific muscle strength test.
"Capsular restriction"
"Global: frozen shoulder"
"Proximal radioulnar" joint is listed as one of the three elbow joints.
"Pronation-supination"
"Lateral → tennis elbow" "Medial → golfer's"
| Condition | Location | Pain | Mechanism |
|---|---|---|---|
| Lateral epicondylitis (Tennis elbow) | Lateral elbow | Lateral epicondyle | Wrist extensor overuse (Cozen's test +) |
| Medial epicondylitis (Golfer's elbow) | Medial elbow | Medial epicondyle | Wrist flexor overuse (Golfer's test +) |
"Epicondyles, Olecranon, Radial head"
"Ulnar nerve"
"Tinel sign" (performed over the cubital tunnel for ulnar nerve)
"Carpal tunnel, Phalen, Tinel"
| Feature | Detail |
|---|---|
| Cause | FOOSH (Fall On OutStretched Hand) |
| Symptoms | Anatomical snuffbox tenderness |
| Risk | Avascular Necrosis (AVN) - proximal pole has no direct blood supply |
| Initial imaging | X-ray (may be normal initially) |
| Occult fracture | MRI is the gold standard for occult/missed scaphoid fractures |
"Snuffbox tenderness, Axial compression pain"
"Flexor: cannot flex" "Extensor: cannot extend"
"Hemarthrosis, Inability to bear weight, Deformity"
"Lateral → ligament sprain"
"Ligaments: ATFL, CFL, Deltoid"
"Unable to bear weight" = red flag requiring X-ray
"Dorsalis pedis pulse, Posterior tibial pulse, Sensation"
"Thompson test"
"Popliteal artery: limb-threatening"
"Doppler, CTA"
"Peroneal nerve: foot drop"
"High-energy trauma, Pain, Inability to stand" (Trauma History slide)
"Potential sign of shock or severe problem" (Red Flags slide) "Pain, Deformity, Shock" (Pelvic Fracture Signs slide) The pelvis contains large vessels (iliac vessels). Pelvic ring fractures can cause 4+ liters of blood loss into the retroperitoneal space - a life-threatening emergency.
"Bladder - associated injury" (Associated Injuries slide) "Hematuria, Suprapubic pain, Urinary retention" (Bladder Injury slide) Hematuria is the key indicator of bladder/urethral injury in pelvic fractures.
"Gentle compression, Avoid repetition" (Pelvic Exam slide) Repeat compression worsens bleeding by disrupting clots. Perform once only.
| Modality | Use |
|---|---|
| X-ray | ALWAYS first-line for fractures/dislocations |
| CT | Complex fractures, bone detail, pelvic fractures |
| MRI | Soft tissue (ligaments, tendons), occult fractures (scaphoid) |
| Ultrasound | Rotator cuff, biceps tendon, dynamic assessment, FAST scan |
"FAST: Bleeding detection using ultrasound"
"Immobilization, Maintain alignment, Promote healing"
"Elevation: Raise the injured limb above heart level to reduce swelling"
"Reduction → Immobilization → Check neurovascular"
| P | What to Assess |
|---|---|
| Pain | Pain in the affected area (especially out of proportion) |
| Pallor | Skin color changes indicating poor blood flow |
| Pulse | Pulse quality and rate in the affected limb |
| Paresthesia | Numbness or tingling (sensory change) |
| Paralysis | Muscle weakness or inability to move |
"Severe Pain: Intense pain that can be persistent and high in intensity" "Pain on Passive Stretch: Discomfort or pain experienced when a muscle is stretched passively, often a sign of muscle or nerve pathology, such as in compartment syndrome"
"Severe pain, Pain on passive stretch, Emergency"
"Compartment syndrome, Pressure sores, Tight cast"
"Emergency"
"Airway: Ensure clear and secure" "Breathing & Circulation: Assess and address immediately" "Disability & Exposure: Check neurological responsiveness, expose patient" "Life before limb"
| Letter | Priority |
|---|---|
| A | Airway (with cervical spine control) |
| B | Breathing and ventilation |
| C | Circulation and hemorrhage control |
| D | Disability (neurological status, GCS) |
| E | Exposure and Environment |
"Casting, Splinting, Stable fractures"
"ORIF, Intramedullary nail, External fixation"
"Displacement, Instability, Open fracture, Neurovascular injury"
| Conservative | Surgical |
|---|---|
| Cast/splint | Plate + screws (ORIF) |
| Stable, non-displaced fractures | Intramedullary nail |
| Closed, no neurovascular injury | External fixator |
| Open fracture, displaced, unstable |
Step 1: History | Step 2: Physical Exam | Step 3: Investigations
"Clinical exam is most important" "Diagnosis = History + Exam + Investigations"
"Foundation of diagnosis, Guides imaging, Reduces unnecessary tests"
"Night pain" listed as a red flag
"Hemarthrosis" (blood in joint from ligament tear)
Twisting = soft tissue mechanism (not fracture mechanism)
"Night pain, Weight loss, Neurological deficit"
"Deformity, Swelling, Muscle wasting"
"Look → Feel → Move → Special tests"
"Lateral → tennis elbow"
"Epicondyles, Olecranon, Radial head"
"Medial → golfer's"
"X-ray: First-line, AP + lateral, Include joints"
"First-line, Bone alignment, Fracture detection"
"CT → complex fracture, MRI → soft tissue"
"Immobilization, Maintain alignment, Promote healing"
"Elevation: Raise the injured limb above heart level to reduce swelling"
| Topic | Key Fact |
|---|---|
| Rotator cuff | Dynamic stabilizer; 4 muscles (SITS) |
| Lateral shoulder pain | Rotator cuff disease |
| External rotation weakness | Infraspinatus injury |
| Frozen shoulder | Active AND passive ROM restricted |
| Pronation/supination | Proximal radioulnar joint |
| Lateral elbow pain | Lateral epicondylitis (Tennis elbow) |
| Medial elbow pain | Medial epicondylitis (Golfer's elbow) |
| Just distal to lateral epicondyle | Radial head |
| Most vulnerable elbow nerve | Ulnar nerve (cubital tunnel) |
| Carpal tunnel | Median nerve compression |
| FOOSH + snuffbox tenderness | Scaphoid fracture - MRI for occult |
| Cannot flex fingers | Flexor tendon injury |
| Twisting knee + hemarthrosis | Ligament injury (ACL) |
| Inversion ankle sprain | Lateral ligaments (ATFL first) |
| Ottawa rule - X-ray trigger | Cannot bear weight |
| Ankle/foot pulse | Dorsalis pedis |
| Achilles rupture test | Thompson test (calf squeeze) |
| Knee dislocation emergency | CT angiography (popliteal artery) |
| Fibular neck injury | Foot drop (common peroneal nerve) |
| Pelvic compression | ONE time only |
| Pelvic fracture + hematuria | Bladder injury |
| First-line imaging | X-ray always first |
| Complex fracture imaging | CT scan |
| Soft tissue imaging | MRI |
| FAST scan | Intra-abdominal free fluid (blood) |
| Post-cast immediate care | Elevate limb |
| 5 Ps | Pain, Pallor, Pulse, Paresthesia, Paralysis |
| Earliest compartment syndrome sign | Pain out of proportion + pain on passive stretch |
| Compartment syndrome treatment | Emergency fasciotomy |
| ATLS primary survey | ABCDE - Life before limb |
| Stable fracture treatment | Conservative (cast/splint) |
| Displaced/open fracture | Surgical (ORIF/nail) |
| Exam sequence | History → Physical Exam → Investigations |
| First step in physical exam | Inspection (Look first) |
| Red flags | Night pain, weight loss, neurological deficit |
Give me pdf
mkdir -p /home/daytona/workspace/ortho-study-guide && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import ListFlowable, ListItem doc = SimpleDocTemplate( "/home/daytona/workspace/ortho-study-guide/Orthopaedic_Study_Guide.pdf", pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle('TitleStyle', parent=styles['Title'], fontSize=22, textColor=colors.HexColor('#1a3a5c'), spaceAfter=6, alignment=TA_CENTER) subtitle_style = ParagraphStyle('SubtitleStyle', parent=styles['Normal'], fontSize=12, textColor=colors.HexColor('#4a6fa5'), spaceAfter=12, alignment=TA_CENTER) h1_style = ParagraphStyle('H1Style', parent=styles['Heading1'], fontSize=15, textColor=colors.white, spaceAfter=4, spaceBefore=14, backColor=colors.HexColor('#1a3a5c'), leftIndent=-8, rightIndent=-8, borderPad=5) h2_style = ParagraphStyle('H2Style', parent=styles['Heading2'], fontSize=12, textColor=colors.HexColor('#1a3a5c'), spaceAfter=4, spaceBefore=10, borderColor=colors.HexColor('#4a6fa5'), borderWidth=0, borderPad=0, leftIndent=0) h3_style = ParagraphStyle('H3Style', parent=styles['Heading3'], fontSize=10, textColor=colors.HexColor('#2e6da4'), spaceAfter=3, spaceBefore=6) body_style = ParagraphStyle('BodyStyle', parent=styles['Normal'], fontSize=9.5, leading=14, spaceAfter=4, alignment=TA_JUSTIFY) bullet_style = ParagraphStyle('BulletStyle', parent=styles['Normal'], fontSize=9.5, leading=13, spaceAfter=2, leftIndent=14, firstLineIndent=-10) key_style = ParagraphStyle('KeyStyle', parent=styles['Normal'], fontSize=9.5, leading=13, backColor=colors.HexColor('#fff8e1'), borderColor=colors.HexColor('#f0a500'), borderWidth=1, borderPad=4, spaceAfter=6) answer_style = ParagraphStyle('AnswerStyle', parent=styles['Normal'], fontSize=9.5, leading=13, backColor=colors.HexColor('#e8f5e9'), borderColor=colors.HexColor('#388e3c'), borderWidth=1, borderPad=4, spaceAfter=6) def h1(text): return Paragraph(f" {text}", h1_style) def h2(text): return Paragraph(text, h2_style) def h3(text): return Paragraph(text, h3_style) def body(text): return Paragraph(text, body_style) def bullet(text): return Paragraph(f"• {text}", bullet_style) def key(text): return Paragraph(f"<b>KEY POINT:</b> {text}", key_style) def ans(text): return Paragraph(f"<b>✓ ANSWER:</b> {text}", answer_style) def sp(n=1): return Spacer(1, n*0.2*cm) def hr(): return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#cccccc'), spaceAfter=4) def make_table(headers, rows, col_widths=None): data = [headers] + rows if col_widths is None: col_widths = [doc.width / len(headers)] * len(headers) t = Table(data, colWidths=col_widths) style = TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 9), ('ALIGN', (0,0), (-1,-1), 'LEFT'), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 8.5), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f4f8')]), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#cccccc')), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING', (0,0), (-1,-1), 6), ]) t.setStyle(style) return t story = [] # ─── COVER ─────────────────────────────────────────────────────────────────── story.append(Spacer(1, 3*cm)) story.append(Paragraph("ORTHOPAEDIC SURGERY", title_style)) story.append(Paragraph("Complete Exam Study Guide", subtitle_style)) story.append(Spacer(1, 0.5*cm)) cover_box = Table([[Paragraph( "<b>28 Core Concepts • 14 MCQs with Explanations • Quick Reference Tables</b><br/>" "<font size=9>Based on Course PDFs: MSK Examination, Shoulder, Elbow, Cast Care, Ankle, Knee, Wrist, Pelvis, Trauma Management</font>", ParagraphStyle('cover_inner', parent=styles['Normal'], alignment=TA_CENTER, fontSize=10, textColor=colors.HexColor('#1a3a5c'), leading=16) )]], colWidths=[doc.width]) cover_box.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#e8f0fe')), ('BOX', (0,0), (-1,-1), 2, colors.HexColor('#4a6fa5')), ('TOPPADDING', (0,0), (-1,-1), 16), ('BOTTOMPADDING', (0,0), (-1,-1), 16), ('LEFTPADDING', (0,0), (-1,-1), 20), ('RIGHTPADDING', (0,0), (-1,-1), 20), ])) story.append(cover_box) story.append(Spacer(1, 1*cm)) story.append(Paragraph("Nguyen Ngoc Thach, PhD — Orthopaedic Surgeon", subtitle_style)) story.append(PageBreak()) # ─── SECTION A: CORE CONCEPTS ──────────────────────────────────────────────── story.append(h1("SECTION A: CORE CONCEPTS (Points 1–28)")) story.append(sp(2)) # ── 1. Rotator Cuff story.append(h2("1. Shoulder Dynamic Stabilizers – Rotator Cuff")) story.append(body("The rotator cuff provides <b>dynamic stabilization</b> of the glenohumeral joint by compressing the humeral head into the shallow glenoid fossa. Without it, the deltoid would simply elevate the humerus superiorly.")) story.append(sp()) story.append(make_table( ["Muscle", "Action", "Test"], [["Supraspinatus", "Initiates abduction (0–15°)", "Empty can test"], ["Infraspinatus", "External rotation (primary)", "Resisted ER at side"], ["Teres minor", "External rotation (secondary)", "Hornblower's sign"], ["Subscapularis", "Internal rotation", "Lift-off / belly press"]], [5*cm, 6*cm, 5.5*cm] )) story.append(sp()) story.append(key("SITS mnemonic. Rotator cuff = dynamic stabilizer. Labrum/capsule = static stabilizer.")) # ── 2. Lateral Shoulder Pain story.append(sp(2)) story.append(h2("2. Lateral Shoulder Pain → Rotator Cuff Disease")) story.append(bullet("<b>Lateral pain</b> = Rotator cuff pathology (impingement, tear, tendinopathy)")) story.append(bullet("<b>Anterior pain</b> = Biceps tendon pathology")) story.append(bullet("<b>Global/diffuse pain</b> = Frozen shoulder (adhesive capsulitis)")) # ── 3. Infraspinatus story.append(sp(2)) story.append(h2("3. Infraspinatus – External Rotation Weakness")) story.append(body("Infraspinatus is the <b>primary external rotator</b> of the shoulder. Test: elbow at 90° flexion, arm at side, resist outward rotation.")) story.append(key("Weakness on external rotation testing = Infraspinatus injury")) # ── 4. Adhesive Capsulitis story.append(sp(2)) story.append(h2("4. Adhesive Capsulitis (Frozen Shoulder)")) story.append(make_table( ["Feature", "Detail"], [["Pathology", "Capsule inflammation → fibrosis → global restriction"], ["Key finding", "BOTH active AND passive ROM restricted (capsular pattern)"], ["Capsular pattern", "ER > Abduction > IR most restricted"], ["Differentiation", "Active only ↓ = muscle/tendon; Active + passive ↓ = joint/capsule"], ["Pain pattern", "Global/diffuse shoulder pain"]], [5*cm, 11.5*cm] )) # ── 5. Forearm Rotation story.append(sp(2)) story.append(h2("5. Forearm Rotation – Proximal Radioulnar Joint")) story.append(body("Pronation and supination occur at the <b>proximal radioulnar joint</b> (examined at the elbow) and the distal radioulnar joint. Normal range: ~80° pronation / ~80° supination.")) # ── 6. Epicondylitis story.append(sp(2)) story.append(h2("6. Epicondylitis Differentiation")) story.append(make_table( ["Condition", "Location", "Special Test", "Mechanism"], [["Lateral epicondylitis\n(Tennis elbow)", "LATERAL elbow", "Cozen's test", "Wrist extensor overuse (ECRB)"], ["Medial epicondylitis\n(Golfer's elbow)", "MEDIAL elbow", "Golfer's test", "Wrist flexor overuse"]], [4*cm, 3.5*cm, 3.5*cm, 5.5*cm] )) story.append(key("Lateral = Tennis. Medial = Golfer's. Easy: Tennis = lateral because you hit the ball outward.")) # ── 7. Radial Head story.append(sp(2)) story.append(h2("7. Elbow Palpation – Radial Head Location")) story.append(body("The radial head sits <b>immediately distal to the lateral epicondyle</b>. Confirm by palpating while the patient pronates/supinates — you feel it rotate under your finger. Point tenderness here after trauma = radial head fracture.")) # ── 8. Ulnar Nerve story.append(sp(2)) story.append(h2("8. Ulnar Nerve at the Cubital Tunnel")) story.append(bullet("Passes posterior to the medial epicondyle through the cubital tunnel")) story.append(bullet("<b>Most commonly injured nerve at the elbow</b>")) story.append(bullet("Presentation: paresthesia in ring + little fingers, weak intrinsics, ulnar claw")) story.append(bullet("Positive Tinel's sign at medial elbow")) # ── 9. Carpal Tunnel story.append(sp(2)) story.append(h2("9. Carpal Tunnel Syndrome – Median Nerve")) story.append(make_table( ["Feature", "Detail"], [["Nerve", "Median nerve compressed under flexor retinaculum"], ["Symptoms", "Numbness/tingling: thumb, index, middle, radial half of ring finger"], ["Motor", "Weakness of thenar muscles (thumb abduction/opposition)"], ["Phalen's test", "Wrist flexion 60 sec → reproduces symptoms"], ["Tinel's sign", "Tapping over carpal tunnel → tingling in median nerve distribution"]], [5*cm, 11.5*cm] )) story.append(PageBreak()) # ── 10. Scaphoid Fracture story.append(h2("10. Scaphoid Fracture (FOOSH)")) story.append(make_table( ["Feature", "Detail"], [["Mechanism", "FOOSH — Fall On OutStretched Hand"], ["Classic sign", "Anatomical snuffbox tenderness + axial compression pain"], ["Risk", "Avascular Necrosis (AVN) — proximal pole has no direct blood supply"], ["Initial X-ray", "May be NORMAL in up to 20% of cases initially"], ["Occult fracture", "MRI is gold standard — most sensitive for occult fractures"], ["Management if X-ray negative", "Treat as fracture (thumb spica cast) + arrange MRI"]], [5*cm, 11.5*cm] )) story.append(key("FOOSH + snuffbox tenderness + normal X-ray → MRI to exclude occult scaphoid fracture")) # ── 11. Tendon Integrity story.append(sp(2)) story.append(h2("11. Tendon Integrity")) story.append(make_table( ["Finding", "Injury"], [["Cannot FLEX fingers", "Flexor tendon injury (FDS/FDP)"], ["Cannot EXTEND fingers", "Extensor tendon injury"], ["Cannot flex DIP only", "FDP rupture (Jersey finger)"], ["Cannot extend DIP", "Extensor avulsion (Mallet finger)"]], [7*cm, 9.5*cm] )) # ── 12. Knee Twisting story.append(sp(2)) story.append(h2("12. Knee Twisting Mechanisms")) story.append(body("Twisting injuries place rotational stress on ligaments. Rapid hemarthrosis (within 2 hrs) = ligament tear until proven otherwise.")) story.append(bullet("<b>ACL tear</b> = most common (pop + immediate hemarthrosis)")) story.append(bullet("<b>Unhappy Triad</b> = ACL + MCL + medial meniscus")) story.append(bullet("Meniscal tears = delayed swelling, locking, clicking")) story.append(key("Twisting + rapid swelling (hemarthrosis) = Ligament injury")) # ── 13. Ankle Sprains story.append(sp(2)) story.append(h2("13. Ankle Sprains – Lateral Ligaments")) story.append(body("Inversion injury (foot rolls inward) = lateral ligament sprain. Order of injury:")) story.append(bullet("<b>1st: ATFL</b> (anterior talofibular ligament) — most commonly injured")) story.append(bullet("<b>2nd: CFL</b> (calcaneofibular ligament)")) story.append(bullet("<b>3rd: PTFL</b> (posterior talofibular) — only severe injuries")) story.append(body("Eversion injuries sprain the stronger medial <b>deltoid ligament</b> (less common).")) # ── 14. Ottawa Ankle Rules story.append(sp(2)) story.append(h2("14. Ottawa Ankle Rules – When to X-ray")) tbl = make_table( ["Criterion", "Location"], [["Unable to bear weight (4 steps)", "→ X-ray REQUIRED"], ["Bone tenderness: posterior edge/tip lateral malleolus", "→ X-ray REQUIRED"], ["Bone tenderness: posterior edge/tip medial malleolus", "→ X-ray REQUIRED"], ["Bone tenderness: base of 5th metatarsal", "→ X-ray REQUIRED (Foot Rule)"], ["Bone tenderness: navicular", "→ X-ray REQUIRED (Foot Rule)"]], [9*cm, 7.5*cm] ) story.append(tbl) story.append(key("Most important criterion for MCQ: INABILITY TO BEAR WEIGHT")) # ── 15. Dorsalis Pedis story.append(sp(2)) story.append(h2("15. Vascular Assessment – Dorsalis Pedis Pulse")) story.append(body("In ankle/foot trauma, always assess:")) story.append(bullet("<b>Dorsalis pedis pulse</b> — dorsum of foot, lateral to extensor hallucis longus tendon")) story.append(bullet("<b>Posterior tibial pulse</b> — posterior to medial malleolus")) story.append(bullet("Capillary refill, sensation, and movement")) # ── 16. Thompson Test story.append(sp(2)) story.append(h2("16. Achilles Tendon Rupture – Thompson Test")) story.append(make_table( ["Step", "Detail"], [["Position", "Patient prone, knee flexed to 90°"], ["Action", "Examiner squeezes the calf muscle"], ["Normal result", "Foot plantarflexes (tendon intact)"], ["Positive result", "NO plantarflexion = Achilles tendon RUPTURE"], ["Clinical note", "Patient can still weakly plantarflex using toe flexors — don't be fooled"]], [4*cm, 12.5*cm] )) story.append(key("Thompson test (calf squeeze) = definitive test for Achilles rupture")) story.append(PageBreak()) # ── 17. Knee Dislocation story.append(h2("17. Knee Dislocation – Vascular Emergency")) story.append(body("Knee dislocation is a <b>limb-threatening vascular emergency</b>. The popliteal artery is tethered at the knee and easily torn.")) story.append(make_table( ["Point", "Detail"], [["Artery at risk", "Popliteal artery (tethered by soleus arch)"], ["Why CTA mandatory", "Intimal tear can occlude hours later even with normal initial pulses"], ["Imaging", "CT Angiography (CTA) — mandatory even if distal pulses present"], ["Time limit", "Revascularization must occur within 6 hours to save limb"]], [5*cm, 11.5*cm] )) story.append(key("Normal distal pulses do NOT exclude vascular injury in knee dislocation → CTA is mandatory")) # ── 18. Peroneal Nerve story.append(sp(2)) story.append(h2("18. Common Peroneal Nerve Injury – Foot Drop")) story.append(bullet("Nerve wraps around the <b>fibular neck</b> — most vulnerable point")) story.append(bullet("<b>Foot drop</b> = inability to dorsiflex the foot")) story.append(bullet("Also: weakness of eversion, sensory loss on dorsum of foot")) story.append(bullet("Causes: fibular neck fracture, knee dislocation, prolonged pressure")) # ── 19. Pelvic Fractures story.append(sp(2)) story.append(h2("19. Pelvic Fractures")) story.append(make_table( ["Feature", "Detail"], [["Cause", "High-energy trauma (RTA, fall from height)"], ["Hemorrhage", "Can cause 4+ litres blood loss into retroperitoneal space → shock"], ["Bladder injury", "Hematuria + suprapubic pain + urinary retention"], ["Compression test", "Perform ONCE ONLY — repetition worsens internal bleeding"], ["Imaging", "X-ray (AP pelvis) first, then CT (gold standard), FAST for free fluid"]], [4.5*cm, 12*cm] )) story.append(key("Pelvic fracture + hematuria = bladder injury until proven otherwise. Compress ONCE only.")) # ── 20. Imaging Principles story.append(sp(2)) story.append(h2("20. First-Line Imaging Principles")) story.append(make_table( ["Modality", "Use For", "Limitation"], [["X-ray", "ALWAYS first-line: fractures, dislocations, bone alignment", "Misses soft tissue, occult fractures"], ["CT scan", "Complex fractures, pelvic fractures, bone detail", "Radiation, poor soft tissue"], ["MRI", "Soft tissue: ligaments, tendons, occult fractures (scaphoid)", "Time, cost, availability"], ["Ultrasound", "Rotator cuff, biceps, FAST scan, dynamic exam", "Operator-dependent"]], [3*cm, 7*cm, 6.5*cm] )) # ── 21. FAST Ultrasound story.append(sp(2)) story.append(h2("21. FAST Ultrasound")) story.append(body("<b>Focused Assessment with Sonography in Trauma</b> — rapid bedside tool for detecting free fluid (blood).")) story.append(bullet("Views: hepatorenal (Morrison's pouch), splenorenal, pelvis, pericardium")) story.append(bullet("Takes 2–3 minutes, no radiation, repeatable, bedside")) story.append(bullet("Detects FREE FLUID only — does NOT diagnose solid organ injury")) story.append(bullet("Positive FAST = intra-abdominal hemorrhage → proceed to CT or surgery")) # ── 22. Cast Care story.append(sp(2)) story.append(h2("22. Cast Care Fundamentals")) story.append(make_table( ["Step", "Action"], [["Purpose", "Immobilize fracture, maintain alignment, promote bone healing"], ["Immediate care", "ELEVATE limb above heart level → reduces edema"], ["Monitor", "5 Ps — Pain, Pallor, Pulse, Paresthesia, Paralysis"], ["Patient education", "Keep dry, no objects inside, report symptoms immediately"], ["Follow-up", "X-ray to monitor fracture healing"]], [4*cm, 12.5*cm] )) # ── 23. Post-Reduction Neurovascular Check story.append(sp(2)) story.append(h2("23. Neurovascular Check After Joint Reduction")) story.append(body("After reducing ANY dislocated joint, <b>immediately</b> check:")) story.append(bullet("Distal pulse")) story.append(bullet("Capillary refill (< 2 seconds = normal)")) story.append(bullet("Sensation (nerve function)")) story.append(bullet("Motor function (active movement distal to joint)")) story.append(PageBreak()) # ── 24. The 5 Ps story.append(h2("24. The \"5 Ps\" Neurovascular Matrix")) story.append(make_table( ["P", "Parameter", "Normal", "Abnormal Suggests"], [["Pain", "Pain level", "Mild/controlled", "Severe, out of proportion → compartment syndrome"], ["Pallor", "Skin colour", "Pink, warm", "White/mottled → arterial compromise"], ["Pulse", "Distal pulse", "Palpable, strong", "Absent/weak → vascular injury"], ["Paresthesia", "Sensation", "Normal sensation", "Numbness/tingling → nerve ischemia (early)"], ["Paralysis", "Motor function", "Full movement", "Weakness/no movement → nerve/muscle damage (late)"]], [2.5*cm, 3*cm, 3.5*cm, 7.5*cm] )) story.append(key("Paresthesia (tingling) is an EARLY sign. Paralysis and absent pulse are LATE signs of compartment syndrome.")) # ── 25. Compartment Syndrome story.append(sp(2)) story.append(h2("25. Compartment Syndrome – Earliest Warning Sign")) story.append(make_table( ["Sign", "Timing", "Importance"], [["Pain out of proportion", "EARLIEST", "Pain disproportionate to injury severity"], ["Pain on PASSIVE stretch", "EARLIEST", "Most reliable early sign — pathognomonic"], ["Paresthesia", "Early", "Tingling → nerve ischemia starting"], ["Pallor/Pulse absent", "LATE", "Irreversible damage likely already occurring"], ["Paralysis", "LATE", "Indicates severe nerve/muscle damage"]], [5*cm, 2.5*cm, 9*cm] )) story.append(key("Pain out of proportion + pain on passive stretch = EARLIEST, most vital sign of compartment syndrome")) # ── 26. Fasciotomy story.append(sp(2)) story.append(h2("26. Surgical Emergencies – Fasciotomy")) story.append(body("Tight casts and rising compartment pressure are <b>orthopaedic emergencies</b>:")) story.append(bullet("<b>Step 1:</b> Split/bivalve and remove cast immediately")) story.append(bullet("<b>Step 2:</b> Emergency fasciotomy if compartment pressure remains elevated (>30 mmHg or within 30 mmHg of diastolic BP)")) story.append(bullet("Must be done within <b>6 hours</b> to prevent irreversible damage")) story.append(bullet("Delayed treatment → Volkmann's ischemic contracture, rhabdomyolysis, renal failure")) # ── 27. ATLS story.append(sp(2)) story.append(h2("27. ATLS Guidelines – Primary Survey (ABCDE)")) story.append(make_table( ["Letter", "Priority", "Action"], [["A", "Airway (+ C-spine)", "Clear and secure airway, protect cervical spine"], ["B", "Breathing", "Assess ventilation, treat tension pneumothorax/haemothorax"], ["C", "Circulation + Haemorrhage", "IV access, haemorrhage control, fluid resuscitation"], ["D", "Disability (Neuro)", "GCS, pupils, limb movement"], ["E", "Exposure + Environment", "Expose fully, prevent hypothermia, find all injuries"]], [1.5*cm, 4.5*cm, 10.5*cm] )) story.append(key("\"LIFE BEFORE LIMB\" — Always treat life-threatening conditions before fracture fixation")) # ── 28. Fracture Treatment story.append(sp(2)) story.append(h2("28. Fracture Treatment Classification")) story.append(make_table( ["Type", "Method", "Indications"], [["Conservative", "Cast / Splint / Traction", "Stable, non-displaced, closed, no neurovascular injury"], ["Surgical – ORIF", "Plate + screws", "Displaced, periarticular, when exact reduction needed"], ["Surgical – IM nail", "Intramedullary nail", "Long bone fractures (femur, tibia, humerus)"], ["Surgical – Ex-Fix", "External fixator", "Open fractures, severe soft tissue injury, damage control"], ["Surgical – Arthroplasty", "Joint replacement", "Femoral neck fracture in elderly (displaced)"]], [3*cm, 4*cm, 9.5*cm] )) story.append(key("Indications for surgery: Displacement | Instability | Open fracture | Neurovascular injury")) story.append(PageBreak()) # ─── SECTION B: MCQ ANSWERS ────────────────────────────────────────────────── story.append(h1("SECTION B: MCQ ANSWERS WITH EXPLANATIONS")) story.append(sp(2)) mcqs = [ ("Q29", "Correct sequence in musculoskeletal evaluation?", "C", "History → Physical Exam → Investigations", "The examination sequence follows: History first (guides what to look for), then Physical Exam (guides which tests), then Investigations. Imaging without clinical context leads to over-investigation and false diagnoses. Source: PDF 1 (Examination Sequence slide)."), ("Q30", "Which component of clinical assessment provides the most important diagnostic information?", "C", "History taking", "70–80% of diagnoses can be made from history alone. History guides the physical exam, which guides investigations. The clinical exam is the foundation of diagnosis. Source: PDF 1 (Take-home Message: 'Clinical exam is most important' + 'Diagnosis = History + Exam + Investigations')."), ("Q31", "Which pain characteristics suggest inflammatory pathology?", "C", "Night pain and morning stiffness", "Inflammatory pathology (RA, ankylosing spondylitis, infection, tumour) = night pain + morning stiffness >30–60 min + pain at rest. Mechanical pain = worse with activity, relieved by rest. Night pain is also a red flag for malignancy/infection. Source: PDF 1 (Red Flags slide)."), ("Q32", "A twisting injury of the knee most commonly results in:", "B", "Ligament injury", "Twisting forces place rotational stress on ligaments (especially ACL). Fractures require axial loading or direct impact. Twisting = soft tissue mechanism → ligament tear ± meniscus injury. Rapid hemarthrosis confirms ligament rupture. Source: PDF 6 (Red Flags: 'Hemarthrosis'); PDF 9 (Classification)."), ("Q33 (Q5)", "Which of the following is considered a red flag in MSK history?", "C", "Night pain", "Night pain = red flag for malignancy (bone tumour/metastasis), infection (osteomyelitis, septic arthritis), or inflammatory arthritis. Pain after exercise, mild swelling, and local tenderness are common mechanical findings. Source: PDF 1 (Red Flags: 'Night pain, Weight loss, Neurological deficit')."), ("Q34 (Q6)", "What is the first step in physical examination of a joint?", "B", "Inspection", "The clinical approach is always: Look → Feel → Move → Special tests. Inspection (Look) reveals deformity, swelling, wasting, bruising, scars, and posture without touching the patient. You must observe before you palpate. Source: All PDFs (Clinical Approach slides consistently state 'Look → Feel → Move → Special tests')."), ("Q35", "Lateral elbow pain is most commonly associated with:", "C", "Lateral epicondylitis (Tennis elbow)", "Lateral epicondylitis = wrist extensor overuse causing degeneration at the lateral epicondyle. Confirmed with Cozen's test (resisted wrist extension). Medial epicondylitis (Golfer's elbow) causes medial pain. Source: PDF 3 (Pain Patterns: 'Lateral → tennis elbow')."), ("Q36", "Which structure is palpated just distal to the lateral epicondyle?", "B", "Radial head", "The radial head lies immediately distal to the lateral epicondyle. It can be confirmed by palpating while the patient pronates/supinates — you feel it rotate. Olecranon = posterior; Coronoid = anterior; Ulnar nerve = medial. Source: PDF 3 (Key Structures slide)."), ("Q37", "Pain over the medial epicondyle is most likely due to:", "B", "Golfer's elbow (Medial epicondylitis)", "Medial epicondylitis = overuse of wrist flexors/pronators at their origin on the medial epicondyle. Confirmed with the Golfer's test. Tennis elbow = LATERAL epicondyle. Source: PDF 3 (Pain Patterns: 'Medial → golfer's')."), ("Q38/39", "Which nerve is most commonly affected at the elbow?", "C", "Ulnar nerve", "The ulnar nerve passes through the cubital tunnel posterior to the medial epicondyle — most commonly injured nerve at the elbow. Presents with ring/little finger paresthesia, intrinsic weakness, and ulnar claw. Source: PDF 3 (Neurovascular Assessment: 'Ulnar nerve'; Special Tests: 'Tinel sign')."), ("Q40", "First-line imaging modality in elbow trauma?", "D", "X-ray", "X-ray is always the first-line imaging for any suspected fracture or dislocation. CT and MRI are reserved after X-ray has been obtained. Source: PDF 3 (X-ray slide: 'First-line, AP + lateral'); PDF 1 (Imaging Principles: 'First-line')."), ("Q41", "Best modality for evaluating soft tissue structures of the elbow?", "C", "MRI", "MRI provides the best visualization of ligaments, tendons, cartilage, and nerves. CT = bone detail for complex fractures. X-ray = initial screening. Fluoroscopy = dynamic, intraoperative. Source: PDF 3 (CT and MRI: 'MRI → soft tissue')."), ("Q42 (Renumbered)", "Primary purpose of a cast?", "C", "Immobilize and maintain alignment", "The purpose of a cast is: Immobilization + Maintain alignment + Promote healing. It does not primarily prevent infection (antibiotics do that) or improve circulation (elevation and cast care do that). Source: PDF 4 (Purpose of Cast slide)."), ("Q43 (Q42)", "Most important immediate care after applying a cast?", "B", "Elevate the limb", "Elevation above heart level is the most critical immediate post-cast action to reduce swelling/edema and prevent compartment syndrome. Physiotherapy comes much later. Antibiotics are only for open fractures. Source: PDF 4 (Immediate Post-Cast Care: 'Elevation: Raise the injured limb above heart level to reduce swelling')."), ] for q_num, question, ans_letter, ans_text, explanation in mcqs: story.append(KeepTogether([ Paragraph(f"<b>{q_num}.</b> {question}", ParagraphStyle('q_style', parent=styles['Normal'], fontSize=10, spaceAfter=3, spaceBefore=8, textColor=colors.HexColor('#1a3a5c'))), Paragraph(f"<b>Answer: {ans_letter} – {ans_text}</b>", ParagraphStyle('ans_style', parent=styles['Normal'], fontSize=9.5, spaceAfter=2, backColor=colors.HexColor('#e8f5e9'), borderColor=colors.HexColor('#388e3c'), borderWidth=1, borderPad=4)), Paragraph(explanation, ParagraphStyle('exp_style', parent=styles['Normal'], fontSize=9, leading=13, spaceAfter=6, textColor=colors.HexColor('#333333'), backColor=colors.HexColor('#f9f9f9'), borderColor=colors.HexColor('#dddddd'), borderWidth=0.5, borderPad=4)), hr() ])) story.append(PageBreak()) # ─── QUICK REFERENCE TABLE ─────────────────────────────────────────────────── story.append(h1("SECTION C: QUICK REFERENCE TABLE")) story.append(sp(2)) qr_data = [ ["Topic", "Key Fact"], ["Rotator cuff", "Dynamic stabilizer; 4 muscles — SITS"], ["Lateral shoulder pain", "Rotator cuff disease"], ["External rotation weakness", "Infraspinatus injury"], ["Frozen shoulder", "Active AND passive ROM both restricted"], ["Pronation/supination", "Proximal radioulnar joint"], ["Lateral elbow pain", "Lateral epicondylitis (Tennis elbow)"], ["Medial elbow pain", "Medial epicondylitis (Golfer's elbow)"], ["Distal to lateral epicondyle", "Radial head"], ["Most vulnerable elbow nerve", "Ulnar nerve (cubital tunnel)"], ["Carpal tunnel", "Median nerve compression"], ["FOOSH + snuffbox tenderness", "Scaphoid fracture → MRI for occult"], ["Cannot flex fingers", "Flexor tendon injury"], ["Twisting knee + hemarthrosis", "Ligament injury (ACL)"], ["Inversion ankle sprain", "Lateral ligaments (ATFL first)"], ["Ottawa rule — X-ray trigger", "Cannot bear weight"], ["Ankle/foot pulse", "Dorsalis pedis"], ["Achilles rupture test", "Thompson test (calf squeeze, no plantarflexion)"], ["Knee dislocation emergency", "CT angiography (popliteal artery at risk)"], ["Fibular neck injury", "Foot drop (common peroneal nerve)"], ["Pelvic compression", "ONE time only"], ["Pelvic fracture + hematuria", "Bladder injury"], ["First-line imaging", "X-ray always first"], ["Complex fracture imaging", "CT scan"], ["Soft tissue imaging", "MRI"], ["FAST scan", "Intra-abdominal free fluid (blood)"], ["Post-cast immediate care", "Elevate limb above heart"], ["5 Ps", "Pain, Pallor, Pulse, Paresthesia, Paralysis"], ["Earliest compartment syndrome sign", "Pain out of proportion + pain on passive stretch"], ["Compartment syndrome treatment", "Emergency fasciotomy (within 6 hours)"], ["ATLS principle", "ABCDE — Life before limb"], ["Stable fracture treatment", "Conservative (cast/splint)"], ["Displaced/open fracture", "Surgical (ORIF/nail/ex-fix)"], ["Exam sequence", "History → Physical Exam → Investigations"], ["First step in physical exam", "Inspection (Look first)"], ["Red flags", "Night pain, weight loss, neurological deficit"], ] qr_table = Table(qr_data, colWidths=[8*cm, 8.5*cm]) qr_style = TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 9.5), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 8.5), ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f4f8')]), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#cccccc')), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 7), ('RIGHTPADDING', (0,0), (-1,-1), 7), ('ALIGN', (0,0), (-1,-1), 'LEFT'), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ]) qr_table.setStyle(qr_style) story.append(qr_table) story.append(PageBreak()) # ─── IMAGING CHEAT SHEET ───────────────────────────────────────────────────── story.append(h1("SECTION D: IMAGING CHEAT SHEET")) story.append(sp(2)) story.append(make_table( ["Scenario", "First-line", "If Needed"], [["Suspected fracture / dislocation", "X-ray", "CT for complex"], ["Soft tissue injury (ligament, tendon)", "MRI", "Ultrasound (dynamic)"], ["Scaphoid fracture (X-ray negative)", "X-ray first", "MRI for occult"], ["Pelvic fracture", "X-ray (AP pelvis)", "CT (gold standard)"], ["Intra-abdominal bleeding (trauma)", "FAST ultrasound", "CT abdomen"], ["Knee dislocation (vascular)", "X-ray + CT angiography", "Doppler USS"], ["Nerve injury (foot drop)", "Clinical diagnosis first", "EMG after 14 days"], ["Complex elbow fracture", "X-ray", "CT for detail"], ["Rotator cuff tear", "X-ray first", "MRI (gold standard)"], ["ACL / meniscal injury", "X-ray first", "MRI (gold standard)"]], [6*cm, 4*cm, 6.5*cm] )) story.append(sp(2)) story.append(h1("SECTION E: NERVE INJURY QUICK REFERENCE")) story.append(sp(2)) story.append(make_table( ["Nerve", "Location of Injury", "Clinical Sign"], [["Ulnar nerve", "Cubital tunnel (medial elbow)", "Ring/little finger paresthesia, ulnar claw, intrinsic weakness"], ["Median nerve", "Carpal tunnel (wrist)", "Thumb/index/middle finger numbness, thenar wasting"], ["Radial nerve", "Spiral groove (mid-humerus)", "Wrist drop (cannot extend wrist/fingers)"], ["Axillary nerve", "Surgical neck of humerus", "Deltoid weakness, lateral shoulder numbness"], ["Common peroneal", "Fibular neck", "Foot drop (cannot dorsiflex), dorsal foot numbness"], ["Sciatic nerve", "Posterior hip dislocation", "Combined foot drop + sensory loss below knee"]], [3.5*cm, 5*cm, 8*cm] )) # Build PDF doc.build(story) print("PDF created successfully!") PYEOF
Orthopaedic Study Guide
PDF Document · PDF