Circle of wilis
Circle of Willis anatomy components clinical significance

| Vessel | Abbreviation | Origin |
|---|---|---|
| Anterior cerebral arteries (×2) | ACA | Terminal branches of ICA |
| Anterior communicating artery | AComm | Connects the two ACAs |
| Internal carotid arteries (×2) | ICA | Common carotid arteries |
| Posterior communicating arteries (×2) | PComm | Connects ICA to PCA |
| Posterior cerebral arteries (×2) | PCA | Terminal branches of basilar artery |
"The Circle of Willis provides extensive collateral circulation, connecting the right and left carotid arteries to each other and each to the vertebrobasilar system." - Schwartz's Principles of Surgery, 11th Ed.
| Condition | Relevance to Circle of Willis |
|---|---|
| Berry (saccular) aneurysms | Form at bifurcation points within the CoW (especially AComm, PComm, MCA bifurcation); rupture causes subarachnoid hemorrhage |
| Ischemic stroke | Collateral flow through the CoW may limit infarct size in carotid/MCA occlusion |
| Carotid endarterectomy | During carotid clamping, the brain relies entirely on contralateral flow via the CoW |
| Carotid artery disease | Complete occlusion proximal to the CoW may be tolerated if the ring is complete |
| CN III palsy | A PComm aneurysm compresses the oculomotor nerve (CN III runs nearby) causing a "surgical" CN III palsy with pupil dilation |
Autoimmune enchephalitus
autoimmune encephalitis diagnosis treatment
"In encephalitis with antibodies against surface antigens, the antibodies have access to the epitopes and can potentially alter the structure and function of the antigen." - Harrison's Principles of Internal Medicine, 22nd Ed.
| Neural Antigen | Associated Tumor | Clinical Phenotype |
|---|---|---|
| Hu (ANNA-1) | Small cell lung carcinoma (SCLC) | Limbic / encephalomyelitis, sensory neuronopathy |
| Yo (PCA-1) | Ovary, breast | Rapidly progressive cerebellar syndrome |
| Ri (ANNA-2) | Breast, gynecologic, SCLC | Cerebellar degeneration, opsoclonus |
| Ma2 | Testicular seminoma | Limbic + brainstem encephalitis |
| CRMP5 (CV2) | SCLC, thymoma | Encephalomyelitis, chorea, optic neuritis |
| NMDA-R | Ovarian teratoma (or no tumor) | Psychosis, dyskinesias, autonomic instability |
| AMPA-R | Thymoma, SCLC | Limbic encephalitis with relapses |
| GABA-A receptor | Thymoma (infrequent) | Limbic encephalitis |
| GABA-B receptor | SCLC | Limbic encephalitis |
| LGI1 | Neuroendocrine tumor (rarely) | Faciobrachial dystonic seizures, limbic encephalitis |
| CASPR2 | Thymoma | Encephalitis, Morvan syndrome, neuromyotonia |
| GAD65 | Thymoma, SCLC, diabetes | Cerebellar encephalitis, stiff-person syndrome |
| mGluR5 | Hodgkin lymphoma | Encephalitis (Ophelia syndrome) |
| DPPX | B-cell lymphoma | Hyperekplexia, encephalitis |
| IgLON5 | None typically | Sleep disorder, brainstem encephalitis |
| GlyR (glycine receptor) | Thymoma (infrequent) | Limbic encephalitis, PERM |
| Agent | Regimen |
|---|---|
| IV methylprednisolone | 1000 mg/day IV x 5 days |
| IV immunoglobulin (IVIg) | 400 mg/kg every other day x 5 days (if steroids not tolerated) |
| Plasma exchange (PLEX) | For refractory or contraindicated cases |
| Agent | Regimen |
|---|---|
| Rituximab | 1000 mg IV x 2 doses, 2 weeks apart |
| Tocilizumab | 4 mg/kg IV every 4 weeks (anti-IL-6 receptor) |
| Cyclophosphamide | Anecdotal reports |
"Treatment for autoimmune encephalitis should be initiated as early as feasible, as the disease carries a high risk of morbidity." - Adams and Victor's Principles of Neurology, 12th Ed.
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/autoimmune-encephalitis && cat > /tmp/workspace/autoimmune-encephalitis/generate_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.lib import colors from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether ) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY OUTPUT = "/tmp/workspace/autoimmune-encephalitis/Autoimmune_Encephalitis.pdf" doc = SimpleDocTemplate( OUTPUT, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2.2*cm, bottomMargin=2.2*cm, title="Autoimmune Encephalitis", author="Orris Medical Library" ) W = A4[0] - 4*cm # usable width # ── Colour palette ────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#1a3a5c") MED_BLUE = colors.HexColor("#2563a8") LIGHT_BLUE = colors.HexColor("#dbeafe") ACCENT = colors.HexColor("#0e7490") LIGHT_TEAL = colors.HexColor("#e0f2f1") WARN_AMBER = colors.HexColor("#fef3c7") WARN_BORDER = colors.HexColor("#d97706") LIGHT_GRAY = colors.HexColor("#f8fafc") TABLE_HEAD = colors.HexColor("#1e40af") TABLE_ALT = colors.HexColor("#eff6ff") HR_COLOR = colors.HexColor("#94a3b8") styles = getSampleStyleSheet() def style(name, **kw): s = ParagraphStyle(name, **kw) return s TITLE_S = style("Title2", fontSize=22, leading=28, textColor=DARK_BLUE, fontName="Helvetica-Bold", spaceAfter=4, alignment=TA_CENTER) SUBTITLE_S = style("Sub", fontSize=11, leading=14, textColor=MED_BLUE, fontName="Helvetica", spaceAfter=2, alignment=TA_CENTER) SOURCE_S = style("Src", fontSize=8, leading=10, textColor=colors.HexColor("#64748b"), fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=12) H1 = style("H1", fontSize=14, leading=18, textColor=colors.white, fontName="Helvetica-Bold", spaceBefore=14, spaceAfter=4, leftIndent=8, rightIndent=8, backColor=DARK_BLUE, borderPad=5) H2 = style("H2", fontSize=11, leading=14, textColor=DARK_BLUE, fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=3, borderPad=3, backColor=LIGHT_BLUE, leftIndent=4) H3 = style("H3", fontSize=10, leading=13, textColor=ACCENT, fontName="Helvetica-Bold", spaceBefore=7, spaceAfter=2) BODY = style("Body2", fontSize=9.5, leading=14, textColor=colors.HexColor("#1e293b"), fontName="Helvetica", spaceAfter=4, alignment=TA_JUSTIFY) BULLET = style("Bul", fontSize=9.5, leading=14, textColor=colors.HexColor("#1e293b"), fontName="Helvetica", leftIndent=16, firstLineIndent=-10, spaceAfter=3) BULLET2 = style("Bul2", fontSize=9, leading=13, textColor=colors.HexColor("#334155"), fontName="Helvetica", leftIndent=28, firstLineIndent=-10, spaceAfter=2) NOTE_S = style("Note", fontSize=8.5, leading=12, textColor=colors.HexColor("#374151"), fontName="Helvetica-Oblique", leftIndent=10, rightIndent=10, spaceAfter=4, backColor=WARN_AMBER, borderColor=WARN_BORDER, borderWidth=0.5, borderPad=6) def b(t): return f"<b>{t}</b>" def i(t): return f"<i>{t}</i>" def bullet_item(text): return Paragraph(f"• {text}", BULLET) def bullet2(text): return Paragraph(f"◦ {text}", BULLET2) def h1(text): return Paragraph(text, H1) def h2(text): return Paragraph(text, H2) def h3(text): return Paragraph(text, H3) def body(text): return Paragraph(text, BODY) def sp(h=6): return Spacer(1, h) def hr(): return HRFlowable(width="100%", thickness=0.5, color=HR_COLOR, spaceAfter=4, spaceBefore=4) def note(text): return Paragraph(text, NOTE_S) def make_table(headers, rows, col_widths=None, alt_color=TABLE_ALT): data = [headers] + rows if col_widths is None: col_widths = [W / len(headers)] * len(headers) hdr_style = ParagraphStyle("TH", fontSize=8.5, fontName="Helvetica-Bold", textColor=colors.white, leading=11, alignment=TA_CENTER) cell_style = ParagraphStyle("TD", fontSize=8, fontName="Helvetica", textColor=colors.HexColor("#1e293b"), leading=11, alignment=TA_LEFT) fmt_data = [] for ri, row in enumerate(data): fmt_row = [] for ci, cell in enumerate(row): s = hdr_style if ri == 0 else cell_style fmt_row.append(Paragraph(str(cell), s)) fmt_data.append(fmt_row) ts = TableStyle([ ("BACKGROUND", (0,0), (-1,0), TABLE_HEAD), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, alt_color]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#cbd5e1")), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("LINEBELOW", (0,0), (-1,0), 1, DARK_BLUE), ("ROWBACKGROUNDS", (0,0), (-1,0), [TABLE_HEAD]), ]) t = Table(fmt_data, colWidths=col_widths, repeatRows=1, hAlign="LEFT") t.setStyle(ts) return t # ════════════════════════════════════════════════════════════════════════════ story = [] # ── TITLE BLOCK ───────────────────────────────────────────────────────────── story += [ sp(10), Paragraph("Autoimmune Encephalitis", TITLE_S), Paragraph("A Comprehensive Clinical Reference", SUBTITLE_S), Paragraph("Sources: Goldman-Cecil Medicine · Harrison's Principles (22nd Ed.) · Adams & Victor's Neurology (12th Ed.) · Bradley & Daroff's Neurology", SOURCE_S), hr(), sp(4), ] # ── 1. DEFINITION & EPIDEMIOLOGY ──────────────────────────────────────────── story += [ h1("1. Definition & Epidemiology"), body("Autoimmune encephalitis (AE) is an inflammatory brain condition caused by misdirected immune responses targeting <b>neuronal and glial cell-surface or intracellular antigens</b>. It is increasingly recognized as a treatable cause of brain dysfunction distinct from infectious encephalitis."), sp(4), ] epi_items = [ "Accounts for approximately <b>25%</b> of all encephalitis cases", "Overall incidence of AE (paraneoplastic + non-paraneoplastic) is now <b>similar to that of infectious encephalitis</b>", "Can be triggered by <b>immune checkpoint inhibitors</b> (e.g., anti-PD-1 / anti-CTLA-4 drugs)", "Affects <b>2–3%</b> of patients with neuroblastoma or SCLC; <b>30–50%</b> of patients with thymoma may develop paraneoplastic AE", "NMDA-R encephalitis shows a <b>female predominance</b> and commonly affects young women and girls", ] for item in epi_items: story.append(bullet_item(item)) story.append(sp(6)) # ── 2. PATHOGENESIS ────────────────────────────────────────────────────────── story += [ h1("2. Pathogenesis"), body("AE is divided into two categories based on antigen location. The distinction is clinically important as it determines cancer risk, treatment response, and prognosis."), sp(4), h2("2a. Antibodies Against Intracellular Antigens (High cancer risk >70%)"), ] for item in [ "Antibodies <b>cannot reach</b> the intracellular epitopes", "Cytotoxic <b>CD4+ and CD8+ T-cell</b> infiltrates mediate neuronal death", "T cells make direct contact with neurons; perforin/granzyme mechanisms cause degeneration", "Extensive neuronal loss and gliosis on pathology", "Generally <b>poor response to immunotherapy</b> — neuronal death is irreversible", "Examples: Hu, Yo, Ri, Ma2, CRMP5 (CV2), amphiphysin antibodies", ]: story.append(bullet_item(item)) story += [ sp(4), h2("2b. Antibodies Against Cell-Surface / Synaptic Antigens (Low-to-intermediate cancer risk)"), ] for item in [ "Antibodies have <b>direct access</b> to target antigens on living neurons", "Alter receptor function via cross-linking, internalization, or functional blockade", "Moderate brain inflammatory infiltrates; less neuronal loss", "Generally <b>respond well to immunotherapy</b>", "Examples: NMDA-R, LGI1, CASPR2, AMPA-R, GABA-A/B-R, DPPX, mGluR5", ]: story.append(bullet_item(item)) story.append(sp(6)) # ── 3. ANTIBODY TABLE ──────────────────────────────────────────────────────── story += [ h1("3. Key Antibodies, Syndromes & Tumor Associations"), sp(4), ] ab_headers = [b("Antibody"), b("Tumor Association"), b("Clinical Phenotype")] ab_rows = [ ["Hu (ANNA-1)", "SCLC", "Limbic encephalitis, sensory neuronopathy, encephalomyelitis"], ["Yo (PCA-1)", "Ovary, breast", "Rapidly progressive cerebellar syndrome"], ["Ri (ANNA-2)", "Breast, gynecologic, SCLC", "Cerebellar degeneration, opsoclonus, brainstem encephalitis"], ["Ma2", "Testicular seminoma", "Limbic + hypothalamic + brainstem encephalitis"], ["CRMP5 (CV2)", "SCLC, thymoma", "Encephalomyelitis, chorea, optic neuritis, peripheral neuropathy"], ["NMDA-R", "Ovarian teratoma (or none)", "Psychosis, dyskinesias, autonomic instability, coma"], ["AMPA-R", "Thymoma, SCLC", "Limbic encephalitis with relapses"], ["GABA-A receptor", "Thymoma (infrequent)", "Limbic encephalitis, refractory seizures"], ["GABA-B receptor", "SCLC", "Limbic encephalitis"], ["LGI1", "Neuroendocrine (rarely)", "Faciobrachial dystonic seizures, limbic encephalitis, hyponatremia"], ["CASPR2", "Thymoma", "Morvan syndrome, neuromyotonia, encephalitis (IgG4 isotype)"], ["GAD65", "Thymoma, SCLC, diabetes", "Cerebellar encephalitis, stiff-person syndrome"], ["mGluR5", "Hodgkin lymphoma", "Ophelia syndrome (encephalitis + psychosis)"], ["DPPX", "B-cell lymphoma", "Hyperekplexia, diarrhea, encephalitis"], ["IgLON5", "None typically", "Sleep disorder, brainstem encephalitis, tauopathy"], ["GlyR", "Thymoma (infrequent)", "Limbic encephalitis, PERM (progressive encephalomyelitis with rigidity)"], ] cw = [2.5*cm, 3.8*cm, 9.4*cm] story.append(make_table(ab_headers, ab_rows, col_widths=cw)) story.append(sp(6)) # ── 4. CLINICAL FEATURES ───────────────────────────────────────────────────── story += [ h1("4. Clinical Presentations"), body("Onset is typically <b>subacute</b> (< 3 months). Three main clinical syndromes are recognized:"), sp(4), h2("4a. Limbic Encephalitis"), ] for item in [ "Memory loss (hippocampal involvement), confusion, disorientation", "Behavioral and personality changes", "Temporal lobe seizures", "MRI: medial temporal lobe T2/FLAIR hyperintensity", "Associated antibodies: LGI1, CASPR2, AMPA-R, GABA-B-R, Hu, Ma2", ]: story.append(bullet_item(item)) story += [sp(4), h2("4b. NMDA-Receptor Encephalitis (most common form)")] for item in [ "<b>Stage 1 (Prodrome):</b> fever, headache, viral-like illness (days)", "<b>Stage 2 (Psychiatric):</b> psychosis, agitation, bizarre behaviour, insomnia — often misdiagnosed", "<b>Stage 3 (Unresponsive/Catatonic):</b> decreased consciousness, mutism", "<b>Stage 4 (Hyperkinetic):</b> orofacial dyskinesias, choreoathetosis, stereotyped movements", "<b>Stage 5 (Autonomic):</b> hyperthermia, tachycardia, BP instability, hypoventilation", "EEG: <b>extreme delta brush</b> pattern (pathognomonic association)", "CSF antibody testing more reliable than serum (false-negatives in serum common)", ]: story.append(bullet_item(item)) story += [sp(4), h2("4c. Brainstem Encephalitis")] for item in [ "Diplopia, dysphagia, dysarthria, nystagmus", "Respiratory failure may require ICU admission", "Associated antibodies: Ri, Ma2, CASPR2, GABA-B-R", ]: story.append(bullet_item(item)) story += [ sp(4), h2("4d. Other Specific Syndromes"), bullet_item("<b>Faciobrachial dystonic seizures (FBDS)</b> — pathognomonic for LGI1; brief, frequent, ipsilateral face+arm jerks; precede limbic encephalitis"), bullet_item("<b>Cerebellar ataxia</b> — rapidly progressive; associated with Yo, Tr (DNER, Hodgkin), mGluR1"), bullet_item("<b>Stiff-person syndrome</b> — progressive muscle rigidity, spasms; GAD65, amphiphysin antibodies"), bullet_item("<b>Opsoclonus-myoclonus</b> — chaotic eye movements + myoclonus; Ri antibodies, SCLC, neuroblastoma in children"), sp(6), ] # ── 5. DIAGNOSIS ───────────────────────────────────────────────────────────── story += [ h1("5. Diagnostic Work-Up"), body("Diagnosis requires a stepwise approach to exclude infectious/toxic causes, identify the specific autoantibody, and search for an underlying malignancy."), sp(4), ] diag_headers = [b("Step"), b("Investigation"), b("Purpose/Notes")] diag_rows = [ ["1", "Lumbar puncture + CSF analysis", "Lymphocytic pleocytosis (5–100/µL), elevated protein; send for antibody panel + culture + HSV PCR"], ["2", "Blood tests", "Autoantibody panel (serum + CSF); metabolic/toxic screen; thyroid (TPO abs); serum immunofixation"], ["3", "MRI brain with gadolinium", "Medial temporal FLAIR signal (limbic), diffuse cortical changes (NMDA-R); exclude mimics"], ["4", "EEG", "Seizures, extreme delta brush (NMDA-R), diffuse slowing"], ["5", "Malignancy screening", "CT chest/abdomen/pelvis; FDG-PET; pelvic US/MRI (teratoma); testicular US if Ma2+"], ["6", "Additional", "CSF cytology & flow cytometry; ophthalmology if visual symptoms; neuropsychological testing"], ] dw = [1.0*cm, 4.2*cm, 10.5*cm] story.append(make_table(diag_headers, diag_rows, col_widths=dw)) story += [ sp(6), note("⚠ Important: CSF antibody testing is more sensitive than serum for NMDA-R encephalitis. Always send both. In seronegative AE (up to ~50% of cases), diagnosis is based on Graus 2016 clinical criteria."), sp(6), ] # ── 6. TREATMENT ───────────────────────────────────────────────────────────── story += [ h1("6. Treatment"), body("No single standardized regimen exists. Treatment should be initiated <b>as early as possible</b> — early therapy hasten recovery and reduces disability and relapse risk. Stepwise escalation is used based on clinical response."), sp(4), h2("6a. First-Line Immunotherapy"), ] tx1_headers = [b("Agent"), b("Dose/Regimen"), b("Notes")] tx1_rows = [ ["IV Methylprednisolone", "1000 mg/day IV × 5 days", "First choice; continue with weekly dosing for 6–12 weeks"], ["IV Immunoglobulin (IVIg)", "400 mg/kg every other day × 5 days", "Use if steroids not tolerated; can be combined with steroids"], ["Plasma Exchange (PLEX)", "5–7 exchanges over 2 weeks", "For refractory disease or contraindications to other agents"], ] tw = [3.2*cm, 5.0*cm, 7.5*cm] story.append(make_table(tx1_headers, tx1_rows, col_widths=tw)) story += [sp(6), h2("6b. Second-Line Immunotherapy (if poor response to first-line)")] tx2_headers = [b("Agent"), b("Dose/Regimen"), b("Notes")] tx2_rows = [ ["Rituximab", "1000 mg IV × 2 doses, 2 weeks apart", "Anti-CD20; B-cell depletion; most evidence in NMDA-R encephalitis"], ["Tocilizumab", "4–8 mg/kg IV every 4 weeks", "Anti-IL-6 receptor; promising results in refractory cases"], ["Cyclophosphamide", "Variable", "Anecdotal reports; used in severe/refractory disease"], ] story.append(make_table(tx2_headers, tx2_rows, col_widths=tw)) story += [ sp(6), h2("6c. Maintenance / Long-Term Immunosuppression"), bullet_item("Oral prednisolone — tapered over weeks to months"), bullet_item("Azathioprine 2–3 mg/kg/day"), bullet_item("Mycophenolate mofetil 1–3 g/day"), bullet_item("Methotrexate — alternative option"), sp(4), h2("6d. Tumor Treatment"), body("For paraneoplastic AE, <b>prompt tumor treatment is essential</b> and often the most important step:"), bullet_item("Ovarian teratoma → surgical removal (laparoscopic oophorectomy)"), bullet_item("SCLC → chemotherapy ± radiation"), bullet_item("Thymoma → thymectomy"), bullet_item("Hodgkin lymphoma → ABVD chemotherapy"), sp(4), note("💊 Symptomatic treatment: Antiepileptics for seizures, benzodiazepines for agitation/catatonia, ICU monitoring for autonomic instability. Note: antipsychotics can worsen dyskinesias in NMDA-R encephalitis — use with caution."), sp(6), ] # ── 7. PROGNOSIS ───────────────────────────────────────────────────────────── story += [ h1("7. Prognosis"), ] prog_headers = [b("Antibody Type"), b("Prognosis"), b("Key Points")] prog_rows = [ ["Cell-surface antigens\n(NMDA-R, LGI1, CASPR2)", "Generally good with treatment", "Functional recovery possible; relapse risk exists (~12–25%); long-term immunosuppression may be needed"], ["Intracellular antigens\n(Hu, Yo, Ri, Ma2)", "Poor", "Neuronal death irreversible; limited response to immunotherapy; determined by tumor control"], ["GAD65", "Intermediate", "Partial response; often requires long-term immunosuppression"], ["Seronegative AE", "Variable", "Prognosis depends on clinical syndrome severity and speed of treatment"], ] pw = [3.8*cm, 3.0*cm, 8.9*cm] story.append(make_table(prog_headers, prog_rows, col_widths=pw)) story += [ sp(6), bullet_item("Early treatment consistently associated with better outcomes across all subtypes"), bullet_item("NMDA-R encephalitis: ~80% of patients show good recovery, but recovery may take months to years"), bullet_item("Relapse in NMDA-R encephalitis occurs in ~12–25%; more common when tumor is not found/treated"), sp(6), ] # ── 8. KEY DISTINGUISHING FEATURES ────────────────────────────────────────── story += [ h1("8. Key Distinguishing Clinical Clues"), sp(4), ] clue_headers = [b("Clinical Clue"), b("Think of...")] clue_rows = [ ["Young woman + psychiatric symptoms + orofacial dyskinesias", "Anti-NMDA-R encephalitis"], ["Brief, frequent ipsilateral face + arm jerks + hyponatremia", "Anti-LGI1 (FBDS)"], ["Encephalitis + insomnia + neuromyotonia + autonomic features", "Anti-CASPR2 (Morvan syndrome)"], ["Rapidly progressive cerebellar ataxia + breast/ovary cancer", "Anti-Yo (PCA-1)"], ["Encephalitis + SCLC + sensory neuropathy", "Anti-Hu (ANNA-1)"], ["Young man + diencephalic/brainstem encephalitis + testicular mass", "Anti-Ma2"], ["Encephalitis + rigidity + spasms + diabetes", "Anti-GAD65"], ["Encephalitis + diarrhea + hyperekplexia", "Anti-DPPX"], ["Encephalitis + refractory seizures + Hodgkin lymphoma", "Anti-mGluR5 (Ophelia syndrome)"], ["Sleep disorder + brainstem features + tau pathology", "Anti-IgLON5"], ["Post-HSV encephalitis recurrence/worsening", "Secondary anti-NMDA-R (triggered by HSV)"], ["Encephalitis + immune checkpoint inhibitor use", "Checkpoint-inhibitor-related AE"], ] cw2 = [8.0*cm, 7.7*cm] story.append(make_table(clue_headers, clue_rows, col_widths=cw2)) story.append(sp(10)) # ── FOOTER NOTE ────────────────────────────────────────────────────────────── story.append(hr()) footer_style = ParagraphStyle("Footer", fontSize=7.5, textColor=colors.HexColor("#94a3b8"), fontName="Helvetica-Oblique", alignment=TA_CENTER, leading=10) story.append(Paragraph( "Sources: Goldman-Cecil Medicine · Harrison's Principles of Internal Medicine 22E · Adams and Victor's Principles of Neurology 12E · " "Bradley and Daroff's Neurology in Clinical Practice · Plum & Posner's Stupor and Coma · " "Graus et al. Lancet Neurology 2016 (diagnostic criteria). Generated by Orris Medical Library.", footer_style )) # ── BUILD ──────────────────────────────────────────────────────────────────── doc.build(story) print(f"PDF saved: {OUTPUT}") PYEOF python3 /tmp/workspace/autoimmune-encephalitis/generate_pdf.py
Autoimmune Encephalitis
PDF Document · PDF