Can you make MCQS on upper limb in clinical cases
| Q | Answer | Topic |
|---|---|---|
| 1 | D | Radial nerve - midshaft humeral fracture |
| 2 | C | Radial nerve - axillary level |
| 3 | D | Carpal tunnel syndrome |
| 4 | A | Tinel's sign |
| 5 | C | Cubital tunnel syndrome |
| 6 | C | Ulnar claw hand |
| 7 | B | Median nerve at wrist |
| 8 | C | Erb's palsy (C5, C6) |
| 9 | C | Klumpke's palsy (C8, T1) |
| 10 | B | Colles' fracture |
| 11 | C | Scaphoid fracture |
| 12 | C | Supracondylar fracture - brachial artery |
| 13 | C | AIN palsy - elbow dislocation |
| 14 | B | Galeazzi fracture-dislocation |
| 15 | B | Mallet finger |
| 16 | C | Allen's test - palmar arch |
| 17 | C | Raynaud's phenomenon |
| 18 | B | Vibration white finger |
| 19 | B | de Quervain's tenosynovitis |
| 20 | C | Guyon's canal - deep motor branch |
Make it as a document
mkdir -p /tmp/workspace/upper-limb-mcqs && ls /tmp/workspace/upper-limb-mcqs/
~/upper-limb-mcqs/generate_mcqs.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 ──────────────────────────────────────────────────
for section in doc.sections:
section.top_margin = Inches(1.0)
section.bottom_margin = Inches(1.0)
section.left_margin = Inches(1.15)
section.right_margin = Inches(1.15)
# ── Default body style ─────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(11)
# ── Helper: add shaded paragraph (for explanations) ───────────────
def add_shaded_para(doc, text, shade_color="E8F4FD"):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.25)
p.paragraph_format.right_indent = Inches(0.25)
p.paragraph_format.space_before = Pt(3)
p.paragraph_format.space_after = Pt(6)
pPr = p._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), shade_color)
pPr.append(shd)
run = p.add_run("Explanation: ")
run.bold = True
run.font.color.rgb = RGBColor(0x1A, 0x53, 0x76)
run2 = p.add_run(text)
run2.font.color.rgb = RGBColor(0x1A, 0x53, 0x76)
return p
# ── Helper: horizontal rule ───────────────────────────────────────
def add_hr(doc):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(2)
p.paragraph_format.space_after = Pt(2)
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
bottom = OxmlElement("w:bottom")
bottom.set(qn("w:val"), "single")
bottom.set(qn("w:sz"), "6")
bottom.set(qn("w:space"), "1")
bottom.set(qn("w:color"), "4472C4")
pBdr.append(bottom)
pPr.append(pBdr)
# ═══════════════════════════════════════════════════════════════════
# TITLE PAGE BLOCK
# ═══════════════════════════════════════════════════════════════════
title_p = doc.add_heading("Upper Limb", level=0)
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in title_p.runs:
run.font.color.rgb = RGBColor(0x1F, 0x39, 0x7D)
sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub_run = sub_p.add_run("Clinical Case MCQs")
sub_run.font.size = Pt(16)
sub_run.font.bold = True
sub_run.font.color.rgb = RGBColor(0x28, 0x6F, 0xA3)
meta_p = doc.add_paragraph()
meta_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
meta_run = meta_p.add_run("20 Questions | MBBS/MD Level | Nerve Injuries · Fractures · Vascular")
meta_run.font.size = Pt(10)
meta_run.font.color.rgb = RGBColor(0x55, 0x55, 0x55)
doc.add_paragraph() # spacer
add_hr(doc)
doc.add_paragraph() # spacer
# ═══════════════════════════════════════════════════════════════════
# MCQ DATA
# ═══════════════════════════════════════════════════════════════════
sections = [
{
"title": "Section 1 — Nerve Injuries & Palsies",
"color": RGBColor(0x1F, 0x39, 0x7D),
"questions": [
{
"n": 1,
"stem": "A 28-year-old man is brought to the ER after a midshaft humeral fracture following a fall. On examination, he cannot extend his wrist or metacarpophalangeal joints. Sensation is reduced over the dorsum of the hand. Which nerve is injured?",
"options": [
("A", "Musculocutaneous nerve"),
("B", "Ulnar nerve"),
("C", "Median nerve"),
("D", "Radial nerve"),
("E", "Axillary nerve"),
],
"answer": "D",
"explanation": "The radial nerve runs in the spiral (radial) groove of the humerus and is classically injured in midshaft humeral fractures, producing wrist drop and loss of MCP joint extension. Note: IP joint extension is preserved — done by interossei (ulnar nerve) via the extensor expansion. [S Das Manual of Clinical Surgery, p. 143]",
},
{
"n": 2,
"stem": "A 35-year-old man presents after a posterior dislocation of the shoulder. On examination, he has wrist drop AND weakness of elbow extension (triceps). At which level is the radial nerve most likely injured?",
"options": [
("A", "Posterior interosseous nerve (forearm)"),
("B", "Radial groove of humerus"),
("C", "Axilla (proximal)"),
("D", "Lateral epicondyle"),
("E", "Guyon's canal"),
],
"answer": "C",
"explanation": "Axillary (proximal) radial nerve injury causes triceps weakness in addition to wrist drop. Injury at the radial groove spares the triceps because the branch to triceps arises proximal to the groove. [Schwartz's Principles of Surgery, p. 1805]",
},
{
"n": 3,
"stem": "A 45-year-old construction worker complains of nocturnal tingling and numbness in the thumb, index, and middle fingers. He notices weakness gripping small objects. Examination reveals thenar wasting and a positive Phalen's test. What is the most likely diagnosis?",
"options": [
("A", "Cubital tunnel syndrome"),
("B", "Thoracic outlet syndrome"),
("C", "C6 radiculopathy"),
("D", "Carpal tunnel syndrome"),
("E", "Pronator teres syndrome"),
],
"answer": "D",
"explanation": "Carpal tunnel syndrome (CTS) is the most common upper extremity nerve compression. It compresses the median nerve at the wrist, producing sensory symptoms in the thumb/index/middle fingers, nocturnal tingling, and thenar wasting in advanced cases. [Schwartz's Principles of Surgery, p. 1971]",
},
{
"n": 4,
"stem": "A 60-year-old woman with CTS undergoes examination. Tapping over the volar wrist reproduces tingling into the first three fingers. Which sign is this?",
"options": [
("A", "Tinel's sign"),
("B", "Phalen's sign"),
("C", "Froment's sign"),
("D", "Finkelstein's test"),
("E", "Allen's test"),
],
"answer": "A",
"explanation": "Tinel's sign is elicited by tapping over a compressed or regenerating nerve, reproducing distal tingling (paresthesia) in the nerve's distribution. Over the carpal tunnel it suggests median nerve entrapment. [Schwartz's Principles of Surgery, p. 1971]",
},
{
"n": 5,
"stem": "A 50-year-old man complains of numbness in the little finger and medial half of the ring finger, and weakness when holding a piece of paper between his fingers. He frequently rests his elbow on a hard desk. What is the most likely nerve and site of compression?",
"options": [
("A", "Median nerve — carpal tunnel"),
("B", "Ulnar nerve — Guyon's canal"),
("C", "Ulnar nerve — cubital tunnel (elbow)"),
("D", "Radial nerve — radial groove"),
("E", "Median nerve — pronator teres"),
],
"answer": "C",
"explanation": "Cubital tunnel syndrome involves ulnar nerve compression at the elbow, producing numbness in the 4th and 5th digits and weakness of intrinsic hand muscles (Froment's sign — paper pinch with IP flexion of thumb). Prolonged elbow flexion and leaning on hard surfaces are risk factors. [Goldman-Cecil Medicine; Schwartz's Surgery]",
},
{
"n": 6,
"stem": "A patient presents with inability to abduct/adduct the fingers, weakness of DIP flexion in the ring and little fingers, and clawing of the 4th and 5th digits. Which muscle group is most affected?",
"options": [
("A", "Thenar muscles (median nerve)"),
("B", "Flexor digitorum profundus — radial 2 digits (median nerve)"),
("C", "Intrinsic hand muscles (ulnar nerve)"),
("D", "Flexor carpi radialis (median nerve)"),
("E", "Extensor digitorum communis (radial nerve)"),
],
"answer": "C",
"explanation": "The ulnar nerve supplies all interossei (finger abduction/adduction) and the medial two lumbricals. Loss causes clawing of the ring and little fingers (ulnar claw) because the lumbricals are paralyzed and the long flexors (FDP) are unopposed at the DIP joints.",
},
{
"n": 7,
"stem": "A 30-year-old man cannot flex the DIP of his index and middle fingers after a deep wrist laceration. The thenar eminence is wasted. He cannot oppose the thumb. Which nerve is injured?",
"options": [
("A", "Ulnar nerve"),
("B", "Median nerve"),
("C", "Radial nerve"),
("D", "Anterior interosseous nerve only"),
("E", "Musculocutaneous nerve"),
],
"answer": "B",
"explanation": "The median nerve at the wrist supplies thenar muscles (via the recurrent motor branch) enabling thumb opposition, and FDP to the index and middle fingers via the anterior interosseous branch. A complete wrist-level median nerve injury affects all these structures.",
},
{
"n": 8,
"stem": "A motorcyclist sustains a traction brachial plexus injury. He presents with inability to abduct the shoulder, inability to flex the elbow, and an arm hanging in internal rotation. Hand function is normal. Which nerve roots are affected?",
"options": [
("A", "C8, T1"),
("B", "C5, C6, C7, C8"),
("C", "C5, C6"),
("D", "C7, C8, T1"),
("E", "C6, C7"),
],
"answer": "C",
"explanation": "This is Erb's palsy (Erb-Duchenne paralysis) — upper brachial plexus injury (C5, C6). It presents with the classic 'waiter's tip' posture: adducted shoulder, extended elbow, pronated forearm. Deltoid, biceps, and brachioradialis are paralyzed. [Campbell's Operative Orthopaedics]",
},
{
"n": 9,
"stem": "A newborn delivered with difficulty shows a limp hand with no movement. Examination reveals paralysis of all intrinsic hand muscles and ipsilateral Horner's syndrome (ptosis, miosis, anhidrosis). Which nerve roots are involved?",
"options": [
("A", "C5, C6 — upper trunk"),
("B", "C6, C7, C8"),
("C", "C8, T1 — lower trunk"),
("D", "C5, C6, C7"),
("E", "C4, C5"),
],
"answer": "C",
"explanation": "Klumpke's palsy is a lower brachial plexus injury (C8, T1). T1 avulsion from the spinal cord disrupts the sympathetic outflow to the face, causing ipsilateral Horner's syndrome. All intrinsic hand muscles are paralyzed. [Campbell's Operative Orthopaedics]",
},
],
},
{
"title": "Section 2 — Fractures & Dislocations",
"color": RGBColor(0x1D, 0x6A, 0x3E),
"questions": [
{
"n": 10,
"stem": "A 65-year-old woman falls on an outstretched hand. X-ray shows a dorsally angulated fracture of the distal radius within 2.5 cm of the wrist, with shortening. What is the name of this fracture?",
"options": [
("A", "Smith's fracture"),
("B", "Colles' fracture"),
("C", "Barton's fracture"),
("D", "Bennett's fracture"),
("E", "Galeazzi fracture"),
],
"answer": "B",
"explanation": "Colles' fracture is a transverse fracture of the distal radius with dorsal displacement and angulation, producing the classic 'dinner fork' deformity. It is the most common fracture in people over 50, especially postmenopausal women with osteoporosis.",
},
{
"n": 11,
"stem": "A 25-year-old rugby player falls on a dorsiflexed, radially deviated wrist. He has exquisite tenderness in the anatomical snuffbox. Initial X-ray is normal. What is the most important next step?",
"options": [
("A", "Reassure and discharge"),
("B", "Wrist splint only and X-ray at 1 week"),
("C", "Treat as scaphoid fracture — immobilize and arrange MRI or CT"),
("D", "US-guided corticosteroid injection"),
("E", "EMG/NCS study"),
],
"answer": "C",
"explanation": "Anatomical snuffbox tenderness after a fall on an outstretched hand is a scaphoid fracture until proven otherwise. Initial X-rays miss up to 20% of cases. MRI or CT is the gold standard for early diagnosis. The scaphoid's precarious blood supply (enters distally) makes avascular necrosis a real risk with delayed treatment.",
},
{
"n": 12,
"stem": "A 10-year-old boy falls off a trampoline onto his outstretched hand with elbow in extension. X-ray shows a supracondylar fracture. Which structure is most at risk of injury?",
"options": [
("A", "Ulnar artery"),
("B", "Posterior interosseous artery"),
("C", "Brachial artery and anterior interosseous nerve"),
("D", "Radial artery"),
("E", "Profunda brachii"),
],
"answer": "C",
"explanation": "Supracondylar fractures of the humerus are the most common elbow fractures in children. The brachial artery and anterior interosseous nerve (AIN) are at risk anteriorly. Neurovascular assessment (pulse, capillary refill, AIN function — 'OK sign') is mandatory and urgent.",
},
{
"n": 13,
"stem": "A 40-year-old man dislocates his elbow posteriorly. After reduction, he cannot form the 'OK sign' — unable to flex the DIP of his index finger or the IP of his thumb. No sensory loss. Which nerve is injured?",
"options": [
("A", "Radial nerve"),
("B", "Ulnar nerve"),
("C", "Anterior interosseous nerve (AIN)"),
("D", "Median nerve at wrist"),
("E", "Musculocutaneous nerve"),
],
"answer": "C",
"explanation": "The AIN is a pure motor branch of the median nerve supplying FPL, FDP to index/middle, and pronator quadratus. AIN palsy causes inability to flex the thumb IP and index DIP joints — tested by the 'OK sign.' No sensory loss because AIN carries no cutaneous fibres. Associated with elbow dislocation and Monteggia fractures.",
},
{
"n": 14,
"stem": "A 20-year-old man sustains a radial shaft fracture with dislocation of the distal radioulnar joint (DRUJ). What is this fracture-dislocation called?",
"options": [
("A", "Monteggia fracture-dislocation"),
("B", "Galeazzi fracture-dislocation"),
("C", "Essex-Lopresti injury"),
("D", "Barton's fracture"),
("E", "Colles' variant"),
],
"answer": "B",
"explanation": "Galeazzi = radial shaft fracture + DRUJ dislocation. Monteggia = proximal ulna fracture + radial head dislocation. A useful mnemonic: 'GRMU — Galeazzi Radius, Monteggia Ulna.'",
},
{
"n": 15,
"stem": "A 22-year-old cricketer is struck on the tip of his extended finger. He cannot actively extend the DIP joint; passive extension is possible. X-ray shows no fracture. What is the diagnosis?",
"options": [
("A", "Boutonniere deformity"),
("B", "Mallet finger"),
("C", "Trigger finger"),
("D", "Jersey finger"),
("E", "Swan-neck deformity"),
],
"answer": "B",
"explanation": "Mallet finger results from rupture of the extensor tendon at its insertion into the distal phalanx (or a bony avulsion), leaving the DIP in a flexion drop. Treatment is continuous splinting of the DIP in full extension for 6-8 weeks without interruption.",
},
],
},
{
"title": "Section 3 — Vascular & Applied",
"color": RGBColor(0x7B, 0x1F, 0x1F),
"questions": [
{
"n": 16,
"stem": "After a forearm laceration, a patient develops hand ischemia: pallor, pain, and pulselessness. Duplex US confirms radial artery occlusion; the ulnar artery is patent. The hand remains ischemic. Which pre-procedure test would have predicted this risk?",
"options": [
("A", "Tinel's test"),
("B", "Phalen's test"),
("C", "Allen's test"),
("D", "Adson's test"),
("E", "Finkelstein's test"),
],
"answer": "C",
"explanation": "Allen's test assesses the patency of the palmar arch. If flushing does not occur on ulnar release, the arch is incomplete and radial artery occlusion can cause hand ischemia. This is why Allen's test is performed before arterial line insertion.",
},
{
"n": 17,
"stem": "A 55-year-old heavy smoker presents with episodic cyanosis and pallor of fingertips triggered by cold exposure, resolving on warming. The sequence of color change is white → blue → red. What is the most likely diagnosis?",
"options": [
("A", "Thoracic outlet syndrome"),
("B", "Cubital tunnel syndrome"),
("C", "Raynaud's phenomenon"),
("D", "Buerger's disease"),
("E", "Subclavian steal syndrome"),
],
"answer": "C",
"explanation": "Raynaud's phenomenon is episodic digital arterial vasospasm triggered by cold or stress, causing the classic triphasic color change. Secondary Raynaud's is associated with connective tissue diseases, smoking, and vibratory tool use.",
},
{
"n": 18,
"stem": "A construction worker presents with years of aching, fingertip pallor, and numbness after using a jackhammer. Symptoms worsen in cold weather. Angiography shows segmental occlusions of digital arteries. What is this occupational condition?",
"options": [
("A", "Raynaud's disease (primary)"),
("B", "Vibration white finger (hand-arm vibration syndrome)"),
("C", "Thoracic outlet syndrome"),
("D", "Carpal tunnel syndrome"),
("E", "de Quervain's tenosynovitis"),
],
"answer": "B",
"explanation": "Vibration white finger (HAVS — hand-arm vibration syndrome) results from chronic vibrating tool use. It causes digital vasospasm, peripheral neuropathy, and musculoskeletal effects. It is a recognized reportable occupational disease.",
},
{
"n": 19,
"stem": "A 48-year-old woman has 3 months of pain over the radial styloid, worse with pinching. Forced ulnar deviation of the wrist with the thumb held inside the fist reproduces severe pain. What is the diagnosis?",
"options": [
("A", "Carpal tunnel syndrome"),
("B", "de Quervain's tenosynovitis"),
("C", "Scaphoid fracture"),
("D", "CMC joint osteoarthritis"),
("E", "Trigger thumb"),
],
"answer": "B",
"explanation": "de Quervain's tenosynovitis is stenosing tenosynovitis of the 1st extensor compartment (APL and EPB tendons). Finkelstein's test — ulnar deviation of the wrist with the thumb tucked into the fist — reproduces the pain and is the key diagnostic test.",
},
{
"n": 20,
"stem": "A 30-year-old violinist develops progressive weakness of finger abduction and adduction in the ring and little fingers. No pain or sensory loss. EMG shows decreased motor amplitude of the ulnar nerve with normal conduction velocity. Where is the most likely site of pathology?",
"options": [
("A", "C8-T1 nerve roots"),
("B", "Medial cord of brachial plexus"),
("C", "Ulnar nerve at Guyon's canal — deep motor branch"),
("D", "Cubital tunnel"),
("E", "Hypothenar muscle tear"),
],
"answer": "C",
"explanation": "Compression of the deep motor branch of the ulnar nerve at Guyon's canal presents as pure motor weakness of intrinsic hand muscles without sensory loss (the superficial sensory branch exits proximally). Cubital tunnel syndrome would also produce sensory symptoms in digits 4-5. Repetitive wrist use (musicians, cyclists) is a risk factor.",
},
],
},
]
# ═══════════════════════════════════════════════════════════════════
# RENDER QUESTIONS
# ═══════════════════════════════════════════════════════════════════
CORRECT_COLOR = RGBColor(0x1D, 0x6A, 0x3E) # green
OPTION_COLOR = RGBColor(0x22, 0x22, 0x22)
for sec in sections:
# Section heading
sh = doc.add_heading(sec["title"], level=1)
for run in sh.runs:
run.font.color.rgb = sec["color"]
sh.paragraph_format.space_before = Pt(14)
sh.paragraph_format.space_after = Pt(4)
for q in sec["questions"]:
# Question number + stem
qp = doc.add_paragraph()
qp.paragraph_format.space_before = Pt(10)
qp.paragraph_format.space_after = Pt(4)
num_run = qp.add_run(f"Q{q['n']}. ")
num_run.bold = True
num_run.font.size = Pt(11.5)
num_run.font.color.rgb = RGBColor(0x1F, 0x39, 0x7D)
stem_run = qp.add_run(q["stem"])
stem_run.font.size = Pt(11)
# Options
for letter, text in q["options"]:
op = doc.add_paragraph()
op.paragraph_format.left_indent = Inches(0.3)
op.paragraph_format.space_before = Pt(1)
op.paragraph_format.space_after = Pt(1)
is_correct = (letter == q["answer"])
opt_run = op.add_run(f" {letter}. {text}")
opt_run.font.size = Pt(11)
if is_correct:
opt_run.bold = True
opt_run.font.color.rgb = CORRECT_COLOR
tick = op.add_run(" ✓")
tick.bold = True
tick.font.color.rgb = CORRECT_COLOR
else:
opt_run.font.color.rgb = OPTION_COLOR
# Explanation
add_shaded_para(doc, q["explanation"])
add_hr(doc)
# ═══════════════════════════════════════════════════════════════════
# ANSWER KEY TABLE
# ═══════════════════════════════════════════════════════════════════
doc.add_paragraph()
ak = doc.add_heading("Answer Key", level=1)
for run in ak.runs:
run.font.color.rgb = RGBColor(0x1F, 0x39, 0x7D)
key_data = [
("Q", "Answer", "Topic"),
("1", "D", "Radial nerve — midshaft humeral fracture"),
("2", "C", "Radial nerve — axillary level"),
("3", "D", "Carpal tunnel syndrome"),
("4", "A", "Tinel's sign"),
("5", "C", "Cubital tunnel syndrome"),
("6", "C", "Ulnar claw hand — intrinsic muscle paralysis"),
("7", "B", "Median nerve at wrist"),
("8", "C", "Erb's palsy (C5, C6)"),
("9", "C", "Klumpke's palsy (C8, T1)"),
("10", "B", "Colles' fracture"),
("11", "C", "Scaphoid fracture — anatomical snuffbox tenderness"),
("12", "C", "Supracondylar fracture — brachial artery & AIN at risk"),
("13", "C", "AIN palsy after elbow dislocation"),
("14", "B", "Galeazzi fracture-dislocation"),
("15", "B", "Mallet finger"),
("16", "C", "Allen's test — incomplete palmar arch"),
("17", "C", "Raynaud's phenomenon"),
("18", "B", "Vibration white finger (HAVS)"),
("19", "B", "de Quervain's tenosynovitis — Finkelstein's test"),
("20", "C", "Ulnar nerve — Guyon's canal (deep motor branch)"),
]
table = doc.add_table(rows=len(key_data), cols=3)
table.style = "Table Grid"
col_widths = [Inches(0.5), Inches(0.7), Inches(4.5)]
for i, row_data in enumerate(key_data):
row = table.rows[i]
for j, cell_text in enumerate(row_data):
cell = row.cells[j]
cell.width = col_widths[j]
p = cell.paragraphs[0]
run = p.add_run(cell_text)
run.font.size = Pt(10)
if i == 0:
run.bold = True
run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
# Header shading
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"), "1F397D")
tcPr.append(shd)
elif i % 2 == 0:
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"), "EDF2FB")
tcPr.append(shd)
# ── Footer note ───────────────────────────────────────────────────
doc.add_paragraph()
fn = doc.add_paragraph()
fn.alignment = WD_ALIGN_PARAGRAPH.CENTER
fn_run = fn.add_run(
"Sources: S Das Manual of Clinical Surgery (13th ed.) | Schwartz's Principles of Surgery (11th ed.) | "
"Goldman-Cecil Medicine | Campbell's Operative Orthopaedics (15th ed., 2026) | Rosen's Emergency Medicine"
)
fn_run.font.size = Pt(8)
fn_run.font.color.rgb = RGBColor(0x77, 0x77, 0x77)
fn_run.italic = True
# ── Save ──────────────────────────────────────────────────────────
out_path = "/tmp/workspace/upper-limb-mcqs/Upper_Limb_Clinical_MCQs.docx"
doc.save(out_path)
print(f"Saved: {out_path}")
python3 /tmp/workspace/upper-limb-mcqs/generate_mcqs.py
Upper Limb Clinical MCQs
Word Document · DOCX