TherapyNote / forms /schemas.py
abagherp's picture
Upload folder using huggingface_hub
6830eb0 verified
from __future__ import annotations
from pydantic import BaseModel, Field
from typing import Optional, List
from pydantic import BaseModel, Field
class SOAPNote(BaseModel):
"""
A SOAP note is structured into four sections: Subjective, Objective, Assessment, and Plan.
These fields help track the client's self-reported experiences, observable data, the clinician's assessment, and the future treatment plan.
"""
Subjective: Optional[str] = Field(None, description="Client's self-reported symptoms, emotions, concerns, and relevant personal history.")
Objective: Optional[str] = Field(None, description="Observable and measurable data, such as behavior, affect, test results, or vital signs.")
Assessment: Optional[str] = Field(None, description="Clinician's interpretation of the subjective and objective data, including diagnosis and progress.")
Plan: Optional[str] = Field(None, description="Outline of next steps, changes to treatment, referrals, and any planned interventions.")
class DAPNote(BaseModel):
"""
A DAP note includes Data, Assessment, and Plan. It condenses subjective and objective info into a single 'Data' section.
"""
Data: Optional[str] = Field(None, description="Combined subjective and objective information: client's statements, therapist observations, relevant tests.")
Assessment: Optional[str] = Field(None, description="Therapist's interpretation of the data, clinical impressions, and identified issues.")
Plan: Optional[str] = Field(None, description="Next steps, goals for future sessions, and recommended interventions or activities.")
class BIRPNote(BaseModel):
"""
A BIRP note includes Behavior, Intervention, Response, and Plan, emphasizing the therapist's interventions and the client's reaction.
"""
Behavior: Optional[str] = Field(None, description="Client's behavior during the session (verbal/non-verbal) and any observations made by the therapist.")
Intervention: Optional[str] = Field(None, description="Specific techniques, methods, or therapies used by the clinician during the session.")
Response: Optional[str] = Field(None, description="How the client responded to the interventions, including changes in affect, participation, or symptom relief.")
Plan: Optional[str] = Field(None, description="Follow-up steps, homework assignments, referrals, or next session focus.")
class PIRPNote(BaseModel):
"""
A PIRP note is Problem, Intervention, Response, and Plan, focusing on a particular client problem.
"""
Problem: Optional[str] = Field(None, description="The client's presenting problem, symptoms, or reason for seeking therapy.")
Intervention: Optional[str] = Field(None, description="Actions taken by the therapist to address the identified problem.")
Response: Optional[str] = Field(None, description="Client's reaction or changes after the intervention was applied.")
Plan: Optional[str] = Field(None, description="Next steps for addressing the problem, including future sessions, techniques, or referrals.")
class GIRPNote(BaseModel):
"""
A GIRP note focuses on Goals, Intervention, Response, and Plan, centering around client-defined goals.
"""
Goals: Optional[str] = Field(None, description="The client's short-term and long-term therapy goals or objectives.")
Intervention: Optional[str] = Field(None, description="Therapeutic interventions used to help the client work toward these goals.")
Response: Optional[str] = Field(None, description="How the client responded to the interventions and their progress toward goals.")
Plan: Optional[str] = Field(None, description="Plan for future sessions, homework, referrals, or adjustments to help achieve goals.")
class SIRPNote(BaseModel):
"""
A SIRP note organizes notes by Situation, Intervention, Response, and Plan, emphasizing the client's current situation.
"""
Situation: Optional[str] = Field(None, description="The client's presenting situation, including current symptoms, concerns, and background info.")
Intervention: Optional[str] = Field(None, description="Interventions, assessments, and recommendations made during the session.")
Response: Optional[str] = Field(None, description="Client's response to the intervention, observed changes or feedback.")
Plan: Optional[str] = Field(None, description="Next steps, follow-up appointments, referrals, and any planned adjustments.")
class FAIRFDARPNote(BaseModel):
"""
A FAIR/F-DARP note includes Focus, Assessment, Intervention, Response (FAIR)
or Focus, Data, Action, Response, Plan (F-DARP).
Here we combine them: Focus, Data, Action, Response, (and optionally Plan).
"""
Focus: Optional[str] = Field(None, description="Focus of the note, such as a nursing diagnosis, event, or primary concern.")
Data: Optional[str] = Field(None, description="Subjective and objective data about the client/patient condition.")
Action: Optional[str] = Field(None, description="Actions taken by the provider in response to the data (e.g., treatments, education).")
Response: Optional[str] = Field(None, description="Client's response to the actions taken.")
Plan: Optional[str] = Field(None, description="Future steps or follow-up if using the full F-DARP format.")
class DARENote(BaseModel):
"""
A DARE note stands for Data, Action, Response, Education. Emphasizes client education and their response.
"""
Data: Optional[str] = Field(None, description="Subjective and objective client information and therapist's observations.")
Action: Optional[str] = Field(None, description="Specific actions, treatments, or interventions the therapist took.")
Response: Optional[str] = Field(None, description="Client's response to those actions, improvements, or changes in symptoms.")
Education: Optional[str] = Field(None, description="Education provided to the client about their condition, treatments, or coping strategies.")
class PIENote(BaseModel):
"""
A PIE note: Problem, Intervention, Evaluation. It's similar to PIRP but focuses on evaluating interventions.
"""
Problem: Optional[str] = Field(None, description="Client's identified problem, whether mental health symptom or behavior issue.")
Intervention: Optional[str] = Field(None, description="What the therapist did to address the problem (techniques, strategies).")
Evaluation: Optional[str] = Field(None, description="How effective the intervention was, changes in the client, and next steps.")
class SOAPIERNote(BaseModel):
"""
A SOAPIER note expands SOAP by adding Intervention, Evaluation, and Revision sections for more comprehensive documentation.
"""
Subjective: Optional[str] = Field(None, description="Client's subjective complaints, feelings, statements.")
Objective: Optional[str] = Field(None, description="Observable, measurable data, test results, or observations.")
Assessment: Optional[str] = Field(None, description="Therapist's interpretation, diagnosis, or clinical judgment.")
Plan: Optional[str] = Field(None, description="Proposed interventions, follow-ups, or referrals.")
Intervention: Optional[str] = Field(None, description="Specific interventions implemented during the session.")
Evaluation: Optional[str] = Field(None, description="Client's response to interventions and progress made.")
Revision: Optional[str] = Field(None, description="Adjustments to the treatment plan based on evaluation.")
class SOAPIENote(BaseModel):
"""
A SOAPIE note is similar to SOAPIER but only adds Intervention and Evaluation to the standard SOAP note.
"""
Subjective: Optional[str] = Field(None, description="Client's self-reported experiences and symptoms.")
Objective: Optional[str] = Field(None, description="Observable data and measurable findings.")
Assessment: Optional[str] = Field(None, description="Clinician's interpretation and clinical impressions.")
Plan: Optional[str] = Field(None, description="Planned interventions, referrals, or changes.")
Intervention: Optional[str] = Field(None, description="Interventions used during the session.")
Evaluation: Optional[str] = Field(None, description="Client's response to interventions and progress toward goals.")
class POMRNote(BaseModel):
"""
POMR: Problem-Oriented Medical Record. Focuses on organizing data around problems.
"""
Database: Optional[str] = Field(None, description="Patient's history, exam findings, and relevant tests.")
ProblemList: Optional[str] = Field(None, description="All identified problems, both active and resolved.")
InitialPlan: Optional[str] = Field(None, description="Initial plan to address each problem, including diagnostics or treatments.")
ProgressNotes: Optional[str] = Field(None, description="Ongoing progress, changes, and outcomes related to each problem.")
class NarrativeNote(BaseModel):
"""
A Narrative note is a free-text record, providing flexibility for a descriptive, story-like documentation.
"""
Narrative: Optional[str] = Field(None, description="A free-form description of the session, events, observations, and client interactions.")
class CBENote(BaseModel):
"""
CBE: Charting By Exception. Only notes deviations from the norm.
"""
Exceptions: Optional[str] = Field(None, description="Significant changes or unexpected findings from the norm, highlighting what differs.")
class SBARNote(BaseModel):
"""
SBAR: Situation, Background, Assessment, and Recommendation. Used often in quick communication contexts.
"""
Situation: Optional[str] = Field(None, description="Brief description of the patient's current situation or issue.")
Background: Optional[str] = Field(None, description="Relevant background information, history, current meds, or past sessions.")
Assessment: Optional[str] = Field(None, description="Clinician's assessment of the current condition or problem.")
Recommendation: Optional[str] = Field(None, description="Suggested next steps, treatments, referrals, or actions.")
class ExtractedNotes(BaseModel):
"""Container for multiple note formats."""
soap: SOAPNote | None = None
dap: DAPNote | None = None
birp: BIRPNote | None = None
pirp: PIRPNote | None = None
girp: GIRPNote | None = None
sirp: SIRPNote | None = None
fairfdarp: FAIRFDARPNote | None = None
dare: DARENote | None = None
pie: PIENote | None = None
soapiier: SOAPIERNote | None = None
soapiie: SOAPIENote | None = None
pomr: POMRNote | None = None
narrative: NarrativeNote | None = None
cbe: CBENote | None = None
sbar: SBARNote | None = None