Compile whole psychiatry in a glimpse pdf format neet pg with mnemonics flowchart imp. One liners images etc in pdf format

Reading File
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/psychiatry-neet-pdf && ls /tmp/workspace/psychiatry-neet-pdf/

Writing File

~/psychiatry-neet-pdf/generate_pdf.py

#!/usr/bin/env python3
"""
NEET PG Psychiatry - At a Glance PDF Generator
Comprehensive revision material with mnemonics, flowcharts, tables, one-liners
"""

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether, PageBreak
)
from reportlab.platypus.flowables import Flowable
from reportlab.lib.colors import HexColor
import os

OUTPUT_PATH = "/tmp/workspace/psychiatry-neet-pdf/Psychiatry_NEET_PG_AtAGlance.pdf"

# ─── COLOR PALETTE ──────────────────────────────────────────────────────────
C_NAVY      = HexColor("#1A237E")
C_TEAL      = HexColor("#00695C")
C_PURPLE    = HexColor("#6A1B9A")
C_ORANGE    = HexColor("#E65100")
C_RED       = HexColor("#B71C1C")
C_PINK      = HexColor("#AD1457")
C_LBLUE     = HexColor("#E3F2FD")
C_LGREEN    = HexColor("#E8F5E9")
C_LYELLOW   = HexColor("#FFFDE7")
C_LORANGE   = HexColor("#FFF3E0")
C_LPURPLE   = HexColor("#F3E5F5")
C_LRED      = HexColor("#FFEBEE")
C_LTEAL     = HexColor("#E0F2F1")
C_LGREY     = HexColor("#F5F5F5")
C_DGREY     = HexColor("#424242")
C_MGREY     = HexColor("#757575")
C_GOLD      = HexColor("#F9A825")
C_WHITE     = colors.white
C_BLACK     = colors.black

# ─── STYLES ─────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def make_style(name, parent='Normal', **kwargs):
    return ParagraphStyle(name=name, parent=styles[parent], **kwargs)

H1 = make_style('H1', 'Normal',
    fontSize=22, fontName='Helvetica-Bold', textColor=C_WHITE,
    alignment=TA_CENTER, spaceAfter=4, spaceBefore=4, leading=26)

H2 = make_style('H2', 'Normal',
    fontSize=14, fontName='Helvetica-Bold', textColor=C_WHITE,
    alignment=TA_LEFT, spaceAfter=2, spaceBefore=2, leading=18)

H3 = make_style('H3', 'Normal',
    fontSize=12, fontName='Helvetica-Bold', textColor=C_NAVY,
    alignment=TA_LEFT, spaceAfter=3, spaceBefore=6, leading=15)

H4 = make_style('H4', 'Normal',
    fontSize=10, fontName='Helvetica-Bold', textColor=C_PURPLE,
    alignment=TA_LEFT, spaceAfter=2, spaceBefore=4, leading=13)

BODY = make_style('BODY', 'Normal',
    fontSize=8.5, fontName='Helvetica', textColor=C_DGREY,
    spaceAfter=3, spaceBefore=0, leading=12)

BODY_SM = make_style('BODY_SM', 'Normal',
    fontSize=7.5, fontName='Helvetica', textColor=C_DGREY,
    spaceAfter=2, spaceBefore=0, leading=10)

MNEMONIC = make_style('MNEMONIC', 'Normal',
    fontSize=9, fontName='Helvetica-Bold', textColor=C_ORANGE,
    spaceAfter=2, spaceBefore=2, leading=12)

BULLET = make_style('BULLET', 'Normal',
    fontSize=8.5, fontName='Helvetica', textColor=C_DGREY,
    spaceAfter=2, spaceBefore=0, leading=11, leftIndent=10,
    bulletIndent=2)

ONE_LINER = make_style('ONE_LINER', 'Normal',
    fontSize=8, fontName='Helvetica-BoldOblique', textColor=C_TEAL,
    spaceAfter=2, spaceBefore=1, leading=11, leftIndent=8)

CAPTION = make_style('CAPTION', 'Normal',
    fontSize=7.5, fontName='Helvetica', textColor=C_MGREY,
    alignment=TA_CENTER, spaceAfter=2, spaceBefore=0, leading=10)

# ─── HELPER FLOWABLES ───────────────────────────────────────────────────────

def section_header(title, color=C_NAVY, width=None):
    """Colored section header bar"""
    data = [[Paragraph(title, H2)]]
    t = Table(data, colWidths=[170*mm if width is None else width])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), color),
        ('TOPPADDING',    (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 6),
        ('LEFTPADDING',   (0,0), (-1,-1), 10),
        ('ROUNDEDCORNERS', [4,4,4,4]),
    ]))
    return t

def mnemonic_box(title, content, bg=C_LYELLOW, border=C_GOLD):
    """Highlighted mnemonic box"""
    inner = [[
        Paragraph(f"🔑 {title}", make_style('mn_title','Normal',
            fontSize=8.5, fontName='Helvetica-Bold', textColor=C_ORANGE, leading=11)),
        Paragraph(content, make_style('mn_body','Normal',
            fontSize=8.5, fontName='Helvetica', textColor=C_DGREY, leading=11))
    ]]
    t = Table(inner, colWidths=[40*mm, 125*mm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), bg),
        ('BOX',        (0,0), (-1,-1), 1, border),
        ('TOPPADDING',    (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING',   (0,0), (-1,-1), 6),
        ('VALIGN',     (0,0), (-1,-1), 'TOP'),
    ]))
    return t

def key_box(text, bg=C_LRED):
    """Red key-point box"""
    data = [[Paragraph(f"⚡ {text}", make_style('kp','Normal',
        fontSize=8.5, fontName='Helvetica-Bold', textColor=C_RED, leading=11))]]
    t = Table(data, colWidths=[170*mm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), bg),
        ('BOX',        (0,0), (-1,-1), 1.2, C_RED),
        ('TOPPADDING',    (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING',   (0,0), (-1,-1), 8),
    ]))
    return t

def two_col_table(headers, rows, col_widths=None, bg_header=C_NAVY):
    """Generic two-column comparison table"""
    if col_widths is None:
        col_widths = [85*mm, 85*mm]
    h_style = make_style('th','Normal',
        fontSize=8, fontName='Helvetica-Bold', textColor=C_WHITE, leading=10)
    d_style = make_style('td','Normal',
        fontSize=7.5, fontName='Helvetica', textColor=C_DGREY, leading=10)
    table_data = [[Paragraph(h, h_style) for h in headers]]
    for row in rows:
        table_data.append([Paragraph(str(c), d_style) for c in row])
    t = Table(table_data, colWidths=col_widths)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), bg_header),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [C_WHITE, C_LGREY]),
        ('GRID',       (0,0), (-1,-1), 0.4, colors.grey),
        ('TOPPADDING',    (0,0), (-1,-1), 3),
        ('BOTTOMPADDING', (0,0), (-1,-1), 3),
        ('LEFTPADDING',   (0,0), (-1,-1), 5),
        ('VALIGN',     (0,0), (-1,-1), 'TOP'),
    ]))
    return t

def multi_col_table(headers, rows, col_widths, bg_header=C_NAVY):
    h_style = make_style('th2','Normal',
        fontSize=8, fontName='Helvetica-Bold', textColor=C_WHITE, leading=10)
    d_style = make_style('td2','Normal',
        fontSize=7.5, fontName='Helvetica', textColor=C_DGREY, leading=10)
    table_data = [[Paragraph(h, h_style) for h in headers]]
    for row in rows:
        table_data.append([Paragraph(str(c), d_style) for c in row])
    t = Table(table_data, colWidths=col_widths)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), bg_header),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [C_WHITE, C_LGREY]),
        ('GRID',       (0,0), (-1,-1), 0.4, colors.grey),
        ('TOPPADDING',    (0,0), (-1,-1), 3),
        ('BOTTOMPADDING', (0,0), (-1,-1), 3),
        ('LEFTPADDING',   (0,0), (-1,-1), 4),
        ('VALIGN',     (0,0), (-1,-1), 'TOP'),
    ]))
    return t

def flowchart_box(steps, title, color=C_TEAL, width=170*mm):
    """Simple vertical flowchart"""
    step_style = make_style('fc_step','Normal',
        fontSize=8, fontName='Helvetica-Bold', textColor=C_WHITE,
        alignment=TA_CENTER, leading=10)
    arrow_style = make_style('fc_arr','Normal',
        fontSize=12, fontName='Helvetica', textColor=color,
        alignment=TA_CENTER, leading=12)
    rows = []
    for i, step in enumerate(steps):
        bg = color if i % 2 == 0 else C_TEAL if color == C_PURPLE else C_PURPLE
        rows.append([Table([[Paragraph(step, step_style)]],
            colWidths=[width - 20*mm],
            style=TableStyle([
                ('BACKGROUND', (0,0), (-1,-1), bg),
                ('TOPPADDING',(0,0),(-1,-1),5),
                ('BOTTOMPADDING',(0,0),(-1,-1),5),
                ('LEFTPADDING',(0,0),(-1,-1),8),
                ('ROUNDEDCORNERS',[3,3,3,3]),
            ]))])
        if i < len(steps) - 1:
            rows.append([Paragraph("▼", arrow_style)])
    t = Table(rows, colWidths=[width])
    t.setStyle(TableStyle([
        ('ALIGN', (0,0), (-1,-1), 'CENTER'),
        ('TOPPADDING',(0,0),(-1,-1),1),
        ('BOTTOMPADDING',(0,0),(-1,-1),1),
    ]))
    return t

def info_grid(items, cols=2, bg=C_LBLUE):
    """Grid of colored info boxes"""
    style_item = make_style('ig','Normal',
        fontSize=8, fontName='Helvetica', textColor=C_DGREY, leading=10)
    rows_data = []
    row = []
    for i, item in enumerate(items):
        row.append(Paragraph(item, style_item))
        if len(row) == cols:
            rows_data.append(row)
            row = []
    if row:
        while len(row) < cols:
            row.append(Paragraph("", style_item))
        rows_data.append(row)
    cw = [170*mm/cols] * cols
    t = Table(rows_data, colWidths=cw)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), bg),
        ('GRID',       (0,0), (-1,-1), 0.5, colors.lightgrey),
        ('TOPPADDING',    (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING',   (0,0), (-1,-1), 5),
        ('VALIGN',     (0,0), (-1,-1), 'TOP'),
    ]))
    return t

sp = lambda h=4: Spacer(1, h)
hr = lambda: HRFlowable(width="100%", thickness=0.5, color=colors.lightgrey)

# ─── COVER PAGE ─────────────────────────────────────────────────────────────

def cover_page(story):
    story.append(Spacer(1, 60))
    cover_data = [[Paragraph("PSYCHIATRY", make_style('cov_main','Normal',
        fontSize=40, fontName='Helvetica-Bold', textColor=C_WHITE,
        alignment=TA_CENTER, leading=46))],
    [Paragraph("AT A GLANCE", make_style('cov_sub','Normal',
        fontSize=20, fontName='Helvetica', textColor=HexColor("#B2EBF2"),
        alignment=TA_CENTER, leading=24))],
    [Paragraph("NEET PG | USMLE | MD ENTRANCE", make_style('cov_tag','Normal',
        fontSize=12, fontName='Helvetica-BoldOblique', textColor=HexColor("#FFE082"),
        alignment=TA_CENTER, leading=16))]]
    t = Table(cover_data, colWidths=[170*mm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), C_NAVY),
        ('TOPPADDING',    (0,0), (-1,-1), 14),
        ('BOTTOMPADDING', (0,0), (-1,-1), 14),
        ('ROUNDEDCORNERS', [8,8,8,8]),
    ]))
    story.append(t)
    story.append(sp(16))

    highlights = [
        ["📋 DSM-5 Criteria", "💊 Pharmacology", "🧠 Mnemonics", "📊 Comparison Tables"],
        ["🔄 Flowcharts", "⚡ High-Yield One-Liners", "🎯 NEET Favorites", "📌 Side-Effect Profiles"],
    ]
    for row in highlights:
        hd = [[Paragraph(h, make_style('hl','Normal',
            fontSize=9, fontName='Helvetica-Bold', textColor=C_NAVY,
            alignment=TA_CENTER, leading=12)) for h in row]]
        ht = Table(hd, colWidths=[42.5*mm]*4)
        ht.setStyle(TableStyle([
            ('BACKGROUND', (0,0), (-1,-1), C_LBLUE),
            ('GRID', (0,0), (-1,-1), 0.5, C_NAVY),
            ('TOPPADDING', (0,0), (-1,-1), 7),
            ('BOTTOMPADDING', (0,0), (-1,-1), 7),
            ('ROUNDEDCORNERS', [3,3,3,3]),
        ]))
        story.append(ht)
        story.append(sp(6))

    story.append(sp(10))
    story.append(Paragraph("Compiled from Kaplan & Sadock's Synopsis of Psychiatry • DSM-5 • Stahl's Psychopharmacology",
        make_style('src','Normal', fontSize=8, textColor=C_MGREY, alignment=TA_CENTER)))
    story.append(PageBreak())

# ─── TOPIC: NEUROTRANSMITTERS ───────────────────────────────────────────────

def neuro_section(story):
    story.append(KeepTogether([
        section_header("1. NEUROTRANSMITTERS & RECEPTORS — Quick Reference", C_NAVY),
        sp(6),
        multi_col_table(
            ["NT", "Key Pathway", "↑ Effect", "↓ Effect", "Clinical Relevance"],
            [
                ["Dopamine (DA)", "Mesolimbic, Mesocortical, Nigrostriatal, Tuberoinfundibular",
                 "Psychosis, pleasure, reward", "Anhedonia, Parkinsonism", "D2 excess → schizophrenia +ve sx"],
                ["Serotonin (5-HT)", "Raphe nuclei → cortex/limbic", "Anxiety, OCD features", "Depression, aggression, impulsivity", "5-HT2A block → atypical antipsychotic"],
                ["Norepinephrine (NE)", "Locus coeruleus → cortex", "Anxiety, alertness, BP↑", "Depression, hypotension", "SNRI/TCA mechanism"],
                ["GABA", "Widespread inhibitory", "Sedation, anxiolysis", "Anxiety, seizures", "BZD, phenobarbital target"],
                ["Glutamate", "Corticostriatal", "Excitotoxicity, learning", "Negative sx (NMDA block)", "NMDA hypo → schizophrenia?"],
                ["Acetylcholine (ACh)", "Basal forebrain → cortex", "Cognition, memory", "Alzheimer's, anticholinergic", "AChEI for dementia"],
                ["Histamine (H1)", "Hypothalamus", "Alertness", "Sedation, weight gain", "H1 block = antihistamine SE"],
            ],
            [18*mm, 45*mm, 35*mm, 35*mm, 37*mm],
            bg_header=C_NAVY
        ),
    ]))
    story.append(sp(8))

    story.append(mnemonic_box(
        "DA Pathways",
        "MATIN: Mesolimbic (reward/pleasure), meso-cAxis (cognition/affect), Tuberoinfundibular (prolactin), "
        "Incertohypothalamic, Nigrostriatal (motor). "
        "Block D2 in mesolimbic → antipsychotic effect. Block D2 in nigrostriatal → EPS. Block D2 in tuberoinfundibular → hyperprolactinemia."
    ))
    story.append(sp(4))
    story.append(key_box("Dopamine hypothesis of schizophrenia: Hyperactive D2 in mesolimbic (positive sx) + Hypo DA in mesocortical (negative/cognitive sx)"))
    story.append(PageBreak())

# ─── TOPIC: SCHIZOPHRENIA ───────────────────────────────────────────────────

def schizophrenia_section(story):
    story.append(section_header("2. SCHIZOPHRENIA SPECTRUM DISORDERS", C_NAVY))
    story.append(sp(6))

    story.append(Paragraph("DSM-5 Criteria (NEET Favorite)", H3))
    story.append(mnemonic_box(
        "5 Symptoms - DHNBB",
        "<b>D</b>elusions | <b>H</b>allucinations | <b>N</b>egative symptoms | <b>B</b>izarre behaviour | "
        "<b>B</b>arrely audible (disorganised speech) — Need ≥2, ≥1 from first 3 (D/H/disorganized speech). "
        "Duration: 6 months total (≥1 month active phase). Functional decline required."
    ))
    story.append(sp(4))

    story.append(two_col_table(
        ["Positive Symptoms", "Negative Symptoms"],
        [
            ["Hallucinations (auditory most common)", "Alogia (poverty of speech)"],
            ["Delusions (persecutory most common)", "Avolition (lack of motivation)"],
            ["Disorganized speech/thought", "Anhedonia"],
            ["Disorganized/catatonic behaviour", "Affective flattening"],
            ["Formal thought disorder", "Asociality"],
        ],
        [85*mm, 85*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Schizophrenia Spectrum - Quick Comparison", H3))
    story.append(multi_col_table(
        ["Disorder", "Duration", "Mood episode?", "Key Feature"],
        [
            ["Schizophrenia", "≥6 months", "Absent/brief", "Full criteria ≥1 month"],
            ["Schizophreniform", "1-6 months", "Absent", "Same criteria, shorter"],
            ["Brief Psychotic Disorder", "<1 month", "Absent", "Sudden onset, good prognosis"],
            ["Schizoaffective", "≥6 months", "Present (>half time)", "Psychosis + mood; 2-week psychosis alone"],
            ["Delusional Disorder", "≥1 month", "Absent/brief", "Non-bizarre delusions, functioning intact"],
            ["Shared Psychotic Disorder", "Variable", "Absent", "Folie à deux - induced by dominant person"],
        ],
        [40*mm, 28*mm, 28*mm, 74*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Schneider's First Rank Symptoms (FRS)", H3))
    story.append(mnemonic_box(
        "FRS Mnemonic - ABCDE",
        "<b>A</b>uditory hallucinations (3rd person, running commentary) | "
        "<b>B</b>roadcasting of thought | <b>C</b>ontrolled feelings (made acts/impulses) | "
        "<b>D</b>elusional perception | <b>E</b>cho de la pensee (thought echo) + thought insertion/withdrawal. "
        "FRS not pathognomonic but highly specific for schizophrenia."
    ))
    story.append(sp(4))

    story.append(Paragraph("Good vs Poor Prognostic Factors", H3))
    story.append(two_col_table(
        ["Good Prognosis", "Poor Prognosis"],
        [
            ["Late onset", "Early onset (esp. childhood)"],
            ["Female sex", "Male sex"],
            ["Acute/precipitating factors", "Insidious onset"],
            ["Good premorbid functioning", "Poor premorbid functioning"],
            ["Positive symptoms predominant", "Negative symptoms predominant"],
            ["Married/social support", "Single/isolated"],
            ["Family history of mood disorder", "Family history of schizophrenia"],
            ["No structural brain changes", "Ventricular enlargement on CT/MRI"],
        ]
    ))
    story.append(sp(4))
    story.append(key_box("Most common hallucination in schizophrenia: AUDITORY (third-person, running commentary). Visual hallucinations → think ORGANIC cause"))
    story.append(PageBreak())

# ─── TOPIC: MOOD DISORDERS ──────────────────────────────────────────────────

def mood_section(story):
    story.append(section_header("3. MOOD DISORDERS", C_PURPLE))
    story.append(sp(6))

    story.append(Paragraph("Major Depressive Episode (MDE) - DSM-5", H3))
    story.append(mnemonic_box(
        "SIGECAPS (+D)",
        "<b>S</b>leep disturbance | <b>I</b>nterest loss (anhedonia) | <b>G</b>uilt/worthlessness | "
        "<b>E</b>nergy loss | <b>C</b>oncentration impaired | <b>A</b>ppetite change | "
        "<b>P</b>sychomotor agitation/retardation | <b>S</b>uicidality + <b>D</b>epressed mood. "
        "Need ≥5 symptoms, ≥1 = depressed mood OR anhedonia. Duration ≥2 weeks."
    ))
    story.append(sp(4))

    story.append(Paragraph("Manic Episode - DSM-5", H3))
    story.append(mnemonic_box(
        "DIG FAST",
        "<b>D</b>istractibility | <b>I</b>rritability/Impulsivity | <b>G</b>randiosity | "
        "<b>F</b>light of ideas | <b>A</b>ctivity increase | <b>S</b>leep decreased | "
        "<b>T</b>alkativeness (pressured speech). Duration ≥7 days (or any duration if hospitalized). "
        "Hypomanic: ≥4 days, no hospitalization/psychosis."
    ))
    story.append(sp(4))

    story.append(multi_col_table(
        ["Disorder", "Duration", "Polarity", "Key Features"],
        [
            ["MDD", "≥2 wks", "Depressed only", "≥5 SIGECAPS sx; no manic/hypomanic hx"],
            ["Bipolar I", "Mania ≥7 days", "Mania + depression", "Full manic episode required (1 lifetime)"],
            ["Bipolar II", "Hypomania ≥4 days", "Hypomania + depression", "No full mania; hypomania = BPII"],
            ["Cyclothymia", "≥2 years", "Mild highs + lows", "Never full MDE or manic episode; subsyndromal"],
            ["Dysthymia (PDD)", "≥2 years", "Depressed only", "Chronic low mood; 'double depression' = MDE+DD"],
            ["Seasonal (SAD)", "Seasonal pattern", "Winter depression", "Responds to light therapy; recurrent"],
        ],
        [35*mm, 30*mm, 35*mm, 70*mm]
    ))
    story.append(sp(6))

    story.append(two_col_table(
        ["Specifiers in Mood Disorders", "Clinical Tip"],
        [
            ["With melancholic features", "Anhedonia + morning worsening + early waking + psychomotor changes → TCA/ECT"],
            ["With atypical features", "Mood reactivity + hypersomnia + hyperphagia + leaden paralysis + interpersonal rejection sensitivity → MAOI"],
            ["With psychotic features", "Mood-congruent vs incongruent psychosis; severity marker; need antipsychotic"],
            ["With catatonic features", "Motor immobility, excessive motor activity, extreme negativism → Benzodiazepine/ECT"],
            ["With peripartum onset", "Within 4 weeks postpartum (DSM) or 6 weeks (ICD); PPD vs baby blues vs postpartum psychosis"],
        ]
    ))
    story.append(sp(4))
    story.append(key_box("Baby blues (day 1-3) vs PPD (>2 weeks) vs Postpartum Psychosis (24-72 hrs, emergency, infanticide risk)"))
    story.append(PageBreak())

# ─── TOPIC: ANXIETY DISORDERS ───────────────────────────────────────────────

def anxiety_section(story):
    story.append(section_header("4. ANXIETY & RELATED DISORDERS", C_TEAL))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Disorder", "Core Feature", "Duration", "Treatment of Choice"],
        [
            ["GAD", "Excessive worry ≥3 areas, hard to control", "≥6 months", "SSRI/SNRI + Buspirone (no dependence); CBT"],
            ["Panic Disorder", "Recurrent unexpected panic attacks + anticipatory anxiety", "Attacks peak <10 min", "SSRI (1st), TCA (2nd), BZD (acute); avoid caffeine"],
            ["Social Anxiety Disorder", "Fear of social scrutiny, embarrassment", "≥6 months", "SSRI/SNRI; Propranolol (performance); CBT"],
            ["Specific Phobia", "Marked fear of specific object/situation", "≥6 months", "Systematic desensitization / Exposure therapy"],
            ["Agoraphobia", "Fear of open/crowded places, escape impossible", "≥6 months", "SSRI + CBT; may accompany panic"],
            ["Separation Anxiety", "Fear of separation from attachment figure", "≥4 wks (child) / ≥6 months (adult)", "CBT; SSRI if severe"],
        ],
        [30*mm, 50*mm, 28*mm, 62*mm]
    ))
    story.append(sp(4))

    story.append(Paragraph("Panic Attack Symptoms (≥4 required)", H3))
    story.append(mnemonic_box(
        "STUDENTS FEAR 3 Cs",
        "<b>S</b>weating | <b>T</b>rembling | <b>U</b>nsteadiness/dizzy | <b>D</b>erealization | "
        "<b>E</b>xtreme heart pounding (palpitations) | <b>N</b>ausea | <b>T</b>ingling (paresthesia) | "
        "<b>S</b>hortness of breath | <b>F</b>ear of dying | <b>E</b>xtreme sweating | "
        "<b>A</b>ngina-like chest pain | <b>R</b>estlessness (choking) + <b>C</b>hills/<b>C</b>old flushes/<b>C</b>raw-skin"
    ))
    story.append(sp(6))

    story.append(section_header("5. OBSESSIVE-COMPULSIVE & RELATED DISORDERS", C_TEAL))
    story.append(sp(6))
    story.append(multi_col_table(
        ["Disorder", "Obsession/Focus", "Compulsion", "Treatment"],
        [
            ["OCD", "Ego-dystonic thoughts (contamination, symmetry, harm)", "Washing, checking, counting", "SSRI (high dose) + ERP; Clomipramine"],
            ["Body Dysmorphic Disorder", "Imagined/slight defect in appearance", "Mirror checking, camouflaging", "SSRI + CBT"],
            ["Trichotillomania", "Urge to pull hair", "Hair pulling → alopecia", "CBT (HRT); N-acetylcysteine; clomipramine"],
            ["Excoriation (Skin Picking)", "Urge to pick skin", "Repetitive skin picking → lesions", "CBT; SSRI"],
            ["Hoarding Disorder", "Difficulty discarding possessions", "Accumulation; distress if discarded", "CBT; SSRI"],
        ],
        [35*mm, 45*mm, 40*mm, 50*mm]
    ))
    story.append(sp(4))
    story.append(key_box("OCD: Ego-DYSTONIC (patient distressed by thoughts). Obsessive Personality: Ego-SYNTONIC (patient considers it normal)"))
    story.append(PageBreak())

# ─── TOPIC: TRAUMA & STRESSOR-RELATED ──────────────────────────────────────

def trauma_section(story):
    story.append(section_header("6. TRAUMA & STRESSOR-RELATED DISORDERS", C_RED))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Disorder", "Onset After Trauma", "Duration", "Key Features"],
        [
            ["Acute Stress Disorder", "Within 4 weeks", "3 days - 1 month", "Dissociation, intrusion, avoidance, hyperarousal; 9 of 14 sx from 5 clusters"],
            ["PTSD", ">1 month", "≥1 month", "4 clusters: Intrusion, Avoidance, Cognition/mood changes, Arousal/reactivity"],
            ["Adjustment Disorder", "Within 3 months of stressor", "≤6 months after stressor ends", "Emotional/behavioral sx disproportionate; no full MDE/PTSD sx"],
            ["Reactive Attachment Disorder", "Before age 5", "Persistent", "Inhibited: withdrawal, minimal social/emotional response (neglect/abuse)"],
            ["Disinhibited SAD", "Before age 5", "Persistent", "Disinhibited: indiscriminate approach to strangers; culturally inappropriate"],
        ],
        [38*mm, 32*mm, 30*mm, 70*mm]
    ))
    story.append(sp(4))

    story.append(Paragraph("PTSD - 4 Criterion Clusters (DSM-5)", H3))
    story.append(flowchart_box(
        [
            "Criterion A: Exposure to actual/threatened death, sexual violence, serious injury",
            "Criterion B: INTRUSION - Flashbacks, nightmares, intrusive memories, dissociative reactions",
            "Criterion C: AVOIDANCE - Avoid trauma-related thoughts, feelings, external reminders",
            "Criterion D: Negative COGNITION/MOOD - Amnesia, negative beliefs, distorted blame, persistent negative emotion, anhedonia",
            "Criterion E: AROUSAL/REACTIVITY - Irritability, reckless behavior, hypervigilance, exaggerated startle, sleep disturbance, concentration problems",
            "Duration >1 month + Significant distress/impairment → PTSD diagnosis"
        ],
        "PTSD Criteria Flowchart",
        color=C_RED
    ))
    story.append(sp(4))
    story.append(key_box("PTSD Treatment: 1st Line = Trauma-focused CBT (TF-CBT) + SSRI (Sertraline, Paroxetine FDA approved). EMDR also evidence-based"))
    story.append(PageBreak())

# ─── TOPIC: PERSONALITY DISORDERS ──────────────────────────────────────────

def personality_section(story):
    story.append(section_header("7. PERSONALITY DISORDERS", C_PINK))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Cluster", "Disorder", "Core Feature", "Mnemonic / Association"],
        [
            ["A - Odd/Eccentric", "Paranoid", "Distrust, suspiciousness, bears grudges", "Like schizophrenia but NO psychosis"],
            ["A - Odd/Eccentric", "Schizoid", "Detachment, restricted affect, loner, no desire for relationships", "Loner: no friends, no interest in sex, flat affect"],
            ["A - Odd/Eccentric", "Schizotypal", "Magical thinking, ideas of reference, odd perceptions, eccentric", "Mini-schizophrenia; highest genetic link to schizophrenia"],
            ["B - Dramatic", "Antisocial (ASPD)", "Disregard for others, violates rights, deceitful, impulsive, ≥18 yo (conduct disorder before 15)", "Con artists, criminals; callous/remorseless"],
            ["B - Dramatic", "Borderline (BPD)", "Unstable relationships, identity, affect; impulsivity; self-harm; fear of abandonment", "DBT (Dialectical Behaviour Therapy) = Treatment of choice"],
            ["B - Dramatic", "Histrionic", "Excessive emotionality, attention-seeking, seductive, dramatic", "PRAISE mnemonic: Provocative/seductive, Relationships superficial..."],
            ["B - Dramatic", "Narcissistic", "Grandiosity, need for admiration, lack empathy, entitlement", "Fragile self-esteem underneath"],
            ["C - Anxious", "Avoidant", "Social inhibition, inadequacy, hypersensitive to criticism, wants relationships (unlike schizoid)", "Wants friends but too scared of rejection"],
            ["C - Anxious", "Dependent", "Submissive, clinging, fear of abandonment, difficulty with decisions", "Reassurance-seeking; lets others make decisions"],
            ["C - Anxious", "OCPD", "Perfectionism, rigidity, orderliness, control (ego-syntonic)", "Unlike OCD: ego-syntonic, no true obsessions/compulsions"],
        ],
        [22*mm, 24*mm, 60*mm, 64*mm]
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "Cluster A-B-C",
        "Cluster A = <b>W</b>eird (schizophrenia spectrum) | Cluster B = <b>W</b>ild (dramatic, impulsive) | "
        "Cluster C = <b>W</b>orried (anxious, fearful). "
        "'<b>MAD, BAD, SAD</b>' = Cluster A (mad), B (bad), C (sad)"
    ))
    story.append(sp(4))
    story.append(key_box("BPD: Self-mutilation (wrist cutting) ≠ suicidal intent usually; 'splitting' (all good or all bad); identity diffusion. TOC = DBT"))
    story.append(PageBreak())

# ─── TOPIC: ANTIPSYCHOTICS ──────────────────────────────────────────────────

def antipsychotic_section(story):
    story.append(section_header("8. ANTIPSYCHOTIC DRUGS", C_NAVY))
    story.append(sp(6))

    story.append(Paragraph("Typical (1st Generation) vs Atypical (2nd Generation)", H3))
    story.append(multi_col_table(
        ["Drug", "Type", "Unique Feature / Side Effect", "NEET High-Yield Point"],
        [
            ["Haloperidol", "Typical (High potency)", "High EPS, low sedation/anticholinergic", "DOC acute psychosis (IM), D2 blocker, QTc prolongation"],
            ["Chlorpromazine", "Typical (Low potency)", "High sedation, anticholinergic, low EPS", "First antipsychotic; corneal/lens deposits; photosensitivity"],
            ["Fluphenazine", "Typical (High potency)", "Depot (long-acting injection)", "DOC non-compliant schizophrenia"],
            ["Clozapine", "Atypical", "Agranulocytosis (monitor WBC!); lowest EPS; weight gain++", "DOC treatment-resistant schizophrenia; unique 5-HT2A + D4 block; CLUE: clozaril = WBC monitoring mandatory"],
            ["Olanzapine", "Atypical", "Maximum metabolic SE (weight, DM, lipids)", "Highest weight gain of all antipsychotics; sedation++"],
            ["Risperidone", "Atypical", "High EPS (dose-dependent); highest prolactin elevation", "Atypical with highest EPS; DOC childhood psychosis; also used in autism"],
            ["Quetiapine", "Atypical", "Sedation, low EPS, low prolactin", "Used in Parkinson's psychosis + schizophrenia + bipolar"],
            ["Aripiprazole", "Atypical (Partial D2 agonist)", "Minimal weight gain, no prolactin elevation, low metabolic SE", "Partial D2 agonist/antagonist = stabilizer; activating effect; akathisia"],
            ["Ziprasidone", "Atypical", "QTc prolongation; must give with food", "Lowest metabolic SE; avoid in cardiac disease"],
            ["Amisulpride", "Atypical", "Selective D2/D3; high prolactin; low metabolic SE", "For negative symptoms at low dose; positive at high dose"],
        ],
        [28*mm, 22*mm, 62*mm, 58*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Extrapyramidal Side Effects (EPS) - Timing & Treatment", H3))
    story.append(multi_col_table(
        ["EPS Type", "Onset", "Features", "Treatment"],
        [
            ["Acute Dystonia", "Hours-4 days", "Sudden painful muscle spasm; oculogyric crisis, torticollis; more common in young males", "IV/IM Benztropine or Diphenhydramine (immediate)"],
            ["Akathisia", "Days-weeks", "Subjective restlessness, unable to sit still; most distressing; suicide risk", "Propranolol (1st), BZD, dose reduction; anticholinergics less effective"],
            ["Parkinsonism (Drug-induced)", "Weeks", "Bradykinesia, rigidity, tremor, mask facies", "Anticholinergics (Benztropine, Trihexyphenidyl), Amantadine"],
            ["Tardive Dyskinesia (TD)", "Months-years", "Choreiform movements; lip smacking; irreversible!", "STOP drug or switch to clozapine; Valbenazine/Deutetrabenazine (FDA approved for TD)"],
        ],
        [32*mm, 25*mm, 60*mm, 53*mm]
    ))
    story.append(sp(4))
    story.append(key_box("Neuroleptic Malignant Syndrome (NMS): Hyperthermia + Rigidity + Altered consciousness + Autonomic instability + ↑CK. Rx: STOP drug, Dantrolene, Bromocriptine, DA agonist"))
    story.append(PageBreak())

# ─── TOPIC: ANTIDEPRESSANTS ─────────────────────────────────────────────────

def antidepressant_section(story):
    story.append(section_header("9. ANTIDEPRESSANTS & MOOD STABILIZERS", C_PURPLE))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Class", "Examples", "MOA", "Key Side Effects / High-Yield"],
        [
            ["SSRI", "Fluoxetine, Sertraline, Paroxetine, Escitalopram, Citalopram, Fluvoxamine",
             "Selective serotonin reuptake inhibition", "Nausea, sexual dysfunction (most common reason for discontinuation), jitteriness, serotonin syndrome risk; SAFE in pregnancy (Sertraline preferred)"],
            ["SNRI", "Venlafaxine, Duloxetine, Desvenlafaxine",
             "5-HT + NE reuptake inhibition", "HTN (dose-dependent), nausea; Duloxetine = pain + depression + incontinence; Venlafaxine highest discontinuation syndrome"],
            ["TCA", "Amitriptyline, Clomipramine, Imipramine, Nortriptyline",
             "5-HT + NE reuptake inhibition; anticholinergic, antihistamine, alpha-1 block",
             "3 Cs: Cardiac (QTc), Coma, Convulsions in OD. Anticholinergic: dry mouth, constipation, urinary retention, blurred vision. Clomipramine = DOC OCD"],
            ["MAOI", "Phenelzine, Tranylcypromine, Selegiline (patch)",
             "Irreversible MAO-A+B inhibition (phenelzine/tranyl); MAO-B (selegiline low dose)",
             "TYRAMINE crisis (hypertensive crisis): cheese, wine, cured meats. Serotonin syndrome with SSRI/meperidine. DOC atypical depression"],
            ["Mirtazapine", "Mirtazapine",
             "Alpha-2 antagonist (↑ 5-HT + NE); H1 block",
             "Sedation + weight gain (antihistamine); NO sexual dysfunction; good for depression + insomnia + anorexia"],
            ["Bupropion", "Bupropion",
             "NE + DA reuptake inhibition (NDRI)",
             "NO sexual dysfunction; NO weight gain (weight loss); Smoking cessation; AVOID in eating disorders/seizure history (lowers seizure threshold)"],
            ["Trazodone", "Trazodone",
             "5-HT2 antagonist + weak SSRI",
             "Priapism (rare but NEET classic); sedation; used for insomnia"],
            ["Vortioxetine", "Vortioxetine",
             "Multi-modal: SSRI + 5-HT receptor modulation",
             "Pro-cognitive effects; less sexual dysfunction; FDA approved for MDD"],
        ],
        [22*mm, 30*mm, 38*mm, 80*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Mood Stabilizers", H3))
    story.append(multi_col_table(
        ["Drug", "Therapeutic Level", "Indications", "Key Toxicity / Monitoring"],
        [
            ["Lithium", "0.6-1.2 mEq/L (acute: up to 1.4)", "Bipolar (acute + maintenance), augmentation of AD, SIADH-like effect",
             "Narrow therapeutic index! Toxicity: tremor→coarse tremor→confusion→seizure→coma. REGULAR monitoring. SE: hypothyroidism, diabetes insipidus (nephrogenic), polyuria, polydipsia, acne, psoriasis, teratogen (Ebstein anomaly). AVOID NSAIDs/diuretics (raise lithium levels)"],
            ["Valproate", "50-125 μg/mL", "Bipolar (esp. mixed/rapid cycling), epilepsy, migraine prophylaxis",
             "Hepatotoxicity (esp. <2 yrs age), thrombocytopenia, pancreatitis, hair loss, weight gain. Neural tube defects (spina bifida) - teratogenic. PCOS-like syndrome. Monitor LFT + CBC"],
            ["Carbamazepine", "4-12 μg/mL", "Bipolar, trigeminal neuralgia, epilepsy",
             "Aplastic anemia/agranulocytosis, SIADH (hyponatremia), ataxia, diplopia. Teratogen (neural tube defects). Enzyme inducer → drug interactions. Monitor CBC + Na"],
            ["Lamotrigine", "N/A (clinical)", "Bipolar depression (maintenance), bipolar II, epilepsy",
             "Stevens-Johnson syndrome (if titrated too fast). Titrate slowly! Best for bipolar depression without mania induction"],
        ],
        [25*mm, 28*mm, 45*mm, 72*mm]
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "Serotonin Syndrome",
        "HUNTER Criteria: Serotonergic drug + [Clonus / Agitation / Diaphoresis / Tremor / Hyperreflexia / Hyperthermia]. "
        "Triad: Altered mental status + Neuromuscular abnormalities (clonus, hyperreflexia, tremor) + Autonomic instability. "
        "Onset within 24 hrs. Rx: STOP drug, Cyproheptadine (5-HT2 antagonist), supportive care, BZD. "
        "Distinguish from NMS: NMS=rigidity+hyporeflexia, slow onset; SS=clonus+hyperreflexia, fast onset."
    ))
    story.append(PageBreak())

# ─── TOPIC: SUBSTANCE USE ───────────────────────────────────────────────────

def substance_section(story):
    story.append(section_header("10. SUBSTANCE USE DISORDERS", C_ORANGE))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Substance", "Intoxication", "Withdrawal", "Treatment"],
        [
            ["Alcohol", "Disinhibition, slurred speech, ataxia, coma (high dose)",
             "6-24h: anxiety, tremor, sweats, tachycardia\n24-72h: SEIZURES\n72-96h: DELIRIUM TREMENS (DTs) = hallucinations, autonomic instability, FATAL if untreated",
             "Acute: BZD (Diazepam/Lorazepam - CIWA protocol)\nMaintenance: Naltrexone (craving↓), Acamprosate (relapse prevention), Disulfiram (deterrent - aldehyde syndrome)"],
            ["Opioids", "Euphoria, miosis (pinpoint pupils), respiratory depression, constipation",
             "Yawning, lacrimation, rhinorrhoea, piloerection, myalgia, diarrhoea (OPPOSITE of intoxication). NOT life-threatening",
             "Acute OD: NALOXONE (IV/IM/intranasal)\nMaintenance: Methadone (full agonist), Buprenorphine/Naloxone (Suboxone - partial agonist), Naltrexone"],
            ["Cocaine/Amphetamine", "Euphoria, mydriasis, tachycardia, HTN, hyperthermia, paranoia, psychosis",
             "Crash: fatigue, hypersomnia, hyperphagia, dysphoria (no medical emergency)",
             "No FDA-approved pharmacotherapy. Symptomatic. CBT. Propranolol for HTN/tachycardia acutely"],
            ["Cannabis", "Euphoria, relaxation, conjunctival injection, dry mouth, ↑appetite, tachycardia, perceptual distortions",
             "Irritability, anxiety, insomnia, decreased appetite (mild, not life-threatening)",
             "Supportive. CBT for use disorder. No approved pharmacotherapy"],
            ["Benzodiazepines", "Sedation, slurred speech, ataxia, amnesia",
             "DANGEROUS: anxiety, insomnia, tremor, SEIZURES, hallucinations, delirium (similar to alcohol withdrawal)",
             "Slow taper with long-acting BZD (e.g. Diazepam); NEVER abrupt cessation"],
            ["PCP (Phencyclidine)", "Vertical/rotatory nystagmus, aggression, analgesia, psychosis, dissociation",
             "Not clearly defined",
             "Quiet room; Benzodiazepines; Haloperidol if needed. AVOID phenothiazines"],
            ["LSD/Hallucinogens", "Illusions, hallucinations (visual), synesthesia; pupils dilated; tachycardia",
             "No physical withdrawal; HPPD (flashbacks) possible",
             "Quiet room (talk-down); BZD for anxiety; avoid antipsychotics if possible"],
        ],
        [22*mm, 42*mm, 52*mm, 54*mm]
    ))
    story.append(sp(4))
    story.append(key_box("Wernicke-Korsakoff Syndrome: Triad of WE = Confusion + Ataxia + Ophthalmoplegia (ANY alcohol patient → IV THIAMINE BEFORE glucose!). Korsakoff = amnesia + confabulation (irreversible)"))
    story.append(PageBreak())

# ─── TOPIC: SLEEP DISORDERS ─────────────────────────────────────────────────

def sleep_section(story):
    story.append(section_header("11. SLEEP DISORDERS", C_TEAL))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Disorder", "Sleep Stage", "Features", "Treatment"],
        [
            ["Insomnia Disorder", "Difficulty initiating/maintaining", "≥3 nights/week, ≥3 months; daytime dysfunction", "CBT-I (1st line); Zolpidem/Eszopiclone (short-term); Melatonin"],
            ["Narcolepsy", "REM onset SOREMP, REM intrusion", "EDS + Cataplexy (NT-1) + Sleep paralysis + Hypnagogic hallucinations; orexin/hypocretin deficiency", "Modafinil/Armodafinil (EDS); Sodium oxybate (cataplexy + EDS); Methylphenidate"],
            ["Obstructive Sleep Apnea", "N/A (obstructive)", "Snoring, witnessed apneas, unrefreshing sleep, morning headache; ↑BMI, neck circumference", "CPAP (gold standard); Uvulopalatopharyngoplasty (surgery); weight loss"],
            ["Sleep Terror", "NREM Stage 3 (slow wave)", "Sudden terror, screaming, autonomic arousal; no memory of episode; child usually", "Usually resolves; reassure parents; rarely BZD"],
            ["Sleepwalking (Somnambulism)", "NREM Stage 3", "Complex behaviors during sleep; no memory", "Safety measures; BZD/Clonazepam"],
            ["REM Sleep Behavior Disorder", "REM sleep", "Acting out vivid dreams; violent movements; associated with Parkinson's/LBD/MSA (synucleinopathies)", "Clonazepam; Melatonin; safety measures"],
            ["Restless Legs Syndrome", "Presleep (NREM)", "Urge to move legs, worse at night/rest, relieved by movement; dopamine deficiency", "Pramipexole, Ropinirole (dopamine agonists); Iron if deficient"],
        ],
        [30*mm, 28*mm, 58*mm, 54*mm]
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "Narcolepsy Tetrad",
        "CHESS: <b>C</b>ataplexy (emotion-triggered sudden loss of muscle tone) + <b>H</b>ypnagogic hallucinations "
        "(onset of sleep) + <b>E</b>xcessive daytime sleepiness + <b>S</b>leep paralysis + <b>S</b>OREMPs "
        "(Sleep-Onset REM Periods <15 min on MSLT). Low CSF Hypocretin-1 = Type 1 Narcolepsy"
    ))
    story.append(PageBreak())

# ─── TOPIC: CHILDHOOD DISORDERS ─────────────────────────────────────────────

def child_section(story):
    story.append(section_header("12. CHILD & ADOLESCENT PSYCHIATRY", C_PINK))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Disorder", "Age of Onset", "Key Features", "Treatment"],
        [
            ["ADHD", "Before 12 yrs; symptoms in 2+ settings",
             "Inattention (≥6 sx) AND/OR Hyperactivity-Impulsivity (≥6 sx). 3 types: Combined, Predominantly Inattentive, Predominantly Hyperactive-Impulsive",
             "Stimulants (Methylphenidate, Amphetamine salts) = 1st line ≥6 yrs. Non-stimulant: Atomoxetine (SNRI, esp. if tics/substance abuse), Guanfacine/Clonidine"],
            ["Autism Spectrum Disorder (ASD)", "Early childhood (before 3 yrs typical)",
             "Social communication deficits + Restricted, repetitive behaviors. Sensory abnormalities. Intellectual disability in ~30%. ADOS gold standard",
             "ABA (Applied Behavior Analysis); PECS; Risperidone/Aripiprazole (FDA approved for irritability in ASD); No cure"],
            ["Intellectual Disability (ID)", "During developmental period",
             "IQ <70 + adaptive functioning deficits in ≥2 domains (conceptual, social, practical). IQ 50-70=Mild, 35-50=Moderate, 20-35=Severe, <20=Profound",
             "Mild: Education, vocational training. Behavioral therapy. Address comorbidities"],
            ["Conduct Disorder (CD)", "<18 yrs", "Aggression, destruction, deceitfulness, rule violations in ≥3/15 criteria for ≥12 months. Callous-unemotional traits", "CBT; Parent Management Training; Multisystemic Therapy"],
            ["ODD", "Childhood", "Angry/irritable mood, argumentative/defiant behavior, vindictiveness ≥6 months", "Parent Management Training; CBT"],
            ["Tourette Disorder", "Before 18 yrs", "Multiple motor + ≥1 vocal tic for ≥1 year; wax and wane; associated with OCD, ADHD", "Mild: reassurance. Clonidine/Guanfacine (mild tics). Haloperidol/Fluphenazine/Pimozide (severe). Habit Reversal Training"],
            ["Enuresis", "≥5 yrs", "Repeated bedwetting ≥2x/week for ≥3 months. Primary vs Secondary (regression after 6 months dry)", "Bell-and-pad (conditioning); DDAVP (Desmopressin) at night; Imipramine (2nd line)"],
            ["Encopresis", "≥4 yrs", "Repeated defecation in inappropriate places ≥1x/month for ≥3 months", "Laxatives + behavioral training; address constipation"],
            ["Separation Anxiety", "Childhood", "Excessive anxiety about separation from home/attachment figures; school refusal; somatic complaints", "CBT (exposure); SSRI if severe; school reintegration plan"],
            ["Selective Mutism", "Childhood (school age)", "Consistent failure to speak in specific social situations despite speaking elsewhere; school most common", "CBT + SSRI; exposure therapy; behavioral shaping"],
        ],
        [28*mm, 25*mm, 60*mm, 57*mm]
    ))
    story.append(sp(4))
    story.append(key_box("ADHD: Methylphenidate blocks DA + NE reuptake (not release). Amphetamine RELEASES DA + NE. Both work! Strattera (Atomoxetine) is NON-stimulant, non-scheduled, safe in tics"))
    story.append(PageBreak())

# ─── TOPIC: DEMENTIA & COGNITIVE ────────────────────────────────────────────

def dementia_section(story):
    story.append(section_header("13. NEUROCOGNITIVE DISORDERS (DEMENTIA)", C_NAVY))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Type", "Pathology", "Classic Features", "Treatment"],
        [
            ["Alzheimer's Disease (Most common)", "↓ ACh, Amyloid plaques (Aβ), Neurofibrillary tangles (tau), Neuritic plaques. APOE4 risk gene",
             "Gradual onset, progressive memory loss (episodic first). Visuospatial later. Behavioral symptoms late. Brain: global atrophy, hippocampal first",
             "AChEI (Donepezil, Rivastigmine, Galantamine) for mild-moderate. Memantine (NMDA antagonist) for moderate-severe. Combo: Donepezil + Memantine"],
            ["Vascular Dementia (2nd most common)", "Multiple infarcts/white matter changes; stepwise decline",
             "Stepwise (not gradual) progression; focal neurological signs; risk factors = HTN, DM, smoking, AF",
             "Control vascular risk factors; Aspirin; AChEI may help (Donepezil)"],
            ["Lewy Body Dementia (DLB)", "Alpha-synuclein Lewy bodies in cortex",
             "Triad: Fluctuating cognition + Recurrent visual hallucinations + Parkinsonism. REM Sleep Behavior Disorder early. Sensitivity to antipsychotics!",
             "AChEI (Rivastigmine preferred); AVOID typical antipsychotics (fatal sensitivity); Levodopa cautiously"],
            ["Frontotemporal Dementia (FTD)", "Tau/TDP-43; Pick bodies (Pick's disease subset)",
             "Early behavioral/personality changes; disinhibition; apathy; preserved memory early. Language variants: PNFA, semantic dementia",
             "No approved therapy; Behavioral: SSRI for disinhibition; avoid cholinesterase inhibitors (may worsen)"],
            ["Parkinson's Dementia (PDD)", "Dopamine deficiency + Lewy bodies; PD for ≥1 yr before dementia",
             "Dementia after established PD (≥1 yr). Similar to DLB but PD first. Hallucinations, executive dysfunction",
             "AChEI (Rivastigmine FDA approved for PDD); AVOID antipsychotics (use Quetiapine if needed)"],
        ],
        [25*mm, 40*mm, 55*mm, 50*mm]
    ))
    story.append(sp(4))

    story.append(Paragraph("Delirium vs Dementia - Quick Differentiation", H3))
    story.append(two_col_table(
        ["Delirium", "Dementia"],
        [
            ["Acute onset (hours-days)", "Gradual onset (months-years)"],
            ["Fluctuating consciousness", "Consciousness preserved (early)"],
            ["REVERSIBLE (treat cause!)", "Usually irreversible"],
            ["Attention severely impaired", "Attention relatively preserved (early)"],
            ["Psychomotor disturbance", "Usually absent early"],
            ["Sleep-wake cycle disrupted", "Sundowning in later stages"],
            ["Cause: infection, drugs, metabolic", "Cause: neurodegeneration, vascular"],
        ]
    ))
    story.append(sp(4))
    story.append(key_box("Delirium = WHHHHIMP: Withdrawal, Hypoxia, Hypoglycemia/Hyperglycemia, Head trauma, HTN encephalopathy, Infection, Metabolic, Poisons/drugs"))
    story.append(PageBreak())

# ─── TOPIC: FORENSIC PSYCHIATRY ─────────────────────────────────────────────

def forensic_section(story):
    story.append(section_header("14. FORENSIC PSYCHIATRY & LEGAL CONCEPTS", C_RED))
    story.append(sp(6))

    story.append(multi_col_table(
        ["Concept", "Definition / Key Points", "NEET Focus"],
        [
            ["McNaughton Rules (Insanity Defense)", "Not guilty by reason of insanity IF: 1) Laboring under defect of reason 2) Due to disease of mind 3) Did not know nature/quality of act OR did not know it was wrong",
             "4 components; Cognitive test only (not volitional)"],
            ["Fitness to Stand Trial", "Ability to understand proceedings and assist in own defense at time of trial (not at time of crime)",
             "Competency (present) vs Insanity (past - time of offense)"],
            ["Durham Rule", "'Product Rule': Crime is product of mental disease or defect",
             "Broader than McNaughton; abandoned in US"],
            ["Irresistible Impulse Test", "Unable to control behavior even if knew it was wrong (volitional prong)",
             "Addendum to McNaughton in some jurisdictions"],
            ["Informed Consent", "3 elements: Disclosure (adequate info) + Competency (decision-making capacity) + Voluntariness (no coercion)",
             "Capacity assessment = 4 Cs: Communicate, Comprehend, Compare, Conclude"],
            ["Confidentiality Exceptions", "Tarasoff duty: Duty to warn/protect identifiable third party from credible threat. Mandatory reporting: child abuse, elder abuse, infectious diseases",
             "Psychotherapist-patient privilege broken by: Tarasoff, child abuse, court order"],
            ["Involuntary Hospitalization", "Criteria: Danger to self OR danger to others OR gravely disabled. Usually 72-hour emergency hold (5150 in California)",
             "Civil commitment = least restrictive alternative"],
        ],
        [35*mm, 85*mm, 50*mm]
    ))
    story.append(sp(8))

    story.append(section_header("15. ECT, PSYCHOTHERAPY & MISCELLANEOUS", C_TEAL))
    story.append(sp(6))

    story.append(two_col_table(
        ["ECT (Electroconvulsive Therapy)", "Psychotherapy Types"],
        [
            ["Absolute contraindications: NONE (relative: raised ICP, recent MI/stroke, pheochromocytoma)",
             "CBT: Cognitive + Behavioral; evidence-based for depression, anxiety, OCD, PTSD"],
            ["Indications: Severe depression + suicidal, treatment-resistant, psychotic depression, catatonia, mania refractory, Parkinson's",
             "DBT: Dialectical Behavior Therapy; Linehan; BPD treatment of choice; skills: mindfulness, distress tolerance, emotion regulation, interpersonal effectiveness"],
            ["Mechanism: seizure activity (not electricity per se); bilateral > right unilateral for efficacy; right unilateral = fewer cognitive SE",
             "Psychoanalysis: Freud; free association, transference, countertransference, dream analysis"],
            ["SE: Memory impairment (retrograde + anterograde), confusion, headache, nausea; MOST COMMON reversible cognitive SE",
             "Behavioral therapy: Classical (Pavlov) + Operant (Skinner) conditioning; systematic desensitization, flooding, token economy, biofeedback"],
            ["Premedication: Atropine (dry secretions) + Short-acting barbiturate (Methohexital anesthesia) + Succinylcholine (muscle relaxant)",
             "Supportive therapy: Non-directive; empathy, unconditional positive regard; Rogers client-centered"],
        ]
    ))
    story.append(sp(4))
    story.append(key_box("ECT: DOC for Catatonic Schizophrenia + Severe Suicidal Depression + Pregnant patient with severe depression (safe in pregnancy)"))
    story.append(PageBreak())

# ─── TOPIC: ONE-LINERS & HIGH YIELD ─────────────────────────────────────────

def oneliners_section(story):
    story.append(section_header("16. HIGH-YIELD ONE-LINERS & NEET CLASSICS", C_ORANGE))
    story.append(sp(6))

    oneliners = [
        "1. De Clérambault syndrome = Erotomania (delusion that famous person loves you) - type of delusional disorder",
        "2. Capgras syndrome = Familiar person replaced by impostor (reduplicative paramnesia) - fronto-temporal or right hemisphere lesion",
        "3. Cotard's syndrome = Nihilistic delusion (patient believes they are dead or organs missing) - severe depression",
        "4. Fregoli syndrome = Unfamiliar person is actually familiar person in disguise (opposite of Capgras)",
        "5. Ganser syndrome = Approximate answers (Vorbeireden) - dissociative; prison inmates, malingering differential",
        "6. Othello syndrome = Morbid jealousy / Pathological jealousy; delusion of infidelity",
        "7. Ekbom syndrome = Delusional parasitosis / Formication - insects crawling under skin",
        "8. Folie à deux = Shared delusion between two people (induced delusional disorder) - separate them!",
        "9. Kluver-Bucy syndrome = Bilateral temporal lobe damage: Hypersexuality + Hyperorality + Visual agnosia + Flat affect + Docility",
        "10. Wendigo psychosis = Cannibalistic delusion; cultural-bound in Algonquian tribes",
        "11. Latah = Hyperstartle + echolalia + echopraxia (Malaysia)",
        "12. Amok = Dissociative fury/running amok (Malaysia)",
        "13. Koro = Fear of penis retracting into abdomen (Southeast Asia)",
        "14. Dhat syndrome = Semen loss anxiety (South Asia)",
        "15. Hwa-Byung = Suppressed anger syndrome (Korea) - somatic symptoms",
        "16. Susto = Fright sickness with soul loss (Latin America)",
        "17. Windshield test = Pseudodementia (depression) vs dementia: In depression, patient says 'I don't know'; in dementia, patient confabulates",
        "18. Double depression = MDD superimposed on Dysthymia (PDD)",
        "19. First-rank symptoms of schizophrenia (Schneider): Thought echo, insertion, withdrawal, broadcasting; made acts/impulses/feelings; delusional perception; third-person commentary hallucinations",
        "20. Hallucinations: Auditory (schizophrenia), Visual (organic/LSD/Delirium), Olfactory (TLE/depression), Gustatory, Tactile (cocaine bugs/delirium)",
        "21. Tricyclic antidepressants in overdose: 3 Cs - Cardiac toxicity (QRS widening), Coma, Convulsions. Treat with IV Sodium bicarbonate",
        "22. Most common side effect of SSRIs = Sexual dysfunction (anorgasmia/ejaculation delay). Switch to Bupropion or Mirtazapine if problematic",
        "23. SSRI discontinuation syndrome: FINISH mnemonic - Flu-like, Insomnia, Nausea, Imbalance, Sensory disturbances (electric shocks), Hyperarousal",
        "24. Lithium toxic > 1.5 mEq/L; Emergency > 2.0 mEq/L → hemodialysis. Thyroid/kidney monitoring every 6 months",
        "25. Agranulocytosis monitoring for Clozapine: Weekly WBC x 6 months → Every 2 weeks x 6 months → Monthly. Stop if ANC <1000/mm3",
        "26. Methadone: Long-acting opioid; QTc prolongation; drug-drug interactions; prevents withdrawal; requires daily clinic attendance",
        "27. Buprenorphine ceiling effect on respiratory depression (partial agonist) makes it safer than methadone in overdose",
        "28. Disulfiram (Antabuse): Inhibits aldehyde dehydrogenase → acetaldehyde accumulates → flushing, vomiting, hypotension with alcohol",
        "29. Motivational Interviewing: Non-confrontational, client-centered counseling for behavior change; OARS: Open questions, Affirmation, Reflective listening, Summary",
        "30. Defense Mechanisms: Mature (humor, sublimation, altruism, suppression) → Neurotic (repression, intellectualization, rationalization, displacement) → Immature (projection, splitting, acting out, denial) → Psychotic (distortion, denial of external reality)",
        "31. Splitting = BPD hallmark; person is all good or all bad (black/white thinking). Tx: DBT",
        "32. Conversion Disorder: La belle indifference (lack of concern about symptoms); glove-and-stocking anesthesia; non-anatomical distribution; under stress",
        "33. Illness Anxiety Disorder (Hypochondriasis): Fear of having serious illness despite reassurance; excessive health-related behaviors or avoidance",
        "34. Factitious Disorder (Munchausen): Intentional feigning of symptoms for sick role (internal motivation). FD by proxy = perpetrated on child by caregiver",
        "35. Malingering: Intentional feigning for external gain (money, avoiding legal issues). External motivation differentiates from factitious",
    ]

    for ol in oneliners:
        story.append(Paragraph(ol, ONE_LINER))
        story.append(sp(1))

    story.append(sp(6))
    story.append(section_header("17. RAPID-FIRE DRUG MNEMONICS", C_PURPLE))
    story.append(sp(6))

    story.append(mnemonic_box(
        "SSRI Memory",
        "Fluoxetine <b>F</b>at (long half-life 2-6 days, no discontinuation syndrome). "
        "Paroxetine = <b>P</b>regnancy risk (neonatal adaptation syndrome), most anticholinergic SSRI, highest discontinuation syndrome. "
        "Sertraline = <b>S</b>afest in pregnancy (preferred). "
        "Fluvoxamine = OCD + social anxiety. Citalopram/Escitalopram = most selective, highest QTc risk"
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "WIRES",
        "Antidepressants causing WEIGHT GAIN: <b>W</b>orse offenders: Mirtazapine >> Paroxetine > TCAs > MAOIs. "
        "Weight NEUTRAL: Sertraline, Fluoxetine. Weight LOSS: <b>Bupropion</b> (smoking cessation), Fluoxetine (early)"
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "Prolactin Elevation",
        "Antipsychotics raising prolactin most: <b>Risperidone > Haloperidol > Amisulpride</b>. "
        "Least/no prolactin rise: Clozapine, Quetiapine, Aripiprazole (partial agonist actually LOWERS prolactin if high). "
        "Symptoms of hyperprolactinemia: Galactorrhea, amenorrhea, gynecomastia, sexual dysfunction, osteoporosis"
    ))
    story.append(sp(4))
    story.append(mnemonic_box(
        "QTc Prolongation",
        "Psychiatric drugs with HIGH QTc risk: Thioridazine (highest!) > Ziprasidone > Haloperidol > Pimozide > Citalopram (high dose) > Methadone. "
        "Avoid combinations. Baseline ECG before starting"
    ))
    story.append(PageBreak())

# ─── LAST PAGE: FLOWCHART SUMMARIES ─────────────────────────────────────────

def flowcharts_section(story):
    story.append(section_header("18. CLINICAL FLOWCHARTS — DECISION ALGORITHMS", C_TEAL))
    story.append(sp(8))

    story.append(Paragraph("Approach to Psychosis", H3))
    story.append(flowchart_box([
        "Patient presents with Psychosis (delusions / hallucinations / disorganized behavior)",
        "STEP 1: Rule out ORGANIC causes (delirium, medical illness, drugs, toxins, metabolic) → Brain imaging, blood tests, urine toxicology",
        "STEP 2: Is there a mood episode (depression/mania) accounting for most of illness? → Consider MOOD DISORDER WITH PSYCHOSIS",
        "STEP 3: Has psychosis lasted <1 month? → BRIEF PSYCHOTIC DISORDER. 1-6 months? → SCHIZOPHRENIFORM",
        "STEP 4: Is there a mood episode ≥half the total duration AND ≥2 weeks psychosis without mood sx? → SCHIZOAFFECTIVE DISORDER",
        "STEP 5: Meets 6-month duration + 2 criteria? → SCHIZOPHRENIA. Non-bizarre delusion only + intact function? → DELUSIONAL DISORDER",
        "TREATMENT: Antipsychotic (typical or atypical) + Psychosocial intervention + Monitor response"
    ], "Psychosis Algorithm", color=C_NAVY))

    story.append(sp(12))

    story.append(Paragraph("Approach to Depression Treatment", H3))
    story.append(flowchart_box([
        "Confirm MDD diagnosis (SIGECAPS ≥5 sx ≥2 weeks; rule out bipolar)",
        "STEP 1 (Mild-Moderate): Psychotherapy (CBT, IPT) ± SSRI. Educate patient: 2-4 weeks to see effect",
        "STEP 2 (No response after 4-8 weeks at adequate dose): Switch SSRI or augment (add bupropion, lithium, atypical AP, T3)",
        "STEP 3 (2nd antidepressant fails): Consider SNRI, TCA, MAOI, or MAOI + SSRI NEVER (serotonin syndrome!)",
        "STEP 4 (Treatment-Resistant Depression / TRD): ECT (most effective), Ketamine/Esketamine (intranasal, rapid), TMS, MAOIs",
        "Maintenance: Continue antidepressant 1 year after 1st episode, 2+ years after 2nd, LIFETIME after 3rd episode"
    ], "Depression Algorithm", color=C_PURPLE))

    story.append(sp(8))
    story.append(key_box("Remember: Esketamine (Spravato) nasal spray = 1st FDA-approved ketamine derivative for treatment-resistant depression and MDD with suicidal ideation"))
    story.append(PageBreak())

# ─── FINAL PAGE: QUICK REFERENCE CARDS ──────────────────────────────────────

def quick_ref_section(story):
    story.append(section_header("19. EXAMINATION QUICK-REFERENCE CARDS", C_NAVY))
    story.append(sp(6))

    story.append(Paragraph("Rating Scales (NEET Favorites)", H3))
    story.append(multi_col_table(
        ["Scale", "Measures", "Key Feature"],
        [
            ["PANSS", "Positive & Negative Syndrome Scale", "Schizophrenia severity (30 items: 7 positive, 7 negative, 16 general)"],
            ["BPRS", "Brief Psychiatric Rating Scale", "18 items; quick overall psychopathology assessment"],
            ["HDRS/HAM-D", "Hamilton Depression Rating Scale", "Clinician-rated; 17/21 items; depression severity"],
            ["MADRS", "Montgomery-Asberg Depression Rating Scale", "10 items; clinician-rated; sensitive to change; use in drug trials"],
            ["YMRS", "Young Mania Rating Scale", "11 items; clinician-rated; mania severity"],
            ["GAF", "Global Assessment of Functioning", "0-100 scale; overall psychological/social/occupational functioning"],
            ["CGI", "Clinical Global Impression", "Severity + improvement; simple 7-point scales"],
            ["BDI", "Beck Depression Inventory", "Self-rated; 21 items; depression screening"],
            ["PHQ-9", "Patient Health Questionnaire-9", "Primary care depression screening; ≥10 = moderate depression"],
            ["AUDIT", "Alcohol Use Disorders Identification Test", "10 items; alcohol screening; ≥8 = hazardous use"],
            ["CAGE", "CAGE Questionnaire", "4 items for alcohol: Cut down, Annoyed, Guilty, Eye-opener; ≥2 = problematic"],
            ["MMSE", "Mini-Mental State Examination", "Cognitive screening; max 30; ≤23 = cognitive impairment"],
            ["MoCA", "Montreal Cognitive Assessment", "More sensitive than MMSE for MCI; max 30; ≤25 = MCI"],
            ["CDRS-R", "Children's Depression Rating Scale-Revised", "Children aged 6-12; depression severity"],
        ],
        [18*mm, 55*mm, 97*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Critical Drug Monitoring Summary", H3))
    story.append(multi_col_table(
        ["Drug", "Must Monitor", "Stop if"],
        [
            ["Clozapine", "WBC + ANC (weekly → biweekly → monthly)", "ANC <1000/mm3 (agranulocytosis)"],
            ["Lithium", "Serum Li level, TFTs, renal function (BUN/Cr), ECG", "Level >2 mEq/L or renal failure"],
            ["Valproate", "LFTs, CBC (platelets), serum level, ammonia", "Severe hepatotoxicity, pancreatitis, thrombocytopenia"],
            ["Carbamazepine", "CBC, Na, serum level, LFTs", "Agranulocytosis, aplastic anemia, SIADH"],
            ["TCAs", "ECG (QTc), BP (orthostatic)", "QRS >100ms, hypotension"],
            ["MAOIs", "BP monitoring", "Hypertensive crisis (tyramine exposure)"],
        ],
        [28*mm, 65*mm, 77*mm]
    ))
    story.append(sp(6))

    story.append(Paragraph("Teratogenicity Summary", H3))
    story.append(multi_col_table(
        ["Drug", "Teratogenic Risk", "Use in Pregnancy"],
        [
            ["Lithium", "Ebstein anomaly (tricuspid valve; rare)", "Use with caution; 1st trimester highest risk; benefit > risk in severe bipolar"],
            ["Valproate", "Neural tube defects (spina bifida) 1-2%, craniofacial, cardiac", "AVOID; use folic acid 5mg if unavoidable"],
            ["Carbamazepine", "Neural tube defects, craniofacial, cardiac", "AVOID in 1st trimester; folic acid supplementation"],
            ["SSRIs (Paroxetine)", "Cardiac defects (VSD) with Paroxetine; neonatal adaptation syndrome", "AVOID Paroxetine; Sertraline preferred in pregnancy"],
            ["Benzodiazepines", "Floppy infant, cleft palate (controversial)", "AVOID; use if absolutely necessary with risk counseling"],
            ["ECT", "No known teratogenic risk", "Safest option for severe psychosis/depression in pregnancy"],
        ],
        [28*mm, 60*mm, 82*mm]
    ))
    story.append(sp(6))
    story.append(key_box("Pregnancy safe antidepressant = Sertraline (most studied). Safest antipsychotic = Haloperidol (most data). ECT = safest for severe conditions in pregnancy"))

# ─── BUILD DOCUMENT ──────────────────────────────────────────────────────────

def build_pdf():
    doc = SimpleDocTemplate(
        OUTPUT_PATH,
        pagesize=A4,
        rightMargin=20*mm,
        leftMargin=20*mm,
        topMargin=20*mm,
        bottomMargin=20*mm,
    )

    story = []
    cover_page(story)
    neuro_section(story)
    schizophrenia_section(story)
    mood_section(story)
    anxiety_section(story)
    trauma_section(story)
    personality_section(story)
    antipsychotic_section(story)
    antidepressant_section(story)
    substance_section(story)
    sleep_section(story)
    child_section(story)
    dementia_section(story)
    forensic_section(story)
    flowcharts_section(story)
    quick_ref_section(story)

    doc.build(story)
    print(f"PDF saved to: {OUTPUT_PATH}")
    import os
    size = os.path.getsize(OUTPUT_PATH) / 1024
    print(f"File size: {size:.1f} KB")

if __name__ == "__main__":
    build_pdf()
Running Command

cd /tmp/workspace/psychiatry-neet-pdf && python generate_pdf.py 2>&1

Running Command

python3 -c " from pypdf import PdfReader reader = PdfReader('/tmp/workspace/psychiatry-neet-pdf/Psychiatry_NEET_PG_AtAGlance.pdf') print(f'Total pages: {len(reader.pages)}') print('First page text sample:') print(reader.pages[0].extract_text()[:300]) "

Your Psychiatry NEET PG - At a Glance PDF is ready!

Psychiatry NEET PG AtAGlance

PDF Document · PDF


What's inside (16 pages, A4):

#SectionHighlights
1Neurotransmitters & ReceptorsFull DA pathways table, MATIN mnemonic, dopamine hypothesis
2Schizophrenia SpectrumDSM-5 DHNBB mnemonic, FRS Schneider's ABCDE, good/poor prognosis table, spectrum comparison
3Mood DisordersSIGECAPS for depression, DIG FAST for mania, full spectrum table (MDD/BPI/BPII/Cyclothymia), postpartum triad
4Anxiety & OCDGAD/Panic/Social/Phobia comparison, STUDENTS FEAR mnemonic for panic, OCD vs OCPD
5Trauma & PTSD4-criterion PTSD flowchart, ASD vs PTSD vs Adjustment disorder
6Personality DisordersAll 10 PDs in cluster A-B-C table, MAD-BAD-SAD mnemonic, BPD/DBT
7AntipsychoticsAll typical + atypical drugs with unique SEs, EPS timing + treatment table, NMS key box
8Antidepressants & Mood StabilizersAll classes (SSRI/SNRI/TCA/MAOI/Mirtazapine/Bupropion), Lithium/Valproate/Carbamazepine monitoring
9Substance UseAlcohol/Opioid/Cocaine/BZD/PCP comparison, Wernicke-Korsakoff key point
10Sleep DisordersNarcolepsy CHESS mnemonic, REM vs NREM parasomnias, CPAP for OSA
11Child PsychiatryADHD, ASD, ID, Tourette, Enuresis - full table with treatments
12DementiaAlzheimer/Vascular/DLB/FTD comparison, Delirium vs Dementia table
13Forensic Psychiatry + ECTMcNaughton, Tarasoff, CBT/DBT/Psychoanalysis summary
1435 High-Yield One-LinersEponymous syndromes, culture-bound, drug SE classics
15Clinical FlowchartsPsychosis algorithm, Depression treatment stepwise
16Quick Reference Cards14 rating scales, drug monitoring table, teratogenicity guide
This is a shared conversation. Sign in to Orris to start your own chat.