Interscalene approach of brachial plexus block for 5 marks

Let me pull Morgan's Interscalene Block section for exam-oriented landmark technique detail, which is commonly asked in exam format (5 marks - likely nursing/anesthesia exam).
Reading File
Reading File

Interscalene Approach of Brachial Plexus Block

Definition

The interscalene block (ISB) is a regional anesthesia technique in which local anesthetic is deposited around the brachial plexus at the level where it passes between the anterior and middle scalene muscles in the neck (the "interscalene groove"), blocking the roots/superior and middle trunks (mainly C5-C7) - Morgan and Mikhail's Clinical Anesthesiology, 7e; Miller's Anesthesia, 10e.

Anatomy/Landmarks

  • The brachial plexus emerges between the anterior and middle scalene muscles at the level of the cricoid cartilage (C6 vertebral level).
  • The external jugular vein often crosses the interscalene groove at this level.
  • On ultrasound, the plexus appears as hypoechoic round structures (the "stoplight" or "traffic light" sign) lying between the two scalene muscles, lateral to the carotid artery/internal jugular vein and deep to the sternocleidomastoid.

Indications

  • Shoulder surgery (e.g., rotator cuff repair, shoulder arthroplasty, dislocation reduction)
  • Proximal humerus/arm surgery
  • Not suitable for forearm/hand surgery because the inferior trunk (C8-T1, ulnar nerve distribution) is frequently spared

Patient Position and Technique

  1. Supine position, head turned 30 degrees or less away from the side to be blocked; arm may be in any position.
  2. Landmark/nerve stimulator technique: palpate the interscalene groove at the level of C6 (cricoid cartilage), between anterior and middle scalene muscles; needle inserted perpendicular to skin seeking a motor response (deltoid/biceps twitch) before injecting local anesthetic.
  3. Ultrasound-guided technique (preferred today): a high-frequency linear probe is placed transversely over the interscalene groove; the plexus trunks are visualized as hypoechoic circles between the scalene muscles; an in-plane needle approach targets the space between the two most superficial nerves (commonly C5-C6) for injection of local anesthetic.
Ultrasound anatomy for interscalene brachial plexus block
Ultrasound image showing the sternocleidomastoid, anterior and middle scalene muscles, and the superior/middle trunks of the brachial plexus in the interscalene groove, with needle trajectory for in-plane technique.

Complications / Side Effects

  • Phrenic nerve paralysis (almost universal with landmark technique, less with low-volume ultrasound-guided technique) → hemidiaphragmatic paresis, dyspnea, hypoxemia (especially risky in obese patients or those with significant pulmonary disease)
  • Horner syndrome (ptosis, miosis, anhidrosis) from spread to the cervical sympathetic chain/stellate ganglion
  • Recurrent laryngeal nerve block → hoarseness
  • Vascular puncture (vertebral artery, carotid artery, jugular vein)
  • Intrathecal/epidural spread, total spinal (rare, due to proximity to nerve root sleeves)
  • Pneumothorax (uncommon at this level, more with supraclavicular approach)
  • Local anesthetic systemic toxicity, nerve injury, infection

Contraindications

  • Local infection at the site
  • Severe coagulopathy
  • Local anesthetic allergy
  • Patient refusal
  • Contralateral phrenic nerve palsy or severe pulmonary disease (relative)
  • Bilateral interscalene block is absolutely contraindicated (risk of bilateral phrenic nerve/diaphragm paralysis)
Sources: Morgan and Mikhail's Clinical Anesthesiology, 7e, p. 1876-1880; Miller's Anesthesia, 10e, p. 6235-6236.

Create a study guide PDF for interscalene block exam prep

Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/interscalene-block-study-guide && ls -la /tmp/workspace/

Writing File

~/interscalene-block-study-guide/build_pdf.py

"""
Build an exam-prep study guide PDF on the Interscalene Approach
to Brachial Plexus Block.
"""

from reportlab.lib.pagesizes import LETTER
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    ListFlowable, ListItem, HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT

OUT = "/tmp/workspace/interscalene-block-study-guide/Interscalene_Block_Study_Guide.pdf"

styles = getSampleStyleSheet()

# ---- custom styles ----
styles.add(ParagraphStyle(
    name="CoverTitle", parent=styles["Title"], fontSize=26, leading=32,
    textColor=colors.HexColor("#0B3D66"), spaceAfter=10, alignment=TA_CENTER
))
styles.add(ParagraphStyle(
    name="CoverSub", parent=styles["Normal"], fontSize=14, leading=18,
    textColor=colors.HexColor("#444444"), alignment=TA_CENTER, spaceAfter=6
))
styles.add(ParagraphStyle(
    name="SectionHeading", parent=styles["Heading1"], fontSize=16,
    textColor=colors.white, backColor=colors.HexColor("#0B3D66"),
    leftIndent=6, spaceBefore=14, spaceAfter=8, borderPadding=(6, 6, 6, 6),
))
styles.add(ParagraphStyle(
    name="SubHeading", parent=styles["Heading2"], fontSize=12.5,
    textColor=colors.HexColor("#0B3D66"), spaceBefore=10, spaceAfter=4,
))
styles.add(ParagraphStyle(
    name="Body", parent=styles["Normal"], fontSize=10.2, leading=14,
    spaceAfter=4, alignment=TA_LEFT
))
styles.add(ParagraphStyle(
    name="BulletBody", parent=styles["Normal"], fontSize=10.2, leading=13.5,
    spaceAfter=2,
))
styles.add(ParagraphStyle(
    name="HighYield", parent=styles["Normal"], fontSize=10.3, leading=14,
    textColor=colors.HexColor("#7A2E00"), backColor=colors.HexColor("#FFF3E0"),
    borderPadding=(6, 6, 6, 6), spaceBefore=6, spaceAfter=6,
))
styles.add(ParagraphStyle(
    name="QA_Q", parent=styles["Normal"], fontSize=10.3, leading=14,
    textColor=colors.HexColor("#0B3D66"), spaceBefore=6,
))
styles.add(ParagraphStyle(
    name="QA_A", parent=styles["Normal"], fontSize=10.2, leading=14,
    leftIndent=10, spaceAfter=4,
))
styles.add(ParagraphStyle(
    name="Footer", parent=styles["Normal"], fontSize=8, textColor=colors.grey,
    alignment=TA_CENTER
))
styles.add(ParagraphStyle(
    name="SourceNote", parent=styles["Normal"], fontSize=8.3, leading=11,
    textColor=colors.HexColor("#666666"), spaceBefore=2, spaceAfter=10,
    fontName="Helvetica-Oblique"
))

TABLE_HDR_BG = colors.HexColor("#0B3D66")
TABLE_ALT_BG = colors.HexColor("#EEF3F8")


def section_title(text):
    return Paragraph(text, styles["SectionHeading"])


def bullets(items, style="BulletBody", bullet_char="•"):
    return ListFlowable(
        [ListItem(Paragraph(i, styles[style]), leftIndent=12, spaceAfter=3) for i in items],
        bulletType="bullet", bulletFontSize=8, start=bullet_char,
    )


def styled_table(data, col_widths=None, header=True):
    t = Table(data, colWidths=col_widths, repeatRows=1 if header else 0)
    style_cmds = [
        ("FONTNAME", (0, 0), (-1, -1), "Helvetica"),
        ("FONTSIZE", (0, 0), (-1, -1), 9.3),
        ("VALIGN", (0, 0), (-1, -1), "TOP"),
        ("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#B9C6D3")),
        ("LEFTPADDING", (0, 0), (-1, -1), 6),
        ("RIGHTPADDING", (0, 0), (-1, -1), 6),
        ("TOPPADDING", (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, TABLE_ALT_BG]),
    ]
    if header:
        style_cmds += [
            ("BACKGROUND", (0, 0), (-1, 0), TABLE_HDR_BG),
            ("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
            ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
        ]
    t.setStyle(TableStyle(style_cmds))
    return t


def P(text, style="Body"):
    return Paragraph(text, styles[style])


story = []

# ============ COVER PAGE ============
story.append(Spacer(1, 1.6 * inch))
story.append(P("Interscalene Approach to<br/>Brachial Plexus Block", "CoverTitle"))
story.append(Spacer(1, 0.15 * inch))
story.append(P("Exam Preparation Study Guide", "CoverSub"))
story.append(Spacer(1, 0.4 * inch))
story.append(HRFlowable(width="60%", thickness=1.2, color=colors.HexColor("#0B3D66"), hAlign="CENTER"))
story.append(Spacer(1, 0.4 * inch))
story.append(P(
    "Covers: anatomy &amp; landmarks, indications, contraindications, "
    "landmark and ultrasound-guided technique, complications, and rapid-review "
    "Q&amp;A - compiled from Morgan &amp; Mikhail's Clinical Anesthesiology (7e) "
    "and Miller's Anesthesia (10e).", "CoverSub"
))
story.append(Spacer(1, 2.6 * inch))
story.append(P("For educational / exam-review purposes only. Not a substitute for clinical training.", "Footer"))
story.append(PageBreak())

# ============ 1. OVERVIEW / DEFINITION ============
story.append(section_title("1. Definition"))
story.append(P(
    "The <b>interscalene block (ISB)</b> is a regional anesthesia technique in which local "
    "anesthetic is deposited around the brachial plexus at the point where it passes between "
    "the <b>anterior and middle scalene muscles</b> in the neck (the \"interscalene groove\"). "
    "It anesthetizes the <b>roots / superior and middle trunks</b>, predominantly <b>C5-C7</b>, "
    "while the inferior trunk (C8-T1, ulnar distribution) is frequently spared."
))
story.append(P(
    "Source: Morgan &amp; Mikhail's Clinical Anesthesiology, 7e, p. 1876; Miller's Anesthesia, "
    "10e, p. 6235-6236.", "SourceNote"
))

# ============ 2. ANATOMY / LANDMARKS ============
story.append(section_title("2. Anatomy &amp; Landmarks"))
story.append(bullets([
    "Brachial plexus emerges between the <b>anterior and middle scalene muscles</b> at the "
    "level of the <b>cricoid cartilage (C6 vertebral level)</b>.",
    "The <b>external jugular vein</b> often crosses the interscalene groove at this level - a "
    "useful surface landmark.",
    "Patient position for palpation: supine, head rotated <b>&le;30&deg;</b> away from the side "
    "to be blocked; asking the patient to lift/turn the head against resistance helps outline "
    "the scalene muscles.",
    "On ultrasound: plexus trunks appear as <b>hypoechoic round structures</b> lying between "
    "the two scalene muscles - the classic <b>\"stoplight\" / \"traffic light\" sign</b> - "
    "lateral to the carotid artery / internal jugular vein and deep to the sternocleidomastoid.",
    "The three circles seen on ultrasound most often correspond to C5, C6, C7 roots (or C5 with "
    "two C6 rootlets); tracing proximally is not required for the block but can confirm identity.",
]))

story.append(Spacer(1, 4))
story.append(P("<b>High-yield image cue:</b> memorize the ultrasound \"traffic light\" appearance "
               "of the plexus between anterior and middle scalene muscles - this is a favorite "
               "exam image-identification item.", "HighYield"))

# ============ 3. INDICATIONS ============
story.append(section_title("3. Indications"))
story.append(bullets([
    "Shoulder surgery (rotator cuff repair, shoulder arthroplasty, dislocation reduction)",
    "Proximal humerus / upper arm surgery",
    "Postoperative analgesia after shoulder surgery (often placed as a continuous catheter)",
]))
story.append(P(
    "<b>Not appropriate</b> for surgery at or distal to the elbow, since the inferior trunk "
    "(C8-T1 / ulnar nerve territory) is usually spared. For complete shoulder anesthesia, the "
    "<b>supraclavicular nerve (C3-C4)</b> and <b>intercostobrachial nerve (T2)</b> may need "
    "separate supplementation (e.g., cervical plexus block)."
))

# ============ 4. CONTRAINDICATIONS ============
story.append(section_title("4. Contraindications"))
contra_data = [
    ["Absolute", "Relative / Caution"],
    ["Bilateral interscalene block (risk of bilateral phrenic\nnerve/diaphragm paralysis)",
     "Severe pulmonary disease (e.g., severe COPD)"],
    ["Patient refusal", "Contralateral phrenic nerve palsy"],
    ["Local anesthetic allergy", "Contralateral recurrent laryngeal nerve palsy /\nvocal cord paralysis"],
    ["Local infection at injection site", "Obesity (higher risk from hemidiaphragmatic paresis)"],
    ["Severe coagulopathy", "Pre-existing neurological deficit in the limb"],
]
story.append(styled_table(contra_data, col_widths=[2.6 * inch, 2.9 * inch]))

# ============ 5. TECHNIQUE ============
story.append(PageBreak())
story.append(section_title("5. Technique"))

story.append(P("<b>Patient positioning</b>", "SubHeading"))
story.append(bullets([
    "Supine, head turned 30&deg; or less away from the side to be blocked.",
    "Arm may be positioned in any comfortable manner.",
]))

story.append(P("<b>A. Landmark / Peripheral Nerve Stimulator Technique</b>", "SubHeading"))
story.append(bullets([
    "Palpate the interscalene groove between the anterior and middle scalene muscles at the "
    "level of C6 (cricoid cartilage).",
    "Insert an insulated stimulating needle perpendicular (slightly caudad) to the skin, seeking "
    "a motor response (deltoid or biceps twitch) at a low current before injecting.",
    "Inject local anesthetic once an appropriate motor response is confirmed at low stimulation "
    "threshold (historically ~0.2-0.5 mA).",
]))

story.append(P("<b>B. Ultrasound-Guided Technique (preferred/current standard)</b>", "SubHeading"))
story.append(bullets([
    "Place a high-frequency linear transducer transversely over the interscalene groove at the "
    "level of C6, after first identifying the plexus in the supraclavicular fossa and tracing it "
    "cephalad (or scanning directly at the interscalene level).",
    "Identify the sternocleidomastoid superficially, and the anterior/middle scalene muscles with "
    "the plexus trunks between them (\"stoplight\" sign).",
    "Use an <b>in-plane needle approach</b>, typically lateral-to-medial, targeting the tissue "
    "plane between the two most superficial nerves (commonly C5-C6).",
    "Confirm needle tip position with hydro-dissection / local anesthetic spread around (not "
    "into) the nerve roots before full injection.",
    "A nerve stimulator can be used concurrently with ultrasound to confirm targeted structures.",
]))

story.append(P(
    "Source: Morgan &amp; Mikhail's Clinical Anesthesiology, 7e, p. 1877-1880; Miller's "
    "Anesthesia, 10e, p. 6236.", "SourceNote"
))

# ============ 6. COMPLICATIONS ============
story.append(section_title("6. Complications / Side Effects"))
comp_data = [
    ["Complication", "Mechanism / Notes"],
    ["Hemidiaphragmatic paresis (phrenic\nnerve block)", "Near-universal with landmark technique; less "
     "frequent with low-volume US-guided blocks. Risk of dyspnea, hypercapnia, hypoxemia - caution in "
     "obesity or pulmonary disease."],
    ["Horner syndrome", "Ptosis, miosis, anhidrosis from spread to the cervical sympathetic "
     "chain / stellate ganglion."],
    ["Hoarseness", "Recurrent laryngeal nerve block; caution if contralateral vocal cord palsy exists."],
    ["Vascular puncture", "Vertebral artery, carotid artery, or jugular vein injury."],
    ["Total spinal / epidural spread", "Rare; due to proximity of nerve root dural sleeves."],
    ["Pneumothorax", "Uncommon at the interscalene level (more typical of supraclavicular block)."],
    ["LAST (local anesthetic systemic toxicity)", "From intravascular injection or excessive dose."],
    ["Nerve injury / infection", "As with any peripheral nerve block."],
]
story.append(styled_table(comp_data, col_widths=[2.1 * inch, 3.9 * inch]))

story.append(Spacer(1, 6))
story.append(P(
    "<b>Exam tip:</b> If asked \"what almost always happens with an interscalene block?\" - "
    "the answer is <b>ipsilateral phrenic nerve block / hemidiaphragmatic paresis</b>.",
    "HighYield"
))

# ============ 7. QUICK COMPARISON TABLE ============
story.append(PageBreak())
story.append(section_title("7. Brachial Plexus Block Approaches at a Glance"))
compare_data = [
    ["Approach", "Target Level", "Best For"],
    ["Interscalene", "Roots / superior &amp; middle trunks (C5-C7)", "Shoulder, proximal humerus"],
    ["Supraclavicular", "Trunks / divisions", "Surgery at or distal to elbow (whole arm)"],
    ["Infraclavicular", "Cords", "Elbow, forearm, hand"],
    ["Axillary", "Terminal (peripheral) nerves", "Forearm, hand"],
]
story.append(styled_table(compare_data, col_widths=[1.6 * inch, 2.4 * inch, 2.1 * inch]))
story.append(Spacer(1, 8))
story.append(P(
    "Blocks <b>above the clavicle</b> (interscalene, supraclavicular) mainly target ventral rami, "
    "trunks, and divisions; blocks <b>below the clavicle</b> (infraclavicular, axillary) target "
    "cords and terminal nerves - Miller's Anesthesia, 10e, p. 6235."
))

# ============ 8. RAPID-REVIEW Q&A ============
story.append(section_title("8. Rapid-Review Q&amp;A"))

qa_pairs = [
    ("At what vertebral level does the brachial plexus lie between the scalene muscles for an "
     "interscalene block?",
     "C6, the level of the cricoid cartilage."),
    ("Which nerve roots are most densely blocked by the interscalene approach?",
     "C5-C7 (superior and middle trunks); the inferior trunk (C8-T1, ulnar nerve) is often spared."),
    ("Why is the interscalene block unsuitable for hand surgery?",
     "Because the C8-T1 contribution (ulnar nerve) is frequently spared, giving incomplete distal "
     "anesthesia."),
    ("What is the classic ultrasound appearance of the brachial plexus at the interscalene level?",
     "The \"stoplight\" or \"traffic light\" sign - three hypoechoic round structures between the "
     "anterior and middle scalene muscles."),
    ("What almost always occurs after an interscalene block, and why does it matter?",
     "Ipsilateral phrenic nerve block causing hemidiaphragmatic paresis; it matters because it can "
     "cause dyspnea/hypoxemia, especially in obese patients or those with severe pulmonary disease."),
    ("What triad characterizes Horner syndrome after an interscalene block?",
     "Ptosis, miosis, and anhidrosis (from block of the cervical sympathetic chain/stellate ganglion)."),
    ("Why is bilateral interscalene block absolutely contraindicated?",
     "It risks bilateral phrenic nerve block and bilateral diaphragmatic paralysis, causing severe "
     "respiratory compromise."),
    ("Which additional nerves must be blocked separately for complete surgical anesthesia of the "
     "entire shoulder?",
     "The supraclavicular nerve (C3-C4, cutaneous) and the intercostobrachial nerve (T2)."),
    ("What surface landmark often crosses the interscalene groove at the C6 level?",
     "The external jugular vein."),
    ("What needle approach is typically used under ultrasound guidance, and what is the usual "
     "target?",
     "An in-plane, lateral-to-medial approach targeting the space between the two most superficial "
     "nerve roots (commonly C5-C6)."),
]

for q, a in qa_pairs:
    block = [P(f"Q: {q}", "QA_Q"), P(f"A: {a}", "QA_A")]
    story.append(KeepTogether(block))

story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#B9C6D3")))
story.append(Spacer(1, 6))
story.append(P(
    "References: Morgan &amp; Mikhail's Clinical Anesthesiology, 7e (McGraw Hill); Miller's "
    "Anesthesia, 2-Volume Set, 10e (Elsevier).", "SourceNote"
))

# ---- footer with page numbers ----
def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(colors.grey)
    canvas.drawCentredString(LETTER[0] / 2, 0.4 * inch, f"Page {doc.page}")
    canvas.drawString(0.6 * inch, 0.4 * inch, "Interscalene Block - Study Guide")
    canvas.restoreState()


doc = SimpleDocTemplate(
    OUT, pagesize=LETTER,
    leftMargin=0.7 * inch, rightMargin=0.7 * inch,
    topMargin=0.6 * inch, bottomMargin=0.7 * inch,
    title="Interscalene Block Study Guide", author="Orris Study Guides"
)
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF created at", OUT)
Running Command

cd /tmp/workspace/interscalene-block-study-guide && python3 build_pdf.py

Running Command

cd /tmp/workspace/interscalene-block-study-guide && python3 -c " from pypdf import PdfReader r = PdfReader('Interscalene_Block_Study_Guide.pdf') print('pages:', len(r.pages)) print('title:', r.metadata.title) " && ls -la

5-page PDF generated successfully. Here it is:

Interscalene Block Study Guide

PDF Document · PDF

Contents:
  1. Definition - what the ISB targets anatomically
  2. Anatomy & Landmarks - scalene groove, C6/cricoid level, ultrasound "stoplight" sign
  3. Indications - shoulder/proximal humerus surgery
  4. Contraindications - absolute vs. relative, in table form
  5. Technique - landmark/nerve-stimulator method and ultrasound-guided method, step by step
  6. Complications - phrenic nerve block, Horner syndrome, hoarseness, vascular puncture, etc. with mechanisms
  7. Comparison table - interscalene vs. supraclavicular vs. infraclavicular vs. axillary approaches
  8. Rapid-review Q&A - 10 exam-style flashcard questions covering the highest-yield facts (phrenic nerve involvement, Horner triad, C6 level, ulnar sparing, etc.)
It's sourced from Morgan and Mikhail's Clinical Anesthesiology (7e) and Miller's Anesthesia (10e), with high-yield callout boxes flagging the facts most likely to appear on exams (e.g., near-universal phrenic nerve block, bilateral block being an absolute contraindication).

Please create the same pdf elaborating different approaches of brachial plexus block

Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Searching Images

supraclavicular brachial plexus block ultrasound subclavian artery first rib

Two-panel diagnostic ultrasound image demonstrating an ultrasound-guided supraclavicular brachial plexus nerve block. The top panel shows the raw sonogram, while the bottom panel includes labels identifying key anatomical landmarks and the procedural needle. In a medial-to-lateral orientation, the image displays the hyperechoic lung pleural line, the anechoic subclavian artery, and the hyperechoic first rib. The brachial plexus is visualized as a cluster of hypoechoic 'honeycomb' structures located superior and lateral to the subclavian artery. A bright, hyperechoic needle is depicted entering from a lateral-to-medial trajectory (in-plane technique), with the tip advancing toward the brachial plexus sheath. This image illustrates the regional anesthesia approach to the upper extremity, highlighting the importance of identifying the 'corner pocket' between the artery and the first rib while avoiding the underlying pleura to prevent pneumothorax. A depth scale on the right indicates the target structures are approximately 1-2 cm from the skin surface.

Two-panel diagnostic ultrasound image demonstrating an ultrasound-guided supraclavicular brachial plexus nerve block. The top panel shows the raw sonogram, while the bottom panel includes labels identifying key anatomical landmarks and the procedural needle. In a medial-to-lateral orientation, the image displays the hyperechoic lung pleural line, the anechoic subclavian artery, and the hyperechoic first rib. The brachial plexus is visualized as a cluster of hypoechoic 'honeycomb' structures located superior and lateral to the subclavian artery. A bright, hyperechoic needle is depicted entering from a lateral-to-medial trajectory (in-plane technique), with the tip advancing toward the brachial plexus sheath. This image illustrates the regional anesthesia approach to the upper extremity, highlighting the importance of identifying the 'corner pocket' between the artery and the first rib while avoiding the underlying pleura to prevent pneumothorax. A depth scale on the right indicates the target structures are approximately 1-2 cm from the skin surface.

This diagnostic ultrasound image comparison (panels A and B) illustrates a supraclavicular brachial plexus block (SC-BPB) procedure. In Panel A (pre-injection), the cross-sectional anatomy of the supraclavicular fossa is shown, identifying the subclavian artery as a round, anechoic (hypoechoic) structure positioned superior to the first rib. The trunks and divisions of the brachial plexus are visible as a cluster of hypoechoic, honeycomb-like structures lateral to the artery. A hyperechoic linear needle is visualized approaching the nerve cluster. Key landmarks include the hyperechoic line of the first rib with posterior acoustic shadowing and the bright hyperechoic line of the pleura located deeper and medially. In Panel B (post-injection), the same anatomical region is shown after the administration of anesthesia drugs. A significant accumulation of hypoechoic fluid (anesthetic) is seen surrounding and hydro-dissecting the brachial plexus trunks, which confirms successful drug distribution around the target neural structures. This visual comparison is used for teaching regional anesthesia techniques, specifically ultrasound-guided nerve localization and monitoring of local anesthetic spread.

This diagnostic ultrasound image comparison (panels A and B) illustrates a supraclavicular brachial plexus block (SC-BPB) procedure. In Panel A (pre-injection), the cross-sectional anatomy of the supraclavicular fossa is shown, identifying the subclavian artery as a round, anechoic (hypoechoic) structure positioned superior to the first rib. The trunks and divisions of the brachial plexus are visible as a cluster of hypoechoic, honeycomb-like structures lateral to the artery. A hyperechoic linear needle is visualized approaching the nerve cluster. Key landmarks include the hyperechoic line of the first rib with posterior acoustic shadowing and the bright hyperechoic line of the pleura located deeper and medially. In Panel B (post-injection), the same anatomical region is shown after the administration of anesthesia drugs. A significant accumulation of hypoechoic fluid (anesthetic) is seen surrounding and hydro-dissecting the brachial plexus trunks, which confirms successful drug distribution around the target neural structures. This visual comparison is used for teaching regional anesthesia techniques, specifically ultrasound-guided nerve localization and monitoring of local anesthetic spread.

This set of four ultrasound images (A-D) demonstrates the supraclavicular approach for a brachial plexus block using an intertruncal technique. Panels A and B display the short-axis baseline anatomy in the supraclavicular fossa. Key landmarks include the subclavian artery (SA), first rib (R1) with pleural line (Pl), and the anterior scalene muscle (ASM). The brachial plexus is visualized as three distinct neural clusters representing the upper (containing A/P divisions and suprascapular nerve SSn), middle (M), and lower (L) trunks, positioned lateral to the SA. Panel C illustrates a double-injection (DI) technique, where needle trajectories (white dotted arrows) target the intertruncal planes (yellow dashed lines) between the trunks to facilitate local anesthetic spread. Panel D illustrates a triple-injection (TI) technique, where the needle is oriented sequentially toward the epineurium of each individual trunk (lower, middle, then upper). The images serve as an educational guide for regional anesthesia, highlighting needle-target relationships for optimizing nerve block efficacy.

This set of four ultrasound images (A-D) demonstrates the supraclavicular approach for a brachial plexus block using an intertruncal technique. Panels A and B display the short-axis baseline anatomy in the supraclavicular fossa. Key landmarks include the subclavian artery (SA), first rib (R1) with pleural line (Pl), and the anterior scalene muscle (ASM). The brachial plexus is visualized as three distinct neural clusters representing the upper (containing A/P divisions and suprascapular nerve SSn), middle (M), and lower (L) trunks, positioned lateral to the SA. Panel C illustrates a double-injection (DI) technique, where needle trajectories (white dotted arrows) target the intertruncal planes (yellow dashed lines) between the trunks to facilitate local anesthetic spread. Panel D illustrates a triple-injection (TI) technique, where the needle is oriented sequentially toward the epineurium of each individual trunk (lower, middle, then upper). The images serve as an educational guide for regional anesthesia, highlighting needle-target relationships for optimizing nerve block efficacy.

Searching Images

infraclavicular brachial plexus block ultrasound axillary artery cords

Two-panel diagnostic ultrasound image demonstrating a posterior parasagittal in-plane approach for an infraclavicular brachial plexus block. Panel A shows the baseline anatomy including the skin, pectoralis muscles, and the hypoechoic circular axillary artery (AA). The clavicle is visible cranially as a dense bony structure, and the lung is located in the inferior/caudal field. A hyperechoic block needle is visualized in a horizontal trajectory advancing toward the posterior aspect of the axillary artery. Panel B illustrates the local anesthetic (LA) injection. The needle tip is positioned posterolateral to the axillary artery, where the deposition of anesthetic creates a 'double bubble sign'—characterized by two adjacent hypoechoic fluid collections. This sign confirms appropriate circumferential spread around the brachial plexus cords within the infraclavicular space. The orientation is labeled with cranial, caudal, and posterior markers to guide clinical application in regional anesthesia.

Two-panel diagnostic ultrasound image demonstrating a posterior parasagittal in-plane approach for an infraclavicular brachial plexus block. Panel A shows the baseline anatomy including the skin, pectoralis muscles, and the hypoechoic circular axillary artery (AA). The clavicle is visible cranially as a dense bony structure, and the lung is located in the inferior/caudal field. A hyperechoic block needle is visualized in a horizontal trajectory advancing toward the posterior aspect of the axillary artery. Panel B illustrates the local anesthetic (LA) injection. The needle tip is positioned posterolateral to the axillary artery, where the deposition of anesthetic creates a 'double bubble sign'—characterized by two adjacent hypoechoic fluid collections. This sign confirms appropriate circumferential spread around the brachial plexus cords within the infraclavicular space. The orientation is labeled with cranial, caudal, and posterior markers to guide clinical application in regional anesthesia.

Side-by-side ultrasound images demonstrating the infraclavicular approach to a brachial plexus nerve block. The left image shows the raw sonogram, while the right image includes labels for anatomical structures and the needle. Superficially, the pectoralis major and pectoralis minor muscles are visible as horizontal, moderately echogenic striated layers. Deep to the pectoralis minor, the axillary artery appears as a central, hypoechoic circular structure. Surrounding the artery are the three cords of the brachial plexus: the lateral cord (lateral/superior to the artery), the medial cord (medial to the artery), and the posterior cord (posterior/deep to the artery). A hyperechoic linear structure representing a block needle is shown entering from the lateral aspect, oriented toward the nerve cords. This educational image illustrates the typical 'three-leaf clover' arrangement of the cords around the axillary artery used for regional anesthesia guidance in medical training.

Side-by-side ultrasound images demonstrating the infraclavicular approach to a brachial plexus nerve block. The left image shows the raw sonogram, while the right image includes labels for anatomical structures and the needle. Superficially, the pectoralis major and pectoralis minor muscles are visible as horizontal, moderately echogenic striated layers. Deep to the pectoralis minor, the axillary artery appears as a central, hypoechoic circular structure. Surrounding the artery are the three cords of the brachial plexus: the lateral cord (lateral/superior to the artery), the medial cord (medial to the artery), and the posterior cord (posterior/deep to the artery). A hyperechoic linear structure representing a block needle is shown entering from the lateral aspect, oriented toward the nerve cords. This educational image illustrates the typical 'three-leaf clover' arrangement of the cords around the axillary artery used for regional anesthesia guidance in medical training.

This transverse sonogram depicts an ultrasound-guided costoclavicular brachial plexus block (CCBPB). The diagnostic image shows the anatomical relationships between muscular, vascular, and neural structures in the infraclavicular region. Superficially, the pectoralis major (PM) and subclavius muscles are visible. Centrally, the axillary artery (AA) appears as an anechoic circular structure. Surrounding the artery, the lateral (Lc), medial (Mc), and posterior (Pc) cords of the brachial plexus are identified by their hyperechoic fascicular patterns. Post-injection, anechoic local anesthetic (LA) is seen successfully infiltrating the costoclavicular space, effectively enveloping and hydrodissecting between the neural cords. The serratus anterior (SA) muscle is located posteriorly, while the pleura is visible as a distinct hyperechoic line in the deep field, serving as a critical safety landmark for the procedure. This image illustrates the regional anesthesia technique for providing analgesia or anesthesia to the upper extremity, emphasizing the importance of identifying the three cords clustered lateral to the axillary artery for a targeted block.

This transverse sonogram depicts an ultrasound-guided costoclavicular brachial plexus block (CCBPB). The diagnostic image shows the anatomical relationships between muscular, vascular, and neural structures in the infraclavicular region. Superficially, the pectoralis major (PM) and subclavius muscles are visible. Centrally, the axillary artery (AA) appears as an anechoic circular structure. Surrounding the artery, the lateral (Lc), medial (Mc), and posterior (Pc) cords of the brachial plexus are identified by their hyperechoic fascicular patterns. Post-injection, anechoic local anesthetic (LA) is seen successfully infiltrating the costoclavicular space, effectively enveloping and hydrodissecting between the neural cords. The serratus anterior (SA) muscle is located posteriorly, while the pleura is visible as a distinct hyperechoic line in the deep field, serving as a critical safety landmark for the procedure. This image illustrates the regional anesthesia technique for providing analgesia or anesthesia to the upper extremity, emphasizing the importance of identifying the three cords clustered lateral to the axillary artery for a targeted block.

Searching Images

axillary brachial plexus block ultrasound median ulnar radial musculocutaneous nerve

This clinical diagnostic image is a transverse grayscale ultrasound scan of the axillary region, demonstrating the anatomy for an axillary brachial plexus block. Centrally, the axillary artery (AA) appears as a prominent anechoic (black), circular vascular structure. Surrounding the artery are the terminal branches of the brachial plexus: the median nerve (m) is located superior to the artery, the ulnar nerve (u) is positioned superior and slightly lateral, and the radial nerve (r) is located posterior-inferior to the artery. The musculocutaneous nerve (mu) is visualized separately, lateral to the main neurovascular bundle within the fascial plane of the coracobrachialis muscle. A hyperechoic (bright), linear needle shaft is seen using an in-plane approach, extending from the superficial tissue toward the deeper structures. A pocket of hypoechoic local anesthetic (LA) is visible near the needle tip, indicating active infiltration. Deep landmarks include the hyperechoic cortex of the humerus at the bottom of the frame. This image serves as an educational guide for regional anesthesia, illustrating needle-beam alignment and the spatial relationship of nerves to the axillary artery.

This clinical diagnostic image is a transverse grayscale ultrasound scan of the axillary region, demonstrating the anatomy for an axillary brachial plexus block. Centrally, the axillary artery (AA) appears as a prominent anechoic (black), circular vascular structure. Surrounding the artery are the terminal branches of the brachial plexus: the median nerve (m) is located superior to the artery, the ulnar nerve (u) is positioned superior and slightly lateral, and the radial nerve (r) is located posterior-inferior to the artery. The musculocutaneous nerve (mu) is visualized separately, lateral to the main neurovascular bundle within the fascial plane of the coracobrachialis muscle. A hyperechoic (bright), linear needle shaft is seen using an in-plane approach, extending from the superficial tissue toward the deeper structures. A pocket of hypoechoic local anesthetic (LA) is visible near the needle tip, indicating active infiltration. Deep landmarks include the hyperechoic cortex of the humerus at the bottom of the frame. This image serves as an educational guide for regional anesthesia, illustrating needle-beam alignment and the spatial relationship of nerves to the axillary artery.

This composite diagnostic image features high-resolution ultrasound views of the axillary region, specifically for ultrasound-guided peripheral nerve blocks. Image (a) provides a labeled transverse cross-section identifying the brachial plexus terminal branches. A dotted white triangle is used as a landmark to group the median, ulnar, and radial nerves, which appear as hypoechoic (dark), circular structures. The musculocutaneous nerve is identified separately to the left, situated within or near the coracobrachialis muscle. Anatomical orientation is established by the latissimus dorsi muscle located inferior to the nerve triangle and the humerus at the base of the scan. Image (b) demonstrates the clinical application of these landmarks, showing the distribution of hypoechoic local anesthetic injected circumferentially around the targeted nerves to ensure an effective block. The image serves as an educational guide for regional anesthesia, highlighting the importance of musculofascial landmarks and the visual contrast between nerves and surrounding hyperechoic connective tissue.

This composite diagnostic image features high-resolution ultrasound views of the axillary region, specifically for ultrasound-guided peripheral nerve blocks. Image (a) provides a labeled transverse cross-section identifying the brachial plexus terminal branches. A dotted white triangle is used as a landmark to group the median, ulnar, and radial nerves, which appear as hypoechoic (dark), circular structures. The musculocutaneous nerve is identified separately to the left, situated within or near the coracobrachialis muscle. Anatomical orientation is established by the latissimus dorsi muscle located inferior to the nerve triangle and the humerus at the base of the scan. Image (b) demonstrates the clinical application of these landmarks, showing the distribution of hypoechoic local anesthetic injected circumferentially around the targeted nerves to ensure an effective block. The image serves as an educational guide for regional anesthesia, highlighting the importance of musculofascial landmarks and the visual contrast between nerves and surrounding hyperechoic connective tissue.

Running Command

mkdir -p /tmp/workspace/interscalene-block-study-guide/images && cd /tmp/workspace/interscalene-block-study-guide/images && \ curl -sL -o interscalene.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_09887e05f4d9c0b506c3f8383b8953230052135eb7d60b15ed8bb9c11a94e9b5.jpg" && \ curl -sL -o supraclavicular.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_518822534a735858690e6e52ebc80cfe2243daf1db0ccf81fd0a41351fd3fa53.jpg" && \ curl -sL -o infraclavicular.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_43689cc45baddd5692f54bbc39cd592439ba95820775414c875fa0979db13836.jpg" && \ curl -sL -o axillary.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_3eb9167392a0a7bbd1ff9a12ede68ded2acc829335e9ad9d32df6710e9836527.jpg" && \ ls -la && file *.jpg

All four images downloaded successfully. Now let me build the comprehensive multi-approach PDF.
Writing File

~/interscalene-block-study-guide/build_pdf_all_approaches.py

"""
Build an exam-prep study guide PDF covering ALL major approaches to
the Brachial Plexus Block: Interscalene, Supraclavicular, Infraclavicular,
and Axillary.
"""

from reportlab.lib.pagesizes import LETTER
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    ListFlowable, ListItem, HRFlowable, PageBreak, KeepTogether, Image
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from PIL import Image as PILImage

IMG_DIR = "/tmp/workspace/interscalene-block-study-guide/images"
OUT = "/tmp/workspace/interscalene-block-study-guide/Brachial_Plexus_Block_Approaches_Study_Guide.pdf"

styles = getSampleStyleSheet()

# ---- custom styles ----
styles.add(ParagraphStyle(
    name="CoverTitle", parent=styles["Title"], fontSize=25, leading=30,
    textColor=colors.HexColor("#0B3D66"), spaceAfter=10, alignment=TA_CENTER
))
styles.add(ParagraphStyle(
    name="CoverSub", parent=styles["Normal"], fontSize=13.5, leading=17,
    textColor=colors.HexColor("#444444"), alignment=TA_CENTER, spaceAfter=6
))
styles.add(ParagraphStyle(
    name="SectionHeading", parent=styles["Heading1"], fontSize=16,
    textColor=colors.white, backColor=colors.HexColor("#0B3D66"),
    leftIndent=6, spaceBefore=14, spaceAfter=8, borderPadding=(6, 6, 6, 6),
))
styles.add(ParagraphStyle(
    name="ApproachHeading", parent=styles["Heading1"], fontSize=15,
    textColor=colors.white, backColor=colors.HexColor("#1B6B3A"),
    leftIndent=6, spaceBefore=14, spaceAfter=8, borderPadding=(6, 6, 6, 6),
))
styles.add(ParagraphStyle(
    name="SubHeading", parent=styles["Heading2"], fontSize=12,
    textColor=colors.HexColor("#0B3D66"), spaceBefore=8, spaceAfter=4,
))
styles.add(ParagraphStyle(
    name="Body", parent=styles["Normal"], fontSize=10, leading=13.6,
    spaceAfter=4, alignment=TA_LEFT
))
styles.add(ParagraphStyle(
    name="BulletBody", parent=styles["Normal"], fontSize=10, leading=13.2,
    spaceAfter=2,
))
styles.add(ParagraphStyle(
    name="HighYield", parent=styles["Normal"], fontSize=10, leading=13.6,
    textColor=colors.HexColor("#7A2E00"), backColor=colors.HexColor("#FFF3E0"),
    borderPadding=(6, 6, 6, 6), spaceBefore=6, spaceAfter=6,
))
styles.add(ParagraphStyle(
    name="QA_Q", parent=styles["Normal"], fontSize=10, leading=13.6,
    textColor=colors.HexColor("#0B3D66"), spaceBefore=6,
))
styles.add(ParagraphStyle(
    name="QA_A", parent=styles["Normal"], fontSize=9.8, leading=13.6,
    leftIndent=10, spaceAfter=4,
))
styles.add(ParagraphStyle(
    name="Footer", parent=styles["Normal"], fontSize=8, textColor=colors.grey,
    alignment=TA_CENTER
))
styles.add(ParagraphStyle(
    name="SourceNote", parent=styles["Normal"], fontSize=8.2, leading=11,
    textColor=colors.HexColor("#666666"), spaceBefore=2, spaceAfter=10,
    fontName="Helvetica-Oblique"
))
styles.add(ParagraphStyle(
    name="Caption", parent=styles["Normal"], fontSize=8.3, leading=11,
    textColor=colors.HexColor("#555555"), alignment=TA_CENTER,
    fontName="Helvetica-Oblique", spaceBefore=3, spaceAfter=8,
))

TABLE_HDR_BG = colors.HexColor("#0B3D66")
TABLE_ALT_BG = colors.HexColor("#EEF3F8")
APPROACH_HDR_BG = colors.HexColor("#1B6B3A")
APPROACH_ALT_BG = colors.HexColor("#EAF4EE")


def section_title(text):
    return Paragraph(text, styles["SectionHeading"])


def approach_title(text):
    return Paragraph(text, styles["ApproachHeading"])


def bullets(items, style="BulletBody"):
    return ListFlowable(
        [ListItem(Paragraph(i, styles[style]), leftIndent=12, spaceAfter=3) for i in items],
        bulletType="bullet", bulletFontSize=8, start="•",
    )


def styled_table(data, col_widths=None, header=True, hdr_bg=TABLE_HDR_BG, alt_bg=TABLE_ALT_BG):
    t = Table(data, colWidths=col_widths, repeatRows=1 if header else 0)
    style_cmds = [
        ("FONTNAME", (0, 0), (-1, -1), "Helvetica"),
        ("FONTSIZE", (0, 0), (-1, -1), 9),
        ("VALIGN", (0, 0), (-1, -1), "TOP"),
        ("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#B9C6D3")),
        ("LEFTPADDING", (0, 0), (-1, -1), 6),
        ("RIGHTPADDING", (0, 0), (-1, -1), 6),
        ("TOPPADDING", (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, alt_bg]),
    ]
    if header:
        style_cmds += [
            ("BACKGROUND", (0, 0), (-1, 0), hdr_bg),
            ("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
            ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
        ]
    t.setStyle(TableStyle(style_cmds))
    return t


def P(text, style="Body"):
    return Paragraph(text, styles[style])


def fig(path, caption, max_w=4.6 * inch, max_h=2.6 * inch):
    """Return an Image flowable scaled to fit, plus a caption."""
    with PILImage.open(path) as im:
        w, h = im.size
    ratio = min(max_w / w, max_h / h)
    img = Image(path, width=w * ratio, height=h * ratio)
    return KeepTogether([img, Spacer(1, 2), P(caption, "Caption")])


story = []

# ============ COVER PAGE ============
story.append(Spacer(1, 1.3 * inch))
story.append(P("Approaches to the<br/>Brachial Plexus Block", "CoverTitle"))
story.append(Spacer(1, 0.1 * inch))
story.append(P("Exam Preparation Study Guide", "CoverSub"))
story.append(Spacer(1, 0.3 * inch))
story.append(HRFlowable(width="60%", thickness=1.2, color=colors.HexColor("#0B3D66"), hAlign="CENTER"))
story.append(Spacer(1, 0.3 * inch))
story.append(P(
    "Covers all four classic approaches - <b>Interscalene, Supraclavicular, "
    "Infraclavicular, and Axillary</b> - with anatomy, indications, technique, "
    "complications, comparison tables, and rapid-review Q&amp;A. Compiled from "
    "Morgan &amp; Mikhail's Clinical Anesthesiology (7e) and Miller's Anesthesia (10e).",
    "CoverSub"
))
story.append(Spacer(1, 0.35 * inch))

cover_table_data = [
    ["Approach", "Plexus Level", "Typical Surgical Coverage"],
    ["Interscalene", "Roots / superior &amp; middle\ntrunks (C5-C7)", "Shoulder, proximal humerus"],
    ["Supraclavicular", "Trunks / divisions", "Elbow, forearm, hand\n(\"spinal of the arm\")"],
    ["Infraclavicular", "Cords", "Elbow, forearm, hand"],
    ["Axillary", "Terminal nerves", "Forearm, hand"],
]
story.append(styled_table(cover_table_data, col_widths=[1.6*inch, 2.0*inch, 2.5*inch]))
story.append(Spacer(1, 0.5 * inch))
story.append(P("For educational / exam-review purposes only. Not a substitute for clinical training.", "Footer"))
story.append(PageBreak())

# ============ 0. OVERVIEW ============
story.append(section_title("Overview: One Plexus, Four Windows"))
story.append(P(
    "The brachial plexus (C5-T1) can be blocked at several points along its course from the "
    "neck to the axilla. Moving from proximal to distal, local anesthetic is deposited at the "
    "level of the <b>roots/trunks (interscalene)</b>, <b>trunks/divisions (supraclavicular)</b>, "
    "<b>cords (infraclavicular)</b>, or <b>terminal nerves (axillary)</b>. The chosen approach "
    "is dictated by the surgical site: proximal approaches favor shoulder surgery, distal "
    "approaches favor forearm/hand surgery."
))
story.append(P(
    "<b>General rule:</b> Blocks <b>above the clavicle</b> (interscalene, supraclavicular) "
    "target ventral rami, trunks, and divisions. Blocks <b>below the clavicle</b> "
    "(infraclavicular, axillary) target cords and terminal nerves.", "HighYield"
))
story.append(P("Source: Miller's Anesthesia, 10e, p. 6235.", "SourceNote"))

# ================================================================
# APPROACH 1: INTERSCALENE
# ================================================================
story.append(approach_title("A. Interscalene Block (ISB)"))

story.append(P("<b>Definition &amp; Level</b>", "SubHeading"))
story.append(P(
    "Local anesthetic is deposited between the <b>anterior and middle scalene muscles</b> at "
    "the level of the <b>C6 vertebra (cricoid cartilage)</b>, blocking the roots / superior "
    "and middle trunks (mainly C5-C7). The inferior trunk (C8-T1, ulnar territory) is "
    "frequently spared."
))

story.append(P("<b>Indications</b>", "SubHeading"))
story.append(bullets([
    "Shoulder surgery (rotator cuff repair, arthroplasty, dislocation reduction)",
    "Proximal humerus / upper-arm surgery",
    "Not suitable for elbow/forearm/hand surgery (ulnar sparing)",
]))

story.append(P("<b>Landmarks &amp; Technique</b>", "SubHeading"))
story.append(bullets([
    "Supine, head turned &le;30&deg; away from the block side.",
    "Palpate the interscalene groove at C6; external jugular vein often crosses this level.",
    "Ultrasound: high-frequency linear probe transverse over the groove; plexus trunks appear "
    "as hypoechoic circles between the scalene muscles - the <b>\"stoplight\" sign</b>.",
    "In-plane needle, lateral-to-medial, targeting the space between the two most superficial "
    "roots (commonly C5-C6).",
]))

story.append(fig(f"{IMG_DIR}/interscalene.jpg",
                  "Ultrasound: interscalene groove showing superior/middle trunks (\"traffic light\" sign) "
                  "between anterior and middle scalene muscles."))

story.append(P("<b>Complications</b>", "SubHeading"))
story.append(bullets([
    "<b>Ipsilateral phrenic nerve block / hemidiaphragmatic paresis</b> - near-universal with "
    "landmark technique; caution in obesity or severe pulmonary disease.",
    "Horner syndrome (ptosis, miosis, anhidrosis).",
    "Hoarseness (recurrent laryngeal nerve).",
    "Vertebral/carotid artery puncture, epidural/intrathecal spread (rare).",
]))
story.append(P(
    "<b>Absolute contraindication:</b> Bilateral interscalene block (risk of bilateral "
    "diaphragm paralysis).", "HighYield"
))
story.append(P("Source: Morgan &amp; Mikhail, 7e, p. 1876-1880; Miller's Anesthesia, 10e, p. 6235-6236.", "SourceNote"))

story.append(PageBreak())

# ================================================================
# APPROACH 2: SUPRACLAVICULAR
# ================================================================
story.append(approach_title("B. Supraclavicular Block"))

story.append(P("<b>Definition &amp; Level</b>", "SubHeading"))
story.append(P(
    "Blocks the brachial plexus at the <b>distal trunk / proximal division</b> level, just "
    "superior and lateral to the subclavian artery in the supraclavicular fossa. Nicknamed the "
    "<b>\"spinal of the arm\"</b> for its rapid, dense onset because the plexus is very compact "
    "at this level."
))

story.append(P("<b>Indications</b>", "SubHeading"))
story.append(bullets([
    "Surgery at or distal to the elbow (dense anesthesia of forearm and hand)",
    "Not ideal for shoulder surgery alone - does not reliably block the suprascapular nerve "
    "(needs supplementation)",
]))

story.append(P("<b>Landmarks &amp; Technique</b>", "SubHeading"))
story.append(bullets([
    "Supine, head turned 30&deg; to the contralateral side.",
    "Linear high-frequency probe placed in the supraclavicular fossa, angled toward the thorax.",
    "Subclavian artery identified; plexus appears as a <b>\"cluster of grapes\"</b> - hypoechoic "
    "disks superolateral to the artery.",
    "First rib visualized as a hyperechoic line deep to the artery (acts as a barrier protecting "
    "the pleura); pleura confirmed by lung sliding with respiration.",
    "In-plane needle, lateral-to-medial, targeting the <b>\"corner pocket\"</b> between the "
    "artery and first rib; volumes ~15-30 mL.",
]))

story.append(fig(f"{IMG_DIR}/supraclavicular.jpg",
                  "Ultrasound: supraclavicular view showing subclavian artery, first rib, pleura, "
                  "and the brachial plexus \"honeycomb\" cluster lateral to the artery."))

story.append(P("<b>Complications</b>", "SubHeading"))
story.append(bullets([
    "<b>Pneumothorax</b> (0.5-6%) - the classic risk of this approach; reduced but not "
    "eliminated by ultrasound guidance.",
    "Phrenic nerve palsy (as high as 40-60%) - even more common than with interscalene block.",
    "Horner syndrome, recurrent laryngeal nerve palsy.",
    "Subclavian artery puncture.",
]))
story.append(P(
    "<b>Exam tip:</b> Supraclavicular = highest pneumothorax risk among the four approaches; "
    "avoid in patients who cannot tolerate any respiratory compromise.", "HighYield"
))
story.append(P("Source: Morgan &amp; Mikhail, 7e, p. 1881-1884; Miller's Anesthesia, 10e, p. 6243-6244.", "SourceNote"))

story.append(PageBreak())

# ================================================================
# APPROACH 3: INFRACLAVICULAR
# ================================================================
story.append(approach_title("C. Infraclavicular Block"))

story.append(P("<b>Definition &amp; Level</b>", "SubHeading"))
story.append(P(
    "Blocks the brachial plexus at the level of the <b>cords</b> (lateral, medial, posterior) "
    "surrounding the second part of the axillary artery, deep to pectoralis major and minor."
))

story.append(P("<b>Indications</b>", "SubHeading"))
story.append(bullets([
    "Elbow, forearm, and hand surgery",
    "Preferred site for continuous perineural catheters - stable location, no arm manipulation "
    "needed, superior analgesia compared with supraclavicular or axillary catheters",
]))

story.append(P("<b>Landmarks &amp; Technique</b>", "SubHeading"))
story.append(bullets([
    "Supine; shoulder abducted 90&deg; if possible (externally rotates humeral head, straightens "
    "the neurovascular bundle).",
    "Probe placed parasagittal, ~2 cm medial and 2 cm caudad to the coracoid process "
    "(paracoracoid view).",
    "Axillary artery seen in cross-section; cords appear as hyperechoic bundles: lateral cord "
    "cephalad, medial cord caudad, posterior cord deep/posterior to the artery.",
    "Long (10 cm) needle, target the plane <b>between the axillary artery and posterior cord</b> "
    "- single 30 mL injection there is as effective as targeting each cord individually.",
    "Success confirmed by a <b>\"U-shaped\"</b> spread of local anesthetic deep to the artery.",
]))

story.append(fig(f"{IMG_DIR}/infraclavicular.jpg",
                  "Ultrasound: infraclavicular \"three-leaf clover\" arrangement - lateral, medial, "
                  "and posterior cords around the axillary artery, deep to pectoralis major/minor."))

story.append(P("<b>Complications</b>", "SubHeading"))
story.append(bullets([
    "Vascular puncture, pneumothorax (less common than supraclavicular, but the block is deep "
    "with a steep needle angle and reduced needle-tip visibility).",
    "Avoid or use caution with ipsilateral subclavian vascular catheters or transvenous "
    "pacemakers.",
]))
story.append(P(
    "<b>Exam tip:</b> Infraclavicular gives the best catheter stability/analgesia of all "
    "approaches, but is technically the most difficult (deep block, steep angle).", "HighYield"
))
story.append(P("Source: Morgan &amp; Mikhail, 7e, p. 1885-1889; Miller's Anesthesia, 10e, p. 6244-6249.", "SourceNote"))

story.append(PageBreak())

# ================================================================
# APPROACH 4: AXILLARY
# ================================================================
story.append(approach_title("D. Axillary Block"))

story.append(P("<b>Definition &amp; Level</b>", "SubHeading"))
story.append(P(
    "Blocks the <b>terminal nerves</b> (median, ulnar, radial) around the axillary artery in "
    "the axilla, at the lateral border of pectoralis minor. The musculocutaneous nerve has "
    "usually already branched off and lies separately in/near the coracobrachialis muscle; the "
    "axillary and medial brachial cutaneous nerves are also spared."
))

story.append(P("<b>Indications</b>", "SubHeading"))
story.append(bullets([
    "Surgery of the distal upper arm, elbow, forearm, and hand",
    "Good choice when infraclavicular/supraclavicular access is difficult and shoulder "
    "anesthesia is not required",
]))

story.append(P("<b>Landmarks &amp; Technique</b>", "SubHeading"))
story.append(bullets([
    "Supine, arm abducted 90&deg; (or hand behind head), head turned to the contralateral side.",
    "Palpate the axillary artery pulse as a reference; visualize artery and vein(s) in "
    "cross-section with a high-frequency linear probe.",
    "Nerves must be blocked <b>individually</b> due to fascial septa separating them - "
    "<b>multiple-injection technique</b> (5-10 mL per nerve) is more reliable than a single "
    "peri-arterial injection.",
    "Musculocutaneous nerve targeted separately within/adjacent to coracobrachialis.",
    "Remember to also infiltrate the <b>intercostobrachial nerve</b> (subcutaneous, medial "
    "upper arm) if a tourniquet will be used - it is not part of the brachial plexus (T2).",
]))

story.append(fig(f"{IMG_DIR}/axillary.jpg",
                  "Ultrasound: axillary neurovascular bundle - median, ulnar, and radial nerves "
                  "clustered around the axillary artery; musculocutaneous nerve seen separately."))

story.append(P("<b>Complications</b>", "SubHeading"))
story.append(bullets([
    "Fewest contraindications/complications of the four approaches - no phrenic nerve or "
    "pneumothorax risk.",
    "Highly vascular region: risk of local anesthetic systemic uptake/toxicity from small vein "
    "trauma; hematoma.",
    "Least reliable site for perineural catheters (highest dislodgement/infection risk, "
    "inferior analgesia vs. infraclavicular).",
]))
story.append(P(
    "<b>Exam tip:</b> Axillary block = safest in terms of respiratory complications (no phrenic "
    "nerve involvement, minimal pneumothorax risk), but requires multiple injections for "
    "reliable coverage.", "HighYield"
))
story.append(P("Source: Morgan &amp; Mikhail, 7e, p. 1889-1891; Miller's Anesthesia, 10e, p. 6248-6252.", "SourceNote"))

story.append(PageBreak())

# ============ COMPARISON TABLE ============
story.append(section_title("Master Comparison Table"))
compare_data = [
    ["Feature", "Interscalene", "Supraclavicular", "Infraclavicular", "Axillary"],
    ["Plexus level", "Roots/superior\n&amp; middle trunks", "Trunks/\ndivisions", "Cords", "Terminal\nnerves"],
    ["Best for", "Shoulder,\nproximal humerus", "Elbow, forearm,\nhand", "Elbow, forearm,\nhand", "Forearm,\nhand"],
    ["Onset", "Moderate", "Fast (\"spinal\nof the arm\")", "Slower", "Faster"],
    ["Depth", "Superficial", "Superficial", "Deep", "Shallow"],
    ["Main unique risk", "Phrenic nerve\nblock (~100%)", "Pneumothorax;\nphrenic (40-60%)", "Vascular\npuncture, PTX", "LA systemic\nuptake (vascular)"],
    ["Catheter suitability", "Good", "Fair", "Best", "Poor"],
    ["Tourniquet tolerance", "Good\n(proximal arm)", "Good", "Good", "Fair (needs\nintercostobrachial\nsupplement)"],
    ["Area typically spared", "Inferior trunk\n(C8-T1/ulnar)", "Suprascapular\nnerve (shoulder)", "None (complete\nif done well)", "Musculocutaneous,\naxillary, MBC nerves"],
]
story.append(styled_table(compare_data, col_widths=[1.15*inch, 1.15*inch, 1.15*inch, 1.15*inch, 1.15*inch]))

story.append(Spacer(1, 10))
story.append(P(
    "<b>Memory aid:</b> As you move from the neck to the axilla (interscalene &rarr; "
    "supraclavicular &rarr; infraclavicular &rarr; axillary), coverage shifts from "
    "<b>shoulder to hand</b>, phrenic/pneumothorax risk generally <b>decreases</b>, and the "
    "number of injections needed to reliably cover the whole plexus generally "
    "<b>increases</b> (single compact injection proximally vs. multiple individual nerve "
    "injections distally in the axilla).", "HighYield"
))

# ============ RAPID-REVIEW Q&A ============
story.append(PageBreak())
story.append(section_title("Rapid-Review Q&amp;A - All Approaches"))

qa_pairs = [
    ("Which approach is called the \"spinal of the arm\" and why?",
     "The supraclavicular block - because the plexus is very compact at the trunk/division "
     "level, giving rapid, dense onset similar to spinal anesthesia."),
    ("Which approach carries the highest risk of pneumothorax?",
     "Supraclavicular block (0.5-6% incidence), due to proximity of the first rib and pleura."),
    ("Which approach carries the highest (near-universal) risk of phrenic nerve block?",
     "Interscalene block (with landmark technique); supraclavicular block also has a high rate "
     "(40-60%)."),
    ("Which approach is best avoided for shoulder surgery, and why?",
     "Axillary and infraclavicular blocks - both are performed distal to where the nerves "
     "supplying the shoulder branch off, so shoulder coverage is unreliable. Supraclavicular "
     "also fails to reliably block the suprascapular nerve unless supplemented."),
    ("Which nerve is commonly spared by axillary block, and where is it targeted separately?",
     "The musculocutaneous nerve; it is targeted separately within or adjacent to the "
     "coracobrachialis muscle."),
    ("Why does the axillary block require a multiple-injection technique?",
     "Because fascial septa separate the median, ulnar, and radial nerves around the axillary "
     "artery at this distal level, preventing reliable single-injection spread to all nerves."),
    ("Which approach gives the most reliable and stable perineural catheter placement, and why?",
     "Infraclavicular - the cords are compact around the axillary artery in a location that is "
     "stable with arm movement, unlike supraclavicular (displaces with neck movement) or "
     "axillary (displaces with arm movement, higher infection risk)."),
    ("What ultrasound sign confirms correct spread in an infraclavicular block?",
     "A \"U-shaped\" distribution of local anesthetic deep to (underneath) the axillary artery, "
     "indicating three-cord anesthesia."),
    ("What is the classic ultrasound appearance of the plexus at each level?",
     "Interscalene: \"stoplight/traffic light\" sign (3 round hypoechoic structures between "
     "scalene muscles). Supraclavicular: \"cluster of grapes\" lateral to the subclavian artery. "
     "Infraclavicular: \"three-leaf clover\" of cords around the axillary artery. Axillary: "
     "nerves clustered in a triangle around the axillary artery."),
    ("Which nerve must often be supplemented separately regardless of approach if a tourniquet "
     "is used on the upper arm?",
     "The intercostobrachial nerve (T2) - it is not part of the brachial plexus and supplies "
     "the medial/posterior upper arm skin."),
    ("Rank the four approaches from proximal to distal along the brachial plexus.",
     "Interscalene (roots/trunks) &rarr; Supraclavicular (trunks/divisions) &rarr; "
     "Infraclavicular (cords) &rarr; Axillary (terminal nerves)."),
    ("Which approach has the fewest contraindications and no phrenic/pneumothorax risk?",
     "Axillary block - its main risks relate to the highly vascular axilla (systemic local "
     "anesthetic uptake, hematoma) rather than respiratory complications."),
]

for q, a in qa_pairs:
    block = [P(f"Q: {q}", "QA_Q"), P(f"A: {a}", "QA_A")]
    story.append(KeepTogether(block))

story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#B9C6D3")))
story.append(Spacer(1, 6))
story.append(P(
    "References: Morgan &amp; Mikhail's Clinical Anesthesiology, 7e (McGraw Hill); Miller's "
    "Anesthesia, 2-Volume Set, 10e (Elsevier).", "SourceNote"
))


def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(colors.grey)
    canvas.drawCentredString(LETTER[0] / 2, 0.4 * inch, f"Page {doc.page}")
    canvas.drawString(0.6 * inch, 0.4 * inch, "Brachial Plexus Block Approaches - Study Guide")
    canvas.restoreState()


doc = SimpleDocTemplate(
    OUT, pagesize=LETTER,
    leftMargin=0.7 * inch, rightMargin=0.7 * inch,
    topMargin=0.6 * inch, bottomMargin=0.7 * inch,
    title="Brachial Plexus Block Approaches - Study Guide", author="Orris Study Guides"
)
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF created at", OUT)
Running Command

cd /tmp/workspace/interscalene-block-study-guide && python3 build_pdf_all_approaches.py

Running Command

cd /tmp/workspace/interscalene-block-study-guide && python3 -c " from pypdf import PdfReader r = PdfReader('Brachial_Plexus_Block_Approaches_Study_Guide.pdf') print('pages:', len(r.pages)) " && ls -la

An 8-page PDF covering all four brachial plexus block approaches is ready:

Brachial Plexus Block Approaches Study Guide

PDF Document · PDF

Structure:
  1. Cover page - quick-reference table of all 4 approaches (plexus level + surgical coverage)
  2. Overview - the "proximal to distal" logic of the plexus, above/below clavicle rule
  3. A. Interscalene Block - roots/superior-middle trunks (C5-C7), shoulder surgery, "stoplight sign," phrenic nerve risk, with ultrasound image
  4. B. Supraclavicular Block - trunks/divisions, "spinal of the arm," "cluster of grapes" sign, highest pneumothorax risk, with ultrasound image
  5. C. Infraclavicular Block - cords, "three-leaf clover" sign around axillary artery, best catheter stability, with ultrasound image
  6. D. Axillary Block - terminal nerves, multiple-injection technique, safest respiratory profile, with ultrasound image
  7. Master comparison table - plexus level, best use, onset, depth, unique risks, catheter suitability, spared areas - side by side across all 4
  8. Rapid-review Q&A - 12 high-yield exam questions comparing and contrasting the four approaches
Each approach section includes a real ultrasound image illustrating its characteristic sonoanatomy ("stoplight," "cluster of grapes," "three-leaf clover," axillary nerve triangle), plus highlighted "exam tip" boxes for the facts most likely to be tested. All content is sourced from Morgan and Mikhail's Clinical Anesthesiology (7e) and Miller's Anesthesia (10e), with page citations included in each section.

Whats the drug used

Finding Sources
Finding Sources
Reading File
Finding Sources
Searching PubMed

"brachial plexus block" AND local anesthetic

Local Anesthetics Used for Brachial Plexus Blocks

The specific drug depends on how fast you need onset and how long you want the block to last, but the same core agents are used across all four approaches (interscalene, supraclavicular, infraclavicular, axillary).

Main Agents

DrugOnsetDurationTypical Use
Lidocaine (1.5-2%)FastShort-intermediate (2-4 hrs)Quick surgical procedures
Mepivacaine (1-2%, up to 7 mg/kg)FastSimilar to lidocaineShort-to-moderate cases, faster onset than bupivacaine
Bupivacaine (0.25-0.5%, 2-3 mg/kg)Slower (20-30 min)Long (~10 hrs for anesthesia/analgesia)Surgery needing prolonged postop analgesia
Ropivacaine (0.2-0.5%)IntermediateLong, with less motor block/cardiotoxicity than bupivacaineIncreasingly preferred over bupivacaine, especially for catheters
Levobupivacaine (0.1-0.5%)Similar to bupivacaineLongAlternative to bupivacaine/ropivacaine, favorable safety profile
For continuous catheter infusions (e.g., infraclavicular catheter), low-concentration ropivacaine or levobupivacaine (0.1-0.2%) is preferred - given as a continuous infusion (2-5 mL/hr) or on-demand boluses (2-5 mL), balancing analgesia with minimal motor block - Miller's Anesthesia, 10e, Table 74.6.

Maximum Recommended Doses

AnestheticMax Dose
Bupivacaine2.5 mg/kg
Bupivacaine with epinephrine3.0 mg/kg
Levobupivacaine2.0 mg/kg
Levobupivacaine with epinephrine3.0 mg/kg
Ropivacaine2.0 mg/kg
Ropivacaine with epinephrine3.0 mg/kg
Source: Campbell's Operative Orthopaedics, 15e, Table 69.1 (modified from Bruce BG et al., J AAOS 2012).

Common Adjuvants (added to prolong or improve the block)

  • Epinephrine - acts as a marker for intravascular injection and prolongs block duration
  • Dexamethasone - added to ropivacaine or bupivacaine, significantly prolongs analgesia duration after interscalene block (Barash, Cullen, and Stoelting's Clinical Anesthesia, 9e)
  • Clonidine - occasionally added to prolong analgesia
  • Magnesium sulfate - studied as an adjuvant for supraclavicular block (see recent evidence below)

Practical Selection Logic

  • Short outpatient case → lidocaine or mepivacaine (fast on, fast off)
  • Case needing long postoperative analgesia (e.g., shoulder surgery) → ropivacaine or bupivacaine, often with dexamethasone added
  • Continuous catheter technique → dilute ropivacaine or levobupivacaine (0.1-0.2%)

Recent Evidence (worth noting)

A few recent systematic reviews/meta-analyses may refine current practice - worth checking if you need the latest guidance:
  • Magnesium sulfate as an adjuvant to local anesthetics in supraclavicular block - meta-analysis (PMID: 41109602, 2026)
  • Combining shorter- and longer-acting local anesthetics vs. longer-acting alone for brachial plexus block (PMID: 40987240, 2025)
  • Costoclavicular approach for shoulder surgery - narrative review (PMID: 40755089, 2025)
Want me to add a "Drugs Used" section with this table into the study guide PDF?

Pdf for adductor canal anatomy and adductor canal block

Finding Sources
Finding Sources
Searching Images

adductor canal block ultrasound saphenous nerve femoral artery sartorius muscle

This composite educational graphic details the ultrasound-guided regional anesthesia of the lower limb, specifically comparing the femoral triangle block (FTB) and adductor canal block (ACB). A clinical photograph of a patient's medial thigh demonstrates the surface anatomy and puncture planes relative to the inguinal ligament, sartorius muscle, and adductor longus. Three corresponding transverse ultrasound images (A, B, C) illustrate key cross-sectional anatomy. Image A shows the FTB entry point, identifying the femoral artery (red), femoral vein (light blue), and target nerve area (yellow) situated between the sartorius (green), adductor longus (dark blue), and vastus medialis (white). Image B displays the apex of the femoral triangle, where the sartorius muscle begins to cross over the femoral vessels. Image C identifies the ACB entry point, showing the further medial migration of the sartorius muscle over the vessels. These images are essential for anesthesiologists to distinguish between the proximal femoral triangle and the more distal adductor canal for effective saphenous nerve blockade while minimizing motor weakness.

This composite educational graphic details the ultrasound-guided regional anesthesia of the lower limb, specifically comparing the femoral triangle block (FTB) and adductor canal block (ACB). A clinical photograph of a patient's medial thigh demonstrates the surface anatomy and puncture planes relative to the inguinal ligament, sartorius muscle, and adductor longus. Three corresponding transverse ultrasound images (A, B, C) illustrate key cross-sectional anatomy. Image A shows the FTB entry point, identifying the femoral artery (red), femoral vein (light blue), and target nerve area (yellow) situated between the sartorius (green), adductor longus (dark blue), and vastus medialis (white). Image B displays the apex of the femoral triangle, where the sartorius muscle begins to cross over the femoral vessels. Image C identifies the ACB entry point, showing the further medial migration of the sartorius muscle over the vessels. These images are essential for anesthesiologists to distinguish between the proximal femoral triangle and the more distal adductor canal for effective saphenous nerve blockade while minimizing motor weakness.

A grayscale diagnostic ultrasound image using a linear probe shows the anatomy of the subsartorial space (adductor canal) at the midthigh level. The image demonstrates three primary structures with distinct sonographic features. Superficially, the sartorius muscle is visible as a hypoechoic band with a characteristic striated fibrillar pattern. Deep to the sartorius muscle lies the femoral artery, which appears as a circular, anechoic (black) lumen indicating fluid-filled vascular content. Positioned immediately lateral to the femoral artery is the saphenous nerve, identified as a smaller, hypoechoic rounded structure with defined margins compared to the surrounding hyperechoic connective tissue and adductor musculature. This transverse view is clinically significant for regional anesthesia, specifically the adductor canal block (ACB), as it allows for the precise localization of the saphenous nerve relative to the femoral vasculature for postoperative analgesia in knee and lower extremity surgery.

A grayscale diagnostic ultrasound image using a linear probe shows the anatomy of the subsartorial space (adductor canal) at the midthigh level. The image demonstrates three primary structures with distinct sonographic features. Superficially, the sartorius muscle is visible as a hypoechoic band with a characteristic striated fibrillar pattern. Deep to the sartorius muscle lies the femoral artery, which appears as a circular, anechoic (black) lumen indicating fluid-filled vascular content. Positioned immediately lateral to the femoral artery is the saphenous nerve, identified as a smaller, hypoechoic rounded structure with defined margins compared to the surrounding hyperechoic connective tissue and adductor musculature. This transverse view is clinically significant for regional anesthesia, specifically the adductor canal block (ACB), as it allows for the precise localization of the saphenous nerve relative to the femoral vasculature for postoperative analgesia in knee and lower extremity surgery.

This diagnostic ultrasound image captures a transverse view of the right adductor canal, facilitating a regional anesthesia procedure. The anatomical landmarks are labeled according to their spatial orientation: Anterior, Posterior, Medial, and Lateral. Centrally, the sartorius muscle is visible as a hypoechoic structure with characteristic muscular striations. Deep (posterior) to the sartorius muscle, the femoral artery (FA) appears as an anechoic, pulsatile circular lumen. Positioned laterally to the femoral artery is the saphenous nerve (SN), which presents as a small, hyperechoic honeycombed structure. An orange arrow indicates the in-plane trajectory and tip of a Tuohy needle advancing toward the perineural space near the saphenous nerve for catheter placement. This imaging is characteristic of an adductor canal block, used in orthopedic pain management to provide sensory blockade to the knee and distal lower extremity while sparing motor function of the quadriceps.

This diagnostic ultrasound image captures a transverse view of the right adductor canal, facilitating a regional anesthesia procedure. The anatomical landmarks are labeled according to their spatial orientation: Anterior, Posterior, Medial, and Lateral. Centrally, the sartorius muscle is visible as a hypoechoic structure with characteristic muscular striations. Deep (posterior) to the sartorius muscle, the femoral artery (FA) appears as an anechoic, pulsatile circular lumen. Positioned laterally to the femoral artery is the saphenous nerve (SN), which presents as a small, hyperechoic honeycombed structure. An orange arrow indicates the in-plane trajectory and tip of a Tuohy needle advancing toward the perineural space near the saphenous nerve for catheter placement. This imaging is characteristic of an adductor canal block, used in orthopedic pain management to provide sensory blockade to the knee and distal lower extremity while sparing motor function of the quadriceps.

This composite educational image illustrates ultrasound-guided techniques for the Adductor Canal Block (ACB) at proximal and middle segments. Panels A and B are clinical photographs showing the ultrasound probe and needle orientation relative to the patient's medial thigh. Panels a and b are the corresponding ultrasound scans showing regional anatomy. Panel a (short-axis view) shows the proximal adductor canal, identifying the Sartorius Muscle (SM) superficially, with the Adductor Longus (ALM) and Adductor Magnus (AMM) muscles medially. The Femoral Artery (FA) and Saphenous Nerve (SN) are visible deep to the SM. A red asterisk marks the target endpoint for needle placement in the short axis. Panel b (long-axis view) demonstrates a longitudinal scan of the middle adductor canal, clearly delineating the linear trajectory of the Saphenous Nerve (SN) and the underlying Femoral Vein (FV). The educational focus is on the spatial relationships of neurovascular structures within the adductor canal and the use of dynamic scanning orientations to facilitate precise regional anesthesia.

This composite educational image illustrates ultrasound-guided techniques for the Adductor Canal Block (ACB) at proximal and middle segments. Panels A and B are clinical photographs showing the ultrasound probe and needle orientation relative to the patient's medial thigh. Panels a and b are the corresponding ultrasound scans showing regional anatomy. Panel a (short-axis view) shows the proximal adductor canal, identifying the Sartorius Muscle (SM) superficially, with the Adductor Longus (ALM) and Adductor Magnus (AMM) muscles medially. The Femoral Artery (FA) and Saphenous Nerve (SN) are visible deep to the SM. A red asterisk marks the target endpoint for needle placement in the short axis. Panel b (long-axis view) demonstrates a longitudinal scan of the middle adductor canal, clearly delineating the linear trajectory of the Saphenous Nerve (SN) and the underlying Femoral Vein (FV). The educational focus is on the spatial relationships of neurovascular structures within the adductor canal and the use of dynamic scanning orientations to facilitate precise regional anesthesia.

Searching Images

adductor canal anatomy cross section thigh diagram

Reading File
Reading File
Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/adductor-canal-study-guide/images && cd /tmp/workspace/adductor-canal-study-guide/images && \ curl -sL -o anatomy_diagram.png "https://cdn.orris.care/cdss_images/a01233848cf09177344251e7a18206489ad6ed88f89245845c898f9d03900b9e.png" && \ curl -sL -o ultrasound_basic.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_118d78cf8eeac3e5c69f5ace3ff951b08aa0390e1b044ad5c8a3e6d648a02f36.jpg" && \ curl -sL -o ultrasound_needle.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_46a7d8a784625f52d56fc88a4c650dc61f97a2cef8dd0603abb02165980a9249.jpg" && \ curl -sL -o ultrasound_proximal_middle.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_089a4a6db339053ba66895c3ca2755527eaaa872aa9caa586b91b16322927617.jpg" && \ ls -la && file *

Now let me build the PDF, reusing the same styling framework as before.
Writing File

~/adductor-canal-study-guide/build_pdf.py

"""
Build an exam-prep study guide PDF on Adductor Canal Anatomy and the
Adductor Canal Block (ACB).
"""

from reportlab.lib.pagesizes import LETTER
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    ListFlowable, ListItem, HRFlowable, PageBreak, KeepTogether, Image
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from PIL import Image as PILImage

IMG_DIR = "/tmp/workspace/adductor-canal-study-guide/images"
OUT = "/tmp/workspace/adductor-canal-study-guide/Adductor_Canal_Anatomy_and_Block_Study_Guide.pdf"

styles = getSampleStyleSheet()

styles.add(ParagraphStyle(name="CoverTitle", parent=styles["Title"], fontSize=25, leading=30,
    textColor=colors.HexColor("#7A1F3D"), spaceAfter=10, alignment=TA_CENTER))
styles.add(ParagraphStyle(name="CoverSub", parent=styles["Normal"], fontSize=13.5, leading=17,
    textColor=colors.HexColor("#444444"), alignment=TA_CENTER, spaceAfter=6))
styles.add(ParagraphStyle(name="SectionHeading", parent=styles["Heading1"], fontSize=16,
    textColor=colors.white, backColor=colors.HexColor("#7A1F3D"),
    leftIndent=6, spaceBefore=14, spaceAfter=8, borderPadding=(6, 6, 6, 6)))
styles.add(ParagraphStyle(name="SubHeading", parent=styles["Heading2"], fontSize=12,
    textColor=colors.HexColor("#7A1F3D"), spaceBefore=8, spaceAfter=4))
styles.add(ParagraphStyle(name="Body", parent=styles["Normal"], fontSize=10, leading=13.6,
    spaceAfter=4, alignment=TA_LEFT))
styles.add(ParagraphStyle(name="BulletBody", parent=styles["Normal"], fontSize=10, leading=13.2,
    spaceAfter=2))
styles.add(ParagraphStyle(name="HighYield", parent=styles["Normal"], fontSize=10, leading=13.6,
    textColor=colors.HexColor("#7A2E00"), backColor=colors.HexColor("#FFF3E0"),
    borderPadding=(6, 6, 6, 6), spaceBefore=6, spaceAfter=6))
styles.add(ParagraphStyle(name="QA_Q", parent=styles["Normal"], fontSize=10, leading=13.6,
    textColor=colors.HexColor("#7A1F3D"), spaceBefore=6))
styles.add(ParagraphStyle(name="QA_A", parent=styles["Normal"], fontSize=9.8, leading=13.6,
    leftIndent=10, spaceAfter=4))
styles.add(ParagraphStyle(name="Footer", parent=styles["Normal"], fontSize=8, textColor=colors.grey,
    alignment=TA_CENTER))
styles.add(ParagraphStyle(name="SourceNote", parent=styles["Normal"], fontSize=8.2, leading=11,
    textColor=colors.HexColor("#666666"), spaceBefore=2, spaceAfter=10, fontName="Helvetica-Oblique"))
styles.add(ParagraphStyle(name="Caption", parent=styles["Normal"], fontSize=8.3, leading=11,
    textColor=colors.HexColor("#555555"), alignment=TA_CENTER, fontName="Helvetica-Oblique",
    spaceBefore=3, spaceAfter=8))

TABLE_HDR_BG = colors.HexColor("#7A1F3D")
TABLE_ALT_BG = colors.HexColor("#F7EBEF")


def section_title(text):
    return Paragraph(text, styles["SectionHeading"])


def bullets(items, style="BulletBody"):
    return ListFlowable(
        [ListItem(Paragraph(i, styles[style]), leftIndent=12, spaceAfter=3) for i in items],
        bulletType="bullet", bulletFontSize=8, start="•",
    )


def styled_table(data, col_widths=None, header=True):
    t = Table(data, colWidths=col_widths, repeatRows=1 if header else 0)
    style_cmds = [
        ("FONTNAME", (0, 0), (-1, -1), "Helvetica"),
        ("FONTSIZE", (0, 0), (-1, -1), 9),
        ("VALIGN", (0, 0), (-1, -1), "TOP"),
        ("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#D3B9C4")),
        ("LEFTPADDING", (0, 0), (-1, -1), 6),
        ("RIGHTPADDING", (0, 0), (-1, -1), 6),
        ("TOPPADDING", (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, TABLE_ALT_BG]),
    ]
    if header:
        style_cmds += [
            ("BACKGROUND", (0, 0), (-1, 0), TABLE_HDR_BG),
            ("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
            ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
        ]
    t.setStyle(TableStyle(style_cmds))
    return t


def P(text, style="Body"):
    return Paragraph(text, styles[style])


def fig(path, caption, max_w=4.6 * inch, max_h=3.0 * inch):
    with PILImage.open(path) as im:
        w, h = im.size
    ratio = min(max_w / w, max_h / h)
    img = Image(path, width=w * ratio, height=h * ratio)
    return KeepTogether([img, Spacer(1, 2), P(caption, "Caption")])


story = []

# ============ COVER PAGE ============
story.append(Spacer(1, 1.4 * inch))
story.append(P("Adductor Canal Anatomy<br/>&amp; Adductor Canal Block", "CoverTitle"))
story.append(Spacer(1, 0.1 * inch))
story.append(P("Exam Preparation Study Guide", "CoverSub"))
story.append(Spacer(1, 0.3 * inch))
story.append(HRFlowable(width="60%", thickness=1.2, color=colors.HexColor("#7A1F3D"), hAlign="CENTER"))
story.append(Spacer(1, 0.3 * inch))
story.append(P(
    "Covers surgical anatomy of the adductor canal, indications, ultrasound-guided technique, "
    "complications, and rapid-review Q&amp;A for the adductor canal block (ACB) - a cornerstone "
    "of modern analgesia for knee surgery. Compiled from Morgan &amp; Mikhail's Clinical "
    "Anesthesiology (7e), Miller's Anesthesia (10e), and the THIEME Atlas of Anatomy.",
    "CoverSub"
))
story.append(Spacer(1, 0.4 * inch))
story.append(fig(f"{IMG_DIR}/anatomy_diagram.png",
                  "The saphenous nerve descending through the adductor canal alongside the "
                  "femoral artery and vein, piercing the vastoadductor membrane near the knee.",
                  max_w=3.0*inch, max_h=4.6*inch))
story.append(Spacer(1, 0.2 * inch))
story.append(P("For educational / exam-review purposes only. Not a substitute for clinical training.", "Footer"))
story.append(PageBreak())

# ============ 1. ANATOMY ============
story.append(section_title("1. Adductor Canal Anatomy"))

story.append(P("<b>Definition</b>", "SubHeading"))
story.append(P(
    "The adductor canal (subsartorial canal, Hunter's canal) is an intermuscular tunnel in the "
    "middle third of the medial thigh. It is the anatomic continuation of the femoral triangle "
    "and connects, distally, to the adductor hiatus and popliteal fossa."
))

story.append(P("<b>Boundaries</b>", "SubHeading"))
boundary_data = [
    ["Border", "Structure"],
    ["Medial (roof/anterior floor)", "Sartorius muscle"],
    ["Anterior (roof)", "Vastoadductor membrane (aponeurotic layer)"],
    ["Lateral", "Vastus medialis muscle"],
    ["Posterior (floor)", "Adductor longus (proximally), then adductor magnus (distally)"],
]
story.append(styled_table(boundary_data, col_widths=[2.4 * inch, 3.6 * inch]))

story.append(Spacer(1, 8))
story.append(P("<b>Contents</b>", "SubHeading"))
story.append(bullets([
    "<b>Superficial (femoral) artery</b> - continuation of the femoral artery, exits distally "
    "through the adductor hiatus to become the popliteal artery",
    "<b>Femoral vein</b> - lies posterior/deep to the artery within the canal",
    "<b>Saphenous nerve</b> - terminal sensory branch of the femoral nerve; lies anterolateral "
    "to the artery in the proximal canal",
    "<b>Nerve to vastus medialis</b> - a motor/sensory branch important for anterior knee pain; "
    "often runs in its own fascial sheath, sometimes outside the \"true\" adductor canal",
    "<b>Posterior branch of the obturator nerve</b> - may accompany the vessels distally, "
    "contributing to posterior knee sensation",
    "Descending genicular artery (accompanies the saphenous nerve through the vastoadductor "
    "membrane near the knee)",
]))

story.append(P(
    "<b>Exam tip:</b> Mnemonic for adductor canal contents - <b>\"SAFE\"</b>: "
    "<b>S</b>aphenous nerve, <b>A</b>rtery (femoral), <b>F</b>emoral vein, nerve to vastus "
    "medialis and posterior branch of obturator nerve as <b>E</b>xtras.", "HighYield"
))

story.append(P("<b>Course of the Saphenous Nerve</b>", "SubHeading"))
story.append(P(
    "The saphenous nerve leaves the femoral nerve in the femoral triangle, descends through the "
    "adductor canal alongside the femoral artery (running anterolateral to it), and pierces the "
    "<b>vastoadductor membrane</b> together with the descending genicular artery near the knee "
    "to become subcutaneous. It then supplies sensation to the <b>medial leg, medial ankle, and "
    "medial foot</b>, with infrapatellar branches contributing to knee joint sensation. Unlike "
    "the femoral artery and vein (which continue through the adductor hiatus to the popliteal "
    "fossa), the saphenous nerve does NOT pass through the hiatus - it exits earlier through the "
    "vastoadductor membrane."
))

story.append(fig(f"{IMG_DIR}/ultrasound_basic.jpg",
                  "Ultrasound (subsartorial space, mid-thigh): sartorius muscle superficially, "
                  "femoral artery centrally, and the saphenous nerve lying just lateral to the artery."))

story.append(P(
    "Source: Miller's Anesthesia, 10e, p. 6269-6270; Morgan &amp; Mikhail, 7e, p. 1925-1926; "
    "THIEME Atlas of Anatomy - General Anatomy and Musculoskeletal System, p. 575-576.", "SourceNote"
))

story.append(PageBreak())

# ============ 2. THE "TRUE" ADDUCTOR CANAL DEBATE ============
story.append(section_title("2. Locating the \"True\" Adductor Canal"))
story.append(P(
    "The exact injection point for an ACB is debated because the femoral triangle, adductor "
    "canal, and distal saphenous approaches lie only inches apart along the same neurovascular "
    "bundle."
))
story.append(bullets([
    "The entrance to the <b>true adductor canal</b> is best identified on ultrasound as the "
    "point where the <b>medial border of sartorius converges with the medial border of adductor "
    "longus</b>, producing a visible <b>double contour</b> on the roof of the canal - the "
    "vastoadductor membrane.",
    "Injecting <b>too proximal</b> (still within the femoral triangle) risks a femoral-nerve-like "
    "block with more quadriceps weakness.",
    "Injecting <b>too distal</b> (deep in the true adductor canal) may miss the <b>nerve to "
    "vastus medialis</b>, an important contributor to post-total-knee-arthroplasty (TKA) pain, "
    "since this nerve often exits the canal in its own fascial sheath more proximally.",
    "Many clinicians favor a <b>mid-thigh target</b>, midway between the anterior superior iliac "
    "spine (ASIS) and the patella, injecting local anesthetic lateral to the femoral artery, deep "
    "to sartorius and deep to the vastoadductor membrane, to reliably cover both the saphenous "
    "nerve and the nerve to vastus medialis.",
]))

story.append(fig(f"{IMG_DIR}/ultrasound_proximal_middle.jpg",
                  "Comparison of proximal (short-axis, panel a) and middle (long-axis, panel b) "
                  "adductor canal views: sartorius, adductor longus/magnus, femoral artery, and "
                  "saphenous nerve relationships."))

# ============ 3. INDICATIONS ============
story.append(section_title("3. Indications"))
story.append(bullets([
    "Analgesia after <b>total knee arthroplasty (TKA)</b> - now a standard component of "
    "multimodal/enhanced-recovery protocols",
    "Analgesia for <b>ACL reconstruction</b> and other knee arthroscopic procedures",
    "Analgesia for <b>medial leg and ankle</b> surgery in combination with a sciatic nerve block "
    "(as the more distal \"saphenous nerve block\")",
    "Preferred over femoral nerve block when <b>preserving quadriceps strength</b> for early "
    "ambulation is a priority",
]))
story.append(P(
    "<b>Exam tip:</b> Adductor canal block preserves quadriceps strength far better than femoral "
    "nerve block because it targets the saphenous nerve (purely/predominantly sensory) distal to "
    "where most motor branches to the quadriceps have already departed - facilitating earlier "
    "ambulation after TKA.", "HighYield"
))

story.append(PageBreak())

# ============ 4. TECHNIQUE ============
story.append(section_title("4. Ultrasound-Guided Technique"))

story.append(P("<b>Patient Positioning</b>", "SubHeading"))
story.append(bullets([
    "Supine, with the leg slightly externally rotated and the knee slightly bent to expose the "
    "medial thigh.",
])) 

story.append(P("<b>Probe Placement and Scanning</b>", "SubHeading"))
story.append(bullets([
    "A high-frequency linear transducer is placed transversely on the anteromedial thigh, "
    "typically halfway between the ASIS and the superior pole of the patella (mid-thigh level).",
    "Identify the <b>sartorius muscle</b> superficially/medially, the <b>vastus medialis</b> "
    "laterally, and the thick <b>vastoadductor membrane</b> forming the roof between them.",
    "Deep to sartorius, identify the <b>femoral artery</b> (most medial structure at this level) "
    "and the <b>femoral vein</b> just posterior to it.",
    "The <b>saphenous nerve</b> is seen as a small hyperechoic/honeycombed structure adjacent to "
    "(usually anterolateral to) the femoral artery.",
]))

story.append(P("<b>Needle Technique</b>", "SubHeading"))
story.append(bullets([
    "In-plane approach; needle inserted 2-3 cm lateral to the transducer.",
    "Advance to the triangular space deep to sartorius and anterior/lateral to the femoral "
    "artery (targeting lateral to the artery, deep to the vastoadductor membrane).",
    "Aspirate to rule out intravascular placement.",
    "Inject <b>10-20 mL</b> of local anesthetic (commonly cited range 10-15 mL per Miller's, "
    "15-20 mL per Morgan &amp; Mikhail) - higher volumes risk unwanted quadriceps paresis via "
    "proximal spread.",
    "A continuous catheter can be placed at this level for extended analgesia after major knee "
    "surgery.",
]))

story.append(fig(f"{IMG_DIR}/ultrasound_needle.jpg",
                  "In-plane needle/catheter trajectory (orange arrow) toward the saphenous nerve, "
                  "lateral to the femoral artery, deep to the sartorius muscle."))

story.append(P(
    "Source: Morgan &amp; Mikhail, 7e, p. 1925-1927; Miller's Anesthesia, 10e, p. 6270-6272.", "SourceNote"
))

story.append(PageBreak())

# ============ 5. COMPLICATIONS ============
story.append(section_title("5. Complications / Side Effects"))
comp_data = [
    ["Complication", "Notes"],
    ["Quadriceps weakness (mild)", "Much less than femoral nerve block, but can occur with "
     "higher volumes or proximal spread toward the femoral triangle; still requires fall "
     "precautions."],
    ["Vascular injury / pseudoaneurysm", "Rare; related to needle trauma to the femoral artery."],
    ["Intramuscular injection / myonecrosis", "Rare but reported if local anesthetic is "
     "inadvertently injected into muscle rather than the fascial plane; unexpected thigh weakness "
     "should prompt evaluation."],
    ["Incomplete analgesia (missed nerve to\nvastus medialis)", "If injection is too distal in "
     "the \"true\" canal, the nerve to vastus medialis (important for anterior knee pain after "
     "TKA) may be spared."],
    ["Falls", "Even though ACB is \"quadriceps-sparing,\" patients still need fall-prevention "
     "education and should avoid unsupported ambulation."],
]
story.append(styled_table(comp_data, col_widths=[2.3 * inch, 3.7 * inch]))

story.append(Spacer(1, 8))
story.append(P(
    "<b>Exam tip:</b> ACB is classified as one of the more selective \"muscle-sparing\" "
    "peripheral nerve blocks of the lower limb - but \"muscle-sparing\" does not mean "
    "\"risk-free\"; falls remain a real concern.", "HighYield"
))

# ============ 6. COMPARISON: ACB vs FEMORAL NERVE BLOCK ============
story.append(section_title("6. Adductor Canal Block vs. Femoral Nerve Block"))
compare_data = [
    ["Feature", "Adductor Canal Block", "Femoral Nerve Block"],
    ["Target nerve(s)", "Saphenous nerve (+/- nerve\nto vastus medialis)", "Femoral nerve "
     "(motor + sensory)"],
    ["Level", "Mid-thigh, within\nadductor canal", "Femoral triangle,\nproximal thigh"],
    ["Quadriceps strength", "Largely preserved", "Significantly weakened"],
    ["Analgesic coverage", "Effective for\nanterior/medial knee pain", "Effective, broader "
     "anterior thigh/knee coverage"],
    ["Ambulation after TKA", "Better - earlier\nmobilization", "Limited by weakness"],
    ["Fall risk", "Lower (but not zero)", "Higher"],
]
story.append(styled_table(compare_data, col_widths=[1.7*inch, 2.1*inch, 2.1*inch]))

story.append(Spacer(1, 8))
story.append(P(
    "Source: Miller's Anesthesia, 10e, p. 6269 (ambulation data after TKA); Morgan &amp; "
    "Mikhail, 7e, p. 1925.", "SourceNote"
))

story.append(PageBreak())

# ============ 7. RAPID-REVIEW Q&A ============
story.append(section_title("7. Rapid-Review Q&amp;A"))

qa_pairs = [
    ("What are the four boundaries of the adductor canal?",
     "Sartorius (medial), vastus medialis (lateral), vastoadductor membrane (anterior/roof), "
     "and adductor longus/magnus (posterior/floor)."),
    ("What are the main contents of the adductor canal?",
     "Femoral artery, femoral vein, saphenous nerve, nerve to vastus medialis, and the posterior "
     "branch of the obturator nerve."),
    ("Which two structures exit through the vastoadductor membrane near the knee?",
     "The saphenous nerve and the descending genicular artery."),
    ("Do the femoral artery and vein exit the canal the same way as the saphenous nerve?",
     "No - the femoral vessels continue through the adductor hiatus to become the popliteal "
     "vessels, while the saphenous nerve exits earlier by piercing the vastoadductor membrane."),
    ("Why is the adductor canal block preferred over the femoral nerve block for TKA analgesia?",
     "It targets the predominantly sensory saphenous nerve distal to most motor branches to the "
     "quadriceps, preserving quadriceps strength and allowing earlier ambulation."),
    ("What ultrasound landmark helps identify the true entrance to the adductor canal?",
     "The point where the medial border of sartorius converges with the medial border of "
     "adductor longus, producing a double-contour appearance of the vastoadductor membrane."),
    ("What nerve may be missed if the adductor canal block is placed too distally?",
     "The nerve to vastus medialis, which often exits the canal in its own fascial sheath more "
     "proximally and is an important contributor to anterior knee pain after TKA."),
    ("What volume of local anesthetic is typically used, and what happens with excess volume?",
     "Approximately 10-20 mL; higher volumes risk proximal spread and unwanted quadriceps "
     "paresis."),
    ("What area of the leg does the saphenous nerve supply sensation to?",
     "The medial leg, medial ankle, and medial foot, plus infrapatellar branches to the knee "
     "joint."),
    ("What rare but serious complications have been reported with adductor canal block?",
     "Arterial pseudoaneurysm (from vascular injury) and severe myonecrosis (from inadvertent "
     "intramuscular injection)."),
    ("Is the adductor canal block truly \"risk-free\" for ambulation?",
     "No - although it is muscle-sparing relative to femoral block, patients still need fall "
     "precautions and should avoid unsupported ambulation."),
]

for q, a in qa_pairs:
    block = [P(f"Q: {q}", "QA_Q"), P(f"A: {a}", "QA_A")]
    story.append(KeepTogether(block))

story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#D3B9C4")))
story.append(Spacer(1, 6))
story.append(P(
    "References: Morgan &amp; Mikhail's Clinical Anesthesiology, 7e (McGraw Hill); Miller's "
    "Anesthesia, 2-Volume Set, 10e (Elsevier); THIEME Atlas of Anatomy - General Anatomy and "
    "Musculoskeletal System.", "SourceNote"
))


def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(colors.grey)
    canvas.drawCentredString(LETTER[0] / 2, 0.4 * inch, f"Page {doc.page}")
    canvas.drawString(0.6 * inch, 0.4 * inch, "Adductor Canal Anatomy & Block - Study Guide")
    canvas.restoreState()


doc = SimpleDocTemplate(
    OUT, pagesize=LETTER,
    leftMargin=0.7 * inch, rightMargin=0.7 * inch,
    topMargin=0.6 * inch, bottomMargin=0.7 * inch,
    title="Adductor Canal Anatomy and Block - Study Guide", author="Orris Study Guides"
)
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF created at", OUT)
Running Command

cd /tmp/workspace/adductor-canal-study-guide && python3 build_pdf.py && python3 -c " from pypdf import PdfReader r = PdfReader('Adductor_Canal_Anatomy_and_Block_Study_Guide.pdf') print('pages:', len(r.pages)) "

An 8-page study guide PDF is ready:

Adductor Canal Anatomy and Block Study Guide

PDF Document · PDF

Contents:
  1. Cover page - with an anatomy diagram of the saphenous nerve's course through the adductor canal
  2. Adductor Canal Anatomy - boundaries (sartorius, vastus medialis, vastoadductor membrane, adductor longus/magnus), contents (femoral artery/vein, saphenous nerve, nerve to vastus medialis, posterior branch of obturator nerve), and the course of the saphenous nerve, with an ultrasound image and a "SAFE" mnemonic
  3. Locating the "True" Adductor Canal - the clinical debate over exact injection point, the "double contour" ultrasound sign, and why too-proximal or too-distal injection matters
  4. Indications - TKA analgesia, ACL reconstruction, combination with sciatic block, quadriceps-sparing rationale
  5. Ultrasound-Guided Technique - positioning, probe placement, sonoanatomy, needle approach, injection volumes, with an annotated needle-trajectory image
  6. Complications - quadriceps weakness, vascular injury, myonecrosis, missed nerve to vastus medialis, fall risk
  7. Comparison table - Adductor Canal Block vs. Femoral Nerve Block (quadriceps strength, ambulation, fall risk)
  8. Rapid-review Q&A - 11 high-yield exam questions
All content is sourced from Morgan and Mikhail's Clinical Anesthesiology (7e), Miller's Anesthesia (10e), and the THIEME Atlas of Anatomy, with page citations throughout and real ultrasound/anatomical images embedded for visual review.
attachment
attachment

Exam study guide pdf for these questions

analyse_media
Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Search for recent published guidelines on brachial plexus block complications

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.