assessment of psychiatric disorders in medically ill inpatients
python3 << 'EOF' import pdfplumber pdf_path = "/tmp/workspace/attachments/0e0c7250-e824-4764-abe9-d01c4a20b9b2/assessment-of-psychiatric-disorders-in-consultation-liaison.pdf" with pdfplumber.open(pdf_path) as pdf: print(f"Total pages: {len(pdf.pages)}") full_text = "" for i, page in enumerate(pdf.pages): text = page.extract_text() if text: full_text += f"\n\n--- PAGE {i+1} ---\n{text}" print(full_text[:8000]) EOF
python3 << 'EOF' import pdfplumber pdf_path = "/tmp/workspace/attachments/0e0c7250-e824-4764-abe9-d01c4a20b9b2/assessment-of-psychiatric-disorders-in-consultation-liaison.pdf" with pdfplumber.open(pdf_path) as pdf: full_text = "" for i, page in enumerate(pdf.pages): text = page.extract_text() if text: full_text += f"\n\n--- PAGE {i+1} ---\n{text}" # Print pages 3-17 print(full_text[8000:]) EOF
| Focus Area | Details |
|---|---|
| Primary vs. secondary psychiatric disorder | Is the condition due to the medical illness itself, its treatment, or independently comorbid? |
| Psychotropic-medical drug interaction | Do existing psychiatric medications impact the medical treatment? |
| Uncooperative/abnormal ward behavior | Psychiatric disorder vs. bio-psychosocial reaction? |
| Immediate risk of self-harm or harm to others | Always mandatory in every patient |
| Transfer to psychiatry ward | Is the medical setting still appropriate? |
| Medicolegal issues | Suicidal attempt vs. accidental injury; sexual assault; surreptitious medication use |
| Treatment compliance | MDR-TB, ART in HIV |
| Eligibility/motivation assessment | Organ transplantation, gender-affirmation surgery |
| Tool | Purpose |
|---|---|
| BPHQ / PRIME-MD-PHQ | Screens depression, anxiety, panic, somatic symptoms, stress-trauma in one questionnaire |
| BPRS | Gold standard for psychosis, agitation, catatonia, mood, self-harm; 24 items |
| Tool | Use Case |
|---|---|
| PHQ-9 | Gold standard; 9 self-rated items; validated in 11 Indian languages |
| HADS | Hospital-specific; screens both anxiety and depression |
| GDS (Geriatric Depression Scale) | Elderly (not for those with dementia) |
| CPMS | Children aged 4-14 |
| CSDD (Cornell Scale) | Depression in dementia - uses informant interview |
| SADQ (Stroke Aphasic Depression Questionnaire) | Stroke patients with aphasia; rated by caregiver |
| Tool | Use Case |
|---|---|
| GAD-7 | Generalized anxiety disorder |
| PDSR | Panic disorder (awaits Indian translation) |
| HADS anxiety subscale | Hospital setting |
| Tool | Use Case |
|---|---|
| PHQ-15 | 15-item self-rated somatic symptom severity |
| SSS-8 | 8-item; covers cardiopulmonary, GI, pain, general domains |
| IBQ | Illness Behavior Questionnaire - health-care seeking patterns |
| Tool | Use Case |
|---|---|
| NEECHAM Confusion Scale | Nurses; medical and surgical wards; 10 min |
| CAM-ICU | ICU delirium screening; verbal and nonverbal versions |
| RASS (Richmond Agitation Sedation Scale) | ICU arousal assessment |
| Tool | Use Case |
|---|---|
| SSI (Beck's Scale for Suicidal Ideation) | 21-item interviewer-rated; research-standard |
| C-SSRS (Columbia Suicide Severity Rating Scale) | Free; widely used; includes NSSI, ideation intensity, and lethality |
| Tool | Use Case |
|---|---|
| MMSE | Gold standard for 5 decades; Hindi version (HMSE) available |
| MoCA | More sensitive for mild impairment; domain-specific; Hindi (H-MoCA) available |
| NIMHANS / PGI neuropsychological batteries | Detailed neuropsychological assessment |
| NPI (Neuropsychiatric Inventory) | Behavioral and psychological symptoms of dementia (BPSD) |
| Tool | Use Case |
|---|---|
| AUDIT | WHO-recommended; screens hazardous/harmful use and dependence for alcohol; Hindi validated |
| Tool | Use Case |
|---|---|
| PSS (Perceived Stress Scale) | 10-item; stress over last month |
| CD-RISC (Connor-Davidson Resilience Scale) | Coping and resilience; useful in oncology, transplant, trauma |
| Color | Urgency | Trigger |
|---|---|---|
| Red | Immediate | Violent aggression, weapon possession, active self-destruction |
| Orange | Within 4 hours | Clear suicidal intent, plan, command hallucinations |
| Yellow | Within 24 hours | Suicidal expression without plan; rapidly escalating confusion/psychosis |
| Green | Within 72 hours | Major mood disorder or psychosis without suicidal intent; uncooperative ward behavior |
| Blue | Within 4 weeks | Stable known psychiatric disorder requiring follow-up |
Conceptualization - Communication - Control
Find recent clinical guidelines on consultation-liaison psychiatry assessment
consultation-liaison psychiatry assessment guidelines
consultation-liaison psychiatry clinical practice guidelines 2023 2024 2025 medically ill inpatients
consultation-liaison psychiatry medically ill inpatients
PMID: 33906098
https://www.psychiatrictimes.com/view/anticipating-care-proa…
delirium assessment psychiatric screening medically ill hospital
psychiatric comorbidity screening tools general hospital depression anxiety
PMID: 35491011
PMID: 41310541
PMID: 38757369
| Disorder | Pooled Prevalence in General Hospital Inpatients |
|---|---|
| Major depression | 12-20% |
| Any anxiety disorder | 8% |
| Generalised anxiety disorder | 5% |
| Panic disorder | 3% |
| Delirium | 15% |
| Dementia | 3-63% (broad range across settings) |
| Guide | Year |
|---|---|
| Doing a Consult (assessment structure) | 2024 |
| Delirium | 2025 |
| Catatonia | 2025 |
| Acute Agitation | 2024 |
| Suicide Risk Assessment | 2024 |
| Depression | 2024 |
| Somatic Symptom Disorder | Current |
| Treatment Over Objection | 2025 |
| Perinatal Mental Health | 2025 |
| QTc Prolongation | 2024 |
| Transplant assessment | 2025 |
| Domain | Current Recommendation |
|---|---|
| Service model | Move from referral-only to proactive, population-based assessment |
| Assessment approach | Full biopsychosocial assessment from admission, not added on later |
| Delirium screening (ED) | 4AT (best evidence base); CAM-ICU to rule in; Delirium Triage Screen to rule out |
| Delirium screening (ICU) | CAM-ICU or ICDSC; RASS for sedation/arousal level |
| Delirium screening (wards) | CAM remains reference standard; NEECHAM for nursing use |
| Depression screening | PHQ-9 - validated, multi-language, linked to treatment pathway |
| Anxiety screening | GAD-7 - most evidence in medical inpatient settings |
| Suicide risk (liaison) | Safety planning + structured follow-up; C-SSRS for rating; CBT/DBT for recurrent self-harm |
| Social determinants | Explicitly part of PICLP - SDOH now a required dimension of CL assessment |
| Paediatric liaison | Integrated ward-based services evidence-supported |
can you provide all recent references in vancouver style
Note: References 3, 4, and 5 (HOME Study and related commentaries) are cited as published in Lancet Psychiatry and J Acad Consult Liaison Psychiatry 2024 and are included based on web-sourced citation data; full volume/page details for items 4 and 5 should be verified against the journal directly before submission.
Psychiatric assessment is the cornerstone of Consultation-Liaison (C-L) Psychiatry and forms the basis for accurate diagnosis, appropriate management, and improved patient outcomes. The primary objective of assessment is not merely to establish a psychiatric diagnosis but to determine the aetiology of psychiatric symptoms, identify reversible causes, assess their impact on medical care, and formulate an integrated management plan. (1) Psychiatric assessment in the general hospital setting is dynamic rather than static. Serial bedside assessments are often more informative than a single interview, particularly in patients with delirium, critical illness, or fluctuating cognition. Effective assessment therefore demands close, continuous collaboration with physicians, surgeons, nurses, psychologists, social workers, and other members of the multidisciplinary team. (7) Assessment of a medically ill in-patient is not merely a conventional psychiatric interview or psychiatric clearance. It is an integrated and iterative medical, psychiatric, cognitive and psychosocial assessment aimed at identifying the psychiatric syndrome, understanding its temporal relationship with the medical illness and treatment, identifying reversible causes, assessing risk and capacity, and developing a formulation that guides collaborative management.¹˒² The psychiatrist should consider whether the presentation represents a primary psychiatric disorder, a psychiatric manifestation of medical illness, a medication- or substance-induced syndrome, delirium/neurocognitive dysfunction, a psychological response to illness, or a combination of factors.¹ Assess the patient, the illness, the treatment, the environment and the interaction between them. Assessment in a medically ill in-patient is not a conventional psychiatric interview or a simple “psychiatric clearance.” It is an integrated, iterative medical, psychiatric, cognitive and psychosocial assessment that asks: what syndrome is present, why has it occurred now, is it primary or secondary to illness/treatment/substances, what immediate risks are present, and what information is needed to guide collaborative management.1,2 A CL psychiatrist should preserve both a psychiatric formulation and a medical differential. New, late-onset, atypical, fluctuating or neurologically accompanied symptoms require particular caution. Assessment must be repeated when physiology, cognition or treatment changes.1-3 combine these and give me assessment introduction
Note on references: The superscript numbers correspond to those in your source material (¹˒² = Ghosal & Ray 2022 / standard CL texts; ⁷ = your reference 7). You can align these to your full reference list as needed.
this is too big to write in exam what is important for gold medal can you provide.
*What syndrome is present? Why now? Is it primary or secondary? What risks exist? What guides management?*¹˒²
Exam tip: Open with the bold definition, state the 5 core questions as a single sentence, list the differential framework as bullet points, and close with the dynamic/serial nature + MDT point. This structure signals depth without wasting words.
Generate a one-page exam checklist for systematic CL assessment
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/
mkdir -p /tmp/workspace/cl-checklist && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.platypus import KeepTogether output_path = "/tmp/workspace/cl-checklist/CL_Assessment_Checklist.pdf" doc = SimpleDocTemplate( output_path, pagesize=A4, topMargin=10*mm, bottomMargin=10*mm, leftMargin=12*mm, rightMargin=12*mm ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle( 'Title', parent=styles['Normal'], fontSize=13, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#1a3a5c'), spaceAfter=1*mm ) subtitle_style = ParagraphStyle( 'Subtitle', parent=styles['Normal'], fontSize=7.5, fontName='Helvetica-Oblique', alignment=TA_CENTER, textColor=colors.HexColor('#444444'), spaceAfter=3*mm ) section_style = ParagraphStyle( 'Section', parent=styles['Normal'], fontSize=8, fontName='Helvetica-Bold', textColor=colors.white, alignment=TA_LEFT, leftPadding=3, rightPadding=3, topPadding=2, bottomPadding=2, ) item_style = ParagraphStyle( 'Item', parent=styles['Normal'], fontSize=7.2, fontName='Helvetica', textColor=colors.HexColor('#1a1a1a'), leading=10, leftPadding=0 ) note_style = ParagraphStyle( 'Note', parent=styles['Normal'], fontSize=6.5, fontName='Helvetica-Oblique', textColor=colors.HexColor('#555555'), alignment=TA_CENTER, spaceAfter=0 ) HDR = colors.HexColor('#1a3a5c') HDR2 = colors.HexColor('#2e6da4') ALT = colors.HexColor('#eaf2fb') WHITE = colors.white TICK = '☐ ' def section_row(text, color=HDR): return [Paragraph(f'<b>{text}</b>', ParagraphStyle( 'sh', parent=styles['Normal'], fontSize=7.8, fontName='Helvetica-Bold', textColor=WHITE, leftPadding=4 ))] def item_row(text, shade=False): return [Paragraph(f'{TICK}{text}', item_style)] def make_section_table(header, items, header_color=HDR, alt=True): data = [[Paragraph(f' {header}', ParagraphStyle( 'sh', parent=styles['Normal'], fontSize=8, fontName='Helvetica-Bold', textColor=WHITE ))]] for i, item in enumerate(items): data.append([Paragraph(f' {TICK}{item}', item_style)]) col_width = 186*mm t = Table(data, colWidths=[col_width]) style_cmds = [ ('BACKGROUND', (0,0), (-1,0), header_color), ('TOPPADDING', (0,0), (-1,0), 3), ('BOTTOMPADDING', (0,0), (-1,0), 3), ('TOPPADDING', (0,1), (-1,-1), 1.5), ('BOTTOMPADDING', (0,1), (-1,-1), 1.5), ('LEFTPADDING', (0,0), (-1,-1), 4), ('RIGHTPADDING', (0,0), (-1,-1), 4), ('LINEBELOW', (0,0), (-1,-1), 0.3, colors.HexColor('#cccccc')), ('GRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cccccc')), ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, ALT]), ] t.setStyle(TableStyle(style_cmds)) return t def make_two_col(left_header, left_items, right_header, right_items, lhc=HDR, rhc=HDR): """Two side-by-side section tables.""" col = 92*mm def build_col(header, items, hcolor): data = [[Paragraph(f' {header}', ParagraphStyle( 'sh', parent=styles['Normal'], fontSize=8, fontName='Helvetica-Bold', textColor=WHITE))]] for item in items: data.append([Paragraph(f' {TICK}{item}', item_style)]) return data, hcolor ld, lhcolor = build_col(left_header, left_items, lhc) rd, rhcolor = build_col(right_header, right_items, rhc) # Equalise row count while len(ld) < len(rd): ld.append([Paragraph('', item_style)]) while len(rd) < len(ld): rd.append([Paragraph('', item_style)]) combined = [[ld[i][0], rd[i][0]] for i in range(len(ld))] t = Table(combined, colWidths=[col, col]) style_cmds = [ ('BACKGROUND', (0,0), (0,0), lhcolor), ('BACKGROUND', (1,0), (1,0), rhcolor), ('TOPPADDING', (0,0), (-1,0), 3), ('BOTTOMPADDING', (0,0), (-1,0), 3), ('TOPPADDING', (0,1), (-1,-1), 1.5), ('BOTTOMPADDING', (0,1), (-1,-1), 1.5), ('LEFTPADDING', (0,0), (-1,-1), 4), ('RIGHTPADDING', (0,0), (-1,-1), 4), ('GRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cccccc')), ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, ALT]), ] t.setStyle(TableStyle(style_cmds)) return t # ── CONTENT ────────────────────────────────────────────────────────────────── story = [] story.append(Paragraph("SYSTEMATIC CONSULTATION-LIAISON PSYCHIATRY ASSESSMENT", title_style)) story.append(Paragraph("One-Page Exam Checklist | C-L Psychiatry | Gold Medal Reference", subtitle_style)) story.append(HRFlowable(width="100%", thickness=1.5, color=HDR, spaceAfter=2*mm)) # ROW 1: Preparatory Phase + 5 Core Questions story.append(make_two_col( "① PREPARATORY PHASE (before seeing patient)", [ "Review current medical diagnosis & treatment chart", "Review nursing observations & duty-doctor notes", "Clarify focus of referral with treating consultant (direct communication)", "Note psychotropic history & drug interactions", "Arrange for family member to be present", "Screen urgency — apply MHTS (Red/Orange/Yellow/Green/Blue)", ], "② FIVE CORE ASSESSMENT QUESTIONS", [ "What psychiatric SYNDROME is present?", "WHY has it occurred NOW? (temporal relationship)", "Is it PRIMARY or SECONDARY (medical/drug/substance)?", "What IMMEDIATE RISKS exist? (self-harm, harm to others)", "What guides COLLABORATIVE MANAGEMENT?", "Is reassessment needed? (physiology/cognition/Rx changed)", ], lhc=HDR, rhc=HDR2 )) story.append(Spacer(1, 2*mm)) # ROW 2: Interview + MSE story.append(make_two_col( "③ PSYCHIATRIC INTERVIEW", [ "Introduction — disclose identity gradually, build rapport", "Open narrative: current distress & medical experience", "Vegetative symptoms: sleep, appetite, energy", "Internalising: anxiety, somatic distress, low mood", "Stressors — recent, ongoing; bereavement, financial", "Self-injury history (patient + family)", "Externalising: agitation, suspicion, hallucinatory Bx", "Cognitive Hx — Memory-LAPSE mnemonic (elderly)", "Substance use — type, quantity, last use, withdrawal Sx", "Personality, developmental, cultural background", ], "④ MENTAL STATUS EXAMINATION (MSE)", [ "Consciousness, attention, orientation (delirium first)", "Rule out catatonia — tone, posturing, waxy flexibility", "Speech & thought organisation", "Affect — depression, anxiety, la-belle-indifférence", "Somatic distress / secondary gain / health-seeking Bx", "Elevated/irritable mood → mania screen", "Delusions & hallucinations (if guarded/hostile)", "Suicidal & homicidal ideation — EVERY patient", "Brief cognitive screen: MMSE / MoCA / CAM", "Insight into medical AND psychiatric illness", ], lhc=HDR2, rhc=HDR )) story.append(Spacer(1, 2*mm)) # ROW 3: Differential Framework + Screening Tools story.append(make_two_col( "⑤ AETIOLOGICAL DIFFERENTIAL FRAMEWORK", [ "Primary psychiatric disorder", "Psychiatric manifestation of medical illness", "Medication- / substance-induced syndrome", "Delirium / neurocognitive dysfunction", "Psychological response to illness (adjustment)", "Combination — most common in medically ill", "⚠ Organicity red flags: late-onset, atypical, fluctuating,", " neurological signs → keep medical differential open", ], "⑥ KEY SCREENING TOOLS (by domain)", [ "Delirium (ward): NEECHAM | (ICU): CAM-ICU + RASS", "Delirium (ED): 4AT (best evidence, 2024 meta-analysis)", "Depression: PHQ-9 | HADS | CSDD (dementia) | SADQ (aphasia)", "Anxiety: GAD-7 | HADS-A", "Broad psychopathology: BPHQ | BPRS (psychosis/agitation)", "Somatic symptoms: PHQ-15 | SSS-8 | IBQ", "Suicide risk: C-SSRS (free) | SSI (Beck)", "Cognition: MMSE / MoCA (Hindi: H-MoCA) | NPI (BPSD)", "Alcohol: AUDIT | Stress/Resilience: PSS / CD-RISC", "Children: CPMS | Elderly: GDS", ], lhc=HDR, rhc=HDR2 )) story.append(Spacer(1, 2*mm)) # ROW 4: Risk Assessment + Formulation story.append(make_two_col( "⑦ RISK ASSESSMENT", [ "Self-harm: intent, plan, lethality, means, previous attempts", "Classify: NSSI vs. suicidal SI", "Hopelessness / inescapability / desperation triad", "Command hallucinations, impulsivity, recent aggression", "Harm to others: possession of weapon, threats, disinhibition", "Capacity / consent — document clearly", "Need for transfer to psychiatry ward?", "Medicolegal issues: POCSO, JJB, testamentary capacity", ], "⑧ FORMULATION & COMMUNICATION", [ "Provisional Dx (DSM/ICD) + probable aetiology", "Causal/treatment interaction with medical illness", "Biopsychosocial background relevant to management", "Immediate risk & ward transfer decision", "Written notes + DIRECT telephonic communication to team", "Transparent explanation to patient & family (no discrepancy)", "Follow-up: within 1 week if pharmacotherapy started", "Post-discharge: psychiatry OPD follow-up plan", ], lhc=HDR2, rhc=HDR )) story.append(Spacer(1, 2*mm)) story.append(HRFlowable(width="100%", thickness=0.8, color=HDR, spaceAfter=1.5*mm)) # Bottom banner: The 3Cs + setting-specific reminders banner_data = [[ Paragraph('<b>3 Cs of C-L Psychiatry:</b> Conceptualisation • Communication • Collaboration', ParagraphStyle( 'banner', parent=styles['Normal'], fontSize=7.5, fontName='Helvetica-Bold', textColor=WHITE, alignment=TA_CENTER)), Paragraph('<b>Setting reminders:</b> ER → MHTS triage first | ICU → rule out NCSE | Wards → serial MSE | Board → organicity + malingering', ParagraphStyle( 'banner2', parent=styles['Normal'], fontSize=7, fontName='Helvetica', textColor=WHITE, alignment=TA_CENTER)), ]] banner_table = Table(banner_data, colWidths=[90*mm, 96*mm]) banner_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (0,0), HDR), ('BACKGROUND', (1,0), (1,0), HDR2), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), ('RIGHTPADDING', (0,0), (-1,-1), 5), ])) story.append(banner_table) story.append(Spacer(1, 1*mm)) story.append(Paragraph( "Ghosal & Ray, Indian J Psychiatry 2022 | van Niekerk et al. J Acad CLP 2022 | Carpenter et al. Acad Emerg Med 2024 | Quinlivan et al. BMC Psychiatry 2025 | ACLP How-To Guides 2024–25", note_style)) doc.build(story) print("PDF created:", output_path) PYEOF
CL Assessment Checklist
PDF Document · PDF
| Section | Content |
|---|---|
| ① Preparatory Phase | Chart review, MHTS triage, referral focus, family |
| ② 5 Core Questions | Syndrome / Why now / Primary vs. secondary / Risks / Management |
| ③ Psychiatric Interview | Sequence from open narrative → vegetative → internalising → externalising → cognitive → substance |
| ④ MSE | Consciousness first → catatonia → speech → affect → psychosis → suicidality → cognition → insight |
| ⑤ Aetiological Differential | 6-point framework + organicity red flags |
| ⑥ Screening Tools | By domain - delirium, depression, anxiety, cognition, suicide, substance, somatic |
| ⑦ Risk Assessment | SI/NSSI, hopelessness triad, harm to others, capacity, medicolegal |
| ⑧ Formulation & Communication | DSM/ICD Dx, aetiology, written notes, telephonic liaison, follow-up plan |
2.1 Principles and objectives • Ensure immediate medical and psychiatric safety. • Clarify the reason, urgency and specific clinical question for referral. • Differentiate primary psychiatric illness from medical, neurological, medication-induced and substance-related syndromes. • Identify delirium and cognitive impairment early. • Assess suicide/self-harm, violence, vulnerability, treatment refusal and risk to medical care. • Assess decision-making capacity for the specific decision when relevant. • Understand the patient's baseline cognition, personality and functioning. • Develop a biopsychosocial and etiological formulation. • Communicate an actionable plan to the treating team and arrange reassessment. 2.1 Principles and objectives of assessment • Ensure medical and psychiatric safety. • Clarify the reason and urgency of referral. • Establish the nature, severity, chronology and functional impact of symptoms. • Differentiate primary psychiatric illness from medical, neurological, pharmacological and substance-related causes. • Identify delirium and cognitive impairment. • Assess suicide/self-harm, violence, vulnerability and risk to medical treatment. • Assess decision-making capacity when relevant. • Obtain collateral information and establish premorbid functioning. • Develop a biopsychosocial and etiological formulation. • Communicate an actionable plan to the treating team and arrange reassessment/follow-up. 2.1 Principles and Objectives of Psychiatric Assessment The assessment of psychiatric disorders in medically ill patients differs fundamentally from routine psychiatric evaluation because the psychiatrist must determine why psychiatric symptoms have developed, whether they are reversible, and how they influence ongoing medical care. A systematic, hypothesis-driven approach minimizes diagnostic errors, facilitates communication with the treating team, and ensures timely recognition of psychiatric disorders that adversely affect medical outcomes. Principles of Assessment The following principles should guide every psychiatric assessment in the medical setting: 1. Think Organic First : Every new-onset behavioural, emotional, or cognitive disturbance should be considered secondary to a medical or neurological disorder until proven otherwise. Acute confusion, altered consciousness, hallucinations, or personality change warrant immediate evaluation for delirium, metabolic disturbances, drug toxicity, infection, or structural brain disease before a primary psychiatric diagnosis is entertained. (7) 2. Ensure Medical Stability : Stabilization of airway, breathing, circulation, and other life-threatening medical conditions always takes precedence over detailed psychiatric assessment. Psychiatric evaluation should never delay emergency medical treatment. (1) 3. Adopt a Biopsychosocial Approach : Psychiatric symptoms should always be interpreted within the broader context of the patient's physical illness, personality, coping mechanisms, family environment, cultural background, and social circumstances. Biological disease, psychological responses, and social determinants frequently interact to produce complex clinical presentations. (4) 4. Establish the Chronology : Determining the temporal relationship between psychiatric symptoms, medical illness, surgery, medication exposure, and substance use is often the most valuable diagnostic tool in Consultation-Liaison Psychiatry. The sequence of events frequently distinguishes primary psychiatric disorders from secondary neuropsychiatric syndromes. (7) "Timeline is often the diagnosis." 5. Review Medications Systematically : Drug-induced psychiatric disorders are common in hospitalized patients. Every assessment should include a careful review of prescribed medications, recent dose changes, recently discontinued drugs, over-the-counter preparations, herbal remedies, and potential drug interactions. (7) 6. Obtain Collateral Information: Information obtained from family members, caregivers, nursing staff, and treating physicians is often indispensable, particularly in patients with delirium, dementia, psychosis, impaired insight, or altered consciousness. Collateral history helps establish the patient's baseline cognitive function, personality, and behaviour, thereby improving diagnostic accuracy. (7) 7. Perform Serial Assessments :Psychiatric symptoms in medically ill patients frequently fluctuate over time. Repeated bedside assessments allow recognition of evolving delirium, medication-related adverse effects, emerging neurological deficits, and changes in decision-making capacity. (7) 8. Work Collaboratively. Effective assessment requires continuous communication with the multidisciplinary team to ensure that psychiatric recommendations are integrated into the overall medical management plan. (4) Objectives of Psychiatric Assessment A comprehensive psychiatric assessment aims to: • Establish the nature, severity, chronology, and functional impact of psychiatric symptoms. • Differentiate primary psychiatric disorders from psychiatric manifestations of general medical conditions. • Identify medication-induced and substance-related psychiatric syndromes. • Detect delirium and other neurocognitive disorders at an early stage. • Assess cognitive function, decision-making capacity, suicide risk, and behavioural disturbances. • Identify psychosocial stressors, coping mechanisms, caregiver burden, and available support systems. • Recognize factors influencing adherence to medical treatment and rehabilitation. • Formulate an integrated biopsychosocial diagnosis and individualized management plan in collaboration with the treating team. (1,7) Figure 2.1. Principles of Psychiatric Assessment in Consultation-Liaison Psychiatry Psychiatric Symptoms │ ▼ Is the patient medically stable? │ ┌─────────────────┴─────────────────┐ │ │ No Yes │ │ Stabilize medical illness Comprehensive Assessment │ │ └─────────────────┬─────────────────┘ ▼ Think Organic • Review Medications ▼ Biopsychosocial Clinical Assessment ▼ Integrated Diagnostic Formulation ▼ Collaborative Multidisciplinary Management go through this and create one rich output for my medal exam which can be produced in 5mins.
| # | Principle | Key Point |
|---|---|---|
| 1 | Think Organic First | Every new-onset behavioural, emotional, or cognitive disturbance is secondary to medical/neurological cause until proven otherwise. Confusion, altered consciousness, hallucinations → rule out delirium, metabolic disturbance, drug toxicity, infection, structural brain disease first.⁷ |
| 2 | Organic stability (Medical Stability) | Airway, breathing, circulation first. Psychiatric assessment never delays emergency medical treatment.¹ |
| 3 | Adopt Biopsychosocial Approach | Biological disease + psychological response + social determinants interact to produce complex presentations. Never interpret symptoms in isolation.⁴ |
| 4 | Build a Timeline (Chronology) | Temporal relationship between symptoms, medical illness, surgery, medications, and substances is often the single most valuable diagnostic tool. *"Timeline is often the diagnosis."*⁷ |
| 5 | Check Medications Systematically | Drug-induced psychiatric disorders are common in hospital. Review prescribed drugs, recent dose changes, stopped drugs, OTC preparations, herbal remedies, interactions.⁷ |
| 6 | Seek Collateral Information | Family, nurses, treating physicians - indispensable in delirium, dementia, psychosis, impaired insight. Establishes baseline cognition, personality, behaviour.⁷ |
| 7 | Watch Serially (Repeat Assessments) | Psychiatric symptoms fluctuate. Serial assessments detect evolving delirium, drug effects, neurological deficits, and capacity changes.⁷ |
| 8 | Collaborate with MDT | Psychiatric recommendations must be integrated into the overall medical management plan through continuous communication.⁴ |
Psychiatric Symptoms in a Medically Ill Patient
│
▼
Is the patient medically stable?
┌───────────┴───────────┐
NO YES
│ │
Stabilise medical illness Comprehensive Assessment
└───────────┬───────────┘
▼
Think Organic • Review Medications
▼
Biopsychosocial Clinical Assessment
(History + MSE + Collateral + Serial)
▼
Integrated Diagnostic Formulation
▼
Collaborative Multidisciplinary Management
CL psychiatric assessment is hypothesis-driven and iterative. Eight core principles guide it - "TO ABC SWC" (Think organic, Medical stability, Biopsychosocial, Chronology, Check medications, Seek collateral, Watch serially, Collaborate with MDT). The objectives span syndromic identification, aetiological differentiation, risk assessment, capacity assessment, and a collaborative biopsychosocial formulation. The first decision is always: is the patient stable? If yes - assess comprehensively. If no - stabilise first, assess second. A CL psychiatrist maintains both a psychiatric formulation and a medical differential simultaneously, never closing either prematurely.
Exam write-up structure: Introduction (2 lines) → Principles as numbered table with 1-line key point each → Objectives as numbered list → Decision pathway as a 5-step flow → closing summary sentence. This covers everything an examiner looks for and takes under 5 minutes.
too big for 5mins
| Principle | One-liner | |
|---|---|---|
| T | Think organic first | All new behavioural/cognitive symptoms = medical until proven otherwise |
| O | stablise (medical stability) | ABC before psychiatry - never delay emergency care |
| A | Adopt biopsychosocial approach | Biology + psychology + social context always interact |
| B | Build a timeline | "Timeline is often the diagnosis" |
| C | Check medications | Prescribed, stopped, OTC, herbal, interactions |
| S | Seek collateral | Family/nurses essential in delirium, dementia, psychosis |
| W | Watch serially | Symptoms fluctuate - repeat assessments are mandatory |
| C | Collaborate with MDT | Integrate psychiatric plan into medical management |
Symptoms → Stable? → NO: Stabilise first
→ YES: Think organic + Check meds
↓
Biopsychosocial Assessment
↓
Formulation → MDT Plan
Assessment of a medically ill patient is an integrated, iterative process that begins with review of the medical context and referral question, ensures physiological and psychiatric safety, establishes the chronology of symptoms and baseline functioning, obtains collateral information, performs a CL-adapted mental status and cognitive examination, actively identifies delirium and other reversible medical, neurological, pharmacological and substance-related causes, assesses risk and decision-making capacity, incorporates psychosocial and special-population factors, and culminates in a biopsychosocial formulation. The psychiatrist then communicates an actionable plan to the medical team and reassesses as the patient's condition evolves. creat flow chart
mkdir -p /tmp/workspace/cl-checklist && python3 << 'PYEOF' import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.patches as mpatches from matplotlib.patches import FancyBboxPatch, FancyArrowPatch import matplotlib.patheffects as pe fig, ax = plt.subplots(1, 1, figsize=(10, 18)) ax.set_xlim(0, 10) ax.set_ylim(0, 18) ax.axis('off') fig.patch.set_facecolor('#f7fafd') # ── Colour palette ────────────────────────────────────────────────── C_DARK = '#1a3a5c' # dark navy C_MID = '#2e6da4' # medium blue C_LIGHT = '#5ba3d9' # light blue C_GREEN = '#217a3c' # dark green C_LGREEN = '#2ecc71' # light green accent C_RED = '#c0392b' # red C_ORANGE = '#d68910' # amber C_GREY = '#ecf4fb' # very light blue-grey bg C_WHITE = '#ffffff' C_TEXT = '#1a1a1a' def box(ax, x, y, w, h, label, sublabel=None, facecolor=C_MID, textcolor=C_WHITE, fontsize=9.5, subfontsize=7.8, radius=0.25, bold=True, shadow=True): fancy = FancyBboxPatch((x - w/2, y - h/2), w, h, boxstyle=f"round,pad=0.05,rounding_size={radius}", facecolor=facecolor, edgecolor=C_DARK, linewidth=0.9, zorder=3) if shadow: shadow_box = FancyBboxPatch((x - w/2 + 0.05, y - h/2 - 0.06), w, h, boxstyle=f"round,pad=0.05,rounding_size={radius}", facecolor='#bbbbbb', edgecolor='none', linewidth=0, alpha=0.35, zorder=2) ax.add_patch(shadow_box) ax.add_patch(fancy) fw = 'bold' if bold else 'normal' if sublabel: ax.text(x, y + 0.13, label, ha='center', va='center', fontsize=fontsize, color=textcolor, fontweight=fw, zorder=4) ax.text(x, y - 0.17, sublabel, ha='center', va='center', fontsize=subfontsize, color=textcolor, fontstyle='italic', zorder=4) else: ax.text(x, y, label, ha='center', va='center', fontsize=fontsize, color=textcolor, fontweight=fw, zorder=4) def arrow(ax, x, y1, y2, color=C_DARK, lw=1.6): ax.annotate('', xy=(x, y2 + 0.02), xytext=(x, y1 - 0.02), arrowprops=dict(arrowstyle='->', color=color, lw=lw, connectionstyle='arc3,rad=0.0'), zorder=5) def side_note(ax, x, y, text, color=C_GREY, tcolor=C_DARK, fontsize=7.2, w=2.6, h=0.42): fancy = FancyBboxPatch((x, y - h/2), w, h, boxstyle="round,pad=0.04,rounding_size=0.12", facecolor=color, edgecolor=C_MID, linewidth=0.6, zorder=3) ax.add_patch(fancy) ax.text(x + w/2, y, text, ha='center', va='center', fontsize=fontsize, color=tcolor, zorder=4) def dashed_line(ax, x1, y1, x2, y2, color=C_MID): ax.plot([x1, x2], [y1, y2], '--', color=color, lw=0.9, alpha=0.7, zorder=2) # ── TITLE ──────────────────────────────────────────────────────────── ax.text(5, 17.65, 'C-L PSYCHIATRY: SYSTEMATIC ASSESSMENT FLOWCHART', ha='center', va='center', fontsize=11.5, fontweight='bold', color=C_DARK, zorder=6) ax.text(5, 17.3, 'Assessment of the Medically Ill Inpatient — Integrated, Iterative Process', ha='center', va='center', fontsize=8, color='#444444', fontstyle='italic', zorder=6) ax.plot([0.5, 9.5], [17.1, 17.1], color=C_DARK, lw=1.5) # ── STEP 1: Referral ───────────────────────────────────────────────── y1 = 16.5 box(ax, 5, y1, 8.5, 0.58, '① REFERRAL RECEIVED', 'Review medical context • Clarify clinical question • Determine urgency (MHTS triage)', facecolor=C_DARK, fontsize=10) side_note(ax, 7.25, y1, 'MHTS: Red/Orange/Yellow/Green/Blue', C_GREY) arrow(ax, 5, y1 - 0.29, 15.75) # ── STEP 2: Medical Stability ───────────────────────────────────────── y2 = 15.65 box(ax, 5, y2, 8.5, 0.58, '② IS THE PATIENT MEDICALLY STABLE?', 'Airway • Breathing • Circulation • Acute life-threatening conditions', facecolor=C_RED, fontsize=10) # No branch ax.annotate('', xy=(1.5, 14.85), xytext=(1.5, y2 - 0.29), arrowprops=dict(arrowstyle='->', color=C_RED, lw=1.5), zorder=5) side_note(ax, 0.1, 14.6, ' NO → Stabilise first\n Psychiatry waits', color='#fdecea', tcolor=C_RED, fontsize=7, w=2.7, h=0.5) # Yes arrow arrow(ax, 5, y2 - 0.29, y2 - 0.71) ax.text(5.2, y2 - 0.5, 'YES', fontsize=8, color=C_GREEN, fontweight='bold') # ── STEP 3: Preparatory Phase ───────────────────────────────────────── y3 = 14.7 box(ax, 5, y3, 8.5, 0.58, '③ PREPARATORY PHASE (before entering ward)', 'Chart review • Medications • Nursing obs • Collateral arranged • Prior psychiatric Hx', facecolor=C_MID, fontsize=10) arrow(ax, 5, y3 - 0.29, y3 - 0.71) # ── STEP 4: Establish Chronology ────────────────────────────────────── y4 = 13.75 box(ax, 5, y4, 8.5, 0.58, '④ ESTABLISH CHRONOLOGY & BASELINE', 'Timeline of symptoms vs. illness / surgery / medications / substances • Premorbid functioning', facecolor=C_MID, fontsize=10) side_note(ax, 7.25, y4, '"Timeline is often the diagnosis"', color='#fff8e1', tcolor=C_ORANGE, fontsize=7.5) arrow(ax, 5, y4 - 0.29, y4 - 0.71) # ── STEP 5: History + Collateral ───────────────────────────────────── y5 = 12.8 box(ax, 5, y5, 8.5, 0.58, '⑤ HISTORY & COLLATERAL INFORMATION', 'Patient interview • Family / carers • Nursing staff • Treating team', facecolor=C_MID, fontsize=10) arrow(ax, 5, y5 - 0.29, y5 - 0.71) # ── STEP 6: MSE + Cognitive ─────────────────────────────────────────── y6 = 11.85 box(ax, 5, y6, 8.5, 0.68, '⑥ CL-ADAPTED MSE + COGNITIVE EXAMINATION', 'Consciousness→Attention→Orientation (delirium first) • Catatonia • Speech/Thought\n' 'Affect • Psychosis • Suicidality • Cognition: MMSE / MoCA / CAM / CAM-ICU', facecolor=C_DARK, fontsize=10, h=0.72) arrow(ax, 5, y6 - 0.36, y6 - 0.76) # ── STEP 7: Think Organic ───────────────────────────────────────────── y7 = 10.8 box(ax, 5, y7, 8.5, 0.72, '⑦ THINK ORGANIC — ACTIVE AETIOLOGICAL SEARCH', 'Delirium • Metabolic / infective / autoimmune • Structural brain disease\n' 'Drug-induced (anticholinergics / steroids / ART / antitubercular) • Substance intoxication / withdrawal', facecolor='#7d1a1a', textcolor=C_WHITE, fontsize=10, h=0.76) side_note(ax, 7.25, y7, 'NEECHAM / CAM-ICU / 4AT\nfor delirium screening', color='#fdecea', tcolor=C_RED, fontsize=7, h=0.48) arrow(ax, 5, y7 - 0.38, y7 - 0.78) # ── STEP 8: Risk Assessment ─────────────────────────────────────────── y8 = 9.7 box(ax, 5, y8, 8.5, 0.68, '⑧ RISK & CAPACITY ASSESSMENT', 'Suicide / self-harm (C-SSRS) • Violence / aggression • Vulnerability\n' 'Decision-making capacity (specific decision) • Risk to medical treatment / adherence', facecolor=C_RED, fontsize=10, h=0.72) arrow(ax, 5, y8 - 0.36, y8 - 0.76) # ── STEP 9: Psychosocial + Special Pops ────────────────────────────── y9 = 8.65 box(ax, 5, y9, 8.5, 0.68, '⑨ PSYCHOSOCIAL & SPECIAL POPULATION FACTORS', 'Stressors • Coping • Caregiver burden • Social support • Premorbid personality\n' 'Cultural / religious factors • Elderly / children / perinatal / transplant / POCSO', facecolor=C_MID, fontsize=10, h=0.72) arrow(ax, 5, y9 - 0.36, y9 - 0.76) # ── STEP 10: Formulation ────────────────────────────────────────────── y10 = 7.55 box(ax, 5, y10, 8.5, 0.72, '⑩ BIOPSYCHOSOCIAL FORMULATION', 'Syndrome • Aetiology (primary / secondary / combined) • Drug interactions\n' 'DSM / ICD provisional Dx • Risk summary • Predisposing / Precipitating / Perpetuating / Protective', facecolor=C_GREEN, fontsize=10, h=0.76) arrow(ax, 5, y10 - 0.38, y10 - 0.78) # ── STEP 11: Communication ──────────────────────────────────────────── y11 = 6.4 box(ax, 5, y11, 8.5, 0.68, '⑪ COMMUNICATE ACTIONABLE PLAN TO TREATING TEAM', 'Written notes + Direct telephonic communication • No discrepancy with medical team\n' 'Patient & family explanation • Prescribe / recommend / refer as needed', facecolor=C_DARK, fontsize=10, h=0.72) arrow(ax, 5, y11 - 0.36, y11 - 0.76) # ── STEP 12: Reassessment Loop ──────────────────────────────────────── y12 = 5.3 box(ax, 5, y12, 8.5, 0.68, '⑫ REASSESS AS CONDITION EVOLVES', 'Serial MSE • Physiology / cognition / treatment changed → repeat assessment\n' 'Follow-up within 1 week if pharmacotherapy started • Post-discharge OPD plan', facecolor=C_MID, fontsize=10, h=0.72) # Feedback loop arrow ax.annotate('', xy=(9.15, y6), xytext=(9.15, y12), arrowprops=dict(arrowstyle='->', color=C_LIGHT, lw=1.4, connectionstyle='arc3,rad=0.0'), zorder=5) ax.plot([9.15, 9.4], [y12, y12], color=C_LIGHT, lw=1.4) ax.plot([9.15, 9.4], [y6, y6], color=C_LIGHT, lw=1.4) ax.text(9.55, (y6 + y12)/2, 'Iterative\nLoop', ha='center', va='center', fontsize=7, color=C_LIGHT, rotation=90, fontstyle='italic') # ── LEGEND / FOOTER ─────────────────────────────────────────────────── ax.add_patch(FancyBboxPatch((0.3, 0.35), 9.4, 0.9, boxstyle="round,pad=0.05", facecolor='#eaf2fb', edgecolor=C_DARK, linewidth=0.8, zorder=3)) legend_items = [ (C_DARK, 'Entry / Communication / Formulation'), (C_MID, 'Assessment Steps'), (C_RED, 'Safety / Risk / Organic'), (C_GREEN,'Synthesis / Formulation'), ] for i, (col, label) in enumerate(legend_items): lx = 0.6 + i * 2.35 ax.add_patch(mpatches.Rectangle((lx, 0.72), 0.28, 0.22, facecolor=col, edgecolor='none', zorder=4)) ax.text(lx + 0.35, 0.83, label, fontsize=6.8, va='center', color=C_TEXT, zorder=4) ax.text(5, 0.47, 'Ghosal & Ray, Indian J Psychiatry 2022 | van Niekerk et al. J Acad CLP 2022 | ' 'Carpenter et al. Acad Emerg Med 2024 | ACLP How-To Guides 2024–25', ha='center', va='center', fontsize=6.2, color='#555555', fontstyle='italic', zorder=4) plt.tight_layout(pad=0.3) plt.savefig('/tmp/workspace/cl-checklist/CL_Assessment_Flowchart.png', dpi=180, bbox_inches='tight', facecolor='#f7fafd') plt.close() print("Done") PYEOF
python3 << 'PYEOF' import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.patches as mpatches from matplotlib.patches import FancyBboxPatch import warnings warnings.filterwarnings('ignore') fig, ax = plt.subplots(1, 1, figsize=(10, 19)) ax.set_xlim(0, 10) ax.set_ylim(0, 19) ax.axis('off') fig.patch.set_facecolor('#f7fafd') C_DARK = '#1a3a5c' C_MID = '#2e6da4' C_LIGHT = '#5ba3d9' C_GREEN = '#1e6b3c' C_RED = '#b03030' C_ORANGE = '#c87800' C_GREY = '#ecf4fb' C_WHITE = '#ffffff' C_TEXT = '#1a1a1a' def draw_box(ax, cx, cy, w, bh, line1, line2=None, fc=C_MID, tc=C_WHITE, fs=9.5, fs2=7.6, bold=True): shadow = FancyBboxPatch((cx-w/2+0.05, cy-bh/2-0.06), w, bh, boxstyle="round,pad=0.05,rounding_size=0.2", facecolor='#aaaaaa', edgecolor='none', alpha=0.3, zorder=2) ax.add_patch(shadow) rect = FancyBboxPatch((cx-w/2, cy-bh/2), w, bh, boxstyle="round,pad=0.05,rounding_size=0.2", facecolor=fc, edgecolor=C_DARK, linewidth=0.9, zorder=3) ax.add_patch(rect) fw = 'bold' if bold else 'normal' if line2: ax.text(cx, cy+0.14, line1, ha='center', va='center', fontsize=fs, color=tc, fontweight=fw, zorder=4) ax.text(cx, cy-0.17, line2, ha='center', va='center', fontsize=fs2, color=tc, fontstyle='italic', zorder=4) else: ax.text(cx, cy, line1, ha='center', va='center', fontsize=fs, color=tc, fontweight=fw, zorder=4) def draw_arrow(ax, cx, y_from, y_to, col=C_DARK): ax.annotate('', xy=(cx, y_to+0.03), xytext=(cx, y_from-0.03), arrowprops=dict(arrowstyle='->', color=col, lw=1.6), zorder=5) def side_tag(ax, x, cy, text, fc='#fff8e1', tc=C_ORANGE, w=2.55, bh=0.38): r = FancyBboxPatch((x, cy-bh/2), w, bh, boxstyle="round,pad=0.04,rounding_size=0.1", facecolor=fc, edgecolor=C_MID, linewidth=0.6, zorder=3) ax.add_patch(r) ax.text(x+w/2, cy, text, ha='center', va='center', fontsize=6.9, color=tc, zorder=4) # ── TITLE ──────────────────────────────────────────────────────────── ax.text(5, 18.6, 'C-L PSYCHIATRY: SYSTEMATIC ASSESSMENT FLOWCHART', ha='center', fontsize=12, fontweight='bold', color=C_DARK, zorder=6) ax.text(5, 18.25, 'Integrated, Iterative Assessment of the Medically Ill Inpatient', ha='center', fontsize=8.2, color='#555', fontstyle='italic', zorder=6) ax.plot([0.4, 9.6], [18.05, 18.05], color=C_DARK, lw=1.5) # Steps: (cy, bh, line1, line2, fc, tc, side_tag_text, side_tag_fc, side_tag_tc) steps = [ # cy, bh, line1, line2, fc, side_text, sfc, stc (17.45, 0.56, '① REFERRAL RECEIVED', 'Review medical context • Clarify clinical question • Determine urgency', C_DARK, 'MHTS: Red / Orange / Yellow\nGreen / Blue triage', '#eaf2fb', C_MID), (16.55, 0.56, '② MEDICAL STABILITY CHECK', 'Airway • Breathing • Circulation • Life-threatening conditions first', C_RED, 'NO → Stabilise first\nPsychiatry waits', '#fdecea', C_RED), (15.65, 0.56, '③ PREPARATORY PHASE', 'Chart + medications + nursing obs • Collateral arranged • Prior psychiatric Hx', C_MID, 'Psychotropic Hx\nDrug interactions', C_GREY, C_MID), (14.75, 0.56, '④ ESTABLISH CHRONOLOGY & BASELINE', 'Timeline: symptoms vs illness / surgery / medications / substances • Premorbid functioning', C_MID, '"Timeline is often\nthe diagnosis"', '#fff8e1', C_ORANGE), (13.85, 0.56, '⑤ HISTORY & COLLATERAL', 'Patient interview • Family / carers • Nursing staff • Treating team', C_MID, 'Indispensable in\ndelirium / dementia', C_GREY, C_MID), (12.88, 0.68, '⑥ CL-ADAPTED MSE + COGNITIVE EXAM', 'Consciousness→Attention→Orientation (delirium first) • Catatonia • Speech / Thought / Affect\n' ' Psychosis • Suicidality • Cognition: MMSE / MoCA / CAM / CAM-ICU', C_DARK, 'NEECHAM / 4AT\nCAM-ICU / RASS', '#eaf2fb', C_MID), (11.88, 0.68, '⑦ THINK ORGANIC — AETIOLOGICAL SEARCH', 'Delirium • Metabolic / infective / autoimmune / structural brain disease\n' ' Drug-induced (steroids / anticholinergics / ART) • Intoxication / withdrawal', C_RED, 'Red flags: late-onset\natypical / fluctuating', '#fdecea', C_RED), (10.90, 0.68, '⑧ RISK & CAPACITY ASSESSMENT', 'Suicide / self-harm (C-SSRS) • Violence • Vulnerability • Risk to medical Rx\n' ' Decision-making capacity — assess for the specific decision', C_RED, 'C-SSRS • SSI\nHopelessness triad', '#fdecea', C_RED), (9.93, 0.68, '⑨ PSYCHOSOCIAL & SPECIAL POPULATIONS', 'Stressors • Coping • Caregiver burden • Social support • Personality\n' ' Cultural / religious • Elderly / children / perinatal / transplant / POCSO', C_MID, 'PSS / CD-RISC\nfor stress-resilience', C_GREY, C_MID), (8.93, 0.72, '⑩ BIOPSYCHOSOCIAL FORMULATION', 'Syndrome • Aetiology (primary / secondary / combined) • Drug interactions\n' ' DSM/ICD provisional Dx • Risk summary • 4 Ps: Predisposing / Precipitating\n' ' / Perpetuating / Protective', C_GREEN, '4 Ps formulation\nBiopsychosocial Dx', '#e8f5ee', C_GREEN), (7.88, 0.56, '⑪ COMMUNICATE ACTIONABLE PLAN', 'Written notes + Direct telephonic liaison • Patient & family explanation • No discrepancy', C_DARK, 'Prescribe / refer\nas needed', C_GREY, C_MID), (6.98, 0.56, '⑫ REASSESS AS CONDITION EVOLVES', 'Serial MSE • Physiology / cognition / Rx changed → repeat • Follow-up: ≤1 wk if pharmacotherapy', C_MID, 'Iterative loop\n→ back to Step ⑥', '#eaf2fb', C_LIGHT), ] prev_cy = None prev_bh = None for idx, s in enumerate(steps): cy, bh, l1, l2, fc, st, sfc, stc = s draw_box(ax, 5, cy, 8.5, bh, l1, l2, fc=fc) side_tag(ax, 7.3, cy, st, fc=sfc, tc=stc) if prev_cy is not None: draw_arrow(ax, 5, prev_cy - prev_bh/2, cy + bh/2) prev_cy = cy prev_bh = bh # YES label after step 2 ax.text(5.2, 16.05, 'YES ▼', fontsize=8, color=C_GREEN, fontweight='bold') # Iterative loop arc on left side loop_top = 12.88 + 0.34 loop_bot = 6.98 - 0.28 ax.annotate('', xy=(0.85, loop_top), xytext=(0.85, loop_bot), arrowprops=dict(arrowstyle='->', color=C_LIGHT, lw=1.5, connectionstyle='arc3,rad=0.0'), zorder=5) ax.plot([0.55, 0.85], [loop_bot, loop_bot], color=C_LIGHT, lw=1.4) ax.plot([0.55, 0.85], [loop_top, loop_top], color=C_LIGHT, lw=1.4) ax.text(0.28, (loop_top+loop_bot)/2, 'I\nT\nE\nR\nA\nT\nI\nV\nE', ha='center', va='center', fontsize=6.5, color=C_LIGHT, fontweight='bold', fontstyle='italic') # ── FOOTER LEGEND ───────────────────────────────────────────────────── ax.add_patch(FancyBboxPatch((0.3, 0.25), 9.4, 0.95, boxstyle="round,pad=0.05", facecolor='#eaf2fb', edgecolor=C_DARK, linewidth=0.8, zorder=3)) legend_items = [ (C_DARK, 'Entry / Output / Communication'), (C_MID, 'Assessment Steps'), (C_RED, 'Safety / Risk / Organic Search'), (C_GREEN, 'Formulation / Synthesis'), ] for i, (col, label) in enumerate(legend_items): lx = 0.55 + i * 2.35 ax.add_patch(mpatches.Rectangle((lx, 0.76), 0.28, 0.22, facecolor=col, edgecolor='none', zorder=4)) ax.text(lx+0.36, 0.87, label, fontsize=7, va='center', color=C_TEXT, zorder=4) ax.text(5, 0.44, 'Ghosal & Ray, Indian J Psychiatry 2022 | van Niekerk et al. J Acad CLP 2022 | ' 'Carpenter et al. Acad Emerg Med 2024 | Quinlivan et al. BMC Psychiatry 2025', ha='center', fontsize=6.3, color='#666', fontstyle='italic', zorder=4) plt.tight_layout(pad=0.2) out = '/tmp/workspace/cl-checklist/CL_Assessment_Flowchart.png' plt.savefig(out, dpi=180, bbox_inches='tight', facecolor='#f7fafd') plt.close() print("Saved:", out) PYEOF

CL Assessment Flowchart
Image · PNG
| Colour | Meaning |
|---|---|
| Navy | Entry point, communication, output |
| Blue | Core assessment steps |
| Red | Safety stops - medical stability, organic search, risk/capacity |
| Green | Biopsychosocial formulation (synthesis) |
word document
python3 << 'PYEOF' from docx import Document from docx.shared import Pt, Inches, RGBColor, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.oxml.ns import qn from docx.oxml import OxmlElement import copy doc = Document() # ── Page margins ───────────────────────────────────────────────────── section = doc.sections[0] section.page_width = Cm(21) section.page_height = Cm(29.7) section.top_margin = Cm(1.5) section.bottom_margin = Cm(1.5) section.left_margin = Cm(2) section.right_margin = Cm(2) # ── Default font ───────────────────────────────────────────────────── normal = doc.styles['Normal'] normal.font.name = 'Calibri' normal.font.size = Pt(10.5) # ── Helpers ────────────────────────────────────────────────────────── NAVY = RGBColor(0x1a, 0x3a, 0x5c) BLUE = RGBColor(0x2e, 0x6d, 0xa4) RED = RGBColor(0xb0, 0x30, 0x30) GREEN = RGBColor(0x1e, 0x6b, 0x3c) WHITE = RGBColor(0xFF, 0xFF, 0xFF) LGREY = RGBColor(0xea, 0xf2, 0xfb) LRED = RGBColor(0xfd, 0xec, 0xea) LGREEN = RGBColor(0xe8, 0xf5, 0xee) LBLUE = RGBColor(0xea, 0xf2, 0xfb) def set_cell_bg(cell, rgb: RGBColor): tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement('w:shd') hex_color = f'{rgb.red:02X}{rgb.green:02X}{rgb.blue:02X}' shd.set(qn('w:val'), 'clear') shd.set(qn('w:color'), 'auto') shd.set(qn('w:fill'), hex_color) tcPr.append(shd) def cell_para(cell, text, bold=False, italic=False, color=None, size=10, align=WD_ALIGN_PARAGRAPH.LEFT, space_before=0, space_after=0): p = cell.paragraphs[0] if cell.paragraphs else cell.add_paragraph() p.alignment = align p.paragraph_format.space_before = Pt(space_before) p.paragraph_format.space_after = Pt(space_after) p.paragraph_format.left_indent = Pt(0) run = p.add_run(text) run.bold = bold run.italic = italic run.font.size = Pt(size) run.font.name = 'Calibri' if color: run.font.color.rgb = color return p def add_para(text, bold=False, italic=False, color=None, size=11, align=WD_ALIGN_PARAGRAPH.LEFT, space_before=4, space_after=2): p = doc.add_paragraph() p.alignment = align p.paragraph_format.space_before = Pt(space_before) p.paragraph_format.space_after = Pt(space_after) run = p.add_run(text) run.bold = bold run.italic = italic run.font.size = Pt(size) run.font.name = 'Calibri' if color: run.font.color.rgb = color return p def add_rule(color=NAVY, thickness=12): p = doc.add_paragraph() p.paragraph_format.space_before = Pt(2) p.paragraph_format.space_after = Pt(2) pPr = p._p.get_or_add_pPr() pBdr = OxmlElement('w:pBdr') bottom = OxmlElement('w:bottom') hex_color = f'{color.red:02X}{color.green:02X}{color.blue:02X}' bottom.set(qn('w:val'), 'single') bottom.set(qn('w:sz'), str(thickness)) bottom.set(qn('w:space'), '1') bottom.set(qn('w:color'), hex_color) pBdr.append(bottom) pPr.append(pBdr) # ═══════════════════════════════════════════════════════════════════ # TITLE BLOCK # ═══════════════════════════════════════════════════════════════════ t = doc.add_table(rows=1, cols=1) t.alignment = WD_TABLE_ALIGNMENT.CENTER t.style = 'Table Grid' tc = t.rows[0].cells[0] set_cell_bg(tc, NAVY) tc.width = Cm(17) p = tc.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER p.paragraph_format.space_before = Pt(6) p.paragraph_format.space_after = Pt(2) r = p.add_run('C-L PSYCHIATRY: SYSTEMATIC ASSESSMENT FLOWCHART') r.bold = True; r.font.size = Pt(14); r.font.name = 'Calibri'; r.font.color.rgb = WHITE p2 = tc.add_paragraph() p2.alignment = WD_ALIGN_PARAGRAPH.CENTER p2.paragraph_format.space_after = Pt(6) r2 = p2.add_run('Integrated, Iterative Assessment of the Medically Ill Inpatient') r2.italic = True; r2.font.size = Pt(10); r2.font.name = 'Calibri'; r2.font.color.rgb = RGBColor(0xcc, 0xdd, 0xee) doc.add_paragraph().paragraph_format.space_after = Pt(2) # ═══════════════════════════════════════════════════════════════════ # FLOWCHART TABLE (step | description | side-tag) # ═══════════════════════════════════════════════════════════════════ steps = [ ('① REFERRAL RECEIVED', NAVY, WHITE, 'Review medical context • Clarify clinical question • Determine urgency (MHTS triage)', 'MHTS: Red / Orange\nYellow / Green / Blue', LBLUE, BLUE), ('② MEDICAL STABILITY CHECK', RED, WHITE, 'Airway • Breathing • Circulation • Acute life-threatening conditions first\n' 'NO → Stabilise first. Psychiatric assessment NEVER delays emergency medical treatment.', 'NO → Stabilise first\nPsychiatry waits', LRED, RED), ('③ PREPARATORY PHASE', BLUE, WHITE, 'Chart review • Medications (prescribed, stopped, OTC, herbal, interactions)\n' 'Nursing observations • Collateral arranged • Prior psychiatric history', 'Psychotropic Hx\nDrug interactions', LBLUE, BLUE), ('④ ESTABLISH CHRONOLOGY & BASELINE', BLUE, WHITE, 'Timeline: symptoms vs illness / surgery / medications / substances\n' 'Premorbid cognitive functioning • Personality • Baseline behaviour\n' '"Timeline is often the diagnosis."', '"Timeline is often\nthe diagnosis"', RGBColor(0xff,0xf8,0xe1), RGBColor(0xc8,0x78,0x00)), ('⑤ HISTORY & COLLATERAL', BLUE, WHITE, 'Patient interview (open narrative → vegetative → internalising → externalising)\n' 'Family / carers • Nursing staff • Treating team\n' 'Indispensable in delirium, dementia, psychosis, impaired insight', 'Memory-LAPSE (elderly)\nSubstance Hx: AUDIT', LBLUE, BLUE), ('⑥ CL-ADAPTED MSE + COGNITIVE EXAM', NAVY, WHITE, 'Consciousness → Attention → Orientation (delirium first)\n' 'Catatonia • Speech / Thought • Affect • Psychosis • Suicidality\n' 'Cognitive screening: MMSE / MoCA / CAM / CAM-ICU / RASS', 'NEECHAM / 4AT\nCAM-ICU / RASS', LBLUE, BLUE), ('⑦ THINK ORGANIC — AETIOLOGICAL SEARCH', RED, WHITE, 'Delirium • Metabolic / infective / autoimmune / structural brain disease\n' 'Drug-induced: steroids, anticholinergics, ART, antitubercular, fluoroquinolones\n' 'Substance intoxication / withdrawal • NCSE (non-convulsive status epilepticus)', 'Red flags: late-onset\natypical / fluctuating\nneurological signs', LRED, RED), ('⑧ RISK & CAPACITY ASSESSMENT', RED, WHITE, 'Suicide / self-harm: intent, plan, lethality, previous attempts (C-SSRS / SSI)\n' 'Violence / aggression • Vulnerability • Risk to medical treatment / adherence\n' 'Decision-making capacity — assess for the SPECIFIC decision in question', 'C-SSRS (free)\nHopelessness triad\nBPRS for agitation', LRED, RED), ('⑨ PSYCHOSOCIAL & SPECIAL POPULATIONS', BLUE, WHITE, 'Stressors • Coping mechanisms • Caregiver burden • Social support\n' 'Premorbid personality • Cultural / religious factors\n' 'Elderly (GDS, MoCA) • Children (CPMS) • Perinatal • Transplant • POCSO', 'PSS / CD-RISC\nfor stress-resilience', LBLUE, BLUE), ('⑩ BIOPSYCHOSOCIAL FORMULATION', GREEN, WHITE, 'Syndrome identified • Aetiology (primary / secondary / combined)\n' 'Drug-psychiatric interactions • DSM / ICD provisional diagnosis\n' '4 Ps: Predisposing • Precipitating • Perpetuating • Protective\n' 'Maintain psychiatric formulation AND medical differential simultaneously', '4 Ps formulation\nBiopsychosocial Dx\nDSM / ICD', LGREEN, GREEN), ('⑪ COMMUNICATE ACTIONABLE PLAN', NAVY, WHITE, 'Written notes in case record • Direct telephonic communication to treating consultant\n' 'No discrepancy between medical team and psychiatric team messages\n' 'Transparent explanation to patient and family • Prescribe / recommend / refer', 'Prescribe / refer\nas needed', LBLUE, BLUE), ('⑫ REASSESS AS CONDITION EVOLVES', BLUE, WHITE, 'Serial MSE — physiology / cognition / treatment changed → REPEAT assessment\n' 'Follow-up within 1 week if pharmacotherapy started\n' 'Post-discharge psychiatry OPD plan • Iterative loop → back to Step ⑥', 'Iterative loop\n→ repeat from ⑥\nwhenever Rx changes', LBLUE, BLUE), ] for i, (step_title, step_fc, step_tc, desc, tag_text, tag_fc, tag_tc) in enumerate(steps): tbl = doc.add_table(rows=1, cols=2) tbl.alignment = WD_TABLE_ALIGNMENT.CENTER tbl.style = 'Table Grid' # Column widths for j, w in enumerate([Cm(12.5), Cm(4.3)]): for cell in tbl.columns[j].cells: cell.width = w left = tbl.rows[0].cells[0] right = tbl.rows[0].cells[1] # Left: step header + description set_cell_bg(left, step_fc) lp1 = left.paragraphs[0] lp1.alignment = WD_ALIGN_PARAGRAPH.LEFT lp1.paragraph_format.space_before = Pt(3) lp1.paragraph_format.space_after = Pt(1) r1 = lp1.add_run(step_title) r1.bold = True; r1.font.size = Pt(10.5); r1.font.name = 'Calibri' r1.font.color.rgb = step_tc lp2 = left.add_paragraph() lp2.alignment = WD_ALIGN_PARAGRAPH.LEFT lp2.paragraph_format.space_before = Pt(1) lp2.paragraph_format.space_after = Pt(4) r2 = lp2.add_run(desc) r2.italic = True; r2.font.size = Pt(9); r2.font.name = 'Calibri' r2.font.color.rgb = step_tc # Right: side tag set_cell_bg(right, tag_fc) rp = right.paragraphs[0] rp.alignment = WD_ALIGN_PARAGRAPH.CENTER rp.paragraph_format.space_before = Pt(6) rp.paragraph_format.space_after = Pt(6) rt = rp.add_run(tag_text) rt.font.size = Pt(8.5); rt.font.name = 'Calibri'; rt.bold = True rt.font.color.rgb = tag_tc # Arrow row between steps if i < len(steps) - 1: arr_tbl = doc.add_table(rows=1, cols=1) arr_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER arr_cell = arr_tbl.rows[0].cells[0] arr_cell.width = Cm(16.8) ap = arr_cell.paragraphs[0] ap.alignment = WD_ALIGN_PARAGRAPH.CENTER ap.paragraph_format.space_before = Pt(0) ap.paragraph_format.space_after = Pt(0) ar = ap.add_run('▼') ar.font.size = Pt(9); ar.font.name = 'Calibri' ar.font.color.rgb = NAVY # ── YES label note after step 2 ────────────────────────────────────── # (embedded in description already; add a small italic note) # ═══════════════════════════════════════════════════════════════════ # ITERATIVE LOOP NOTE # ═══════════════════════════════════════════════════════════════════ doc.add_paragraph().paragraph_format.space_after = Pt(3) loop_tbl = doc.add_table(rows=1, cols=1) loop_tbl.style = 'Table Grid' loop_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER lc = loop_tbl.rows[0].cells[0] set_cell_bg(lc, LBLUE) lp = lc.paragraphs[0] lp.alignment = WD_ALIGN_PARAGRAPH.CENTER lp.paragraph_format.space_before = Pt(4) lp.paragraph_format.space_after = Pt(4) lr = lp.add_run( '↺ ITERATIVE LOOP: When physiology, cognition or treatment changes → ' 'return to Step ⑥ (MSE) and reassess. Serial assessment is mandatory.') lr.bold = True; lr.font.size = Pt(9.5); lr.font.name = 'Calibri' lr.font.color.rgb = NAVY # ═══════════════════════════════════════════════════════════════════ # LEGEND # ═══════════════════════════════════════════════════════════════════ doc.add_paragraph().paragraph_format.space_after = Pt(2) add_rule() leg_tbl = doc.add_table(rows=1, cols=4) leg_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER leg_tbl.style = 'Table Grid' legend = [ (NAVY, WHITE, 'Entry / Output /\nCommunication'), (BLUE, WHITE, 'Assessment\nSteps'), (RED, WHITE, 'Safety / Risk /\nOrganic Search'), (GREEN, WHITE, 'Formulation /\nSynthesis'), ] for j, (fc, tc, label) in enumerate(legend): lc = leg_tbl.rows[0].cells[j] set_cell_bg(lc, fc) lp = lc.paragraphs[0] lp.alignment = WD_ALIGN_PARAGRAPH.CENTER lp.paragraph_format.space_before = Pt(4) lp.paragraph_format.space_after = Pt(4) lr = lp.add_run(label) lr.bold = True; lr.font.size = Pt(8.5); lr.font.name = 'Calibri' lr.font.color.rgb = tc # ═══════════════════════════════════════════════════════════════════ # CITATIONS # ═══════════════════════════════════════════════════════════════════ add_para( 'References: Ghosal & Ray, Indian J Psychiatry 2022 | ' 'van Niekerk et al. J Acad CLP 2022 | ' 'Carpenter et al. Acad Emerg Med 2024 | ' 'Quinlivan et al. BMC Psychiatry 2025 | ACLP How-To Guides 2024–25', italic=True, color=RGBColor(0x55,0x55,0x55), size=8, align=WD_ALIGN_PARAGRAPH.CENTER, space_before=4, space_after=2) # ── Save ────────────────────────────────────────────────────────────── out = '/tmp/workspace/cl-checklist/CL_Assessment_Flowchart.docx' doc.save(out) print('Saved:', out) PYEOF
python3 << 'PYEOF' from docx import Document from docx.shared import Pt, Cm, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT from docx.oxml.ns import qn from docx.oxml import OxmlElement doc = Document() section = doc.sections[0] section.page_width = Cm(21) section.page_height = Cm(29.7) section.top_margin = Cm(1.5) section.bottom_margin = Cm(1.5) section.left_margin = Cm(2) section.right_margin = Cm(2) normal = doc.styles['Normal'] normal.font.name = 'Calibri' normal.font.size = Pt(10.5) # ── Use hex strings directly ────────────────────────────────────────── def set_cell_bg(cell, hex_color: str): """hex_color like '1a3a5c' (no #)""" tc = cell._tc tcPr = tc.get_or_add_tcPr() # remove existing shd if any for existing in tcPr.findall(qn('w:shd')): tcPr.remove(existing) shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear') shd.set(qn('w:color'), 'auto') shd.set(qn('w:fill'), hex_color.upper()) tcPr.append(shd) def rgb(r, g, b): return RGBColor(r, g, b) # Colour map as hex strings NAVY_H = '1A3A5C'; NAVY_R = rgb(0x1a, 0x3a, 0x5c) BLUE_H = '2E6DA4'; BLUE_R = rgb(0x2e, 0x6d, 0xa4) RED_H = 'B03030'; RED_R = rgb(0xb0, 0x30, 0x30) GREEN_H = '1E6B3C'; GREEN_R = rgb(0x1e, 0x6b, 0x3c) WHITE_H = 'FFFFFF'; WHITE_R = rgb(0xff, 0xff, 0xff) LBLUE_H = 'EAF2FB'; LBLUE_R = rgb(0xea, 0xf2, 0xfb) LRED_H = 'FDECEA'; LRED_R = rgb(0xfd, 0xec, 0xea) LGREEN_H = 'E8F5EE'; LGREEN_R = rgb(0xe8, 0xf5, 0xee) AMBER_H = 'FFF8E1'; AMBER_R = rgb(0xff, 0xf8, 0xe1) AMBERT_R = rgb(0xc8, 0x78, 0x00) GREY_R = rgb(0x55, 0x55, 0x55) # ── TITLE block ──────────────────────────────────────────────────── t = doc.add_table(rows=1, cols=1) t.alignment = WD_TABLE_ALIGNMENT.CENTER t.style = 'Table Grid' tc = t.rows[0].cells[0] tc.width = Cm(17) set_cell_bg(tc, NAVY_H) p1 = tc.paragraphs[0] p1.alignment = WD_ALIGN_PARAGRAPH.CENTER p1.paragraph_format.space_before = Pt(6) p1.paragraph_format.space_after = Pt(1) r1 = p1.add_run('C-L PSYCHIATRY: SYSTEMATIC ASSESSMENT FLOWCHART') r1.bold = True; r1.font.size = Pt(13.5) r1.font.name = 'Calibri'; r1.font.color.rgb = WHITE_R p2 = tc.add_paragraph() p2.alignment = WD_ALIGN_PARAGRAPH.CENTER p2.paragraph_format.space_after = Pt(5) r2 = p2.add_run('Integrated, Iterative Assessment of the Medically Ill Inpatient') r2.italic = True; r2.font.size = Pt(9.5) r2.font.name = 'Calibri'; r2.font.color.rgb = rgb(0xcc, 0xdd, 0xee) doc.add_paragraph().paragraph_format.space_after = Pt(1) # ── Steps data ──────────────────────────────────────────────────── # (title, title_bg_hex, title_text_rgb, desc, tag, tag_bg_hex, tag_text_rgb) steps = [ ('① REFERRAL RECEIVED', NAVY_H, WHITE_R, 'Review medical context • Clarify clinical question • Determine urgency (MHTS triage)', 'MHTS: Red / Orange\nYellow / Green / Blue', LBLUE_H, BLUE_R), ('② MEDICAL STABILITY CHECK', RED_H, WHITE_R, 'Airway • Breathing • Circulation • Life-threatening conditions FIRST\n' 'NO → Stabilise first. Psychiatric assessment NEVER delays emergency medical treatment.', 'NO → Stabilise\nfirst. Psychiatry\nwaits', LRED_H, RED_R), ('③ PREPARATORY PHASE', BLUE_H, WHITE_R, 'Chart review • Medications (prescribed / stopped / OTC / herbal / interactions)\n' 'Nursing observations • Collateral arranged • Prior psychiatric history', 'Psychotropic Hx\nDrug interactions', LBLUE_H, BLUE_R), ('④ ESTABLISH CHRONOLOGY & BASELINE', BLUE_H, WHITE_R, 'Timeline: symptoms vs illness / surgery / medications / substances\n' 'Premorbid cognition • Personality • Baseline behaviour\n' '"Timeline is often the diagnosis."', '"Timeline is often\nthe diagnosis"', AMBER_H, AMBERT_R), ('⑤ HISTORY & COLLATERAL', BLUE_H, WHITE_R, 'Patient interview (open narrative → vegetative → internalising → externalising)\n' 'Family / carers • Nursing staff • Treating team\n' 'Indispensable in delirium, dementia, psychosis, impaired insight', 'Memory-LAPSE\n(elderly)\nAUDIT for alcohol', LBLUE_H, BLUE_R), ('⑥ CL-ADAPTED MSE + COGNITIVE EXAM', NAVY_H, WHITE_R, 'Consciousness → Attention → Orientation (delirium first) • Catatonia\n' 'Speech / Thought • Affect • Psychosis • Suicidality\n' 'Cognitive screening: MMSE / MoCA / CAM / CAM-ICU / RASS', 'NEECHAM / 4AT\nCAM-ICU / RASS', LBLUE_H, BLUE_R), ('⑦ THINK ORGANIC — AETIOLOGICAL SEARCH', RED_H, WHITE_R, 'Delirium • Metabolic / infective / autoimmune / structural brain disease\n' 'Drug-induced: steroids / anticholinergics / ART / antitubercular / fluoroquinolones\n' 'Substance intoxication / withdrawal • NCSE (non-convulsive status epilepticus)', 'Red flags: late-onset\natypical / fluctuating\nneurological signs', LRED_H, RED_R), ('⑧ RISK & CAPACITY ASSESSMENT', RED_H, WHITE_R, 'Suicide / self-harm: intent, plan, lethality, previous attempts (C-SSRS / SSI)\n' 'Violence / aggression • Vulnerability • Risk to medical treatment / adherence\n' 'Decision-making capacity — assess for the SPECIFIC decision in question', 'C-SSRS (free)\nHopelessness triad\nBPRS for agitation', LRED_H, RED_R), ('⑨ PSYCHOSOCIAL & SPECIAL POPULATIONS', BLUE_H, WHITE_R, 'Stressors • Coping mechanisms • Caregiver burden • Social support • Personality\n' 'Cultural / religious factors\n' 'Elderly (GDS / MoCA) • Children (CPMS) • Perinatal • Transplant • POCSO / JJB', 'PSS / CD-RISC for\nstress & resilience', LBLUE_H, BLUE_R), ('⑩ BIOPSYCHOSOCIAL FORMULATION', GREEN_H, WHITE_R, 'Syndrome • Aetiology (primary / secondary / combined) • Drug-psychiatric interactions\n' 'DSM / ICD provisional diagnosis • Risk summary\n' '4 Ps: Predisposing • Precipitating • Perpetuating • Protective', '4 Ps formulation\nDSM / ICD Dx\nBiopsychosocial', LGREEN_H, GREEN_R), ('⑪ COMMUNICATE ACTIONABLE PLAN', NAVY_H, WHITE_R, 'Written notes • Direct telephonic communication to treating consultant\n' 'No discrepancy between medical team and psychiatric team messages\n' 'Transparent explanation to patient and family • Prescribe / recommend / refer', 'Prescribe / refer\nno discrepancy\nwith medical team', LBLUE_H, BLUE_R), ('⑫ REASSESS AS CONDITION EVOLVES', BLUE_H, WHITE_R, 'Serial MSE • Physiology / cognition / treatment changed → REPEAT assessment\n' 'Follow-up within 1 week if pharmacotherapy started\n' 'Post-discharge psychiatry OPD plan • Iterative loop → back to Step ⑥', 'Iterative loop\n→ repeat from ⑥\nwhen Rx changes', LBLUE_H, BLUE_R), ] for i, (title, t_bg, t_tc, desc, tag, tag_bg, tag_tc) in enumerate(steps): tbl = doc.add_table(rows=1, cols=2) tbl.alignment = WD_TABLE_ALIGNMENT.CENTER tbl.style = 'Table Grid' # widths tbl.columns[0].width = Cm(12.5) tbl.columns[1].width = Cm(4.3) for cell in tbl.columns[0].cells: cell.width = Cm(12.5) for cell in tbl.columns[1].cells: cell.width = Cm(4.3) left = tbl.rows[0].cells[0] right = tbl.rows[0].cells[1] set_cell_bg(left, t_bg) p_title = left.paragraphs[0] p_title.alignment = WD_ALIGN_PARAGRAPH.LEFT p_title.paragraph_format.space_before = Pt(3) p_title.paragraph_format.space_after = Pt(1) rt = p_title.add_run(title) rt.bold = True; rt.font.size = Pt(10.5) rt.font.name = 'Calibri'; rt.font.color.rgb = t_tc p_desc = left.add_paragraph() p_desc.alignment = WD_ALIGN_PARAGRAPH.LEFT p_desc.paragraph_format.space_before = Pt(1) p_desc.paragraph_format.space_after = Pt(4) rd = p_desc.add_run(desc) rd.italic = True; rd.font.size = Pt(9) rd.font.name = 'Calibri'; rd.font.color.rgb = t_tc set_cell_bg(right, tag_bg) p_tag = right.paragraphs[0] p_tag.alignment = WD_ALIGN_PARAGRAPH.CENTER p_tag.paragraph_format.space_before = Pt(8) p_tag.paragraph_format.space_after = Pt(8) rg = p_tag.add_run(tag) rg.bold = True; rg.font.size = Pt(8.5) rg.font.name = 'Calibri'; rg.font.color.rgb = tag_tc # Arrow between steps if i < len(steps) - 1: at = doc.add_table(rows=1, cols=1) at.alignment = WD_TABLE_ALIGNMENT.CENTER at.style = 'Table Grid' ac = at.rows[0].cells[0] ac.width = Cm(16.8) set_cell_bg(ac, 'F7FAFD') ap = ac.paragraphs[0] ap.alignment = WD_ALIGN_PARAGRAPH.CENTER ap.paragraph_format.space_before = Pt(0) ap.paragraph_format.space_after = Pt(0) ar = ap.add_run('▼') ar.font.size = Pt(9); ar.font.name = 'Calibri' ar.font.color.rgb = NAVY_R # ── Iterative loop note ─────────────────────────────────────────────── doc.add_paragraph().paragraph_format.space_after = Pt(3) lt = doc.add_table(rows=1, cols=1) lt.style = 'Table Grid' lt.alignment = WD_TABLE_ALIGNMENT.CENTER lc = lt.rows[0].cells[0] set_cell_bg(lc, LBLUE_H) lp = lc.paragraphs[0] lp.alignment = WD_ALIGN_PARAGRAPH.CENTER lp.paragraph_format.space_before = Pt(5) lp.paragraph_format.space_after = Pt(5) lr = lp.add_run( '↺ ITERATIVE LOOP: When physiology, cognition or treatment changes' ' → return to Step ⑥ (MSE) and reassess. Serial assessment is mandatory.') lr.bold = True; lr.font.size = Pt(9.5) lr.font.name = 'Calibri'; lr.font.color.rgb = NAVY_R # ── Legend ──────────────────────────────────────────────────────────── doc.add_paragraph().paragraph_format.space_after = Pt(2) legend_tbl = doc.add_table(rows=1, cols=4) legend_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER legend_tbl.style = 'Table Grid' leg = [ (NAVY_H, WHITE_R, 'Entry / Output\nCommunication'), (BLUE_H, WHITE_R, 'Assessment\nSteps'), (RED_H, WHITE_R, 'Safety / Risk\nOrganic Search'), (GREEN_H, WHITE_R, 'Formulation\nSynthesis'), ] for j, (bg, tc, label) in enumerate(leg): lc2 = legend_tbl.rows[0].cells[j] set_cell_bg(lc2, bg) p = lc2.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER p.paragraph_format.space_before = Pt(4) p.paragraph_format.space_after = Pt(4) r = p.add_run(label) r.bold = True; r.font.size = Pt(8.5) r.font.name = 'Calibri'; r.font.color.rgb = tc # ── Citations ───────────────────────────────────────────────────────── cp = doc.add_paragraph() cp.alignment = WD_ALIGN_PARAGRAPH.CENTER cp.paragraph_format.space_before = Pt(5) cp.paragraph_format.space_after = Pt(2) cr = cp.add_run( 'References: Ghosal & Ray, Indian J Psychiatry 2022 | van Niekerk et al. J Acad CLP 2022 | ' 'Carpenter et al. Acad Emerg Med 2024 | Quinlivan et al. BMC Psychiatry 2025 | ACLP How-To Guides 2024–25') cr.italic = True; cr.font.size = Pt(7.8) cr.font.name = 'Calibri'; cr.font.color.rgb = GREY_R out = '/tmp/workspace/cl-checklist/CL_Assessment_Flowchart.docx' doc.save(out) print('Saved:', out) PYEOF
CL Assessment Flowchart
Word Document · DOCX
| Colour | Meaning |
|---|---|
| Navy | Entry, Output, Communication (Steps 1, 6, 11) |
| Blue | Core assessment steps |
| Red | Safety stops - medical stability, organic search, risk/capacity |
| Green | Biopsychosocial formulation |