Give me complete answer for essay questions
| Type | Description |
|---|---|
| Filiform | Numerous, conical; no taste buds; give rough texture |
| Fungiform | Larger, round, scattered; have taste buds |
| Vallate (Circumvallate) | 8-12 arranged in V-shape just anterior to sulcus terminalis; have taste buds |
| Foliate | Linear folds on sides near sulcus; rudimentary in humans |
| Muscle | Action |
|---|---|
| Superior longitudinal | Shortens tongue, turns tip up |
| Inferior longitudinal | Shortens tongue, turns tip down |
| Transverse | Narrows and elongates tongue |
| Vertical | Flattens and broadens tongue |
| Muscle | Origin | Action |
|---|---|---|
| Genioglossus | Genial tubercle of mandible | Protrudes tongue (most important); depresses center |
| Hyoglossus | Body and greater horn of hyoid | Depresses and retracts tongue |
| Styloglossus | Styloid process | Retracts and elevates tongue |
| Palatoglossus | Palatine aponeurosis | Elevates posterior tongue; closes oropharyngeal isthmus |
| Region | General Sensation | Special (Taste) |
|---|---|---|
| Anterior 2/3 | Lingual nerve (branch of V3 - mandibular) | Chorda tympani (branch of CN VII via lingual nerve) |
| Posterior 1/3 | Glossopharyngeal nerve (CN IX) | Glossopharyngeal nerve (CN IX) |
| Epiglottic region | Internal laryngeal nerve (CN X) | Internal laryngeal nerve (CN X) |
| Anteriorly | Posterior border of sternocleidomastoid (SCM) muscle |
| Posteriorly | Anterior border of trapezius muscle |
| Inferiorly (Base) | Middle one-third of the clavicle |
| Apex | Occipital bone just posterior to the mastoid process (where SCM and trapezius attachments converge) |
Generate a study pdf on these questions 1-8
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/anatomy-study && echo "dir created"
~/anatomy-study/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/tmp/workspace/anatomy-study/Anatomy_Paper2_Phase1_MBBS.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Anatomy Paper II – Phase I MBBS Study Guide",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# ── Custom Styles ──────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1a2f5e")
TEAL = colors.HexColor("#0d7377")
GOLD = colors.HexColor("#f5a623")
LIGHT_BLUE = colors.HexColor("#dbeeff")
LIGHT_YELLOW = colors.HexColor("#fff9e6")
LIGHT_GREEN = colors.HexColor("#e8f8f0")
WHITE = colors.white
GRAY = colors.HexColor("#f4f4f4")
DARK_GRAY = colors.HexColor("#555555")
title_style = ParagraphStyle(
"DocTitle", parent=styles["Title"],
fontSize=20, textColor=WHITE, alignment=TA_CENTER,
spaceAfter=6, fontName="Helvetica-Bold", leading=26
)
subtitle_style = ParagraphStyle(
"Subtitle", parent=styles["Normal"],
fontSize=11, textColor=WHITE, alignment=TA_CENTER,
spaceAfter=4, fontName="Helvetica"
)
q_heading_style = ParagraphStyle(
"QHeading",
fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
leading=18, spaceAfter=0, spaceBefore=0,
leftIndent=8, rightIndent=8
)
section_style = ParagraphStyle(
"SectionH",
fontSize=11, textColor=NAVY, fontName="Helvetica-Bold",
spaceBefore=10, spaceAfter=4, leading=15
)
sub_section_style = ParagraphStyle(
"SubSection",
fontSize=10.5, textColor=TEAL, fontName="Helvetica-Bold",
spaceBefore=7, spaceAfter=3, leading=14
)
body_style = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, textColor=colors.HexColor("#222222"),
leading=14, spaceAfter=4, fontName="Helvetica",
alignment=TA_JUSTIFY
)
bullet_style = ParagraphStyle(
"Bullet", parent=body_style,
leftIndent=14, bulletIndent=4, spaceAfter=2
)
clinical_box_style = ParagraphStyle(
"ClinicalBox", parent=body_style,
fontSize=9.5, textColor=colors.HexColor("#7b3800"),
fontName="Helvetica-Oblique", leftIndent=8, rightIndent=8
)
note_style = ParagraphStyle(
"Note", parent=body_style,
fontSize=9, textColor=colors.HexColor("#1a5c2a"),
fontName="Helvetica-Oblique", leftIndent=8
)
toc_style = ParagraphStyle(
"TOC", parent=styles["Normal"],
fontSize=10, textColor=NAVY, fontName="Helvetica",
leading=18, leftIndent=10
)
def q_banner(n, title, marks=""):
mark_text = f" [{marks}]" if marks else ""
label = f"Q{n}. {title}{mark_text}"
data = [[Paragraph(label, q_heading_style)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING",(0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [4]),
]))
return t
def section_bar(text):
data = [[Paragraph(text, ParagraphStyle("sb", fontSize=10, textColor=WHITE,
fontName="Helvetica-Bold", leading=14,
leftIndent=6))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), TEAL),
("TOPPADDING",(0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING",(0,0),(-1,-1), 10),
]))
return t
def clinical_box(text):
data = [[Paragraph("🩺 " + text, clinical_box_style)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), LIGHT_YELLOW),
("BOX",(0,0),(-1,-1), 1, GOLD),
("TOPPADDING",(0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1), 6),
("LEFTPADDING",(0,0),(-1,-1), 10),
("RIGHTPADDING",(0,0),(-1,-1), 10),
]))
return t
def note_box(text):
data = [[Paragraph("📌 " + text, note_style)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), LIGHT_GREEN),
("BOX",(0,0),(-1,-1), 1, colors.HexColor("#5cb85c")),
("TOPPADDING",(0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING",(0,0),(-1,-1), 10),
]))
return t
def make_table(headers, rows, col_widths=None):
head_row = [Paragraph(f"<b>{h}</b>", ParagraphStyle("th", fontSize=9,
textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=13))
for h in headers]
body_rows = []
for r in rows:
body_rows.append([Paragraph(str(c), ParagraphStyle("td", fontSize=9,
fontName="Helvetica", leading=13, alignment=TA_LEFT)) for c in r])
if col_widths is None:
col_widths = [17*cm / len(headers)] * len(headers)
t = Table([head_row] + body_rows, colWidths=col_widths)
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0), NAVY),
("BACKGROUND",(0,1),(-1,-1), LIGHT_BLUE),
("ROWBACKGROUNDS",(0,1),(-1,-1), [LIGHT_BLUE, WHITE]),
("GRID",(0,0),(-1,-1), 0.5, colors.HexColor("#aaaaaa")),
("TOPPADDING",(0,0),(-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0),(-1,-1), 6),
("RIGHTPADDING",(0,0),(-1,-1), 6),
("VALIGN",(0,0),(-1,-1), "TOP"),
]))
return t
def bp(text):
return Paragraph(f"• {text}", bullet_style)
def b(text):
return Paragraph(text, body_style)
def sp(n=6):
return Spacer(1, n)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#cccccc"), spaceAfter=4)
# ═══════════════════════════════════════════════════════════════════════════
# BUILD STORY
# ═══════════════════════════════════════════════════════════════════════════
story = []
# ── COVER PAGE ─────────────────────────────────────────────────────────────
cover_data = [[Paragraph("DEPARTMENT OF ANATOMY", title_style)],
[Paragraph("Paper – II, Phase I MBBS 2025-26", subtitle_style)],
[Spacer(1, 8)],
[Paragraph("COMPLETE ESSAY ANSWERS", ParagraphStyle("cv2",
fontSize=15, textColor=GOLD, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=20))],
[Spacer(1, 8)],
[Paragraph("Questions 1 – 8 | Section B | Essay", subtitle_style)],
[Spacer(1, 12)],
[Paragraph("Prepared by Orris Medical AI · Based on Gray's Anatomy for Students,<br/>Scott-Brown's Otorhinolaryngology, and standard Phase I MBBS syllabi",
ParagraphStyle("cv3", fontSize=9, textColor=colors.HexColor("#c8d8ff"),
alignment=TA_CENTER, fontName="Helvetica", leading=13))],
]
cover_tbl = Table(cover_data, colWidths=[17*cm])
cover_tbl.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), NAVY),
("TOPPADDING",(0,0),(-1,-1), 12),
("BOTTOMPADDING",(0,0),(-1,-1), 12),
("LEFTPADDING",(0,0),(-1,-1), 20),
("RIGHTPADDING",(0,0),(-1,-1), 20),
]))
story.append(cover_tbl)
story.append(sp(16))
# ── TABLE OF CONTENTS ──────────────────────────────────────────────────────
story.append(Paragraph("<b>TABLE OF CONTENTS</b>", section_style))
story.append(hr())
toc_items = [
("Q1", "Right Atrium – Internal/External Features, Veins, Coronary Supply + Coronary Venous Sinus", "4+1+2+3"),
("Q2", "Tongue – Gross Features, Muscles, Nerve Supply, Lymphatics, Applied Anatomy", "—"),
("Q3", "Pleura – Layers, Recesses, Blood Supply, Nerve Supply", "2+4+2+2"),
("Q4", "Thyroid Gland – Clinical Case (Goiter)", "—"),
("Q5", "Right Atrium – External/Internal Features + Interatrial Septal Development & Defects", "3+4+3"),
("Q6", "Palatine Tonsil – Tonsillectomy Case (Child)", "1+5+2+2"),
("Q7", "Right Atrium in Mitral Stenosis – Triangle of Koch, Applied Anatomy", "—"),
("Q8", "Posterior Triangle of Neck – Boundaries, Contents, Applied Aspects", "5+3+2"),
("SA", "Short Answer: Cavernous Sinus – Relations, Communications, Applied", "—"),
]
for q, title, mk in toc_items:
story.append(Paragraph(f"<b>{q}</b> {title}<font color='#888888'> ({mk})</font>", toc_style))
story.append(sp(8))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q1 – RIGHT ATRIUM
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(1, "Right Atrium — Internal/External Features, Veins, Coronary Supply + Coronary Venous Sinus", "4+1+2+3"))
story.append(sp(8))
story.append(clinical_box("A patient presents with breathing difficulty and palpitation. Echocardiography shows right atrial hypertrophy."))
story.append(sp(8))
story.append(section_bar("a) Internal and External Features (4 marks)"))
story.append(sp(5))
story.append(Paragraph("<b>External Features:</b>", sub_section_style))
for t in ["Forms the right border of the heart and contributes to the right portion of the anterior surface",
"Sulcus terminalis cordis – a shallow, vertical external groove running from the SVC to the IVC opening",
"Right auricle – an ear-like, conical, muscular pouch overlapping the ascending aorta anteriorly",
"Coronary sulcus (AV groove) separates the atrium from the right ventricle externally"]:
story.append(bp(t))
story.append(sp(5))
story.append(Paragraph("<b>Internal Features:</b>", sub_section_style))
story.append(b("The interior is divided into two continuous spaces by the crista terminalis:"))
story.append(sp(3))
story.append(make_table(
["Part", "Wall Character", "Embryological Origin", "Features"],
[
["Sinus Venarum (posterior)", "Smooth, thin walls", "Right horn of sinus venosus", "Receives SVC, IVC, coronary sinus"],
["Atrium Proper (anterior)", "Rough – pectinate muscles", "Primitive embryonic atrium", "Musculi pectinati fan from crista terminalis; includes right auricle"],
],
col_widths=[3.5*cm, 3.5*cm, 4.5*cm, 5.5*cm]
))
story.append(sp(5))
for t in ["Crista terminalis – smooth muscular ridge from roof (anterior to SVC) to anterior lip of IVC; corresponds externally to sulcus terminalis",
"Fossa ovalis – oval depression in the interatrial septum; remnant of foramen ovale; surrounded by limbus fossae ovalis",
"Tricuspid (right AV) orifice – faces forward and medially; guarded by tricuspid valve (3 cusps: anterior, posterior, septal)",
"Musculi pectinati (pectinate muscles) – comb-like ridges covering the atrium proper and auricle"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("b) Veins Opening into the Right Atrium (1 mark)"))
story.append(sp(5))
story.append(make_table(
["Vein", "Entry Point", "Valve"],
[
["Superior vena cava (SVC)", "Upper posterior RA – no valve", "None"],
["Inferior vena cava (IVC)", "Lower posterior RA", "Eustachian valve (valve of IVC) – directs fetal blood through foramen ovale"],
["Coronary sinus", "Between IVC orifice and tricuspid valve", "Thebesian valve (valve of coronary sinus)"],
],
col_widths=[4.5*cm, 6*cm, 6.5*cm]
))
story.append(sp(8))
story.append(section_bar("c) Coronary Blood Supply of Right Atrium (2 marks)"))
story.append(sp(5))
for t in ["Right coronary artery (RCA) – main supply; arises from the right aortic sinus",
"SA nodal artery – in ~60% arises from RCA; supplies the SA node embedded in the RA wall near the SVC",
"Atrial branches of RCA supply the right atrial walls including the crista terminalis",
"Venous drainage: Anterior cardiac veins drain directly into the RA; remaining cardiac veins via the coronary sinus"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("NOTE on Coronary Venous Sinus (3 marks)"))
story.append(sp(5))
for t in ["Location: In the posterior part of the atrioventricular (coronary) sulcus between left atrium and left ventricle",
"Length: ~3 cm; opens into the right atrium between the IVC and tricuspid orifice",
"Guarded by: Thebesian valve (semilunar valve)"]:
story.append(bp(t))
story.append(sp(4))
story.append(b("<b>Tributaries of the Coronary Sinus:</b>"))
story.append(make_table(
["Tributary", "Drains"],
[
["Great cardiac vein", "Anterior interventricular groove; enters at left end of sinus"],
["Middle cardiac vein", "Posterior interventricular groove"],
["Small cardiac vein", "Right margin of heart"],
["Left marginal vein", "Left margin of heart"],
["Oblique vein of Marshall", "Left atrium"],
["Left posterior ventricular vein", "Posterior left ventricle"],
],
col_widths=[7*cm, 10*cm]
))
story.append(sp(5))
story.append(note_box("Clinical: Coronary sinus is the route for CRT (cardiac resynchronization therapy) lead placement for the LV, and for retrograde cardioplegia during cardiac surgery. Forms the inferior border of the Triangle of Koch."))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q2 – TONGUE
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(2, "Tongue — Gross Features, Muscles, Nerve Supply, Lymphatics, Applied Anatomy"))
story.append(sp(8))
story.append(section_bar("a) Gross Features"))
story.append(sp(5))
story.append(b("The tongue is a muscular structure forming part of the floor of the oral cavity and anterior wall of the oropharynx."))
story.append(sp(4))
story.append(Paragraph("<b>Parts:</b>", sub_section_style))
story.append(make_table(
["Part", "Description"],
[
["Apex", "Anterior tip; rests behind incisor teeth"],
["Body (oral / anterior 2/3)", "Horizontal; bears papillae; separated from posterior 1/3 by terminal sulcus"],
["Root", "Attached to mandible and hyoid bone"],
["Posterior 1/3 (pharyngeal)", "Vertical; bears lingual tonsil; separated from oral part by terminal sulcus (V-shaped)"],
["Foramen caecum", "At apex of terminal sulcus; embryological origin of the thyroid gland"],
],
col_widths=[5*cm, 12*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Papillae on dorsum (oral 2/3):</b>", sub_section_style))
story.append(make_table(
["Type", "Shape", "Taste Buds", "Note"],
[
["Filiform", "Cone-shaped, numerous", "None", "Give rough texture; most abundant"],
["Fungiform", "Rounded, scattered", "Present", "Concentrated along margins"],
["Vallate (Circumvallate)", "Large, cylindrical invaginations", "Present", "8–12 in V-line; largest papillae"],
["Foliate", "Linear folds on sides", "Rudimentary", "Near sulcus terminalis"],
],
col_widths=[4*cm, 4*cm, 3*cm, 6*cm]
))
story.append(sp(8))
story.append(section_bar("b) Muscles of the Tongue with Action"))
story.append(sp(4))
story.append(Paragraph("<b>Intrinsic Muscles</b> (alter shape, no bony attachment, all innervated by CN XII):", sub_section_style))
story.append(make_table(
["Muscle", "Action"],
[
["Superior longitudinal", "Shortens tongue; turns tip upward"],
["Inferior longitudinal", "Shortens tongue; turns tip downward"],
["Transverse", "Narrows and elongates tongue"],
["Vertical", "Flattens and broadens tongue"],
],
col_widths=[6*cm, 11*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Extrinsic Muscles</b> (move tongue as a whole):", sub_section_style))
story.append(make_table(
["Muscle", "Origin", "Action", "Nerve"],
[
["Genioglossus", "Genial tubercle of mandible", "Protrudes tongue; depresses center (most important)", "CN XII"],
["Hyoglossus", "Body + greater horn of hyoid", "Depresses and retracts tongue", "CN XII"],
["Styloglossus", "Styloid process", "Retracts and elevates tongue", "CN XII"],
["Palatoglossus", "Palatine aponeurosis", "Elevates posterior tongue; closes oropharyngeal isthmus", "CN X (pharyngeal plexus)"],
],
col_widths=[3.5*cm, 3.5*cm, 5.5*cm, 4.5*cm]
))
story.append(sp(4))
story.append(note_box("Memory: All tongue muscles = CN XII EXCEPT Palatoglossus = CN X (vagus via pharyngeal plexus)"))
story.append(sp(8))
story.append(section_bar("c) Motor and Sensory Nerve Supply"))
story.append(sp(4))
story.append(make_table(
["Region", "General Sensation", "Taste (Special)"],
[
["Anterior 2/3", "Lingual nerve (branch of V3 – mandibular)", "Chorda tympani (CN VII) traveling with lingual nerve"],
["Posterior 1/3", "Glossopharyngeal nerve (CN IX)", "Glossopharyngeal nerve (CN IX)"],
["Epiglottic region", "Internal laryngeal nerve (CN X)", "Internal laryngeal nerve (CN X)"],
],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
))
story.append(sp(4))
story.append(b("<b>Motor:</b> All intrinsic and extrinsic muscles → <b>Hypoglossal nerve (CN XII)</b>, except palatoglossus → CN X."))
story.append(sp(8))
story.append(section_bar("d) Lymphatic Drainage"))
story.append(sp(4))
story.append(make_table(
["Region", "Primary Nodes"],
[
["Tip of tongue", "Submental lymph nodes (bilateral)"],
["Anterior 2/3 (lateral)", "Submandibular lymph nodes"],
["Central anterior 2/3", "Deep cervical nodes directly (crosses midline → bilateral spread)"],
["Posterior 1/3", "Jugulodigastric (deep cervical) nodes"],
],
col_widths=[5*cm, 12*cm]
))
story.append(sp(4))
story.append(note_box("All lymphatics ultimately drain into the deep cervical chain. Central tongue lymphatics cross midline → bilateral nodal metastasis possible in tongue carcinoma."))
story.append(sp(8))
story.append(section_bar("e) Applied Anatomy"))
story.append(sp(4))
for t in ["Hypoglossal nerve palsy: tongue deviates toward the paralyzed side on protrusion (weak genioglossus cannot push that side forward)",
"Tongue carcinoma (SCC): most common oral cancer; may require bilateral neck dissection due to midline lymphatic crossing",
"Tongue-tie (Ankyloglossia): short frenulum restricts tongue movement; affects feeding and speech",
"Chorda tympani damage (e.g., in parotid surgery): loss of taste from anterior 2/3",
"Ludwig's angina: spreading cellulitis of the floor of the mouth elevates the tongue, threatening the airway – surgical emergency"]:
story.append(bp(t))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q3 – PLEURA
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(3, "Pleura — Layers, Subdivisions, Recesses, Blood Supply, Nerve Supply", "2+4+2+2"))
story.append(sp(8))
story.append(section_bar("a) Layers and Subdivisions of Parietal Pleura (2 marks)"))
story.append(sp(5))
story.append(b("The pleura is a serous membrane lining each pleural cavity, consisting of a single layer of mesothelium with supporting connective tissue."))
story.append(sp(3))
story.append(Paragraph("<b>Two Major Layers:</b>", sub_section_style))
story.append(make_table(
["Layer", "Location", "Pain Sensitivity"],
[
["Parietal Pleura", "Lines the walls of the pleural cavity", "Sensitive to pain (somatic innervation)"],
["Visceral Pleura", "Covers the lung surface (including fissures)", "Insensitive to pain (autonomic innervation)"],
],
col_widths=[4*cm, 8.5*cm, 4.5*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Subdivisions of Parietal Pleura:</b>", sub_section_style))
story.append(make_table(
["Part", "Location", "Special Note"],
[
["Costal pleura", "Lines ribs and intercostal spaces", "Thickest part; intercostal nerves"],
["Diaphragmatic pleura", "Covers upper surface of diaphragm", "Central: phrenic nerve (referred shoulder pain); Peripheral: intercostal nerves"],
["Mediastinal pleura", "Covers lateral mediastinum; forms pulmonary ligament below hilum", "Phrenic nerve innervation"],
["Cervical pleura (pleural cupola)", "Dome above medial 1/3 of clavicle (2–3 cm into neck)", "Supported by suprapleural membrane (Sibson's fascia); at risk in neck surgery and subclavian catheterisation"],
],
col_widths=[4*cm, 6*cm, 7*cm]
))
story.append(sp(8))
story.append(section_bar("b) Pleural Recesses and Clinical Significance (4 marks)"))
story.append(sp(5))
story.append(b("Pleural recesses are potential spaces where two layers of parietal pleura are in contact (not separated by lung). They accommodate lung expansion during deep inspiration and are sites where pleural fluid collects."))
story.append(sp(4))
story.append(make_table(
["Recess", "Location", "Depth", "Clinical Significance"],
[
["Costodiaphragmatic (most important)", "Between costal and diaphragmatic pleura", "Midaxillary line at 7th rib; posteriorly to 12th rib", "Pleural effusion accumulates here. Thoracocentesis: needle in 9th ICS, midaxillary line, just above lower rib edge"],
["Costomediastinal", "Between costal and mediastinal pleura anteriorly (retrosternal)", "Behind sternum and costal cartilages", "Pericardiocentesis performed through left costomediastinal recess; larger on the left due to cardiac notch"],
["Vertebromediastinal", "Between costal and mediastinal pleura posteriorly", "Small recess", "Less clinically significant"],
],
col_widths=[3.8*cm, 4*cm, 4*cm, 5.2*cm]
))
story.append(sp(5))
story.append(note_box("Thoracocentesis tip: Insert needle just ABOVE the upper border of the lower rib to avoid the neurovascular bundle (which runs in the subcostal groove of the upper rib)."))
story.append(sp(8))
story.append(section_bar("c) Blood Supply (2 marks)"))
story.append(sp(4))
story.append(make_table(
["Pleura", "Arterial Supply", "Venous Drainage"],
[
["Costal parietal", "Intercostal arteries + internal thoracic artery", "Intercostal veins → azygos system"],
["Diaphragmatic parietal", "Superior phrenic + musculophrenic arteries", "Phrenic veins → IVC"],
["Mediastinal parietal", "Pericardiacophrenic + bronchial arteries", "Azygos system"],
["Cervical parietal", "Subclavian artery branches", "Brachiocephalic veins"],
["Visceral pleura", "Bronchial arteries (from descending aorta)", "Pulmonary veins"],
],
col_widths=[3.5*cm, 7*cm, 6.5*cm]
))
story.append(sp(8))
story.append(section_bar("d) Nerve Supply (2 marks)"))
story.append(sp(4))
story.append(make_table(
["Region", "Nerve", "Pain Referral"],
[
["Costal parietal pleura", "Intercostal nerves (T1–T11)", "Thoracic wall – well-localised pleuritic pain"],
["Diaphragmatic (peripheral)", "Lower 6 intercostal nerves", "Lower chest and abdominal wall"],
["Diaphragmatic (central) + Mediastinal", "Phrenic nerve (C3,4,5)", "Ipsilateral shoulder tip"],
["Cervical parietal", "Phrenic nerve + lower cervical", "Shoulder tip"],
["Visceral pleura", "Autonomic (vagal + sympathetic via pulmonary plexus)", "No pain – insensitive to pain"],
],
col_widths=[4.5*cm, 5.5*cm, 7*cm]
))
story.append(sp(5))
story.append(clinical_box("Pleurisy: Inflammation of parietal pleura → sharp, well-localised chest pain worsened by breathing. Central diaphragmatic involvement → referred shoulder pain (Kehr's sign). Visceral pleuritis does NOT cause pain."))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q4 – THYROID GLAND (CLINICAL CASE)
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(4, "Thyroid Gland — Clinical Case: 48-Year-Old Female with Neck Swelling"))
story.append(sp(8))
story.append(clinical_box("A 48-year-old female presents with a firm, non-tender midline swelling below the thyroid cartilage that moves on swallowing, with mild hoarseness and breathing difficulty over past few weeks."))
story.append(sp(8))
story.append(section_bar("a) Probable Clinical Condition"))
story.append(sp(4))
story.append(b("<b>Goitre</b> (enlarged thyroid gland) – most likely a <b>nodular goitre</b> or <b>thyroid neoplasm</b>. Given the firm consistency, hoarseness, and breathing difficulty, a malignant thyroid nodule compressing or invading the recurrent laryngeal nerve and trachea must be excluded. The midline location below the thyroid cartilage, firm texture, and movement with swallowing (deglutition) are classical features of thyroid pathology."))
story.append(sp(8))
story.append(section_bar("b) Position, Lobes, Coverings, Relations, Arterial Supply"))
story.append(sp(4))
story.append(Paragraph("<b>Position:</b>", sub_section_style))
for t in ["Anterior in the neck, below and lateral to the thyroid cartilage",
"In the visceral compartment of the neck, deep to the strap muscles (sternohyoid, sternothyroid, omohyoid)",
"Surrounded and contained by the pretracheal layer of deep cervical fascia"]:
story.append(bp(t))
story.append(sp(4))
story.append(Paragraph("<b>Lobes and Isthmus:</b>", sub_section_style))
for t in ["Two lateral lobes covering anterolateral surfaces of trachea, cricoid cartilage, and lower thyroid cartilage",
"Isthmus connects the two lobes anteriorly; crosses the 2nd and 3rd tracheal rings",
"Pyramidal lobe: ascending process from the isthmus (remnant of thyroglossal duct), present in ~50% of people"]:
story.append(bp(t))
story.append(sp(4))
story.append(Paragraph("<b>Coverings:</b>", sub_section_style))
for t in ["True capsule: condensation of the gland's own connective tissue; sends septa into the gland",
"False (surgical) capsule: derived from pretracheal fascia; attached to the larynx and trachea via Berry's ligament (posterior suspensory ligament) – explains why the gland moves with swallowing",
"Strap muscles lie anterolateral to the false capsule"]:
story.append(bp(t))
story.append(sp(4))
story.append(Paragraph("<b>Relations:</b>", sub_section_style))
story.append(make_table(
["Direction", "Relations"],
[
["Anterolateral", "Sternohyoid, sternothyroid, omohyoid (strap muscles); sternocleidomastoid"],
["Posteromedial", "Trachea, oesophagus (slightly to left), larynx, pharynx; common carotid artery and internal jugular vein in carotid sheath"],
["Posterior (important)", "Parathyroid glands (4 total, 2 on each lobe posterior surface); recurrent laryngeal nerve in tracheoesophageal groove"],
],
col_widths=[3.5*cm, 13.5*cm]
))
story.append(sp(4))
story.append(Paragraph("<b>Arterial Supply:</b>", sub_section_style))
story.append(make_table(
["Artery", "Origin", "Supply"],
[
["Superior thyroid artery", "1st branch of external carotid artery", "Upper pole of each lobe; runs with external laryngeal nerve"],
["Inferior thyroid artery", "Thyrocervical trunk (1st part of subclavian)", "Lower pole and parathyroid glands; closely related to recurrent laryngeal nerve"],
["Thyroid ima artery (occasional ~10%)", "Brachiocephalic trunk or aortic arch", "Ascends on anterior trachea; must be anticipated in emergency tracheostomy"],
],
col_widths=[4.5*cm, 5*cm, 7.5*cm]
))
story.append(sp(5))
story.append(b("<b>Venous drainage:</b> Superior thyroid vein → internal jugular; Middle thyroid vein → internal jugular; Inferior thyroid veins → brachiocephalic veins (L and R)."))
story.append(sp(8))
story.append(section_bar("c) Nerves at Risk During Thyroid Surgery"))
story.append(sp(4))
story.append(make_table(
["Nerve", "Course near Thyroid", "Effect of Damage"],
[
["Recurrent Laryngeal Nerve (RLN)", "Ascends in tracheoesophageal groove; complex relationship with inferior thyroid artery at Berry's triangle", "Unilateral: hoarseness, breathy voice, bovine cough\nBilateral: aphonia, stridor, respiratory distress – may require tracheostomy"],
["External Laryngeal Nerve", "Runs with superior thyroid artery to reach cricothyroid muscle; at risk during ligation of superior thyroid artery", "Loss of voice pitch control ('singer's nerve'); inability to produce high-pitched sounds"],
],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
))
story.append(sp(8))
story.append(section_bar("d) Why the Swelling Moves with Deglutition"))
story.append(sp(4))
story.append(b("The thyroid gland is enclosed within the pretracheal fascia and attached to the larynx and trachea by the <b>posterior suspensory ligament of Berry</b>. During swallowing, the suprahyoid muscles pull the larynx and trachea superiorly. Since the thyroid gland is firmly tethered to these structures via its fascial attachments, it moves upward with them. This distinguishes thyroid swellings from other neck masses (e.g., lymph nodes, lipomas) which do NOT move on swallowing."))
story.append(sp(8))
story.append(section_bar("e) Anatomical Basis for Hoarseness and Breathing Difficulty"))
story.append(sp(4))
story.append(Paragraph("<b>Hoarseness:</b>", sub_section_style))
for t in ["Compression or invasion of the recurrent laryngeal nerve (RLN) by the enlarged thyroid or tumour",
"RLN supplies ALL intrinsic laryngeal muscles except cricothyroid → its dysfunction causes vocal cord palsy",
"Unilateral RLN palsy → hoarse, breathy voice; ipsilateral vocal cord in paramedian position"]:
story.append(bp(t))
story.append(sp(4))
story.append(Paragraph("<b>Breathing Difficulty:</b>", sub_section_style))
for t in ["Large goitre (especially retrosternal) directly compresses the trachea, reducing its lumen",
"Tracheomalacia: softening of tracheal rings from prolonged compression → tracheal collapse on inspiration",
"Pemberton's sign: raising both arms above the head causes facial congestion and stridor in retrosternal goitre (obstruction of thoracic inlet)",
"Bilateral RLN palsy: both vocal cords in paramedian position → severe glottic obstruction"]:
story.append(bp(t))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q5 – RIGHT ATRIUM + INTERATRIAL SEPTUM
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(5, "Right Atrium — External/Internal Features + Interatrial Septal Development & Defects", "3+4+3"))
story.append(sp(8))
story.append(section_bar("External and Internal Features (3 marks) – see also Q1"))
story.append(sp(4))
story.append(b("Refer to Q1 for the detailed account. Summary below:"))
story.append(sp(3))
story.append(make_table(
["Feature", "Description"],
[
["Right border", "Formed by right atrium (visible on CXR and echo)"],
["Sulcus terminalis", "Shallow vertical groove externally; corresponds internally to crista terminalis"],
["Right auricle", "Conical muscular pouch; overlaps ascending aorta; contains pectinate muscles"],
["Sinus venarum", "Smooth posterior part; receives SVC, IVC, coronary sinus"],
["Crista terminalis", "Muscular ridge separating smooth and rough parts of RA interior"],
["Pectinate muscles", "Comb-like ridges in atrium proper and auricle"],
["Fossa ovalis", "Oval depression in interatrial septum; remnant of foramen ovale; bounded by limbus fossae ovalis"],
["Triangle of Koch", "Bounded by: coronary sinus os, tendon of Todaro, septal leaflet of tricuspid valve. AV node at apex"],
],
col_widths=[4.5*cm, 12.5*cm]
))
story.append(sp(8))
story.append(section_bar("Interatrial Septal Development (4 marks)"))
story.append(sp(5))
story.append(make_table(
["Stage", "Structure", "Event"],
[
["Stage 1", "Septum Primum", "Crescentic downward-growing partition from roof of primitive atrium toward endocardial cushions"],
["", "Ostium Primum", "Gap between free edge of septum primum and endocardial cushions; initial interatrial communication (right→left shunt)"],
["", "Ostium Secundum", "Before ostium primum closes: perforations appear in UPPER part of septum primum → new communication ensures continued right-to-left blood flow"],
["Stage 2", "Septum Secundum", "Thicker, C-shaped septum grows from roof to the RIGHT of septum primum; has a central opening = Foramen Ovale"],
["Fetal circulation", "Foramen Ovale (functional)", "Oxygenated IVC blood → right atrium → through foramen ovale (septum primum acts as flap valve) → left atrium → bypasses non-functional lungs"],
["After birth", "Functional closure → Fossa Ovalis", "Increased left atrial pressure pushes septum primum against septum secundum → permanent fusion → fossa ovalis (oval depression remnant)"],
],
col_widths=[2.5*cm, 4*cm, 10.5*cm]
))
story.append(sp(8))
story.append(section_bar("Interatrial Septal Defects (3 marks)"))
story.append(sp(4))
story.append(make_table(
["Type", "Location", "% of ASDs", "Key Feature / Association"],
[
["Patent Foramen Ovale (PFO)", "Fossa ovalis (no true septal deficiency; failure of fusion)", "~25% of adults (normal variant)", "Paradoxical embolism; cryptogenic stroke"],
["Ostium Secundum ASD", "Region of fossa ovalis; failure of ostium secundum to close", "~70% (most common)", "Left-to-right shunt → RA and RV enlargement; fixed wide splitting of S2"],
["Ostium Primum ASD", "Low, at level of AV valves (part of AV septal defect)", "~20%", "Associated with Down syndrome; mitral and tricuspid valve defects"],
["Sinus Venosus ASD", "High – near SVC or IVC ostium", "~10%", "Partial anomalous pulmonary venous return"],
["Coronary sinus ASD", "Unroofed coronary sinus", "Rare", "Defect between coronary sinus and left atrium"],
],
col_widths=[3.5*cm, 4*cm, 2.5*cm, 7*cm]
))
story.append(sp(5))
story.append(clinical_box("Eisenmenger Syndrome: Uncorrected left-to-right ASD → pulmonary hypertension → reversal to right-to-left shunt → central cyanosis. At this stage the ASD cannot be surgically closed."))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q6 – PALATINE TONSIL
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(6, "Palatine Tonsil — Tonsillectomy (6-Year-Old with Sore Throat)", "1+5+2+2"))
story.append(sp(8))
story.append(clinical_box("A 6-year-old child with sore throat, dysphagia, fever; palatine tonsils enlarged, inflamed, covered with white exudates. ENT surgeon advises tonsillectomy."))
story.append(sp(8))
story.append(section_bar("a) Clinical Procedure for Removal of Tonsils (1 mark)"))
story.append(sp(4))
story.append(b("<b>Tonsillectomy</b> – surgical removal of the palatine tonsils through the open mouth under general anaesthesia. The tonsil is dissected from its bed in the plane of the fibrous hemicapsule, separating it from the superior constrictor muscle. Haemostasis by ligation or electrocautery."))
story.append(sp(8))
story.append(section_bar("b) Location, Relations, Blood Supply, Lymphatic Drainage (5 marks)"))
story.append(sp(4))
story.append(Paragraph("<b>Location:</b>", sub_section_style))
for t in ["Tonsillar fossa on the lateral wall of the oropharynx, between the palatoglossal and palatopharyngeal arches",
"Forms the anteroinferior part of Waldeyer's ring of lymphoid tissue",
"Waldeyer's ring: palatine tonsils (lateral) + adenoids/nasopharyngeal tonsil (posterosuperior) + lingual tonsil (inferior) + tubal tonsils"]:
story.append(bp(t))
story.append(sp(5))
story.append(Paragraph("<b>Relations:</b>", sub_section_style))
story.append(make_table(
["Surface/Side", "Relation"],
[
["Medial (free surface)", "Projects into oropharynx; 10–15 pits (crypts) extending through the whole tonsil"],
["Lateral (deep surface)", "Fibrous hemicapsule → easily separated from superior constrictor muscle"],
["Anteriorly (anterior pillar)", "Palatoglossal fold and muscle"],
["Posteriorly (posterior pillar)", "Palatopharyngeal fold and muscle"],
["Superiorly", "Soft palate; supratonsillar fossa (triangular recess above tonsil)"],
["Lateral to hemicapsule", "Paratonsillar (external palatine) vein descends from soft palate – major bleeding risk in tonsillectomy"],
["Deep to superior constrictor", "Glossopharyngeal nerve (CN IX), facial artery, styloglossus muscle, internal carotid artery (~2.5 cm posterolateral)"],
],
col_widths=[4.5*cm, 12.5*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Blood Supply:</b>", sub_section_style))
story.append(make_table(
["Artery", "Source", "Note"],
[
["Tonsillar branch of facial artery", "Facial artery (ECA branch)", "Main and most important supply"],
["Ascending palatine artery", "Facial artery", "Via soft palate"],
["Lingual artery (dorsalis linguae)", "ECA", "From below"],
["Ascending pharyngeal artery", "ECA directly", "From behind"],
["Greater palatine artery", "Maxillary artery (ECA)", "From above"],
],
col_widths=[5.5*cm, 5*cm, 6.5*cm]
))
story.append(sp(3))
story.append(b("<b>Venous drainage:</b> Paratonsillar vein → pharyngeal plexus → internal jugular vein."))
story.append(sp(5))
story.append(Paragraph("<b>Lymphatic Drainage:</b>", sub_section_style))
for t in ["Primary: Jugulodigastric node (tonsillar node) – at junction of internal jugular vein and posterior belly of digastric; typically enlarged and tender in acute tonsillitis",
"Secondary: Upper and middle deep cervical lymph nodes"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("c) Structures Forming the Tonsillar Bed (2 marks)"))
story.append(sp(4))
story.append(make_table(
["Layer (medial → lateral)", "Structure"],
[
["1 (innermost)", "Superior constrictor muscle – primary component of the tonsillar bed"],
["2", "Buccopharyngeal fascia – on the outer surface of the superior constrictor"],
["3", "Glossopharyngeal nerve (CN IX) – curves around stylopharyngeus just deep to the tonsil"],
["4", "Styloglossus muscle – lateral to superior constrictor"],
["5", "Facial artery – loops close behind/below the tonsillar bed (major risk of injury)"],
["6", "Internal carotid artery – approximately 2.5 cm posterolateral (rarely at risk in standard tonsillectomy but can be in aberrant anatomy)"],
["Also (in capsule)", "Paratonsillar vein – lies lateral to hemicapsule; common bleeding vessel"],
],
col_widths=[4*cm, 13*cm]
))
story.append(sp(8))
story.append(section_bar("d) Applied Anatomy of Palatine Tonsil (2 marks)"))
story.append(sp(4))
for t in ["Quinsy (Peritonsillar abscess): Pus collects between the tonsillar hemicapsule and superior constrictor muscle → trismus, muffled/hot-potato voice, uvula deviated to contralateral side; drained by aspiration or I&D at the superior pole",
"Referred otalgia: Tonsillitis causes ear pain via Jacobson's nerve (tympanic branch of CN IX), which also supplies the middle ear mucosa",
"Post-tonsillectomy haemorrhage: Primary (<24 h) from paratonsillar vein or facial artery; Secondary (5–10 days) from sloughing of eschar",
"Waldeyer's ring function: First line of immunological defence at the entry of the aerodigestive tract; part of MALT",
"Glossopharyngeal nerve damage in tonsillectomy: Loss of taste from posterior 1/3 of tongue; loss of gag reflex on that side"]:
story.append(bp(t))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q7 – MITRAL STENOSIS / RIGHT ATRIUM / TRIANGLE OF KOCH
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(7, "Right Atrial Enlargement due to Mitral Stenosis — Triangle of Koch, Applied Anatomy"))
story.append(sp(8))
story.append(clinical_box("A 50-year-old male with difficulty swallowing. Echocardiography shows right atrial enlargement due to mitral stenosis."))
story.append(sp(8))
story.append(section_bar("Syndrome Name"))
story.append(sp(4))
story.append(b("<b>Right Heart Failure secondary to Mitral Stenosis.</b>"))
story.append(b("Mitral stenosis → left atrial obstruction → pulmonary venous hypertension → pulmonary arterial hypertension → right ventricular pressure overload → right ventricular hypertrophy/failure → right atrial hypertension → right atrial enlargement."))
story.append(b("Dysphagia in this context: Massive left atrial enlargement compresses the oesophagus posteriorly. Hoarseness (if present) due to enlarged LA/pulmonary artery compressing the left recurrent laryngeal nerve = <b>Ortner's syndrome (cardiovocal syndrome)</b>."))
story.append(sp(8))
story.append(section_bar("a) External and Internal Features of Right Atrium"))
story.append(sp(4))
story.append(b("See Q1 and Q5 for the complete detailed account. Summary:"))
story.append(sp(3))
story.append(make_table(
["External", "Internal"],
[
["Right cardiac border", "Sinus venarum (smooth) – posterior, receives SVC/IVC/coronary sinus"],
["Sulcus terminalis", "Crista terminalis – muscular ridge"],
["Right auricle (overlaps ascending aorta)", "Pectinate muscles in atrium proper"],
["Coronary sulcus with RCA", "Fossa ovalis – remnant of foramen ovale"],
["", "Tricuspid orifice with 3-cusped tricuspid valve"],
["", "Triangle of Koch – contains AV node at apex"],
],
col_widths=[8.5*cm, 8.5*cm]
))
story.append(sp(8))
story.append(section_bar("b) Triangle of Koch and Its Significance"))
story.append(sp(4))
story.append(b("<b>Triangle of Koch</b> is an anatomical landmark on the interatrial septum viewed from inside the right atrium."))
story.append(sp(4))
story.append(make_table(
["Boundary", "Structure"],
[
["Anterior / Base", "Attachment of the septal leaflet of the tricuspid valve"],
["Superior (posterior)", "Tendon of Todaro (fibrous band from valve of IVC to central fibrous body)"],
["Inferior", "Orifice of the coronary sinus"],
["Apex (convergence of all three)", "Location of the AV NODE (Aschoff-Tawara node)"],
],
col_widths=[5*cm, 12*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Significance:</b>", sub_section_style))
for t in ["The AV node lies at the apex – injury during tricuspid valve surgery or septal defect repair causes complete heart block (requires permanent pacemaker)",
"Electrophysiology: Target for ablation of AV nodal re-entrant tachycardia (AVNRT); slow pathway ablation is performed at the base of the triangle near the coronary sinus os",
"Landmark for cardiac catheterisation procedures and mitral valve surgery approach"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("c) Applied Anatomy"))
story.append(sp(4))
for t in ["Mitral stenosis pathophysiology: Left atrial obstruction → ↑LAP → pulmonary venous hypertension → pulmonary oedema + pulmonary arterial hypertension → right heart strain → RA enlargement + TR",
"Left atrial enlargement: Compresses oesophagus (dysphagia), left RLN (hoarseness – Ortner's syndrome), and left main bronchus (elevation of left bronchus on CXR)",
"Atrial fibrillation: Enlarged right (and left) atrium predisposes to AF – risk of thrombus formation in the right auricle and pulmonary artery",
"Cardiac catheterisation: Right atrium accessed via femoral or internal jugular vein; transseptal puncture through fossa ovalis for left heart catheterisation",
"Pulmonary hypertension sign: Loud P2, right ventricular heave, elevated JVP with prominent a and v waves"]:
story.append(bp(t))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# Q8 – POSTERIOR TRIANGLE OF NECK
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner(8, "Posterior Triangle of the Neck — Boundaries, Contents, Applied Aspects", "5+3+2"))
story.append(sp(8))
story.append(section_bar("a) Boundaries (5 marks)"))
story.append(sp(4))
story.append(make_table(
["Boundary", "Structure"],
[
["Anteriorly", "Posterior border of sternocleidomastoid (SCM) muscle"],
["Posteriorly", "Anterior border of trapezius muscle"],
["Base (Inferiorly)", "Middle one-third of the clavicle"],
["Apex (Superiorly)", "Occipital bone just posterior to mastoid process (where SCM and trapezius converge)"],
["Roof", "Investing (superficial) layer of deep cervical fascia passing between SCM and trapezius; overlaid by platysma and skin"],
["Floor", "Prevertebral fascia over the prevertebral muscles (splenius capitis, levator scapulae, posterior, middle, and anterior scalene muscles)"],
],
col_widths=[4.5*cm, 12.5*cm]
))
story.append(sp(5))
story.append(Paragraph("<b>Subdivision by Omohyoid Muscle:</b>", sub_section_style))
story.append(b("The inferior belly of the omohyoid muscle crosses the lower part of the triangle, dividing it into:"))
for t in ["Occipital triangle (larger, superior): contains the accessory nerve, cervical plexus branches, and occipital artery",
"Omoclavicular (subclavian/supraclavicular) triangle (smaller, inferior): contains the subclavian artery (3rd part), brachial plexus roots, and subclavian vein"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("b) Contents (3 marks)"))
story.append(sp(4))
story.append(Paragraph("<b>Arteries:</b>", sub_section_style))
story.append(make_table(
["Artery", "Origin", "Course in Triangle"],
[
["Occipital artery", "External carotid artery", "Crosses the apex of the posterior triangle"],
["Transverse cervical artery", "Thyrocervical trunk (subclavian)", "Passes laterally across the base; divides into superficial and deep branches at trapezius"],
["Suprascapular artery", "Thyrocervical trunk (subclavian)", "Passes across lowest part of triangle; passes over superior transverse scapular ligament"],
["Subclavian artery (3rd part)", "Continuation of 2nd part", "Crosses base of omoclavicular triangle between anterior and middle scalene muscles"],
],
col_widths=[4.5*cm, 4.5*cm, 8*cm]
))
story.append(sp(4))
story.append(Paragraph("<b>Veins:</b>", sub_section_style))
for t in ["External jugular vein – most superficial; descends vertically across SCM into posterior triangle; drains into subclavian vein at its base",
"Subclavian vein – at the base of the triangle (omoclavicular triangle)",
"Transverse cervical and suprascapular veins – tributaries of EJV or subclavian vein"]:
story.append(bp(t))
story.append(sp(4))
story.append(Paragraph("<b>Nerves:</b>", sub_section_style))
story.append(make_table(
["Nerve", "Course", "Significance"],
[
["Accessory nerve (CN XI)", "Emerges from deep to SCM; crosses triangle obliquely within investing fascia to reach anterior border of trapezius", "MOST important nerve; very superficial and poorly protected"],
["Cervical plexus (cutaneous) at Erb's point", "Emerge at midpoint of posterior border of SCM (Erb's point): lesser occipital (C2), great auricular (C2,C3), transverse cervical (C2,C3), supraclavicular (C3,C4)", "Site for cervical plexus block"],
["Brachial plexus roots (C5–T1)", "Emerge between anterior and middle scalene; visible at base of triangle", "At risk in biopsy procedures"],
["Phrenic nerve (C3,4,5)", "Descends on anterior scalene deep to prevertebral fascia", "Can be injured in deep dissection at triangle base"],
],
col_widths=[4*cm, 7*cm, 6*cm]
))
story.append(sp(4))
story.append(Paragraph("<b>Lymph Nodes:</b>", sub_section_style))
for t in ["Spinal accessory chain (along CN XI) – drain scalp, back of neck",
"Transverse cervical chain",
"Supraclavicular nodes: Virchow's node on LEFT (Troisier's sign) – metastasis from thoracic/abdominal malignancies"]:
story.append(bp(t))
story.append(sp(8))
story.append(section_bar("c) Applied Aspects (2 marks)"))
story.append(sp(4))
for t in ["Accessory nerve (CN XI) injury: Complication of posterior triangle lymph node biopsy/surgery → trapezius paralysis – drooped shoulder, inability to abduct arm above 90°, winging of scapula, chronic shoulder pain. Nerve is superficial within the investing fascia.",
"Erb's point / Cervical plexus block: Cutaneous nerves emerge at midpoint of SCM posterior border; used for anaesthesia in neck and thyroid surgery",
"Supraclavicular lymph node biopsy / Virchow's node: Enlargement of left supraclavicular node (Troisier's sign) = metastasis from stomach, pancreas, lung, ovary",
"Subclavian vein cannulation: At base of omoclavicular triangle; risk of pneumothorax (cervical pleura extends into this area) and subclavian artery puncture",
"Cervical rib / Thoracic outlet syndrome: Extra rib from C7 passes through the posterior triangle; compresses brachial plexus or subclavian artery → pain, paraesthesia, and ischaemia of the upper limb",
"Brachial plexus injury: Stab wounds or iatrogenic injury during lymph node dissection can damage roots C5–T1 in the posterior triangle"]:
story.append(bp(t))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SHORT ANSWER – CAVERNOUS SINUS
# ═══════════════════════════════════════════════════════════════════════════
story.append(q_banner("SA", "Short Answer: Cavernous Sinus — Relations, Communications, Applied Aspects"))
story.append(sp(8))
story.append(section_bar("Relations of the Cavernous Sinus"))
story.append(sp(4))
story.append(b("The cavernous sinus is a paired venous sinus located in the middle cranial fossa, on either side of the pituitary fossa (sella turcica), between the endosteal and meningeal layers of dura mater."))
story.append(sp(4))
story.append(make_table(
["Location", "Contents / Relations"],
[
["Lateral wall (superior to inferior)", "CN III (Oculomotor)\nCN IV (Trochlear)\nCN V1 (Ophthalmic division of trigeminal)\nCN V2 (Maxillary division of trigeminal)"],
["Within the sinus (traverses the sinus)", "Internal carotid artery (with its sympathetic plexus)\nCN VI (Abducens nerve) – runs most medially within sinus"],
["Medially", "Pituitary gland and sella turcica; sphenoid sinus (air sinus below)"],
["Superiorly", "Optic chiasma; olfactory tract"],
["Anteriorly", "Superior orbital fissure (through which CN III, IV, V1, VI enter orbit)"],
],
col_widths=[5*cm, 12*cm]
))
story.append(sp(8))
story.append(section_bar("Communications of the Cavernous Sinus"))
story.append(sp(4))
story.append(make_table(
["Direction", "Communication"],
[
["Anteriorly (inflow)", "Superior ophthalmic vein (from orbit and face), Inferior ophthalmic vein, Sphenoparietal sinus"],
["Posteriorly (outflow)", "Superior petrosal sinus → transverse sinus; Inferior petrosal sinus → sigmoid sinus → internal jugular vein"],
["Across midline", "Anterior and posterior intercavernous sinuses (circular sinus around the pituitary)"],
["Inferiorly", "Pterygoid venous plexus via emissary veins through foramina ovale and lacerum"],
],
col_widths=[4.5*cm, 12.5*cm]
))
story.append(sp(8))
story.append(section_bar("Applied Aspects"))
story.append(sp(4))
story.append(make_table(
["Condition", "Mechanism", "Features"],
[
["Cavernous Sinus Thrombosis (CST)", "Infection from danger area of face (nose, upper lip) → facial vein → angular vein → superior ophthalmic vein → cavernous sinus; spreads bilaterally via intercavernous sinuses", "Exophthalmos, chemosis, ophthalmoplegia (CN III/IV/VI palsy), periorbital pain, V1/V2 sensory loss, fever; bilateral; life-threatening"],
["Carotid-Cavernous Fistula (CCF)", "Trauma or rupture of ICA aneurysm → arteriovenous communication", "Pulsating exophthalmos, bruit over eye, engorged episcleral vessels (red eye), ophthalmoplegia"],
["Pituitary adenoma", "Lateral expansion into cavernous sinus; superior expansion compresses optic chiasma", "CN III, IV, VI palsies; V1/V2 numbness; bitemporal hemianopia (chiasma)"],
["CN VI (Abducens) palsy", "First sign of raised ICP or cavernous sinus pathology; runs directly within sinus", "Medial deviation (esotropia), diplopia on lateral gaze"],
],
col_widths=[4*cm, 6*cm, 7*cm]
))
story.append(sp(5))
story.append(note_box("Memory: Lateral wall CN order = 3, 4, V1, V2 (top to bottom). CN VI is WITHIN the sinus (most vulnerable to raised ICP)."))
story.append(sp(8))
# ── FOOTER / REFERENCE NOTE ────────────────────────────────────────────────
story.append(hr())
story.append(Paragraph(
"Sources: Gray's Anatomy for Students (Elsevier), Scott-Brown's Otorhinolaryngology Head & Neck Surgery, "
"Cummings Otolaryngology, Fuster and Hurst's The Heart 15e. Prepared by Orris Medical AI.",
ParagraphStyle("footer", fontSize=8, textColor=DARK_GRAY, alignment=TA_CENTER, fontName="Helvetica-Oblique")
))
# ── BUILD PDF ───────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Give me complete answers