You are an elite physician-educator, clinical diagnostician, medical writer, medical illustrator planner, and curriculum architect. Your task is to help create a world-class medical textbook focused on: “Symptoms and Signs in Clinical Medicine” The book must combine: - deep pathophysiological understanding, - bedside clinical reasoning, - diagnostic thinking, - physical examination mastery, - practical ward relevance, - modern evidence-based medicine, - and highly readable educational writing. The writing must feel: - intellectually rigorous, - clinically realistic, - educationally elegant, - memorable, - and deeply useful for students and clinicians. The tone should resemble the strengths of: - Harrison’s Principles of Internal Medicine, - Bates’ Guide to Physical Examination, - Macleod’s Clinical Examination, - Oxford Handbook of Clinical Medicine, - and expert bedside teaching rounds. However, the book must be: - more modern, - more visual, - more reasoning-oriented, - more clinically integrated, - and easier to understand. The goal is NOT merely to list symptoms and diseases. The goal is to teach: “How clinicians think from symptoms and signs.” --- CORE PHILOSOPHY Every symptom and sign must be taught through: 1. First principles 2. Physiology 3. Mechanisms 4. Pattern recognition 5. Clinical reasoning 6. Diagnostic prioritization 7. Bedside application 8. Temporal evolution 9. Common pitfalls 10. Real clinical interpretation Avoid shallow memorization. The reader should constantly understand: - WHY findings happen, - HOW diseases produce them, - WHAT they mean clinically, - and HOW to reason through them safely. --- TARGET AUDIENCE Primary audience: - MBBS students - Medical students - USMLE aspirants - House officers - Interns - Junior residents Secondary audience: - Practicing clinicians needing diagnostic refreshers - Bedside teaching faculty The educational level should progress from: - beginner understanding to - advanced clinical reasoning. --- WRITING STYLE REQUIREMENTS The writing must: - sound human and expert-level, - avoid robotic AI phrasing, - avoid repetitive sentence patterns, - avoid generic summaries, - avoid superficial explanations. Every explanation must include: - causal reasoning, - pathophysiology, - bedside interpretation, - and clinical significance. Use: - vivid clinical reasoning, - memorable conceptual explanations, - elegant educational analogies, - concise but information-dense prose. Do NOT write like exam cram notes. Write like a master clinician teaching at bedside rounds. --- ABSOLUTE RULES DO NOT: - generate unsupported claims, - hallucinate medical facts, - invent statistics, - fabricate mechanisms, - produce vague textbook filler, - overload chapters with endless differential lists, - overemphasize rare diseases, - produce copy-paste AI writing style, - write purely encyclopedic content. ALWAYS: - prioritize common conditions, - prioritize dangerous conditions, - prioritize commonly missed diagnoses, - emphasize real-world clinical utility, - verify facts against established medical standards. --- CHAPTER DESIGN FRAMEWORK Every symptom/sign chapter must follow this exact structure unless otherwise specified. 1. Definition - precise medical definition, - clinical meaning, - distinctions from related terms. 2. Clinical Importance - why this symptom/sign matters, - prevalence, - emergency relevance, - common clinical settings. 3. Foundational Physiology Explain: - normal physiology, - anatomy, - relevant neural pathways, - biochemical basis, - organ system function. Teach from first principles. 4. Pathophysiological Mechanisms Break the symptom/sign into mechanisms. Example: For edema: - increased hydrostatic pressure, - reduced oncotic pressure, - increased permeability, - lymphatic obstruction. For each mechanism: - explain WHY it occurs, - explain HOW diseases produce it, - explain bedside implications. 5. Classification Include clinically meaningful classifications. Examples: - acute vs chronic, - unilateral vs bilateral, - exertional vs resting, - central vs peripheral, - inflammatory vs non-inflammatory. 6. Temporal Evolution Describe: - onset, - progression, - sequence of findings, - symptom evolution over time. Example: Appendicitis: - vague periumbilical pain, - migration to RLQ, - guarding, - rebound, - fever later. Emphasize diagnostic importance of chronology. 7. Differential Diagnosis Framework Organize differentials intelligently: - by mechanism, - by acuity, - by system, - by epidemiology, - by severity, - by age group, - by associated findings. Avoid random disease dumping. Highlight: - common causes, - life-threatening causes, - commonly missed causes. 8. Clinical Reasoning Approach Teach diagnostic thinking step-by-step. Use: - prioritization, - probability reasoning, - pattern recognition, - red flag detection, - triage logic, - risk stratification. Include: - “how experienced clinicians think.” 9. Key History Questions Include: - symptom characterization, - aggravating factors, - relieving factors, - associated symptoms, - chronology, - exposure history, - medications, - risk factors, - psychosocial relevance. Explain WHY each question matters. 10. Physical Examination Include: - inspection, - palpation, - percussion, - auscultation, - bedside maneuvers, - examination pearls, - difficult examination scenarios, - false positives, - false negatives, - limitations of examination. Describe what findings ACTUALLY look like clinically. 11. Red Flags / Emergency Findings Clearly identify: - dangerous presentations, - unstable patients, - emergency warning signs, - “never miss” diagnoses. Explain: - why they are dangerous, - immediate priorities, - escalation triggers. 12. Investigations Explain: - bedside tests, - laboratory tests, - imaging, - ECG findings, - ultrasound, - advanced diagnostics. For every test: - why it is ordered, - what it reveals, - sensitivity/specificity relevance, - interpretation pitfalls. 13. Clinical Pattern Recognition Tables Create expert-level tables. Example: Pattern| Suggests Crushing chest pain + diaphoresis| Acute MI Pleuritic pain + tachycardia + hypoxia| PE Tearing pain radiating to back| Aortic dissection Tables must reflect real clinician cognition. 14. Mechanism-Based Clinical Correlations Include short insight boxes. Examples: - why diabetics may have silent MI, - why elderly patients may not mount fever, - why COPD patients may appear comfortable despite hypoxia. These should feel insightful and memorable. 15. Common Misdiagnoses Teach diagnostic traps. Examples: - PE mistaken for anxiety, - GERD mistaken for ACS, - meningitis mistaken for viral illness. Explain WHY misdiagnosis occurs. 16. Cognitive Biases Identify diagnostic reasoning errors: - anchoring, - premature closure, - availability bias, - confirmation bias. Explain how experts avoid them. 17. Bedside Pearls Include concise clinical wisdom. Examples: - “The tempo of progression often matters more than severity.” - “A normal oxygen saturation does not exclude PE.” 18. Mini Clinical Cases Include: - realistic patient presentations, - progressive revelation of findings, - diagnostic reasoning walkthroughs, - differential evolution. The reader should actively think through the case. 19. Summary Framework Conclude with: - core takeaways, - clinical reasoning recap, - high-yield patterns, - memory anchors. --- VISUAL DESIGN REQUIREMENTS The book should contain: - diagnostic algorithms, - symptom flowcharts, - physical examination diagrams, - anatomy illustrations, - mechanism illustrations, - ECG integration, - imaging correlation, - bedside photographs, - infographics, - timelines of symptom evolution. All visuals must prioritize: - clarity, - diagnostic reasoning, - educational utility. Avoid decorative visuals without teaching value. --- PEDAGOGICAL DESIGN The book should maximize: - retention, - understanding, - pattern recognition, - clinical intuition. Use: - layered teaching, - spaced reinforcement, - mechanism repetition, - visual memory anchors, - comparative frameworks, - contrast tables, - progressive complexity. --- TONE OF CLINICAL REASONING The diagnostic approach must feel realistic. Always teach: 1. What is most likely? 2. What is most dangerous? 3. What must not be missed? 4. What changes management immediately? Teach prioritization constantly. --- PART STRUCTURE OF THE BOOK PART I — Foundations of Clinical Reasoning Include: - symptom interpretation, - Bayesian reasoning, - pattern recognition, - diagnostic prioritization, - cognitive biases, - probability thinking, - red flag identification, - clinical uncertainty, - bedside medicine principles. PART II — General Symptoms Examples: - fever, - fatigue, - malaise, - weight loss, - pain, - edema, - anorexia, - dizziness. PART III — System-Based Symptoms Include: - cardiovascular, - respiratory, - gastrointestinal, - neurological, - endocrine, - renal, - rheumatological, - hematological, - infectious disease, - dermatological symptoms. PART IV — Physical Signs Examples: - clubbing, - cyanosis, - jaundice, - edema, - lymphadenopathy, - murmurs, - tremors, - rash morphology, - gait abnormalities, - pulse abnormalities. PART V — Emergency Recognition Include: - shock, - sepsis, - ACS, - stroke, - respiratory failure, - acute abdomen, - status epilepticus, - hypertensive emergencies. PART VI — Integrated Clinical Cases Include: - symptom-to-diagnosis walkthroughs, - diagnostic uncertainty, - evolving differentials, - ward-level reasoning, - emergency prioritization, - multidisciplinary thinking. --- AI ASSISTANCE RULES Use AI to assist with: - chapter structuring, - educational refinement, - table generation, - diagram planning, - simplification, - style improvement, - flowchart generation, - clinical integration, - question generation. However: - all medical facts must remain evidence-based, - all explanations must remain clinically coherent, - all mechanisms must remain physiologically accurate. Never allow AI to generate unchecked medical claims. --- QUALITY STANDARD The final work should feel: - authoritative, - deeply educational, - clinically sophisticated, - visually intelligent, - memorable, - and worthy of becoming a definitive modern clinical reasoning textbook. The reader should repeatedly feel: “Now I finally understand WHY this happens and HOW to think through it clinically.”
mkdir -p /home/daytona/workspace/symptoms-signs-textbook
~/symptoms-signs-textbook/generate_toc.py
#!/usr/bin/env python3
"""
Generate the full Table of Contents PDF for:
"Symptoms and Signs in Clinical Medicine: A Reasoning-Based Approach"
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, HRFlowable,
Table, TableStyle, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
# ─────────────────────────────────────────────
# COLOUR PALETTE
# ─────────────────────────────────────────────
DEEP_NAVY = colors.HexColor("#0D2B4E")
MID_BLUE = colors.HexColor("#1A4A7A")
ACCENT_TEAL = colors.HexColor("#0A7E8C")
GOLD = colors.HexColor("#C8922A")
LIGHT_BLUE = colors.HexColor("#E8F2FB")
LIGHT_TEAL = colors.HexColor("#E4F5F7")
PALE_GOLD = colors.HexColor("#FDF3E3")
WHITE = colors.white
DARK_GREY = colors.HexColor("#2C2C2C")
MID_GREY = colors.HexColor("#555555")
LIGHT_GREY = colors.HexColor("#EEEEEE")
RED_ALERT = colors.HexColor("#C0392B")
PAGE_W, PAGE_H = A4
MARGIN = 2.0 * cm
# ─────────────────────────────────────────────
# STYLES
# ─────────────────────────────────────────────
def make_styles():
base = getSampleStyleSheet()
styles = {}
styles['book_title'] = ParagraphStyle(
'book_title',
fontName='Helvetica-Bold',
fontSize=26,
leading=32,
textColor=DEEP_NAVY,
alignment=TA_CENTER,
spaceAfter=6,
)
styles['book_subtitle'] = ParagraphStyle(
'book_subtitle',
fontName='Helvetica',
fontSize=13,
leading=18,
textColor=ACCENT_TEAL,
alignment=TA_CENTER,
spaceAfter=4,
)
styles['book_edition'] = ParagraphStyle(
'book_edition',
fontName='Helvetica-Oblique',
fontSize=11,
leading=15,
textColor=MID_GREY,
alignment=TA_CENTER,
spaceAfter=2,
)
styles['toc_header'] = ParagraphStyle(
'toc_header',
fontName='Helvetica-Bold',
fontSize=18,
leading=24,
textColor=DEEP_NAVY,
alignment=TA_CENTER,
spaceAfter=8,
spaceBefore=10,
)
styles['part_label'] = ParagraphStyle(
'part_label',
fontName='Helvetica-Bold',
fontSize=10,
leading=13,
textColor=WHITE,
alignment=TA_LEFT,
spaceAfter=0,
spaceBefore=0,
)
styles['part_title'] = ParagraphStyle(
'part_title',
fontName='Helvetica-Bold',
fontSize=13,
leading=17,
textColor=WHITE,
alignment=TA_LEFT,
spaceAfter=0,
spaceBefore=0,
)
styles['part_desc'] = ParagraphStyle(
'part_desc',
fontName='Helvetica-Oblique',
fontSize=9,
leading=12,
textColor=colors.HexColor("#C8DCF0"),
alignment=TA_LEFT,
)
styles['chapter_num'] = ParagraphStyle(
'chapter_num',
fontName='Helvetica-Bold',
fontSize=9,
leading=12,
textColor=ACCENT_TEAL,
alignment=TA_LEFT,
)
styles['chapter_title'] = ParagraphStyle(
'chapter_title',
fontName='Helvetica-Bold',
fontSize=10.5,
leading=14,
textColor=DARK_GREY,
alignment=TA_LEFT,
)
styles['chapter_subtitle'] = ParagraphStyle(
'chapter_subtitle',
fontName='Helvetica-Oblique',
fontSize=9,
leading=12,
textColor=MID_GREY,
alignment=TA_LEFT,
leftIndent=12,
)
styles['section_item'] = ParagraphStyle(
'section_item',
fontName='Helvetica',
fontSize=8.5,
leading=12,
textColor=DARK_GREY,
alignment=TA_LEFT,
leftIndent=20,
)
styles['page_num'] = ParagraphStyle(
'page_num',
fontName='Helvetica',
fontSize=9,
leading=12,
textColor=MID_GREY,
alignment=TA_RIGHT,
)
styles['preface_title'] = ParagraphStyle(
'preface_title',
fontName='Helvetica-Bold',
fontSize=11,
leading=15,
textColor=DEEP_NAVY,
alignment=TA_LEFT,
spaceBefore=6,
spaceAfter=3,
)
styles['preface_body'] = ParagraphStyle(
'preface_body',
fontName='Helvetica',
fontSize=9.5,
leading=15,
textColor=DARK_GREY,
alignment=TA_LEFT,
spaceAfter=4,
)
styles['front_matter'] = ParagraphStyle(
'front_matter',
fontName='Helvetica',
fontSize=9.5,
leading=14,
textColor=MID_GREY,
alignment=TA_LEFT,
leftIndent=8,
)
styles['appendix_item'] = ParagraphStyle(
'appendix_item',
fontName='Helvetica',
fontSize=9.5,
leading=14,
textColor=DARK_GREY,
alignment=TA_LEFT,
leftIndent=8,
)
styles['visual_tag'] = ParagraphStyle(
'visual_tag',
fontName='Helvetica-Oblique',
fontSize=7.5,
leading=10,
textColor=ACCENT_TEAL,
alignment=TA_LEFT,
leftIndent=20,
)
return styles
# ─────────────────────────────────────────────
# DATA — Full Table of Contents
# ─────────────────────────────────────────────
FRONT_MATTER = [
("Foreword", "xiii"),
("Preface: A New Way to Think About Clinical Medicine", "xv"),
("How to Use This Book", "xix"),
("About the Editors and Contributors", "xxi"),
("Acknowledgements", "xxiii"),
("Guide to Boxes, Tables, and Algorithms", "xxv"),
("Abbreviations and Symbols", "xxvii"),
]
BOOK_DATA = [
# ══════════════════════════════════════════════════
{
"part_num": "I",
"part_title": "Foundations of Clinical Reasoning",
"part_color": DEEP_NAVY,
"part_desc": (
"Before any symptom can be interpreted, the clinician must master "
"the art of thinking. This part builds the cognitive architecture "
"for all clinical reasoning that follows."
),
"chapters": [
{
"num": "1",
"title": "The Nature of Clinical Reasoning",
"subtitle": "How Clinicians Think — And How They Should",
"page": 3,
"sections": [
"1.1 What Is Clinical Reasoning?",
"1.2 System 1 and System 2 Thinking at the Bedside",
"1.3 Pattern Recognition vs. Analytical Reasoning",
"1.4 The Illness Script: A Framework for Expert Cognition",
"1.5 Diagnostic Schema and Mental Models",
"1.6 The Experienced Clinician's Cognitive Toolkit",
"1.7 Errors of Omission and Commission",
"1.8 Teaching Yourself to Think Like an Expert",
],
"visuals": [
"FIG 1.1 Dual-process model of clinical cognition (diagram)",
"FIG 1.2 The illness script framework (annotated diagram)",
"BOX 1.1 Cognitive heuristics — helpful shortcuts and dangerous traps",
],
},
{
"num": "2",
"title": "Bayesian Reasoning in Clinical Practice",
"subtitle": "Probability, Pretest Likelihood, and the Value of Each Finding",
"page": 27,
"sections": [
"2.1 Probability Thinking: The Foundation of Diagnosis",
"2.2 Prior Probability and Prevalence",
"2.3 Pretest Probability: How to Estimate It",
"2.4 Sensitivity, Specificity, and Likelihood Ratios",
"2.5 Applying Bayes' Theorem at the Bedside (Without Maths)",
"2.6 Post-test Probability and Diagnostic Thresholds",
"2.7 When to Test, When to Treat, When to Wait",
"2.8 Common Probability Errors in Clinical Practice",
],
"visuals": [
"FIG 2.1 Fagan nomogram — visual Bayesian updating",
"TABLE 2.1 Likelihood ratios for key clinical findings across common conditions",
"BOX 2.1 Why a 'positive test' can still mean low disease probability",
],
},
{
"num": "3",
"title": "Cognitive Biases in Clinical Diagnosis",
"subtitle": "Recognising and Overcoming the Mind's Diagnostic Traps",
"page": 53,
"sections": [
"3.1 Why Cognitive Bias Matters in Medicine",
"3.2 Anchoring Bias",
"3.3 Premature Closure",
"3.4 Availability Bias",
"3.5 Confirmation Bias",
"3.6 Framing Effects and Triage Cueing",
"3.7 Representativeness Bias and Atypical Presentations",
"3.8 Affective Bias (The 'Heartsink' Patient)",
"3.9 Strategies for Debiasing: Metacognition and Structured Approaches",
"3.10 The Role of Checklists and Cognitive Forcing Strategies",
],
"visuals": [
"TABLE 3.1 Major cognitive biases — definition, clinical example, countermeasure",
"BOX 3.1 The 'diagnostic timeout': a practical debiasing exercise",
],
},
{
"num": "4",
"title": "Symptom Interpretation: First Principles",
"subtitle": "From Complaint to Clinical Meaning",
"page": 77,
"sections": [
"4.1 Symptoms vs. Signs: A Critical Distinction",
"4.2 How Disease Produces Symptoms: Mechanisms of Symptom Generation",
"4.3 The Spectrum of Presentation: Typical, Atypical, and Silent Disease",
"4.4 Characterising a Symptom: The SOCRATES Framework Extended",
"4.5 Onset and Temporal Pattern as Diagnostic Tools",
"4.6 Severity, Quality, and Patient Descriptors",
"4.7 Associated Symptoms: Clustering and Co-occurrence",
"4.8 Negative Findings as Diagnostic Evidence",
"4.9 The Context of the Symptom: Person, Place, Time",
],
"visuals": [
"FIG 4.1 Symptom characterisation wheel (visual summary of SOCRATES+)",
"TABLE 4.1 Temporal patterns and their diagnostic implications",
"BOX 4.1 Why patients describe symptoms the way they do — and how to interpret it",
],
},
{
"num": "5",
"title": "Diagnostic Prioritisation and Red Flag Recognition",
"subtitle": "Separating the Dangerous from the Common",
"page": 99,
"sections": [
"5.1 The Hierarchy of Clinical Concern",
"5.2 Life-threatening Diagnoses: The 'Must Not Miss' Imperative",
"5.3 Universal Red Flag Categories",
"5.4 Red Flags by Organ System",
"5.5 Triage Logic: Acuity, Stability, and Escalation Triggers",
"5.6 Risk Stratification Tools and Their Bedside Application",
"5.7 Diagnostic Anchoring in the Emergency Setting",
"5.8 When to Act Before the Diagnosis is Confirmed",
],
"visuals": [
"TABLE 5.1 Universal red flags by body system",
"FIG 5.1 The diagnostic priority pyramid",
"BOX 5.1 'Treat first, diagnose later': when and why",
],
},
{
"num": "6",
"title": "The Art and Science of History Taking",
"subtitle": "The Most Powerful Diagnostic Tool",
"page": 121,
"sections": [
"6.1 Why History Remains the Cornerstone of Diagnosis",
"6.2 The Structure of the Clinical History",
"6.3 Chief Complaint and Presenting Illness",
"6.4 Past Medical, Surgical, and Family History",
"6.5 Drug History: More Than Just Allergies",
"6.6 Social, Occupational, and Travel History",
"6.7 Functional History and Symptom Impact",
"6.8 Paediatric, Obstetric, and Geriatric History Adaptations",
"6.9 Difficult Histories: Psychiatric, Substance Use, and Sensitive Topics",
"6.10 Communicating Uncertainty to Patients",
],
"visuals": [
"FIG 6.1 The clinical history architecture (hierarchical diagram)",
"BOX 6.1 High-yield drug history questions for common presentations",
"BOX 6.2 The 10-second orientation: framing the encounter",
],
},
{
"num": "7",
"title": "Physical Examination as Clinical Reasoning",
"subtitle": "Examination Findings Are Hypotheses, Not Just Observations",
"page": 143,
"sections": [
"7.1 The Purpose of Examination: Confirmation, Exclusion, and Discovery",
"7.2 General Inspection: The First 10 Seconds",
"7.3 Vital Signs: Physiological Windows",
"7.4 Palpation, Percussion, and Auscultation: Physical Principles",
"7.5 Examination Reliability: Interobserver Variation and Its Limits",
"7.6 Sensitivity and Specificity of Physical Findings",
"7.7 The Bedside Manoeuvre: Rational Targeted Examination",
"7.8 When the Examination Contradicts the History",
"7.9 Examination in the Critically Ill Patient",
],
"visuals": [
"TABLE 7.1 Sensitivity/specificity of selected bedside signs",
"FIG 7.1 General inspection framework — the 'face-to-feet' sweep",
"BOX 7.1 Vital signs as a diagnostic tool — beyond the numbers",
],
},
{
"num": "8",
"title": "Clinical Uncertainty and Diagnostic Decision-Making",
"subtitle": "How to Act When You Do Not Know",
"page": 165,
"sections": [
"8.1 Uncertainty Is Inherent in Clinical Medicine",
"8.2 Types of Diagnostic Uncertainty",
"8.3 The Working Diagnosis: Provisional, Dynamic, and Revisable",
"8.4 Iterative Diagnosis: Updating the Differential Over Time",
"8.5 Safety Netting: Strategies for Uncertain Diagnoses",
"8.6 Shared Decision-Making Under Uncertainty",
"8.7 Diagnostic Time-Outs and Reassessment Triggers",
"8.8 Documenting Uncertainty: Medicolegal and Ethical Dimensions",
],
"visuals": [
"FIG 8.1 The iterative diagnostic cycle",
"BOX 8.1 Safety netting scripts for common uncertain presentations",
],
},
],
},
# ══════════════════════════════════════════════════
{
"part_num": "II",
"part_title": "General Symptoms",
"part_color": colors.HexColor("#1B5E88"),
"part_desc": (
"Constitutional and systemic symptoms that cut across all organ systems, "
"demanding broad diagnostic thinking, epidemiological awareness, "
"and careful prioritisation."
),
"chapters": [
{
"num": "9",
"title": "Fever",
"subtitle": "Pathophysiology, Pattern, and Clinical Meaning",
"page": 187,
"sections": [
"9.1 Definition and Measurement",
"9.2 The Physiology of Thermoregulation",
"9.3 Mechanisms of Fever: Pyrogens, Cytokines, and the Hypothalamus",
"9.4 Fever Patterns: Continuous, Remittent, Intermittent, Hectic",
"9.5 Fever vs. Hyperthermia: A Critical Distinction",
"9.6 Fever of Unknown Origin (FUO): Definition and Approach",
"9.7 Fever in Special Populations: Elderly, Immunocompromised, Neonates",
"9.8 Approach to the Febrile Patient: History, Examination, Investigation",
"9.9 When No Fever Is a Warning: Hypothermia and Blunted Response",
],
"visuals": [
"FIG 9.1 Fever pattern chart and diagnostic implications",
"TABLE 9.1 Fever of unknown origin — differential by category",
"BOX 9.1 Why elderly patients may not mount fever in serious infection",
],
},
{
"num": "10",
"title": "Fatigue and Malaise",
"subtitle": "The Symptom Clinicians Most Often Underestimate",
"page": 213,
"sections": [
"10.1 Defining Fatigue vs. Weakness vs. Dyspnoea",
"10.2 Mechanisms of Fatigue: Peripheral, Central, and Psychological",
"10.3 Acute vs. Chronic Fatigue",
"10.4 Organic Causes: Anaemia, Thyroid, Malignancy, Infection, Heart Failure",
"10.5 Psychiatric and Psychosocial Fatigue",
"10.6 Chronic Fatigue Syndrome: Evidence and Clinical Approach",
"10.7 Fatigue in Cancer and Palliative Medicine",
"10.8 Investigation Strategy",
],
"visuals": [
"TABLE 10.1 Organic vs. functional fatigue: distinguishing features",
"FIG 10.1 Diagnostic algorithm for unexplained fatigue",
],
},
{
"num": "11",
"title": "Unintentional Weight Loss",
"subtitle": "When the Body Consumes Itself",
"page": 233,
"sections": [
"11.1 Defining Clinically Significant Weight Loss",
"11.2 Physiology of Weight Regulation",
"11.3 Mechanisms: Reduced Intake, Malabsorption, Increased Catabolism",
"11.4 Malignancy as a Cause of Weight Loss: The Cytokine Hypothesis",
"11.5 Endocrine Causes: Diabetes, Hyperthyroidism, Adrenal Insufficiency",
"11.6 Gastrointestinal and Malabsorptive Causes",
"11.7 Psychiatric and Social Causes",
"11.8 Approach: When to Be Alarmed and When to Reassure",
],
"visuals": [
"TABLE 11.1 Weight loss differential by mechanism",
"BOX 11.1 The 'MEALS' mnemonic: intake, absorption, catabolism, social, psychiatric",
],
},
{
"num": "12",
"title": "Anorexia and Nausea",
"subtitle": "Gateways to Systemic Disease",
"page": 253,
"sections": [
"12.1 Neural and Hormonal Control of Appetite",
"12.2 Anorexia: Mechanisms and Causes",
"12.3 The Vomiting Reflex: Anatomy of the Emetic Arc",
"12.4 Nausea Without Vomiting: A Distinct Clinical Entity",
"12.5 Timing and Character of Vomiting as Diagnostic Clues",
"12.6 Distinguishing Upper GI Pathology from Central Causes",
"12.7 Drug-Induced Anorexia and Nausea",
"12.8 Nausea in Pregnancy: Physiology and Management Principles",
],
"visuals": [
"FIG 12.1 The emetic reflex arc (neuroanatomical diagram)",
"TABLE 12.1 Timing of vomiting and diagnostic implications",
],
},
{
"num": "13",
"title": "Pain: Mechanisms, Characterisation, and Clinical Reasoning",
"subtitle": "The Language of Suffering and What It Reveals",
"page": 271,
"sections": [
"13.1 The Neuroscience of Pain",
"13.2 Nociceptive, Neuropathic, and Visceral Pain",
"13.3 Referred Pain: Anatomical Basis and Clinical Examples",
"13.4 Pain Characterisation: Quality, Radiation, Timing, Modifiers",
"13.5 Chronic Pain Syndromes and Central Sensitisation",
"13.6 Pain Scales and Their Clinical Limitations",
"13.7 Pain in Special Populations: Elderly, Children, Opioid-Tolerant Patients",
"13.8 Pain as a Diagnostic Pointer vs. Pain as a Target for Treatment",
],
"visuals": [
"FIG 13.1 Referred pain map (anterior and posterior body diagrams)",
"FIG 13.2 Visceral vs. somatic vs. neuropathic pain: clinical comparison table",
"BOX 13.1 Why diabetic neuropathy can cause painless MI and silent foot ulcers",
],
},
{
"num": "14",
"title": "Oedema",
"subtitle": "Fluid Where It Should Not Be",
"page": 295,
"sections": [
"14.1 Starling Forces and Normal Fluid Balance",
"14.2 Mechanisms of Oedema Formation",
"14.3 Pitting vs. Non-Pitting Oedema",
"14.4 Unilateral vs. Bilateral: The Fundamental First Question",
"14.5 Cardiac Oedema: Pathophysiology and Clinical Features",
"14.6 Hepatic Oedema and Hypoalbuminaemia",
"14.7 Renal Oedema: Nephrotic vs. Nephritic",
"14.8 Venous and Lymphatic Oedema",
"14.9 Drug-Induced and Inflammatory Oedema",
"14.10 Assessment and Investigation of Oedema",
],
"visuals": [
"FIG 14.1 Starling forces diagram",
"FIG 14.2 Diagnostic algorithm: bilateral vs. unilateral oedema",
"TABLE 14.1 Causes of oedema by mechanism",
],
},
{
"num": "15",
"title": "Dizziness, Presyncope, and Syncope",
"subtitle": "The Symptom That Conceals its Cause",
"page": 319,
"sections": [
"15.1 Dizziness: Defining the Undefinable",
"15.2 Vertigo vs. Presyncope vs. Disequilibrium vs. Non-specific Dizziness",
"15.3 Peripheral vs. Central Vertigo: A Critical Distinction",
"15.4 The HINTS Examination",
"15.5 Syncope: Mechanisms and Classification",
"15.6 Vasovagal Syncope: Physiology and Triggers",
"15.7 Cardiac Syncope: The Dangerous Cause to Never Miss",
"15.8 Orthostatic Hypotension: Assessment and Causes",
"15.9 Seizure vs. Syncope: Clinical Differentiation",
"15.10 Risk Stratification and Investigation",
],
"visuals": [
"TABLE 15.1 Peripheral vs. central vertigo: distinguishing features",
"FIG 15.1 Syncope classification and mechanism diagram",
"BOX 15.1 The HINTS exam — Head Impulse, Nystagmus, Test of Skew",
],
},
{
"num": "16",
"title": "Lymphadenopathy",
"subtitle": "Nodes as Windows to the Immune System",
"page": 343,
"sections": [
"16.1 Lymph Node Structure and Immune Function",
"16.2 Mechanisms of Lymphadenopathy",
"16.3 Localised vs. Generalised Lymphadenopathy",
"16.4 Cervical, Axillary, Inguinal: Regional Differentials",
"16.5 Characteristics That Distinguish Benign from Sinister Nodes",
"16.6 Lymphoma, Leukaemia, and Solid Tumour Metastases",
"16.7 Infectious Causes: EBV, CMV, HIV, TB, Cat Scratch Disease",
"16.8 Investigation Strategy: When to Biopsy",
],
"visuals": [
"FIG 16.1 Lymph node drainage regions (anatomical diagram)",
"TABLE 16.1 Lymphadenopathy characteristics — benign vs. malignant features",
"BOX 16.1 The 3-week rule for unexplained lymphadenopathy",
],
},
{
"num": "17",
"title": "Night Sweats",
"subtitle": "A Symptom with Serious Implications",
"page": 363,
"sections": [
"17.1 Definition and Clinical Significance",
"17.2 Physiology of Sweating",
"17.3 Infectious Causes: TB, Endocarditis, Abscess",
"17.4 Malignancy: Lymphoma and the B Symptoms",
"17.5 Endocrine Causes: Menopause, Hyperthyroidism, Phaeochromocytoma",
"17.6 Drug-Induced Night Sweats",
"17.7 Idiopathic Night Sweats: Diagnosis of Exclusion",
"17.8 Investigation Approach",
],
"visuals": [
"TABLE 17.1 Night sweats differential by category",
"BOX 17.1 The lymphoma B-symptoms: clinical and prognostic significance",
],
},
{
"num": "18",
"title": "Pruritus (Itch)",
"subtitle": "The Symptom That Demands Systemic Thinking",
"page": 379,
"sections": [
"18.1 Neural Pathways of Itch",
"18.2 Dermatological vs. Systemic Pruritus",
"18.3 Cholestatic Itch: Bile Salts and Beyond",
"18.4 Uraemic Pruritus",
"18.5 Haematological Causes: Polycythaemia Vera, Lymphoma",
"18.6 Drug-Induced Pruritus",
"18.7 Pruritus Sine Materia: Psychogenic and Neurogenic Itch",
"18.8 Investigation and Approach",
],
"visuals": [
"TABLE 18.1 Systemic causes of generalised pruritus",
"FIG 18.1 Itch neural pathway diagram",
],
},
],
},
# ══════════════════════════════════════════════════
{
"part_num": "III",
"part_title": "System-Based Symptoms",
"part_color": colors.HexColor("#145A6E"),
"part_desc": (
"Each organ system generates its own vocabulary of distress. "
"This part decodes those vocabularies — teaching how diseases speak "
"through the symptoms they produce."
),
"chapters": [
# ── CARDIOVASCULAR ──
{
"num": "19",
"title": "Chest Pain",
"subtitle": "The Most Critical Symptom in All of Medicine",
"page": 401,
"sections": [
"19.1 Anatomy of Chest Pain: Why Location Misleads",
"19.2 Ischaemic Chest Pain: Mechanisms of Angina and Infarction",
"19.3 Pleuritic Pain: Inflammation, Friction, and Referred Pain",
"19.4 Aortic and Pericardial Pain",
"19.5 Oesophageal and Musculoskeletal Mimics",
"19.6 Pulmonary Embolism: The Great Masquerader",
"19.7 Risk Stratification: HEART Score, GRACE Score",
"19.8 ECG Interpretation in Chest Pain",
"19.9 Troponin: Sensitivity, Specificity, and Kinetics",
"19.10 Clinical Patterns That Must Not Be Missed",
],
"visuals": [
"TABLE 19.1 Chest pain pattern recognition — 10 key diagnoses",
"FIG 19.1 ECG changes in ACS: STEMI, NSTEMI, Wellens, de Winter",
"FIG 19.2 Chest pain diagnostic algorithm",
"BOX 19.1 Why diabetics and elderly patients have silent MI",
],
},
{
"num": "20",
"title": "Palpitations",
"subtitle": "Awareness of Heartbeat and Its Arrhythmic Causes",
"page": 435,
"sections": [
"20.1 What Causes the Sensation of Palpitation?",
"20.2 History: Regularity, Onset, Offset, Triggers",
"20.3 Benign Causes: Ectopics, Anxiety, Caffeine",
"20.4 Atrial Fibrillation and Flutter",
"20.5 SVT: Mechanism and Clinical Features",
"20.6 Ventricular Arrhythmias: When Palpitation Is Dangerous",
"20.7 Structural Heart Disease and Palpitation",
"20.8 ECG-Based Approach to Arrhythmia Recognition",
"20.9 Risk Stratification and Investigation",
],
"visuals": [
"FIG 20.1 ECG examples: AF, SVT, VT, ectopics (annotated strips)",
"TABLE 20.1 Palpitation differentiation by character and associated features",
"BOX 20.1 'Regular irregular' vs. 'irregularly irregular': the clinical distinction",
],
},
{
"num": "21",
"title": "Dyspnoea (Breathlessness)",
"subtitle": "Decoding the Sensation of Insufficient Air",
"page": 461,
"sections": [
"21.1 Neural Mechanisms of Dyspnoea",
"21.2 Acute vs. Chronic Dyspnoea",
"21.3 Exertional vs. Resting Dyspnoea",
"21.4 Orthopnoea and Paroxysmal Nocturnal Dyspnoea",
"21.5 Cardiac Dyspnoea: Heart Failure Mechanisms",
"21.6 Respiratory Dyspnoea: Obstructive, Restrictive, Vascular",
"21.7 Non-Pulmonary Causes: Anaemia, Metabolic Acidosis, Anxiety",
"21.8 Clinical Examination of the Breathless Patient",
"21.9 Investigation Strategy and Imaging Correlation",
],
"visuals": [
"FIG 21.1 Dyspnoea mechanism map — cardiac, respiratory, haematological, metabolic",
"TABLE 21.1 Acute dyspnoea differentials with distinguishing features",
"FIG 21.2 CXR patterns: pulmonary oedema, pneumothorax, consolidation",
],
},
{
"num": "22",
"title": "Cough",
"subtitle": "A Reflex That Speaks Volumes",
"page": 489,
"sections": [
"22.1 The Cough Reflex: Anatomy and Triggers",
"22.2 Acute vs. Subacute vs. Chronic Cough",
"22.3 Character of Cough as a Diagnostic Clue",
"22.4 Productive Cough: Sputum Colour, Volume, and Significance",
"22.5 Upper Airway Cough Syndrome (Post-nasal Drip)",
"22.6 Asthma, ACE Inhibitor Cough, and GERD Cough",
"22.7 Chronic Productive Cough: Bronchiectasis, COPD, TB",
"22.8 Cough in Children: Unique Differential and Red Flags",
"22.9 Haemoptysis: When Cough Becomes Dangerous",
],
"visuals": [
"FIG 22.1 Chronic cough diagnostic algorithm",
"TABLE 22.1 Sputum characteristics and their clinical interpretation",
"BOX 22.1 ACE inhibitor cough — mechanism and management",
],
},
{
"num": "23",
"title": "Haemoptysis",
"subtitle": "Blood From the Lung — Mechanisms and Urgency",
"page": 511,
"sections": [
"23.1 Defining Haemoptysis vs. Haematemesis vs. Epistaxis",
"23.2 Vascular Anatomy of Haemoptysis",
"23.3 Common Causes: Infection, Malignancy, PE, Bronchiectasis",
"23.4 Massive Haemoptysis: Definition and Emergency Management",
"23.5 Tuberculosis and Haemoptysis Worldwide",
"23.6 Investigation: CXR, CT Chest, Bronchoscopy, Angiography",
"23.7 Risk Stratification and Safe Discharge Criteria",
],
"visuals": [
"TABLE 23.1 Haemoptysis differentials by volume and context",
"FIG 23.1 Haemoptysis vs. haematemesis differentiation flowchart",
],
},
{
"num": "24",
"title": "Wheeze and Stridor",
"subtitle": "Airflow Obstruction — Where and Why It Matters",
"page": 529,
"sections": [
"24.1 The Physics of Airway Obstruction",
"24.2 Wheeze: Upper vs. Lower Airway",
"24.3 Asthma: Mechanism, Triggers, and Severity",
"24.4 COPD Wheeze vs. Asthma Wheeze",
"24.5 Cardiac Wheeze: Cardiac Asthma",
"24.6 Stridor: The Emergency Airway Sign",
"24.7 Epiglottitis, Anaphylaxis, Foreign Body: Time-Critical Causes",
"24.8 Examination and Investigation",
],
"visuals": [
"FIG 24.1 Flow-volume loops in obstructive, restrictive, and fixed obstruction",
"TABLE 24.1 Wheeze vs. stridor — location, mechanism, urgency",
"BOX 24.1 Why not all that wheezes is asthma",
],
},
# ── GASTROINTESTINAL ──
{
"num": "25",
"title": "Abdominal Pain",
"subtitle": "The Abdomen Speaks — Learning to Listen",
"page": 549,
"sections": [
"25.1 Visceral vs. Somatic Abdominal Pain",
"25.2 Pain Location as an Anatomical Map",
"25.3 The Nine-Region Approach to Abdominal Pain",
"25.4 Acute vs. Chronic Abdominal Pain",
"25.5 Guarding, Rigidity, and Rebound: What They Mean",
"25.6 Appendicitis: The Classic Evolution",
"25.7 Bowel Obstruction, Volvulus, and Ischaemia",
"25.8 Biliary Colic, Cholecystitis, Pancreatitis",
"25.9 Gynaecological and Urological Causes",
"25.10 Extra-Abdominal Causes of Abdominal Pain",
"25.11 Investigation: Imaging Strategy in Acute Abdomen",
],
"visuals": [
"FIG 25.1 Abdominal pain map — location and differential by region",
"TABLE 25.1 Acute abdomen: key diagnoses and discriminating features",
"FIG 25.2 Appendicitis symptom evolution timeline",
"BOX 25.1 The pain-free interval in mesenteric ischaemia",
],
},
{
"num": "26",
"title": "Dysphagia",
"subtitle": "Difficulty Swallowing — Structure, Motility, and Malignancy",
"page": 585,
"sections": [
"26.1 The Swallowing Mechanism",
"26.2 Oropharyngeal vs. Oesophageal Dysphagia",
"26.3 Solids vs. Liquids: The First Diagnostic Question",
"26.4 Structural Causes: Malignancy, Stricture, Web",
"26.5 Motility Disorders: Achalasia, Diffuse Oesophageal Spasm",
"26.6 Neurological Dysphagia: Stroke, MND, Myasthenia",
"26.7 Odynophagia vs. Dysphagia",
"26.8 Investigation: Barium Swallow, Endoscopy, Manometry",
],
"visuals": [
"FIG 26.1 Dysphagia diagnostic algorithm",
"TABLE 26.1 Dysphagia: solids vs. liquids pattern and diagnosis",
],
},
{
"num": "27",
"title": "Nausea, Vomiting, and Haematemesis",
"subtitle": "When the Gut Reverses Itself",
"page": 605,
"sections": [
"27.1 The Vomiting Reflex Revisited in the GI Context",
"27.2 Timing of Vomiting as a Diagnostic Key",
"27.3 Vomiting in Obstruction: High vs. Low",
"27.4 Haematemesis: Coffee-Ground vs. Frank Blood",
"27.5 Peptic Ulcer Disease and Mallory-Weiss Tears",
"27.6 Variceal Bleeding: Portal Hypertension and its Consequences",
"27.7 Urgent Investigation and Resuscitation Priorities",
],
"visuals": [
"TABLE 27.1 Haematemesis differential: volume, colour, context",
"FIG 27.1 Glasgow-Blatchford score — bedside risk stratification tool",
],
},
{
"num": "28",
"title": "Altered Bowel Habit",
"subtitle": "Constipation, Diarrhoea, and the Continuum Between",
"page": 627,
"sections": [
"28.1 Normal Bowel Habit and Individual Variation",
"28.2 Acute vs. Chronic Change in Bowel Habit",
"28.3 Diarrhoea: Osmotic, Secretory, Inflammatory, Motility",
"28.4 Bloody Diarrhoea: Infection, IBD, Ischaemia",
"28.5 Constipation: Mechanisms and Causes",
"28.6 Alternating Pattern: IBS vs. Colorectal Cancer",
"28.7 Colorectal Cancer: Red Flags and Screening Thresholds",
"28.8 Steatorrhoea: Malabsorption Syndromes",
"28.9 Investigation Strategy",
],
"visuals": [
"FIG 28.1 Bristol Stool Form Scale and clinical interpretation",
"TABLE 28.1 Diarrhoea classification by mechanism",
"BOX 28.1 Red flags for colorectal malignancy",
],
},
{
"num": "29",
"title": "Rectal Bleeding and Melaena",
"subtitle": "Localising Haemorrhage Within the Gut",
"page": 651,
"sections": [
"29.1 Localising the Source: Upper vs. Lower GI Bleeding",
"29.2 Melaena: Why the Colour Indicates the Source",
"29.3 Bright Red Rectal Bleeding: Not Always Haemorrhoids",
"29.4 Haematochezia vs. True Upper GI Haemorrhage",
"29.5 Assessment of Haemodynamic Stability",
"29.6 Common Lower GI Causes: Haemorrhoids, Diverticulosis, Cancer",
"29.7 Angiodysplasia and Vascular Malformations",
"29.8 Investigation: Colonoscopy, CT Angiography, Capsule Endoscopy",
],
"visuals": [
"FIG 29.1 GI bleeding source localisation diagram",
"TABLE 29.1 Melaena vs. bright rectal bleeding — source and diagnosis",
],
},
{
"num": "30",
"title": "Jaundice",
"subtitle": "The Liver, Bile, and the Yellow Clue",
"page": 673,
"sections": [
"30.1 Bilirubin Metabolism: From Haem to Excretion",
"30.2 Pre-Hepatic, Hepatic, and Post-Hepatic Jaundice",
"30.3 Conjugated vs. Unconjugated Hyperbilirubinaemia",
"30.4 Painless vs. Painful Jaundice: The Critical Distinction",
"30.5 Hepatocellular vs. Cholestatic Pattern on LFTs",
"30.6 Viral Hepatitis: Acute and Chronic Presentations",
"30.7 Obstructive Jaundice: Stones, Strictures, Malignancy",
"30.8 Neonatal Jaundice: Physiological vs. Pathological",
"30.9 Investigation: LFTs, Ultrasound, MRCP, Biopsy",
],
"visuals": [
"FIG 30.1 Bilirubin metabolism pathway diagram",
"FIG 30.2 Jaundice classification algorithm",
"TABLE 30.1 LFT pattern interpretation: hepatocellular vs. cholestatic",
"BOX 30.1 Courvoisier's law and its clinical limitations",
],
},
# ── NEUROLOGICAL ──
{
"num": "31",
"title": "Headache",
"subtitle": "From Tension to Thunderclap",
"page": 701,
"sections": [
"31.1 Anatomy of Head Pain",
"31.2 Primary vs. Secondary Headache",
"31.3 Thunderclap Headache: A Neurological Emergency",
"31.4 Migraine: Pathophysiology and Clinical Features",
"31.5 Tension-Type Headache vs. Migraine",
"31.6 Cluster Headache: The Most Severe Primary Headache",
"31.7 Secondary Headache: Meningitis, SAH, Raised ICP, Temporal Arteritis",
"31.8 The 'SNOOP4' Red Flags for Secondary Headache",
"31.9 Examination and Investigation",
],
"visuals": [
"TABLE 31.1 Primary headache comparison: migraine, tension, cluster",
"FIG 31.1 Thunderclap headache algorithm",
"BOX 31.1 SNOOP4 red flags in headache evaluation",
],
},
{
"num": "32",
"title": "Altered Consciousness and Confusion",
"subtitle": "The Threatened Brain",
"page": 731,
"sections": [
"32.1 Consciousness: Neural Substrates",
"32.2 Delirium: Mechanisms, Predisposing and Precipitating Factors",
"32.3 Delirium vs. Dementia vs. Acute-on-Chronic Confusion",
"32.4 GCS: How to Use It, How Not to Misuse It",
"32.5 Coma: Structural vs. Metabolic Causes",
"32.6 The Toxicological Causes: Drug and Metabolic Encephalopathy",
"32.7 Urgent Investigation of the Confused Patient",
"32.8 Specific Patterns: Wernicke's, Hepatic Encephalopathy, Uraemia",
],
"visuals": [
"FIG 32.1 AEIOU TIPS mnemonic — causes of altered consciousness",
"TABLE 32.1 Delirium vs. dementia — clinical differentiation",
"FIG 32.2 GCS assessment guide",
],
},
{
"num": "33",
"title": "Weakness and Paralysis",
"subtitle": "Upper Motor Neurone, Lower Motor Neurone, and the Space Between",
"page": 759,
"sections": [
"33.1 The Motor Pathway: Cortex to Muscle",
"33.2 UMN vs. LMN: The Fundamental Neurological Distinction",
"33.3 Hemiplegia, Paraplegia, Quadriplegia: Localisation",
"33.4 Stroke: Mechanism, Clinical Patterns, and FAST Recognition",
"33.5 Motor Neurone Disease: Patterns and Diagnosis",
"33.6 Peripheral Causes: Guillain-Barre, Myasthenia, Myopathy",
"33.7 Acute Flaccid Paralysis: Emergency Priorities",
"33.8 Functional Weakness: Diagnosis of Inclusion, Not Exclusion",
],
"visuals": [
"FIG 33.1 Motor pathway from cortex to NMJ (annotated diagram)",
"TABLE 33.1 UMN vs. LMN signs — comprehensive comparison",
"FIG 33.2 Localisation of weakness by clinical pattern",
],
},
{
"num": "34",
"title": "Sensory Disturbances",
"subtitle": "Reading the Map of Sensory Loss",
"page": 787,
"sections": [
"34.1 Sensory Pathways: Spinothalamic vs. Dorsal Column",
"34.2 Dermatomal vs. Peripheral Nerve vs. Cord vs. Cortical Patterns",
"34.3 Paraesthesia, Numbness, Dysaesthesia, Allodynia",
"34.4 Glove-and-Stocking Sensory Loss: Peripheral Neuropathy",
"34.5 Brown-Sequard Syndrome and Hemisection",
"34.6 Spinal Cord Compression: Clinical Urgency",
"34.7 Cauda Equina Syndrome: Never Miss",
"34.8 Sensory Examination Techniques and Interpretation",
],
"visuals": [
"FIG 34.1 Sensory distribution maps: dermatomal, peripheral nerve",
"TABLE 34.1 Sensory loss patterns and neurological localisation",
"BOX 34.1 Cauda equina syndrome red flags",
],
},
{
"num": "35",
"title": "Seizures",
"subtitle": "The Unprovoked Electrical Storm",
"page": 811,
"sections": [
"35.1 Neural Mechanisms of Seizure Generation",
"35.2 Seizure Classification: Focal, Generalised, Unknown",
"35.3 First Seizure vs. Epilepsy: A Critical Distinction",
"35.4 Provoked vs. Unprovoked Seizure",
"35.5 The Post-Ictal Phase and Its Clinical Significance",
"35.6 Syncope vs. Seizure: Definitive Clinical Differentiation",
"35.7 Status Epilepticus: Diagnosis and Emergency Management",
"35.8 Investigations: EEG, MRI, Metabolic Work-Up",
],
"visuals": [
"TABLE 35.1 Seizure vs. syncope: 10 distinguishing features",
"FIG 35.1 Seizure classification framework",
"BOX 35.1 Status epilepticus: the 30-minute definition and why it matters",
],
},
{
"num": "36",
"title": "Tremor and Involuntary Movements",
"subtitle": "The Moving Body and What Drives It",
"page": 833,
"sections": [
"36.1 Classification of Involuntary Movements",
"36.2 Resting, Action, and Intention Tremor",
"36.3 Essential Tremor vs. Parkinson's Disease",
"36.4 Cerebellar Tremor and Ataxia",
"36.5 Drug-Induced Movement Disorders",
"36.6 Chorea, Dystonia, Myoclonus, Tics",
"36.7 Wilson's Disease: The Tremor That Cannot Be Missed",
"36.8 Examination Techniques and Diagnostic Approach",
],
"visuals": [
"TABLE 36.1 Tremor types and distinguishing clinical features",
"FIG 36.1 Parkinson's disease vs. essential tremor comparison diagram",
"BOX 36.1 Kayser-Fleischer rings and Wilson's disease",
],
},
# ── RENAL ──
{
"num": "37",
"title": "Oliguria, Anuria, and Polyuria",
"subtitle": "The Kidney's Report on Volume, Perfusion, and Function",
"page": 857,
"sections": [
"37.1 Normal Urine Output and Its Determinants",
"37.2 Oliguria: Pre-renal, Renal, and Post-renal Causes",
"37.3 Anuria: The Clinical Emergency",
"37.4 Acute Kidney Injury: Mechanisms and Clinical Recognition",
"37.5 Polyuria: Diabetes Insipidus vs. Diabetes Mellitus vs. Polydipsia",
"37.6 Nocturia: Causes and Clinical Significance",
"37.7 Investigation: Urine Output, Urea/Creatinine, Urinalysis, Imaging",
],
"visuals": [
"FIG 37.1 Pre-renal, intra-renal, post-renal AKI algorithm",
"TABLE 37.1 Oliguria vs. polyuria differentials",
],
},
{
"num": "38",
"title": "Haematuria and Proteinuria",
"subtitle": "When the Kidney Leaks",
"page": 879,
"sections": [
"38.1 Normal Renal Filtration Barrier",
"38.2 Haematuria: Macroscopic vs. Microscopic",
"38.3 Glomerular vs. Non-Glomerular Haematuria",
"38.4 Causes by Anatomical Location",
"38.5 Proteinuria: Glomerular, Tubular, Overflow",
"38.6 Nephrotic vs. Nephritic Syndrome",
"38.7 Haematuria + Proteinuria: The Glomerulonephritis Signal",
"38.8 Investigation: Urine Dipstick, Microscopy, Renal Function, Biopsy",
],
"visuals": [
"FIG 38.1 Renal filtration barrier anatomy",
"TABLE 38.1 Nephrotic vs. nephritic syndrome comparison",
],
},
# ── ENDOCRINE ──
{
"num": "39",
"title": "Polyuria, Polydipsia, and Polyphagia",
"subtitle": "The Diabetic Triad and Its Pathophysiology",
"page": 899,
"sections": [
"39.1 Glucose Homeostasis and Its Disruption",
"39.2 Osmotic Diuresis and the Mechanism of Polyuria",
"39.3 Polydipsia: Driven by Thirst or Habit?",
"39.4 Type 1 vs. Type 2 Diabetes: Symptom Onset Differences",
"39.5 DKA and HHS: Symptomatic Presentations",
"39.6 Other Endocrine Causes of Polyuria",
"39.7 Diagnosis: Random Glucose, HbA1c, Glucose Tolerance Test",
],
"visuals": [
"FIG 39.1 Osmotic diuresis mechanism diagram",
"TABLE 39.1 DKA vs. HHS clinical comparison",
],
},
{
"num": "40",
"title": "Heat Intolerance, Cold Intolerance, and Thyroid Symptoms",
"subtitle": "Metabolic Rate as a Clinical Barometer",
"page": 917,
"sections": [
"40.1 Thyroid Hormone and Metabolic Rate",
"40.2 Hyperthyroidism: The Sympathomimetic Syndrome",
"40.3 Hypothyroidism: The Slowing of Everything",
"40.4 Thyroid Examination: Goitre, Bruit, Eye Signs",
"40.5 Thyroid Storm and Myxoedema Coma: Extremes",
"40.6 Subclinical Thyroid Disease",
"40.7 Investigation: TSH, Free T4/T3, Antibodies, Scan",
],
"visuals": [
"TABLE 40.1 Hyperthyroidism vs. hypothyroidism: symptom and sign comparison",
"FIG 40.1 Thyroid examination findings (clinical photo descriptions)",
],
},
],
},
# ══════════════════════════════════════════════════
{
"part_num": "IV",
"part_title": "Physical Signs",
"part_color": colors.HexColor("#0D5C4A"),
"part_desc": (
"Physical signs are the body's language made visible. "
"Each sign carries mechanistic meaning — learn to decode, "
"not just detect."
),
"chapters": [
{
"num": "41",
"title": "Clubbing",
"subtitle": "A Sign With Multiple Meanings",
"page": 939,
"sections": [
"41.1 What Is Clubbing? Anatomy and Grades",
"41.2 Mechanism Theories: Vascular, Platelet, Megakaryocyte",
"41.3 Pulmonary Causes: Lung Cancer, Suppurative Disease, Fibrosis",
"41.4 Cardiac Causes: Cyanotic Congenital Heart Disease, Endocarditis",
"41.5 Gastrointestinal Causes: IBD, Cirrhosis",
"41.6 Hereditary Clubbing: Pachydermoperiostosis",
"41.7 Examination: Schamroth's Sign, Profile Angle",
"41.8 Clinical Significance and Investigation Triggers",
],
"visuals": [
"FIG 41.1 Clubbing grades with illustrated cross-sections",
"FIG 41.2 Schamroth's sign — normal vs. clubbed (diagram)",
"TABLE 41.1 Causes of clubbing by system",
],
},
{
"num": "42",
"title": "Cyanosis",
"subtitle": "Blue is Never Reassuring",
"page": 957,
"sections": [
"42.1 Haemoglobin, Oxygen Saturation, and the Colour of Blood",
"42.2 Central vs. Peripheral Cyanosis",
"42.3 Mechanisms of Central Cyanosis",
"42.4 Peripheral Cyanosis and Raynaud's",
"42.5 Differential Cyanosis and Reverse Differential",
"42.6 Methaemoglobinaemia: The Hidden Cyanosis",
"42.7 Examination: Where to Look, How to Confirm",
"42.8 The Limits of Pulse Oximetry",
],
"visuals": [
"TABLE 42.1 Central vs. peripheral cyanosis differentiation",
"BOX 42.1 Why pulse oximetry fails in methaemoglobinaemia",
"FIG 42.1 Oxygen dissociation curve and cyanosis threshold",
],
},
{
"num": "43",
"title": "Jaundice as a Physical Sign",
"subtitle": "Reading Bilirubin in the Body",
"page": 973,
"sections": [
"43.1 Where Jaundice Appears First and Why",
"43.2 Scleral Icterus: The First Visible Sign",
"43.3 Skin Tone and Jaundice Detection Challenges",
"43.4 Associated Signs: Cholestatic Features, Stigmata of Liver Disease",
"43.5 Carotenemia and Quinacrine: Non-Jaundice Yellow Skin",
],
"visuals": [
"FIG 43.1 Stigmata of chronic liver disease (annotated body diagram)",
"BOX 43.1 Spider naevi, palmar erythema, Dupuytren's — the liver's other signs",
],
},
{
"num": "44",
"title": "Pulse Abnormalities",
"subtitle": "The Wrist as a Window to the Heart",
"page": 987,
"sections": [
"44.1 Rate, Rhythm, Volume, Character, and Vessel Wall",
"44.2 Pulse Rate Abnormalities",
"44.3 Pulse Rhythm: Regular, Regularly Irregular, Irregularly Irregular",
"44.4 Pulse Volume and Blood Pressure Correlates",
"44.5 Character: Collapsing, Slow-Rising, Bisferiens, Pulsus Paradoxus",
"44.6 Pulsus Paradoxus: Mechanism and Clinical Detection",
"44.7 Peripheral Pulses: Significance of Asymmetry and Absence",
"44.8 JVP: Waveform Analysis and Clinical Significance",
],
"visuals": [
"FIG 44.1 JVP waveform with labelled components and abnormalities",
"TABLE 44.1 Pulse characters and their clinical diagnoses",
"BOX 44.1 Pulsus paradoxus: how to measure and interpret",
],
},
{
"num": "45",
"title": "Heart Murmurs",
"subtitle": "The Sound of Flow and Its Clinical Meaning",
"page": 1011,
"sections": [
"45.1 Principles of Murmur Generation",
"45.2 Grading, Timing, and Character",
"45.3 Innocent vs. Pathological Murmurs",
"45.4 Systolic Murmurs: Ejection vs. Regurgitant",
"45.5 Diastolic Murmurs: Always Pathological",
"45.6 Dynamic Auscultation: Valsalva, Standing, Squatting",
"45.7 Valvular Lesions: Clinical Features by Lesion",
"45.8 Infective Endocarditis: Murmurs and the Changing Exam",
],
"visuals": [
"FIG 45.1 Murmur timing diagram across the cardiac cycle",
"TABLE 45.1 Valvular lesion clinical features and classic murmurs",
"FIG 45.2 Dynamic auscultation manoeuvres and effects",
],
},
{
"num": "46",
"title": "Respiratory Signs",
"subtitle": "What the Chest Reveals to Hands, Eyes, and Ears",
"page": 1041,
"sections": [
"46.1 Inspection: Respiratory Rate, Pattern, Shape, Use of Accessory Muscles",
"46.2 Tracheal Deviation: Mechanism and Causes",
"46.3 Chest Expansion: Bilateral and Unilateral Reduction",
"46.4 Percussion: Dull, Stony Dull, Hyperresonant",
"46.5 Breath Sounds: Vesicular, Bronchial, and Absent",
"46.6 Added Sounds: Crackles (Fine vs. Coarse), Wheeze, Pleural Rub",
"46.7 Vocal Resonance and Aegophony",
"46.8 CXR Correlation with Clinical Signs",
],
"visuals": [
"TABLE 46.1 Respiratory signs by condition (comprehensive comparison table)",
"FIG 46.1 Chest examination findings map",
"FIG 46.2 Fine vs. coarse crackles — mechanism and cause",
],
},
{
"num": "47",
"title": "Abdominal Signs",
"subtitle": "The Examination That Cannot Be Rushed",
"page": 1067,
"sections": [
"47.1 Inspection: Distension, Scars, Visible Peristalsis, Herniae",
"47.2 Abdominal Distension: The 5 Fs",
"47.3 Palpation: Light, Deep, Rebound, and Guarding",
"47.4 Hepatomegaly: Size, Surface, Tenderness, Texture",
"47.5 Splenomegaly: Causes and Examination",
"47.6 Distinguishing Spleen from Left Kidney",
"47.7 Ascites: Fluid Thrill, Shifting Dullness, and Their Limits",
"47.8 Murphy's Sign, Rovsing's Sign, and Other Bedside Tests",
"47.9 Rectal and Pelvic Examination",
],
"visuals": [
"FIG 47.1 Abdominal signs examination sequence diagram",
"TABLE 47.1 Hepatomegaly causes by texture and tenderness",
"BOX 47.1 Murphy's sign: mechanism, sensitivity, and pitfalls",
],
},
{
"num": "48",
"title": "Neurological Signs",
"subtitle": "Localising the Lesion Through Examination",
"page": 1093,
"sections": [
"48.1 Cranial Nerve Examination and Localising Dysfunction",
"48.2 Power, Tone, Coordination, and Reflex Assessment",
"48.3 Plantar Response and Primitive Reflexes",
"48.4 Cerebellar Signs: DANISH Mnemonic",
"48.5 Meningism: Kernig's and Brudzinski's Signs",
"48.6 Pupillary Signs and Their Neurological Significance",
"48.7 Gait Examination: Clinical Localisation of Abnormal Gait",
"48.8 Cognitive and Higher Cortical Function Assessment",
],
"visuals": [
"FIG 48.1 Cranial nerve examination summary diagram",
"TABLE 48.1 Gait abnormalities and their neurological causes",
"FIG 48.2 Pupil abnormalities — Horner's, CN III palsy, RAPD (diagram)",
],
},
{
"num": "49",
"title": "Skin Signs of Systemic Disease",
"subtitle": "The Skin as a Mirror of Internal Medicine",
"page": 1121,
"sections": [
"49.1 The Skin in Systemic Disease: An Overview",
"49.2 Rash Morphology: Primary and Secondary Lesion Terminology",
"49.3 Cardiovascular Skin Signs: Xanthelasma, Xanthomata, Splinter Haemorrhages",
"49.4 Hepatic Skin Signs",
"49.5 Endocrine Skin Signs: Acanthosis Nigricans, Pretibial Myxoedema, Vitiligo",
"49.6 Haematological Skin Signs: Petechiae, Purpura, Ecchymoses",
"49.7 Connective Tissue Disease Rashes: SLE, Dermatomyositis, Vasculitis",
"49.8 Infectious Rashes: Patterns of Classic Exanthems",
"49.9 Paraneoplastic Skin Signs",
],
"visuals": [
"FIG 49.1 Skin lesion morphology guide (primary and secondary lesions)",
"TABLE 49.1 Skin signs by systemic disease",
"BOX 49.1 Rash distribution and its diagnostic meaning",
],
},
{
"num": "50",
"title": "Eye Signs in Systemic Disease",
"subtitle": "The Window to Systemic Pathology",
"page": 1147,
"sections": [
"50.1 The Eye in Systemic Medicine",
"50.2 Fundoscopy: What to Look For and How to Find It",
"50.3 Hypertensive Retinopathy: Grades and Significance",
"50.4 Diabetic Retinopathy: Background to Proliferative",
"50.5 Thyroid Eye Disease: Proptosis, Lid Lag, Ophthalmoplegia",
"50.6 Papilloedema: Raised ICP and Its Causes",
"50.7 Horner's Syndrome: Localisation and Causes",
"50.8 Cataracts, Corneal Signs, and Other External Eye Findings",
],
"visuals": [
"FIG 50.1 Fundoscopy findings: papilloedema, AV nipping, flame haemorrhages",
"TABLE 50.1 Eye signs by systemic disease",
],
},
],
},
# ══════════════════════════════════════════════════
{
"part_num": "V",
"part_title": "Emergency Recognition",
"part_color": colors.HexColor("#7B1A1A"),
"part_desc": (
"The most important clinical skill is knowing when a patient "
"is about to die. This part teaches the signs, patterns, and "
"reasoning behind the most time-critical presentations in medicine."
),
"chapters": [
{
"num": "51",
"title": "Shock",
"subtitle": "The Common Final Pathway of Haemodynamic Failure",
"page": 1171,
"sections": [
"51.1 Defining Shock: Beyond Hypotension",
"51.2 Distributive, Cardiogenic, Hypovolaemic, Obstructive Shock",
"51.3 Compensated vs. Decompensated Shock",
"51.4 Clinical Recognition: The Shock Examination",
"51.5 Warm vs. Cold Shock: Septic vs. Cardiogenic",
"51.6 Lactate and Tissue Perfusion as Markers",
"51.7 Initial Resuscitation Priorities",
"51.8 Shock in Special Contexts: Trauma, Obstetric, Spinal",
],
"visuals": [
"TABLE 51.1 Shock classification: haemodynamic profiles",
"FIG 51.1 Shock recognition and early management algorithm",
"BOX 51.1 Why normal BP does not exclude shock",
],
},
{
"num": "52",
"title": "Sepsis and Septic Shock",
"subtitle": "Infection Becomes Systemic Crisis",
"page": 1197,
"sections": [
"52.1 Sepsis-3: Current Definition and Its Clinical Implications",
"52.2 Pathophysiology: Cytokines, Coagulopathy, and Organ Failure",
"52.3 qSOFA and SOFA: Bedside Recognition Tools",
"52.4 Clinical Presentations: Typical and Atypical Sepsis",
"52.5 Source Identification: Why It Matters",
"52.6 The Sepsis Six and Early Goal-Directed Principles",
"52.7 Antibiotics: Timing, Spectrum, and Stewardship",
"52.8 Vasopressor Use and Haemodynamic Targets",
],
"visuals": [
"FIG 52.1 Sepsis-3 diagnostic pathway",
"TABLE 52.1 qSOFA criteria and clinical application",
"BOX 52.1 The Surviving Sepsis Campaign: core hour-1 bundle",
],
},
{
"num": "53",
"title": "Acute Coronary Syndromes",
"subtitle": "When the Heart's Supply Fails",
"page": 1221,
"sections": [
"53.1 The Pathophysiology of Plaque Rupture",
"53.2 STEMI vs. NSTEMI vs. Unstable Angina",
"53.3 Atypical ACS: Diabetics, Women, the Elderly",
"53.4 ECG in ACS: STEMI, Posterior MI, Right-Sided Leads",
"53.5 Troponin Kinetics and High-Sensitivity Assays",
"53.6 Risk Stratification: GRACE, TIMI, Heart Scores",
"53.7 Immediate Management Priorities: MONA-B",
"53.8 Complications of ACS: Mechanical and Arrhythmic",
],
"visuals": [
"FIG 53.1 ECG evolution of STEMI",
"TABLE 53.1 ACS classification and management priorities",
"FIG 53.2 GRACE score application",
],
},
{
"num": "54",
"title": "Stroke and TIA",
"subtitle": "Every Second, 32,000 Neurons Die",
"page": 1249,
"sections": [
"54.1 Stroke Pathophysiology: Ischaemic and Haemorrhagic",
"54.2 FAST/BE-FAST: Bedside Recognition",
"54.3 Stroke Syndromes: TACS, PACS, POCS, LACS",
"54.4 TIA: The Warning Before the Storm",
"54.5 ABCD2 Score and TIA Risk Stratification",
"54.6 CT vs. MRI in Stroke",
"54.7 Thrombolysis and Thrombectomy Criteria",
"54.8 Haemorrhagic Stroke: SAH, ICH, Presentation Differences",
],
"visuals": [
"FIG 54.1 Stroke syndrome patterns with corresponding territory maps",
"TABLE 54.1 Ischaemic vs. haemorrhagic stroke differentiation",
"BOX 54.1 The ABCD2 score for TIA",
],
},
{
"num": "55",
"title": "Respiratory Failure",
"subtitle": "When Breathing Is Not Enough",
"page": 1277,
"sections": [
"55.1 Type 1 vs. Type 2 Respiratory Failure",
"55.2 Hypoxaemia: Mechanisms — V/Q Mismatch, Shunt, Diffusion, Hypoventilation",
"55.3 Hypercapnia: Causes and Consequences",
"55.4 COPD Exacerbation: Recognising Impending Failure",
"55.5 ABG Interpretation: A Systematic Approach",
"55.6 Oxygen Therapy: Hazards in COPD",
"55.7 NIV vs. Intubation: Decision Framework",
"55.8 ARDS: Mechanisms, Berlin Criteria, and Management Principles",
],
"visuals": [
"FIG 55.1 ABG interpretation algorithm",
"TABLE 55.1 Type 1 vs. Type 2 respiratory failure comparison",
"FIG 55.2 V/Q mismatch vs. shunt diagram",
],
},
{
"num": "56",
"title": "Acute Abdomen",
"subtitle": "The Surgical Emergency Inside the Belly",
"page": 1301,
"sections": [
"56.1 Definition and Clinical Significance",
"56.2 Peritonitis: Mechanism and Clinical Signs",
"56.3 Time-Critical Diagnoses: Perforated Viscus, Ischaemia, Rupture",
"56.4 Clinical Assessment: Examination Findings That Change Management",
"56.5 Imaging in the Acute Abdomen: AXR, CT, Ultrasound",
"56.6 'Surgical vs. Medical' Abdomen: Principles of Triage",
"56.7 Analgesia in the Acute Abdomen: Myths vs. Evidence",
],
"visuals": [
"TABLE 56.1 Time-critical acute abdominal diagnoses",
"FIG 56.1 Imaging approach in acute abdomen",
"BOX 56.1 Withholding analgesia: a myth that harms patients",
],
},
{
"num": "57",
"title": "Status Epilepticus",
"subtitle": "The Seizure That Does Not Stop",
"page": 1321,
"sections": [
"57.1 Definition: Why 30 Minutes Became 5 Minutes",
"57.2 Convulsive vs. Non-Convulsive Status",
"57.3 Causes and Precipitants",
"57.4 Neuronal Injury and the Time-Dependence of Treatment",
"57.5 Treatment Protocol: Benzodiazepines, Phenytoin, Anaesthesia",
"57.6 Investigation and Monitoring",
"57.7 Prognosis and Long-Term Management",
],
"visuals": [
"FIG 57.1 Status epilepticus management timeline protocol",
"TABLE 57.1 SE treatment escalation ladder",
],
},
{
"num": "58",
"title": "Hypertensive Emergencies",
"subtitle": "When Pressure Becomes Crisis",
"page": 1337,
"sections": [
"58.1 Hypertensive Emergency vs. Urgency",
"58.2 End-Organ Damage: Brain, Heart, Kidney, Eye, Aorta",
"58.3 Hypertensive Encephalopathy: Mechanism and Presentation",
"58.4 Aortic Dissection: The Most Dangerous Hypertensive Emergency",
"58.5 Eclampsia and HELLP Syndrome",
"58.6 Phaeochromocytoma Crisis",
"58.7 Treatment Targets: How Fast is Too Fast?",
],
"visuals": [
"TABLE 58.1 Hypertensive emergency by end-organ target",
"BOX 58.1 Aortic dissection: why lowering BP too fast kills",
"FIG 58.1 Hypertensive emergency treatment targets and timelines",
],
},
{
"num": "59",
"title": "Anaphylaxis",
"subtitle": "The Immune System's Most Dangerous Overreaction",
"page": 1355,
"sections": [
"59.1 IgE-Mediated Pathophysiology and Mast Cell Activation",
"59.2 Clinical Recognition: Skin, Airway, Haemodynamics",
"59.3 Biphasic Reaction: The Hidden Second Attack",
"59.4 Adrenaline: The Only Life-Saving Intervention",
"59.5 Differential Diagnosis: Anaphylaxis vs. Vasovagal vs. Carcinoid",
"59.6 Investigation: Serum Tryptase",
"59.7 Secondary Prevention and Epipen Prescription",
],
"visuals": [
"FIG 59.1 Anaphylaxis recognition and management algorithm",
"BOX 59.1 Biphasic anaphylaxis: why 4-6 hours of observation matters",
],
},
],
},
# ══════════════════════════════════════════════════
{
"part_num": "VI",
"part_title": "Integrated Clinical Cases",
"part_color": colors.HexColor("#3D3D3D"),
"part_desc": (
"Medicine is not learned in chapters — it is learned in cases. "
"This part integrates everything into realistic, diagnostically "
"challenging patient encounters designed to build clinical intuition."
),
"chapters": [
{
"num": "60",
"title": "Case Series Introduction: How to Learn from Cases",
"subtitle": "Developing Clinical Intuition Through Iterative Reasoning",
"page": 1375,
"sections": [
"60.1 The Case Method in Medical Education",
"60.2 How to Read a Clinical Case for Maximum Learning",
"60.3 The Evolving Differential: Updating as Data Arrives",
"60.4 Diagnostic Pause Points and Checkpoints",
],
"visuals": [],
},
{
"num": "61",
"title": "Cases in Cardiovascular Medicine",
"subtitle": "Ten Integrated Cardiac and Vascular Presentations",
"page": 1383,
"sections": [
"Case 61.1 The young man with exertional chest pain and normal ECG",
"Case 61.2 The 70-year-old woman with 'indigestion' — atypical ACS",
"Case 61.3 The tearing back pain — dissection or musculoskeletal?",
"Case 61.4 Syncope in a teenager during sport",
"Case 61.5 Bilateral leg oedema — three competing diagnoses",
"Case 61.6 Breathlessness, orthopnoea, and a new murmur",
"Case 61.7 Fast AF in a previously well 55-year-old",
"Case 61.8 Sudden cardiac arrest: VF vs. PEA approach",
"Case 61.9 Swollen red leg — DVT, cellulitis, or both?",
"Case 61.10 Hypertension crisis with visual disturbance",
],
"visuals": [
"ECG strips, CXR images, and reasoning tables throughout",
],
},
{
"num": "62",
"title": "Cases in Respiratory Medicine",
"subtitle": "Eight Pulmonary Presentations From Common to Critical",
"page": 1413,
"sections": [
"Case 62.1 Cough for 8 weeks in a 50-year-old smoker",
"Case 62.2 Acute breathlessness and wheeze — asthma or not?",
"Case 62.3 Haemoptysis in a non-smoker returning from Asia",
"Case 62.4 Pleuritic pain, tachycardia, and normal CXR",
"Case 62.5 COPD exacerbation — when to escalate",
"Case 62.6 Bilateral infiltrates in an ICU patient",
"Case 62.7 Unilateral dullness in a 65-year-old",
"Case 62.8 Occupational dyspnoea: asbestosis vs. hypersensitivity pneumonitis",
],
"visuals": [],
},
{
"num": "63",
"title": "Cases in Gastroenterology",
"subtitle": "Eight Abdominal and Hepatic Presentations",
"page": 1439,
"sections": [
"Case 63.1 Acute onset severe epigastric pain radiating to the back",
"Case 63.2 Haematemesis — peptic ulcer vs. varices",
"Case 63.3 Painless jaundice in a 62-year-old",
"Case 63.4 RLQ pain — appendicitis, Crohn's, or Yersinia?",
"Case 63.5 Bloody diarrhoea in a 28-year-old — IBD or infection?",
"Case 63.6 Ascites on examination — three possible causes",
"Case 63.7 Alternating bowel habit with PR bleeding in a 58-year-old",
"Case 63.8 Chronic diarrhoea with malabsorption",
],
"visuals": [],
},
{
"num": "64",
"title": "Cases in Neurology",
"subtitle": "Seven Neurological Emergencies and Diagnostic Puzzles",
"page": 1461,
"sections": [
"Case 64.1 Sudden-onset worst headache of life",
"Case 64.2 Acute focal neurological deficit — stroke or mimic?",
"Case 64.3 New-onset seizure in an adult",
"Case 64.4 Progressive ascending weakness — Guillain-Barre",
"Case 64.5 The confused post-operative patient",
"Case 64.6 Diplopia and ptosis — where is the lesion?",
"Case 64.7 Gait disturbance in a 70-year-old — NPH, PD, or myelopathy?",
],
"visuals": [],
},
{
"num": "65",
"title": "Cases in General and Undifferentiated Medicine",
"subtitle": "The Real Complexity of Ward-Level Reasoning",
"page": 1481,
"sections": [
"Case 65.1 Fever + weight loss + lymphadenopathy in a 30-year-old",
"Case 65.2 Unexplained weight loss in a 65-year-old — systematic approach",
"Case 65.3 The patient with 'just not feeling right' — functional vs. organic",
"Case 65.4 Multiple symptoms in a 45-year-old woman — thyroid or depression?",
"Case 65.5 Acute kidney injury on a ward patient — ABCDE approach",
"Case 65.6 The elderly patient with falls and confusion",
"Case 65.7 The refugee with fever, night sweats, and cough",
],
"visuals": [],
},
],
},
]
BACK_MATTER = [
("Appendix A: Normal Reference Ranges", "1499"),
("Appendix B: Key Clinical Scoring Systems and Calculators", "1507"),
("Appendix C: ECG Interpretation Guide", "1515"),
("Appendix D: Arterial Blood Gas Interpretation Template", "1523"),
("Appendix E: Common Drug Side Effects Relevant to Clinical Presentation", "1527"),
("Appendix F: Procedural Skills Overview", "1533"),
("Appendix G: Recommended Reading and Further Resources", "1539"),
("Appendix H: Image Credits and Acknowledgements", "1543"),
("Index", "1547"),
]
# ─────────────────────────────────────────────
# PAGE TEMPLATES
# ─────────────────────────────────────────────
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.lib.units import inch
def header_footer(canvas, doc):
canvas.saveState()
w, h = A4
# Top rule
canvas.setStrokeColor(DEEP_NAVY)
canvas.setLineWidth(1.5)
canvas.line(MARGIN, h - 1.4*cm, w - MARGIN, h - 1.4*cm)
# Header text
canvas.setFont("Helvetica-Bold", 7.5)
canvas.setFillColor(DEEP_NAVY)
canvas.drawString(MARGIN, h - 1.15*cm,
"SYMPTOMS AND SIGNS IN CLINICAL MEDICINE")
canvas.setFont("Helvetica", 7.5)
canvas.setFillColor(MID_GREY)
canvas.drawRightString(w - MARGIN, h - 1.15*cm, "Table of Contents")
# Bottom rule
canvas.setStrokeColor(LIGHT_GREY)
canvas.setLineWidth(0.5)
canvas.line(MARGIN, 1.3*cm, w - MARGIN, 1.3*cm)
# Page number
canvas.setFont("Helvetica", 8)
canvas.setFillColor(MID_GREY)
page_text = f"{doc.page}"
canvas.drawCentredString(w / 2, 0.85*cm, page_text)
canvas.restoreState()
def title_page_template(canvas, doc):
canvas.saveState()
canvas.restoreState()
# ─────────────────────────────────────────────
# BUILDER FUNCTIONS
# ─────────────────────────────────────────────
def build_title_page(styles, story):
story.append(Spacer(1, 3.5*cm))
story.append(Paragraph(
"SYMPTOMS AND SIGNS<br/>IN CLINICAL MEDICINE",
styles['book_title']
))
story.append(Spacer(1, 0.5*cm))
story.append(HRFlowable(
width="70%", thickness=3,
color=GOLD, lineCap='round',
hAlign='CENTER'
))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph(
"A Reasoning-Based Approach to Clinical Diagnosis",
styles['book_subtitle']
))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph(
"First Edition",
styles['book_edition']
))
story.append(Spacer(1, 2.5*cm))
# Decorative box
taglines = [
["Core Philosophy", "Teach clinicians HOW to think — not just WHAT to know"],
["Audience", "Medical Students · House Officers · Residents · USMLE Aspirants"],
["Approach", "Pathophysiology → Pattern Recognition → Clinical Reasoning"],
["Structure", "6 Parts · 65 Chapters · 450+ Illustrations · 120+ Cases"],
]
tag_data = [[Paragraph(f"<b>{r[0]}</b>", ParagraphStyle('td', fontName='Helvetica-Bold', fontSize=8.5, textColor=DEEP_NAVY, leading=13)),
Paragraph(r[1], ParagraphStyle('td2', fontName='Helvetica', fontSize=8.5, textColor=DARK_GREY, leading=13))]
for r in taglines]
tag_table = Table(tag_data, colWidths=[4.5*cm, 11*cm])
tag_table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, -1), LIGHT_BLUE),
('ROWBACKGROUNDS', (0, 0), (-1, -1), [LIGHT_BLUE, WHITE]),
('GRID', (0, 0), (-1, -1), 0.3, colors.HexColor("#C8D8E8")),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
('TOPPADDING', (0, 0), (-1, -1), 6),
('BOTTOMPADDING', (0, 0), (-1, -1), 6),
('LEFTPADDING', (0, 0), (-1, -1), 10),
('RIGHTPADDING', (0, 0), (-1, -1), 10),
('ROUNDEDCORNERS', [4]),
]))
story.append(tag_table)
story.append(Spacer(1, 3*cm))
story.append(HRFlowable(width="40%", thickness=1, color=LIGHT_GREY, hAlign='CENTER'))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph(
"For students who want to understand. For clinicians who want to remember.",
ParagraphStyle('tagline', fontName='Helvetica-Oblique', fontSize=9.5,
textColor=MID_GREY, alignment=TA_CENTER, leading=14)
))
story.append(PageBreak())
def build_toc_header_page(styles, story):
story.append(Spacer(1, 1.5*cm))
story.append(Paragraph("TABLE OF CONTENTS", styles['toc_header']))
story.append(HRFlowable(width="50%", thickness=2, color=GOLD,
lineCap='round', hAlign='CENTER'))
story.append(Spacer(1, 0.6*cm))
# Brief note
story.append(Paragraph(
"This book is organised in six parts, progressing from the cognitive foundations "
"of clinical reasoning through general and system-based symptoms, physical signs, "
"emergency recognition, and finally integrated clinical cases. Each chapter follows "
"a consistent framework designed to build understanding, pattern recognition, and "
"bedside clinical reasoning.",
ParagraphStyle('intro_note', fontName='Helvetica-Oblique', fontSize=9,
textColor=MID_GREY, alignment=TA_LEFT, leading=14,
leftIndent=10, rightIndent=10)
))
story.append(Spacer(1, 0.8*cm))
def build_front_matter(styles, story, items):
story.append(Paragraph("Front Matter", styles['preface_title']))
story.append(HRFlowable(width="100%", thickness=0.5, color=LIGHT_GREY))
story.append(Spacer(1, 0.3*cm))
for title, page in items:
row = [
Paragraph(f"\u2022 {title}", styles['front_matter']),
Paragraph(page, styles['page_num'])
]
t = Table([row], colWidths=[13.5*cm, 2.5*cm])
t.setStyle(TableStyle([
('VALIGN', (0, 0), (-1, -1), 'TOP'),
('TOPPADDING', (0, 0), (-1, -1), 2),
('BOTTOMPADDING', (0, 0), (-1, -1), 2),
]))
story.append(t)
story.append(Spacer(1, 0.6*cm))
def build_part_header(styles, story, part):
# Part header banner
label_para = Paragraph(f"PART {part['part_num']}", styles['part_label'])
title_para = Paragraph(part['part_title'].upper(), styles['part_title'])
desc_para = Paragraph(part['part_desc'], styles['part_desc'])
inner = Table(
[[label_para], [title_para], [Spacer(1, 4)], [desc_para]],
colWidths=[PAGE_W - 2*MARGIN - 1*cm]
)
inner.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, -1), part['part_color']),
('LEFTPADDING', (0, 0), (-1, -1), 14),
('RIGHTPADDING', (0, 0), (-1, -1), 14),
('TOPPADDING', (0, 0), (0, 0), 12),
('BOTTOMPADDING', (0, 0), (-1, -1), 4),
('BOTTOMPADDING', (0, -1), (-1, -1), 12),
]))
story.append(KeepTogether([inner]))
story.append(Spacer(1, 0.4*cm))
def build_chapter(styles, story, ch):
# Chapter number row
num_para = Paragraph(f"CHAPTER {ch['num']}", styles['chapter_num'])
page_para = Paragraph(str(ch['page']), styles['page_num'])
header_row = Table(
[[num_para, page_para]],
colWidths=[PAGE_W - 2*MARGIN - 2.5*cm, 2.5*cm]
)
header_row.setStyle(TableStyle([
('VALIGN', (0, 0), (-1, -1), 'BOTTOM'),
('TOPPADDING', (0, 0), (-1, -1), 6),
('BOTTOMPADDING', (0, 0), (-1, -1), 1),
]))
# Title
title_para = Paragraph(ch['title'], styles['chapter_title'])
subtitle_para = Paragraph(ch['subtitle'], styles['chapter_subtitle'])
# Sections
section_paras = []
for s in ch['sections']:
section_paras.append(
Paragraph(f"<font color='#888888'>—</font> {s}",
styles['section_item'])
)
# Visuals (if any)
visual_paras = []
for v in ch.get('visuals', []):
visual_paras.append(
Paragraph(f"[Visual] {v}", styles['visual_tag'])
)
# Separator line
rule = HRFlowable(width="100%", thickness=0.3,
color=colors.HexColor("#D8E8F0"), spaceAfter=3)
block = [header_row, title_para, subtitle_para, Spacer(1, 0.2*cm)]
block += section_paras
if visual_paras:
block.append(Spacer(1, 0.15*cm))
block += visual_paras
block += [Spacer(1, 0.3*cm), rule]
story.append(KeepTogether(block))
def build_back_matter(styles, story, items):
story.append(Spacer(1, 0.6*cm))
story.append(Paragraph("Appendices and Back Matter", styles['preface_title']))
story.append(HRFlowable(width="100%", thickness=0.5, color=LIGHT_GREY))
story.append(Spacer(1, 0.3*cm))
for title, page in items:
row = [
Paragraph(f"\u2022 {title}", styles['appendix_item']),
Paragraph(page, styles['page_num'])
]
t = Table([row], colWidths=[13.5*cm, 2.5*cm])
t.setStyle(TableStyle([
('VALIGN', (0, 0), (-1, -1), 'TOP'),
('TOPPADDING', (0, 0), (-1, -1), 2),
('BOTTOMPADDING', (0, 0), (-1, -1), 2),
]))
story.append(t)
# ─────────────────────────────────────────────
# MAIN
# ─────────────────────────────────────────────
def main():
output_path = "/home/daytona/workspace/symptoms-signs-textbook/Symptoms_and_Signs_TOC.pdf"
styles = make_styles()
# Build doc using BaseDocTemplate for header/footer control
doc = BaseDocTemplate(
output_path,
pagesize=A4,
leftMargin=MARGIN,
rightMargin=MARGIN,
topMargin=2.2*cm,
bottomMargin=2.0*cm,
title="Symptoms and Signs in Clinical Medicine — Table of Contents",
author="Medical Education Board",
subject="Clinical Reasoning Textbook TOC",
)
# Frames
content_frame = Frame(
MARGIN, 2.0*cm,
PAGE_W - 2*MARGIN, PAGE_H - 4.2*cm,
id='main', showBoundary=0
)
title_frame = Frame(
MARGIN, MARGIN,
PAGE_W - 2*MARGIN, PAGE_H - 2*MARGIN,
id='title', showBoundary=0
)
doc.addPageTemplates([
PageTemplate(id='Title', frames=[title_frame],
onPage=title_page_template),
PageTemplate(id='TOC', frames=[content_frame],
onPage=header_footer),
])
story = []
# Switch to title template for page 1
from reportlab.platypus import NextPageTemplate
story.append(NextPageTemplate('Title'))
build_title_page(styles, story)
# Switch to TOC template from page 2 onwards
story.append(NextPageTemplate('TOC'))
build_toc_header_page(styles, story)
build_front_matter(styles, story, FRONT_MATTER)
# Parts and chapters
for part in BOOK_DATA:
build_part_header(styles, story, part)
for ch in part['chapters']:
build_chapter(styles, story, ch)
story.append(Spacer(1, 0.5*cm))
# Back matter
build_back_matter(styles, story, BACK_MATTER)
# Build
doc.build(story)
print(f"PDF generated: {output_path}")
if __name__ == "__main__":
main()