Make a pdf of answer of these questions according to ashwini sir notes for mbbs exam
mkdir -p /home/daytona/workspace/anatomy-answers && ls /home/daytona/workspace/a…
~/anatomy-answers/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,
ListFlowable, ListItem)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
# ── document setup ──────────────────────────────────────────────────────────
output_path = "/home/daytona/workspace/anatomy-answers/Anatomy_Exam_Answers.pdf"
doc = SimpleDocTemplate(
output_path,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2*cm
)
# ── styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
title_style = ParagraphStyle(
'TitleStyle', parent=styles['Title'],
fontSize=16, spaceAfter=6, textColor=colors.HexColor('#1a237e'),
alignment=TA_CENTER, fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'SubTitle', parent=styles['Normal'],
fontSize=10, spaceAfter=12, alignment=TA_CENTER,
textColor=colors.HexColor('#37474f')
)
h1_style = ParagraphStyle(
'H1', parent=styles['Heading1'],
fontSize=13, spaceBefore=14, spaceAfter=4,
textColor=colors.HexColor('#0d47a1'),
fontName='Helvetica-Bold',
borderPad=4,
)
h2_style = ParagraphStyle(
'H2', parent=styles['Heading2'],
fontSize=11, spaceBefore=10, spaceAfter=3,
textColor=colors.HexColor('#1565c0'),
fontName='Helvetica-Bold'
)
h3_style = ParagraphStyle(
'H3', parent=styles['Heading3'],
fontSize=10, spaceBefore=6, spaceAfter=2,
textColor=colors.HexColor('#283593'),
fontName='Helvetica-BoldOblique'
)
body_style = ParagraphStyle(
'Body', parent=styles['Normal'],
fontSize=9.5, spaceAfter=4, leading=14,
alignment=TA_JUSTIFY, fontName='Helvetica'
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=9.5, spaceAfter=2, leading=13,
leftIndent=16, bulletIndent=4,
fontName='Helvetica'
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=9, spaceAfter=4, leading=13,
textColor=colors.HexColor('#b71c1c'),
fontName='Helvetica-Oblique'
)
table_header_style = ParagraphStyle(
'TableHeader', parent=styles['Normal'],
fontSize=9, fontName='Helvetica-Bold', textColor=colors.white
)
table_cell_style = ParagraphStyle(
'TableCell', parent=styles['Normal'],
fontSize=9, fontName='Helvetica', leading=12
)
def heading1(text):
return Paragraph(text, h1_style)
def heading2(text):
return Paragraph(text, h2_style)
def heading3(text):
return Paragraph(text, h3_style)
def body(text):
return Paragraph(text, body_style)
def bullet(text):
return Paragraph(f"• {text}", bullet_style)
def note(text):
return Paragraph(f"<i>Note: {text}</i>", note_style)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90caf9'), spaceAfter=4)
def sp(h=4):
return Spacer(1, h)
# ── content ──────────────────────────────────────────────────────────────────
story = []
# TITLE PAGE
story.append(sp(20))
story.append(Paragraph("3rd Internal Remedial Examination", title_style))
story.append(Paragraph("Anatomy — Model Answer Key", subtitle_style))
story.append(Paragraph("Date: 14.7.26 | Total Marks: 100 | Time: 3 Hours", subtitle_style))
story.append(Paragraph("Based on Ashwini Sir Notes (Gray's Anatomy & Standard MBBS Sources)", subtitle_style))
story.append(sp(8))
story.append(hr())
story.append(sp(8))
# ─────────────────────────────────────────────────────────────────────────────
# SECTION A (50 marks)
# ─────────────────────────────────────────────────────────────────────────────
story.append(heading1("SECTION A — 50 Marks"))
story.append(hr())
# ── Q1 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q1. Oculomotor Nerve [6+4+3+2 = 15 Marks]"))
# Q1a
story.append(heading2("(a) Transverse Section of Midbrain at the Level of Superior Colliculus [6 marks]"))
story.append(body("The midbrain (mesencephalon) at the level of the superior colliculus shows the following structures:"))
story.append(sp(4))
midbrain_data = [
[Paragraph("<b>Region</b>", table_header_style), Paragraph("<b>Structures</b>", table_header_style)],
[Paragraph("Tectum (dorsal)", table_cell_style), Paragraph("Paired superior colliculi — important relay for visual reflexes", table_cell_style)],
[Paragraph("Tegmentum", table_cell_style), Paragraph("Central grey matter; Oculomotor (CN III) nucleus; Trochlear nucleus; Red nucleus; Substantia nigra; Medial lemniscus; Spinothalamic tract; Rubrospinal tract; MLF (Medial Longitudinal Fasciculus)", table_cell_style)],
[Paragraph("Basis pedunculi (Crus cerebri)", table_cell_style), Paragraph("Corticospinal, corticobulbar and corticopontine fibres", table_cell_style)],
[Paragraph("Cerebral aqueduct", table_cell_style), Paragraph("Connects 3rd and 4th ventricles; surrounded by periaqueductal grey", table_cell_style)],
[Paragraph("CN III fibres", table_cell_style), Paragraph("Emerge from oculomotor nucleus, pass through red nucleus and exit in the interpeduncular fossa", table_cell_style)],
]
midbrain_table = Table(midbrain_data, colWidths=[4.5*cm, 12*cm])
midbrain_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
story.append(midbrain_table)
story.append(sp(6))
story.append(note("For the diagram: Draw a circular cross-section. Label — Superior colliculus (dorsal), Cerebral aqueduct (central), Periaqueductal grey, Red nucleus, Substantia nigra (dark, ventral), Crus cerebri (most ventral), CN III fibres (medial exiting through interpeduncular fossa), Medial lemniscus, Spinothalamic tract, MLF."))
# Q1b
story.append(heading2("(b) Muscles of the Eyeball [4 marks]"))
story.append(body("There are 7 muscles moving the eyeball — 6 extrinsic (extraocular) and 1 intrinsic."))
story.append(heading3("Extrinsic Muscles (6):"))
extrinsic_data = [
[Paragraph("<b>Muscle</b>", table_header_style), Paragraph("<b>Nerve Supply</b>", table_header_style), Paragraph("<b>Action</b>", table_header_style)],
[Paragraph("Superior Rectus", table_cell_style), Paragraph("CN III (Oculomotor) — superior branch", table_cell_style), Paragraph("Elevation, adduction, medial rotation", table_cell_style)],
[Paragraph("Inferior Rectus", table_cell_style), Paragraph("CN III — inferior branch", table_cell_style), Paragraph("Depression, adduction, lateral rotation", table_cell_style)],
[Paragraph("Medial Rectus", table_cell_style), Paragraph("CN III — inferior branch", table_cell_style), Paragraph("Adduction (main)", table_cell_style)],
[Paragraph("Lateral Rectus", table_cell_style), Paragraph("CN VI (Abducent)", table_cell_style), Paragraph("Abduction (main)", table_cell_style)],
[Paragraph("Superior Oblique", table_cell_style), Paragraph("CN IV (Trochlear)", table_cell_style), Paragraph("Depression, abduction, medial rotation", table_cell_style)],
[Paragraph("Inferior Oblique", table_cell_style), Paragraph("CN III — inferior branch", table_cell_style), Paragraph("Elevation, abduction, lateral rotation", table_cell_style)],
[Paragraph("Levator Palpebrae Superioris", table_cell_style), Paragraph("CN III (superior branch) + Sympathetic (superior tarsal / Müller's)", table_cell_style), Paragraph("Elevates upper eyelid", table_cell_style)],
]
extrinsic_table = Table(extrinsic_data, colWidths=[4*cm, 6*cm, 6.5*cm])
extrinsic_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
]))
story.append(extrinsic_table)
story.append(sp(4))
story.append(body("<b>Mnemonic for nerve supply:</b> LR6 SO4 — Lateral Rectus = CN VI, Superior Oblique = CN IV, rest = CN III."))
story.append(heading3("Intrinsic Muscles (2):"))
story.append(bullet("Sphincter pupillae — constricts pupil, supplied by CN III (parasympathetic via ciliary ganglion)"))
story.append(bullet("Ciliary muscle — controls lens accommodation, supplied by CN III (parasympathetic)"))
story.append(bullet("Dilator pupillae — dilates pupil, supplied by Sympathetic (T1 fibres via superior cervical ganglion)"))
# Q1c
story.append(heading2("(c) Structures Passing Through the Superior Orbital Fissure [3 marks]"))
story.append(body("The superior orbital fissure is a gap between the greater and lesser wings of the sphenoid bone. It is divided by the common tendinous ring (annulus of Zinn) into two parts:"))
story.append(sp(3))
story.append(heading3("WITHIN the Common Tendinous Ring (inside the ring):"))
story.append(bullet("Oculomotor nerve (CN III) — superior and inferior divisions"))
story.append(bullet("Nasociliary nerve (branch of CN V1 — ophthalmic)"))
story.append(bullet("Abducent nerve (CN VI)"))
story.append(bullet("Sympathetic root fibres to ciliary ganglion"))
story.append(heading3("OUTSIDE the Common Tendinous Ring (above or lateral to ring):"))
story.append(bullet("Trochlear nerve (CN IV)"))
story.append(bullet("Frontal nerve (branch of CN V1)"))
story.append(bullet("Lacrimal nerve (branch of CN V1)"))
story.append(bullet("Superior ophthalmic vein"))
story.append(bullet("Inferior ophthalmic vein (sometimes)"))
story.append(note("Mnemonic for inside ring: 'Oh Nasty Arrogant Students' = Oculomotor (III), Nasociliary (V1), Abducent (VI), Sympathetics"))
# Q1d
story.append(heading2("(d) Arteries Supplying the Cerebellum [2 marks]"))
story.append(body("The cerebellum receives blood supply from three paired arteries — all branches of the vertebrobasilar system:"))
story.append(sp(3))
cereb_data = [
[Paragraph("<b>Artery</b>", table_header_style), Paragraph("<b>Origin</b>", table_header_style), Paragraph("<b>Area Supplied</b>", table_header_style)],
[Paragraph("PICA\n(Posterior Inferior Cerebellar Artery)", table_cell_style), Paragraph("Vertebral artery", table_cell_style), Paragraph("Inferior surface of cerebellum, choroid plexus of 4th ventricle, dorsolateral medulla", table_cell_style)],
[Paragraph("AICA\n(Anterior Inferior Cerebellar Artery)", table_cell_style), Paragraph("Basilar artery (lower)", table_cell_style), Paragraph("Anterior inferior cerebellum, flocculus, lower pons", table_cell_style)],
[Paragraph("SCA\n(Superior Cerebellar Artery)", table_cell_style), Paragraph("Basilar artery (upper, just before bifurcation)", table_cell_style), Paragraph("Superior surface of cerebellum, deep cerebellar nuclei, upper pons", table_cell_style)],
]
cereb_table = Table(cereb_data, colWidths=[4.5*cm, 5*cm, 7*cm])
cereb_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
]))
story.append(cereb_table)
story.append(sp(4))
story.append(body("<b>Mnemonic:</b> \"PICA = Posterior Inferior, AICA = Anterior Inferior, SCA = Superior\" — all from vertebrobasilar system."))
story.append(PageBreak())
# ── Q2 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q2. Short Notes [5×3 = 15 Marks]"))
story.append(hr())
# Q2a
story.append(heading2("(a) Boundaries of Cubital Fossa [3 marks]"))
story.append(body("The cubital fossa is a triangular depression located anterior to the elbow joint, at the bend of the elbow."))
story.append(sp(3))
story.append(heading3("Boundaries:"))
story.append(bullet("<b>Superiorly (Base):</b> An imaginary horizontal line joining the medial epicondyle and lateral epicondyle of the humerus"))
story.append(bullet("<b>Medially:</b> Pronator teres muscle (originating from medial epicondyle)"))
story.append(bullet("<b>Laterally:</b> Brachioradialis muscle (originating from lateral supraepicondylar ridge)"))
story.append(bullet("<b>Anteriorly (Roof):</b> Deep fascia + skin; contains the median cubital vein (clinically important for IV access) and medial cutaneous nerve of forearm"))
story.append(bullet("<b>Posteriorly (Floor/Bed):</b> Brachialis muscle medially + Supinator muscle laterally"))
story.append(bullet("<b>Apex:</b> Where brachioradialis and pronator teres meet"))
story.append(sp(3))
story.append(heading3("Contents (lateral to medial — 'TAN'):"))
story.append(bullet("<b>T</b>endon of biceps brachii (most lateral)"))
story.append(bullet("<b>A</b>rtery — Brachial artery (bifurcates into radial and ulnar arteries at the apex)"))
story.append(bullet("<b>N</b>erve — Median nerve (most medial)"))
story.append(body("Additionally: Radial nerve lies under the brachioradialis lateral lip (not truly inside the fossa). Ulnar nerve passes BEHIND the medial epicondyle — NOT in the cubital fossa."))
# Q2b
story.append(heading2("(b) Deep Muscles of Forearm Flexors [3 marks]"))
story.append(body("The deep flexor group of the forearm (anterior compartment, deep layer) consists of 3 muscles:"))
story.append(sp(3))
deep_flex_data = [
[Paragraph("<b>Muscle</b>", table_header_style), Paragraph("<b>Origin</b>", table_header_style), Paragraph("<b>Insertion</b>", table_header_style), Paragraph("<b>Nerve</b>", table_header_style), Paragraph("<b>Action</b>", table_header_style)],
[Paragraph("Flexor Digitorum Profundus (FDP)", table_cell_style), Paragraph("Upper 3/4 anterior and medial ulna; interosseous membrane", table_cell_style), Paragraph("Distal phalanges of fingers 2-5 (bases)", table_cell_style), Paragraph("Medial half (ring & little fingers): Ulnar nerve\nLateral half (index & middle): Anterior interosseous nerve (branch of median)", table_cell_style), Paragraph("Flexes DIP joints of fingers; assists wrist flexion", table_cell_style)],
[Paragraph("Flexor Pollicis Longus (FPL)", table_cell_style), Paragraph("Anterior surface of radius + interosseous membrane", table_cell_style), Paragraph("Base of distal phalanx of thumb", table_cell_style), Paragraph("Anterior interosseous nerve (branch of median nerve)", table_cell_style), Paragraph("Flexes IP joint of thumb; assists flexion of MCP and CMC joints", table_cell_style)],
[Paragraph("Pronator Quadratus", table_cell_style), Paragraph("Anterior surface of distal ulna", table_cell_style), Paragraph("Anterior surface of distal radius", table_cell_style), Paragraph("Anterior interosseous nerve (branch of median nerve)", table_cell_style), Paragraph("Pronation of forearm (prime mover)", table_cell_style)],
]
deep_flex_table = Table(deep_flex_data, colWidths=[3.2*cm, 3.5*cm, 3*cm, 3.8*cm, 3*cm])
deep_flex_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
('FONTSIZE', (0,0), (-1,-1), 8),
]))
story.append(deep_flex_table)
# Q2c
story.append(heading2("(c) Dupuytren's Contracture [3 marks]"))
story.append(body("<b>Definition:</b> A fibroproliferative disease of the palmar fascia (palmar aponeurosis) causing progressive thickening and shortening of the palmar and digital fascial bands, leading to fixed flexion contractures of the fingers."))
story.append(sp(3))
story.append(heading3("Key Features:"))
story.append(bullet("<b>Pathology:</b> Fibroblastic proliferation → myofibroblasts → contraction of palmar fascia"))
story.append(bullet("<b>Common fingers:</b> Ring finger (4th digit) most commonly affected, followed by little finger (5th), middle (3rd) — spares thumb"))
story.append(bullet("<b>Progression:</b> Nodule → Cord → Contracture at MCP joint first, then PIP joint"))
story.append(bullet("<b>Associations:</b> Male, Celtic/Northern European ancestry, alcoholic liver disease, diabetes mellitus, epilepsy (phenobarbitone), smoking, manual labour"))
story.append(bullet("<b>Garrod's pads:</b> Fibrotic nodules on dorsum of PIP joints may coexist"))
story.append(bullet("<b>Bilateral</b> in ~45% cases"))
story.append(heading3("Treatment:"))
story.append(bullet("Needle aponeurotomy (percutaneous fasciotomy)"))
story.append(bullet("Collagenase Clostridium histolyticum (enzyme injection) — breaks the cord"))
story.append(bullet("Surgical fasciectomy — for severe / recurrent cases"))
# Q2d
story.append(heading2("(d) Pronator Quadratus [3 marks]"))
story.append(body("<b>Pronator Quadratus</b> is a deep, flat, square-shaped muscle located at the distal forearm:"))
story.append(bullet("<b>Origin:</b> Anterior surface of the lower quarter (distal 1/4) of the shaft of ulna"))
story.append(bullet("<b>Insertion:</b> Anterior surface of the lower quarter (distal 1/4) of the shaft of radius"))
story.append(bullet("<b>Nerve supply:</b> Anterior interosseous nerve (a branch of median nerve — C7, C8)"))
story.append(bullet("<b>Blood supply:</b> Anterior interosseous artery"))
story.append(bullet("<b>Action:</b> Main muscle of pronation of the forearm; holds radius and ulna together at distal radioulnar joint"))
story.append(bullet("<b>Relations:</b> Deep to flexor digitorum profundus and flexor pollicis longus"))
story.append(heading3("Clinical Significance:"))
story.append(bullet("In Colles fracture, the distal radius fragment is pulled anteriorly by pronator quadratus, contributing to the typical deformity"))
story.append(bullet("Anterior interosseous nerve palsy → loss of pronation (pronator quadratus) + loss of FPL and FDP to index"))
# Q2e
story.append(heading2("(e) Interossei of Hand [3 marks]"))
story.append(body("The interossei are intrinsic muscles of the hand located between the metacarpal bones. There are two groups:"))
story.append(sp(3))
story.append(heading3("1. Dorsal Interossei (4 muscles — DAB: Dorsal ABduct):"))
story.append(bullet("Origin: Adjacent sides of two metacarpal bones (bipennate)"))
story.append(bullet("Insertion: Bases of proximal phalanges + extensor expansion (dorsal digital expansion)"))
story.append(bullet("Action: ABduct fingers from midline (middle finger axis); flex MCP joints; extend IP joints"))
story.append(bullet("Nerve: Deep branch of ulnar nerve (C8, T1)"))
story.append(heading3("2. Palmar Interossei (3 muscles — PAD: Palmar ADduct):"))
story.append(bullet("Origin: Single metacarpal shaft (unipennate)"))
story.append(bullet("Insertion: Base of proximal phalanx + extensor expansion (same side as origin)"))
story.append(bullet("Action: ADduct fingers toward midline; flex MCP joints; extend IP joints"))
story.append(bullet("Nerve: Deep branch of ulnar nerve (C8, T1)"))
story.append(heading3("Clinical Points:"))
story.append(bullet("<b>Froment's sign:</b> Tests palmar interossei + adductor pollicis (ulnar nerve)"))
story.append(bullet("<b>Ulnar nerve palsy:</b> 'Claw hand' deformity — ring and little fingers show hyperextension at MCP and flexion at IP joints (interossei paralysis)"))
story.append(bullet("<b>Both DAB and PAD:</b> Flex MCP joints AND extend PIP/DIP joints (via extensor expansion) — this is the basis of the lumbrical-interosseous mechanism"))
story.append(PageBreak())
# ── Q3 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q3. Colles Fracture Case (Clinical Anatomy) [5×2 = 10 Marks]"))
story.append(body("<b>Clinical Scenario:</b> 34-year-old male fell on outstretched hand (FOOSH) → Colles fracture (fracture of distal radius within 2.5 cm of wrist, with dorsal and radial displacement of distal fragment — 'dinner fork deformity')."))
story.append(hr())
# Q3a
story.append(heading2("(a) Posterior Interosseous Nerve [2 marks]"))
story.append(body("The posterior interosseous nerve (PIN) is the deep terminal branch of the radial nerve:"))
story.append(bullet("<b>Origin:</b> Radial nerve divides into superficial (sensory) and deep (PIN) branches at/below the lateral epicondyle in the cubital fossa"))
story.append(bullet("<b>Course:</b> Passes between the two heads of the supinator muscle (anterior and posterior heads) — passes through the 'Arcade of Frohse' (fibrous arch at the entry to supinator)"))
story.append(bullet("<b>Emerges:</b> On the posterior aspect of the forearm (posterior compartment) where it becomes the PIN"))
story.append(bullet("<b>Muscles supplied:</b> All extensors of posterior forearm — Extensor carpi radialis brevis (partly), Supinator, Extensor digitorum, Extensor digiti minimi, Extensor carpi ulnaris, Abductor pollicis longus, Extensor pollicis brevis, Extensor pollicis longus, Extensor indicis"))
story.append(bullet("<b>Sensory:</b> None (pure motor nerve) — supplies wrist joint capsule proprioception"))
story.append(heading3("Clinical: PIN Syndrome"))
story.append(bullet("Compression of PIN at Arcade of Frohse causes finger drop and thumb drop with no wrist drop (because ECRL is spared)"))
story.append(bullet("Can occur with radial head fracture, radioulnar joint disease, or lipoma"))
# Q3b
story.append(heading2("(b) Muscles Supplied by Median Nerve on Front of Forearm [2 marks]"))
story.append(body("The median nerve (C6–T1) enters the forearm by passing between the two heads of pronator teres and supplies the following muscles on the front of the forearm:"))
story.append(sp(3))
median_data = [
[Paragraph("<b>Layer</b>", table_header_style), Paragraph("<b>Muscle</b>", table_header_style), Paragraph("<b>Branch</b>", table_header_style)],
[Paragraph("Superficial", table_cell_style), Paragraph("Pronator Teres", table_cell_style), Paragraph("Median nerve (main trunk)", table_cell_style)],
[Paragraph("Superficial", table_cell_style), Paragraph("Flexor Carpi Radialis (FCR)", table_cell_style), Paragraph("Median nerve (main trunk)", table_cell_style)],
[Paragraph("Superficial", table_cell_style), Paragraph("Palmaris Longus", table_cell_style), Paragraph("Median nerve (main trunk)", table_cell_style)],
[Paragraph("Superficial", table_cell_style), Paragraph("Flexor Digitorum Superficialis (FDS)", table_cell_style), Paragraph("Median nerve (main trunk)", table_cell_style)],
[Paragraph("Deep", table_cell_style), Paragraph("Flexor Digitorum Profundus (lateral half — index & middle finger)", table_cell_style), Paragraph("Anterior interosseous nerve (AIN)", table_cell_style)],
[Paragraph("Deep", table_cell_style), Paragraph("Flexor Pollicis Longus (FPL)", table_cell_style), Paragraph("Anterior interosseous nerve (AIN)", table_cell_style)],
[Paragraph("Deep", table_cell_style), Paragraph("Pronator Quadratus", table_cell_style), Paragraph("Anterior interosseous nerve (AIN)", table_cell_style)],
]
median_table = Table(median_data, colWidths=[2.5*cm, 8*cm, 6*cm])
median_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
]))
story.append(median_table)
story.append(sp(3))
story.append(body("<b>Mnemonic:</b> \"PT, FCR, PL, FDS — All mine (median); Deep = AIN branch supplies FDP(lat), FPL, PQ\""))
# Q3c
story.append(heading2("(c) Carpal Tunnel Syndrome (CTS) [2 marks]"))
story.append(body("<b>Definition:</b> Compression of the median nerve within the carpal tunnel at the wrist."))
story.append(heading3("Carpal Tunnel Contents:"))
story.append(bullet("4 tendons of FDS"))
story.append(bullet("4 tendons of FDP"))
story.append(bullet("1 tendon of FPL"))
story.append(bullet("Median nerve (most superficial, just deep to flexor retinaculum)"))
story.append(heading3("Boundaries of Carpal Tunnel:"))
story.append(bullet("Roof: Flexor retinaculum (transverse carpal ligament)"))
story.append(bullet("Floor and walls: Carpal bones (groove of carpus)"))
story.append(heading3("Clinical Features:"))
story.append(bullet("Burning, tingling, numbness in lateral 3½ fingers (thumb, index, middle, lateral ring)"))
story.append(bullet("Pain worse at night, relieved by 'shaking' the hand"))
story.append(bullet("Thenar muscle wasting (LOAF muscles: Lumbricals 1&2, Opponens pollicis, Abductor pollicis brevis, Flexor pollicis brevis — all supplied by recurrent branch of median nerve)"))
story.append(bullet("Tinel's sign: Tapping over carpal tunnel → tingling in median nerve distribution"))
story.append(bullet("Phalen's test: Wrist flexion for 60 sec → symptoms reproduced"))
story.append(heading3("Causes:"))
story.append(bullet("Idiopathic (most common), pregnancy, hypothyroidism, rheumatoid arthritis, acromegaly, amyloidosis"))
story.append(heading3("Treatment:"))
story.append(bullet("Conservative: wrist splint (neutral position), NSAIDs, corticosteroid injection"))
story.append(bullet("Surgical: division of flexor retinaculum (carpal tunnel decompression)"))
# Q3d
story.append(heading2("(d) Microanatomy of Pituitary Gland [2 marks]"))
story.append(body("The pituitary gland (hypophysis cerebri) is a bilobed endocrine gland situated in the sella turcica. It has two distinct histological parts:"))
story.append(sp(3))
story.append(heading3("1. Adenohypophysis (Anterior Pituitary) — 75% of gland:"))
story.append(body("Derived from Rathke's pouch (oral ectoderm). Contains 3 cell types:"))
story.append(bullet("<b>Chromophils (stain well):</b> Acidophils (40%) — GH and Prolactin secreting cells; Basophils (10%) — FSH, LH, TSH, ACTH, MSH"))
story.append(bullet("<b>Chromophobes (40%):</b> Poorly staining cells — resting or depleted chromophils"))
story.append(bullet("Parts: Pars distalis (main body), Pars tuberalis (wraps infundibulum), Pars intermedia (vestigial in adults — MSH)"))
story.append(heading3("2. Neurohypophysis (Posterior Pituitary) — 25% of gland:"))
story.append(body("Derived from the diencephalon (neuroectoderm). Contains:"))
story.append(bullet("<b>Pituicytes:</b> Glial support cells (like astrocytes)"))
story.append(bullet("<b>Axons and nerve terminals:</b> From hypothalamic neurons (supraoptic and paraventricular nuclei) that store and release ADH (vasopressin) and Oxytocin"))
story.append(bullet("<b>Herring bodies:</b> Dilated axon terminals containing neurosecretory granules (ADH and oxytocin — visible on EM)"))
story.append(bullet("Parts: Pars nervosa (main body), Infundibular stalk, Median eminence"))
story.append(heading3("Clinical:"))
story.append(bullet("Chromophobe adenoma → hypopituitarism + visual field defect (bitemporal hemianopia)"))
story.append(bullet("Acidophil adenoma → Acromegaly (adults), Gigantism (children)"))
story.append(bullet("Basophil adenoma → Cushing's disease (excess ACTH)"))
# Q3e
story.append(heading2("(e) Development of Right Atrium [2 marks]"))
story.append(body("The right atrium develops from two embryological sources:"))
story.append(sp(3))
story.append(heading3("1. Primitive Atrium (trabeculated part — 'rough'):"))
story.append(bullet("Forms the right auricle (appendage) and the trabeculated (rough) part of the right atrial wall"))
story.append(bullet("Characterised by musculi pectinati (comb-like ridges)"))
story.append(heading3("2. Sinus Venosus (sinus venarum — 'smooth'):"))
story.append(bullet("The right horn of sinus venosus is incorporated into the right atrium to form the smooth posterior wall (sinus venarum)"))
story.append(bullet("Receives: Superior vena cava (from right common cardinal vein) and Inferior vena cava + Coronary sinus"))
story.append(bullet("The sinoatrial valve (valvula venosus) separates sinus venosus from the atrium — its right part becomes the valve of IVC (Eustachian valve) and valve of coronary sinus (Thebesian valve)"))
story.append(heading3("Interatrial Septum Development:"))
story.append(bullet("Septum primum grows down from roof → foramen primum → closed by fusion with endocardial cushions → meanwhile foramen secundum appears in septum primum"))
story.append(bullet("Septum secundum grows to the right of septum primum → leaves foramen ovale"))
story.append(bullet("At birth: Foramen ovale closes functionally (rise in LA pressure) → fossa ovalis"))
story.append(bullet("Persistent foramen ovale (PFO) in ~25% adults — potential for paradoxical emboli"))
story.append(heading3("Congenital Anomaly:"))
story.append(bullet("ASD (Atrial Septal Defect): Failure of foramen ovale to close OR deficient septum secundum → left-to-right shunt → right heart overload"))
story.append(PageBreak())
# ── Q4 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q4. Fill in the Blanks [10×1 = 10 Marks]"))
story.append(hr())
fills = [
("a", "The Guyon's canal transmits the _____ nerve.", "ULNAR nerve\n(Guyon's canal = ulnar canal at the wrist, between pisiform and hook of hamate, transmits the ulnar nerve and ulnar artery)"),
("b", "Trachea is lined by _____ epithelium.", "PSEUDOSTRATIFIED CILIATED COLUMNAR epithelium (Respiratory epithelium)\n(with goblet cells; cilia beat upward to move mucus — mucociliary escalator)"),
("c", "Oesophagus is lined by _____ epithelium.", "STRATIFIED SQUAMOUS NON-KERATINISED epithelium\n(Except at gastro-oesophageal junction where Barrett's metaplasia changes it to columnar)"),
("d", "Pronator teres muscle is supplied by _____ nerve.", "MEDIAN nerve (C6, C7)\n(Both heads are supplied by median nerve — the nerve passes BETWEEN the two heads)"),
("e", "_____ artery is lodged in the anterior interventricular groove of the heart.", "LEFT ANTERIOR DESCENDING (LAD) / Anterior Interventricular Artery\n(Branch of left coronary artery; supplies anterior IVS + anterior LV wall + apex)"),
("f", "There are _____ bronchopulmonary segments in right lung.", "10 bronchopulmonary segments in the right lung\n(Upper lobe: 3 — Apical, Posterior, Anterior; Middle lobe: 2 — Lateral, Medial; Lower lobe: 5 — Superior, Medial basal, Anterior basal, Lateral basal, Posterior basal)"),
("g", "SA node is supplied by _____ artery.", "RIGHT CORONARY ARTERY (RCA) in ~60% of cases; also by left circumflex in ~40%\n(SA nodal artery is a branch of RCA)"),
("h", "Paralysis of biceps brachii muscle is caused by injury to _____ nerve.", "MUSCULOCUTANEOUS nerve (C5, C6)\n(Supplies biceps brachii, brachialis, coracobrachialis)"),
("i", "Axillary nerve is a branch of _____ cord of brachial plexus.", "POSTERIOR cord (C5, C6)\n(Posterior cord also gives radial nerve, thoracodorsal nerve, subscapular nerves)"),
("j", "_____ vein pierces the clavipectoral fascia.", "CEPHALIC vein\n(Passes along the deltopectoral groove, pierces the clavipectoral fascia, and drains into the axillary vein)"),
]
for letter, question, answer in fills:
story.append(heading3(f"({letter}) {question}"))
ans_para = Paragraph(f"<b>Answer:</b> <font color='#b71c1c'>{answer}</font>", body_style)
story.append(ans_para)
story.append(sp(4))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION B (50 marks)
# ─────────────────────────────────────────────────────────────────────────────
story.append(heading1("SECTION B — 50 Marks"))
story.append(hr())
# ── Q5 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q5. Medulla Oblongata [3×5 = 15 Marks]"))
# Q5a
story.append(heading2("(a) Transverse Section of Medulla at Level of Pyramidal Decussation [5 marks]"))
story.append(body("The pyramidal (motor/corticospinal) decussation occurs in the lower part of the medulla oblongata at the junction with the spinal cord. This is the lowest level of the medulla."))
story.append(sp(3))
med_dec_data = [
[Paragraph("<b>Structure</b>", table_header_style), Paragraph("<b>Description / Significance</b>", table_header_style)],
[Paragraph("Pyramids (anterior)", table_cell_style), Paragraph("Bilateral ventral columns — contain corticospinal fibres CROSSING HERE (75-90% cross to form lateral corticospinal tract)", table_cell_style)],
[Paragraph("Pyramidal Decussation", table_cell_style), Paragraph("Crossing of corticospinal fibres in the midline (most distinctive feature of this level)", table_cell_style)],
[Paragraph("Gracile and Cuneate nuclei", table_cell_style), Paragraph("Dorsal medulla — relay nuclei for DCML pathway (vibration, proprioception, fine touch)", table_cell_style)],
[Paragraph("Spinal (descending) nucleus of CN V", table_cell_style), Paragraph("Lateral — receives pain and temperature from face", table_cell_style)],
[Paragraph("Accessory nucleus (CN XI)", table_cell_style), Paragraph("Anterior grey horn — spinal accessory nerve", table_cell_style)],
[Paragraph("Anterolateral system", table_cell_style), Paragraph("Spinothalamic tract (pain/temp from body)", table_cell_style)],
[Paragraph("Central canal", table_cell_style), Paragraph("Continuous with spinal cord central canal (4th ventricle not open at this level)", table_cell_style)],
[Paragraph("NO inferior olive", table_cell_style), Paragraph("Inferior olive appears at mid-level medulla, NOT at decussation level", table_cell_style)],
]
med_dec_table = Table(med_dec_data, colWidths=[5.5*cm, 11*cm])
med_dec_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
]))
story.append(med_dec_table)
story.append(sp(4))
story.append(note("Diagram tip: Draw a circle. Mark ANTERIOR (pyramids with crossing fibres). POSTERIOR (gracile nucleus medial, cuneate nucleus lateral). LATERAL (spinal trigeminal nucleus and tract). Central canal in centre. Label the decussating fibres prominently."))
# Q5b
story.append(heading2("(b) Corticospinal Tract [5 marks]"))
story.append(body("<b>Corticospinal Tract (CST)</b> = the major descending motor pathway carrying voluntary motor impulses from the cortex to the spinal cord."))
story.append(heading3("Origin:"))
story.append(bullet("Primary Motor Cortex (Precentral gyrus, Area 4) — ~30%"))
story.append(bullet("Premotor and Supplementary Motor Area (Area 6) — ~30%"))
story.append(bullet("Somatosensory cortex (Areas 3, 1, 2) — ~40%"))
story.append(bullet("Arises from large Betz cells (giant pyramidal cells) in layer V of motor cortex"))
story.append(heading3("Course (3 segments):"))
story.append(body("<b>1. In the Cerebrum:</b>"))
story.append(bullet("Fibres converge → Corona radiata → Posterior limb of internal capsule (anterior 2/3)"))
story.append(bullet("Somatotopy: Arm above, Leg below (in internal capsule)"))
story.append(body("<b>2. In the Brainstem:</b>"))
story.append(bullet("Midbrain: Middle 3/5 of crus cerebri (basis pedunculi)"))
story.append(bullet("Pons: Scattered fibres between pontine nuclei"))
story.append(bullet("Medulla: Anterior surface as the pyramids"))
story.append(body("<b>3. Pyramidal Decussation (lower medulla):</b>"))
story.append(bullet("~75-90% cross the midline → form LATERAL corticospinal tract (contralateral spinal cord, lateral funiculus)"))
story.append(bullet("~10-25% remain uncrossed → ANTERIOR corticospinal tract (ipsilateral, anterior funiculus — cross at spinal cord level via anterior white commissure)"))
story.append(heading3("Termination:"))
story.append(bullet("Synapse on alpha and gamma motor neurons in anterior horn of spinal cord (directly or via interneurons)"))
story.append(heading3("Function:"))
story.append(bullet("Controls precise, voluntary, skilled movements — especially of distal limb muscles (fine finger movements)"))
story.append(heading3("Lesions:"))
story.append(bullet("<b>UMN lesion (above decussation):</b> Contralateral spastic hemiplegia, hyperreflexia, extensor plantar (Babinski +ve), no muscle wasting"))
story.append(bullet("<b>LMN lesion:</b> Ipsilateral flaccid paralysis, hyporeflexia, muscle wasting, fasciculations"))
# Q5c
story.append(heading2("(c) Muscles Supplied by Hypoglossal Nerve — Between Pyramid and Olive [5 marks]"))
story.append(body("The hypoglossal nerve (CN XII) emerges from the anterior surface of the medulla in the anterolateral sulcus, between the pyramid (anteriorly) and the olive (posteriorly/laterally)."))
story.append(heading3("Muscles Supplied by CN XII:"))
story.append(body("<b>All intrinsic and most extrinsic muscles of the tongue:</b>"))
story.append(heading3("Intrinsic Muscles (4 — all supplied by CN XII):"))
story.append(bullet("Superior longitudinal muscle"))
story.append(bullet("Inferior longitudinal muscle"))
story.append(bullet("Transverse muscle of tongue"))
story.append(bullet("Vertical muscle of tongue"))
story.append(heading3("Extrinsic Muscles (supplied by CN XII):"))
story.append(bullet("<b>Genioglossus</b> — protrudes tongue (most important; largest)"))
story.append(bullet("<b>Hyoglossus</b> — depresses and retracts tongue"))
story.append(bullet("<b>Styloglossus</b> — retracts and elevates tongue"))
story.append(bullet("<b>Geniohyoid</b> — elevates hyoid (CN XII via C1 fibres, NOT truly CN XII — controversial)"))
story.append(body("<b>NOT supplied by CN XII:</b> Palatoglossus (supplied by CN X via pharyngeal plexus)"))
story.append(heading3("Clinical:"))
story.append(bullet("CN XII palsy → tongue deviates TOWARD the lesion on protrusion (ipsilateral deviation due to unopposed genioglossus on normal side)"))
story.append(bullet("Bilateral CN XII palsy → anarthria (inability to articulate), dysarthria, dysphagia"))
story.append(PageBreak())
# ── Q6 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q6. Short Notes [5×2 = 10 Marks]"))
story.append(hr())
# Q6a
story.append(heading2("(a) Rotator Cuff Muscles [2 marks]"))
story.append(body("The rotator cuff consists of 4 muscles that surround the glenohumeral joint, providing dynamic stability:"))
story.append(sp(3))
rotator_data = [
[Paragraph("<b>Muscle</b>", table_header_style), Paragraph("<b>Origin</b>", table_header_style), Paragraph("<b>Insertion</b>", table_header_style), Paragraph("<b>Nerve</b>", table_header_style), Paragraph("<b>Action</b>", table_header_style)],
[Paragraph("Supraspinatus", table_cell_style), Paragraph("Supraspinous fossa", table_cell_style), Paragraph("Greater tubercle (upper facet)", table_cell_style), Paragraph("Suprascapular n. (C5,C6)", table_cell_style), Paragraph("Initiation of abduction (0-15°)", table_cell_style)],
[Paragraph("Infraspinatus", table_cell_style), Paragraph("Infraspinous fossa", table_cell_style), Paragraph("Greater tubercle (middle facet)", table_cell_style), Paragraph("Suprascapular n. (C5,C6)", table_cell_style), Paragraph("Lateral (external) rotation", table_cell_style)],
[Paragraph("Teres Minor", table_cell_style), Paragraph("Lateral border of scapula (upper)", table_cell_style), Paragraph("Greater tubercle (lower facet)", table_cell_style), Paragraph("Axillary n. (C5,C6)", table_cell_style), Paragraph("Lateral rotation", table_cell_style)],
[Paragraph("Subscapularis", table_cell_style), Paragraph("Subscapular fossa (anterior)", table_cell_style), Paragraph("Lesser tubercle of humerus", table_cell_style), Paragraph("Upper & lower subscapular n. (C5,C6,C7)", table_cell_style), Paragraph("Medial (internal) rotation; adduction", table_cell_style)],
]
rotator_table = Table(rotator_data, colWidths=[3*cm, 3.5*cm, 3*cm, 3.5*cm, 3.5*cm])
rotator_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3),
('FONTSIZE', (0,0), (-1,-1), 8),
]))
story.append(rotator_table)
story.append(sp(3))
story.append(body("<b>Mnemonic: SITS</b> — Supraspinatus, Infraspinatus, Teres minor, Subscapularis"))
story.append(heading3("Clinical:"))
story.append(bullet("Most common injury: Supraspinatus tendon tear (degenerative or traumatic) → painful arc syndrome (60-120° abduction)"))
story.append(bullet("Complete tear → cannot initiate abduction; deltoid substitutes with shoulder hiking"))
story.append(bullet("Neer's test / Hawkins test for impingement"))
# Q6b
story.append(heading2("(b) Midpalmar Space [2 marks]"))
story.append(body("The midpalmar space is one of the fascial spaces (potential spaces) of the palm, important as a site for deep hand infections."))
story.append(heading3("Boundaries:"))
story.append(bullet("<b>Anteriorly:</b> Flexor tendons of medial 3 digits (FDS and FDP to index, middle, ring fingers)"))
story.append(bullet("<b>Posteriorly:</b> Interossei muscles and metacarpals 3-5 and their fascia"))
story.append(bullet("<b>Laterally:</b> Vertical septum from palmar aponeurosis to 3rd metacarpal (separates from thenar space)"))
story.append(bullet("<b>Medially:</b> Hypothenar muscles"))
story.append(heading3("Contents:"))
story.append(bullet("Lumbrical muscles (3rd and 4th)"))
story.append(bullet("Branches of ulnar nerve and artery (deep branch)"))
story.append(heading3("Communication:"))
story.append(bullet("Communicates anteriorly with tendon sheaths of middle, ring and little fingers"))
story.append(bullet("Can communicate with posterior forearm through carpal tunnel"))
story.append(heading3("Clinical:"))
story.append(bullet("Midpalmar space infection: The palm becomes tense, hot, tender; normal hollow of palm is obliterated; ring and middle fingers semi-flexed"))
story.append(bullet("Spreads via lumbrical canals → dorsal interdigital spaces"))
story.append(bullet("Treatment: Drainage via transverse incision"))
# Q6c — same as Q3e but shorter
story.append(heading2("(c) Development of Right Atrium [2 marks]"))
story.append(body("The right atrium develops from two sources:"))
story.append(heading3("1. Primitive Atrium → Trabeculated (rough) part:"))
story.append(bullet("Gives rise to the right auricle and trabeculated portion (musculi pectinati)"))
story.append(heading3("2. Right Horn of Sinus Venosus → Smooth (sinus venarum) part:"))
story.append(bullet("Incorporated into right atrium — forms smooth posterior wall"))
story.append(bullet("Receives: SVC, IVC, and coronary sinus"))
story.append(bullet("Remnants: Valve of IVC (Eustachian valve), Valve of coronary sinus (Thebesian valve)"))
story.append(heading3("Interatrial Septum:"))
story.append(bullet("Septum primum and Septum secundum form — Foramen ovale allows R-to-L shunt in fetus"))
story.append(bullet("After birth: functional closure → fossa ovalis (PFO may persist in ~25%)"))
# Q6d — same as Q3d
story.append(heading2("(d) Microanatomy of Pituitary Gland [2 marks]"))
story.append(body("(See Q3d above for full description — below is a summary)"))
story.append(heading3("Adenohypophysis (anterior, Rathke's pouch origin):"))
story.append(bullet("Acidophils (40%): Somatotrophs (GH) + Lactotrophs (Prolactin)"))
story.append(bullet("Basophils (10%): Thyrotrophs (TSH), Gonadotrophs (FSH, LH), Corticotrophs (ACTH), Melanotrophs (MSH)"))
story.append(bullet("Chromophobes (50%): Non-secretory/inactive cells"))
story.append(heading3("Neurohypophysis (posterior, neural origin):"))
story.append(bullet("Pituicytes (glial cells) + Axon terminals from supraoptic (ADH) and paraventricular (Oxytocin) nuclei"))
story.append(bullet("Herring bodies — neurosecretory granules in dilated axon terminals"))
story.append(PageBreak())
# ── Q7 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q7. Describe Trachea [5×2 = 10 Marks]"))
story.append(hr())
# Q7a
story.append(heading2("(a) Extent, Length and Parts of Trachea [2 marks]"))
story.append(bullet("<b>Extent:</b> From the inferior border of the cricoid cartilage (C6 vertebra) to its bifurcation at the carina (sternal angle = T4/T5 intervertebral disc level, angle of Louis)"))
story.append(bullet("<b>Length:</b> ~10-12 cm in adults"))
story.append(bullet("<b>Width:</b> ~2-2.5 cm"))
story.append(heading3("Parts:"))
story.append(bullet("<b>Cervical trachea (upper part):</b> C6 to jugular notch (T1 level) — ~5-6 cm; accessible for tracheostomy"))
story.append(bullet("<b>Thoracic trachea (lower part):</b> T1 to T4/T5 — ~5-6 cm; relations with major vessels"))
story.append(heading3("Bifurcation:"))
story.append(bullet("Carina — at level of T4/T5 (sternal angle / Angle of Louis)"))
story.append(bullet("Divides into: Right main bronchus (wider, shorter, more vertical — foreign bodies lodge here) + Left main bronchus (narrower, longer, more horizontal)"))
# Q7b
story.append(heading2("(b) Microscopic Features of Trachea (Histology) [2 marks]"))
story.append(body("The wall of the trachea from lumen outward:"))
story.append(heading3("1. Mucosa:"))
story.append(bullet("Epithelium: Pseudostratified ciliated columnar epithelium with goblet cells (respiratory epithelium)"))
story.append(bullet("Cilia beat upward (toward larynx) — mucociliary escalator"))
story.append(bullet("Basement membrane: thick and prominent"))
story.append(bullet("Lamina propria: loose connective tissue with seromucous glands"))
story.append(heading3("2. Submucosa:"))
story.append(bullet("Loose connective tissue with seromucous glands and lymphocytes"))
story.append(heading3("3. Cartilaginous layer:"))
story.append(bullet("16-20 C-shaped (horseshoe-shaped) hyaline cartilage rings"))
story.append(bullet("Open posteriorly — gap completed by fibroelastic tissue and trachealis muscle (smooth muscle)"))
story.append(heading3("4. Adventitia:"))
story.append(bullet("Outermost layer of loose connective tissue merging with surrounding structures"))
story.append(note("Diagram: Cross-section showing lumen with ciliated epithelium at top, C-shaped cartilage ring in the wall, open gap posteriorly with trachealis muscle."))
# Q7c
story.append(heading2("(c) Arterial Supply and Lymphatic Drainage of Trachea [2 marks]"))
story.append(heading3("Arterial Supply:"))
story.append(bullet("<b>Cervical trachea:</b> Inferior thyroid artery (branch of thyrocervical trunk from subclavian artery)"))
story.append(bullet("<b>Thoracic trachea:</b> Bronchial arteries (from descending thoracic aorta or right intercostal artery) + Direct branches from descending aorta"))
story.append(bullet("Additional: Superior thyroid artery contributes to uppermost trachea"))
story.append(heading3("Lymphatic Drainage:"))
story.append(bullet("<b>Cervical trachea:</b> → Paratracheal lymph nodes → Deep cervical (internal jugular) lymph nodes"))
story.append(bullet("<b>Thoracic trachea:</b> → Tracheobronchial lymph nodes (at carina) → Superior mediastinal nodes → Right lymphatic duct and thoracic duct"))
# Q7d
story.append(heading2("(d) Structures Related to Anterior Surface of Thoracic Trachea [2 marks]"))
story.append(body("The thoracic trachea is related anteriorly to (from above downward):"))
story.append(bullet("Manubrium of sternum (upper part)"))
story.append(bullet("Left brachiocephalic (innominate) vein — crosses the trachea from left to right"))
story.append(bullet("Thymus (or its remnant) — lies in anterior mediastinum"))
story.append(bullet("Aortic arch (ascending aorta on right, arch on left)"))
story.append(bullet("Brachiocephalic (innominate) artery — arises from arch, runs upward to the right of trachea"))
story.append(bullet("Left common carotid artery — passes up on the left"))
story.append(bullet("Cardiac plexus (deep part) — at bifurcation"))
story.append(bullet("Deep cardiac plexus — lies in bifurcation area"))
story.append(note("Clinical: During mediastinoscopy or central venous catheterisation, these anterior relations are critically important to avoid vascular injury."))
# Q7e
story.append(heading2("(e) Bronchopulmonary Segments of Lung [2 marks]"))
story.append(body("A bronchopulmonary segment is the unit of lung supplied by a segmental (tertiary) bronchus and its accompanying artery. Each segment is anatomically and functionally independent — can be resected separately."))
story.append(sp(3))
bps_data = [
[Paragraph("<b>Lobe</b>", table_header_style), Paragraph("<b>Right Lung (10 segments)</b>", table_header_style), Paragraph("<b>Left Lung (8-9 segments)</b>", table_header_style)],
[Paragraph("Upper Lobe", table_cell_style), Paragraph("1. Apical\n2. Posterior\n3. Anterior", table_cell_style), Paragraph("1+2. Apicoposterior (fused)\n3. Anterior\n4. Superior lingular\n5. Inferior lingular", table_cell_style)],
[Paragraph("Middle Lobe (Right)\n/ Lingula (Left)", table_cell_style), Paragraph("4. Lateral\n5. Medial", table_cell_style), Paragraph("(included in upper lobe — see above)", table_cell_style)],
[Paragraph("Lower Lobe", table_cell_style), Paragraph("6. Superior (apical of lower)\n7. Medial basal\n8. Anterior basal\n9. Lateral basal\n10. Posterior basal", table_cell_style), Paragraph("6. Superior (apical of lower)\n(7. Medial basal — may be absent)\n8. Anterior basal\n9. Lateral basal\n10. Posterior basal", table_cell_style)],
]
bps_table = Table(bps_data, colWidths=[3.5*cm, 7.5*cm, 7.5*cm])
bps_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
story.append(bps_table)
story.append(sp(3))
story.append(bullet("Right lung: <b>10 segments</b> (3+2+5)"))
story.append(bullet("Left lung: <b>8 or 9 segments</b> (apical & posterior of LUL fused; medial basal of LLL often absent)"))
story.append(heading3("Clinical:"))
story.append(bullet("Postural drainage targets specific segments based on position"))
story.append(bullet("Aspiration pneumonia: Right lower lobe most common (right bronchus is more vertical)"))
story.append(bullet("Surgical resection: Segmentectomy for isolated bronchopulmonary disease"))
story.append(PageBreak())
# ── Q8 ────────────────────────────────────────────────────────────────────────
story.append(heading1("Q8. Brief Answers [2×5 = 10 Marks]"))
story.append(hr())
# Q8a
story.append(heading2("(a) Professionalism in Medical Science [5 marks]"))
story.append(body("Medical professionalism encompasses the values, behaviours, and relationships that underpin public trust in doctors and the medical profession."))
story.append(heading3("Core Attributes of Medical Professionalism (MCI / NMC India):"))
story.append(bullet("<b>Altruism:</b> Patient's interest above self-interest; compassionate care"))
story.append(bullet("<b>Accountability:</b> To patients, society and the profession"))
story.append(bullet("<b>Excellence:</b> Commitment to lifelong learning and best evidence-based practice"))
story.append(bullet("<b>Duty:</b> Availability and commitment even at personal cost"))
story.append(bullet("<b>Honour and Integrity:</b> Truthfulness, transparency, no fraud"))
story.append(bullet("<b>Respect for others:</b> Patient autonomy, dignity, confidentiality"))
story.append(bullet("<b>Competence:</b> Maintaining clinical knowledge and skills"))
story.append(heading3("ABIM Foundation Framework (Principles):"))
story.append(bullet("<b>Patient welfare</b> — primum non nocere (first do no harm)"))
story.append(bullet("<b>Patient autonomy</b> — informed consent, shared decision-making"))
story.append(bullet("<b>Social justice</b> — equitable distribution of health resources"))
story.append(heading3("Responsibilities Include:"))
story.append(bullet("Informed consent and confidentiality"))
story.append(bullet("Avoiding conflicts of interest"))
story.append(bullet("Maintaining professional boundaries"))
story.append(bullet("Reporting unsafe practice (whistleblowing duty)"))
story.append(bullet("Continuing Medical Education (CME)"))
story.append(heading3("In India — Relevant Bodies:"))
story.append(bullet("National Medical Commission (NMC) — regulates medical practice"))
story.append(bullet("Medical Council of India Code of Medical Ethics (now NMC ethics)"))
story.append(bullet("Indian Medical Association (IMA) ethical guidelines"))
# Q8b
story.append(heading2("(b) Paranasal Air Sinuses [5 marks]"))
story.append(body("Paranasal sinuses are air-filled extensions of the nasal cavity into adjacent bones. There are 4 pairs:"))
story.append(sp(3))
sinus_data = [
[Paragraph("<b>Sinus</b>", table_header_style), Paragraph("<b>Location</b>", table_header_style), Paragraph("<b>Opens into</b>", table_header_style), Paragraph("<b>Nerve Supply</b>", table_header_style)],
[Paragraph("Maxillary sinus\n(largest)", table_cell_style), Paragraph("Body of maxilla (cheekbone)", table_cell_style), Paragraph("Middle meatus via hiatus semilunaris (poor drainage as ostium is superior)", table_cell_style), Paragraph("Infraorbital nerve (CN V2)", table_cell_style)],
[Paragraph("Frontal sinus", table_cell_style), Paragraph("Frontal bone (above orbit)", table_cell_style), Paragraph("Middle meatus via frontonasal duct (infundibulum)", table_cell_style), Paragraph("Supraorbital nerve (CN V1)", table_cell_style)],
[Paragraph("Ethmoid sinus (air cells)", table_cell_style), Paragraph("Ethmoid bone (between orbit and nasal cavity)", table_cell_style), Paragraph("Anterior & middle cells → Middle meatus\nPosterior cells → Superior meatus", table_cell_style), Paragraph("CN V1 (anterior ethmoidal) and CN V2 (posterior ethmoidal)", table_cell_style)],
[Paragraph("Sphenoid sinus\n(smallest/deepest)", table_cell_style), Paragraph("Body of sphenoid bone", table_cell_style), Paragraph("Sphenoethmoidal recess (above superior concha)", table_cell_style), Paragraph("Posterior ethmoidal nerve (CN V1)", table_cell_style)],
]
sinus_table = Table(sinus_data, colWidths=[3*cm, 4*cm, 5*cm, 4.5*cm])
sinus_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#90caf9')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4),
('FONTSIZE', (0,0), (-1,-1), 8.5),
]))
story.append(sinus_table)
story.append(sp(3))
story.append(heading3("Functions:"))
story.append(bullet("Reduce weight of skull"))
story.append(bullet("Warm and humidify inspired air"))
story.append(bullet("Act as resonating chambers for voice"))
story.append(bullet("Provide thermal insulation for brain and orbit"))
story.append(heading3("Development:"))
story.append(bullet("All sinuses develop from outgrowths of nasal mucosa into surrounding bones — present from birth but enlarge during childhood"))
story.append(bullet("Maxillary sinus present at birth (smallest); frontal sinus develops after 2 years; sphenoid after 7 years"))
story.append(heading3("Clinical:"))
story.append(bullet("<b>Sinusitis:</b> Maxillary most common (poor ostium drainage); pain in cheek, upper teeth, periorbital area"))
story.append(bullet("<b>Referred pain:</b> Maxillary sinusitis → pain in upper molar teeth (tooth extraction may not cure)"))
story.append(bullet("<b>Complications:</b> Orbital cellulitis (ethmoid sinusitis), meningitis, brain abscess (frontal/sphenoid sinusitis)"))
story.append(bullet("<b>Antral washout / FESS</b> (Functional Endoscopic Sinus Surgery) — treatment for chronic sinusitis"))
# ── FOOTER ────────────────────────────────────────────────────────────────────
story.append(sp(20))
story.append(hr())
story.append(Paragraph("Model Answer Key prepared based on Gray's Anatomy for Students and Standard MBBS Anatomy Texts | Ashwini Sir Notes Reference | For Educational Use Only", subtitle_style))
# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated successfully: {output_path}")
cd /home/daytona/workspace/anatomy-answers && python generate_pdf.py
ls -lh /home/daytona/workspace/anatomy-answers/Anatomy_Exam_Answers.pdf
Anatomy Exam Answers
PDF Document · PDF