Parkisnason disease
"Parkinson disease"[MeSH Terms] AND treatment
| Type | Gene/Mutation | Inheritance |
|---|---|---|
| Most common autosomal dominant | LRRK2 (leucine-rich repeat kinase 2) | Autosomal dominant |
| Classic early-onset | Parkin, DJ-1, PINK1 | Autosomal recessive |
| Rare dominant forms | α-synuclein (SNCA) mutations, duplications | Autosomal dominant |
| Risk factor | Glucocerebrosidase (GBA1) mutations | Heterozygous risk |
| Category | Examples |
|---|---|
| Neurodegenerative | Progressive supranuclear palsy (PSP), Multiple system atrophy (MSA), Corticobasal degeneration, Dementia with Lewy bodies |
| Drug-induced | Neuroleptics, metoclopramide, prochlorperazine, tetrabenazine, reserpine, flunarizine |
| Toxic | MPTP, manganese, carbon monoxide |
| Vascular | Atherosclerosis, amyloid angiopathy |
| Infectious | Encephalitis lethargica, HIV encephalitis |
| Structural | Normal pressure hydrocephalus, brain tumors |
| Metabolic | Wilson disease |
| Problem | Examples |
|---|---|
| Motor (treatment-resistant) | Dysarthria, freezing, postural instability, falls |
| Motor (drug-induced) | Dyskinesias, wearing-off, on-off fluctuations |
| Non-motor | Dementia, psychosis (hallucinations), depression, autonomic failure, dysphagia |
| Feature | Detail |
|---|---|
| Core pathology | Loss of dopaminergic neurons in substantia nigra |
| Hallmark inclusion | Lewy body (α-synuclein) |
| Cardinal signs | Tremor, Rigidity, Akinesia, Postural instability (TRAP) |
| Earliest symptoms | RBD, anosmia, constipation, depression |
| First-line treatment | Levodopa + Carbidopa |
| Surgical option | Deep brain stimulation (STN or GPi) |
| Progression | 10-15 years; death from aspiration or falls |
Recent evidence note: A 2025 meta-analysis (PMID 40335465) using machine learning found significant gut microbiome alterations associated with PD, supporting the gut-brain axis hypothesis and reinforcing the relevance of the prodromal GI symptoms. Research on GBA1 variants (PMID 39927608) continues to refine genotype-phenotype relationships in familial PD.
Convert in pdf
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
~/parkinsons_disease.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
OUTPUT_PATH = "/home/daytona/workspace/Parkinsons_Disease.pdf"
doc = SimpleDocTemplate(
OUTPUT_PATH,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Parkinson's Disease - Comprehensive Overview",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'CustomTitle', parent=styles['Title'],
fontSize=26, textColor=colors.HexColor('#1a3c6e'),
spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'Subtitle', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#4a6fa5'),
spaceAfter=20, alignment=TA_CENTER, fontName='Helvetica-Oblique'
)
h1_style = ParagraphStyle(
'H1', parent=styles['Heading1'],
fontSize=14, textColor=colors.white,
backColor=colors.HexColor('#1a3c6e'),
spaceBefore=14, spaceAfter=6,
fontName='Helvetica-Bold', leftIndent=-5, rightIndent=-5,
borderPad=5
)
h2_style = ParagraphStyle(
'H2', parent=styles['Heading2'],
fontSize=12, textColor=colors.HexColor('#1a3c6e'),
spaceBefore=10, spaceAfter=4,
fontName='Helvetica-Bold',
borderPad=2
)
h3_style = ParagraphStyle(
'H3', parent=styles['Heading3'],
fontSize=11, textColor=colors.HexColor('#2e5fa3'),
spaceBefore=8, spaceAfter=3,
fontName='Helvetica-Bold'
)
body_style = ParagraphStyle(
'Body', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#1a1a1a'),
spaceAfter=6, leading=14, alignment=TA_JUSTIFY,
fontName='Helvetica'
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#1a1a1a'),
spaceAfter=3, leading=13,
leftIndent=15, bulletIndent=5,
fontName='Helvetica'
)
source_style = ParagraphStyle(
'Source', parent=styles['Normal'],
fontSize=8, textColor=colors.HexColor('#666666'),
spaceAfter=4, leading=11, fontName='Helvetica-Oblique',
alignment=TA_CENTER
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=9, textColor=colors.HexColor('#555555'),
spaceAfter=4, leading=12, fontName='Helvetica-Oblique',
leftIndent=10
)
def section(title):
return [Paragraph(title, h1_style), Spacer(1, 4)]
def h2(title):
return [Paragraph(title, h2_style)]
def h3(title):
return [Paragraph(title, h3_style)]
def body(text):
return [Paragraph(text, body_style)]
def bullet(text):
return [Paragraph(f"• {text}", bullet_style)]
def hr():
return [HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#cccccc'), spaceAfter=6, spaceBefore=6)]
story = []
# ─── TITLE PAGE ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 2*cm))
story.append(Paragraph("Parkinson's Disease", title_style))
story.append(Paragraph("A Comprehensive Medical Overview", subtitle_style))
story.append(HRFlowable(width="60%", thickness=2, color=colors.HexColor('#1a3c6e'), spaceAfter=10))
story.append(Spacer(1, 0.5*cm))
# Quick-ref key facts box
key_facts = [
["Prevalence", "~1 in 1,000 general population; ≥1% in >65 yrs"],
["Sex ratio", "Men > Women (3:2)"],
["Core pathology", "Loss of dopaminergic neurons in substantia nigra"],
["Hallmark", "Lewy body (α-synuclein inclusions)"],
["Cardinal signs", "Tremor, Rigidity, Akinesia, Postural instability (TRAP)"],
["First-line Rx", "Levodopa + Carbidopa"],
["Surgical option", "Deep Brain Stimulation (STN or GPi)"],
["Progression", "10–15 years; death from aspiration or falls"],
]
kf_table = Table(key_facts, colWidths=[4.5*cm, 12*cm])
kf_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,-1), colors.HexColor('#e8f0fb')),
('BACKGROUND', (1,0), (1,-1), colors.HexColor('#f9fbff')),
('TEXTCOLOR', (0,0), (0,-1), colors.HexColor('#1a3c6e')),
('FONTNAME', (0,0), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,0), (1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('ROWBACKGROUNDS', (0,0), (-1,-1), [colors.HexColor('#eef3fb'), colors.HexColor('#f9fbff')]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#4a6fa5')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#c0d0ea')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
]))
story.append(kf_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Sources: Goldman-Cecil Medicine (Ch. 378) | Robbins & Kumar Basic Pathology (p. 854) | Bradley and Daroff's Neurology in Clinical Practice", source_style))
story.append(PageBreak())
# ─── 1. OVERVIEW ───────────────────────────────────────────────────────────────
story += section("1. Overview")
story += body("Parkinson disease (PD) is the second most common neurodegenerative disorder after Alzheimer disease. It occurs in approximately 1 in 1,000 in the general population and in at least 1% of people older than 65 years. Men are slightly more often affected than women (3:2). The prevalence is rising with an aging global population — age-adjusted mortality increased 2.4% per year between 1999 and 2019.")
story.append(Spacer(1, 8))
# ─── 2. PATHOPHYSIOLOGY ────────────────────────────────────────────────────────
story += section("2. Pathophysiology")
story += h2("Core Mechanism")
story += body("PD results from the progressive degeneration of pigmented dopaminergic neurons in the substantia nigra pars compacta (SNpc). These neurons project to the striatum (particularly the putamen) via the nigrostriatal pathway. Approximately 60% of these neurons are lost before classic motor symptoms emerge.")
story += body("Loss of dopamine disrupts both the direct and indirect basal ganglia pathways (the cortico-striato-thalamo-cortical loop), leading to deficient thalamocortical drive — the neurological basis of bradykinesia and other motor symptoms.")
story.append(Spacer(1, 4))
story += h2("Lewy Bodies — The Pathological Hallmark")
story += body("The defining histological feature is the Lewy body: a cytoplasmic, eosinophilic, round-to-elongated inclusion in surviving neurons, composed of fine filaments of alpha-synuclein (α-synuclein), neurofilaments, and ubiquitin.")
lewy_data = [
["Gross finding", "Pallor of the substantia nigra and locus coeruleus"],
["Microscopic", "Loss of pigmented catecholaminergic neurons + gliosis + Lewy bodies"],
["Lewy neurites", "Dystrophic neurites also containing aggregated α-synuclein"],
]
lt = Table(lewy_data, colWidths=[4*cm, 12.5*cm])
lt.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,-1), colors.HexColor('#fff3e0')),
('FONTNAME', (0,0), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,0), (1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('BOX', (0,0), (-1,-1), 0.6, colors.HexColor('#f0a030')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#ffe0a0')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
('ROWBACKGROUNDS', (0,0), (-1,-1), [colors.HexColor('#fff8ee'), colors.HexColor('#fffdf5')]),
]))
story.append(lt)
story.append(Spacer(1, 6))
story += h2("Molecular Pathogenesis")
for b in [
"<b>Abnormal α-synuclein aggregation</b> — mutations in SNCA gene or gene duplications/triplications",
"<b>Defective autophagy/lysosomal degradation</b> — Parkin, DJ-1, PINK1 mutations affect mitochondrial function",
"<b>Mitochondrial dysfunction & oxidative stress</b> — MPTP toxin inhibits Complex I of the electron transport chain",
"<b>Prion-like spread</b> — cell-to-cell transmission of toxic α-synuclein via 'permissive templating'",
]:
story += bullet(b)
story.append(Spacer(1, 8))
# ─── 3. ETIOLOGY & GENETICS ────────────────────────────────────────────────────
story += section("3. Etiology & Genetics")
story += body("Most cases (~90%) are sporadic. Only ~10% have a defined genetic cause. Environmental risk factors include pesticides, heavy metals, and traumatic brain injury.")
gen_data = [
["Gene / Mutation", "Inheritance", "Notes"],
["LRRK2", "Autosomal Dominant", "Most common cause of autosomal dominant PD"],
["α-synuclein (SNCA)", "Autosomal Dominant", "Mutations or duplications/triplications"],
["Parkin, DJ-1, PINK1", "Autosomal Recessive", "Typically early-onset parkinsonism"],
["GBA1 (Glucocerebrosidase)", "Heterozygous risk", "Associated with faster progression & dementia"],
]
gt = Table(gen_data, colWidths=[5*cm, 5*cm, 6.5*cm])
gt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3c6e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f0f4fb'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#1a3c6e')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#c0d0ea')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
]))
story.append(gt)
story.append(Spacer(1, 8))
# ─── 4. CLINICAL FEATURES ──────────────────────────────────────────────────────
story += section("4. Clinical Features")
story += h2("The Four Cardinal Motor Signs — TRAP")
trap_data = [
["Sign", "Description"],
["T — Tremor", "Resting 'pill-rolling' tremor at 4–6 Hz; diminishes with movement; only ~20% at onset"],
["R — Rigidity", "Cogwheel rigidity (with tremor) or lead pipe rigidity (without); slow passive joint movement"],
["A — Akinesia/Bradykinesia", "Masked facies, hypophonia, micrographia, shuffling gait, freezing, sialorrhea, reduced arm swing"],
["P — Postural instability", "Stooped posture, festination, propulsion/retropulsion; assessed with pull test"],
]
tt = Table(trap_data, colWidths=[5.5*cm, 11*cm])
tt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#2e5fa3')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,1), (1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('BACKGROUND', (0,1), (0,-1), colors.HexColor('#dce8fb')),
('ROWBACKGROUNDS', (1,1), (1,-1), [colors.HexColor('#f5f8ff'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#2e5fa3')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#aabbdd')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
]))
story.append(tt)
story.append(Spacer(1, 8))
story += h2("Asymmetric Onset")
story += body("Symptoms typically begin unilaterally (one limb or one side) and this asymmetry often persists into later stages — a distinguishing feature from secondary parkinsonism.")
story.append(Spacer(1, 4))
story += h2("Non-Motor Features")
story += h3("Premotor / Prodromal Phase (years before motor diagnosis):")
for b in [
"<b>REM sleep behavior disorder (RBD)</b> — strongest early predictor",
"<b>Anosmia</b> — loss of smell due to early olfactory system involvement",
"<b>Constipation</b> — enteric nervous system involvement",
"<b>Depression and anxiety</b>",
"Restless leg syndrome",
]:
story += bullet(b)
story.append(Spacer(1, 4))
story += h3("Later Non-Motor Features:")
for b in [
"Autonomic dysfunction: orthostatic hypotension, urinary urgency, male erectile dysfunction",
"Cognitive impairment progressing to <b>dementia</b> (up to 80% over disease course)",
"When dementia occurs within 1 year of motor onset = <b>Lewy body dementia (LBD)</b>",
"Sensory disturbances, fatigue, pain, hallucinations",
]:
story += bullet(b)
story.append(Spacer(1, 8))
# ─── 5. DIFFERENTIAL DIAGNOSIS ─────────────────────────────────────────────────
story += section("5. Differential Diagnosis of Parkinsonism")
diff_data = [
["Category", "Examples"],
["Neurodegenerative", "PSP, MSA, Corticobasal degeneration, DLB, Alzheimer disease"],
["Drug-induced", "Neuroleptics, metoclopramide, prochlorperazine, tetrabenazine, reserpine, flunarizine"],
["Toxic", "MPTP, manganese, carbon monoxide, mercury"],
["Vascular", "Atherosclerosis, amyloid angiopathy"],
["Infectious", "Encephalitis lethargica, HIV encephalitis, CJD"],
["Structural", "Normal pressure hydrocephalus, brain tumor"],
["Metabolic", "Wilson disease (copper), Fahr disease (calcium)"],
]
dt = Table(diff_data, colWidths=[5*cm, 11.5*cm])
dt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3c6e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,1), (1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f0f4fb'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#1a3c6e')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#c0d0ea')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
]))
story.append(dt)
story.append(Spacer(1, 6))
story += body("<b>Red flags against idiopathic PD:</b> Early falls, absent tremor, symmetric onset, rapid progression, poor levodopa response, early dementia, eye movement abnormalities.")
story.append(Spacer(1, 8))
# ─── 6. DIAGNOSIS ──────────────────────────────────────────────────────────────
story += section("6. Diagnosis")
story += body("PD remains a <b>clinical diagnosis</b> based on the presence of parkinsonism with typical features (asymmetric onset, resting tremor, good levodopa response). There is no definitive biomarker test.")
for b in [
"<b>Genetic testing</b>: Indicated with strong family history, early-onset disease, or patient interest (LRRK2, GBA1, Parkin, PINK1)",
"<b>DaTscan / SPECT</b>: Reduced dopamine transporter activity in striatum — helps differentiate from essential tremor",
"<b>MRI brain</b>: Mainly to exclude secondary causes (vascular, structural)",
"<b>Levodopa trial</b>: Response is both diagnostic and therapeutic",
]:
story += bullet(b)
story.append(Spacer(1, 8))
# ─── 7. TREATMENT ──────────────────────────────────────────────────────────────
story += section("7. Treatment")
story += h2("Pharmacological Management")
pharm_data = [
["Drug Class", "Examples", "Key Notes"],
["Levodopa + Carbidopa", "Sinemet, Duopa", "Gold standard. Most effective for bradykinesia/rigidity. Does NOT slow progression. Causes dyskinesias over time."],
["Dopamine Agonists", "Pramipexole, Ropinirole, Rotigotine", "Monotherapy in younger patients to delay levodopa. Risk of impulse control disorders, hallucinations."],
["MAO-B Inhibitors", "Selegiline, Rasagiline, Safinamide", "Inhibit dopamine breakdown. Mild symptomatic benefit. Possible neuroprotective properties."],
["COMT Inhibitors", "Entacapone, Tolcapone, Opicapone", "Adjuncts to levodopa. Extend levodopa duration. Reduce wearing-off."],
["Anticholinergics", "Trihexyphenidyl, Benztropine", "Mainly for tremor. Use cautiously in elderly (cognitive side effects)."],
["Amantadine", "Amantadine", "NMDA receptor antagonist. Helpful for levodopa-induced dyskinesias."],
]
pt = Table(pharm_data, colWidths=[4.5*cm, 4*cm, 8*cm])
pt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3c6e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f0f4fb'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#1a3c6e')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#c0d0ea')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
('WORDWRAP', (0,0), (-1,-1), True),
]))
story.append(pt)
story.append(Spacer(1, 10))
story += h2("Surgical: Deep Brain Stimulation (DBS)")
story += body("Indicated for patients with advanced PD and motor fluctuations refractory to optimal medical therapy. Electrodes implanted in:")
dbs_data = [
["Target", "Advantages", "Disadvantages"],
["STN (Subthalamic Nucleus)", "Larger benefit in medication-off state; allows larger dopamine medication reductions", "Higher neuropsychiatric risk; equal or greater cognitive side effects vs GPi"],
["GPi (Globus Pallidus Internus)", "Better dyskinesia suppression; better long-term flexibility; safer neuropsychiatric profile; preferred for 'brittle' dyskinesia", "Less medication reduction possible vs STN"],
]
dbst = Table(dbs_data, colWidths=[4.5*cm, 7*cm, 5*cm])
dbst.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#2e5fa3')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f0f4fb'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#2e5fa3')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#aabbdd')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
]))
story.append(dbst)
story.append(Spacer(1, 6))
story += body("DBS does not halt disease progression but significantly improves quality of life and reduces motor fluctuations.")
story.append(Spacer(1, 6))
story += h2("Non-Pharmacological")
for b in [
"Physiotherapy — balance training, gait rehabilitation",
"Speech therapy — voice (LSVT LOUD), swallowing management",
"Occupational therapy — adaptive strategies for daily living",
"Exercise — aerobic and resistance training shown to slow functional decline",
"Dietary adjustments — high-fiber diet for constipation; texture modifications for dysphagia",
]:
story += bullet(b)
story.append(Spacer(1, 8))
# ─── 8. COMPLICATIONS & PROGNOSIS ──────────────────────────────────────────────
story += section("8. Complications & Prognosis")
story += body("The disease progresses over 10–15 years, eventually causing severe motor disability. Common late-stage problems:")
comp_data = [
["Problem Category", "Examples"],
["Motor (treatment-resistant)", "Dysarthria, freezing of gait, postural instability, falls"],
["Motor (drug-induced)", "Dyskinesias, wearing-off, on-off fluctuations"],
["Non-motor", "Dementia, psychosis (hallucinations), depression, autonomic failure"],
["Complications", "Aspiration pneumonia (dysphagia in 82% objectively), fractures from falls"],
]
ct = Table(comp_data, colWidths=[6*cm, 10.5*cm])
ct.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#8b0000')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
('FONTNAME', (1,1), (1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fff0f0'), colors.white]),
('BOX', (0,0), (-1,-1), 0.8, colors.HexColor('#8b0000')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#ffaaaa')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
]))
story.append(ct)
story.append(Spacer(1, 6))
story += body("<b>Death</b> often results from <b>aspiration pneumonia</b> (dysphagia present in up to 82% of patients objectively) or trauma from falls caused by postural instability.")
story.append(Spacer(1, 8))
# ─── 9. RECENT EVIDENCE ────────────────────────────────────────────────────────
story += section("9. Recent Research Highlights (2025)")
story += body("A 2025 machine-learning meta-analysis (Romano et al., <i>Nature Communications</i>) identified significant gut microbiome alterations associated with PD, providing further support for the gut-brain axis hypothesis and the relevance of prodromal GI symptoms.")
story += body("A 2025 MDSGene systematic review (Rossi et al., <i>Movement Disorders</i>) refined genotype-phenotype relationships for GBA1 variants in familial PD, with implications for risk stratification and targeted therapies.")
story.append(Spacer(1, 8))
# ─── FOOTER ────────────────────────────────────────────────────────────────────
story += hr()
story.append(Paragraph(
"Sources: Goldman-Cecil Medicine (Chapter 378) | Robbins & Kumar Basic Pathology (p. 854) | "
"Bradley and Daroff's Neurology in Clinical Practice | PubMed (PMID: 40335465, 39927608)",
source_style
))
story.append(Paragraph("Generated by Orris Medical AI | For educational purposes only | June 2026", source_style))
# Build PDF
doc.build(story)
print(f"PDF created: {OUTPUT_PATH}")
cd /home/daytona/workspace && python parkinsons_disease.py
Parkinsons Disease
PDF Document · PDF