Nerve tests with explanation and pictures corresponding to various nerve injuries in upper and lower limbs

Reading File
This is a broad clinical-examination topic. It can be organized as:
  1. Upper limb nerves
    • Axillary: deltoid power and “regimental badge” sensation
    • Musculocutaneous: elbow flexion and lateral forearm sensation
    • Radial: wrist/finger extension, wrist drop, dorsal first web-space sensation
    • Median: thumb abduction/opposition, OK sign, thenar wasting, sensory testing
    • Ulnar: finger abduction/adduction, Froment sign, clawing, little-finger sensation
  2. Lower limb nerves
    • Femoral: knee extension and patellar reflex
    • Obturator: hip adduction
    • Sciatic: knee flexion and distal leg/foot movements
    • Common peroneal: ankle dorsiflexion/eversion, foot drop, first web-space sensation
    • Tibial: plantarflexion, toe flexion, sole sensation
    • Superior gluteal: Trendelenburg test
    • Inferior gluteal: hip extension and rising from a chair
  3. Root-level tests and reflexes
    • C5 to T1 and L1 to S2 myotomes
    • Biceps, supinator, triceps, knee, and ankle reflexes
    • Distinguishing peripheral-nerve injury from radiculopathy
  4. Clinical patterns and examination sequence
    • Inspection, tone, power, sensory testing, reflexes, special signs, and gait
    • Common injury sites and characteristic deformities
I can make this into an illustrated, exam-ready guide. Which section should I cover first?
  • Upper limb nerve tests
  • Lower limb nerve tests
  • Roots and reflexes
  • A concise all-in-one revision table

Generate a quick-reference PDF with nerve tests and diagrams

Reading File
Finding Sources
Finding Sources
Searching Images

clinical examination diagram upper limb peripheral nerve injuries median ulnar radial nerve motor tests

Searching Images

clinical examination diagram lower limb peripheral nerve injury common peroneal tibial femoral motor tests

Searching PubMed

peripheral nerve injury examination

Searching the Web

peripheral nerve injury clinical examination motor sensory testing upper limb lower limb

Browsing Directory

~/

Reading Web Page

https://teachmesurgery.com/examinations/neurological/periphe…

Finding Sources
Running Command

mkdir -p "/tmp/workspace/nerve-tests-pdf/src" "/tmp/workspace/nerve-tests-pdf/output" && python - <<'PY' from reportlab.lib.pagesizes import A4, landscape from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER from reportlab.lib.units import mm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, KeepTogether from reportlab.pdfbase.pdfmetrics import stringWidth from reportlab.graphics.shapes import Drawing, Line, Circle, Rect, String, Polygon from reportlab.lib.colors import HexColor from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.pdfmetrics import registerFontFamily from reportlab.pdfgen import canvas from pathlib import Path out=Path('/tmp/workspace/nerve-tests-pdf/output/Peripheral_Nerve_Tests_Quick_Reference.pdf') W,H=landscape(A4) NAVY=HexColor('#17365D'); BLUE=HexColor('#2E75B6'); TEAL=HexColor('#008C95'); RED=HexColor('#B85450'); GREEN=HexColor('#548235'); GOLD=HexColor('#BF9000'); PALE=HexColor('#EDF3F8'); LIGHT=HexColor('#F7F9FB'); DARK=HexColor('#222222'); GREY=HexColor('#666666') styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='Title2', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=22, leading=26, textColor=NAVY, alignment=TA_CENTER, spaceAfter=4)) styles.add(ParagraphStyle(name='Sub', parent=styles['Normal'], fontName='Helvetica', fontSize=8.5, leading=11, textColor=GREY, alignment=TA_CENTER, spaceAfter=7)) styles.add(ParagraphStyle(name='H', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=12, leading=14, textColor='white', backColor=NAVY, borderPadding=5, spaceBefore=4, spaceAfter=5)) styles.add(ParagraphStyle(name='Small', parent=styles['Normal'], fontName='Helvetica', fontSize=7.3, leading=9.1, textColor=DARK)) styles.add(ParagraphStyle(name='Tiny', parent=styles['Normal'], fontName='Helvetica', fontSize=6.3, leading=7.4, textColor=DARK)) styles.add(ParagraphStyle(name='Note', parent=styles['Normal'], fontName='Helvetica-Oblique', fontSize=7, leading=8.5, textColor=GREY)) def P(s, sty='Small'): return Paragraph(s, styles[sty]) def body_outline(): d=Drawing(230,210) # torso and limbs, simple posterior neutral body d.add(Circle(115,191,12,strokeColor=NAVY,fillColor=HexColor('#D9EAF7'))) d.add(Line(115,179,115,130,strokeColor=NAVY,strokeWidth=5)) d.add(Line(115,164,69,126,strokeColor=NAVY,strokeWidth=5)); d.add(Line(69,126,55,75,strokeColor=NAVY,strokeWidth=4)) d.add(Line(115,164,161,126,strokeColor=NAVY,strokeWidth=5)); d.add(Line(161,126,175,75,strokeColor=NAVY,strokeWidth=4)) d.add(Line(115,130,84,76,strokeColor=NAVY,strokeWidth=6)); d.add(Line(84,76,76,20,strokeColor=NAVY,strokeWidth=5)) d.add(Line(115,130,146,76,strokeColor=NAVY,strokeWidth=6)); d.add(Line(146,76,154,20,strokeColor=NAVY,strokeWidth=5)) return d def limb_diagram(upper=True): d=Drawing(246,198) if upper: # arm, front view d.add(Circle(122,178,14,strokeColor=NAVY,fillColor=HexColor('#D9EAF7'))) d.add(Line(122,164,122,144,strokeColor=NAVY,strokeWidth=7)); d.add(Line(122,149,76,118,strokeColor=NAVY,strokeWidth=10)); d.add(Line(76,118,52,66,strokeColor=NAVY,strokeWidth=8)) d.add(Line(52,66,48,44,strokeColor=NAVY,strokeWidth=4)); d.add(Line(52,66,60,43,strokeColor=NAVY,strokeWidth=4)); d.add(Line(52,66,68,48,strokeColor=NAVY,strokeWidth=4)) # color dot and routes d.add(Circle(76,134,5,fillColor=RED,strokeColor=None)); d.add(String(10,142,'Axillary: abduction',fontName='Helvetica',fontSize=7,fillColor=RED)) d.add(Line(84,119,65,82,strokeColor=BLUE,strokeWidth=3)); d.add(String(8,92,'Radial: extend wrist',fontName='Helvetica',fontSize=7,fillColor=BLUE)) d.add(Line(80,116,58,70,strokeColor=TEAL,strokeWidth=3)); d.add(String(8,80,'Median: thumb',fontName='Helvetica',fontSize=7,fillColor=TEAL)) d.add(Line(70,115,48,72,strokeColor=GOLD,strokeWidth=3)); d.add(String(8,68,'Ulnar: fingers',fontName='Helvetica',fontSize=7,fillColor=GOLD)) d.add(String(95,10,'Simplified motor map',fontName='Helvetica-Oblique',fontSize=7,fillColor=GREY)) else: d.add(Circle(122,179,14,strokeColor=NAVY,fillColor=HexColor('#D9EAF7'))); d.add(Line(122,165,122,130,strokeColor=NAVY,strokeWidth=8)) d.add(Line(122,132,90,83,strokeColor=NAVY,strokeWidth=12)); d.add(Line(90,83,89,28,strokeColor=NAVY,strokeWidth=9)); d.add(Line(89,28,66,18,strokeColor=NAVY,strokeWidth=7)) d.add(Line(122,132,154,83,strokeColor=NAVY,strokeWidth=12)); d.add(Line(154,83,155,28,strokeColor=NAVY,strokeWidth=9)); d.add(Line(155,28,178,18,strokeColor=NAVY,strokeWidth=7)) d.add(Line(119,133,91,89,strokeColor=RED,strokeWidth=3)); d.add(String(5,128,'Femoral: knee extension',fontName='Helvetica',fontSize=7,fillColor=RED)) d.add(Circle(155,84,5,fillColor=BLUE,strokeColor=None)); d.add(String(160,91,'Common peroneal',fontName='Helvetica',fontSize=7,fillColor=BLUE)); d.add(String(160,83,'dorsiflexion',fontName='Helvetica',fontSize=7,fillColor=BLUE)) d.add(Line(154,82,155,38,strokeColor=TEAL,strokeWidth=3)); d.add(String(160,56,'Tibial: plantarflexion',fontName='Helvetica',fontSize=7,fillColor=TEAL)) d.add(String(95,7,'Simplified motor map',fontName='Helvetica-Oblique',fontSize=7,fillColor=GREY)) return d def table(data, widths, font=7.0, header=True): t=Table(data, colWidths=widths, repeatRows=1 if header else 0, hAlign='LEFT') commands=[('VALIGN',(0,0),(-1,-1),'TOP'),('GRID',(0,0),(-1,-1),0.3,HexColor('#B7C9D8')),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3),('FONTNAME',(0,0),(-1,-1),'Helvetica'),('FONTSIZE',(0,0),(-1,-1),font),('LEADING',(0,0),(-1,-1),font+1.8)] if header: commands += [('BACKGROUND',(0,0),(-1,0),NAVY),('TEXTCOLOR',(0,0),(-1,0),colors.white),('FONTNAME',(0,0),(-1,0),'Helvetica-Bold')] for r in range(1 if header else 0, len(data)): if r%2==0: commands.append(('BACKGROUND',(0,r),(-1,r),LIGHT)) t.setStyle(TableStyle(commands)); return t class NumberedCanvas(canvas.Canvas): def __init__(self,*a,**kw): canvas.Canvas.__init__(self,*a,**kw); self.pages=[] def showPage(self): self.pages.append(dict(self.__dict__)); self._startPage() def save(self): n=len(self.pages) for state in self.pages: self.__dict__.update(state); self.setStrokeColor(HexColor('#AFC5D6')); self.line(15*mm,10*mm,W-15*mm,10*mm) self.setFont('Helvetica',7); self.setFillColor(GREY); self.drawString(15*mm,6*mm,'Peripheral Nerve Tests - quick reference') self.drawRightString(W-15*mm,6*mm,f'Page {self._pageNumber} of {n}') canvas.Canvas.showPage(self) canvas.Canvas.save(self) doc=SimpleDocTemplate(str(out),pagesize=landscape(A4),rightMargin=15*mm,leftMargin=15*mm,topMargin=12*mm,bottomMargin=16*mm) story=[] story += [P('Peripheral Nerve Tests: Quick Reference', 'Title2'), P('Upper and lower limb screening tests, sensory key points, and classical injury patterns. Compare sides; test against resistance; interpret in the full neurological examination.', 'Sub')] # Page 1 story += [P('1. Rapid examination sequence', 'H')] seq=[[P('<b>1. Inspect</b><br/>Wasting, scars, deformity, involuntary posture. Look for wrist drop, clawing or foot drop.', 'Small'),P('<b>2. Motor</b><br/>Position the joint correctly. Ask for a movement, then add resistance. Grade power 0-5.', 'Small'),P('<b>3. Sensory</b><br/>Eyes closed. Compare both sides using light touch or pinprick in an autonomous zone.', 'Small'),P('<b>4. Reflexes / gait</b><br/>Use tendon reflexes and functional tasks to support localisation.', 'Small')]] story.append(Table(seq,colWidths=[62*mm]*4,style=[('BACKGROUND',(0,0),(-1,-1),PALE),('BOX',(0,0),(-1,-1),0.5,BLUE),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)])); story.append(Spacer(1,5)) story += [P('Upper limb: test, key sensory spot, and common deficit', 'H')] upper=[ [P('<b>Nerve</b>'),P('<b>Motor test and instruction</b>'),P('<b>Autonomous sensory area</b>'),P('<b>Typical deficit / association</b>')], [P('<b>Axillary</b><br/>C5-6'),P('Deltoid: abduct shoulder from 15 to 90 degrees against resistance.'),P('“Regimental badge”: skin over lower lateral deltoid.'),P('Weak abduction; deltoid wasting. Consider shoulder dislocation or surgical-neck humeral fracture.')], [P('<b>Musculocutaneous</b><br/>C5-6'),P('Biceps: flex elbow with forearm supinated against resistance.'),P('Lateral forearm.'),P('Weak elbow flexion and supination.')], [P('<b>Radial</b><br/>C6-8'),P('Extend wrist and fingers against resistance. Ask for thumb extension (“thumbs up”).'),P('Dorsal first web space.'),P('<b>Wrist drop</b> in palsy. Humeral-shaft injury affects radial nerve; high lesions may weaken triceps.')], [P('<b>Median</b><br/>C8-T1'),P('Abductor pollicis brevis: palm up, lift thumb perpendicular to palm against resistance. AIN: make a round “OK” sign.'),P('Palmar tip of index finger.'),P('Thenar weakness/wasting, loss of opposition. AIN lesion gives a flattened pinch rather than a round OK.')], [P('<b>Ulnar</b><br/>C8-T1'),P('Interossei: abduct index/little finger against resistance. Adduct fingers while examiner tries to pull paper away: <b>Froment test</b>.'),P('Palmar tip of little finger.'),P('Interosseous wasting, weak finger ab/adduction, ulnar claw. Positive Froment: thumb IP flexes to compensate for weak adductor pollicis.')],] story.append(table(upper,[31*mm,75*mm,49*mm,88*mm])); story.append(Spacer(1,5)) story.append(Table([[limb_diagram(True),P('<b>High-yield hand positions</b><br/><br/><b>Radial:</b> “Hold your wrist back.” Failure = wrist drop.<br/><br/><b>Median:</b> “Lift your thumb straight up from the palm.” Also use OK sign for anterior interosseous nerve.<br/><br/><b>Ulnar:</b> “Spread your fingers, then squeeze them together.” Paper pull assesses adductor pollicis.<br/><br/><b>Tip:</b> sensory overlap is common. The fingertip test zones are more useful than broad hand maps for quick localisation.','Small')]],colWidths=[76*mm,168*mm],style=[('VALIGN',(0,0),(-1,-1),'MIDDLE'),('BACKGROUND',(0,0),(-1,-1),HexColor('#F3F8FB')),('BOX',(0,0),(-1,-1),0.4,HexColor('#B7C9D8')),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)])) story.append(PageBreak()) # p2 story += [P('2. Lower limb: test, key sensory spot, and common deficit', 'H')] lower=[[P('<b>Nerve</b>'),P('<b>Motor test and instruction</b>'),P('<b>Autonomous sensory area</b>'),P('<b>Typical deficit / association</b>')], [P('<b>Superior gluteal</b><br/>L4-S1'),P('<b>Trendelenburg test:</b> stand on one leg. Observe the unsupported side of pelvis.'),P('No reliable small autonomous cutaneous zone.'),P('Hip abductor weakness: pelvis drops on the <b>opposite</b> side. Causes include superior gluteal injury or gluteus medius weakness.')], [P('<b>Femoral</b><br/>L2-4'),P('Quadriceps: extend knee against resistance. Check patellar reflex if relevant.'),P('Medial lower leg via saphenous nerve.'),P('Weak knee extension, reduced patellar reflex. Consider pelvic/iliopsoas or femoral-triangle injury.')], [P('<b>Obturator</b><br/>L2-4'),P('Adduct hips: place fist or pillow between knees and ask patient to squeeze.'),P('Small medial thigh patch, variable.'),P('Weak hip adduction. Consider pelvic surgery/obturator injury.')], [P('<b>Sciatic</b><br/>L4-S3'),P('Flex knee against resistance. Then test tibial and common peroneal components separately.'),P('No single reliable distal autonomous zone because it divides.'),P('Weak hamstrings plus variable distal weakness. Posterior hip dislocation can endanger sciatic nerve.')], [P('<b>Common peroneal</b><br/>L4-S2'),P('Dorsiflex ankle and extend great toe against resistance. Also evert foot.'),P('First dorsal web space (deep peroneal).'),P('<b>Foot drop</b>, high-stepping gait. Commonly vulnerable at fibular neck. Inversion is relatively preserved in isolated common peroneal palsy.')], [P('<b>Tibial</b><br/>S1-2'),P('Plantarflex against resistance, or perform single-leg heel raises. Flex toes.'),P('Sole of foot.'),P('Weak push-off/heel raise, impaired toe flexion. Ankle reflex may be reduced in S1/tibial lesions.')],] story.append(table(lower,[32*mm,74*mm,48*mm,89*mm])); story.append(Spacer(1,5)) story.append(Table([[limb_diagram(False),P('<b>High-yield lower-limb signs</b><br/><br/><b>Trendelenburg:</b> patient stands on the affected limb. A drop of the contralateral pelvis indicates weakness of ipsilateral hip abductors.<br/><br/><b>Foot drop:</b> test ankle dorsiflexion and great-toe extension. Ask the patient to walk on heels. Isolated common peroneal palsy generally spares inversion because tibialis posterior is tibial-nerve supplied.<br/><br/><b>Tibial:</b> ask the patient to stand on tiptoes or repeat a single-leg heel raise.','Small')]],colWidths=[76*mm,168*mm],style=[('VALIGN',(0,0),(-1,-1),'MIDDLE'),('BACKGROUND',(0,0),(-1,-1),HexColor('#F3F8FB')),('BOX',(0,0),(-1,-1),0.4,HexColor('#B7C9D8')),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)])); story.append(PageBreak()) # p3 localisation story += [P('3. Root screening, reflexes, and localisation clues', 'H')] roots=[[P('<b>Root</b>'),P('<b>Useful movement</b>'),P('<b>Key reflex</b>'),P('<b>Clinical cue</b>')], [P('<b>C5</b>'),P('Shoulder abduction / elbow flexion'),P('Biceps, partly C5-6'),P('Compare with axillary or musculocutaneous distribution.')], [P('<b>C6</b>'),P('Wrist extension'),P('Brachioradialis, C5-6'),P('Radial-nerve pattern may mimic C6 radiculopathy.')], [P('<b>C7</b>'),P('Elbow extension / wrist flexion'),P('Triceps, C7-8'),P('Check triceps alongside radial motor tests.')], [P('<b>C8</b>'),P('Finger flexion / thumb flexion'),P('No reliable routine tendon reflex'),P('Compare with median or ulnar distribution.')], [P('<b>T1</b>'),P('Finger abduction/adduction'),P('No reliable routine tendon reflex'),P('Intrinsic-hand weakness can be T1 or ulnar lesion.')], [P('<b>L2-3</b>'),P('Hip flexion / adduction'),P('None'),P('Femoral and obturator functions overlap roots.')], [P('<b>L3-4</b>'),P('Knee extension'),P('Patellar, L3-4'),P('Femoral lesion can resemble L3-4 root pathology.')], [P('<b>L5</b>'),P('Great-toe extension / ankle dorsiflexion'),P('None'),P('Foot drop: test inversion to help distinguish L5 root from common peroneal nerve.')], [P('<b>S1</b>'),P('Plantarflexion / eversion'),P('Achilles, S1-2'),P('Walk on toes or single-leg heel raise.')],] story.append(table(roots,[25*mm,74*mm,47*mm,97*mm])); story.append(Spacer(1,7)) clues=[[P('<b>Feature</b>'),P('<b>Peripheral nerve lesion</b>'),P('<b>Root lesion (radiculopathy)</b>')], [P('Weakness'),P('Fits muscles of one named nerve.'),P('Spans muscles supplied by different peripheral nerves but sharing a root.')], [P('Sensation'),P('Named-nerve pattern; test autonomous zone.'),P('Dermatomal pattern, often less sharply demarcated clinically.')], [P('Reflex'),P('May change if the affected nerve carries the reflex arc.'),P('Can change at root-specific reflex level.')], [P('Pain / back or neck'),P('May follow local trauma or compression site.'),P('Radicular pain, neck/back symptoms may support root involvement.')]] story += [P('Peripheral nerve vs root: practical distinction', 'H'), table(clues,[44*mm,100*mm,100*mm])] story.append(Spacer(1,6)); story.append(P('<b>Safety:</b> Acute weakness after trauma, new rapidly progressive deficit, severe pain with swelling, or neurovascular symptoms needs urgent in-person assessment. These tests screen and localise; they do not replace a full examination, imaging, electrodiagnostic testing, or specialist evaluation.', 'Note')) story.append(PageBreak()) # p4 mini diagrams and references story += [P('4. Illustrated manoeuvre cards', 'H')] cards=[ [P('<b>Median: thumb abduction</b><br/>Palm faces up. Stabilise the hand. Ask the patient to lift the thumb perpendicular to the palm. Press downward on the thumb.<br/><br/><b>Abnormal:</b> weak abductor pollicis brevis, thenar wasting or loss of opposition.','Small'),P('<b>Median AIN: OK sign</b><br/>Ask for a tight circle using thumb and index finger. A normal pinch has rounded distal joints.<br/><br/><b>Abnormal:</b> pulp-to-pulp flattened pinch from weak flexor pollicis longus and index FDP.','Small'),P('<b>Ulnar: Froment test</b><br/>Patient pinches a strip of paper between thumb and index. Pull the paper away.<br/><br/><b>Positive:</b> flexion of thumb IP joint, recruiting flexor pollicis longus, suggests weak adductor pollicis.','Small')], [P('<b>Radial: wrist extension</b><br/>Forearm pronated. Ask patient to cock the wrist back and extend fingers against resistance.<br/><br/><b>Abnormal:</b> wrist and finger extension weakness, causing wrist drop. Test dorsal first web space sensation.','Small'),P('<b>Superior gluteal: Trendelenburg</b><br/>Stand on one leg with hands off pelvis. Watch the opposite side of pelvis.<br/><br/><b>Positive:</b> contralateral pelvic drop reflects weakness of hip abductors on the stance side.','Small'),P('<b>Common peroneal: heel walk</b><br/>Ask patient to walk on heels, keeping forefoot elevated. Test ankle dorsiflexion and great-toe extension against resistance.<br/><br/><b>Abnormal:</b> toe drag / high-stepping compensation.','Small')] ] ct=Table(cards,colWidths=[81*mm]*3, rowHeights=[52*mm,52*mm],style=[('BACKGROUND',(0,0),(-1,-1),HexColor('#F3F8FB')),('BOX',(0,0),(-1,-1),0.7,BLUE),('INNERGRID',(0,0),(-1,-1),0.5,HexColor('#B7C9D8')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]) story.append(ct); story.append(Spacer(1,7)) story += [P('Interpretation reminders', 'H'), P('• Always compare left and right, and isolate movement as far as possible. Pain, poor effort, joint restriction, and tendon injury can mimic a nerve deficit.<br/>• Use sensory changes as supporting evidence, not in isolation: overlap and individual variation are common.<br/>• A complete neurological examination includes tone, power, reflexes, coordination, gait and higher-level localisation where indicated.<br/>• “Peroneal” and “fibular” are synonymous in this context. The current preferred anatomical term is common fibular nerve.', 'Small'), Spacer(1,6), P('Sources used for this teaching aid', 'H'), P('Core descriptions were cross-checked against <i>TeachMeSurgery, Upper and Lower Limb Neurological Examination</i> (motor, reflex and gait examination) and the NCBI Bookshelf <i>StatPearls: Median Nerve</i> (OK sign and thumb-abduction tests). Textbook findings include <i>S Das: A Manual on Clinical Surgery</i>, wrist drop and foot drop; and <i>Schwartz’s Principles of Surgery</i>, radial palsy pattern. This PDF is educational and intentionally simplified.', 'Tiny')] doc.build(story,canvasmaker=NumberedCanvas) print(out, out.exists(), out.stat().st_size) PY

Reading File
Reading File
Running Command

python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/nerve-tests-pdf/output/Peripheral_Nerve_Tests_Quick_Reference.pdf' r=PdfReader(p) print('pages',len(r.pages)) for i,x in enumerate(r.pages,1): t=x.extract_text() or '' print(i, len(t), t[:160].replace('\n',' | ')) PY

Created a 4-page quick-reference PDF with upper- and lower-limb nerve tests, simplified diagrams, sensory test points, injury patterns, reflex/root screening, and manoeuvre cards.

Peripheral Nerve Tests Quick Reference

PDF Document · PDF

This is a shared conversation. Sign in to Orris to start your own chat.