428 lines
41 KiB
Python
428 lines
41 KiB
Python
# Generated by Django 5.2.3 on 2025-11-09 20:07
|
|
|
|
import django.db.models.deletion
|
|
import simple_history.models
|
|
import uuid
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('appointments', '0003_add_no_show_tracking'),
|
|
('core', '0009_add_consent_expiry_date'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='HistoricalPsychologyAssessment',
|
|
fields=[
|
|
('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(blank=True, editable=False, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('assessment_date', models.DateField(verbose_name='Assessment Date')),
|
|
('assessment_type', models.CharField(choices=[('COGNITIVE', 'Cognitive Assessment'), ('DEVELOPMENTAL', 'Developmental Assessment'), ('BEHAVIORAL', 'Behavioral Assessment'), ('EMOTIONAL', 'Emotional Assessment'), ('PERSONALITY', 'Personality Assessment'), ('NEUROPSYCH', 'Neuropsychological Assessment'), ('COMPREHENSIVE', 'Comprehensive Assessment')], max_length=50, verbose_name='Assessment Type')),
|
|
('reason_for_assessment', models.TextField(verbose_name='Reason for Assessment')),
|
|
('relevant_history', models.TextField(blank=True, verbose_name='Relevant History')),
|
|
('current_medications', models.TextField(blank=True, verbose_name='Current Medications')),
|
|
('tests_administered', models.JSONField(blank=True, default=list, help_text='List of tests with scores and interpretations', verbose_name='Tests Administered')),
|
|
('behavioral_observations', models.TextField(blank=True, verbose_name='Behavioral Observations During Testing')),
|
|
('test_validity', models.TextField(blank=True, verbose_name='Test Validity & Reliability')),
|
|
('cognitive_functioning', models.TextField(blank=True, verbose_name='Cognitive Functioning')),
|
|
('emotional_functioning', models.TextField(blank=True, verbose_name='Emotional Functioning')),
|
|
('behavioral_functioning', models.TextField(blank=True, verbose_name='Behavioral Functioning')),
|
|
('social_functioning', models.TextField(blank=True, verbose_name='Social Functioning')),
|
|
('adaptive_functioning', models.TextField(blank=True, verbose_name='Adaptive Functioning')),
|
|
('strengths', models.TextField(blank=True, verbose_name='Strengths')),
|
|
('weaknesses', models.TextField(blank=True, verbose_name='Areas of Concern/Weakness')),
|
|
('diagnostic_impressions', models.TextField(blank=True, verbose_name='Diagnostic Impressions')),
|
|
('dsm5_diagnosis', models.TextField(blank=True, verbose_name='DSM-5 Diagnosis')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('treatment_recommendations', models.TextField(blank=True, verbose_name='Treatment Recommendations')),
|
|
('educational_recommendations', models.TextField(blank=True, verbose_name='Educational Recommendations')),
|
|
('follow_up_recommendations', models.TextField(blank=True, verbose_name='Follow-up Recommendations')),
|
|
('history_id', models.AutoField(primary_key=True, serialize=False)),
|
|
('history_date', models.DateTimeField(db_index=True)),
|
|
('history_change_reason', models.CharField(max_length=100, null=True)),
|
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
|
('appointment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='appointments.appointment', verbose_name='Appointment')),
|
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
|
('patient', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'historical Psychology Assessment',
|
|
'verbose_name_plural': 'historical Psychology Assessments',
|
|
'ordering': ('-history_date', '-history_id'),
|
|
'get_latest_by': ('history_date', 'history_id'),
|
|
},
|
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name='HistoricalPsychologyConsultation',
|
|
fields=[
|
|
('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(blank=True, editable=False, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('consultation_date', models.DateField(verbose_name='Consultation Date')),
|
|
('referral_reason', models.CharField(choices=[('BEHAVIORAL', 'Behavioral Issues'), ('EMOTIONAL', 'Emotional Difficulties'), ('DEVELOPMENTAL', 'Developmental Concerns'), ('LEARNING', 'Learning Difficulties'), ('SOCIAL', 'Social Skills Deficits'), ('ANXIETY', 'Anxiety'), ('DEPRESSION', 'Depression'), ('TRAUMA', 'Trauma/PTSD'), ('ADHD', 'ADHD Assessment'), ('AUTISM', 'Autism Spectrum Assessment'), ('OTHER', 'Other')], max_length=50, verbose_name='Referral Reason')),
|
|
('referral_source', models.CharField(blank=True, max_length=200, verbose_name='Referral Source')),
|
|
('presenting_problem', models.TextField(verbose_name='Presenting Problem')),
|
|
('family_history', models.TextField(blank=True, verbose_name='Family History')),
|
|
('medical_history', models.TextField(blank=True, verbose_name='Medical History')),
|
|
('developmental_history', models.TextField(blank=True, verbose_name='Developmental History')),
|
|
('educational_history', models.TextField(blank=True, verbose_name='Educational History')),
|
|
('social_history', models.TextField(blank=True, verbose_name='Social History')),
|
|
('appearance', models.TextField(blank=True, verbose_name='Appearance')),
|
|
('behavior', models.TextField(blank=True, verbose_name='Behavior')),
|
|
('mood', models.CharField(blank=True, max_length=200, verbose_name='Mood')),
|
|
('affect', models.CharField(blank=True, max_length=200, verbose_name='Affect')),
|
|
('speech', models.TextField(blank=True, verbose_name='Speech')),
|
|
('thought_process', models.TextField(blank=True, verbose_name='Thought Process')),
|
|
('thought_content', models.TextField(blank=True, verbose_name='Thought Content')),
|
|
('perception', models.TextField(blank=True, verbose_name='Perception')),
|
|
('cognition', models.TextField(blank=True, verbose_name='Cognition')),
|
|
('insight', models.CharField(blank=True, max_length=200, verbose_name='Insight')),
|
|
('judgment', models.CharField(blank=True, max_length=200, verbose_name='Judgment')),
|
|
('suicide_risk', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Suicide Risk')),
|
|
('homicide_risk', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Homicide Risk')),
|
|
('risk_assessment_notes', models.TextField(blank=True, verbose_name='Risk Assessment Notes')),
|
|
('clinical_impressions', models.TextField(blank=True, verbose_name='Clinical Impressions')),
|
|
('provisional_diagnosis', models.TextField(blank=True, verbose_name='Provisional Diagnosis')),
|
|
('treatment_goals', models.TextField(blank=True, verbose_name='Treatment Goals')),
|
|
('treatment_approach', models.TextField(blank=True, verbose_name='Treatment Approach')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('frequency_duration', models.CharField(blank=True, max_length=200, verbose_name='Recommended Frequency & Duration')),
|
|
('referrals_needed', models.TextField(blank=True, verbose_name='Referrals Needed')),
|
|
('history_id', models.AutoField(primary_key=True, serialize=False)),
|
|
('history_date', models.DateTimeField(db_index=True)),
|
|
('history_change_reason', models.CharField(max_length=100, null=True)),
|
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
|
('appointment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='appointments.appointment', verbose_name='Appointment')),
|
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
|
('patient', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'historical Psychology Consultation',
|
|
'verbose_name_plural': 'historical Psychology Consultations',
|
|
'ordering': ('-history_date', '-history_id'),
|
|
'get_latest_by': ('history_date', 'history_id'),
|
|
},
|
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name='HistoricalPsychologyProgressReport',
|
|
fields=[
|
|
('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(blank=True, editable=False, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('report_date', models.DateField(verbose_name='Report Date')),
|
|
('treatment_start_date', models.DateField(blank=True, null=True, verbose_name='Treatment Start Date')),
|
|
('sessions_scheduled', models.PositiveIntegerField(default=0, verbose_name='Sessions Scheduled')),
|
|
('sessions_attended', models.PositiveIntegerField(default=0, verbose_name='Sessions Attended')),
|
|
('presenting_problems_summary', models.TextField(blank=True, verbose_name='Presenting Problems Summary')),
|
|
('treatment_provided', models.TextField(blank=True, verbose_name='Treatment Provided')),
|
|
('goals_progress', models.TextField(blank=True, verbose_name='Progress Toward Goals')),
|
|
('overall_progress', models.TextField(blank=True, verbose_name='Overall Progress')),
|
|
('current_functioning', models.TextField(blank=True, verbose_name='Current Functioning')),
|
|
('current_symptoms', models.TextField(blank=True, verbose_name='Current Symptoms')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('continue_treatment', models.BooleanField(default=True, verbose_name='Continue Treatment')),
|
|
('discharge_plan', models.TextField(blank=True, verbose_name='Discharge Plan')),
|
|
('prognosis', models.TextField(blank=True, verbose_name='Prognosis')),
|
|
('history_id', models.AutoField(primary_key=True, serialize=False)),
|
|
('history_date', models.DateTimeField(db_index=True)),
|
|
('history_change_reason', models.CharField(max_length=100, null=True)),
|
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
|
('patient', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'historical Psychology Progress Report',
|
|
'verbose_name_plural': 'historical Psychology Progress Reports',
|
|
'ordering': ('-history_date', '-history_id'),
|
|
'get_latest_by': ('history_date', 'history_id'),
|
|
},
|
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name='HistoricalPsychologySession',
|
|
fields=[
|
|
('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(blank=True, editable=False, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(blank=True, editable=False, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('session_number', models.PositiveIntegerField(verbose_name='Session Number')),
|
|
('session_date', models.DateField(verbose_name='Session Date')),
|
|
('session_type', models.CharField(choices=[('INDIVIDUAL', 'Individual Therapy'), ('GROUP', 'Group Therapy'), ('FAMILY', 'Family Therapy'), ('PARENT_TRAINING', 'Parent Training'), ('CONSULTATION', 'Consultation')], max_length=50, verbose_name='Session Type')),
|
|
('therapy_modality', models.CharField(blank=True, choices=[('CBT', 'Cognitive Behavioral Therapy'), ('DBT', 'Dialectical Behavior Therapy'), ('PSYCHODYNAMIC', 'Psychodynamic Therapy'), ('HUMANISTIC', 'Humanistic Therapy'), ('PLAY_THERAPY', 'Play Therapy'), ('ART_THERAPY', 'Art Therapy'), ('MINDFULNESS', 'Mindfulness-Based Therapy'), ('SOLUTION_FOCUSED', 'Solution-Focused Therapy'), ('OTHER', 'Other')], max_length=50, verbose_name='Therapy Modality')),
|
|
('duration_minutes', models.PositiveIntegerField(blank=True, null=True, verbose_name='Duration (minutes)')),
|
|
('presenting_issues', models.TextField(blank=True, verbose_name='Presenting Issues This Session')),
|
|
('interventions_used', models.TextField(blank=True, verbose_name='Interventions Used')),
|
|
('client_response', models.TextField(blank=True, verbose_name='Client Response to Interventions')),
|
|
('progress_toward_goals', models.TextField(blank=True, verbose_name='Progress Toward Goals')),
|
|
('behavioral_observations', models.TextField(blank=True, verbose_name='Behavioral Observations')),
|
|
('mood_affect', models.CharField(blank=True, max_length=200, verbose_name='Mood & Affect')),
|
|
('current_risk_level', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Current Risk Level')),
|
|
('risk_notes', models.TextField(blank=True, verbose_name='Risk Assessment Notes')),
|
|
('homework_assigned', models.TextField(blank=True, verbose_name='Homework Assigned')),
|
|
('plan_for_next_session', models.TextField(blank=True, verbose_name='Plan for Next Session')),
|
|
('clinical_notes', models.TextField(blank=True, verbose_name='Additional Clinical Notes')),
|
|
('history_id', models.AutoField(primary_key=True, serialize=False)),
|
|
('history_date', models.DateTimeField(db_index=True)),
|
|
('history_change_reason', models.CharField(max_length=100, null=True)),
|
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
|
('appointment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='appointments.appointment', verbose_name='Appointment')),
|
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
|
('patient', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'historical Psychology Session',
|
|
'verbose_name_plural': 'historical Psychology Sessions',
|
|
'ordering': ('-history_date', '-history_id'),
|
|
'get_latest_by': ('history_date', 'history_id'),
|
|
},
|
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name='PsychologyConsultation',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('consultation_date', models.DateField(verbose_name='Consultation Date')),
|
|
('referral_reason', models.CharField(choices=[('BEHAVIORAL', 'Behavioral Issues'), ('EMOTIONAL', 'Emotional Difficulties'), ('DEVELOPMENTAL', 'Developmental Concerns'), ('LEARNING', 'Learning Difficulties'), ('SOCIAL', 'Social Skills Deficits'), ('ANXIETY', 'Anxiety'), ('DEPRESSION', 'Depression'), ('TRAUMA', 'Trauma/PTSD'), ('ADHD', 'ADHD Assessment'), ('AUTISM', 'Autism Spectrum Assessment'), ('OTHER', 'Other')], max_length=50, verbose_name='Referral Reason')),
|
|
('referral_source', models.CharField(blank=True, max_length=200, verbose_name='Referral Source')),
|
|
('presenting_problem', models.TextField(verbose_name='Presenting Problem')),
|
|
('family_history', models.TextField(blank=True, verbose_name='Family History')),
|
|
('medical_history', models.TextField(blank=True, verbose_name='Medical History')),
|
|
('developmental_history', models.TextField(blank=True, verbose_name='Developmental History')),
|
|
('educational_history', models.TextField(blank=True, verbose_name='Educational History')),
|
|
('social_history', models.TextField(blank=True, verbose_name='Social History')),
|
|
('appearance', models.TextField(blank=True, verbose_name='Appearance')),
|
|
('behavior', models.TextField(blank=True, verbose_name='Behavior')),
|
|
('mood', models.CharField(blank=True, max_length=200, verbose_name='Mood')),
|
|
('affect', models.CharField(blank=True, max_length=200, verbose_name='Affect')),
|
|
('speech', models.TextField(blank=True, verbose_name='Speech')),
|
|
('thought_process', models.TextField(blank=True, verbose_name='Thought Process')),
|
|
('thought_content', models.TextField(blank=True, verbose_name='Thought Content')),
|
|
('perception', models.TextField(blank=True, verbose_name='Perception')),
|
|
('cognition', models.TextField(blank=True, verbose_name='Cognition')),
|
|
('insight', models.CharField(blank=True, max_length=200, verbose_name='Insight')),
|
|
('judgment', models.CharField(blank=True, max_length=200, verbose_name='Judgment')),
|
|
('suicide_risk', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Suicide Risk')),
|
|
('homicide_risk', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Homicide Risk')),
|
|
('risk_assessment_notes', models.TextField(blank=True, verbose_name='Risk Assessment Notes')),
|
|
('clinical_impressions', models.TextField(blank=True, verbose_name='Clinical Impressions')),
|
|
('provisional_diagnosis', models.TextField(blank=True, verbose_name='Provisional Diagnosis')),
|
|
('treatment_goals', models.TextField(blank=True, verbose_name='Treatment Goals')),
|
|
('treatment_approach', models.TextField(blank=True, verbose_name='Treatment Approach')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('frequency_duration', models.CharField(blank=True, max_length=200, verbose_name='Recommended Frequency & Duration')),
|
|
('referrals_needed', models.TextField(blank=True, verbose_name='Referrals Needed')),
|
|
('appointment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_consultations', to='appointments.appointment', verbose_name='Appointment')),
|
|
('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='psychology_consultations', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_consultations_provided', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_signed', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Psychology Consultation',
|
|
'verbose_name_plural': 'Psychology Consultations',
|
|
'ordering': ['-consultation_date', '-created_at'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PsychologyGoal',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
|
('goal_description', models.TextField(verbose_name='Goal Description')),
|
|
('target_date', models.DateField(blank=True, null=True, verbose_name='Target Date')),
|
|
('status', models.CharField(choices=[('NOT_STARTED', 'Not Started'), ('IN_PROGRESS', 'In Progress'), ('ACHIEVED', 'Achieved'), ('DISCONTINUED', 'Discontinued'), ('MODIFIED', 'Modified')], default='NOT_STARTED', max_length=20, verbose_name='Status')),
|
|
('progress_percentage', models.PositiveSmallIntegerField(default=0, help_text='Progress percentage (0-100)', verbose_name='Progress (%)')),
|
|
('progress_notes', models.TextField(blank=True, verbose_name='Progress Notes')),
|
|
('achieved_date', models.DateField(blank=True, null=True, verbose_name='Achieved Date')),
|
|
('consultation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='goals', to='psychology.psychologyconsultation', verbose_name='Consultation')),
|
|
('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='psychology_goals', to='core.patient', verbose_name='Patient')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Psychology Goal',
|
|
'verbose_name_plural': 'Psychology Goals',
|
|
'ordering': ['patient', 'target_date'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PsychologyProgressReport',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('report_date', models.DateField(verbose_name='Report Date')),
|
|
('treatment_start_date', models.DateField(blank=True, null=True, verbose_name='Treatment Start Date')),
|
|
('sessions_scheduled', models.PositiveIntegerField(default=0, verbose_name='Sessions Scheduled')),
|
|
('sessions_attended', models.PositiveIntegerField(default=0, verbose_name='Sessions Attended')),
|
|
('presenting_problems_summary', models.TextField(blank=True, verbose_name='Presenting Problems Summary')),
|
|
('treatment_provided', models.TextField(blank=True, verbose_name='Treatment Provided')),
|
|
('goals_progress', models.TextField(blank=True, verbose_name='Progress Toward Goals')),
|
|
('overall_progress', models.TextField(blank=True, verbose_name='Overall Progress')),
|
|
('current_functioning', models.TextField(blank=True, verbose_name='Current Functioning')),
|
|
('current_symptoms', models.TextField(blank=True, verbose_name='Current Symptoms')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('continue_treatment', models.BooleanField(default=True, verbose_name='Continue Treatment')),
|
|
('discharge_plan', models.TextField(blank=True, verbose_name='Discharge Plan')),
|
|
('prognosis', models.TextField(blank=True, verbose_name='Prognosis')),
|
|
('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='psychology_progress_reports', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_progress_reports_provided', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_signed', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Psychology Progress Report',
|
|
'verbose_name_plural': 'Psychology Progress Reports',
|
|
'ordering': ['-report_date', '-created_at'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PsychologySession',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('session_number', models.PositiveIntegerField(verbose_name='Session Number')),
|
|
('session_date', models.DateField(verbose_name='Session Date')),
|
|
('session_type', models.CharField(choices=[('INDIVIDUAL', 'Individual Therapy'), ('GROUP', 'Group Therapy'), ('FAMILY', 'Family Therapy'), ('PARENT_TRAINING', 'Parent Training'), ('CONSULTATION', 'Consultation')], max_length=50, verbose_name='Session Type')),
|
|
('therapy_modality', models.CharField(blank=True, choices=[('CBT', 'Cognitive Behavioral Therapy'), ('DBT', 'Dialectical Behavior Therapy'), ('PSYCHODYNAMIC', 'Psychodynamic Therapy'), ('HUMANISTIC', 'Humanistic Therapy'), ('PLAY_THERAPY', 'Play Therapy'), ('ART_THERAPY', 'Art Therapy'), ('MINDFULNESS', 'Mindfulness-Based Therapy'), ('SOLUTION_FOCUSED', 'Solution-Focused Therapy'), ('OTHER', 'Other')], max_length=50, verbose_name='Therapy Modality')),
|
|
('duration_minutes', models.PositiveIntegerField(blank=True, null=True, verbose_name='Duration (minutes)')),
|
|
('presenting_issues', models.TextField(blank=True, verbose_name='Presenting Issues This Session')),
|
|
('interventions_used', models.TextField(blank=True, verbose_name='Interventions Used')),
|
|
('client_response', models.TextField(blank=True, verbose_name='Client Response to Interventions')),
|
|
('progress_toward_goals', models.TextField(blank=True, verbose_name='Progress Toward Goals')),
|
|
('behavioral_observations', models.TextField(blank=True, verbose_name='Behavioral Observations')),
|
|
('mood_affect', models.CharField(blank=True, max_length=200, verbose_name='Mood & Affect')),
|
|
('current_risk_level', models.CharField(blank=True, choices=[('NONE', 'None'), ('LOW', 'Low'), ('MODERATE', 'Moderate'), ('HIGH', 'High')], max_length=50, verbose_name='Current Risk Level')),
|
|
('risk_notes', models.TextField(blank=True, verbose_name='Risk Assessment Notes')),
|
|
('homework_assigned', models.TextField(blank=True, verbose_name='Homework Assigned')),
|
|
('plan_for_next_session', models.TextField(blank=True, verbose_name='Plan for Next Session')),
|
|
('clinical_notes', models.TextField(blank=True, verbose_name='Additional Clinical Notes')),
|
|
('appointment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_sessions', to='appointments.appointment', verbose_name='Appointment')),
|
|
('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='psychology_sessions', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_sessions_provided', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_signed', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Psychology Session',
|
|
'verbose_name_plural': 'Psychology Sessions',
|
|
'ordering': ['-session_date', '-session_number'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PsychologyAssessment',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
|
|
('signed_at', models.DateTimeField(blank=True, null=True, verbose_name='Signed At')),
|
|
('assessment_date', models.DateField(verbose_name='Assessment Date')),
|
|
('assessment_type', models.CharField(choices=[('COGNITIVE', 'Cognitive Assessment'), ('DEVELOPMENTAL', 'Developmental Assessment'), ('BEHAVIORAL', 'Behavioral Assessment'), ('EMOTIONAL', 'Emotional Assessment'), ('PERSONALITY', 'Personality Assessment'), ('NEUROPSYCH', 'Neuropsychological Assessment'), ('COMPREHENSIVE', 'Comprehensive Assessment')], max_length=50, verbose_name='Assessment Type')),
|
|
('reason_for_assessment', models.TextField(verbose_name='Reason for Assessment')),
|
|
('relevant_history', models.TextField(blank=True, verbose_name='Relevant History')),
|
|
('current_medications', models.TextField(blank=True, verbose_name='Current Medications')),
|
|
('tests_administered', models.JSONField(blank=True, default=list, help_text='List of tests with scores and interpretations', verbose_name='Tests Administered')),
|
|
('behavioral_observations', models.TextField(blank=True, verbose_name='Behavioral Observations During Testing')),
|
|
('test_validity', models.TextField(blank=True, verbose_name='Test Validity & Reliability')),
|
|
('cognitive_functioning', models.TextField(blank=True, verbose_name='Cognitive Functioning')),
|
|
('emotional_functioning', models.TextField(blank=True, verbose_name='Emotional Functioning')),
|
|
('behavioral_functioning', models.TextField(blank=True, verbose_name='Behavioral Functioning')),
|
|
('social_functioning', models.TextField(blank=True, verbose_name='Social Functioning')),
|
|
('adaptive_functioning', models.TextField(blank=True, verbose_name='Adaptive Functioning')),
|
|
('strengths', models.TextField(blank=True, verbose_name='Strengths')),
|
|
('weaknesses', models.TextField(blank=True, verbose_name='Areas of Concern/Weakness')),
|
|
('diagnostic_impressions', models.TextField(blank=True, verbose_name='Diagnostic Impressions')),
|
|
('dsm5_diagnosis', models.TextField(blank=True, verbose_name='DSM-5 Diagnosis')),
|
|
('recommendations', models.TextField(blank=True, verbose_name='Recommendations')),
|
|
('treatment_recommendations', models.TextField(blank=True, verbose_name='Treatment Recommendations')),
|
|
('educational_recommendations', models.TextField(blank=True, verbose_name='Educational Recommendations')),
|
|
('follow_up_recommendations', models.TextField(blank=True, verbose_name='Follow-up Recommendations')),
|
|
('appointment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_assessments', to='appointments.appointment', verbose_name='Appointment')),
|
|
('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='psychology_assessments', to='core.patient', verbose_name='Patient')),
|
|
('provider', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='psychology_assessments_provided', to=settings.AUTH_USER_MODEL, verbose_name='Provider')),
|
|
('signed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_signed', to=settings.AUTH_USER_MODEL, verbose_name='Signed By')),
|
|
('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Psychology Assessment',
|
|
'verbose_name_plural': 'Psychology Assessments',
|
|
'ordering': ['-assessment_date', '-created_at'],
|
|
'indexes': [models.Index(fields=['patient', 'assessment_date'], name='psychology__patient_398da9_idx'), models.Index(fields=['provider', 'assessment_date'], name='psychology__provide_7d65be_idx'), models.Index(fields=['assessment_type'], name='psychology__assessm_2663dd_idx'), models.Index(fields=['tenant', 'assessment_date'], name='psychology__tenant__b90265_idx')],
|
|
},
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyconsultation',
|
|
index=models.Index(fields=['patient', 'consultation_date'], name='psychology__patient_5ad97c_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyconsultation',
|
|
index=models.Index(fields=['provider', 'consultation_date'], name='psychology__provide_6c76d0_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyconsultation',
|
|
index=models.Index(fields=['referral_reason'], name='psychology__referra_bee692_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyconsultation',
|
|
index=models.Index(fields=['tenant', 'consultation_date'], name='psychology__tenant__8c9195_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyprogressreport',
|
|
index=models.Index(fields=['patient', 'report_date'], name='psychology__patient_8c1836_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyprogressreport',
|
|
index=models.Index(fields=['provider', 'report_date'], name='psychology__provide_a07775_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologyprogressreport',
|
|
index=models.Index(fields=['tenant', 'report_date'], name='psychology__tenant__57bad4_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologysession',
|
|
index=models.Index(fields=['patient', 'session_date'], name='psychology__patient_8040e5_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologysession',
|
|
index=models.Index(fields=['provider', 'session_date'], name='psychology__provide_e160be_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologysession',
|
|
index=models.Index(fields=['session_number'], name='psychology__session_67c980_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='psychologysession',
|
|
index=models.Index(fields=['tenant', 'session_date'], name='psychology__tenant__a350a3_idx'),
|
|
),
|
|
]
|