if i buy credits so i could use orris now?
make me a cheat sheet as u made me before
Export this as a PDF quick reference card
mkdir -p /tmp/workspace/shoulder-cheatsheet && ls -la /tmp/workspace/
~/shoulder-cheatsheet/build_pdf.py
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER
OUT = "/tmp/workspace/shoulder-cheatsheet/Shoulder_Injuries_Cheat_Sheet.pdf"
styles = getSampleStyleSheet()
title_style = ParagraphStyle(
"TitleStyle", parent=styles["Title"], fontSize=18, textColor=colors.HexColor("#0B3D91"),
spaceAfter=2, alignment=TA_CENTER
)
subtitle_style = ParagraphStyle(
"SubtitleStyle", parent=styles["Normal"], fontSize=9, textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, spaceAfter=10
)
heading_style = ParagraphStyle(
"HeadingStyle", parent=styles["Heading2"], fontSize=12.5, textColor=colors.white,
backColor=colors.HexColor("#0B3D91"), leftIndent=4, spaceBefore=0, spaceAfter=0,
borderPadding=(4, 4, 4, 4), leading=16
)
body_style = ParagraphStyle(
"BodyStyle", parent=styles["Normal"], fontSize=8.7, leading=11.5, spaceAfter=2
)
label_style = ParagraphStyle(
"LabelStyle", parent=body_style, textColor=colors.HexColor("#0B3D91"), fontName="Helvetica-Bold"
)
hook_style = ParagraphStyle(
"HookStyle", parent=body_style, fontSize=8.7, leading=11.5, textColor=colors.HexColor("#7A2E00")
)
def bullet_list(items):
"""items: list of (label_or_None, text)"""
lines = []
for label, text in items:
if label:
lines.append(f'• <font color="#0B3D91"><b>{label}</b></font> {text}')
else:
lines.append(f"• {text}")
return Paragraph("<br/>".join(lines), body_style)
def section(heading, items):
return [
Paragraph(heading, heading_style),
Spacer(1, 3),
bullet_list(items),
Spacer(1, 8),
]
story = []
story.append(Paragraph("Shoulder Joint Injuries", title_style))
story.append(Paragraph("Clinical Quick Reference Card — Anatomy & Orthopaedics", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=colors.HexColor("#0B3D91")))
story.append(Spacer(1, 8))
# ---- AC Joint Dislocation ----
story += section("AC Joint Dislocation ("Shoulder Separation")", [
("Cause:", "severe blow to superolateral back / player driven into boards"),
("Mechanism:", "coracoclavicular ligament tears → fibrous capsule tears → acromion passes inferior to clavicle"),
("Result:", "clavicle appears to ride superior to acromion; shoulder drops from limb weight"),
("Severity marker:", "BOTH AC + coracoclavicular ligaments torn = severe"),
])
# ---- Calcific Tendinitis ----
story += section("Calcific Tendinitis of Shoulder (Calcific Scapulohumeral Bursitis)", [
("Pathology:", "Ca²⁺ deposition in supraspinatus tendon → irritates subacromial bursa → subacromial bursitis"),
("Pain:", "excruciating, radiates to hand, worse on abduction"),
("Painful arc syndrome:", "pain specifically at 50–130° abduction (supraspinatus tendon contacts acromion)"),
("Key sign:", "no pain when adducted (lesion away from acromion)"),
("Typical patient:", "males ≥50 yrs, after excessive/unusual glenohumeral use"),
])
# ---- Rotator Cuff Injuries ----
story += section("Rotator Cuff Injuries", [
("Cause:", "repetitive overhead use (throwing, racquet sports, swimming, weightlifting) → impingement on coracoacromial arch → degenerative tendonitis, esp. supraspinatus (avascular zone) → attrition/tear"),
("Acute cause:", "sudden strain (lifting stuck object) or fall on shoulder rupturing an already-degenerated cuff"),
("Drop-arm test:", "lower fully abducted arm slowly; if cuff (supraspinatus) torn/diseased, arm suddenly drops uncontrolled at ~90°"),
("Complete tear:", "cannot INITIATE abduction (supraspinatus non-functional); if passively abducted ≥15°, deltoid maintains abduction"),
("Associated finding:", "long head of biceps tendon frays/adheres in intertubercular sulcus → shoulder stiffness"),
("Note:", "capsule integrity often compromised → articular cavity communicates with subacromial bursa"),
])
# ---- Dislocation of Glenohumeral Joint ----
story += section("Dislocation of Glenohumeral Joint", [
("Most common direction overall:", "inferior (downward) — coraco-acromial arch + rotator cuff resist upward dislocation"),
("Clinical classification:", "Anterior or Posterior (rare) — based on humeral head position relative to infraglenoid tubercle/triceps long head"),
("Anterior dislocation:", "most common, young adults/athletes. Mechanism: excessive extension + lateral rotation → head driven infero-anteriorly → capsule/labrum stripped anteriorly → head ends inferior to glenoid, anterior to infraglenoid tubercle → flexors/adductors pull head anterosuperiorly into subcoracoid position. Patient supports arm with other hand."),
("Inferior dislocation:", "often follows avulsion fracture of greater tubercle (loses upward/medial muscle pull). Risk: axillary nerve injury (close to inferior capsule)."),
])
# ---- Glenoid Labrum Tears ----
story += section("Glenoid Labrum Tears", [
("Population:", "throwing athletes (baseball, football); shoulder instability/subluxation"),
("Mechanism:", "sudden biceps contraction or forceful subluxation of humeral head over labrum"),
("Location:", "usually anterosuperior labrum"),
("Symptoms:", "pain while throwing (esp. acceleration phase); popping/snapping during abduction + lateral rotation"),
])
# ---- Adhesive Capsulitis ----
story += section("Adhesive Capsulitis ("Frozen Shoulder")", [
("Pathology:", "adhesive fibrosis/scarring between inflamed joint capsule, rotator cuff, subacromial bursa, and deltoid"),
("Typical age:", "40–60 years"),
("Presentation:", "difficulty abducting arm; apparent abduction only to ~45° via scapular elevation/rotation (compensatory)"),
("Secondary effect:", "strain on AC joint (painful with shrugging/elevation) since glenohumeral joint doesn't move"),
("Predisposing injuries:", "glenohumeral dislocation, calcific supraspinatus tendinitis, partial rotator cuff tear, bicipital tendinitis"),
])
# ---- Quick memory hooks table ----
story.append(Paragraph("Quick Memory Hooks", heading_style))
story.append(Spacer(1, 4))
hooks = [
["Painful arc (50-130° abduction)", "Supraspinatus / calcific tendinitis"],
["Positive drop-arm test", "Rotator cuff tear"],
["Extension + lateral rotation injury", "Anterior glenohumeral dislocation"],
["Watch for axillary nerve injury", "Inferior glenohumeral dislocation"],
["~45° abduction via scapula only, age 40-60", "Frozen shoulder (adhesive capsulitis)"],
]
def P(t):
return Paragraph(t, ParagraphStyle("cell", parent=body_style, fontSize=8.5, leading=10.5))
table_data = [[P("<b>Clinical Clue</b>"), P("<b>Think…</b>")]] + [[P(a), P(b)] for a, b in hooks]
tbl = Table(table_data, colWidths=[3.3*inch, 3.1*inch])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#0B3D91")),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#AAAAAA")),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#FDF3E7"), colors.white]),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
]))
story.append(tbl)
story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#AAAAAA")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Source: Clinically Oriented Anatomy - Joints of Upper Limb (Rotator Cuff, AC Joint, Glenohumeral Dislocation, Glenoid Labrum, Adhesive Capsulitis). For study reference only, not a clinical diagnostic tool.",
ParagraphStyle("footer", parent=styles["Normal"], fontSize=7, textColor=colors.HexColor("#777777"))
))
doc = SimpleDocTemplate(
OUT, pagesize=letter,
topMargin=0.5*inch, bottomMargin=0.5*inch,
leftMargin=0.6*inch, rightMargin=0.6*inch,
title="Shoulder Injuries Cheat Sheet"
)
doc.build(story)
print("Saved:", OUT)
cd /tmp/workspace/shoulder-cheatsheet && python3 build_pdf.py
Shoulder Injuries Cheat Sheet
PDF Document · PDF