Dopamine in psychiatry

Reading File
Finding Sources
Finding Sources
Searching PubMed

"dopamine" AND "psychiatry" AND "schizophrenia"

Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Loading Image
I now have comprehensive material to write a thorough answer. Let me compile everything.

Dopamine in Psychiatry

Dopamine (DA) is the single most studied neurotransmitter in psychiatry. It sits at the center of theories explaining schizophrenia, mood disorders, addiction, and ADHD, and is the primary target of the most widely used psychotropic drugs. Below is a structured overview.

1. Dopamine Pathways: The Anatomical Framework

Five major DA pathways exist in the brain, each with distinct psychiatric relevance (Stahl's Essential Psychopharmacology, p. 100):
PathwayOrigin → TargetPsychiatric/Clinical Role
MesolimbicVTA → nucleus accumbens, limbic areasReward, motivation, pleasure; hyperactivity = positive psychotic symptoms
MesocorticalVTA → prefrontal cortex (DLPFC & vmPFC)Cognition, executive function, affect; hypoactivity = negative/cognitive symptoms of schizophrenia
NigrostriatalSubstantia nigra → striatum/basal gangliaMotor control; D2 blockade here = EPS, tardive dyskinesia
TuberoinfundibularHypothalamus → anterior pituitaryTonic inhibition of prolactin; D2 blockade here → hyperprolactinemia
ThalamicMultiple midbrain sites → thalamusSensory gating; less studied clinically
The diagram below (from Stahl's) shows the receptor differences between mesocortical and mesostriatal neurons - key to understanding why the same drug can have opposite effects in different brain regions:
Mesocortical vs mesostriatal dopamine pathways showing D1/D2/D3 receptors and DAT
Note: In the PFC (mesocortical), the dominant postsynaptic receptor is D1, there are few presynaptic autoreceptors, and DAT density is low - so DA diffuses widely. In the striatum (mesostriatal), D1/D2/D3 are all present and DAT is abundant, allowing tighter regulation.

2. Dopamine Receptors

Five subtypes, divided into two families:
  • D1 family (D1, D5): Gs-coupled, activate adenylyl cyclase, increase cAMP. D1 is the dominant receptor in the PFC, important for working memory.
  • D2 family (D2, D3, D4): Gi-coupled, inhibit adenylyl cyclase, decrease cAMP. D2 is the primary target of virtually all antipsychotics. D3 autoreceptors regulate DA release in mesolimbic regions. D4 has high affinity for clozapine.

3. The Dopamine Hypothesis of Schizophrenia

Origins

The hypothesis was proposed by Arvid Carlsson, originating from two key pharmacological observations (Kaplan & Sadock's Synopsis of Psychiatry, p. 1112):
  1. Antipsychotic potency correlates with D2 receptor affinity - drugs that block D2 receptors reduce positive psychotic symptoms
  2. Dopaminergic drugs are psychotomimetic - cocaine and amphetamine, which increase DA activity, can induce a syndrome indistinguishable from paranoid schizophrenia

The Modern "Two-System" Formulation

The original "too much DA" theory was refined into a regional imbalance model (Kaplan & Sadock's Comprehensive Textbook of Psychiatry, p. 4539):
RegionDA StateSymptom Cluster
Mesolimbic/mesostriatal (subcortical)HyperdopaminergiaPositive symptoms: hallucinations, delusions, paranoia
Mesocortical → DLPFCHypodopaminergiaNegative symptoms: flat affect, avolition, alogia
Mesocortical → vmPFCHypoactivityAffective/cognitive symptoms: depression, anhedonia
This creates a treatment dilemma: D2 blockade in mesolimbic reduces positive symptoms, but simultaneous D2 blockade in mesocortical pathways may worsen negative and cognitive symptoms.

In Vivo Imaging Evidence

PET and SPECT studies of living patients with schizophrenia have provided the strongest support for hyperdopaminergia (Kaplan & Sadock's Comprehensive Textbook, p. 4539):
  • Increased nascent dopamine synthesis in the striatum
  • Higher subcortical dopamine content
  • Exaggerated dopamine release on amphetamine challenge
  • Increased synthesis and synaptic DA correlate with positive symptom severity and normalize with antipsychotic response
Postmortem evidence is less consistent - D2 receptor upregulation is found but confounded by prior antipsychotic exposure. D1, D3, and D4 data remain mixed.

Limitations of the DA Hypothesis

The hypothesis does not fully account for:
  • Why antipsychotics take weeks to work despite rapid D2 blockade
  • The modest efficacy against negative and cognitive symptoms
  • Why ~30% of patients are treatment-resistant (leading to the glutamate hypothesis and the role of NMDA receptor hypofunction)

4. Dopamine and Other Psychiatric Disorders

Depression and Anhedonia

DA plays a central role in motivation and reward through the mesolimbic pathway. Anhedonia - the inability to experience pleasure - is one of the most DA-dependent features of depression. Inflammatory cytokines can directly impair DA signaling, reduce basal ganglia functionality, and disrupt striato-prefrontal connectivity, contributing to depressive anhedonia (Kaplan & Sadock's Comprehensive Textbook, Major Depression chapter). The VTA-nucleus accumbens circuit is considered "the final common pathway of all reward and reinforcement" (Stahl's, p. 107).

Addiction and Substance Use

Drugs of abuse (cocaine, amphetamine, opioids, alcohol, nicotine) converge on the mesolimbic DA pathway - specifically the nucleus accumbens. Acute drug use floods the accumbens with DA (or prevents its reuptake), producing intense reward. Chronic use leads to receptor downregulation, desensitization, and the withdrawal state of anhedonia and craving.

ADHD

ADHD is partly understood as a hypo-dopaminergic state in the mesocortical pathway, particularly to the DLPFC, impairing working memory, sustained attention, and impulse control. This is the mechanistic rationale for stimulant medications (methylphenidate, amphetamines), which increase synaptic DA (and norepinephrine) in the PFC.

Bipolar Disorder and Mania

Manic episodes are associated with excessive dopaminergic tone. This explains why many mood stabilizers and antipsychotics (D2 blockers) have antimanic properties.

5. Drugs Targeting Dopamine

Antipsychotics (D2 Antagonists / Partial Agonists)

Drug ClassMechanismPathway Effects
First-generation (e.g., haloperidol)D2 antagonistBlocks all 5 pathways - high EPS and prolactin risk
Second-generation (e.g., risperidone, olanzapine)D2 + 5-HT2A antagonism5-HT2A blockade in mesocortical partially releases DA, reducing cognitive/affective worsening
ClozapineD2/D4 + multiple receptor antagonismLoose D2 binding ("fast off"), high affinity for D4, 5-HT2A; minimal EPS; treats treatment-resistant schizophrenia
Partial agonists (e.g., aripiprazole, brexpiprazole)D2 partial agonistActs as functional antagonist where DA is high (mesolimbic) and functional agonist where DA is low (mesocortical)
A 2026 Lancet network meta-analysis (Schneider-Thoma et al., PMID 41763745) compared antidopaminergic versus muscarinic antipsychotics in acute schizophrenia, providing updated comparative data across both drug classes.

Stimulants (DA Reuptake Blockers / Releasers)

Used in ADHD (methylphenidate, amphetamine) and narcolepsy. Block DAT and/or reverse-transport DA into the synapse.

Levodopa and DA Agonists

Used in Parkinson's disease to replace lost nigrostriatal DA. Can cause psychiatric side effects: psychosis, impulse control disorders (hyperdopaminergia in mesolimbic regions from systemic DA replacement).

6. Antipsychotic Side Effects Explained by Pathway

Side EffectPathway AffectedMechanism
EPS (parkinsonism, akathisia, dystonia)Nigrostriatal D2 blockadeReduces motor DA tone
Tardive dyskinesiaNigrostriatal D2 blockade (chronic)Receptor upregulation, supersensitivity
HyperprolactinemiaTuberoinfundibular D2 blockadeDisinhibition of prolactin release
Worsening negative symptomsMesocortical D2 blockadeReduces already-low prefrontal DA
Secondary anhedonia/depressionMesolimbic D2 blockadeBlunts reward signaling

7. Key Takeaways

  • Dopamine is not "the pleasure chemical" - it is better understood as a signal for prediction error and salience. Aberrant salience attribution (driven by abnormal mesolimbic DA firing) is proposed as the mechanism by which delusions and hallucinations are formed.
  • The DA hypothesis of schizophrenia is not dead, but has evolved. Subcortical hyperdopaminergia remains well-supported by imaging. The glutamate hypothesis (NMDA hypofunction) is best seen as upstream to DA dysregulation, not as a replacement.
  • D2 receptor occupancy of 60-80% is the therapeutic window for antipsychotics; above 80% predicts EPS, below 60% predicts loss of efficacy.

Sources:
  • Stahl's Essential Psychopharmacology: Neuroscientific Basis, Ch. 4 (Dopamine, Serotonin, and Glutamate Networks) and Ch. 5 (Antipsychotics)
  • Kaplan & Sadock's Comprehensive Textbook of Psychiatry, Molecular Brain Imaging and Theories of Schizophrenia section
  • Kaplan & Sadock's Synopsis of Psychiatry, p. 1112-1113 (Biologic Theories of Schizophrenia)
  • Recent meta-analytic evidence: Schneider-Thoma et al. 2026, Lancet (PMID 41763745)

Create a PDF reference guide comparing dopamine pathways and their psychiatric roles

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty"

Running Command

mkdir -p /home/daytona/workspace/dopamine-guide

Writing File

~/dopamine-guide/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

# ── Output path ──────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/dopamine-guide/Dopamine_Pathways_Psychiatric_Reference.pdf"

# ── Color palette ─────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2B6CB0")
LIGHT_BLUE  = colors.HexColor("#EBF4FF")
ACCENT      = colors.HexColor("#E53E3E")
GREEN       = colors.HexColor("#276749")
LIGHT_GREEN = colors.HexColor("#F0FFF4")
PURPLE      = colors.HexColor("#553C9A")
LIGHT_PURP  = colors.HexColor("#FAF5FF")
ORANGE      = colors.HexColor("#C05621")
LIGHT_ORNG  = colors.HexColor("#FFFAF0")
GOLD        = colors.HexColor("#B7791F")
LIGHT_GOLD  = colors.HexColor("#FFFFF0")
GRAY_LIGHT  = colors.HexColor("#F7FAFC")
GRAY_MED    = colors.HexColor("#CBD5E0")
GRAY_DARK   = colors.HexColor("#2D3748")
WHITE       = colors.white

# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

TITLE_STYLE = S("Title",
    fontSize=26, fontName="Helvetica-Bold", textColor=WHITE,
    alignment=TA_CENTER, leading=32)

SUBTITLE_STYLE = S("Subtitle",
    fontSize=13, fontName="Helvetica", textColor=colors.HexColor("#BEE3F8"),
    alignment=TA_CENTER, leading=18)

SECTION_TITLE = S("SectionTitle",
    fontSize=14, fontName="Helvetica-Bold", textColor=DARK_BLUE,
    spaceBefore=14, spaceAfter=6, leading=18)

SUBSECTION = S("Subsection",
    fontSize=11, fontName="Helvetica-Bold", textColor=MED_BLUE,
    spaceBefore=8, spaceAfter=4, leading=14)

BODY = S("Body",
    fontSize=9.5, fontName="Helvetica", textColor=GRAY_DARK,
    leading=14, alignment=TA_JUSTIFY, spaceAfter=4)

BODY_BOLD = S("BodyBold",
    fontSize=9.5, fontName="Helvetica-Bold", textColor=GRAY_DARK,
    leading=14)

CAPTION = S("Caption",
    fontSize=8, fontName="Helvetica-Oblique", textColor=colors.HexColor("#718096"),
    alignment=TA_CENTER, leading=11)

BULLET = S("Bullet",
    fontSize=9.5, fontName="Helvetica", textColor=GRAY_DARK,
    leading=14, leftIndent=14, spaceAfter=2,
    bulletIndent=4, bulletFontName="Helvetica", bulletFontSize=9.5)

TH = S("TH",
    fontSize=9, fontName="Helvetica-Bold", textColor=WHITE,
    alignment=TA_CENTER, leading=12)

TD = S("TD",
    fontSize=8.5, fontName="Helvetica", textColor=GRAY_DARK,
    alignment=TA_LEFT, leading=12)

TD_C = S("TD_C",
    fontSize=8.5, fontName="Helvetica", textColor=GRAY_DARK,
    alignment=TA_CENTER, leading=12)

TD_B = S("TD_B",
    fontSize=8.5, fontName="Helvetica-Bold", textColor=GRAY_DARK,
    alignment=TA_LEFT, leading=12)

FOOTER_STYLE = S("Footer",
    fontSize=7.5, fontName="Helvetica", textColor=colors.HexColor("#A0AEC0"),
    alignment=TA_CENTER)

# ── Helper: color-coded paragraph box ────────────────────────────────────────
def box_para(text, bg=LIGHT_BLUE, border=MED_BLUE, style=BODY):
    t = Table([[Paragraph(text, style)]], colWidths=[16.5*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("BOX",        (0,0), (-1,-1), 0.8, border),
        ("LEFTPADDING",  (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("TOPPADDING",   (0,0), (-1,-1), 8),
        ("BOTTOMPADDING",(0,0), (-1,-1), 8),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

# ── Helper: section divider ───────────────────────────────────────────────────
def divider(color=MED_BLUE):
    return HRFlowable(width="100%", thickness=1.5, color=color, spaceAfter=4, spaceBefore=4)

# ── Header/Footer ─────────────────────────────────────────────────────────────
def on_page(canvas, doc):
    W, H = A4
    # Top stripe
    canvas.setFillColor(DARK_BLUE)
    canvas.rect(0, H - 1.4*cm, W, 1.4*cm, fill=1, stroke=0)
    canvas.setFont("Helvetica-Bold", 8)
    canvas.setFillColor(WHITE)
    canvas.drawCentredString(W/2, H - 0.85*cm, "DOPAMINE IN PSYCHIATRY  •  Clinical Reference Guide")
    # Bottom stripe
    canvas.setFillColor(DARK_BLUE)
    canvas.rect(0, 0, W, 1.0*cm, fill=1, stroke=0)
    canvas.setFont("Helvetica", 7.5)
    canvas.setFillColor(colors.HexColor("#BEE3F8"))
    canvas.drawCentredString(W/2, 0.35*cm,
        f"Page {doc.page}  •  Based on Stahl's Essential Psychopharmacology & Kaplan & Sadock's Psychiatry  •  For educational use")

def on_first_page(canvas, doc):
    pass  # cover has its own design

# ── Document setup ────────────────────────────────────────────────────────────
doc = BaseDocTemplate(OUTPUT, pagesize=A4,
    leftMargin=2*cm, rightMargin=2*cm,
    topMargin=2.2*cm, bottomMargin=1.8*cm)

frame_cover = Frame(0, 0, A4[0], A4[1], leftPadding=0, rightPadding=0,
                    topPadding=0, bottomPadding=0)
frame_body  = Frame(2*cm, 1.6*cm, A4[0]-4*cm, A4[1]-3.8*cm,
                    leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)

doc.addPageTemplates([
    PageTemplate(id="Cover", frames=[frame_cover], onPage=on_first_page),
    PageTemplate(id="Body",  frames=[frame_body],  onPage=on_page),
])

# ── Content ───────────────────────────────────────────────────────────────────
story = []

# ═══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ═══════════════════════════════════════════════════════════════════════════════
def cover_page(canvas, doc):
    W, H = A4
    # Deep background
    canvas.setFillColor(DARK_BLUE)
    canvas.rect(0, 0, W, H, fill=1, stroke=0)
    # Diagonal accent band
    canvas.setFillColor(MED_BLUE)
    p = canvas.beginPath()
    p.moveTo(0, H*0.55); p.lineTo(W, H*0.45); p.lineTo(W, H*0.55); p.lineTo(0, H*0.65)
    p.close()
    canvas.drawPath(p, fill=1, stroke=0)
    # Bottom accent
    canvas.setFillColor(colors.HexColor("#2C5282"))
    canvas.rect(0, 0, W, 3.5*cm, fill=1, stroke=0)
    # Title
    canvas.setFont("Helvetica-Bold", 32)
    canvas.setFillColor(WHITE)
    canvas.drawCentredString(W/2, H*0.72, "DOPAMINE IN PSYCHIATRY")
    # Subtitle
    canvas.setFont("Helvetica", 16)
    canvas.setFillColor(colors.HexColor("#BEE3F8"))
    canvas.drawCentredString(W/2, H*0.64, "Pathways, Receptors & Clinical Applications")
    # Divider line
    canvas.setStrokeColor(colors.HexColor("#63B3ED"))
    canvas.setLineWidth(2)
    canvas.line(3*cm, H*0.60, W - 3*cm, H*0.60)
    # Subtitle 2
    canvas.setFont("Helvetica-Oblique", 12)
    canvas.setFillColor(colors.HexColor("#90CDF4"))
    canvas.drawCentredString(W/2, H*0.56, "A Comprehensive Clinical Reference Guide")
    # Tags
    canvas.setFont("Helvetica", 9)
    canvas.setFillColor(colors.HexColor("#63B3ED"))
    tags = ["Schizophrenia", "Depression", "Addiction", "ADHD", "Bipolar Disorder",
            "Pharmacology", "Antipsychotics"]
    x = 2.5*cm
    y = H*0.48
    for i, tag in enumerate(tags):
        tw = canvas.stringWidth(tag, "Helvetica", 9) + 16
        canvas.setFillColor(colors.HexColor("#1E4E8C"))
        canvas.roundRect(x, y-3, tw, 16, 4, fill=1, stroke=0)
        canvas.setFillColor(colors.HexColor("#BEE3F8"))
        canvas.drawString(x+8, y+2, tag)
        x += tw + 8
        if x > W - 4*cm:
            x = 2.5*cm; y -= 22
    # Bottom info
    canvas.setFont("Helvetica", 9)
    canvas.setFillColor(colors.HexColor("#90CDF4"))
    canvas.drawCentredString(W/2, 2.2*cm, "Based on: Stahl's Essential Psychopharmacology  •  Kaplan & Sadock's Textbook of Psychiatry")
    canvas.drawCentredString(W/2, 1.5*cm, "Synopsis of Psychiatry  •  Neuroscience: Exploring the Brain")
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(colors.HexColor("#63B3ED"))
    canvas.drawCentredString(W/2, 0.7*cm, "For Educational Use Only  •  July 2026")

doc.addPageTemplates([
    PageTemplate(id="CoverFull", frames=[
        Frame(0, 0, A4[0], A4[1], leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
    ], onPage=cover_page),
])

# Switch template
from reportlab.platypus import NextPageTemplate
story.append(NextPageTemplate("CoverFull"))
story.append(Spacer(1, A4[1]))  # blank placeholder - cover drawn by onPage
story.append(NextPageTemplate("Body"))
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 2 — OVERVIEW & DOPAMINE BASICS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("1. DOPAMINE: FUNDAMENTALS", SECTION_TITLE))
story.append(divider())

story.append(Paragraph(
    "Dopamine (DA) is a catecholamine neurotransmitter synthesized from tyrosine via L-DOPA. "
    "It is not simply a 'pleasure chemical' — it functions as a <b>prediction error signal</b> and a "
    "<b>salience detector</b>, encoding the difference between expected and actual reward. Aberrant "
    "salience — driven by tonically elevated mesolimbic DA — is the proposed mechanism by which "
    "delusions and hallucinations are formed in schizophrenia.", BODY))
story.append(Spacer(1, 0.3*cm))

# Synthesis box
story.append(Paragraph("Synthesis & Metabolism", SUBSECTION))
steps_data = [
    [Paragraph("<b>Step</b>", TH), Paragraph("<b>Substrate</b>", TH),
     Paragraph("<b>Enzyme</b>", TH), Paragraph("<b>Product</b>", TH)],
    [Paragraph("1", TD_C), Paragraph("L-Tyrosine", TD),
     Paragraph("Tyrosine hydroxylase (rate-limiting)", TD), Paragraph("L-DOPA", TD)],
    [Paragraph("2", TD_C), Paragraph("L-DOPA", TD),
     Paragraph("DOPA decarboxylase (AADC)", TD), Paragraph("Dopamine", TD)],
    [Paragraph("3", TD_C), Paragraph("Dopamine", TD),
     Paragraph("MAO-A/B, COMT", TD), Paragraph("HVA (homovanillic acid)", TD)],
]
steps_t = Table(steps_data, colWidths=[1.5*cm, 3.5*cm, 7*cm, 4*cm])
steps_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
    ("BACKGROUND", (0,2), (-1,2), WHITE),
    ("BACKGROUND", (0,3), (-1,3), LIGHT_BLUE),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(steps_t)
story.append(Spacer(1, 0.4*cm))

# Receptor families
story.append(Paragraph("Dopamine Receptor Families", SUBSECTION))
rec_data = [
    [Paragraph("<b>Family</b>", TH), Paragraph("<b>Subtypes</b>", TH),
     Paragraph("<b>Coupling</b>", TH), Paragraph("<b>cAMP Effect</b>", TH),
     Paragraph("<b>Key Locations</b>", TH), Paragraph("<b>Clinical Relevance</b>", TH)],
    [Paragraph("D1-like", TD_B), Paragraph("D1, D5", TD_C),
     Paragraph("Gs protein", TD_C), Paragraph("↑ (activate)", TD_C),
     Paragraph("PFC (DLPFC), striatum, hippocampus", TD),
     Paragraph("Working memory; ADHD; cognitive function", TD)],
    [Paragraph("D2-like", TD_B), Paragraph("D2, D3, D4", TD_C),
     Paragraph("Gi protein", TD_C), Paragraph("↓ (inhibit)", TD_C),
     Paragraph("Striatum, limbic, VTA, pituitary", TD),
     Paragraph("Primary antipsychotic target; reward; prolactin", TD)],
]
rec_t = Table(rec_data, colWidths=[1.8*cm, 2*cm, 2.2*cm, 2.2*cm, 4*cm, 4.3*cm])
rec_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
    ("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(rec_t)
story.append(Spacer(1, 0.3*cm))
story.append(box_para(
    "<b>Key note on D2 autoreceptors:</b> D2/D3 autoreceptors act as a brake on dopamine release. "
    "When presynaptic DA is high, autoreceptors fire to reduce further release. Somatodendritic "
    "autoreceptors in the VTA slow cell firing; terminal autoreceptors in the striatum inhibit DA release. "
    "This feedback differs by pathway — mesocortical neurons have <i>fewer</i> autoreceptors, so DA "
    "diffuses more freely in the PFC.",
    bg=LIGHT_GOLD, border=GOLD))

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 3 — THE FIVE DOPAMINE PATHWAYS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("2. THE FIVE DOPAMINE PATHWAYS", SECTION_TITLE))
story.append(divider())

story.append(Paragraph(
    "The five classic DA pathways each project to distinct brain regions and mediate distinct "
    "functions. Their differential response to antipsychotic D2 blockade explains the drug's "
    "therapeutic effects and side-effect profile simultaneously.", BODY))
story.append(Spacer(1, 0.3*cm))

pathways_data = [
    [Paragraph("<b>Pathway</b>", TH),
     Paragraph("<b>Origin → Target</b>", TH),
     Paragraph("<b>Normal Function</b>", TH),
     Paragraph("<b>Psychiatric Role /\nDysfunction</b>", TH),
     Paragraph("<b>Effect of D2\nBlockade</b>", TH)],
    # Mesolimbic
    [Paragraph("<b>Mesolimbic</b>", TD_B),
     Paragraph("VTA → Nucleus accumbens, amygdala, hippocampus", TD),
     Paragraph("Reward, motivation, pleasure, emotional memory, reinforcement learning", TD),
     Paragraph("Hyperactivity → positive psychotic symptoms (hallucinations, delusions). "
               "Mediates addictive drive. Hypoactivity → anhedonia in depression", TD),
     Paragraph("Therapeutic: reduces positive symptoms of psychosis", TD)],
    # Mesocortical
    [Paragraph("<b>Mesocortical</b>", TD_B),
     Paragraph("VTA → Prefrontal cortex (DLPFC, vmPFC)", TD),
     Paragraph("Executive function, working memory, attention, affect regulation", TD),
     Paragraph("Hypoactivity → negative symptoms, cognitive deficits, affective blunting in schizophrenia. "
               "Also implicated in ADHD", TD),
     Paragraph("May worsen negative/cognitive symptoms by further reducing already-low DA in PFC", TD)],
    # Nigrostriatal
    [Paragraph("<b>Nigrostriatal</b>", TD_B),
     Paragraph("Substantia nigra → Striatum (caudate, putamen, basal ganglia)", TD),
     Paragraph("Voluntary movement initiation, motor coordination, habit learning", TD),
     Paragraph("Degeneration → Parkinson's disease (tremor, rigidity, bradykinesia). "
               "Involved in OCD and tic disorders", TD),
     Paragraph("EPS: parkinsonism, akathisia, dystonia (acute). Chronic blockade → tardive dyskinesia", TD)],
    # Tuberoinfundibular
    [Paragraph("<b>Tuberoinfundibular</b>", TD_B),
     Paragraph("Arcuate nucleus (hypothalamus) → Anterior pituitary", TD),
     Paragraph("Tonic inhibition of prolactin secretion. Reduced during breastfeeding to permit lactation", TD),
     Paragraph("Relatively preserved in untreated schizophrenia. Disrupted by antipsychotics", TD),
     Paragraph("Hyperprolactinemia: galactorrhea, gynecomastia, amenorrhea, sexual dysfunction", TD)],
    # Thalamic
    [Paragraph("<b>Thalamic</b>", TD_B),
     Paragraph("Multiple midbrain/brainstem nuclei → Thalamus", TD),
     Paragraph("Sensory gating, thalamo-cortical relay modulation, filtering of sensory input", TD),
     Paragraph("Proposed role in sensory flood/hallucinogenic states; less clinically defined", TD),
     Paragraph("Effects not well characterized clinically", TD)],
]

path_t = Table(pathways_data, colWidths=[2.8*cm, 3*cm, 3.5*cm, 4.5*cm, 2.7*cm])
path_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
    ("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
    ("BACKGROUND", (0,3), (-1,3), colors.HexColor("#FFF5F5")),
    ("BACKGROUND", (0,4), (-1,4), LIGHT_GOLD),
    ("BACKGROUND", (0,5), (-1,5), LIGHT_PURP),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
]))
story.append(path_t)
story.append(Spacer(1, 0.4*cm))
story.append(box_para(
    "<b>Therapeutic window:</b> Antipsychotic D2 receptor occupancy of <b>60–80%</b> is the therapeutic "
    "sweet spot. Below 60% → insufficient reduction of positive symptoms. Above 80% → EPS risk "
    "increases sharply. Clozapine achieves efficacy at lower occupancy due to its 'fast off' kinetics "
    "and multi-receptor profile.",
    bg=LIGHT_BLUE, border=MED_BLUE))

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 4 — DOPAMINE HYPOTHESIS OF SCHIZOPHRENIA
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("3. THE DOPAMINE HYPOTHESIS OF SCHIZOPHRENIA", SECTION_TITLE))
story.append(divider())

story.append(Paragraph("Historical Development", SUBSECTION))
hist_data = [
    [Paragraph("<b>Era</b>", TH), Paragraph("<b>Key Finding</b>", TH), Paragraph("<b>Implication</b>", TH)],
    [Paragraph("1950s–60s", TD_C),
     Paragraph("Chlorpromazine found to reduce psychosis; recognized as DA blocker", TD),
     Paragraph("D2 antagonism → antipsychotic effect", TD)],
    [Paragraph("1960s–70s", TD_C),
     Paragraph("Antipsychotic potency correlates precisely with D2 receptor affinity", TD),
     Paragraph("D2 is the primary therapeutic target", TD)],
    [Paragraph("1970s–80s", TD_C),
     Paragraph("Amphetamine/cocaine (DA-releasing) induce paranoid psychosis; DA agonists worsen schizophrenia", TD),
     Paragraph("Excess DA → positive symptoms", TD)],
    [Paragraph("1980s–90s", TD_C),
     Paragraph("PFC DA lesions in primates → working memory deficits resembling schizophrenia", TD),
     Paragraph("Regional imbalance: subcortical hyper vs cortical hypo-DA", TD)],
    [Paragraph("1990s–2000s", TD_C),
     Paragraph("PET/SPECT imaging: excess presynaptic DA synthesis in striatum; increased amphetamine-evoked DA release", TD),
     Paragraph("First direct in-vivo evidence of hyperdopaminergia", TD)],
    [Paragraph("2000s–present", TD_C),
     Paragraph("NMDA hypofunction upstream model; mesostriatal (not purely mesolimbic) focus", TD),
     Paragraph("Glutamate dysregulation drives striatal hyperdopaminergia", TD)],
]
hist_t = Table(hist_data, colWidths=[2.5*cm, 9*cm, 5*cm])
hist_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(hist_t)
story.append(Spacer(1, 0.4*cm))

story.append(Paragraph("The Two-System Imbalance Model", SUBSECTION))
imbal_data = [
    [Paragraph("<b>System</b>", TH), Paragraph("<b>DA State</b>", TH),
     Paragraph("<b>Symptoms Produced</b>", TH), Paragraph("<b>Evidence</b>", TH)],
    [Paragraph("Mesolimbic /\nMesostriatal\n(subcortical)", TD_B),
     Paragraph("HYPERDOPAMINERGIA\n(excess DA)", TD_C),
     Paragraph("Positive symptoms:\n• Auditory/visual hallucinations\n• Paranoid delusions\n• Thought disorganization\n• Grandiosity", TD),
     Paragraph("• PET: ↑ striatal DA synthesis\n• ↑ amphetamine-evoked DA release\n• Correlates with positive symptom severity", TD)],
    [Paragraph("Mesocortical\n(prefrontal cortex)", TD_B),
     Paragraph("HYPODOPAMINERGIA\n(reduced DA)", TD_C),
     Paragraph("Negative symptoms:\n• Flat affect, avolition\n• Alogia, anhedonia\nCognitive symptoms:\n• ↓ Working memory\n• ↓ Executive function\nAffective symptoms:\n• Depression, anxiety", TD),
     Paragraph("• PFC DA ↓ in NHP lesion models\n• D1 receptor hypostimulation\n• Neurodevelopmental NMDA deficit\n• Poor response to D2 blockers", TD)],
]
imbal_t = Table(imbal_data, colWidths=[3*cm, 3*cm, 5.5*cm, 5*cm])
imbal_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,1), (-1,1), colors.HexColor("#FFF5F5")),
    ("BACKGROUND", (0,2), (-1,2), LIGHT_PURP),
    ("BOX",    (0,1), (-1,1), 1.5, ACCENT),
    ("BOX",    (0,2), (-1,2), 1.5, PURPLE),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(imbal_t)
story.append(Spacer(1, 0.3*cm))
story.append(box_para(
    "<b>Limitations of the DA hypothesis:</b> Does not explain why antipsychotics take 2–6 weeks for full effect "
    "despite rapid D2 blockade. Fails to account for treatment-resistant schizophrenia (~30%). Postmortem DA "
    "evidence is confounded by prior antipsychotic exposure. This led to the <b>glutamate/NMDA hypofunction "
    "hypothesis</b> as a complementary upstream model.",
    bg=LIGHT_ORNG, border=ORANGE))

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 5 — DOPAMINE ACROSS PSYCHIATRIC DISORDERS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("4. DOPAMINE ACROSS PSYCHIATRIC DISORDERS", SECTION_TITLE))
story.append(divider())

disorders_data = [
    [Paragraph("<b>Disorder</b>", TH),
     Paragraph("<b>DA Abnormality</b>", TH),
     Paragraph("<b>Key Pathway(s)</b>", TH),
     Paragraph("<b>Clinical Features Linked to DA</b>", TH),
     Paragraph("<b>Treatment Implication</b>", TH)],
    [Paragraph("Schizophrenia", TD_B),
     Paragraph("Subcortical hyper-DA; prefrontal hypo-DA", TD),
     Paragraph("Mesostriatal ↑\nMesocortical ↓", TD),
     Paragraph("Hallucinations, delusions (hyper-DA); flat affect, cognitive deficits (hypo-DA)", TD),
     Paragraph("D2 antagonists/partial agonists; 60–80% D2 occupancy target", TD)],
    [Paragraph("Bipolar Disorder\n(Mania)", TD_B),
     Paragraph("Excess dopaminergic tone during mania", TD),
     Paragraph("Mesolimbic ↑", TD),
     Paragraph("Grandiosity, decreased need for sleep, pressured speech, hypersexuality, risk-taking", TD),
     Paragraph("Antipsychotics (D2 blockade) as acute antimanic agents; mood stabilizers", TD)],
    [Paragraph("Major\nDepression", TD_B),
     Paragraph("Reduced DA signaling → impaired reward processing", TD),
     Paragraph("Mesolimbic ↓\nMesocortical ↓", TD),
     Paragraph("Anhedonia, anergia, psychomotor retardation, amotivation", TD),
     Paragraph("Bupropion (DAT + NET inhibitor); augmentation with aripiprazole; MAOIs", TD)],
    [Paragraph("ADHD", TD_B),
     Paragraph("Hypo-DA (and NE) in prefrontal cortex", TD),
     Paragraph("Mesocortical ↓", TD),
     Paragraph("Inattention, impulsivity, poor working memory, distractibility", TD),
     Paragraph("Stimulants: methylphenidate (DAT blocker), amphetamine (DA releaser + DAT blocker)", TD)],
    [Paragraph("Addiction /\nSubstance Use", TD_B),
     Paragraph("Acute: DA surge in NAc; chronic: D2 receptor downregulation, blunted reward", TD),
     Paragraph("Mesolimbic (NAc)\n— all drugs converge here", TD),
     Paragraph("Euphoria (acute); craving, anhedonia in withdrawal; compulsive use despite harm", TD),
     Paragraph("Dopamine stabilizers; NRT; naltrexone; DA agonist substitution (e.g., nicotine patch)", TD)],
    [Paragraph("Parkinson's\nDisease Psychosis", TD_B),
     Paragraph("Nigrostriatal DA depletion; levodopa → mesolimbic hyper-DA", TD),
     Paragraph("Nigrostriatal ↓\nMesolimbic ↑ (iatrogenic)", TD),
     Paragraph("Visual hallucinations, delusions of infidelity, paranoia from dopaminergic drugs", TD),
     Paragraph("Pimavanserin (5-HT2A inverse agonist); clozapine at low dose; avoid classic antipsychotics", TD)],
    [Paragraph("OCD", TD_B),
     Paragraph("Dysregulation of DA in cortico-striato-thalamic loops", TD),
     Paragraph("Nigrostriatal / cortico-striatal", TD),
     Paragraph("Compulsive repetitive behaviors (habit system overactivation)", TD),
     Paragraph("SSRIs first-line; D2 augmentation with low-dose antipsychotics for refractory cases", TD)],
    [Paragraph("Tourette\nSyndrome", TD_B),
     Paragraph("Dopaminergic hyperactivity in striatum", TD),
     Paragraph("Nigrostriatal ↑", TD),
     Paragraph("Motor and vocal tics, involuntary movements and vocalizations", TD),
     Paragraph("D2 antagonists (haloperidol, fluphenazine); D2 partial agonists; alpha-2 agonists", TD)],
]

dis_t = Table(disorders_data, colWidths=[2.5*cm, 3.5*cm, 2.8*cm, 4*cm, 3.7*cm])
dis_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE, LIGHT_GREEN, WHITE,
                                         LIGHT_PURP, LIGHT_ORNG, LIGHT_GOLD, LIGHT_BLUE]),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(disorders_data[0])  # just appended above already
story.append(dis_t)

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 6 — ANTIPSYCHOTICS & DA PHARMACOLOGY
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("5. ANTIPSYCHOTICS: DOPAMINE PHARMACOLOGY", SECTION_TITLE))
story.append(divider())

story.append(Paragraph(
    "All currently approved antipsychotics act on dopamine receptors. The distinction between "
    "generations and classes lies in their receptor selectivity, binding kinetics, and D2 occupancy "
    "profile — which determine both therapeutic effects and side effects.", BODY))
story.append(Spacer(1, 0.3*cm))

ap_data = [
    [Paragraph("<b>Class / Drug</b>", TH),
     Paragraph("<b>Mechanism</b>", TH),
     Paragraph("<b>D2 Occupancy</b>", TH),
     Paragraph("<b>Advantages</b>", TH),
     Paragraph("<b>Key Risks</b>", TH)],
    [Paragraph("FGA — High potency\n(Haloperidol, Fluphenazine)", TD_B),
     Paragraph("Tight D2 antagonism", TD),
     Paragraph("80–90%", TD_C),
     Paragraph("Effective for positive symptoms; depot formulations available", TD),
     Paragraph("High EPS; TD risk; hyperprolactinemia; QTc prolongation", TD)],
    [Paragraph("FGA — Low potency\n(Chlorpromazine, Thioridazine)", TD_B),
     Paragraph("D2 antagonism + antihistamine, anticholinergic, alpha-1 blockade", TD),
     Paragraph("70–80%", TD_C),
     Paragraph("Sedating; good for agitation", TD),
     Paragraph("Orthostatic hypotension; sedation; anticholinergic effects; metabolic effects", TD)],
    [Paragraph("SGA\n(Risperidone, Olanzapine, Quetiapine)", TD_B),
     Paragraph("D2 + 5-HT2A antagonism ('serotonin-dopamine antagonists')", TD),
     Paragraph("60–80%", TD_C),
     Paragraph("Lower EPS than FGAs; better for negative/affective symptoms", TD),
     Paragraph("Metabolic syndrome (weight, glucose, lipids); sedation; prolactin (risperidone)", TD)],
    [Paragraph("Clozapine", TD_B),
     Paragraph("'Fast-off' D2, D4; 5-HT2A, H1, M1, alpha-1/2 antagonism", TD),
     Paragraph("20–60%\n(loose binding)", TD_C),
     Paragraph("Gold standard for treatment-resistant schizophrenia; reduces suicidality", TD),
     Paragraph("Agranulocytosis (requires mandatory CBC monitoring); metabolic syndrome; seizures", TD)],
    [Paragraph("D2 Partial Agonists\n(Aripiprazole, Brexpiprazole, Cariprazine)", TD_B),
     Paragraph("D2 partial agonist (DA stabilizer): antagonist where DA is high, agonist where DA is low", TD),
     Paragraph("70–80%", TD_C),
     Paragraph("Functional stabilizer across pathways; minimal prolactin elevation; weight-neutral", TD),
     Paragraph("Akathisia; insomnia; activation; may be insufficient in high-severity psychosis", TD)],
    [Paragraph("Muscarinic Antipsychotics\n(Xanomeline-trospium, 2026)", TD_B),
     Paragraph("M1/M4 muscarinic agonism — indirect DA modulation without direct D2 blockade", TD),
     Paragraph("None (indirect)", TD_C),
     Paragraph("No EPS; no prolactin elevation; novel mechanism for treatment-resistant cases", TD),
     Paragraph("GI side effects; limited long-term data (new class, 2026 Lancet meta-analysis)", TD)],
]

ap_t = Table(ap_data, colWidths=[3.5*cm, 4*cm, 2*cm, 3.5*cm, 3.5*cm])
ap_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#FFF5F5"), LIGHT_BLUE,
                                         LIGHT_GREEN, LIGHT_GOLD, LIGHT_PURP, LIGHT_ORNG]),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(ap_t)
story.append(Spacer(1, 0.4*cm))

# Side effects by pathway
story.append(Paragraph("Antipsychotic Side Effects Mapped to DA Pathways", SUBSECTION))
se_data = [
    [Paragraph("<b>Side Effect</b>", TH), Paragraph("<b>Pathway Blocked</b>", TH),
     Paragraph("<b>Mechanism</b>", TH), Paragraph("<b>Management</b>", TH)],
    [Paragraph("EPS (acute dystonia, parkinsonism, akathisia)", TD_B),
     Paragraph("Nigrostriatal", TD),
     Paragraph("D2 blockade reduces motor DA tone; >80% occupancy threshold", TD),
     Paragraph("Anticholinergics (benztropine); dose reduction; switch to SGA; beta-blockers for akathisia", TD)],
    [Paragraph("Tardive dyskinesia", TD_B),
     Paragraph("Nigrostriatal (chronic)", TD),
     Paragraph("Chronic D2 blockade → receptor upregulation and supersensitivity", TD),
     Paragraph("VMAT2 inhibitors (valbenazine, deutetrabenazine); clonazepam; switch to clozapine", TD)],
    [Paragraph("Hyperprolactinemia", TD_B),
     Paragraph("Tuberoinfundibular", TD),
     Paragraph("Removes tonic DA inhibition of prolactin secretion", TD),
     Paragraph("Switch to prolactin-sparing agent (aripiprazole, clozapine, quetiapine)", TD)],
    [Paragraph("Worsening negative/cognitive symptoms", TD_B),
     Paragraph("Mesocortical", TD),
     Paragraph("Further reduces already-low DA in PFC; blunts D1-mediated cognition", TD),
     Paragraph("Reduce dose; add aripiprazole (partial agonist); address comorbid depression", TD)],
    [Paragraph("Anhedonia / 'neuroleptic dysphoria'", TD_B),
     Paragraph("Mesolimbic", TD),
     Paragraph("Over-blockade blunts reward signaling; 'emotional blunting'", TD),
     Paragraph("Dose reduction; switch to partial agonist; evaluate for secondary depression", TD)],
]
se_t = Table(se_data, colWidths=[3.5*cm, 3*cm, 5*cm, 5*cm])
se_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE, LIGHT_GOLD, LIGHT_PURP, LIGHT_ORNG]),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(se_t)

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 7 — QUICK REFERENCE SUMMARY
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("6. QUICK REFERENCE SUMMARY", SECTION_TITLE))
story.append(divider())

story.append(Paragraph("Pathway-Symptom-Drug Matrix", SUBSECTION))
matrix_data = [
    [Paragraph("<b>DA Pathway</b>", TH),
     Paragraph("<b>DA State in Disease</b>", TH),
     Paragraph("<b>Symptoms</b>", TH),
     Paragraph("<b>Drug Effect</b>", TH),
     Paragraph("<b>Result</b>", TH)],
    [Paragraph("Mesolimbic", TD_B),
     Paragraph("↑ in schizophrenia\n↑ in mania\n↓ in depression\n↑↑ in addiction (acute)", TD),
     Paragraph("Hallucinations, delusions\nEuphoria/grandiosity\nAnhedonia\nCraving, euphoria", TD),
     Paragraph("D2 blockade", TD_C),
     Paragraph("Reduces positive psychotic symptoms\nAntimania\nRisk of anhedonia side effect", TD)],
    [Paragraph("Mesocortical", TD_B),
     Paragraph("↓ in schizophrenia\n↓ in ADHD\n↓ in depression", TD),
     Paragraph("Negative symptoms, cognitive deficits\nInattention, impulsivity\nAmotivation, fatigue", TD),
     Paragraph("D2 blockade (undesirable)\nDA agonists / stimulants", TD_C),
     Paragraph("May worsen negative symptoms\nImproves attention/cognition", TD)],
    [Paragraph("Nigrostriatal", TD_B),
     Paragraph("↓ in Parkinson's\n↑ in Tourette's/OCD", TD),
     Paragraph("Tremor, rigidity, bradykinesia\nTics, compulsions", TD),
     Paragraph("D2 blockade (side effect)\nLevodopa (therapeutic)", TD_C),
     Paragraph("EPS / tardive dyskinesia\nReverses Parkinson's motor symptoms", TD)],
    [Paragraph("Tuberoinfundibular", TD_B),
     Paragraph("↓ when D2 is blocked\nNormal in untreated schizophrenia", TD),
     Paragraph("Hyperprolactinemia symptoms", TD),
     Paragraph("D2 blockade (side effect)", TD_C),
     Paragraph("Galactorrhea, amenorrhea, gynecomastia, sexual dysfunction", TD)],
]
matrix_t = Table(matrix_data, colWidths=[2.8*cm, 3.5*cm, 4*cm, 3*cm, 3.2*cm])
matrix_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
    ("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
    ("BACKGROUND", (0,3), (-1,3), LIGHT_GOLD),
    ("BACKGROUND", (0,4), (-1,4), LIGHT_PURP),
    ("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story.append(matrix_t)
story.append(Spacer(1, 0.4*cm))

story.append(Paragraph("Key Clinical Pearls", SUBSECTION))
pearls = [
    ("D2 occupancy sweet spot", "60–80% D2 receptor occupancy is the therapeutic window. Below 60% = inadequate antipsychotic effect. Above 80% = EPS risk rises sharply."),
    ("Aberrant salience", "Psychosis is not just 'too much DA.' It is dysregulated salience — mesolimbic DA fires inappropriately, making irrelevant stimuli feel meaningful, generating delusional interpretations."),
    ("The NMDA-DA link", "NMDA receptor hypofunction in cortical GABA interneurons → loss of inhibitory control → downstream striatal hyperdopaminergia. This is why ketamine/PCP produce psychosis and why glutamate-targeting drugs are being developed."),
    ("Clozapine's paradox", "Clozapine achieves superior efficacy at lower D2 occupancy (20–60%) than other antipsychotics. Its 'fast off' kinetics, D4 affinity, and broad serotonergic/cholinergic/histaminergic effects explain this."),
    ("Aripiprazole as stabilizer", "As a D2 partial agonist, aripiprazole acts as a functional antagonist when synaptic DA is high (mesolimbic) and a functional agonist when DA is low (mesocortical) — theoretically addressing both symptom clusters."),
    ("Depression and DA", "Anhedonia is the most DA-dependent feature of depression. Inflammation-driven impairment of DA signaling in the basal ganglia is a key mechanistic link between immune activation and depressive phenotypes."),
    ("Prolactin monitoring", "Check prolactin when patients on D2 blockers report amenorrhea, galactorrhea, sexual dysfunction, or gynecomastia. Aripiprazole can normalize prolactin when added to other antipsychotics."),
]
for title, text in pearls:
    story.append(box_para(
        f"<b>{title}:</b> {text}",
        bg=LIGHT_BLUE, border=MED_BLUE))
    story.append(Spacer(1, 0.2*cm))

story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("References", SUBSECTION))
refs = [
    "Stahl SM. Stahl's Essential Psychopharmacology: Neuroscientific Basis and Practical Applications, 5th ed. Cambridge University Press, 2021. Ch. 4–5.",
    "Sadock BJ, Sadock VA, Ruiz P. Kaplan & Sadock's Comprehensive Textbook of Psychiatry, 10th ed. Wolters Kluwer. Molecular Brain Imaging section.",
    "Sadock BJ, Sadock VA, Ruiz P. Kaplan & Sadock's Synopsis of Psychiatry, 11th ed. Wolters Kluwer, pp. 1112–1113.",
    "Bear MF, Connors BW, Paradiso MA. Neuroscience: Exploring the Brain, 5th ed. Jones & Bartlett. Ch. 22.",
    "Schneider-Thoma J, Zhu Y, Qin M et al. Comparative efficacy and tolerability of antidopaminergic and muscarinic antipsychotics for acute schizophrenia. Lancet. 2026 Feb 28. PMID: 41763745.",
    "Feber L et al. Antipsychotic Drugs and Cognitive Function: A Systematic Review and Network Meta-Analysis. JAMA Psychiatry. 2025 Jan 1. PMID: 39412783.",
]
for i, ref in enumerate(refs, 1):
    story.append(Paragraph(f"{i}. {ref}", S("Ref", parent=BODY, fontSize=8, spaceAfter=3)))

# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

cd /home/daytona/workspace/dopamine-guide && python generate_pdf.py 2>&1

Editing File

~/dopamine-guide/generate_pdf.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/dopamine-guide/generate_pdf.py'
Running Command

cd /home/daytona/workspace/dopamine-guide && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/dopamine-guide/Dopamine_Pathways_Psychiatric_Reference.pdf

Your PDF reference guide is ready:

Dopamine Pathways Psychiatric Reference

PDF Document · PDF


What's inside (7 sections across ~7 pages):
SectionContents
CoverStyled title page with disorder tags
1. FundamentalsDA synthesis pathway table, D1-like vs D2-like receptor families with coupling/locations, autoreceptor note
2. The Five PathwaysFull table - origin, target, normal function, psychiatric role, and effect of D2 blockade for all 5 pathways; D2 occupancy therapeutic window callout
3. Schizophrenia HypothesisTimeline of evidence (1950s–present); Two-system imbalance model (mesostriatal hyper-DA vs mesocortical hypo-DA); limitations note
4. Disorders Overview8 disorders (schizophrenia, bipolar, depression, ADHD, addiction, Parkinson's psychosis, OCD, Tourette's) - DA abnormality, key pathway, clinical features, treatment
5. Antipsychotics6 drug classes with mechanism, D2 occupancy, advantages and risks; side effects mapped to specific DA pathways
6. Quick ReferencePathway-symptom-drug matrix; 7 clinical pearls; 6 references including 2025–2026 meta-analyses
This is a shared conversation. Sign in to Orris to start your own chat.