# 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'), ), ]