So this is my syllabus for upper limb don't go after guidelines or etc. Keeping this in mind give me a 6 day sequence to complete the whole upper limb from scratch. Don't go for the sequence of the syllabus build your own sequence that you think is best for understanding the upper limb. Keep in mind that i am starting upper limb from scratch and i don't know anything
cd /tmp/workspace/attachments/6f039aa7-3566-4362-bf47-2bc0c76c7cba/ && python3 -c " import pdfplumber with pdfplumber.open('MedMentor Upper Limb Guidelines (Snell 10th Edition).pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- PAGE {i+1} ---') print(text[:3000]) print() "
Logic behind the sequence: You can't understand muscles without bones, can't understand nerves without the plexus, can't understand the hand without knowing what comes before it. Each day feeds directly into the next.
| Priority | Topics |
|---|---|
| ⭐⭐⭐ Highest | Brachial plexus, Axillary artery, Cubital fossa, Median/Ulnar/Radial nerves (full course), Shoulder joint, Extensor expansion, Superficial + Deep palmar arch, Carpal tunnel, Lymph nodes of axilla, Breast lymphatics |
| ⭐⭐ High | Thenar/Hypothenar/Lumbricals/Interossei muscles, Biceps/Triceps, Cephalic/Basilic veins, Wrist retinacula contents, Anatomical snuffbox, All nerve injury clinicals |
| ⭐ Important | Scapular anastomosis, Elbow anastomosis, Palmar spaces, Dermatomes vs cutaneous innervation, All joints except shoulder |
Create a day-by-day checklist/study tracker document
mkdir -p /tmp/workspace/upper-limb-tracker && ls /tmp/workspace/upper-limb-tracker/
~/upper-limb-tracker/build_tracker.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy
doc = Document()
# ── Page margins ──────────────────────────────────────────────────────────────
section = doc.sections[0]
section.page_width = Inches(8.5)
section.page_height = Inches(11)
section.left_margin = Inches(0.85)
section.right_margin = Inches(0.85)
section.top_margin = Inches(0.75)
section.bottom_margin = Inches(0.75)
# ── Base style ────────────────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(11)
# ── Helper: shade a table cell ────────────────────────────────────────────────
def shade_cell(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
# ── Helper: set cell border ───────────────────────────────────────────────────
def set_cell_border(cell, **kwargs):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = OxmlElement("w:tcBorders")
for edge in ("top", "left", "bottom", "right", "insideH", "insideV"):
tag = OxmlElement(f"w:{ edge}")
val = kwargs.get(edge, {"sz": "4", "val": "single", "color": "CCCCCC"})
tag.set(qn("w:val"), val.get("val", "single"))
tag.set(qn("w:sz"), val.get("sz", "4"))
tag.set(qn("w:color"), val.get("color", "CCCCCC"))
tcBorders.append(tag)
tcPr.append(tcBorders)
# ── Helper: bold paragraph ────────────────────────────────────────────────────
def bold_para(cell, text, size=11, color=None):
p = cell.paragraphs[0]
p.clear()
run = p.add_run(text)
run.bold = True
run.font.size = Pt(size)
if color:
run.font.color.rgb = RGBColor.from_string(color)
return p
# ── Helper: normal paragraph in cell ─────────────────────────────────────────
def normal_para(cell, text, size=10.5):
p = cell.paragraphs[0]
p.clear()
run = p.add_run(text)
run.font.size = Pt(size)
return p
# ── Helper: checkbox row (single-column wide row) ────────────────────────────
def add_checkbox_row(table, text, indent=" ", done_col=True):
row = table.add_row()
cells = row.cells
# col 0: checkbox symbol + text
p = cells[0].paragraphs[0]
p.clear()
run = p.add_run(f"{indent}☐ {text}")
run.font.size = Pt(10.5)
# col 1: Done tick column
if done_col:
p2 = cells[1].paragraphs[0]
p2.clear()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
run2 = p2.add_run("☐")
run2.font.size = Pt(11)
for c in cells:
set_cell_border(c)
# ── Helper: section header row (spans both columns) ──────────────────────────
def add_section_row(table, label, bg="2E4057", fg="FFFFFF"):
row = table.add_row()
# merge both cells
row.cells[0].merge(row.cells[1])
shade_cell(row.cells[0], bg)
p = row.cells[0].paragraphs[0]
p.clear()
run = p.add_run(f" {label}")
run.bold = True
run.font.size = Pt(11)
run.font.color.rgb = RGBColor.from_string(fg)
# ── Helper: sub-header row ────────────────────────────────────────────────────
def add_subheader_row(table, label, bg="D0E8FF"):
row = table.add_row()
row.cells[0].merge(row.cells[1])
shade_cell(row.cells[0], bg)
p = row.cells[0].paragraphs[0]
p.clear()
run = p.add_run(f" {label}")
run.bold = True
run.font.size = Pt(10.5)
run.font.color.rgb = RGBColor.from_string("1A1A2E")
# ── Helper: clinical row ──────────────────────────────────────────────────────
def add_clinical(table, text):
add_checkbox_row(table, text, indent=" ")
# ══════════════════════════════════════════════════════════════════════════════
# COVER / TITLE
# ══════════════════════════════════════════════════════════════════════════════
title_table = doc.add_table(rows=1, cols=1)
title_table.style = "Table Grid"
tc = title_table.rows[0].cells[0]
shade_cell(tc, "2E4057")
tp = tc.paragraphs[0]
tp.alignment = WD_ALIGN_PARAGRAPH.CENTER
tr = tp.add_run("UPPER LIMB ANATOMY")
tr.bold = True
tr.font.size = Pt(22)
tr.font.color.rgb = RGBColor.from_string("FFFFFF")
tc.add_paragraph("")
sp = tc.add_paragraph("6-Day Study Tracker | Snell 10th Edition")
sp.alignment = WD_ALIGN_PARAGRAPH.CENTER
sr = sp.runs[0]
sr.font.size = Pt(13)
sr.font.color.rgb = RGBColor.from_string("AED9E0")
tc.add_paragraph("")
np2 = tc.add_paragraph("Name: ___________________________ Start Date: _______________")
np2.alignment = WD_ALIGN_PARAGRAPH.CENTER
np2r = np2.runs[0]
np2r.font.size = Pt(11)
np2r.font.color.rgb = RGBColor.from_string("FFFFFF")
tc.add_paragraph("")
doc.add_paragraph("")
# ══════════════════════════════════════════════════════════════════════════════
# HOW TO USE box
# ══════════════════════════════════════════════════════════════════════════════
ht = doc.add_table(rows=1, cols=1)
ht.style = "Table Grid"
hc = ht.rows[0].cells[0]
shade_cell(hc, "FFF3CD")
hp = hc.paragraphs[0]
hp.clear()
hr = hp.add_run("HOW TO USE THIS TRACKER")
hr.bold = True
hr.font.size = Pt(11)
hr.font.color.rgb = RGBColor.from_string("856404")
for line in [
"• Tick ☐ in the DONE column after completing each item.",
"• Each day has a NOTES box - write key mnemonics, diagrams drawn, or struggles.",
"• At day end, fill the Day Review (score & confidence) at the bottom of each day.",
"• Suggested daily split: First 6h = New content | Next 2h = Diagrams from memory | Last 2h = Clinicals + Past Qs",
]:
lp = hc.add_paragraph(line)
lp.runs[0].font.size = Pt(10)
lp.runs[0].font.color.rgb = RGBColor.from_string("5C4A00")
doc.add_paragraph("")
# ══════════════════════════════════════════════════════════════════════════════
# DATA for all 6 days
# ══════════════════════════════════════════════════════════════════════════════
days = [
# ─── DAY 1 ────────────────────────────────────────────────────────────────
{
"number": 1,
"title": "Bones + Brachial Plexus",
"color": "1B4332",
"light": "D8F3DC",
"subtitle": "Foundation Day - Everything builds on what you do today",
"sections": [
("BONES (BD Chaurasia)", [
"Clavicle - bony features, muscle attachments, important ligament sites",
"Scapula - all fossae, borders, angles, muscle attachment markings",
"Humerus - head, neck (anatomical & surgical), shaft, epicondyles, grooves",
"Radius & Ulna - heads, necks, tuberosities, styloid processes, notches",
"Carpal bones (8) - two rows, names, individual features",
"Metacarpals & Phalanges - general features",
"Download 3D Gross Anatomy App and cross-check attachments on screen",
"Skip ossification centers entirely",
]),
("BRACHIAL PLEXUS (Snell Figs 3.50-3.53, Table 3.12)", [
"Root values: C5-T1 | Remember: RTDCB (Roots-Trunks-Divisions-Cords-Branches)",
"3 Trunks: Upper (C5,C6), Middle (C7), Lower (C8,T1)",
"6 Divisions: each trunk splits into anterior + posterior",
"3 Cords: Lateral, Medial, Posterior - and what divisions form each",
"Prefix and Postfix concept",
"Branches from Roots: dorsal scapular, long thoracic",
"Branches from Trunks: nerve to subclavius, suprascapular",
"Branches from Lateral cord: lateral pectoral, musculocutaneous, lateral root of median",
"Branches from Medial cord: medial pectoral, medial cutaneous (arm+forearm), ulnar, medial root of median",
"Branches from Posterior cord: subscapular, thoracodorsal, axillary, radial",
"Table 3.12 - memorize all terminal nerve roots + one-liner function",
"Draw full brachial plexus diagram from scratch (attempt 1)",
"Draw full brachial plexus diagram from scratch (attempt 2 - without looking)",
]),
("QUICK OVERVIEW of 5 Terminal Nerves (one-liner injury only)", [
"Axillary (C5,C6): deltoid + teres minor → weak abduction, loss of shoulder roundness",
"Radial (C5-T1): posterior arm/forearm → wrist drop",
"Median (C5-T1): anterior forearm + thenar → ape hand, carpal tunnel syndrome",
"Ulnar (C8,T1): hypothenar + interossei → ulnar claw hand",
"Musculocutaneous (C5-C7): anterior arm → weak flexion + lateral forearm sensory loss",
]),
("CLINICALS - Day 1", [
"Erb's Palsy (C5-C6): waiter's tip - elbow extended, forearm pronated, wrist flexed",
"Klumpke's Palsy (C8-T1): claw hand + possible Horner's syndrome (T1 sympathetics)",
"Thoracic Outlet Syndrome: neurovascular bundle compressed",
"Clavicle fracture: midshaft most common, can damage BP or subclavian vessels",
"Cleidocranial Dysostosis: absent/underdeveloped clavicle",
]),
("DIAGRAMS TO DRAW TODAY", [
"Brachial plexus (full, labelled) - x2",
"Identify muscle attachments on humerus sketch",
]),
]
},
# ─── DAY 2 ────────────────────────────────────────────────────────────────
{
"number": 2,
"title": "Pectoral Region + Scapular Region + Axilla + Back",
"color": "1A3A5C",
"light": "DBE9FF",
"subtitle": "The Root Zone - Where the upper limb meets the trunk",
"sections": [
("PECTORAL REGION (Snell Table 3.3, BD Chaurasia)", [
"Breast: extent (2nd-6th rib, sternum to mid-axillary line), structure",
"Breast: blood supply (internal thoracic, lateral thoracic, intercostals)",
"Breast: lymphatic drainage - axillary (75%), internal mammary, posterior intercostal (v.v.imp SEQ)",
"Retromammary space and Suspensory ligaments of Cooper",
"Clavipectoral fascia: attachments and structures piercing it",
"Pectoralis major: origin, insertion, nerve supply (medial + lateral pectoral), actions (Table 3.3)",
"Pectoralis minor: origin, insertion, nerve supply, action",
"Serratus anterior: origin, insertion, nerve supply (long thoracic C5-C7), action",
"Platysma: origin, insertion, nerve supply, action (from BD)",
"Subclavius muscle",
]),
("SCAPULAR REGION (Snell Table 3.5)", [
"All 6 scapular muscles: origin, insertion, nerve supply, action (Table 3.5)",
"Supraspinatus, Infraspinatus, Teres major, Teres minor, Subscapularis, Deltoid",
"Quadrangular space: boundaries (sup=teres minor, inf=teres major, med=long head triceps, lat=humerus)",
"Quadrangular space: contents (axillary nerve + posterior circumflex humeral artery) - v.imp",
"Upper triangular space: boundaries + contents (circumflex scapular artery)",
"Lower triangular space: boundaries + contents (radial nerve + profunda brachii artery)",
"Anastomosis around scapula/shoulder: suprascapular + circumflex scapular + dorsal scapular - v.v.imp",
]),
("BACK (Snell Table 3.4)", [
"Back muscles Table 3.4: trapezius, latissimus dorsi, rhomboids, levator scapulae",
"Triangle of Auscultation: boundaries, clinical use",
"Lumbar Triangle of Petit: boundaries (from BD)",
]),
("AXILLA (Snell Fig 3.65, Table 3.12)", [
"Axilla shape: like a pyramid",
"Anterior wall: pectoralis major + minor, clavipectoral fascia",
"Posterior wall: subscapularis, teres major, latissimus dorsi",
"Medial wall: serratus anterior + ribs 1-4",
"Lateral wall: intertubercular groove of humerus",
"Apex: cervicoaxillary canal (clavicle, 1st rib, scapula)",
"Floor (base): axillary fascia + skin",
"Contents: axillary artery + vein, brachial plexus cords+branches, lymph nodes, fat",
"Axillary artery: root (subclavian), 3 parts relative to pectoralis minor",
"Part 1 branches: superior thoracic",
"Part 2 branches: thoracoacromial (4 branches: pectoral, clavicular, acromial, deltoid) + lateral thoracic",
"Part 3 branches: subscapular (→circumflex scapular + thoracodorsal) + ant/post circumflex humeral",
"Figure 3.65 - trace each branch",
"Arteries of whole upper limb overview - Figure 3.67",
]),
("CLINICALS - Day 2", [
"Breast cancer lymphatic spread to axilla, liver, spine",
"Gynecomastia + Supernumerary nipples (polythelia) + Poland syndrome",
"Scapular winging: long thoracic nerve (C5-C7) → serratus anterior paralysis",
"Thoracodorsal nerve injury: latissimus dorsi dysfunction",
"Shoulder dislocation (anterior-inferior most common): axillary nerve injury risk",
"Frozen shoulder (adhesive capsulitis)",
"Subacromial bursitis + Painful arc syndrome + Dawbarn's sign",
"Aneurysm of axillary artery",
"Hyperabduction syndrome",
]),
("DIAGRAMS TO DRAW TODAY", [
"Axillary artery - all 3 parts and branches",
"Quadrangular space - boundaries and contents",
"Breast lymphatic drainage diagram",
]),
]
},
# ─── DAY 3 ────────────────────────────────────────────────────────────────
{
"number": 3,
"title": "Arm + Elbow + Cubital Fossa",
"color": "4A1942",
"light": "F3D9F4",
"subtitle": "Gateway Day - Nerves travel from axilla through arm to forearm",
"sections": [
("ARM (Snell Table 3.6, Figs 3.54-3.57)", [
"Flexor compartment muscles: biceps brachii, brachialis, coracobrachialis (Table 3.6)",
"Biceps brachii: long head origin, short head origin, insertion (bicipital tuberosity + bicipital aponeurosis), nerve supply (musculocutaneous C5,C6), actions",
"Brachialis: origin, insertion, nerve (musculocutaneous + small radial contribution), action",
"Coracobrachialis: origin, insertion, nerve (musculocutaneous C5,C6), action",
"Extensor compartment: triceps brachii only",
"Triceps: 3 heads (long=infraglenoid tubercle, lateral+medial=humerus), insertion (olecranon), nerve (radial C6-C8), actions",
"Musculocutaneous nerve (Fig 3.54): root C5-C7, pierces coracobrachialis, between biceps+brachialis, → lateral cutaneous of forearm",
"Axillary nerve (Fig 3.56): root C5,C6, posterior cord, through quadrangular space, relation to surgical neck of humerus, motor (deltoid + teres minor), sensory (regimental badge area)",
"Radial nerve in arm (Fig 3.57): root C5-T1, posterior cord, spiral groove of humerus, lateral intermuscular septum, motor in arm (triceps, anconeus, brachioradialis, ext carpi radialis longus)",
"Median nerve in arm (Fig 3.54): course only (lateral → medial to brachial artery), no branches in arm",
"Ulnar nerve in arm (Fig 3.55): course only (medial side, pierces medial intermuscular septum), no branches in arm",
"Brachial artery: continuation of axillary, course medial side of arm, relations to median nerve, branches (profunda brachii + others), terminates at cubital fossa",
"Profunda brachii: accompanies radial nerve in spiral groove",
]),
("ELBOW JOINT (Snell)", [
"Type: synovial, hinge (uniaxial)",
"Articulating surfaces: trochlea+capitulum of humerus with trochlear notch of ulna + head of radius",
"Medial (ulnar) collateral ligament: 3 bands (anterior, posterior, oblique)",
"Lateral (radial) collateral ligament",
"Annular ligament of radius",
"Movements: flexion (biceps, brachialis, brachioradialis) + extension (triceps, anconeus)",
"Nerve supply: musculocutaneous, median, ulnar, radial",
"Applied anatomy: pulled elbow, olecranon fracture",
]),
("CUBITAL FOSSA (v.imp - appears almost every year)", [
"Definition: triangular depression in front of elbow",
"Lateral boundary: brachioradialis",
"Medial boundary: pronator teres",
"Superior boundary (base): imaginary line between epicondyles",
"Roof: deep fascia + bicipital aponeurosis + skin",
"Floor: brachialis + supinator",
"Contents (lateral to medial): radial nerve, biceps tendon, brachial artery, median nerve (mnemonic: Really Big Boys Must)",
"Anastomosis around elbow: brachial profunda + recurrent branches of radial/ulnar arteries (Fig 3.67)",
]),
("CLINICALS - Day 3", [
"Fracture surgical neck of humerus → axillary nerve → deltoid paralysis, loss of shoulder roundness",
"Fracture shaft of humerus (spiral groove) → radial nerve → wrist drop",
"Medial epicondyle fracture → ulnar nerve injury",
"Supracondylar fracture → median nerve + brachial artery → Volkmann's ischemic contracture",
"Tennis elbow (lateral epicondylitis) - extensor origin",
"Golfer's elbow (medial epicondylitis) - flexor origin",
"Pulled elbow / Nursemaid's elbow (radial head subluxation in children)",
"Olecranon fracture",
"Popeye's deformity: rupture of biceps long head tendon",
]),
("DIAGRAMS TO DRAW TODAY", [
"Cubital fossa - boundaries and contents (labelled)",
"Radial nerve course from axilla through arm (spiral groove) to forearm",
"Anastomosis around elbow joint",
]),
]
},
# ─── DAY 4 ────────────────────────────────────────────────────────────────
{
"number": 4,
"title": "Forearm + Wrist",
"color": "7D3C00",
"light": "FFF0DC",
"subtitle": "Where Nerves Specialize - High-yield retinaculum contents for OSPE",
"sections": [
("FOREARM - BONES & COMPARTMENT OVERVIEW (Snell Table 3.2)", [
"Interosseous membrane: direction of fibres (downward + medially), function",
"Table 3.2: compartments and their nerve supply overview",
]),
("FLEXOR COMPARTMENT (Table 3.7)", [
"Superficial layer (5 muscles): pronator teres, flexor carpi radialis, palmaris longus, flexor carpi ulnaris, flexor digitorum superficialis",
"Pronator teres: 2 heads (humeral + ulnar), insertion (lateral radius), nerve (median), action - past paper SEQ",
"Flexor carpi radialis: origin, insertion (2nd metacarpal), nerve (median), action",
"Palmaris longus: origin, insertion (flexor retinaculum + palmar aponeurosis), nerve (median), congenital absence",
"Flexor carpi ulnaris: 2 heads, insertion (pisiform → hook of hamate → 5th metacarpal), nerve (ulnar C7,C8), action",
"Flexor digitorum superficialis: 2 heads, splits into 4 tendons (perforated by FDP), nerve (median)",
"Deep layer (3 muscles): flexor digitorum profundus, flexor pollicis longus, pronator quadratus",
"Flexor digitorum profundus: medial half (ulnar nerve), lateral half (anterior interosseous of median)",
"Flexor pollicis longus: origin (radius + AIN), insertion (distal phalanx thumb)",
"Pronator quadratus: anterior interosseous nerve, deepest layer at wrist",
]),
("LATERAL COMPARTMENT (Table 3.8)", [
"Brachioradialis: nerve (radial C5,C6), action (flex forearm when semi-pronated)",
"Extensor carpi radialis longus + brevis: nerve (radial/SBRN), action",
]),
("EXTENSOR COMPARTMENT (Table 3.9)", [
"Superficial: extensor digitorum, extensor digiti minimi, extensor carpi ulnaris",
"Extensor digitorum: nerve (PIN/posterior interosseous), insertion via extensor expansion - past paper SEQ",
"Deep: abductor pollicis longus, extensor pollicis brevis, extensor pollicis longus, extensor indicis",
"Supinator: 2 heads, nerve (PIN), action",
"All muscles: posterior interosseous nerve (deep branch of radial)",
]),
("NERVES IN FOREARM (Figs 3.54, 3.55, 3.57)", [
"Median nerve: enters forearm between 2 heads of pronator teres, gives AIN (flexor pollicis longus + lat FDP + pronator quadratus), palmar cutaneous branch",
"Anterior interosseous syndrome: loss of OK sign (can't flex index DIP + thumb IP)",
"Pronator syndrome: median nerve compressed by pronator teres",
"Ulnar nerve: enters forearm between 2 heads of flexor carpi ulnaris, gives dorsal cutaneous branch 5cm above wrist",
"Radial nerve: divides at lateral epicondyle → superficial branch (sensory) + deep branch (posterior interosseous nerve = motor)",
"Posterior interosseous nerve syndrome: finger drop without wrist drop",
]),
("FOREARM ARTERIES (Fig 3.65)", [
"Radial artery: arises from brachial at neck of radius, lateral forearm, enters hand via anatomical snuffbox",
"Ulnar artery: larger of the two, passes under FCU, gives common interosseous artery (→ anterior + posterior interosseous)",
"Anterior interosseous artery: descends on interosseous membrane",
"Posterior interosseous artery: passes over membrane",
]),
("RADIOULNAR JOINTS", [
"Superior radioulnar joint: pivot joint, inside elbow joint capsule, annular ligament",
"Inferior radioulnar joint: pivot joint, articular disc (triangular fibrocartilage complex)",
"Movements: pronation (pronator quadratus + pronator teres) + supination (biceps + supinator)",
]),
("WRIST (v.imp for OSPE, SEQ, OSVE)", [
"Flexor retinaculum: attachments (pisiform, hook of hamate medially; scaphoid tubercle, trapezium laterally)",
"Carpal tunnel contents (lateral to medial): flexor pollicis longus (1) + flexor digitorum superficialis x4 + flexor digitorum profundus x4 + median nerve = 9 tendons + 1 nerve",
"Carpal tunnel syndrome: median nerve compressed, thenar wasting, loss of opposition, Tinel's + Phalen's signs",
"Extensor retinaculum: 6 compartments lateral to medial - memorize: APL+EPB | ECRL+ECRB | EPL | ED+EI | EDM | ECU",
"Wrist joint: type (condyloid/ellipsoid, biaxial synovial), articular surfaces (radius + TFCC vs scaphoid + lunate)",
"Wrist movements: flexion (FCR, FCU, FDS, FDP), extension (ECRL, ECRB, ECU), abduction (FCR, APL, ECRL), adduction (FCU, ECU)",
"Nerve supply of wrist joint: anterior interosseous + posterior interosseous",
]),
("CLINICALS - Day 4", [
"Carpal tunnel syndrome: causes, signs (Tinel's, Phalen's, thenar wasting, ape hand, loss of opposition)",
"Scaphoid fracture: anatomical snuffbox tenderness, AVN risk (poor blood supply)",
"Colles' fracture: distal radius, dinner fork deformity, FOOSH injury",
"Smith's fracture: reverse Colles', anterior displacement, garden spade deformity",
"Madelung's deformity: growth plate issue at distal radius",
"Radioulnar synostosis: fusion, loss of pronation/supination",
"Guyon's canal syndrome: ulnar nerve at wrist between pisiform + hook of hamate",
]),
("DIAGRAMS TO DRAW TODAY", [
"Extensor retinaculum - 6 compartments with tendons in order",
"Carpal tunnel contents (cross-section view)",
"Radial + ulnar artery course in forearm",
]),
]
},
# ─── DAY 5 ────────────────────────────────────────────────────────────────
{
"number": 5,
"title": "The Hand (Deep Dive)",
"color": "1B3A4B",
"light": "D6EAF8",
"subtitle": "Highest density of exam questions - requires Days 1-4 knowledge",
"sections": [
("PALMAR FASCIA & SPACES", [
"Palmar aponeurosis: attachment to flexor retinaculum, 4 digital slips, clinical importance (Dupuytren's)",
"Thenar space: boundaries, infections spread here",
"Midpalmar space: boundaries (flexor tendons, metacarpals, adductor pollicis), infections spread here - past paper",
"Hypothenar space",
"Lumbrical canal: lumbrical passes through here alongside flexor tendons",
"Pulp space of finger: closed fibrous compartment, felon infection (very painful, can cause osteomyelitis)",
"Fibrous flexor sheaths: pulleys (A1-A5, C1-C3), hold tendons against bone",
"Osseofascial compartments Table 3.10",
]),
("INTRINSIC HAND MUSCLES (Tables 3.10, 3.11)", [
"Thenar muscles (3): abductor pollicis brevis (median), flexor pollicis brevis (superficial head=median, deep=ulnar), opponens pollicis (median) - all past paper SEQs",
"Adductor pollicis: 2 heads (oblique+transverse), nerve (ulnar deep branch) - Froment's sign",
"Hypothenar muscles (3): abductor digiti minimi, flexor digiti minimi brevis, opponens digiti minimi - all ulnar nerve (deep branch)",
"Abductor digiti minimi: origin (pisiform), insertion (medial base proximal phalanx little finger), nerve (ulnar), action - past paper SEQ",
"Lumbricals (4): origin (FDP tendons), insertion (lateral band of extensor expansion), nerve (lateral 2 = median, medial 2 = ulnar deep)",
"Lumbricals action: flex MCP + extend IP joints simultaneously",
"Palmar interossei (3): PAD = adduct fingers (toward middle finger), nerve (ulnar deep branch) - past paper SEQ",
"Dorsal interossei (4): DAB = abduct fingers (away from middle finger), nerve (ulnar deep branch)",
"Middle finger: both a palmar and dorsal interosseus",
]),
("EXTENSOR EXPANSION (v.imp - asked 3x in past papers)", [
"Also called dorsal hood or dorsal digital expansion",
"Formation: EDC tendon splits into 3 slips - central slip (→ middle phalanx) + 2 lateral bands",
"Lateral bands receive contributions from lumbricals + interossei",
"Both lateral bands reunite → terminal tendon → distal phalanx",
"Function: allows simultaneous MCP flexion + PIP/DIP extension",
"Mallet finger: rupture of terminal tendon → loss of DIP extension",
"Boutonniere deformity: central slip rupture → PIP flexion + DIP hyperextension",
]),
("VASCULATURE OF HAND", [
"Superficial palmar arch: formed mainly by ulnar artery + superficial branch of radial artery",
"Superficial arch: gives 3 common palmar digital arteries → proper palmar digital arteries (to sides of fingers 2-5)",
"Deep palmar arch: formed mainly by radial artery (from anatomical snuffbox, between 2 heads of 1st dorsal interosseous) + deep branch of ulnar",
"Deep arch: lies on metacarpals, gives 3 palmar metacarpal arteries (join common digital arteries)",
"Princeps pollicis: from radial artery, supplies both sides of thumb",
"Radialis indicis: from radial artery, supplies lateral side of index finger",
"Draw both arches - diagram questions in past papers",
]),
("ANATOMICAL SNUFFBOX (past paper SEQ + diagram)", [
"Lateral boundary: APL + EPB tendons",
"Medial boundary: EPL tendon",
"Proximal boundary: styloid process of radius",
"Floor: scaphoid (proximal) + trapezium (distal)",
"Roof: skin + superficial branch of radial nerve",
"Contents: radial artery (deep), cephalic vein (superficial), superficial branch of radial nerve",
"Scaphoid fracture: tenderness in snuffbox = suspect scaphoid",
]),
("NERVES OF HAND (Figs 3.54, 3.55, 3.57 - highest yield)", [
"Median nerve in hand: enters via carpal tunnel, gives recurrent (thenar) branch + 3 common palmar digital nerves",
"Median motor supply in hand (LOAF): Lumbricals 1+2, Opponens pollicis, Abductor pollicis brevis, Flexor pollicis brevis (superficial head)",
"Median sensory: lateral 3.5 digits (palmar) + dorsal tips of same digits",
"Ulnar nerve in hand: enters via Guyon's canal (between pisiform + hook of hamate), gives superficial branch (sensory) + deep branch (motor)",
"Ulnar deep branch motor: all interossei (7), medial 2 lumbricals, adductor pollicis, hypothenar 3, FPB deep head",
"Ulnar sensory: medial 1.5 digits (palmar) + dorsal medial 1.5 digits",
"Radial nerve in hand: only sensory - dorsal surface, lateral 3.5 fingers (not tips)",
"Cutaneous innervation of hand = actual areas of skin; Dermatomes = cord level C6,C7,C8 bands - know the difference",
"Draw: median nerve in hand (labelled diagram - direct past paper)",
"Draw: ulnar nerve in hand (labelled diagram - direct past paper)",
]),
("1st CARPOMETACARPAL JOINT", [
"Type: saddle joint (sellar), biaxial synovial",
"Articulating bones: trapezium + base of 1st metacarpal",
"Movements: flexion (FPL + FPB), extension (EPL + EPB + APL), abduction (APL + APB), adduction, opposition",
"Opposition = combination of abduction + flexion + medial rotation",
]),
("CLINICALS - Day 5", [
"Ape hand deformity: median nerve injury at elbow (thenar wasting, opposition lost, pointing index)",
"Ulnar claw hand: ring + little finger (lumbricals 3+4 lost), MCP hyperextension + IP flexion",
"Why not all 4 fingers claw? Lumbricals 1+2 (index+middle) intact = median nerve",
"Benediction hand: median nerve injury - index + middle can't flex",
"Froment's sign: adductor pollicis paralysis (ulnar), paper test, flexor pollicis longus compensates",
"Dupuytren's contracture: palmar aponeurosis fibrosis, ring + little finger contracture",
"Mallet finger (terminal tendon rupture) vs Boutonniere deformity (central slip rupture)",
"Anterior interosseous nerve syndrome: loss of OK sign",
"Bennett's fracture: base of 1st metacarpal + CMC joint dislocation",
"Boxer's fracture: neck of 5th metacarpal",
]),
("DIAGRAMS TO DRAW TODAY", [
"Superficial palmar arch - formation and branches",
"Deep palmar arch - formation and branches",
"Extensor expansion (dorsal view) - all components labelled",
"Cutaneous innervation of hand (palmar view) vs dorsal view",
"Median nerve in hand (labelled)",
"Ulnar nerve in hand (labelled)",
"Anatomical snuffbox (boundaries and contents)",
]),
]
},
# ─── DAY 6 ────────────────────────────────────────────────────────────────
{
"number": 6,
"title": "Veins + Lymphatics + Joints + Full Clinicals Revision",
"color": "2D3561",
"light": "E8E8FF",
"subtitle": "Tie it all together - Revision day + highest-yield joints",
"sections": [
("SUPERFICIAL VEINS OF UPPER LIMB (Fig 3.68)", [
"Dorsal venous arch: origin on dorsum of hand from dorsal digital veins",
"Cephalic vein: origin (radial side of dorsal arch / anatomical snuffbox), ascends lateral forearm, lateral arm, deltopectoral groove, pierces clavipectoral fascia, drains into axillary vein - past paper SEQ",
"Basilic vein: origin (ulnar side of dorsal arch), ascends medial forearm, pierces deep fascia mid-arm, joins brachial vein → axillary vein - past paper SEQ",
"Median cubital vein: connects cephalic to basilic in front of cubital fossa, common IV cannulation site (median nerve not immediately behind it)",
"Median antebrachial vein: ascends middle of forearm",
"Draw full diagram of superficial veins of upper limb (direct past paper diagram question)",
"Applied anatomy of cephalic vein: used for IV access, cardiac catheterization",
]),
("LYMPHATICS (Snell)", [
"Axillary lymph nodes - 5 groups: anterior (pectoral), posterior (subscapular), lateral, central, apical - direct past paper SEQ",
"Anterior group: along lateral thoracic artery, receives from breast (lateral quadrants), chest wall",
"Posterior group: along subscapular artery, receives from back",
"Lateral group: medial to axillary vein, receives from whole upper limb",
"Central group: embedded in axillary fat, receives from all 3 above groups",
"Apical group: behind clavicle, receives from central group + breast (Rotter's nodes pathway)",
"Efferents of apical: subclavian trunk → thoracic duct (left) or right lymphatic duct",
"Superficial lymph vessels: follow superficial veins",
"Deep lymph vessels: follow brachial artery",
"Breast lymphatics (consolidation): 75% to axillary (pectoral group first), 25% to internal mammary, others to posterior intercostal nodes",
]),
("SHOULDER JOINT (v.v.imp - direct SEQ every year)", [
"Type: ball and socket (spheroidal), multiaxial, most mobile joint in body",
"Articular surfaces: head of humerus (ball) + glenoid cavity of scapula (socket)",
"Glenoid labrum: fibrocartilaginous rim, deepens socket",
"Capsule: loose, attached around glenoid + anatomical neck of humerus",
"Glenohumeral ligaments (3): superior, middle, inferior bands",
"Coracohumeral ligament: coracoid process → greater tubercle",
"Transverse humeral ligament: holds biceps tendon in intertubercular groove",
"Coracoacromial arch: coracoacromial ligament + acromion (prevents superior dislocation)",
"Rotator cuff (SITS): Supraspinatus (abduction initiation, suprascapular nerve), Infraspinatus (lateral rotation, suprascapular nerve), Teres minor (lateral rotation, axillary nerve), Subscapularis (medial rotation, subscapular nerve)",
"Movements: flexion (anterior deltoid, pec major, coracobrachialis), extension (posterior deltoid, lat dorsi, teres major), abduction (supraspinatus initiates 0-15°, deltoid continues to 90°, trapezius + serratus anterior 90-180°)",
"Adduction: pec major, lat dorsi, teres major",
"Medial rotation: subscapularis, pec major, lat dorsi, teres major, anterior deltoid",
"Lateral rotation: infraspinatus, teres minor, posterior deltoid",
"Circumduction: all above combined",
"Nerve supply: axillary (C5,C6) + suprascapular (C5,C6)",
"Applied anatomy: most commonly dislocated joint, anterior-inferior dislocation most common (axillary nerve risk)",
]),
("STERNOCLAVICULAR JOINT (direct past paper SEQ)", [
"Type: saddle joint with articular disc, synovial",
"Articular surfaces: medial end of clavicle + manubrium sterni + 1st costal cartilage",
"Articular disc: divides joint into 2 compartments, attached to clavicle + 1st rib",
"Ligaments: anterior + posterior sternoclavicular, interclavicular, costoclavicular",
"Movements: elevation, depression, protraction, retraction, rotation of clavicle",
"Nerve supply: medial supraclavicular + nerve to subclavius",
]),
("ACROMIOCLAVICULAR JOINT", [
"Type: plane/gliding synovial joint",
"Articular surfaces: lateral clavicle + medial acromion",
"Ligaments: acromioclavicular ligament, coracoclavicular ligament (conoid + trapezoid)",
"Clinical: shoulder separation (Grade I-III)",
]),
("REMAINING JOINTS - CONSOLIDATION", [
"Elbow joint: revisit from Day 3 - type, surfaces, ligaments, movements, nerve supply",
"Wrist joint: revisit from Day 4 - condyloid, movements, nerve supply",
"Superior + Inferior Radioulnar joints: revisit from Day 4",
"1st CMC joint: revisit from Day 5 - saddle, movements",
"Other small joints of hand: general joint type (condyloid for MCP, hinge for IP)",
]),
("SURFACE MARKINGS (from BD Chaurasia)", [
"Surface marking of brachial artery",
"Surface marking of radial artery",
"Surface marking of ulnar artery",
"Surface marking of cephalic and basilic veins",
"Surface marking of median nerve at wrist",
"Surface marking of ulnar nerve at wrist (Guyon's canal)",
]),
("DERMATOMES (BD Chaurasia / KLM)", [
"C5: lateral arm (regimental badge area)",
"C6: lateral forearm, thumb, index finger",
"C7: middle finger (long finger)",
"C8: ring + little finger, medial forearm",
"T1: medial arm",
"Watch Brainless Medicose lecture for dermatomes - highly recommended",
"Draw dermatomes diagram from memory (direct past paper diagram + SEQ)",
]),
("FULL CLINICALS REVISION CHECKLIST", [
"All nerve injury deformities: wrist drop, ape hand, claw hand, benediction, waiter's tip",
"All fractures + nerve at risk: clavicle (BP/subclavian), surgical neck (axillary), shaft humerus (radial), medial epicondyle (ulnar), supracondylar (median + brachial artery), scaphoid (AVN), Colles'/Smith's, Bennett's/Boxer's",
"All joint dislocations: shoulder (anterior-inferior), AC joint, pulled elbow",
"All entrapment syndromes: carpal tunnel, Guyon's canal, cubital tunnel, thoracic outlet",
"Vascular tests: Allen's test procedure + interpretation",
"Rotator cuff tear: supraspinatus most common, painful arc 60-120°, tested with empty can test",
"Volkmann's ischemic contracture: cause, presentation, 3 Ps (pain, pallor, pulselessness)",
"Dupuytren's vs Volkmann's contracture: know the difference",
]),
("DIAGRAMS TO DRAW TODAY", [
"Superficial veins of upper limb (full diagram, labelled)",
"Dermatomes of upper limb (both surfaces - direct past paper)",
"Axillary lymph node groups (diagram)",
"Shoulder joint (cross-section diagram - ligaments + rotator cuff)",
]),
]
},
]
# ══════════════════════════════════════════════════════════════════════════════
# Colour palette per day
# ══════════════════════════════════════════════════════════════════════════════
DAY_COLORS = {
1: {"header":"1B4332","light":"D8F3DC","accent":"2D6A4F"},
2: {"header":"1A3A5C","light":"DBE9FF","accent":"2A5F8F"},
3: {"header":"4A1942","light":"F3D9F4","accent":"7B2D8B"},
4: {"header":"7D3C00","light":"FFF0DC","accent":"B05A00"},
5: {"header":"1B3A4B","light":"D6EAF8","accent":"2874A6"},
6: {"header":"2D3561","light":"E8E8FF","accent":"4A5BA8"},
}
# Subheader background colors (alternate between two shades per day)
SUB_BG = {
1: "95D5B2", 2:"93C6E7", 3:"DDA0DD",
4: "FFD5A0", 5:"AED6F1", 6:"B0BBE8"
}
for day in days:
n = day["number"]
cols = DAY_COLORS[n]
# ── Page break (except first day) ────────────────────────────────────────
if n > 1:
doc.add_page_break()
# ── Day banner ────────────────────────────────────────────────────────────
banner = doc.add_table(rows=1, cols=1)
banner.style = "Table Grid"
bc = banner.rows[0].cells[0]
shade_cell(bc, cols["header"])
bp1 = bc.paragraphs[0]
bp1.alignment = WD_ALIGN_PARAGRAPH.LEFT
br1 = bp1.add_run(f" DAY {n} | ")
br1.bold = True
br1.font.size = Pt(16)
br1.font.color.rgb = RGBColor.from_string("FFFFFF")
br2 = bp1.add_run(day["title"])
br2.bold = True
br2.font.size = Pt(15)
br2.font.color.rgb = RGBColor.from_string("FFFFFF")
bp2 = bc.add_paragraph(f" {day['subtitle']}")
bp2.runs[0].font.size = Pt(10)
bp2.runs[0].font.color.rgb = RGBColor.from_string("AAAAAA")
doc.add_paragraph("")
# ── Progress bar row ──────────────────────────────────────────────────────
prog = doc.add_table(rows=1, cols=4)
prog.style = "Table Grid"
labels = ["Date studied", "Hours spent", "Topics done / Total", "Day score (1-10)"]
for i, lbl in enumerate(labels):
c = prog.rows[0].cells[i]
shade_cell(c, cols["light"])
p = c.paragraphs[0]
p.clear()
r1 = p.add_run(lbl + "\n")
r1.bold = True
r1.font.size = Pt(9)
r1.font.color.rgb = RGBColor.from_string(cols["accent"])
r2 = p.add_run("_______________")
r2.font.size = Pt(10)
doc.add_paragraph("")
# ── Main checklist table (2 cols: item | done) ────────────────────────────
tbl = doc.add_table(rows=0, cols=2)
tbl.style = "Table Grid"
# column widths
for row in tbl.rows:
row.cells[0].width = Inches(5.8)
row.cells[1].width = Inches(0.6)
# header row
hrow = tbl.add_row()
shade_cell(hrow.cells[0], "1A1A2E")
shade_cell(hrow.cells[1], "1A1A2E")
hp = hrow.cells[0].paragraphs[0]
hp.clear()
hr = hp.add_run(" CHECKLIST ITEM")
hr.bold = True
hr.font.size = Pt(10)
hr.font.color.rgb = RGBColor.from_string("FFFFFF")
dp = hrow.cells[1].paragraphs[0]
dp.clear()
dp.alignment = WD_ALIGN_PARAGRAPH.CENTER
dr = dp.add_run("DONE")
dr.bold = True
dr.font.size = Pt(9)
dr.font.color.rgb = RGBColor.from_string("FFFFFF")
for section_title, items in day["sections"]:
add_section_row(tbl, section_title, bg=cols["header"])
for item in items:
add_checkbox_row(tbl, item)
# ── Notes box ─────────────────────────────────────────────────────────────
doc.add_paragraph("")
notes = doc.add_table(rows=1, cols=1)
notes.style = "Table Grid"
nc = notes.rows[0].cells[0]
shade_cell(nc, cols["light"])
np1 = nc.paragraphs[0]
np1.clear()
nr1 = np1.add_run("NOTES, MNEMONICS & KEY POINTS - Day " + str(n))
nr1.bold = True
nr1.font.size = Pt(10)
nr1.font.color.rgb = RGBColor.from_string(cols["accent"])
for _ in range(7):
lp = nc.add_paragraph("_" * 110)
lp.runs[0].font.size = Pt(9)
lp.runs[0].font.color.rgb = RGBColor.from_string("CCCCCC")
# ── End-of-day review ─────────────────────────────────────────────────────
doc.add_paragraph("")
rev = doc.add_table(rows=1, cols=3)
rev.style = "Table Grid"
r_labels = [
("Confidence (1-10)", "How well do you know today's material?"),
("Weakest Topic", "What needs revisiting?"),
("Next action", "What will you do first tomorrow?"),
]
for i, (title, hint) in enumerate(r_labels):
c = rev.rows[0].cells[i]
shade_cell(c, "2E4057")
p = c.paragraphs[0]
p.clear()
r1 = p.add_run(title + "\n")
r1.bold = True
r1.font.size = Pt(9)
r1.font.color.rgb = RGBColor.from_string("AED9E0")
r2 = p.add_run(hint + "\n")
r2.font.size = Pt(8)
r2.font.color.rgb = RGBColor.from_string("888888")
r3 = p.add_run("___________________________")
r3.font.size = Pt(10)
r3.font.color.rgb = RGBColor.from_string("FFFFFF")
# ══════════════════════════════════════════════════════════════════════════════
# MASTER PROGRESS TABLE (last page)
# ══════════════════════════════════════════════════════════════════════════════
doc.add_page_break()
doc.add_heading("MASTER PROGRESS OVERVIEW", level=1)
mt = doc.add_table(rows=8, cols=6)
mt.style = "Table Grid"
headers = ["Day", "Topic", "Date", "Hours", "Score /10", "Status"]
hrow = mt.rows[0]
for i, h in enumerate(headers):
shade_cell(hrow.cells[i], "2E4057")
p = hrow.cells[i].paragraphs[0]
p.clear()
r = p.add_run(h)
r.bold = True
r.font.size = Pt(10)
r.font.color.rgb = RGBColor.from_string("FFFFFF")
day_rows = [
("1", "Bones + Brachial Plexus"),
("2", "Pectoral Region + Scapular + Axilla + Back"),
("3", "Arm + Elbow + Cubital Fossa"),
("4", "Forearm + Wrist"),
("5", "The Hand (Deep Dive)"),
("6", "Veins + Lymphatics + Joints + Clinicals Revision"),
("", "TOTAL"),
]
for i, (d, t) in enumerate(day_rows):
row = mt.rows[i + 1]
n_int = int(d) if d.isdigit() else 0
bg = DAY_COLORS[n_int]["light"] if n_int else "F0F0F0"
for j in range(6):
shade_cell(row.cells[j], bg)
row.cells[j].paragraphs[0].clear()
row.cells[0].paragraphs[0].add_run(d).font.size = Pt(10)
row.cells[1].paragraphs[0].add_run(t).font.size = Pt(10)
row.cells[2].paragraphs[0].add_run("").font.size = Pt(10)
row.cells[3].paragraphs[0].add_run("").font.size = Pt(10)
row.cells[4].paragraphs[0].add_run("").font.size = Pt(10)
r_status = row.cells[5].paragraphs[0].add_run("☐ Not started")
r_status.font.size = Pt(10)
# ── Final encouragement ───────────────────────────────────────────────────────
doc.add_paragraph("")
final = doc.add_table(rows=1, cols=1)
final.style = "Table Grid"
fc = final.rows[0].cells[0]
shade_cell(fc, "1B4332")
fp = fc.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp.clear()
fr = fp.add_run("You started from scratch. 6 days later you will know the entire upper limb.")
fr.bold = True
fr.font.size = Pt(12)
fr.font.color.rgb = RGBColor.from_string("95D5B2")
fc.add_paragraph("")
fp2 = fc.add_paragraph("Draw diagrams. Write notes. Review clinicals. You've got this.")
fp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp2.runs[0].font.size = Pt(10)
fp2.runs[0].font.color.rgb = RGBColor.from_string("AAAAAA")
fc.add_paragraph("")
# ── Save ──────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/upper-limb-tracker/Upper_Limb_6Day_Study_Tracker.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/upper-limb-tracker && python3 build_tracker.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/upper-limb-tracker/Upper_Limb_6Day_Study_Tracker.docx') print(f'Paragraphs: {len(doc.paragraphs)}') print(f'Tables: {len(doc.tables)}') # quick sanity check for p in doc.paragraphs[:5]: if p.text.strip(): print(p.text[:80]) "
Upper Limb 6Day Study Tracker
Word Document · DOCX