Can you generate a great ppt presentation
SLIDE 1 — TITLE PAIN DOWN THE LEG: IS IT THE SPINE OR THE PIRIFORMIS? Clinical Case Presentation Add picture: 📌 Lumbar spine + lumbosacral nerve roots + sciatic nerve ⸻ SLIDE 2 — CLINICAL SCENARIO 35-Year-Old Male Office Worker * Severe right buttock pain * Radiating to posterior thigh and leg * Electric shock-like pain * Duration: 3 weeks * Worse with prolonged sitting * Increased with coughing and sneezing * Sits 8–10 hours/day * Occasionally lifts heavy objects Neurological Examination * ↓ Sensation: lateral leg + dorsum of foot * ↓ Dorsiflexion * ↓ Great-toe extension * Knee & ankle reflexes: normal Add picture: 📌 Person sitting at desk / lumbar spine ⸻ SLIDE 3 — CLINICAL CLUES WHAT DO THESE FINDINGS TELL US? Pain Buttock → posterior thigh → leg Character Electric shock-like → neuropathic pain Provocation Coughing / sneezing → radicular component Neurological deficit Sensory + motor involvement Key Question ROOT LESION OR SCIATIC NERVE COMPRESSION? Add picture: 📌 Sciatic nerve pathway + L5 dermatome ⸻ SLIDE 4 — LOCALIZATION WHERE IS THE LESION? SENSORY Lateral leg Dorsum of foot → L5 MOTOR Dorsiflexion ↓ Great-toe extension ↓ → L5 REFLEXES Knee → Normal Ankle → Normal LOCALIZATION RIGHT L5 NERVE ROOT Add picture: 📌 L5 dermatome map ARTICLE CORRELATION Bateman et al., Muscle & Nerve — Musculoskeletal Mimics of Lumbosacral Radiculopathy This is your first and only reference on this part. ⸻ SLIDE 5 — WHY L5? L5 ROOT Sensory Dorsum of foot + great toe Motor Dorsiflexion Great-toe extension Reflex No reliable routine deep tendon reflex KEY LOCALIZING SIGN Great-Toe Extension Weakness → L5 Add picture: 📌 Extensor hallucis longus / great-toe extension ⸻ SLIDE 6 — ANATOMICAL CAUSE L4–L5 DISC HERNIATION Posterolateral / paracentral disc herniation ↓ Compression of the traversing L5 nerve root ↓ RIGHT L5 RADICULOPATHY L4–L5 Disc → L5 Root Add picture: ⭐ 📌 L4–L5 disc herniation compressing the L5 nerve root ARTICLE CORRELATION Lumbar Disc Herniation — Review article This is your second reference point. ⸻ SLIDE 7 — WHY COUGHING & SNEEZING? COUGH / SNEEZE Coughing / sneezing ↓ Increased spinal/intrathecal pressure ↓ Aggravation of an irritated nerve root ↓ Increased Radicular Pain Supports a Spinal Nerve-Root Origin Add picture: 📌 Simple lumbar disc + compressed nerve-root diagram ⸻ SLIDE 8 — STRAIGHT LEG RAISING TEST STRAIGHT LEG RAISE (SLR) Patient: Supine ↓ Knee: Extended ↓ Hip: Gradually flexed ↓ Lumbosacral neural structures placed under tension ↓ Pain reproduced at 40° → POSITIVE SLR Add picture: ⭐ 📌 Straight leg raise test ⸻ SLIDE 9 — ANATOMICAL BASIS OF SLR WHY DOES SLR CAUSE PAIN? Hip flexion + knee extension ↓ Increased neural tension ↓ Lumbosacral roots + sciatic nerve are tensioned ↓ Irritated/compressed nerve root becomes painful ↓ RADICULAR PAIN 40° → Within the clinically significant range Add picture: 📌 SLR diagram with 30°–70° marked ⸻ SLIDE 10 — SPINE vs PIRIFORMIS DIFFERENTIAL DIAGNOSIS L5 Radiculopathy Piriformis Syndrome Dermatomal sensory loss Less specific sensory findings Myotomal weakness Usually no clear root-pattern weakness Cough/sneeze aggravation Less typical Positive SLR may occur Sciatic pain may occur L5 neurological signs Usually absent THIS CASE FAVORS SPINAL RADICULOPATHY Add picture: ⭐ 📌 Side-by-side L4–L5 disc compression vs piriformis–sciatic nerve anatomy ⸻ SLIDE 11 — COMPLETE ANATOMICAL CHAIN PUTTING IT ALL TOGETHER Prolonged sitting / heavy lifting ↓ L4–L5 disc pathology ↓ Posterolateral disc herniation ↓ L5 nerve-root compression ↓ L5 RADICULOPATHY ↓ Pain + sensory loss + motor weakness Add picture: ⭐ 📌 One clean diagram showing L4–L5 disc → L5 root → sciatic pathway ⸻ SLIDE 12 — FINAL DIAGNOSIS MOST LIKELY DIAGNOSIS RIGHT L5 RADICULOPATHY Most likely caused by: L4–L5 POSTEROLATERAL DISC HERNIATION Supporting Findings ✓ L5 sensory distribution ✓ Great-toe extension weakness ✓ Dorsiflexion weakness ✓ Positive SLR at 40° ✓ Pain aggravated by coughing/sneezing SPINE > PIRIFORMIS Add picture: 📌 Final L4–L5 → L5 compression diagram ⸻ Final References Keep this as a small final slide or bottom section, rather than putting references everywhere: 1. Bateman EA, Fortin J, Guo S. Musculoskeletal mimics of lumbosacral radiculopathy. Muscle & Nerve. 2024. 2. Lumbar Disc Herniation — Review. Open-access review of clinical presentation, neurological findings and anatomical levels.
lumbar spine nerve roots sciatic nerve anatomy diagram
L5 dermatome map lower limb
L4-L5 lumbar disc herniation compressing nerve root MRI diagram
straight leg raise test clinical examination

Two-panel clinical photograph demonstrating the self-administered Straight Leg Raise (SLR) test and the Bragard test, commonly used to assess for lumbar radiculopathy or disc pathology. Panel A shows a patient in the supine position with the right knee flexed and the left leg extended and elevated, simulating a modified straight leg raise. The patient’s hands are positioned on the hip and thigh for stabilization. Panel B illustrates the Bragard test modification, where the patient uses a teal-colored strap or cloth looped around the forefoot of the elevated leg to perform passive ankle dorsiflexion while maintaining the leg in an elevated position. This maneuver increases dural tension on the sciatic nerve and its roots. The images are likely from a telemedicine or home-based rehabilitation context, illustrating how orthopedic physical examination signs can be elicited by the patient. These tests are clinically relevant for diagnosing sciatica or lumbar nerve root irritation, where a positive result is defined by the reproduction of radicular pain.

This clinical photograph set demonstrates two physical examination methods for assessing lower limb range of motion (ROM) and lumbopelvic flexibility. Panels A and B illustrate the 'Jurdan test,' a composite measurement combining aspects of the active knee extension test and the modified Thomas test. The subject is supine on an examination plinth with the testing leg elevated and the knee extended, while the contralateral leg is positioned at the edge of the table to assess hip extension. Panel B displays the calculation of a 'composite angle' (83 degrees) derived from the active knee extension angle (65 degrees) and the contralateral passive hip flexion angle (-18 degrees). Panels C and D demonstrate the Active Straight Leg Raise (ASLR) test, where the subject is supine with one leg actively flexed at the hip while keeping the knee straight. Panel D shows an ASLR angle of 87 degrees. These tests are utilized in sports medicine and physical therapy to evaluate hamstring extensibility, iliopsoas flexibility, and limb asymmetry, particularly in the context of hamstring strain injury risk assessment and sprinting kinematics.

A clinical photograph in grayscale demonstrating the Active Straight Leg Raise (ASLR) test, an orthopedic and physical examination maneuver used to assess pelvic girdle pain (PGP) and lumbo-pelvic stability. The subject is positioned supine on an examination table with a towel draped over the pelvic region for privacy. The image shows the patient actively elevating one lower extremity while maintaining full knee extension and ankle dorsiflexion, while the contralateral leg remains resting in a neutral position on the table. This test evaluates the ability of the pelvic floor and trunk muscles to effectively transfer loads through the pelvis. It is clinically significant in obstetrics and physical therapy for diagnosing lumbopelvic pain and predicting functional disability in pregnant and postpartum populations.

A composite of clinical photographs demonstrating five provocative physical examination maneuvers used to diagnose sacroiliac joint (SIJ) pain and dysfunction. (A) Patrick’s FABER test: patient supine with hip flexed, abducted, and externally rotated; examiner applies downward pressure on the knee and opposite iliac crest. (B) Posterior shear (Thigh Thrust) test: patient supine with hip flexed to 90 degrees; examiner applies vertical downward pressure through the femur. (C) Sacral compression test: patient side-lying; examiner applies downward force on the superior iliac crest. (D) Active Straight Leg Raise (SLR) test shown in two phases: patient performing an active leg lift followed by the examiner applying stabilizing sacral pressure. (E) Sacral thrust test: patient prone; examiner applies a vigorous downward pressure over the sacrum. Red arrows indicate the direction of force applied by the examiner. These tests are clinical tools in orthopedics and physical therapy to assess SIJ provocation and stability.
piriformis syndrome sciatic nerve anatomy

This composite image consists of an intraoperative clinical photograph and a corresponding anatomical line drawing illustrating a variation of the sciatic nerve relevant to piriformis syndrome. The field shows a deep dissection of the right gluteal region. A bifid sciatic nerve is clearly demonstrated, where the nerve is split into two distinct trunks—the common peroneal and tibial components—before exiting the pelvis. These neural structures are seen passing deep to the piriformis muscle. For surgical exposure and decompression, the piriformis muscle is shown as 'cut' (sectioned). The anatomical diagram clarifies the relationship, labeling the bifid sciatic nerve trunks and the hypertrophied, sectioned piriformis muscle. This visual provides clinical evidence of anatomical impingement, where nerve variation combined with muscle hypertrophy can lead to compressive neuropathy. The image is intended for advanced medical education in orthopedics, neurosurgery, and clinical anatomy, focusing on peripheral nerve entrapment syndromes and surgical decompression techniques.

This composite of three intraoperative clinical photographs demonstrates the surgical management of piriformis syndrome via decompression of the sciatic nerve. Panel A shows preoperative planning with the patient in a prone position; a linear incision marking is visible on the left gluteal region, oriented longitudinally relative to the superior-inferior axis. Panel B captures the initial surgical exposure using metallic retractors to separate subcutaneous tissue and gluteal fibers, revealing the piriformis muscle (labeled 'P'). Panel C provides a detailed anatomical view of the deep gluteal space following partial resection of the piriformis. Key structures identified include the piriformis muscle (P), superior gemellus (SG), obturator internus (OI), and quadratus femoris (QF). The sciatic nerve (labeled 'S') is shown as a thick, whitish cord-like structure positioned deep to the piriformis and superficial to the other short external rotators. An arrow indicates the 'resection area' of the piriformis muscle where it previously compressed the nerve. This figure serves as an educational resource for identifying deep gluteal anatomy and understanding the decompression technique for sciatic nerve entrapment.

This composite educational image illustrates an anatomical variation of the sciatic nerve (SN) in relation to the piriformis muscle (PM). Panel A is a clinical photograph of a cadaveric dissection of the gluteal region, and Panel B is a 3D anatomical diagram representing the same variation. The visual content demonstrates a high division of the sciatic nerve into its two primary branches: the tibial nerve (TN) and the common peroneal nerve (CPN). In this specific variation, the CPN passes superior to the piriformis muscle, while the TN passes deep to or through the muscle belly. Labels indicate the proximal origin (*) and distal insertion (#) of the piriformis muscle. This anatomical comparison highlights variations relevant to clinical scenarios such as piriformis syndrome, nerve entrapment, and surgical planning for the posterior approach to the hip. The material is intended for advanced anatomy students and surgical residents to understand peripheral nerve morphology and potential sites of neurovascular compression.

This clinical photograph displays a detailed cadaveric dissection of the right human gluteal region and posterior thigh, focusing on an anatomical variation of the sciatic nerve. The image illustrates a 'high bifurcation' of the sciatic nerve (SCN), where it divides into its terminal branches approximately 1 cm inferior to the lower border of the piriformis muscle (PM) rather than in the popliteal fossa. The two resulting divisions—the tibial nerve (TN) and the common peroneal nerve (CPN)—are clearly identified. Surrounding musculoskeletal landmarks include the quadratus femoris (QF) located inferiorly and the inferior gemellus (IG) muscle situated deep to the bifurcation point. Labels indicate the 'Caudal' and 'Proximal' orientations. This specimen serves as an educational resource for studying peripheral nerve anatomy and surgical variations in the gluteal region, which is clinically significant for procedures like piriformis syndrome decompression or sciatic nerve blocks.
extensor hallucis longus great toe extension muscle testing
Medical illustration of the lumbar spine showing the lumbosacral nerve roots exiting the vertebral column and converging to form the sciatic nerve, running down through the buttock and posterior thigh
An office worker sitting at a desk for many hours in poor posture, with a small inset anatomical diagram of the lumbar spine and compressed nerve root
Medical illustration of the L5 dermatome map on a human body outline, front and back view, highlighting the sensory distribution over the lateral leg and dorsum of the foot
Anatomical illustration of the leg muscles responsible for foot dorsiflexion and great toe extension, showing the tibialis anterior and extensor hallucis longus muscles
Medical illustration of L4-L5 posterolateral intervertebral disc herniation compressing the traversing L5 nerve root, lateral and cross-sectional view of the lumbar spine
Illustration of a clinician performing the straight leg raise test on a supine patient, one leg raised with the knee kept fully extended, angle markings shown between the leg and the table
Side by side medical comparison illustration: on the left, an L4-L5 disc herniation compressing the L5 spinal nerve root; on the right, the piriformis muscle in the buttock compressing the sciatic nerve
Clean medical flow diagram illustration showing the anatomical chain from an L4-L5 disc herniation, to compression of the L5 nerve root, to the sciatic nerve pathway down the leg
mkdir -p /tmp/workspace/spine-ppt/assets /tmp/workspace/spine-ppt/output && ls -la /tmp/workspace/
cd /tmp/workspace/spine-ppt && python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/image-gen/d2905f0d649941a8a890f1067e9e3315.png" \ "https://cdn.orris.care/image-gen/64d586a0a4fd41d88630a1fac72d441a.png" \ "https://cdn.orris.care/image-gen/594adaab7bc7405183d42029aeffa520.png" \ "https://cdn.orris.care/image-gen/da5223854693427ca067a8d355aad4c3.png" \ "https://cdn.orris.care/image-gen/dda87847585c461ba9939782c8e75b2a.png" \ "https://cdn.orris.care/image-gen/267e4914ee47402da4eafb2353ecc3c7.png" \ "https://cdn.orris.care/image-gen/82a6b24483c64380bc8c2079c15bfc7b.png" \ "https://cdn.orris.care/image-gen/0e4ed2457a8b4b10a734283d35322b99.png" \ > fetch_result.json python3 -c " import json data = json.load(open('fetch_result.json')) import base64 names = ['hero_spine','office_worker','l5_dermatome','ehl_toe','disc_herniation','slr_test','spine_vs_piriformis','full_chain'] for name, item in zip(names, data): if item['base64']: b64 = item['base64'].split(',',1)[1] if ',' in item['base64'] else item['base64'] raw = base64.b64decode(b64) with open(f'assets/{name}.png','wb') as f: f.write(raw) print(name, 'OK', len(raw)) else: print(name, 'ERROR', item.get('error')) " ls -la assets/
~/spine-ppt/build_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR
from pptx.oxml.ns import qn
import copy
ASSETS = "/tmp/workspace/spine-ppt/assets/"
# ---------- Palette ----------
NAVY = RGBColor(0x0B, 0x2545, 0x4E) # dark header navy
TEAL = RGBColor(0x13, 0x8A, 0x8C) # accent teal
LIGHT_TEAL = RGBColor(0xE6, 0xF4, 0xF3)
RED = RGBColor(0xC0, 0x39, 0x2B)
DARK = RGBColor(0x22, 0x2B, 0x33)
GREY = RGBColor(0x5A, 0x6B, 0x73)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GOLD = RGBColor(0xD8, 0xA4, 0x2A)
BG = RGBColor(0xF7, 0xF9, 0xFA)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
SW, SH = prs.slide_width, prs.slide_height
blank = prs.slide_layouts[6]
def add_slide():
s = prs.slides.add_slide(blank)
bg = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, 0, SW, SH)
bg.fill.solid(); bg.fill.fore_color.rgb = BG
bg.line.fill.background(); bg.shadow.inherit = False
bg._element.addprevious(bg._element) # no-op keep order
return s
def no_shadow(shp):
shp.shadow.inherit = False
return shp
def add_rect(s, x, y, w, h, color, line_color=None, line_w=None):
shp = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
shp.fill.solid(); shp.fill.fore_color.rgb = color
if line_color:
shp.line.color.rgb = line_color
shp.line.width = line_w or Pt(1)
else:
shp.line.fill.background()
no_shadow(shp)
return shp
def add_round_rect(s, x, y, w, h, color, line_color=None, radius=0.08):
shp = s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, x, y, w, h)
try:
shp.adjustments[0] = radius
except Exception:
pass
shp.fill.solid(); shp.fill.fore_color.rgb = color
if line_color:
shp.line.color.rgb = line_color
shp.line.width = Pt(1.25)
else:
shp.line.fill.background()
no_shadow(shp)
return shp
def add_text(s, x, y, w, h, text, size=18, color=DARK, bold=False, italic=False,
align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.TOP, font="Calibri", line_spacing=None,
wrap=True):
tb = s.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = anchor
tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0
lines = text.split("\n")
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = line
p.alignment = align
if line_spacing:
p.line_spacing = line_spacing
for r in p.runs:
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
r.font.name = font
return tb
def add_bullets(s, x, y, w, h, items, size=15, color=DARK, bold_first=False,
font="Calibri", space_after=6, bullet_color=None, level_indent=0.28):
tb = s.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0
bc = bullet_color or TEAL
for i, item in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(space_after)
r = p.add_run()
r.text = "\u25B8 " + item
r.font.size = Pt(size)
r.font.color.rgb = color
r.font.name = font
return tb
def add_pic(s, path, x, y, w=None, h=None):
return s.shapes.add_picture(path, x, y, width=w, height=h)
def add_connector(s, x1, y1, x2, y2, color=TEAL, weight=Pt(2.25), dash=None, arrow=True):
ln = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, x1, y1, x2, y2)
ln.line.color.rgb = color
ln.line.width = weight
if arrow:
line_el = ln.line._get_or_add_ln()
tail = line_el.makeelement(qn('a:tailEnd'), {'type': 'triangle', 'w': 'med', 'len': 'med'})
line_el.append(tail)
return ln
def header(s, kicker, title, num, total=12):
# top navy band
add_rect(s, 0, 0, SW, Inches(1.15), NAVY)
add_rect(s, 0, Inches(1.15), SW, Pt(3), TEAL)
add_text(s, Inches(0.55), Inches(0.12), Inches(10.5), Inches(0.35), kicker,
size=13, color=GOLD, bold=True, font="Calibri")
add_text(s, Inches(0.55), Inches(0.42), Inches(11.5), Inches(0.65), title,
size=26, color=WHITE, bold=True, font="Calibri")
add_text(s, Inches(12.15), Inches(0.38), Inches(0.9), Inches(0.5), f"{num:02d}/{total}",
size=13, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
def footer(s, note=""):
add_text(s, Inches(0.55), Inches(7.16), Inches(9), Inches(0.3),
note, size=10, color=GREY, italic=True)
add_text(s, Inches(10.5), Inches(7.16), Inches(2.3), Inches(0.3),
"Spine or Piriformis? \u2014 Clinical Case", size=10, color=GREY, align=PP_ALIGN.RIGHT)
def picture_frame(s, path, x, y, w, h, caption=None, star=False):
frame = add_round_rect(s, x - Inches(0.06), y - Inches(0.06), w + Inches(0.12), h + Inches(0.12),
WHITE, line_color=TEAL, radius=0.04)
pic = add_pic(s, path, x, y, w=w, h=h)
if star:
star_shp = s.shapes.add_shape(MSO_SHAPE.STAR_5_POINTS, x + w - Inches(0.42), y - Inches(0.22), Inches(0.5), Inches(0.5))
star_shp.fill.solid(); star_shp.fill.fore_color.rgb = GOLD
star_shp.line.fill.background(); no_shadow(star_shp)
if caption:
add_text(s, x, y + h + Inches(0.08), w, Inches(0.35), caption, size=11, italic=True,
color=GREY, align=PP_ALIGN.CENTER)
return pic
def flow_box(s, x, y, w, h, text, fill=TEAL, txt_color=WHITE, size=14, bold=True):
shp = add_round_rect(s, x, y, w, h, fill, radius=0.12)
tf = shp.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
tf.margin_left = Pt(6); tf.margin_right = Pt(6)
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
p.text = text
for r in p.runs:
r.font.size = Pt(size); r.font.bold = bold; r.font.color.rgb = txt_color; r.font.name = "Calibri"
return shp
def down_arrow(s, x_center, y, size=Inches(0.28), color=TEAL):
shp = s.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, x_center - size/2, y, size, size)
shp.fill.solid(); shp.fill.fore_color.rgb = color
shp.line.fill.background(); no_shadow(shp)
return shp
# =========================================================
# SLIDE 1 — TITLE
# =========================================================
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(5.35), SW, Pt(3), GOLD)
add_text(s, Inches(0.9), Inches(1.0), Inches(7.3), Inches(0.4), "CLINICAL CASE PRESENTATION",
size=16, color=GOLD, bold=True)
add_text(s, Inches(0.9), Inches(1.55), Inches(7.6), Inches(1.9), "PAIN DOWN THE LEG:",
size=40, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(2.35), Inches(7.6), Inches(1.6),
"IS IT THE SPINE OR\nTHE PIRIFORMIS?", size=34, color=TEAL, bold=True, line_spacing=1.05)
add_text(s, Inches(0.9), Inches(4.05), Inches(7.2), Inches(0.5),
"A neuro-anatomical approach to lumbosacral radiculopathy vs. piriformis syndrome",
size=15, color=RGBColor(0xC8, 0xD6, 0xDE), italic=True)
add_round_rect(s, Inches(0.9), Inches(4.85), Inches(3.6), Inches(0.55), TEAL, radius=0.5)
add_text(s, Inches(0.9), Inches(4.85), Inches(3.6), Inches(0.55), "35 M \u2022 Office Worker \u2022 Sciatica",
size=13, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "hero_spine.png", Inches(8.85), Inches(1.35), Inches(3.9), Inches(4.55),
caption="Lumbar spine, lumbosacral nerve roots & sciatic nerve")
add_text(s, Inches(0.9), Inches(6.75), Inches(10), Inches(0.4),
"Localizing a nerve root lesion through history, examination and anatomy", size=13,
color=RGBColor(0x9F, 0xB4, 0xBE), italic=True)
# =========================================================
# SLIDE 2 — CLINICAL SCENARIO
# =========================================================
s = add_slide()
header(s, "PRESENTATION", "35-Year-Old Male Office Worker", 2)
add_round_rect(s, Inches(0.55), Inches(1.45), Inches(5.75), Inches(0.5), NAVY, radius=0.15)
add_text(s, Inches(0.55), Inches(1.45), Inches(5.75), Inches(0.5), "HISTORY OF PRESENTING ILLNESS",
size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.55), Inches(2.15), Inches(5.75), Inches(3.0), [
"Severe right buttock pain",
"Radiating to posterior thigh and leg",
"Electric shock-like pain",
"Duration: 3 weeks",
"Worse with prolonged sitting",
"Increased with coughing and sneezing",
"Sits 8\u201310 hours/day",
"Occasionally lifts heavy objects",
], size=15.5)
add_round_rect(s, Inches(6.55), Inches(1.45), Inches(5.75), Inches(0.5), NAVY, radius=0.15)
add_text(s, Inches(6.55), Inches(1.45), Inches(5.75), Inches(0.5), "NEUROLOGICAL EXAMINATION",
size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(6.55), Inches(2.15), Inches(5.75), Inches(2.2), [
"\u2193 Sensation: lateral leg + dorsum of foot",
"\u2193 Dorsiflexion",
"\u2193 Great-toe extension",
"Knee & ankle reflexes: normal",
], size=15.5, bullet_color=RED)
picture_frame(s, ASSETS + "office_worker.png", Inches(6.95), Inches(4.35), Inches(4.9), Inches(2.55),
caption="Prolonged sitting \u2014 mechanical load on the lumbar spine")
footer(s, "Case vignette compiled for educational discussion.")
# =========================================================
# SLIDE 3 — CLINICAL CLUES
# =========================================================
s = add_slide()
header(s, "ANALYSIS", "What Do These Findings Tell Us?", 3)
rows = [
("PAIN", "Buttock \u2192 posterior thigh \u2192 leg"),
("CHARACTER", "Electric shock-like \u2192 neuropathic pain"),
("PROVOCATION", "Coughing / sneezing \u2192 radicular component"),
("NEUROLOGICAL DEFICIT", "Sensory + motor involvement"),
]
y = Inches(1.5)
rh = Inches(1.0)
for i, (label, desc) in enumerate(rows):
add_round_rect(s, Inches(0.55), y, Inches(3.0), rh - Inches(0.15), TEAL, radius=0.18)
add_text(s, Inches(0.55), y, Inches(3.0), rh - Inches(0.15), label, size=15, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, Inches(3.75), y, Inches(4.9), rh - Inches(0.15), WHITE, line_color=TEAL, radius=0.18)
add_text(s, Inches(3.95), y, Inches(4.55), rh - Inches(0.15), desc, size=14.5, color=DARK,
anchor=MSO_ANCHOR.MIDDLE)
y += rh
add_round_rect(s, Inches(0.55), y + Inches(0.05), Inches(8.1), Inches(0.75), NAVY, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.55), y + Inches(0.05), Inches(8.1), Inches(0.75))
tf = tb.text_frame; tf.word_wrap = True; tf.vertical_anchor = MSO_ANCHOR.MIDDLE
tf.margin_left = Pt(10)
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "KEY QUESTION: "; r1.font.bold = True; r1.font.size = Pt(15); r1.font.color.rgb = GOLD
r2 = p.add_run(); r2.text = "ROOT LESION OR SCIATIC NERVE COMPRESSION?"
r2.font.bold = True; r2.font.size = Pt(16); r2.font.color.rgb = WHITE
picture_frame(s, ASSETS + "hero_spine.png", Inches(9.0), Inches(1.5), Inches(3.75), Inches(4.85),
caption="Sciatic nerve pathway & L5 dermatome")
footer(s)
# =========================================================
# SLIDE 4 — LOCALIZATION
# =========================================================
s = add_slide()
header(s, "LOCALIZATION", "Where Is the Lesion?", 4)
cols = [
("SENSORY", ["Lateral leg", "Dorsum of foot"], "\u2192 L5"),
("MOTOR", ["Dorsiflexion \u2193", "Great-toe extension \u2193"], "\u2192 L5"),
("REFLEXES", ["Knee \u2192 Normal", "Ankle \u2192 Normal"], ""),
]
x = Inches(0.55)
cw = Inches(2.55)
gap = Inches(0.2)
for title, items, tail in cols:
add_round_rect(s, x, Inches(1.5), cw, Inches(0.55), NAVY, radius=0.15)
add_text(s, x, Inches(1.5), cw, Inches(0.55), title, size=15, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, x, Inches(2.2), cw, Inches(1.6), WHITE, line_color=TEAL, radius=0.1)
tb = s.shapes.add_textbox(x + Inches(0.15), Inches(2.35), cw - Inches(0.3), Inches(1.3))
tf = tb.text_frame; tf.word_wrap = True
for i, it in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = it; p.alignment = PP_ALIGN.CENTER
for r in p.runs:
r.font.size = Pt(14.5); r.font.color.rgb = DARK
if tail:
add_text(s, x, Inches(3.9), cw, Inches(0.4), tail, size=17, color=RED, bold=True, align=PP_ALIGN.CENTER)
x += cw + gap
add_round_rect(s, Inches(0.55), Inches(4.55), Inches(7.75), Inches(1.0), GOLD, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.55), Inches(4.55), Inches(7.75), Inches(1.0))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "LOCALIZATION: "; r1.font.bold = True; r1.font.size = Pt(16); r1.font.color.rgb = NAVY
r2 = p.add_run(); r2.text = "RIGHT L5 NERVE ROOT"; r2.font.bold = True; r2.font.size = Pt(22); r2.font.color.rgb = NAVY
picture_frame(s, ASSETS + "l5_dermatome.png", Inches(8.75), Inches(1.5), Inches(4.0), Inches(3.9),
caption="L5 dermatome map")
add_round_rect(s, Inches(0.55), Inches(5.75), Inches(11.9), Inches(1.15), LIGHT_TEAL, line_color=TEAL, radius=0.1)
add_text(s, Inches(0.75), Inches(5.85), Inches(3.0), Inches(0.35), "ARTICLE CORRELATION", size=12, bold=True, color=TEAL)
add_text(s, Inches(0.75), Inches(6.18), Inches(11.4), Inches(0.65),
"Bateman EA, et al. Musculoskeletal Mimics of Lumbosacral Radiculopathy \u2014 Muscle & Nerve",
size=13.5, color=DARK, italic=True)
footer(s)
# =========================================================
# SLIDE 5 — WHY L5?
# =========================================================
s = add_slide()
header(s, "ROOT SIGNATURE", "Why L5?", 5)
add_round_rect(s, Inches(0.55), Inches(1.5), Inches(6.4), Inches(0.6), TEAL, radius=0.15)
add_text(s, Inches(0.55), Inches(1.5), Inches(6.4), Inches(0.6), "L5 ROOT", size=18, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
specs = [
("Sensory", "Dorsum of foot + great toe"),
("Motor", "Dorsiflexion / Great-toe extension"),
("Reflex", "No reliable routine deep tendon reflex"),
]
y = Inches(2.3)
for label, val in specs:
add_round_rect(s, Inches(0.55), y, Inches(2.0), Inches(0.95), NAVY, radius=0.15)
add_text(s, Inches(0.55), y, Inches(2.0), Inches(0.95), label, size=14, color=GOLD, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, Inches(2.65), y, Inches(4.3), Inches(0.95), WHITE, line_color=TEAL, radius=0.15)
add_text(s, Inches(2.85), y, Inches(3.95), Inches(0.95), val, size=14, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
y += Inches(1.1)
add_round_rect(s, Inches(0.55), Inches(5.65), Inches(6.4), Inches(1.15), RED, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.75), Inches(5.65), Inches(6.0), Inches(1.15))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.text = "KEY LOCALIZING SIGN"; p.alignment = PP_ALIGN.CENTER
for r in p.runs: r.font.size = Pt(13); r.font.bold = True; r.font.color.rgb = RGBColor(0xFF,0xDD,0xDD)
p2 = tf.add_paragraph(); p2.text = "Great-Toe Extension Weakness \u2192 L5"; p2.alignment = PP_ALIGN.CENTER
for r in p2.runs: r.font.size = Pt(19); r.font.bold = True; r.font.color.rgb = WHITE
picture_frame(s, ASSETS + "ehl_toe.png", Inches(7.3), Inches(1.5), Inches(5.3), Inches(4.85),
caption="Extensor hallucis longus \u2014 great-toe extension")
footer(s)
# =========================================================
# SLIDE 6 — ANATOMICAL CAUSE
# =========================================================
s = add_slide()
header(s, "PATHOANATOMY", "L4\u2013L5 Disc Herniation", 6)
flow_items = ["Posterolateral / paracentral\ndisc herniation",
"Compression of the\ntraversing L5 nerve root",
"RIGHT L5\nRADICULOPATHY"]
x = Inches(0.55); w = Inches(5.6); h = Inches(1.05)
y = Inches(1.55)
colors = [TEAL, TEAL, RED]
for i, (txt, col) in enumerate(zip(flow_items, colors)):
flow_box(s, x, y, w, h, txt, fill=col, size=16)
if i < len(flow_items) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.05))
y += h + Inches(0.4)
add_round_rect(s, Inches(0.55), Inches(5.85), Inches(5.6), Inches(0.55), GOLD, radius=0.3)
add_text(s, Inches(0.55), Inches(5.85), Inches(5.6), Inches(0.55), "L4\u2013L5 Disc \u2192 L5 Root",
size=17, color=NAVY, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "disc_herniation.png", Inches(6.85), Inches(1.5), Inches(5.9), Inches(4.35),
caption="L4\u2013L5 disc herniation compressing the L5 nerve root", star=True)
add_round_rect(s, Inches(6.85), Inches(6.05), Inches(5.9), Inches(1.0), LIGHT_TEAL, line_color=TEAL, radius=0.1)
add_text(s, Inches(7.0), Inches(6.12), Inches(3.0), Inches(0.3), "ARTICLE CORRELATION", size=11.5, bold=True, color=TEAL)
add_text(s, Inches(7.0), Inches(6.4), Inches(5.6), Inches(0.55), "Lumbar Disc Herniation \u2014 Review Article",
size=13, color=DARK, italic=True)
footer(s)
# =========================================================
# SLIDE 7 — WHY COUGHING & SNEEZING
# =========================================================
s = add_slide()
header(s, "PROVOCATIVE MECHANISM", "Why Coughing & Sneezing?", 7)
items = ["Coughing / sneezing", "Increased spinal / intrathecal pressure",
"Aggravation of an irritated nerve root", "Increased Radicular Pain"]
x = Inches(0.55); w = Inches(6.0); h = Inches(0.85)
y = Inches(1.55)
cols7 = [NAVY, TEAL, TEAL, RED]
for i, (txt, col) in enumerate(zip(items, cols7)):
flow_box(s, x, y, w, h, txt, fill=col, size=16)
if i < len(items) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.04))
y += h + Inches(0.35)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.7), GOLD, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.7), "Supports a Spinal Nerve-Root Origin",
size=16, color=NAVY, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "disc_herniation.png", Inches(7.1), Inches(1.6), Inches(5.65), Inches(4.6),
caption="Compressed lumbar nerve root under increased intrathecal pressure")
footer(s)
# =========================================================
# SLIDE 8 — SLR TEST
# =========================================================
s = add_slide()
header(s, "SPECIAL TEST", "Straight Leg Raising Test (SLR)", 8)
steps = ["Patient: Supine", "Knee: Extended", "Hip: Gradually flexed",
"Lumbosacral neural structures\nplaced under tension", "Pain reproduced at 40\u00b0"]
x = Inches(0.55); w = Inches(5.5); h = Inches(0.72)
y = Inches(1.45)
for i, txt in enumerate(steps):
col = RED if i == len(steps) - 1 else TEAL
flow_box(s, x, y, w, h, txt, fill=col, size=14.5)
if i < len(steps) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.03), size=Inches(0.24))
y += h + Inches(0.3)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.65), GOLD, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.65), "\u2192 POSITIVE SLR", size=19, color=NAVY, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "slr_test.png", Inches(6.6), Inches(1.45), Inches(6.15), Inches(4.9),
caption="Straight leg raise test", star=True)
footer(s)
# =========================================================
# SLIDE 9 — ANATOMICAL BASIS OF SLR
# =========================================================
s = add_slide()
header(s, "MECHANISM", "Anatomical Basis of SLR", 9)
add_text(s, Inches(0.55), Inches(1.35), Inches(6.0), Inches(0.4), "WHY DOES SLR CAUSE PAIN?",
size=15, color=TEAL, bold=True)
steps9 = ["Hip flexion + knee extension", "Increased neural tension",
"Lumbosacral roots + sciatic nerve\nare tensioned",
"Irritated / compressed nerve root\nbecomes painful", "RADICULAR PAIN"]
x = Inches(0.55); w = Inches(6.0); h = Inches(0.68)
y = Inches(1.85)
for i, txt in enumerate(steps9):
col = RED if i == len(steps9) - 1 else TEAL
flow_box(s, x, y, w, h, txt, fill=col, size=13.5)
if i < len(steps9) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.02), size=Inches(0.2))
y += h + Inches(0.26)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.55), GOLD, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.55), "40\u00b0 \u2192 Within the clinically significant range",
size=14, color=NAVY, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "slr_test.png", Inches(7.1), Inches(1.45), Inches(5.65), Inches(4.55),
caption="SLR diagram \u2014 30\u00b0\u201370\u00b0 clinically significant range")
footer(s)
# =========================================================
# SLIDE 10 — SPINE vs PIRIFORMIS
# =========================================================
s = add_slide()
header(s, "DIFFERENTIAL DIAGNOSIS", "Spine vs. Piriformis", 10)
headers10 = ["L5 Radiculopathy", "Piriformis Syndrome"]
data10 = [
("Dermatomal sensory loss", "Less specific sensory findings"),
("Myotomal weakness", "Usually no clear root-pattern weakness"),
("Cough / sneeze aggravation", "Less typical"),
("Positive SLR may occur", "Sciatic pain may occur"),
("L5 neurological signs", "Usually absent"),
]
tx = Inches(0.55); ty = Inches(1.45)
tw = [Inches(3.75), Inches(3.75)]
rh = Inches(0.62)
# header row
add_round_rect(s, tx, ty, tw[0], rh, NAVY, radius=0.08)
add_text(s, tx, ty, tw[0], rh, headers10[0], size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, tx + tw[0] + Inches(0.06), ty, tw[1], rh, GREY, radius=0.08)
add_text(s, tx + tw[0] + Inches(0.06), ty, tw[1], rh, headers10[1], size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
cy = ty + rh + Inches(0.08)
for i, (a, b) in enumerate(data10):
fill_a = LIGHT_TEAL if i % 2 == 0 else WHITE
add_round_rect(s, tx, cy, tw[0], rh, fill_a, line_color=TEAL, radius=0.04)
add_text(s, tx + Inches(0.12), cy, tw[0] - Inches(0.24), rh, a, size=12.3, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, tx + tw[0] + Inches(0.06), cy, tw[1], rh, WHITE, line_color=GREY, radius=0.04)
add_text(s, tx + tw[0] + Inches(0.18), cy, tw[1] - Inches(0.24), rh, b, size=12.3, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
cy += rh + Inches(0.08)
add_round_rect(s, tx, cy + Inches(0.05), tw[0] * 2 + Inches(0.06), Inches(0.75), GOLD, radius=0.15)
tb = s.shapes.add_textbox(tx, cy + Inches(0.05), tw[0] * 2 + Inches(0.06), Inches(0.75))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "THIS CASE FAVORS: "; r1.font.bold = True; r1.font.size = Pt(14); r1.font.color.rgb = NAVY
r2 = p.add_run(); r2.text = "SPINAL RADICULOPATHY"; r2.font.bold = True; r2.font.size = Pt(18); r2.font.color.rgb = NAVY
picture_frame(s, ASSETS + "spine_vs_piriformis.png", Inches(8.15), Inches(1.45), Inches(4.65), Inches(4.9),
caption="L4\u2013L5 disc compression vs. piriformis\u2013sciatic nerve anatomy", star=True)
footer(s)
# =========================================================
# SLIDE 11 — COMPLETE ANATOMICAL CHAIN
# =========================================================
s = add_slide()
header(s, "SYNTHESIS", "Putting It All Together", 11)
chain = ["Prolonged sitting / heavy lifting", "L4\u2013L5 disc pathology",
"Posterolateral disc herniation", "L5 nerve-root compression",
"L5 RADICULOPATHY", "Pain + sensory loss + motor weakness"]
x = Inches(0.55); w = Inches(5.85); h = Inches(0.62)
y = Inches(1.35)
for i, txt in enumerate(chain):
col = RED if i == len(chain) - 2 else TEAL
if i == len(chain) - 1:
col = NAVY
flow_box(s, x, y, w, h, txt, fill=col, size=14)
if i < len(chain) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.02), size=Inches(0.2))
y += h + Inches(0.24)
picture_frame(s, ASSETS + "full_chain.png", Inches(7.0), Inches(1.45), Inches(5.75), Inches(4.9),
caption="L4\u2013L5 disc \u2192 L5 root \u2192 sciatic nerve pathway", star=True)
footer(s)
# =========================================================
# SLIDE 12 — FINAL DIAGNOSIS
# =========================================================
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(1.15), SW, Pt(3), GOLD)
add_text(s, Inches(0.55), Inches(0.35), Inches(11), Inches(0.6), "FINAL DIAGNOSIS", size=22, color=GOLD, bold=True)
add_round_rect(s, Inches(0.55), Inches(1.5), Inches(6.1), Inches(1.15), TEAL, radius=0.15)
add_text(s, Inches(0.55), Inches(1.5), Inches(6.1), Inches(1.15), "RIGHT L5 RADICULOPATHY",
size=24, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(0.55), Inches(2.85), Inches(6.1), Inches(0.35), "Most likely caused by:",
size=14, color=RGBColor(0xC8, 0xD6, 0xDE), italic=True)
add_round_rect(s, Inches(0.55), Inches(3.25), Inches(6.1), Inches(0.9), GOLD, radius=0.15)
add_text(s, Inches(0.55), Inches(3.25), Inches(6.1), Inches(0.9), "L4\u2013L5 POSTEROLATERAL\nDISC HERNIATION",
size=17, color=NAVY, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
add_text(s, Inches(0.55), Inches(4.4), Inches(6.1), Inches(0.35), "SUPPORTING FINDINGS", size=14, color=GOLD, bold=True)
checks = ["L5 sensory distribution", "Great-toe extension weakness", "Dorsiflexion weakness",
"Positive SLR at 40\u00b0", "Pain aggravated by coughing/sneezing"]
tb = s.shapes.add_textbox(Inches(0.55), Inches(4.8), Inches(6.1), Inches(2.1))
tf = tb.text_frame; tf.word_wrap = True
for i, c in enumerate(checks):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(6)
r = p.add_run(); r.text = "\u2713 " + c
r.font.size = Pt(14.5); r.font.color.rgb = WHITE; r.font.bold = False
add_round_rect(s, Inches(0.55), Inches(6.75), Inches(6.1), Inches(0.6), RED, radius=0.3)
add_text(s, Inches(0.55), Inches(6.75), Inches(6.1), Inches(0.6), "SPINE > PIRIFORMIS",
size=20, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "disc_herniation.png", Inches(7.15), Inches(1.5), Inches(5.6), Inches(4.35),
caption="Final L4\u2013L5 \u2192 L5 nerve root compression")
# References strip
add_rect(s, 0, Inches(6.35), SW, Pt(2), TEAL)
add_text(s, Inches(7.15), Inches(6.05), Inches(5.6), Inches(0.3), "REFERENCES", size=11, color=GOLD, bold=True)
add_text(s, Inches(7.15), Inches(5.6), Inches(5.6), Inches(0.45), "", size=1)
# =========================================================
# FINAL REFERENCES SLIDE
# =========================================================
s = add_slide()
header(s, "REFERENCES", "Sources", 13, total=13)
refs = [
"1. Bateman EA, Fortin J, Guo S. Musculoskeletal mimics of lumbosacral radiculopathy. Muscle & Nerve. 2024.",
"2. Lumbar Disc Herniation \u2014 Review. Open-access review of clinical presentation, neurological findings and anatomical levels.",
]
tb = s.shapes.add_textbox(Inches(0.7), Inches(2.0), Inches(11.5), Inches(3.0))
tf = tb.text_frame; tf.word_wrap = True
for i, r_ in enumerate(refs):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(18)
rn = p.add_run(); rn.text = r_
rn.font.size = Pt(16); rn.font.color.rgb = DARK
footer(s)
prs.save("/tmp/workspace/spine-ppt/output/Pain_Down_The_Leg_Spine_vs_Piriformis.pptx")
print("Saved.")
cd /tmp/workspace/spine-ppt && python3 build_ppt.py
~/spine-ppt/build_ppt.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/spine-ppt/build_ppt.py'
cd /tmp/workspace/spine-ppt && python3 build_ppt.py
~/spine-ppt/build_ppt.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/spine-ppt/build_ppt.py'
cd /tmp/workspace/spine-ppt && python3 build_ppt.py
cd /tmp/workspace/spine-ppt/output && ls -la && python3 -c " from pptx import Presentation prs = Presentation('Pain_Down_The_Leg_Spine_vs_Piriformis.pptx') print('Slides:', len(prs.slides)) for i, sl in enumerate(prs.slides,1): texts = [sh.text_frame.text[:40] for sh in sl.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(i, '->', texts[:3]) "
Pain Down The Leg Spine vs Piriformis
Presentation · PPTX
Generate me another one using authentic pictures from books and google pics not a single ai generated and a light theme gray even
sciatic nerve anatomy lumbosacral plexus

This diagnostic image consists of Magnetic Resonance Neurography (MRN) scans utilizing coronal STIR 3D SPACE (MIP) sequences to visualize the lumbosacral plexus.

This clinical photograph shows a detailed intraoperative view of the right lumbosacral fossa during a complex pelvic surgical procedure (Total Mesometrial Resection). The image demonstrates the surgical isolation and slinging of key neurovascular structures for preservation and identification. The right common iliac artery is prominently identified with a red sling. Nervous system structures are precisely isolated using color-coded slings: the right genitofemoral nerve is marked with a green sling, the right lumbosacral trunk with an upper white sling, and the right obturator nerve with a lower white sling. The surgical field also reveals the deeper lumbar rami of the sacral plexus, including the L4, L5, S1, and S2 roots, and the proximal sciatic nerve. Retractors and forceps are used to provide exposure of the pelvic sidewall, illustrating the spatial relationships between the major iliac vasculature and the nerve plexuses relevant to oncological pelvic surgery. This visual serves as an educational reference for retroperitoneal pelvic anatomy and surgical navigation.

This composite of 15 laparoscopic photograms (labeled a-o) illustrates a step-by-step dissection of the retroperitoneal pelvic anatomy. The series follows a surgical progression starting from the sacral promontory and right psoas muscle (a-c), moving into the obturator fossa to identify the genitofemoral nerve (GFN), obturator nerve (ON), and lumbosacral trunk (LST) (d-f). Deeper dissection in panels g-i highlights the sciatic notch and floor of the pelvis, identifying the ischial spine, sacrospinous ligament (asterisk), iliococcygeus muscle (ICM), and pudendal neurovascular bundle. Panels j-m focus on the presacral space and superior hypogastric plexus (SHP), while n-o demonstrate the sacral nerve roots (S2-S4) and the inferior hypogastric plexus (IHP) with associated pelvic splanchnic nerves (PSN). High-contrast overlays—including blue for endopelvic fascia and green for neural plexuses—and white anatomical labels help distinguish complex neural, vascular, and muscular structures. This educational resource is designed to teach laparoscopic surgical landmarks and spatial relationships within the female pelvic retroperitoneum.

This clinical photograph displays a deep surgical dissection of the human pelvic sidewall (left side) emphasizing the anatomy of Alcock’s (pudendal) canal and the sacral plexus. Key neurovascular structures are visible, including the anterior rami of L4, L5, S1, and S2, which contribute to the lumbosacral trunk (LST) and the sciatic nerve (SN). The superior gluteal artery (SGA) is seen emerging between the LST and S1, while the inferior gluteal artery (IGA) is located caudally. The piriformis muscle (PM) and obturator internus muscle (OIM) provide muscular landmarks. The internal pudendal artery (IPA) is shown tracking toward the entry of Alcock’s canal (AC). A triangular outline highlights the coccygeus muscle (CM) relative to the ischial spine (IS). Medial landmarks include the sacrum (S), sacral promontory (PR), and sacral spine (SP). This educational material demonstrates the complex spatial relationships necessary for surgical navigation in gynecologic oncology and pelvic floor procedures, specifically identifying the transition of neurovascular bundles from the pelvic cavity into the gluteal and perineal regions.
dermatome sensory distribution lower limb diagram
intervertebral disc herniation nerve root compression illustration
straight leg raise test examination

Two-panel clinical photograph demonstrating the self-administered Straight Leg Raise (SLR) test and the Bragard test, commonly used to assess for lumbar radiculopathy or disc pathology. Panel A shows a patient in the supine position with the right knee flexed and the left leg extended and elevated, simulating a modified straight leg raise. The patient’s hands are positioned on the hip and thigh for stabilization. Panel B illustrates the Bragard test modification, where the patient uses a teal-colored strap or cloth looped around the forefoot of the elevated leg to perform passive ankle dorsiflexion while maintaining the leg in an elevated position. This maneuver increases dural tension on the sciatic nerve and its roots. The images are likely from a telemedicine or home-based rehabilitation context, illustrating how orthopedic physical examination signs can be elicited by the patient. These tests are clinically relevant for diagnosing sciatica or lumbar nerve root irritation, where a positive result is defined by the reproduction of radicular pain.

This clinical photograph set demonstrates two physical examination methods for assessing lower limb range of motion (ROM) and lumbopelvic flexibility. Panels A and B illustrate the 'Jurdan test,' a composite measurement combining aspects of the active knee extension test and the modified Thomas test. The subject is supine on an examination plinth with the testing leg elevated and the knee extended, while the contralateral leg is positioned at the edge of the table to assess hip extension. Panel B displays the calculation of a 'composite angle' (83 degrees) derived from the active knee extension angle (65 degrees) and the contralateral passive hip flexion angle (-18 degrees). Panels C and D demonstrate the Active Straight Leg Raise (ASLR) test, where the subject is supine with one leg actively flexed at the hip while keeping the knee straight. Panel D shows an ASLR angle of 87 degrees. These tests are utilized in sports medicine and physical therapy to evaluate hamstring extensibility, iliopsoas flexibility, and limb asymmetry, particularly in the context of hamstring strain injury risk assessment and sprinting kinematics.

A clinical photograph in grayscale demonstrating the Active Straight Leg Raise (ASLR) test, an orthopedic and physical examination maneuver used to assess pelvic girdle pain (PGP) and lumbo-pelvic stability. The subject is positioned supine on an examination table with a towel draped over the pelvic region for privacy. The image shows the patient actively elevating one lower extremity while maintaining full knee extension and ankle dorsiflexion, while the contralateral leg remains resting in a neutral position on the table. This test evaluates the ability of the pelvic floor and trunk muscles to effectively transfer loads through the pelvis. It is clinically significant in obstetrics and physical therapy for diagnosing lumbopelvic pain and predicting functional disability in pregnant and postpartum populations.

A composite of clinical photographs demonstrating five provocative physical examination maneuvers used to diagnose sacroiliac joint (SIJ) pain and dysfunction. (A) Patrick’s FABER test: patient supine with hip flexed, abducted, and externally rotated; examiner applies downward pressure on the knee and opposite iliac crest. (B) Posterior shear (Thigh Thrust) test: patient supine with hip flexed to 90 degrees; examiner applies vertical downward pressure through the femur. (C) Sacral compression test: patient side-lying; examiner applies downward force on the superior iliac crest. (D) Active Straight Leg Raise (SLR) test shown in two phases: patient performing an active leg lift followed by the examiner applying stabilizing sacral pressure. (E) Sacral thrust test: patient prone; examiner applies a vigorous downward pressure over the sacrum. Red arrows indicate the direction of force applied by the examiner. These tests are clinical tools in orthopedics and physical therapy to assess SIJ provocation and stability.

A clinical illustration demonstrating the Active Straight Leg Raise (ASLR) test, commonly used in the assessment of pelvic girdle pain (PGP) and functional pelvic stability, often in pregnant or postpartum patients. The diagram shows a pregnant female patient in a supine position on an examination table with her head supported by a pillow. She is performing an active lift of her right leg while keeping the knee in full extension, while the left leg remains resting on the surface. A medical professional in clinical scrubs stands at the bedside, observing the movement and assessing for difficulty, pain, or compensatory strategies. This procedural image highlights a key diagnostic maneuver used in musculoskeletal and obstetric physical examinations to evaluate the integrity of load transfer through the pelvis and the presence of pelvic floor or sacroiliac joint dysfunction.

Two side-by-side clinical photographs (labeled 'a' and 'b') demonstrating the Active Straight Leg Raise (ASLR) test, a common clinical assessment used in orthopedics and physical therapy to evaluate pelvic girdle stability and lumbopelvic motor control. In panel (a), the participant is shown in the starting position, lying supine on a padded examination bench with both lower extremities fully extended and resting on the surface. In panel (b), the participant performs the active phase of the test by elevating the right leg while maintaining knee extension, approximately 20 cm above the bench, while the left leg remains stationary and in contact with the surface. The images focus on the lower body, illustrating the hip flexion and stabilization required during the maneuver. This visual serves as a standardized protocol guide for clinicians assessing functional movement, sacroiliac joint dysfunction, or low back pain. The subject is shown from a posterolateral perspective, emphasizing the mechanics of the hip and pelvic region during unilateral limb movement.
piriformis muscle sciatic nerve gluteal region anatomy

This composite of three intraoperative clinical photographs demonstrates the surgical management of piriformis syndrome via decompression of the sciatic nerve. Panel A shows preoperative planning with the patient in a prone position; a linear incision marking is visible on the left gluteal region, oriented longitudinally relative to the superior-inferior axis. Panel B captures the initial surgical exposure using metallic retractors to separate subcutaneous tissue and gluteal fibers, revealing the piriformis muscle (labeled 'P'). Panel C provides a detailed anatomical view of the deep gluteal space following partial resection of the piriformis. Key structures identified include the piriformis muscle (P), superior gemellus (SG), obturator internus (OI), and quadratus femoris (QF). The sciatic nerve (labeled 'S') is shown as a thick, whitish cord-like structure positioned deep to the piriformis and superficial to the other short external rotators. An arrow indicates the 'resection area' of the piriformis muscle where it previously compressed the nerve. This figure serves as an educational resource for identifying deep gluteal anatomy and understanding the decompression technique for sciatic nerve entrapment.

This composite image consists of an intraoperative clinical photograph and a corresponding anatomical line drawing illustrating a variation of the sciatic nerve relevant to piriformis syndrome. The field shows a deep dissection of the right gluteal region. A bifid sciatic nerve is clearly demonstrated, where the nerve is split into two distinct trunks—the common peroneal and tibial components—before exiting the pelvis. These neural structures are seen passing deep to the piriformis muscle. For surgical exposure and decompression, the piriformis muscle is shown as 'cut' (sectioned). The anatomical diagram clarifies the relationship, labeling the bifid sciatic nerve trunks and the hypertrophied, sectioned piriformis muscle. This visual provides clinical evidence of anatomical impingement, where nerve variation combined with muscle hypertrophy can lead to compressive neuropathy. The image is intended for advanced medical education in orthopedics, neurosurgery, and clinical anatomy, focusing on peripheral nerve entrapment syndromes and surgical decompression techniques.

Two clinical photographs show a cadaveric surgical dissection of the human gluteal region, demonstrating the deep anatomical relationships of neurovascular structures. The left panel shows a wide view with the gluteus maximus retracted (yellow push pin). Key structures are marked: the gluteus medius (green push pin), the piriformis muscle (white push pin), and the sciatic nerve (blue push pin) emerging inferior to the piriformis. The superior gemellus muscle is visible deep to these layers. The right panel provides a close-up of the greater sciatic foramen area. A white star marks the piriformis muscle, which serves as a landmark for the gluteal vessels. An orange arrow identifies the superior gluteal vessel emerging above the piriformis, and a small blue arrow identifies the inferior gluteal vessel emerging below it. This dissection illustrates the 'danger zone' for gluteal fat augmentation and highlights the anatomical basis for localizing gluteal neurovascular bundles using muscular landmarks and surface anatomy.

This clinical photograph displays a detailed cadaveric dissection of the right human gluteal region and posterior thigh, focusing on an anatomical variation of the sciatic nerve. The image illustrates a 'high bifurcation' of the sciatic nerve (SCN), where it divides into its terminal branches approximately 1 cm inferior to the lower border of the piriformis muscle (PM) rather than in the popliteal fossa. The two resulting divisions—the tibial nerve (TN) and the common peroneal nerve (CPN)—are clearly identified. Surrounding musculoskeletal landmarks include the quadratus femoris (QF) located inferiorly and the inferior gemellus (IG) muscle situated deep to the bifurcation point. Labels indicate the 'Caudal' and 'Proximal' orientations. This specimen serves as an educational resource for studying peripheral nerve anatomy and surgical variations in the gluteal region, which is clinically significant for procedures like piriformis syndrome decompression or sciatic nerve blocks.

This composite educational image illustrates an anatomical variation of the sciatic nerve (SN) in relation to the piriformis muscle (PM). Panel A is a clinical photograph of a cadaveric dissection of the gluteal region, and Panel B is a 3D anatomical diagram representing the same variation. The visual content demonstrates a high division of the sciatic nerve into its two primary branches: the tibial nerve (TN) and the common peroneal nerve (CPN). In this specific variation, the CPN passes superior to the piriformis muscle, while the TN passes deep to or through the muscle belly. Labels indicate the proximal origin (*) and distal insertion (#) of the piriformis muscle. This anatomical comparison highlights variations relevant to clinical scenarios such as piriformis syndrome, nerve entrapment, and surgical planning for the posterior approach to the hip. The material is intended for advanced anatomy students and surgical residents to understand peripheral nerve morphology and potential sites of neurovascular compression.

The image consists of a side-by-side comparison: a grayscale clinical photograph of an intraoperative field and a corresponding anatomical line drawing. The focus is on a rare anatomical variation involving the gluteal region. Both the photograph and the diagram depict a bifid piriformis muscle, where the muscle is split into two distinct bellies. Associated with this is a bifid sciatic nerve, which has divided into its common peroneal and tibial components more proximally than usual. The spatial relationship between these structures is highlighted: one branch of the sciatic nerve passes superior (proximal) to the piriformis muscle, while the second branch passes directly through the cleft or split between the two bellies of the bifid muscle. This anatomical arrangement is clinically significant in the context of piriformis syndrome, as it demonstrates a potential mechanism for nerve entrapment or impingement within the sciatic notch. The images provide high-level anatomical detail for surgical planning and medical education in orthopedics, neurology, and anatomy.
foot drop dorsiflexion weakness examination
L5 dermatome map diagram lumbar disc herniation nerve root anatomy
office worker sitting desk back pain sciatica stock photo
extensor hallucis longus great toe extension muscle test tibialis anterior anatomy diagram
mkdir -p /tmp/workspace/spine-ppt-v2/assets /tmp/workspace/spine-ppt-v2/output && cd /tmp/workspace/spine-ppt-v2 && python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_1761be123c059855459e9f61bee9b4c3295d8c9cb8736224a04e08d5b95dd6c5.jpg" \ "https://thumbs.dreamstime.com/b/man-suffering-back-pain-working-office-desk-stressed-man-feeling-severe-lower-back-pain-sitting-laptop-424376441.jpg" \ "https://www.chirogeek.com/Dermatome%20101/dermatome-L5.gif" \ "https://teachmeanatomy.info/wp-content/uploads/Muscles-of-the-Anterior-Leg.jpg" \ "https://cdn.orris.care/cdss_images/BAILY_1760539488371_7ece4e59-35ee-4787-b45d-7dad9e6f1854.png" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_0bbb927713119f7800630d89c40cd3f0b6058f5a1389cc907218e704e78633b5.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_317d16e07366033a523f24ce342dc941b2603268761ffe0742e4b7219e6bc305.jpg" \ > fetch_result.json python3 -c " import json, base64 data = json.load(open('fetch_result.json')) names = ['mrn_roots','office_worker','l5_dermatome','ehl_anatomy','sagittal_mri','slr_test','piriformis_sciatic'] for name, item in zip(names, data): if item['base64']: b64 = item['base64'].split(',',1)[1] if ',' in item['base64'] else item['base64'] raw = base64.b64decode(b64) ext = 'png' if 'png' in item['base64'][:20] else ('gif' if 'gif' in item['base64'][:20] else 'jpg') with open(f'assets/{name}.{ext}','wb') as f: f.write(raw) print(name, 'OK', len(raw), ext) else: print(name, 'ERROR', item.get('error')) " ls -la assets/
~/spine-ppt-v2/build_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR
from pptx.oxml.ns import qn
ASSETS = "/tmp/workspace/spine-ppt-v2/assets/"
# ---------- Light Gray Palette ----------
CHARCOAL = RGBColor(0x3A, 0x3D, 0x40) # header band (dark charcoal, not navy)
SLATE = RGBColor(0x5B, 0x74, 0x7E) # accent slate-teal
LIGHT_SLATE = RGBColor(0xE7, 0xEB, 0xEC) # pale accent bg
TAN = RGBColor(0xA9, 0x8F, 0x5E) # muted gold/tan accent (subtle, not bright gold)
RED = RGBColor(0xA6, 0x3B, 0x2E)
DARK = RGBColor(0x2A, 0x2A, 0x2A)
GREY = RGBColor(0x6E, 0x6E, 0x6E)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
BG = RGBColor(0xEF, 0xEF, 0xEF) # overall light gray background
CARD = RGBColor(0xFA, 0xFA, 0xFA)
MIDGRAY = RGBColor(0xB9, 0xBD, 0xC0)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
SW, SH = prs.slide_width, prs.slide_height
blank = prs.slide_layouts[6]
def add_slide():
s = prs.slides.add_slide(blank)
bg = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, 0, SW, SH)
bg.fill.solid(); bg.fill.fore_color.rgb = BG
bg.line.fill.background(); bg.shadow.inherit = False
return s
def no_shadow(shp):
shp.shadow.inherit = False
return shp
def add_rect(s, x, y, w, h, color, line_color=None, line_w=None):
shp = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
shp.fill.solid(); shp.fill.fore_color.rgb = color
if line_color:
shp.line.color.rgb = line_color; shp.line.width = line_w or Pt(1)
else:
shp.line.fill.background()
no_shadow(shp)
return shp
def add_round_rect(s, x, y, w, h, color, line_color=None, radius=0.08):
shp = s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, x, y, w, h)
try:
shp.adjustments[0] = radius
except Exception:
pass
shp.fill.solid(); shp.fill.fore_color.rgb = color
if line_color:
shp.line.color.rgb = line_color; shp.line.width = Pt(1.25)
else:
shp.line.fill.background()
no_shadow(shp)
return shp
def add_text(s, x, y, w, h, text, size=18, color=DARK, bold=False, italic=False,
align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.TOP, font="Calibri", line_spacing=None, wrap=True):
tb = s.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = anchor
tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0
lines = text.split("\n")
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = line
p.alignment = align
if line_spacing:
p.line_spacing = line_spacing
for r in p.runs:
r.font.size = Pt(size); r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color; r.font.name = font
return tb
def add_bullets(s, x, y, w, h, items, size=15, color=DARK, font="Calibri", space_after=6):
tb = s.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0
for i, item in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(space_after)
r = p.add_run(); r.text = "\u25B8 " + item
r.font.size = Pt(size); r.font.color.rgb = color; r.font.name = font
return tb
def add_pic(s, path, x, y, w=None, h=None):
return s.shapes.add_picture(path, x, y, width=w, height=h)
def flow_box(s, x, y, w, h, text, fill=SLATE, txt_color=WHITE, size=14, bold=True):
shp = add_round_rect(s, x, y, w, h, fill, radius=0.12)
tf = shp.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
tf.margin_left = Pt(6); tf.margin_right = Pt(6)
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
p.text = text
for r in p.runs:
r.font.size = Pt(size); r.font.bold = bold; r.font.color.rgb = txt_color; r.font.name = "Calibri"
return shp
def down_arrow(s, x_center, y, size=Inches(0.28), color=SLATE):
shp = s.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, x_center - size/2, y, size, size)
shp.fill.solid(); shp.fill.fore_color.rgb = color
shp.line.fill.background(); no_shadow(shp)
return shp
def header(s, kicker, title, num, total=12):
add_rect(s, 0, 0, SW, Inches(1.15), CHARCOAL)
add_rect(s, 0, Inches(1.15), SW, Pt(3), TAN)
add_text(s, Inches(0.55), Inches(0.12), Inches(10.5), Inches(0.35), kicker,
size=13, color=TAN, bold=True, font="Calibri")
add_text(s, Inches(0.55), Inches(0.42), Inches(11.5), Inches(0.65), title,
size=26, color=WHITE, bold=True, font="Calibri")
add_text(s, Inches(12.15), Inches(0.38), Inches(0.9), Inches(0.5), f"{num:02d}/{total}",
size=13, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
def footer(s, note=""):
add_text(s, Inches(0.55), Inches(7.16), Inches(9), Inches(0.3), note, size=10, color=GREY, italic=True)
add_text(s, Inches(10.5), Inches(7.16), Inches(2.3), Inches(0.3),
"Spine or Piriformis? \u2014 Clinical Case", size=10, color=GREY, align=PP_ALIGN.RIGHT)
def picture_frame(s, path, x, y, w, h, caption=None, source=None, star=False):
add_round_rect(s, x - Inches(0.06), y - Inches(0.06), w + Inches(0.12), h + Inches(0.12),
CARD, line_color=MIDGRAY, radius=0.04)
pic = add_pic(s, path, x, y, w=w, h=h)
if star:
star_shp = s.shapes.add_shape(MSO_SHAPE.STAR_5_POINT, x + w - Inches(0.42), y - Inches(0.22), Inches(0.5), Inches(0.5))
star_shp.fill.solid(); star_shp.fill.fore_color.rgb = TAN
star_shp.line.fill.background(); no_shadow(star_shp)
yy = y + h + Inches(0.06)
if caption:
add_text(s, x, yy, w, Inches(0.3), caption, size=10.5, italic=True, color=DARK, align=PP_ALIGN.CENTER)
yy += Inches(0.28)
if source:
add_text(s, x, yy, w, Inches(0.25), source, size=9, italic=True, color=GREY, align=PP_ALIGN.CENTER)
return pic
# =========================================================
# SLIDE 1 — TITLE
# =========================================================
s = add_slide()
add_rect(s, 0, 0, SW, SH, RGBColor(0xE4, 0xE5, 0xE6))
add_rect(s, 0, 0, Inches(8.7), SH, CHARCOAL)
add_rect(s, Inches(8.7), 0, Pt(4), SH, TAN)
add_text(s, Inches(0.9), Inches(1.0), Inches(7.3), Inches(0.4), "CLINICAL CASE PRESENTATION",
size=16, color=TAN, bold=True)
add_text(s, Inches(0.9), Inches(1.55), Inches(7.6), Inches(1.9), "PAIN DOWN THE LEG:",
size=40, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(2.35), Inches(7.6), Inches(1.6),
"IS IT THE SPINE OR\nTHE PIRIFORMIS?", size=34, color=RGBColor(0xB7,0xCE,0xD3), bold=True, line_spacing=1.05)
add_text(s, Inches(0.9), Inches(4.05), Inches(7.2), Inches(0.5),
"A neuro-anatomical approach to lumbosacral radiculopathy vs. piriformis syndrome",
size=15, color=RGBColor(0xC8, 0xCB, 0xCE), italic=True)
add_round_rect(s, Inches(0.9), Inches(4.85), Inches(3.6), Inches(0.55), SLATE, radius=0.5)
add_text(s, Inches(0.9), Inches(4.85), Inches(3.6), Inches(0.55), "35 M \u2022 Office Worker \u2022 Sciatica",
size=13, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "mrn_roots.jpg", Inches(9.0), Inches(1.3), Inches(3.75), Inches(4.55),
caption="Lumbosacral nerve roots & sciatic nerve",
source="MR neurography, labeled \u2014 PMC clinical imaging")
add_text(s, Inches(0.9), Inches(6.75), Inches(7.6), Inches(0.4),
"Localizing a nerve root lesion through history, examination and anatomy", size=13,
color=RGBColor(0xAF, 0xB3, 0xB6), italic=True)
# =========================================================
# SLIDE 2 — CLINICAL SCENARIO
# =========================================================
s = add_slide()
header(s, "PRESENTATION", "35-Year-Old Male Office Worker", 2)
add_round_rect(s, Inches(0.55), Inches(1.45), Inches(5.75), Inches(0.5), CHARCOAL, radius=0.15)
add_text(s, Inches(0.55), Inches(1.45), Inches(5.75), Inches(0.5), "HISTORY OF PRESENTING ILLNESS",
size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.55), Inches(2.15), Inches(5.75), Inches(3.0), [
"Severe right buttock pain",
"Radiating to posterior thigh and leg",
"Electric shock-like pain",
"Duration: 3 weeks",
"Worse with prolonged sitting",
"Increased with coughing and sneezing",
"Sits 8\u201310 hours/day",
"Occasionally lifts heavy objects",
], size=15.5)
add_round_rect(s, Inches(6.55), Inches(1.45), Inches(5.75), Inches(0.5), CHARCOAL, radius=0.15)
add_text(s, Inches(6.55), Inches(1.45), Inches(5.75), Inches(0.5), "NEUROLOGICAL EXAMINATION",
size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(6.55), Inches(2.15), Inches(5.75), Inches(2.2), [
"\u2193 Sensation: lateral leg + dorsum of foot",
"\u2193 Dorsiflexion",
"\u2193 Great-toe extension",
"Knee & ankle reflexes: normal",
], size=15.5, color=RED)
picture_frame(s, ASSETS + "office_worker.jpg", Inches(6.95), Inches(4.35), Inches(4.9), Inches(2.5),
caption="Prolonged sitting \u2014 mechanical load on the lumbar spine",
source="Stock photograph \u2014 Dreamstime")
footer(s, "Case vignette compiled for educational discussion.")
# =========================================================
# SLIDE 3 — CLINICAL CLUES
# =========================================================
s = add_slide()
header(s, "ANALYSIS", "What Do These Findings Tell Us?", 3)
rows = [
("PAIN", "Buttock \u2192 posterior thigh \u2192 leg"),
("CHARACTER", "Electric shock-like \u2192 neuropathic pain"),
("PROVOCATION", "Coughing / sneezing \u2192 radicular component"),
("NEUROLOGICAL DEFICIT", "Sensory + motor involvement"),
]
y = Inches(1.5); rh = Inches(1.0)
for label, desc in rows:
add_round_rect(s, Inches(0.55), y, Inches(3.0), rh - Inches(0.15), SLATE, radius=0.18)
add_text(s, Inches(0.55), y, Inches(3.0), rh - Inches(0.15), label, size=15, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, Inches(3.75), y, Inches(4.9), rh - Inches(0.15), CARD, line_color=SLATE, radius=0.18)
add_text(s, Inches(3.95), y, Inches(4.55), rh - Inches(0.15), desc, size=14.5, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
y += rh
add_round_rect(s, Inches(0.55), y + Inches(0.05), Inches(8.1), Inches(0.75), CHARCOAL, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.55), y + Inches(0.05), Inches(8.1), Inches(0.75))
tf = tb.text_frame; tf.word_wrap = True; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.margin_left = Pt(10)
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "KEY QUESTION: "; r1.font.bold = True; r1.font.size = Pt(15); r1.font.color.rgb = TAN
r2 = p.add_run(); r2.text = "ROOT LESION OR SCIATIC NERVE COMPRESSION?"
r2.font.bold = True; r2.font.size = Pt(16); r2.font.color.rgb = WHITE
picture_frame(s, ASSETS + "mrn_roots.jpg", Inches(9.0), Inches(1.5), Inches(3.75), Inches(4.55),
caption="Sciatic nerve pathway & L5 nerve root",
source="MR neurography, labeled \u2014 PMC clinical imaging")
footer(s)
# =========================================================
# SLIDE 4 — LOCALIZATION
# =========================================================
s = add_slide()
header(s, "LOCALIZATION", "Where Is the Lesion?", 4)
cols = [
("SENSORY", ["Lateral leg", "Dorsum of foot"], "\u2192 L5"),
("MOTOR", ["Dorsiflexion \u2193", "Great-toe extension \u2193"], "\u2192 L5"),
("REFLEXES", ["Knee \u2192 Normal", "Ankle \u2192 Normal"], ""),
]
x = Inches(0.55); cw = Inches(2.55); gap = Inches(0.2)
for title, items, tail in cols:
add_round_rect(s, x, Inches(1.5), cw, Inches(0.55), CHARCOAL, radius=0.15)
add_text(s, x, Inches(1.5), cw, Inches(0.55), title, size=15, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, x, Inches(2.2), cw, Inches(1.6), CARD, line_color=SLATE, radius=0.1)
tb = s.shapes.add_textbox(x + Inches(0.15), Inches(2.35), cw - Inches(0.3), Inches(1.3))
tf = tb.text_frame; tf.word_wrap = True
for i, it in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = it; p.alignment = PP_ALIGN.CENTER
for r in p.runs: r.font.size = Pt(14.5); r.font.color.rgb = DARK
if tail:
add_text(s, x, Inches(3.9), cw, Inches(0.4), tail, size=17, color=RED, bold=True, align=PP_ALIGN.CENTER)
x += cw + gap
add_round_rect(s, Inches(0.55), Inches(4.55), Inches(7.75), Inches(1.0), TAN, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.55), Inches(4.55), Inches(7.75), Inches(1.0))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "LOCALIZATION: "; r1.font.bold = True; r1.font.size = Pt(16); r1.font.color.rgb = WHITE
r2 = p.add_run(); r2.text = "RIGHT L5 NERVE ROOT"; r2.font.bold = True; r2.font.size = Pt(22); r2.font.color.rgb = WHITE
picture_frame(s, ASSETS + "l5_dermatome.jpg", Inches(8.75), Inches(1.5), Inches(4.0), Inches(3.6),
caption="L5 dermatome map (pain-zone frequency)",
source="Kortelainen et al. mapping \u2014 chirogeek.com")
add_round_rect(s, Inches(0.55), Inches(5.75), Inches(11.9), Inches(1.15), LIGHT_SLATE, line_color=SLATE, radius=0.1)
add_text(s, Inches(0.75), Inches(5.85), Inches(3.0), Inches(0.35), "ARTICLE CORRELATION", size=12, bold=True, color=SLATE)
add_text(s, Inches(0.75), Inches(6.18), Inches(11.4), Inches(0.65),
"Bateman EA, et al. Musculoskeletal Mimics of Lumbosacral Radiculopathy \u2014 Muscle & Nerve",
size=13.5, color=DARK, italic=True)
footer(s)
# =========================================================
# SLIDE 5 — WHY L5?
# =========================================================
s = add_slide()
header(s, "ROOT SIGNATURE", "Why L5?", 5)
add_round_rect(s, Inches(0.55), Inches(1.5), Inches(6.4), Inches(0.6), SLATE, radius=0.15)
add_text(s, Inches(0.55), Inches(1.5), Inches(6.4), Inches(0.6), "L5 ROOT", size=18, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
specs = [("Sensory", "Dorsum of foot + great toe"),
("Motor", "Dorsiflexion / Great-toe extension"),
("Reflex", "No reliable routine deep tendon reflex")]
y = Inches(2.3)
for label, val in specs:
add_round_rect(s, Inches(0.55), y, Inches(2.0), Inches(0.95), CHARCOAL, radius=0.15)
add_text(s, Inches(0.55), y, Inches(2.0), Inches(0.95), label, size=14, color=TAN, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, Inches(2.65), y, Inches(4.3), Inches(0.95), CARD, line_color=SLATE, radius=0.15)
add_text(s, Inches(2.85), y, Inches(3.95), Inches(0.95), val, size=14, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
y += Inches(1.1)
add_round_rect(s, Inches(0.55), Inches(5.65), Inches(6.4), Inches(1.15), RED, radius=0.15)
tb = s.shapes.add_textbox(Inches(0.75), Inches(5.65), Inches(6.0), Inches(1.15))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.text = "KEY LOCALIZING SIGN"; p.alignment = PP_ALIGN.CENTER
for r in p.runs: r.font.size = Pt(13); r.font.bold = True; r.font.color.rgb = RGBColor(0xF0,0xDD,0xDD)
p2 = tf.add_paragraph(); p2.text = "Great-Toe Extension Weakness \u2192 L5"; p2.alignment = PP_ALIGN.CENTER
for r in p2.runs: r.font.size = Pt(19); r.font.bold = True; r.font.color.rgb = WHITE
picture_frame(s, ASSETS + "ehl_anatomy.jpg", Inches(7.65), Inches(1.4), Inches(4.7), Inches(4.9),
caption="Extensor hallucis longus \u2014 great-toe extension",
source="TeachMeAnatomy.info \u2014 anatomical atlas")
footer(s)
# =========================================================
# SLIDE 6 — ANATOMICAL CAUSE
# =========================================================
s = add_slide()
header(s, "PATHOANATOMY", "L4\u2013L5 Disc Herniation", 6)
flow_items = ["Posterolateral / paracentral\ndisc herniation",
"Compression of the\ntraversing L5 nerve root",
"RIGHT L5\nRADICULOPATHY"]
x = Inches(0.55); w = Inches(5.6); h = Inches(1.05); y = Inches(1.55)
colors = [SLATE, SLATE, RED]
for i, (txt, col) in enumerate(zip(flow_items, colors)):
flow_box(s, x, y, w, h, txt, fill=col, size=16)
if i < len(flow_items) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.05))
y += h + Inches(0.4)
add_round_rect(s, Inches(0.55), Inches(5.85), Inches(5.6), Inches(0.55), TAN, radius=0.3)
add_text(s, Inches(0.55), Inches(5.85), Inches(5.6), Inches(0.55), "L4\u2013L5 Disc \u2192 L5 Root",
size=17, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "sagittal_mri.jpg", Inches(7.15), Inches(1.5), Inches(5.6), Inches(4.15),
caption="Sagittal T2 MRI of the lumbar spine", star=True,
source="Bailey & Love's Short Practice of Surgery, 28th Ed.")
add_round_rect(s, Inches(7.15), Inches(5.95), Inches(5.6), Inches(1.0), LIGHT_SLATE, line_color=SLATE, radius=0.1)
add_text(s, Inches(7.3), Inches(6.02), Inches(3.0), Inches(0.3), "ARTICLE CORRELATION", size=11.5, bold=True, color=SLATE)
add_text(s, Inches(7.3), Inches(6.3), Inches(5.3), Inches(0.55), "Lumbar Disc Herniation \u2014 Review Article",
size=13, color=DARK, italic=True)
footer(s)
# =========================================================
# SLIDE 7 — WHY COUGHING & SNEEZING
# =========================================================
s = add_slide()
header(s, "PROVOCATIVE MECHANISM", "Why Coughing & Sneezing?", 7)
items = ["Coughing / sneezing", "Increased spinal / intrathecal pressure",
"Aggravation of an irritated nerve root", "Increased Radicular Pain"]
x = Inches(0.55); w = Inches(6.0); h = Inches(0.85); y = Inches(1.55)
cols7 = [CHARCOAL, SLATE, SLATE, RED]
for i, (txt, col) in enumerate(zip(items, cols7)):
flow_box(s, x, y, w, h, txt, fill=col, size=16)
if i < len(items) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.04))
y += h + Inches(0.35)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.7), TAN, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.7), "Supports a Spinal Nerve-Root Origin",
size(16) if False else 16, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "sagittal_mri.jpg", Inches(7.1), Inches(1.6), Inches(5.65), Inches(4.3),
caption="Compressed lumbar nerve root under increased intrathecal pressure",
source="Bailey & Love's Short Practice of Surgery, 28th Ed.")
footer(s)
# =========================================================
# SLIDE 8 — SLR TEST
# =========================================================
s = add_slide()
header(s, "SPECIAL TEST", "Straight Leg Raising Test (SLR)", 8)
steps = ["Patient: Supine", "Knee: Extended", "Hip: Gradually flexed",
"Lumbosacral neural structures\nplaced under tension", "Pain reproduced at 40\u00b0"]
x = Inches(0.55); w = Inches(5.5); h = Inches(0.72); y = Inches(1.45)
for i, txt in enumerate(steps):
col = RED if i == len(steps) - 1 else SLATE
flow_box(s, x, y, w, h, txt, fill=col, size=14.5)
if i < len(steps) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.03), size=Inches(0.24))
y += h + Inches(0.3)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.65), TAN, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.65), "\u2192 POSITIVE SLR", size=19, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "slr_test.jpg", Inches(6.75), Inches(1.6), Inches(6.0), Inches(3.9),
caption="Self-administered straight leg raise (A) and Bragard test (B)", star=True,
source="PMC clinical imaging \u2014 telemedicine rehabilitation series")
footer(s)
# =========================================================
# SLIDE 9 — ANATOMICAL BASIS OF SLR
# =========================================================
s = add_slide()
header(s, "MECHANISM", "Anatomical Basis of SLR", 9)
add_text(s, Inches(0.55), Inches(1.35), Inches(6.0), Inches(0.4), "WHY DOES SLR CAUSE PAIN?",
size=15, color=SLATE, bold=True)
steps9 = ["Hip flexion + knee extension", "Increased neural tension",
"Lumbosacral roots + sciatic nerve\nare tensioned",
"Irritated / compressed nerve root\nbecomes painful", "RADICULAR PAIN"]
x = Inches(0.55); w = Inches(6.0); h = Inches(0.68); y = Inches(1.85)
for i, txt in enumerate(steps9):
col = RED if i == len(steps9) - 1 else SLATE
flow_box(s, x, y, w, h, txt, fill=col, size=13.5)
if i < len(steps9) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.02), size=Inches(0.2))
y += h + Inches(0.26)
add_round_rect(s, Inches(0.55), y + Inches(0.05), w, Inches(0.55), TAN, radius=0.3)
add_text(s, Inches(0.55), y + Inches(0.05), w, Inches(0.55), "40\u00b0 \u2192 Within the clinically significant range",
size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "slr_test.jpg", Inches(7.1), Inches(1.75), Inches(5.65), Inches(3.7),
caption="Neural tensioning of the sciatic nerve during SLR",
source="PMC clinical imaging \u2014 telemedicine rehabilitation series")
footer(s)
# =========================================================
# SLIDE 10 — SPINE vs PIRIFORMIS
# =========================================================
s = add_slide()
header(s, "DIFFERENTIAL DIAGNOSIS", "Spine vs. Piriformis", 10)
headers10 = ["L5 Radiculopathy", "Piriformis Syndrome"]
data10 = [
("Dermatomal sensory loss", "Less specific sensory findings"),
("Myotomal weakness", "Usually no clear root-pattern weakness"),
("Cough / sneeze aggravation", "Less typical"),
("Positive SLR may occur", "Sciatic pain may occur"),
("L5 neurological signs", "Usually absent"),
]
tx = Inches(0.5); ty = Inches(1.45)
tw = [Inches(3.55), Inches(3.55)]
rh = Inches(0.6)
add_round_rect(s, tx, ty, tw[0], rh, CHARCOAL, radius=0.08)
add_text(s, tx, ty, tw[0], rh, headers10[0], size=13.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, tx + tw[0] + Inches(0.06), ty, tw[1], rh, GREY, radius=0.08)
add_text(s, tx + tw[0] + Inches(0.06), ty, tw[1], rh, headers10[1], size=13.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
cy = ty + rh + Inches(0.07)
for i, (a, b) in enumerate(data10):
fill_a = LIGHT_SLATE if i % 2 == 0 else CARD
add_round_rect(s, tx, cy, tw[0], rh, fill_a, line_color=SLATE, radius=0.04)
add_text(s, tx + Inches(0.12), cy, tw[0] - Inches(0.2), rh, a, size=11.8, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, tx + tw[0] + Inches(0.06), cy, tw[1], rh, CARD, line_color=GREY, radius=0.04)
add_text(s, tx + tw[0] + Inches(0.18), cy, tw[1] - Inches(0.22), rh, b, size=11.8, color=DARK, anchor=MSO_ANCHOR.MIDDLE)
cy += rh + Inches(0.07)
add_round_rect(s, tx, cy + Inches(0.05), tw[0] * 2 + Inches(0.06), Inches(0.7), TAN, radius=0.15)
tb = s.shapes.add_textbox(tx, cy + Inches(0.05), tw[0] * 2 + Inches(0.06), Inches(0.7))
tf = tb.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE; tf.word_wrap = True
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r1 = p.add_run(); r1.text = "THIS CASE FAVORS: "; r1.font.bold = True; r1.font.size = Pt(13); r1.font.color.rgb = WHITE
r2 = p.add_run(); r2.text = "SPINAL RADICULOPATHY"; r2.font.bold = True; r2.font.size = Pt(17); r2.font.color.rgb = WHITE
picture_frame(s, ASSETS + "piriformis_sciatic.jpg", Inches(7.95), Inches(1.45), Inches(4.85), Inches(2.0),
caption="Bifid sciatic nerve deep to the piriformis (photo + line drawing)", star=True,
source="PMC clinical imaging \u2014 gluteal anatomy dissection")
picture_frame(s, ASSETS + "sagittal_mri.jpg", Inches(7.95), Inches(3.95), Inches(3.1), Inches(2.35),
caption="L4\u2013L5 disc / nerve root level",
source="Bailey & Love's Short Practice of Surgery, 28th Ed.")
footer(s)
# =========================================================
# SLIDE 11 — COMPLETE ANATOMICAL CHAIN
# =========================================================
s = add_slide()
header(s, "SYNTHESIS", "Putting It All Together", 11)
chain = ["Prolonged sitting / heavy lifting", "L4\u2013L5 disc pathology",
"Posterolateral disc herniation", "L5 nerve-root compression",
"L5 RADICULOPATHY", "Pain + sensory loss + motor weakness"]
x = Inches(0.55); w = Inches(5.85); h = Inches(0.62); y = Inches(1.35)
for i, txt in enumerate(chain):
col = RED if i == len(chain) - 2 else SLATE
if i == len(chain) - 1:
col = CHARCOAL
flow_box(s, x, y, w, h, txt, fill=col, size=14)
if i < len(chain) - 1:
down_arrow(s, x + w/2, y + h + Inches(0.02), size=Inches(0.2))
y += h + Inches(0.24)
picture_frame(s, ASSETS + "mrn_roots.jpg", Inches(7.0), Inches(1.45), Inches(5.6), Inches(4.9),
caption="L4\u2013L5 disc \u2192 L5 root \u2192 sciatic nerve pathway", star=True,
source="MR neurography, labeled \u2014 PMC clinical imaging")
footer(s)
# =========================================================
# SLIDE 12 — FINAL DIAGNOSIS
# =========================================================
s = add_slide()
add_rect(s, 0, 0, SW, SH, RGBColor(0xE4, 0xE5, 0xE6))
add_rect(s, 0, 0, SW, Inches(1.15), CHARCOAL)
add_rect(s, 0, Inches(1.15), SW, Pt(3), TAN)
add_text(s, Inches(0.55), Inches(0.35), Inches(11), Inches(0.6), "FINAL DIAGNOSIS", size=22, color=TAN, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_round_rect(s, Inches(0.55), Inches(1.5), Inches(6.1), Inches(1.15), SLATE, radius=0.15)
add_text(s, Inches(0.55), Inches(1.5), Inches(6.1), Inches(1.15), "RIGHT L5 RADICULOPATHY",
size=24, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(0.55), Inches(2.85), Inches(6.1), Inches(0.35), "Most likely caused by:", size=14, color=GREY, italic=True)
add_round_rect(s, Inches(0.55), Inches(3.25), Inches(6.1), Inches(0.9), TAN, radius=0.15)
add_text(s, Inches(0.55), Inches(3.25), Inches(6.1), Inches(0.9), "L4\u2013L5 POSTEROLATERAL\nDISC HERNIATION",
size=17, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
add_text(s, Inches(0.55), Inches(4.4), Inches(6.1), Inches(0.35), "SUPPORTING FINDINGS", size=14, color=CHARCOAL, bold=True)
checks = ["L5 sensory distribution", "Great-toe extension weakness", "Dorsiflexion weakness",
"Positive SLR at 40\u00b0", "Pain aggravated by coughing/sneezing"]
tb = s.shapes.add_textbox(Inches(0.55), Inches(4.8), Inches(6.1), Inches(2.1))
tf = tb.text_frame; tf.word_wrap = True
for i, c in enumerate(checks):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(6)
r = p.add_run(); r.text = "\u2713 " + c
r.font.size = Pt(14.5); r.font.color.rgb = DARK; r.font.bold = False
add_round_rect(s, Inches(0.55), Inches(6.75), Inches(6.1), Inches(0.6), RED, radius=0.3)
add_text(s, Inches(0.55), Inches(6.75), Inches(6.1), Inches(0.6), "SPINE > PIRIFORMIS",
size=20, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
picture_frame(s, ASSETS + "sagittal_mri.jpg", Inches(7.35), Inches(1.55), Inches(5.4), Inches(4.35),
caption="Final L4\u2013L5 \u2192 L5 nerve root compression",
source="Bailey & Love's Short Practice of Surgery, 28th Ed.")
# =========================================================
# FINAL REFERENCES SLIDE
# =========================================================
s = add_slide()
header(s, "REFERENCES", "Sources", 13, total=13)
refs = [
"1. Bateman EA, Fortin J, Guo S. Musculoskeletal mimics of lumbosacral radiculopathy. Muscle & Nerve. 2024.",
"2. Lumbar Disc Herniation \u2014 Review. Open-access review of clinical presentation, neurological findings and anatomical levels.",
]
tb = s.shapes.add_textbox(Inches(0.7), Inches(1.8), Inches(11.5), Inches(2.0))
tf = tb.text_frame; tf.word_wrap = True
for i, r_ in enumerate(refs):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(18)
rn = p.add_run(); rn.text = r_
rn.font.size = Pt(16); rn.font.color.rgb = DARK
add_round_rect(s, Inches(0.7), Inches(4.1), Inches(11.9), Inches(2.6), LIGHT_SLATE, line_color=SLATE, radius=0.06)
add_text(s, Inches(0.9), Inches(4.25), Inches(11.5), Inches(0.35), "IMAGE SOURCES", size=13, bold=True, color=SLATE)
img_srcs = [
"MR neurography (lumbosacral nerve roots) \u2014 PMC clinical imaging archive",
"Sagittal T2 lumbar spine MRI \u2014 Bailey & Love's Short Practice of Surgery, 28th Ed.",
"L5 dermatome pain-zone map \u2014 Kortelainen et al., reproduced via chirogeek.com",
"Extensor hallucis longus / anterior leg muscles \u2014 TeachMeAnatomy.info",
"Straight leg raise & Bragard test \u2014 PMC clinical imaging archive",
"Bifid sciatic nerve / piriformis dissection \u2014 PMC clinical imaging archive",
"Office worker with low back pain \u2014 stock photograph, Dreamstime",
]
tb2 = s.shapes.add_textbox(Inches(0.9), Inches(4.65), Inches(11.3), Inches(1.9))
tf2 = tb2.text_frame; tf2.word_wrap = True
for i, src in enumerate(img_srcs):
p = tf2.paragraphs[0] if i == 0 else tf2.add_paragraph()
p.space_after = Pt(4)
r = p.add_run(); r.text = "\u2022 " + src
r.font.size = Pt(12); r.font.color.rgb = DARK
footer(s)
prs.save("/tmp/workspace/spine-ppt-v2/output/Pain_Down_The_Leg_Authentic_LightGray.pptx")
print("Saved.")
At least generate the one you were generating
Create a simpler 8-slide version focused on core clinical findings only