Make ppt of medial rotators of shoulder joint origin insertion action with 3 d diagram and explanation
medial rotators shoulder joint muscles anatomy 3D diagram

Anatomical diagram consisting of a 3x3 grid of 3D reconstructions showing specific muscles of the shoulder girdle and their skeletal attachments. Each panel highlights a single muscle in pink/red against a blue-gray skeletal model of the rib cage, clavicle, scapula, and humerus. The nine muscles depicted are: Coracobrachialis, Deltoid, Infraspinatus, Latissimus dorsi, Pectoralis major, Subscapularis, Supraspinatus, Teres major, and Teres minor. The models are based on CT-derived DICOM segmentation to illustrate precise origins and insertions. Key anatomical focuses include the rotator cuff group (supraspinatus, infraspinatus, subscapularis, and teres minor) and its relation to the humeral head and scapular fossa. Larger muscles like the deltoid and pectoralis major are shown in their anterior or lateral orientations, while the posterior view is utilized for the infraspinatus and teres muscles. This visual resource is designed for orthopedic and kinesiology education, emphasizing the spatial relationships and morphology of primary movers and stabilizers of the glenohumeral joint.

This medical illustration consists of four panels (a–d) depicting the musculoskeletal anatomy of the posterior shoulder and back. Panel (a) shows the trapezius (upper, middle, and lower fibers) with arrows indicating lines of action, alongside the serratus anterior originating from the ribs. Panel (b) illustrates the deep extrinsic muscles, specifically the levator scapulae and rhomboids, highlighting their attachment to the medial border of the scapula. Panels (c) and (d) focus on the muscles forming the posterior axillary border, showing the broad latissimus dorsi and the teres major as they insert onto the humerus. The diagram uses an anatomical posterior view to demonstrate muscular relationships with the axial skeleton (vertebrae and ribs) and the appendicular skeleton (scapula and humerus). This visual resource is designed for education on biomechanics and scapular kinematics, illustrating the primary muscles responsible for scapular rotation, elevation, and retraction, as well as movements of the glenohumeral joint.

This clinical photograph and annotated diagram illustrate a custom-designed 3D-printed shoulder joint brace positioned on a patient. The medical device is a semi-rigid orthotic designed for orthopedic rehabilitation, specifically targeting rotator cuff imbalances or postoperative stabilization. The brace features three primary structural components: a horizontal torso strap for trunk stabilization, a diagonal shoulder strap for vertical support, and a distal forearm support section for limb immobilization and positioning. Red lines overlaid on the image delineate a 'Stress model' across the thoracic and upper extremity regions. Specific annotations identify the 'Force zone' at the superior shoulder/neck junction, a 'Restricter' mechanism at the glenohumeral joint to control range of motion, and a 'Stress model' at the lateral chest wall. The device integrates principles of dynamic and static Chinese orthopedic medicine to assist in the recovery of shoulder joint function and muscle torque balance between internal and external rotators.

This 3D anatomical diagram illustrates the musculature of the posterior thigh, specifically focusing on the hamstring group of the left leg. The content is presented in two labeled views. Panel A shows a posterolateral perspective, highlighting the Long Head of the Biceps Femoris as the most superficial lateral muscle, with the Short Head of the Biceps Femoris situated deep and distal to it. Panel B provides a posteromedial perspective, demonstrating the medial hamstring components: the Semitendinosus and the deeper, broader Semimembranosus. The diagrams utilize high-fidelity renderings to show muscle morphology, fiber orientation, and proximal origins near the ischial tuberosity of the pelvis. Key anatomical structures are explicitly labeled with both English and Latin terminology. The image serves as an educational resource for studying lower limb anatomy, specifically the spatial relationships, layers, and compartmentalization of the posterior femoral muscles relevant to sports medicine and physical therapy.

This image displays a 3D computer graphic (3DCG) interface designed for musculoskeletal anatomy education, specifically focusing on the biomechanics of the human shoulder and upper extremity. The central visual is an interactive 3D model showing the rib cage, sternum, clavicle, scapula, and humerus in an anterior-lateral view. The model is integrated into a learning management system interface featuring a 'Movements' menu on the left. This menu lists key kinesiologic actions for the scapula (elevation, depression, retraction, protraction) and the glenohumeral joint (flexion, extension, vertical and horizontal abduction/adduction, and medial/lateral rotation). Functional UI elements include orientation controls (XY, ZY planes), language toggles for English and Japanese terminology, and navigation tools for zooming and rotating the model. The tool serves as an educational resource for medical and physiotherapy students to visualize complex joint interactions and spatial relationships within the pectoral girdle and upper limb.

This diagnostic image displays a series of five three-dimensional (3D) computed tomography (CT) reconstructions (labeled A through E) of the left shoulder girdle, focusing on a medial end clavicle fracture. The views provide a multiplanar perspective of the skeletal anatomy, including the clavicle, scapula, and proximal humerus. Red arrows in each frame highlight the fracture site, which is categorized as an Edinburgh type 1 B1 displaced extra-articular fracture. The imaging demonstrates a complete break at the medial third of the clavicle with significant superior and posterior displacement of the medial fragment relative to the lateral segment. The sternoclavicular joint appears intact, confirming the extra-articular nature of the injury. These 3D reconstructions are critical for preoperative planning in orthopedic surgery to assess the degree of displacement, rule out intra-articular extension, and evaluate the proximity of bone fragments to underlying neurovascular structures such as the subclavian vessels.
subscapularis pectoralis major teres major latissimus dorsi medial internal rotation shoulder

This diagnostic image set consists of four panels (A–D) demonstrating Shear Wave Elastography (SWE) of shoulder internal rotation muscles in a clinical setting, specifically related to Hemiplegic Shoulder Pain (HSP). The imaging modality combines B-mode grayscale ultrasound with color-coded elastography to assess tissue stiffness. The panels depict the pectoralis major (PM) in A, anterior deltoid (AD) in B, teres major (TM) in C, and latissimus dorsi (LD) in D. Each panel features a split-screen view: the top showing a blue rectangular elastic sampling frame overlaid on the muscle, and the bottom showing the corresponding B-mode reference. Within the sampling frames, three circular regions of interest (ROIs) are labeled. To the right of each image, quantitative data boxes (+Q-Box, XQ-Box, AQ-Box) provide mean, minimum, maximum, and standard deviation of stiffness values in kilopascals (kPa), alongside depth and diameter measurements. A vertical color bar indicates the elasticity scale. This diagnostic tool is used to quantify muscle hypertonia and stiffness at rest to evaluate pathological changes in musculoskeletal conditions.

This composite educational resource comprises a clinical photograph and a labeled diagnostic ultrasound image focusing on the musculoskeletal anatomy of the shoulder and upper arm. Image A (Clinical Photograph) demonstrates the procedural positioning required to evaluate the distal tendons of the latissimus dorsi (LD) and teres major (TM). The patient's arm is shown in maximal external rotation with a linear transducer placed transversely over the medial aspect of the proximal humerus. Image B (Transverse Ultrasound) provides high-resolution imaging of the musculoskeletal structures. Key findings include the echogenic, linear fibrillar appearance of the LD tendon (white arrows) and the TM tendon (white arrowheads). The pectoralis major (PM) tendon is identified more superficially (black asterisks). Numbered annotations identify surrounding musculature: (1) biceps muscle, (2) coracobrachialis muscle, (3) deltoid muscle, and (4) LD muscle belly. The LD muscle belly appears markedly hypoechoic, representing a characteristic anisotropic artifact common in musculoskeletal US when the sound beam is not perpendicular to the muscle fibers. This visualization is essential for assessing tendon integrity in high-level athletes.

Clinical photograph demonstrating a shoulder internal rotation strength assessment using a Hand-Held Dynamometer (HHD) in a physical therapy or sports medicine setting. The subject is positioned prone on a padded examination table with the head turned away from the testing side. The humerus of the tested arm is abducted to 90 degrees and supported by the edge of the table, while the elbow is flexed at 90 degrees, allowing the forearm to hang vertically. An examiner is shown kneeling beside the patient, stabilizing the subject's scapula/humerus with one hand to prevent compensatory movements, while applying the HHD to the anterior surface of the distal forearm, proximal to the ulnar styloid process, with the other hand. This setup is specifically designed to isolate and measure the isometric strength of the internal rotator muscle group (primarily the subscapularis, pectoralis major, and latissimus dorsi) for clinical evaluation of muscle imbalances or rehabilitation progress in athletes.

This diagnostic ultrasound image presents a sagittal medial cross-section of the posterior shoulder and upper back region, used to differentiate between superficial and deep muscular structures. The image is accompanied by a clinical photograph demonstrating the posterior probe placement (red arrow) over the lateral edge of the scapula with the arm in neutral or external rotation. Centrally, the Latissimus Dorsi (GRD) is identified as a superficial hypoechoic muscle with a layered fibrillar arrangement. Immediately superficial to the GRD, alternating bands of hypoechoic and hyperechoic tissue represent subcutaneous fat and connective tissue. Deep to the Latissimus Dorsi, the Teres Major (TM) muscle is visualized. Positioned even deeper and more inferiorly is the Teres Minor (Tm), which sits immediately adjacent to the bony surface of the Scapula (Sc). The scapula serves as the deepest landmark, appearing as a bright hyperechoic interface with posterior acoustic shadowing. This imaging approach is essential in physical medicine and musculoskeletal radiology for assessing muscle integrity, identifying myotendinous junctions, and guiding diagnostic or therapeutic injections.
mkdir -p /tmp/workspace/shoulder-ppt && ls /tmp/workspace/shoulder-ppt/
python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4d0b155569a87a9628afc8b45f229e66fc8ab30ac4428737a46c23e524d99067.jpg" \ > /tmp/workspace/shoulder-ppt/img_data.json 2>&1 echo "exit: $?"
~/shoulder-ppt/build_ppt.py
import json, base64, subprocess
from io import BytesIO
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
# ── colour palette ──────────────────────────────────────────────────────────
NAVY = RGBColor(0x1A, 0x37, 0x5E) # dark blue
TEAL = RGBColor(0x0B, 0x7A, 0x8C) # accent
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LGRAY = RGBColor(0xF2, 0xF6, 0xF9) # light bg
YELLOW = RGBColor(0xFF, 0xD7, 0x00)
RED = RGBColor(0xC0, 0x39, 0x2B)
DKGRAY = RGBColor(0x33, 0x33, 0x33)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ── helper functions ─────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill, alpha=None):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h, size=16, bold=False, color=WHITE,
align=PP_ALIGN.LEFT, wrap=True, italic=False):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
tf.margin_top = Inches(0.03)
tf.margin_bottom = Inches(0.03)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_multiline(slide, lines, x, y, w, h, size=13, color=DKGRAY, bold_first=False):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
tf.margin_top = Inches(0.03)
tf.margin_bottom = Inches(0.03)
for i, line in enumerate(lines):
p = tf.add_paragraph() if i > 0 else tf.paragraphs[0]
p.space_before = Pt(2)
run = p.add_run()
run.text = line
run.font.size = Pt(size)
run.font.color.rgb = color
run.font.name = "Calibri"
if i == 0 and bold_first:
run.font.bold = True
return tb
def img_from_b64(b64_str):
"""Return BytesIO from a base64 string (with optional data: prefix)."""
if "," in b64_str:
b64_str = b64_str.split(",", 1)[1]
return BytesIO(base64.b64decode(b64_str))
def divider(slide, y=1.05):
add_rect(slide, 0.45, y, 12.45, 0.04, TEAL)
# ── load the 3-D grid image ──────────────────────────────────────────────────
with open("/tmp/workspace/shoulder-ppt/img_data.json") as f:
img_results = json.load(f)
grid_b64 = img_results[0]["base64"]
grid_img = img_from_b64(grid_b64)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE
# ══════════════════════════════════════════════════════════════════════════════
s1 = prs.slides.add_slide(blank)
add_rect(s1, 0, 0, 13.333, 7.5, NAVY)
add_rect(s1, 0, 0, 13.333, 0.15, TEAL)
add_rect(s1, 0, 7.35, 13.333, 0.15, TEAL)
# decorative accent bar
add_rect(s1, 0.5, 2.6, 0.08, 2.3, YELLOW)
add_text(s1, "MEDIAL ROTATORS", 0.8, 1.7, 12, 1.3,
size=52, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(s1, "OF THE SHOULDER JOINT", 0.8, 2.9, 12, 1.0,
size=36, bold=False, color=RGBColor(0xA8, 0xD8, 0xF0), align=PP_ALIGN.LEFT)
add_text(s1, "Origin • Insertion • Action • 3D Anatomy", 0.8, 4.0, 12, 0.7,
size=20, bold=False, color=RGBColor(0xFF, 0xD7, 0x00), align=PP_ALIGN.LEFT)
add_text(s1, "Glenohumeral Joint – Internal Rotation Muscles", 0.8, 5.0, 12, 0.5,
size=14, italic=True, bold=False, color=RGBColor(0xCC, 0xDD, 0xEE), align=PP_ALIGN.LEFT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – OVERVIEW: What are Medial Rotators?
# ══════════════════════════════════════════════════════════════════════════════
s2 = prs.slides.add_slide(blank)
add_rect(s2, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s2, 0, 0, 13.333, 1.0, NAVY)
add_rect(s2, 0, 1.0, 0.08, 6.5, TEAL)
add_text(s2, "Overview: Medial (Internal) Rotation of Shoulder", 0.2, 0.12, 12.9, 0.75,
size=26, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
divider(s2, 1.05)
# left text panel
info_lines = [
"What is Medial Rotation?",
" • Rotation of the humerus toward the midline of the body",
" • Also called internal rotation of the glenohumeral joint",
" • Moves the anterior surface of the arm medially",
"",
"Key Medial Rotators (SPLAT mnemonic):",
" S – Subscapularis",
" P – Pectoralis Major",
" L – Latissimus Dorsi",
" A – Anterior Deltoid",
" T – Teres Major",
"",
"Nerve Supply Overview:",
" • Subscapularis → Upper & Lower subscapular nn. (C5–C6)",
" • Pectoralis Major → Medial & Lateral pectoral nn. (C5–T1)",
" • Latissimus Dorsi → Thoracodorsal n. (C6–C8)",
" • Teres Major → Lower subscapular n. (C5–C6)",
" • Ant. Deltoid → Axillary n. (C5–C6)",
]
add_multiline(s2, info_lines, 0.3, 1.15, 7.0, 6.1, size=13.5, color=DKGRAY, bold_first=True)
# right: 3-D grid image
grid_img_copy = img_from_b64(grid_b64)
s2.shapes.add_picture(grid_img_copy, Inches(7.5), Inches(1.1), Inches(5.6), Inches(6.1))
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – SUBSCAPULARIS
# ══════════════════════════════════════════════════════════════════════════════
s3 = prs.slides.add_slide(blank)
add_rect(s3, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s3, 0, 0, 13.333, 1.0, RGBColor(0x1B, 0x6C, 0x8E))
add_rect(s3, 0, 1.0, 0.08, 6.5, RGBColor(0x1B, 0x6C, 0x8E))
add_text(s3, "1. Subscapularis", 0.2, 0.12, 12, 0.75,
size=30, bold=True, color=WHITE)
add_text(s3, "Most powerful medial rotator | Rotator Cuff muscle", 0.2, 0.62, 12, 0.35,
size=13, italic=True, color=RGBColor(0xAD, 0xE4, 0xF5))
divider(s3, 1.05)
card_data = [
("ORIGIN", "Subscapular fossa (entire costal surface of scapula, medial 2/3)"),
("INSERTION", "Lesser tubercle of humerus and anterior capsule of shoulder joint"),
("ACTION", "• Medial (internal) rotation of arm\n• Adduction of arm\n• Stabilises humeral head in glenoid cavity (rotator cuff)"),
("NERVE SUPPLY", "Upper subscapular nerve (C5) and Lower subscapular nerve (C5, C6)\n– both from posterior cord of brachial plexus"),
("BLOOD SUPPLY", "Subscapular artery (branch of axillary artery)"),
("CLINICAL NOTE", "Most commonly injured rotator cuff muscle in overhead athletes.\nTear causes weakness of internal rotation & anterior shoulder instability."),
]
y = 1.15
for header, body in card_data:
add_rect(s3, 0.3, y, 2.8, 0.28, RGBColor(0x1B, 0x6C, 0x8E))
add_text(s3, header, 0.32, y+0.02, 2.7, 0.26, size=11, bold=True, color=WHITE)
add_text(s3, body, 3.2, y, 9.8, 0.55, size=12.5, color=DKGRAY, wrap=True)
y += 0.65 if "\n" not in body else 0.9
if header == "ACTION":
y += 0.3
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – PECTORALIS MAJOR
# ══════════════════════════════════════════════════════════════════════════════
s4 = prs.slides.add_slide(blank)
add_rect(s4, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s4, 0, 0, 13.333, 1.0, RGBColor(0x7B, 0x24, 0x3C))
add_rect(s4, 0, 1.0, 0.08, 6.5, RGBColor(0x7B, 0x24, 0x3C))
add_text(s4, "2. Pectoralis Major", 0.2, 0.12, 12, 0.75,
size=30, bold=True, color=WHITE)
add_text(s4, "Largest anterior chest wall muscle | fan-shaped", 0.2, 0.62, 12, 0.35,
size=13, italic=True, color=RGBColor(0xF4, 0xB8, 0xC8))
divider(s4, 1.05)
card_data4 = [
("ORIGIN (3 heads)",
"Clavicular head: Medial half of clavicle\n"
"Sternocostal head: Sternum, costal cartilages 1–6\n"
"Abdominal head: Anterior layer of rectus sheath"),
("INSERTION", "Lateral lip of bicipital groove (intertubercular sulcus) of humerus\n(fibres twist so clavicular head is inferior, sternal head is superior at insertion)"),
("ACTION",
"• Medial rotation of arm\n"
"• Adduction of arm\n"
"• Flexion (clavicular head: 0–90°; sternal head: from >90° extension)\n"
"• Draws scapula anteriorly and inferiorly"),
("NERVE SUPPLY", "Lateral pectoral nerve (C5, C6) and Medial pectoral nerve (C8, T1)"),
("BLOOD SUPPLY", "Thoracoacromial artery (pectoral branch)"),
("CLINICAL NOTE", "Pec major tears occur most often at musculotendinous junction\n(bench press injury). Presents with anterior axillary fold asymmetry."),
]
y = 1.15
for header, body in card_data4:
lines = body.count('\n')
row_h = 0.28 + lines * 0.18
add_rect(s4, 0.3, y, 2.8, 0.28, RGBColor(0x7B, 0x24, 0x3C))
add_text(s4, header, 0.32, y+0.02, 2.7, 0.26, size=11, bold=True, color=WHITE)
add_text(s4, body, 3.2, y, 9.8, row_h + 0.15, size=12.0, color=DKGRAY, wrap=True)
y += row_h + 0.22
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – LATISSIMUS DORSI
# ══════════════════════════════════════════════════════════════════════════════
s5 = prs.slides.add_slide(blank)
add_rect(s5, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s5, 0, 0, 13.333, 1.0, RGBColor(0x1A, 0x6B, 0x3A))
add_rect(s5, 0, 1.0, 0.08, 6.5, RGBColor(0x1A, 0x6B, 0x3A))
add_text(s5, "3. Latissimus Dorsi", 0.2, 0.12, 12, 0.75,
size=30, bold=True, color=WHITE)
add_text(s5, "Largest muscle in the body | 'The Swimmer's Muscle'", 0.2, 0.62, 12, 0.35,
size=13, italic=True, color=RGBColor(0xB4, 0xF0, 0xC3))
divider(s5, 1.05)
card_data5 = [
("ORIGIN (broad)",
"Spinous processes T7–L5, sacrum, iliac crest (posterior 1/3),\n"
"Lower 3–4 ribs (interdigitating with external oblique),\n"
"Inferior angle of scapula (variable)"),
("INSERTION", "Floor of intertubercular (bicipital) groove of humerus\n"
"(fibres twist 180° before insertion – inferior fibres become anterior)"),
("ACTION",
"• Medial rotation of arm\n"
"• Extension of arm\n"
"• Adduction of arm\n"
"• Depression of shoulder girdle\n"
"• Assists in forced expiration and coughing"),
("NERVE SUPPLY", "Thoracodorsal nerve (C6, C7, C8) – from posterior cord of brachial plexus"),
("BLOOD SUPPLY", "Thoracodorsal artery (branch of subscapular artery)"),
("CLINICAL NOTE", "Key muscle in pull-ups and swimming (especially butterfly/freestyle).\n"
"Thoracodorsal nerve at risk during axillary lymph node dissection."),
]
y = 1.15
for header, body in card_data5:
lines = body.count('\n')
row_h = 0.28 + lines * 0.18
add_rect(s5, 0.3, y, 2.8, 0.28, RGBColor(0x1A, 0x6B, 0x3A))
add_text(s5, header, 0.32, y+0.02, 2.7, 0.26, size=11, bold=True, color=WHITE)
add_text(s5, body, 3.2, y, 9.8, row_h + 0.15, size=12.0, color=DKGRAY, wrap=True)
y += row_h + 0.22
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – TERES MAJOR
# ══════════════════════════════════════════════════════════════════════════════
s6 = prs.slides.add_slide(blank)
add_rect(s6, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s6, 0, 0, 13.333, 1.0, RGBColor(0x5C, 0x3A, 0x00))
add_rect(s6, 0, 1.0, 0.08, 6.5, RGBColor(0x5C, 0x3A, 0x00))
add_text(s6, "4. Teres Major", 0.2, 0.12, 12, 0.75,
size=30, bold=True, color=WHITE)
add_text(s6, "'Little Lat' – often acts with latissimus dorsi", 0.2, 0.62, 12, 0.35,
size=13, italic=True, color=RGBColor(0xF5, 0xD9, 0xA0))
divider(s6, 1.05)
card_data6 = [
("ORIGIN", "Posterior surface of inferior angle of scapula\n(oval area on dorsal surface)"),
("INSERTION", "Medial lip of intertubercular groove of humerus\n(just medial to latissimus dorsi insertion)"),
("ACTION",
"• Medial rotation of arm\n"
"• Extension of arm (from flexed position)\n"
"• Adduction of arm"),
("NERVE SUPPLY", "Lower subscapular nerve (C5, C6) – from posterior cord of brachial plexus"),
("BLOOD SUPPLY", "Subscapular artery (circumflex scapular branch)"),
("CLINICAL NOTE", "Forms the lower border of the triangular space and quadrangular space.\n"
"With lat dorsi, forms the posterior axillary fold (palpable landmark)."),
]
y = 1.15
for header, body in card_data6:
lines = body.count('\n')
row_h = 0.28 + lines * 0.18
add_rect(s6, 0.3, y, 2.8, 0.28, RGBColor(0x5C, 0x3A, 0x00))
add_text(s6, header, 0.32, y+0.02, 2.7, 0.26, size=11, bold=True, color=WHITE)
add_text(s6, body, 3.2, y, 9.8, row_h + 0.15, size=12.0, color=DKGRAY, wrap=True)
y += row_h + 0.22
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – ANTERIOR DELTOID
# ══════════════════════════════════════════════════════════════════════════════
s7 = prs.slides.add_slide(blank)
add_rect(s7, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s7, 0, 0, 13.333, 1.0, RGBColor(0x4A, 0x1F, 0x7A))
add_rect(s7, 0, 1.0, 0.08, 6.5, RGBColor(0x4A, 0x1F, 0x7A))
add_text(s7, "5. Anterior Deltoid (Clavicular fibres)", 0.2, 0.12, 12, 0.75,
size=28, bold=True, color=WHITE)
add_text(s7, "Contributes to medial rotation when arm is abducted", 0.2, 0.62, 12, 0.35,
size=13, italic=True, color=RGBColor(0xD4, 0xB8, 0xF0))
divider(s7, 1.05)
card_data7 = [
("ORIGIN", "Anterior border and superior surface of lateral 1/3 of clavicle"),
("INSERTION", "Deltoid tuberosity on the lateral surface of the mid-shaft of humerus"),
("ACTION",
"• Flexion of arm (primary action)\n"
"• Medial (internal) rotation of arm\n"
"• Horizontal adduction of arm"),
("NERVE SUPPLY", "Axillary nerve (C5, C6) – from posterior cord of brachial plexus"),
("BLOOD SUPPLY", "Thoracoacromial artery (deltoid branch) and anterior circumflex humeral artery"),
("NOTE", "Only clavicular (anterior) fibres medially rotate.\n"
"Middle fibres abduct; posterior fibres laterally rotate."),
]
y = 1.15
for header, body in card_data7:
lines = body.count('\n')
row_h = 0.28 + lines * 0.18
add_rect(s7, 0.3, y, 2.8, 0.28, RGBColor(0x4A, 0x1F, 0x7A))
add_text(s7, header, 0.32, y+0.02, 2.7, 0.26, size=11, bold=True, color=WHITE)
add_text(s7, body, 3.2, y, 9.8, row_h + 0.15, size=12.0, color=DKGRAY, wrap=True)
y += row_h + 0.22
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – COMPARISON TABLE
# ══════════════════════════════════════════════════════════════════════════════
s8 = prs.slides.add_slide(blank)
add_rect(s8, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s8, 0, 0, 13.333, 1.0, NAVY)
add_rect(s8, 0, 1.0, 0.08, 6.5, TEAL)
add_text(s8, "Quick Comparison Table – Medial Rotators of Shoulder", 0.2, 0.12, 12.9, 0.75,
size=24, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
from pptx.util import Inches, Pt
from pptx.oxml.ns import qn
from lxml import etree
def add_table(slide, rows, cols, x, y, w, h):
tbl = slide.shapes.add_table(rows, cols, Inches(x), Inches(y), Inches(w), Inches(h))
return tbl.table
table = add_table(s8, 6, 5, 0.18, 1.1, 12.96, 6.1)
headers = ["Muscle", "Origin", "Insertion", "Nerve", "Other Actions"]
col_w = [2.0, 3.2, 2.6, 2.0, 3.16]
for i, w in enumerate(col_w):
table.columns[i].width = Inches(w)
rows_data = [
headers,
["Subscapularis",
"Subscapular fossa (costal surface of scapula)",
"Lesser tubercle of humerus",
"Upper & Lower subscapular nn. (C5-C6)",
"Adduction; stabilises humeral head"],
["Pectoralis Major",
"Clavicle (med. half), Sternum, Costal cartilages 1-6",
"Lateral lip of bicipital groove",
"Medial & Lateral pectoral nn. (C5-T1)",
"Adduction, Flexion"],
["Latissimus Dorsi",
"T7-L5 spinous processes, sacrum, iliac crest, lower ribs",
"Floor of bicipital groove",
"Thoracodorsal n. (C6-C8)",
"Extension, Adduction, Depression"],
["Teres Major",
"Inferior angle of scapula (posterior)",
"Medial lip of bicipital groove",
"Lower subscapular n. (C5-C6)",
"Extension, Adduction"],
["Ant. Deltoid",
"Lateral 1/3 of clavicle (anterior border)",
"Deltoid tuberosity of humerus",
"Axillary n. (C5-C6)",
"Flexion, Horizontal adduction"],
]
HEADER_COLOR = NAVY
ALT_COLOR = RGBColor(0xDE, 0xEA, 0xF3)
for r, row in enumerate(rows_data):
for c, cell_text in enumerate(row):
cell = table.cell(r, c)
cell.text = cell_text
cell.text_frame.paragraphs[0].font.size = Pt(11.5 if r > 0 else 13)
cell.text_frame.paragraphs[0].font.bold = (r == 0)
cell.text_frame.paragraphs[0].font.name = "Calibri"
cell.text_frame.paragraphs[0].font.color.rgb = WHITE if r == 0 else DKGRAY
# background
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
solidFill = etree.SubElement(tcPr, qn('a:solidFill'))
srgbClr = etree.SubElement(solidFill, qn('a:srgbClr'))
bg = HEADER_COLOR if r == 0 else (LGRAY if r % 2 == 0 else ALT_COLOR)
srgbClr.set('val', '%02X%02X%02X' % (bg.r, bg.g, bg.b))
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – 3-D ANATOMY DIAGRAM (full slide)
# ══════════════════════════════════════════════════════════════════════════════
s9 = prs.slides.add_slide(blank)
add_rect(s9, 0, 0, 13.333, 7.5, RGBColor(0x10, 0x10, 0x20))
add_text(s9, "3D Anatomy: Shoulder Muscles – Origin & Insertion", 0.3, 0.1, 12.7, 0.65,
size=24, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(s9, "CT-derived 3D reconstructions (medial rotators highlighted)", 0.3, 0.65, 12.7, 0.35,
size=13, italic=True, color=YELLOW, align=PP_ALIGN.CENTER)
grid_img_s9 = img_from_b64(grid_b64)
s9.shapes.add_picture(grid_img_s9, Inches(1.9), Inches(1.05), Inches(9.5), Inches(6.15))
# caption below
captions = [
("Subscapularis", 1.9), ("Pectoralis Major", 5.05), ("Latissimus Dorsi", 8.2),
]
for cap, xp in captions:
add_rect(s9, xp, 7.05, 3.0, 0.32, TEAL)
add_text(s9, cap, xp+0.05, 7.07, 2.9, 0.28, size=11, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – CLINICAL CORRELATIONS
# ══════════════════════════════════════════════════════════════════════════════
s10 = prs.slides.add_slide(blank)
add_rect(s10, 0, 0, 13.333, 7.5, LGRAY)
add_rect(s10, 0, 0, 13.333, 1.0, RED)
add_rect(s10, 0, 1.0, 0.08, 6.5, RED)
add_text(s10, "Clinical Correlations", 0.2, 0.12, 12.9, 0.75,
size=30, bold=True, color=WHITE)
divider(s10, 1.05)
clinicals = [
("Subscapularis Tear",
"Most common internal rotator tear. Caused by hyperextension/external rotation trauma.\n"
"Test: Lift-off test (Gerber's test), Belly press test.\n"
"Presents with internal rotation weakness and anterior shoulder pain."),
("Pec Major Tear",
"Typically at musculotendinous junction during bench press (eccentric overload).\n"
"Sign: Loss of anterior axillary fold, asymmetric anterior chest wall.\n"
"Surgical repair recommended in young/active patients."),
("Latissimus Dorsi Palsy",
"Thoracodorsal nerve injury during axillary lymph node dissection (breast cancer surgery).\n"
"Results in weakness of extension, adduction, and medial rotation.\n"
"The muscle is also used as a flap in reconstructive surgery."),
("Internals vs Externals Imbalance",
"Medial rotators are significantly stronger than lateral rotators (approx. 3:2 ratio).\n"
"Imbalance leads to 'GIRD' (glenohumeral internal rotation deficit) in overhead athletes.\n"
"Associated with superior labral (SLAP) tears and rotator cuff pathology."),
("SPLAT Mnemonic",
"S – Subscapularis | P – Pectoralis major | L – Latissimus dorsi\n"
"A – Anterior deltoid | T – Teres major\n"
"All are medial rotators of the glenohumeral joint."),
]
y = 1.15
colors = [RGBColor(0xC0,0x39,0x2B), RGBColor(0x7B,0x24,0x3C),
RGBColor(0x1A,0x6B,0x3A), RGBColor(0x5C,0x3A,0x00), NAVY]
for i, (title, body) in enumerate(clinicals):
add_rect(s10, 0.3, y, 3.0, 0.28, colors[i % len(colors)])
add_text(s10, title, 0.32, y+0.02, 2.9, 0.26, size=11.5, bold=True, color=WHITE)
lines = body.count('\n')
row_h = 0.36 + lines * 0.2
add_text(s10, body, 3.4, y, 9.7, row_h + 0.15, size=12.0, color=DKGRAY, wrap=True)
y += row_h + 0.25
if y > 7.0:
break
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – SUMMARY & KEY POINTS
# ══════════════════════════════════════════════════════════════════════════════
s11 = prs.slides.add_slide(blank)
add_rect(s11, 0, 0, 13.333, 7.5, NAVY)
add_rect(s11, 0, 0, 13.333, 0.12, TEAL)
add_rect(s11, 0, 7.38, 13.333, 0.12, TEAL)
add_text(s11, "Summary & Key Points", 0.3, 0.15, 12.7, 0.75,
size=30, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
summary_points = [
"There are 5 medial (internal) rotators of the glenohumeral joint:",
" 1. Subscapularis – rotator cuff; most powerful; lesser tubercle; subscapular nn. C5-C6",
" 2. Pectoralis Major – 3-headed; bicipital groove (lateral lip); pectoral nn. C5-T1",
" 3. Latissimus Dorsi – broadest; floor of bicipital groove; thoracodorsal n. C6-C8",
" 4. Teres Major – 'Little lat'; medial lip of bicipital groove; lower subscapular n. C5-C6",
" 5. Anterior Deltoid – clavicular fibres only; deltoid tuberosity; axillary n. C5-C6",
"",
"Mnemonic: SPLAT (Subscapularis, Pectoralis, Latissimus, Anterior deltoid, Teres major)",
"",
"All inserts into the proximal humerus (bicipital groove or lesser tubercle).",
"Nerve supply predominantly from the posterior cord of brachial plexus.",
"Medial rotators are ~1.5× stronger than lateral rotators.",
"Subscapularis is the only medial rotator that is also a rotator cuff muscle.",
]
tb = s11.shapes.add_textbox(Inches(0.6), Inches(1.1), Inches(12.1), Inches(6.1))
tf = tb.text_frame
tf.word_wrap = True
for i, line in enumerate(summary_points):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(3)
run = p.add_run()
run.text = line
run.font.name = "Calibri"
run.font.color.rgb = YELLOW if (i == 0 or line.startswith(" ") or "SPLAT" in line) else WHITE
run.font.size = Pt(15 if i == 0 else 14)
run.font.bold = (i == 0 or "SPLAT" in line)
# ── SAVE ─────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/shoulder-ppt/Medial_Rotators_Shoulder.pptx"
prs.save(out)
print("Saved to:", out)
cd /tmp/workspace/shoulder-ppt && python build_ppt.py 2>&1
~/shoulder-ppt/build_ppt.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/shoulder-ppt/build_ppt.py'
cd /tmp/workspace/shoulder-ppt && python build_ppt.py 2>&1
Medial Rotators Shoulder
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Overview - what is medial rotation, SPLAT mnemonic, nerve supply summary + 3D grid diagram |
| 3 | Subscapularis - origin, insertion, action, nerve, blood supply, clinical note |
| 4 | Pectoralis Major - all 3 heads, origin, insertion, action, clinical note |
| 5 | Latissimus Dorsi - broad origin, twisted insertion, actions, clinical note |
| 6 | Teres Major - origin, insertion, actions, boundaries formed |
| 7 | Anterior Deltoid - clavicular fibres, actions, nerve |
| 8 | Quick comparison table (all 5 muscles side by side) |
| 9 | Full-slide 3D CT-derived anatomy diagram showing all shoulder muscles with their skeletal attachments |
| 10 | Clinical correlations (Subscapularis tear, Pec major tear, Lat dorsi palsy, GIRD, SPLAT) |
| 11 | Summary & key takeaways |
Search for recent research on rotator cuff injuries and medial rotator pathology
rotator cuff repair outcomes
subscapularis tear diagnosis treatment
glenohumeral internal rotation deficit GIRD shoulder
recent 2024 2025 research rotator cuff injury medial rotator pathology new findings
PMID: 41947497
PMID: 38942225
PMID: 41276811
PMID: 34173779
subscapularis tear internal rotation shoulder repair
| Exercise Type | Ranking for Pain + Dysfunction |
|---|---|
| Concentric Strengthening (CST) | #1 - best overall |
| Eccentric Strengthening (ECT) | #2 - moderate |
| Traditional Training (TT) | #3 |
| Motor Control Exercise (MCE) | #4 |
| Scapula-Focused Training (SFT) | #5 |
| Heavy Load Training (HLT) | Worst - negative effect sizes |
| Topic | Key Finding | Evidence Level |
|---|---|---|
| AAOS 2025 CPG | Bioinductive implants strongly recommended; limit to 1 corticosteroid injection | Guideline |
| Bioinductive patch | Retear rate 8.3% vs ~25-40% historical | Systematic Review |
| PRP augmentation | Platelet concentration doesn't affect outcomes | Meta-analysis (2026) |
| Exercise therapy | Concentric training is best for RCRSP | Network meta-analysis |
| Rehabilitation timing | Early mobilisation for small tears; delayed for large | Meta-analysis |
| GIRD | ~10° IR deficit normal in overhead athletes; sleeper stretches first-line | Meta-analysis |
| Subscapularis in RSA | Repair may not affect functional outcome | RCT (2024) |
| Metabolic risk | Diabetes, obesity, hyperlipidaemia increase tear risk | Meta-analysis |