agdar/slp/migrations/0001_initial.py
2025-11-02 14:35:35 +03:00

1394 lines
56 KiB
Python

# Generated by Django 5.2.7 on 2025-10-27 10:50
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", "0001_initial"),
("core", "0001_initial"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="HistoricalSLPAssessment",
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")),
(
"diagnosis_statement",
models.TextField(blank=True, verbose_name="Diagnosis Statement"),
),
("case_history", models.TextField(blank=True, verbose_name="Case History")),
("prenatal_history", models.TextField(blank=True, verbose_name="Prenatal History")),
(
"perinatal_history",
models.TextField(blank=True, verbose_name="Perinatal History"),
),
(
"postnatal_history",
models.TextField(blank=True, verbose_name="Postnatal History"),
),
(
"developmental_history",
models.TextField(blank=True, verbose_name="Developmental History"),
),
("medical_status", models.TextField(blank=True, verbose_name="Medical Status")),
(
"speech_language_detail",
models.TextField(
blank=True,
help_text="Detailed speech and language assessment",
verbose_name="Speech/Language Detail",
),
),
(
"gfta3_score",
models.CharField(
blank=True,
help_text="Goldman-Fristoe Test of Articulation-3 score",
max_length=100,
verbose_name="GFTA-3 Score",
),
),
(
"jat_score",
models.CharField(
blank=True,
help_text="Joliet Articulation Test score",
max_length=100,
verbose_name="JAT Score",
),
),
(
"ssi_score",
models.CharField(
blank=True,
help_text="Stuttering Severity Instrument score",
max_length=100,
verbose_name="SSI Score",
),
),
(
"oral_mechanism",
models.TextField(
blank=True,
help_text="Oral mechanism examination findings",
verbose_name="Oral Mechanism",
),
),
(
"rossetti_domains",
models.TextField(
blank=True,
help_text="Rossetti Infant-Toddler Language Scale domains and age levels",
verbose_name="Rossetti Domains",
),
),
(
"joint_attention_skills",
models.TextField(
blank=True,
help_text="Joint attention skills assessment (present/absent)",
verbose_name="Joint Attention Skills",
),
),
("clinical_summary", models.TextField(blank=True, verbose_name="Clinical Summary")),
("recommendations", models.TextField(blank=True, verbose_name="Recommendations")),
(
"frequency_per_week",
models.PositiveIntegerField(
blank=True,
help_text="Recommended frequency (sessions per week)",
null=True,
verbose_name="Frequency (per week)",
),
),
(
"session_duration_minutes",
models.PositiveIntegerField(
blank=True, null=True, verbose_name="Session Duration (minutes)"
),
),
(
"referral_rules",
models.TextField(
blank=True,
help_text="Referral recommendations to other services",
verbose_name="Referral Rules",
),
),
("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 SLP Assessment",
"verbose_name_plural": "historical SLP Assessments",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalSLPConsult",
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")),
(
"consult_variant",
models.CharField(
choices=[
("ASD", "Autism Spectrum Disorder"),
("LANGUAGE_DELAY", "Language Delay"),
("FLUENCY", "Fluency Disorder"),
],
max_length=20,
verbose_name="Consultation Variant",
),
),
("primary_concern", models.TextField(blank=True, verbose_name="Primary Concern")),
(
"suspected_areas",
models.TextField(
blank=True,
help_text="List of suspected problem areas",
verbose_name="Suspected Areas",
),
),
(
"type_of_service",
models.CharField(
choices=[
("CONSULT", "Consultation"),
("EVAL", "Evaluation"),
("INTERVENTION", "Intervention"),
("PARENT_TRAINING", "Parent Training"),
],
max_length=20,
verbose_name="Type of Service",
),
),
(
"communication_modes",
models.TextField(
blank=True,
help_text="Communication modes checklist (verbal, gestures, AAC, etc.)",
verbose_name="Communication Modes",
),
),
(
"screen_time_hours",
models.PositiveIntegerField(
blank=True, null=True, verbose_name="Screen Time (hours/day)"
),
),
(
"variant_questionnaire",
models.TextField(
blank=True,
help_text="Variant-specific questions and answers",
verbose_name="Variant Questionnaire",
),
),
(
"skills_to_observe",
models.TextField(
blank=True,
help_text="Skills observation matrix",
verbose_name="Skills to Observe",
),
),
(
"oral_motor_screening",
models.TextField(
blank=True,
help_text="Oral motor screening results",
verbose_name="Oral Motor Screening",
),
),
("recommendations", models.TextField(blank=True, verbose_name="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 SLP Consultation",
"verbose_name_plural": "historical SLP Consultations",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalSLPProgressReport",
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")),
(
"sessions_scheduled",
models.PositiveIntegerField(default=0, verbose_name="Sessions Scheduled"),
),
(
"sessions_attended",
models.PositiveIntegerField(default=0, verbose_name="Sessions Attended"),
),
("final_diagnosis", models.TextField(blank=True, verbose_name="Final Diagnosis")),
(
"objectives_progress",
models.TextField(
blank=True,
help_text="Progress on each objective with percentage accuracy",
verbose_name="Objectives Progress",
),
),
(
"plan_details",
models.TextField(
blank=True,
help_text="Plan details (continue/add/fade prompts/generalization)",
verbose_name="Plan Details",
),
),
("overall_progress", models.TextField(blank=True, verbose_name="Overall Progress")),
(
"participation_level",
models.TextField(blank=True, verbose_name="Participation Level"),
),
(
"attendance_rate",
models.DecimalField(
blank=True,
decimal_places=2,
help_text="Attendance rate percentage",
max_digits=5,
null=True,
verbose_name="Attendance Rate (%)",
),
),
("carryover_level", models.TextField(blank=True, verbose_name="Carryover Level")),
("prognosis", models.TextField(blank=True, verbose_name="Prognosis")),
("recommendations", models.TextField(blank=True, verbose_name="Recommendations")),
(
"package_sessions_count",
models.PositiveIntegerField(
blank=True,
help_text="Recommended number of sessions in package",
null=True,
verbose_name="Package Sessions Count",
),
),
(
"reassessment_needed",
models.BooleanField(default=False, verbose_name="Reassessment 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
),
),
(
"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 SLP Progress Report",
"verbose_name_plural": "historical SLP Progress Reports",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="SLPIntervention",
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_time", models.TimeField(verbose_name="Session Time")),
(
"intervention_targets_json",
models.TextField(
blank=True,
default="[]",
help_text="JSON array of intervention targets with SOAP format",
verbose_name="Intervention Targets (JSON)",
),
),
(
"appointment",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_interventions",
to="appointments.appointment",
verbose_name="Appointment",
),
),
(
"patient",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="slp_interventions",
to="core.patient",
verbose_name="Patient",
),
),
(
"previous_session",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="next_sessions",
to="slp.slpintervention",
verbose_name="Previous Session",
),
),
(
"provider",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_interventions_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": "SLP Intervention",
"verbose_name_plural": "SLP Interventions",
"ordering": ["-session_date", "-session_number"],
},
),
migrations.CreateModel(
name="HistoricalSLPIntervention",
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_time", models.TimeField(verbose_name="Session Time")),
(
"intervention_targets_json",
models.TextField(
blank=True,
default="[]",
help_text="JSON array of intervention targets with SOAP format",
verbose_name="Intervention Targets (JSON)",
),
),
("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",
),
),
(
"previous_session",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="slp.slpintervention",
verbose_name="Previous Session",
),
),
],
options={
"verbose_name": "historical SLP Intervention",
"verbose_name_plural": "historical SLP Interventions",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="SLPProgressReport",
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")),
(
"sessions_scheduled",
models.PositiveIntegerField(default=0, verbose_name="Sessions Scheduled"),
),
(
"sessions_attended",
models.PositiveIntegerField(default=0, verbose_name="Sessions Attended"),
),
("final_diagnosis", models.TextField(blank=True, verbose_name="Final Diagnosis")),
(
"objectives_progress",
models.TextField(
blank=True,
help_text="Progress on each objective with percentage accuracy",
verbose_name="Objectives Progress",
),
),
(
"plan_details",
models.TextField(
blank=True,
help_text="Plan details (continue/add/fade prompts/generalization)",
verbose_name="Plan Details",
),
),
("overall_progress", models.TextField(blank=True, verbose_name="Overall Progress")),
(
"participation_level",
models.TextField(blank=True, verbose_name="Participation Level"),
),
(
"attendance_rate",
models.DecimalField(
blank=True,
decimal_places=2,
help_text="Attendance rate percentage",
max_digits=5,
null=True,
verbose_name="Attendance Rate (%)",
),
),
("carryover_level", models.TextField(blank=True, verbose_name="Carryover Level")),
("prognosis", models.TextField(blank=True, verbose_name="Prognosis")),
("recommendations", models.TextField(blank=True, verbose_name="Recommendations")),
(
"package_sessions_count",
models.PositiveIntegerField(
blank=True,
help_text="Recommended number of sessions in package",
null=True,
verbose_name="Package Sessions Count",
),
),
(
"reassessment_needed",
models.BooleanField(default=False, verbose_name="Reassessment Needed"),
),
(
"patient",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="slp_progress_reports",
to="core.patient",
verbose_name="Patient",
),
),
(
"provider",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_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": "SLP Progress Report",
"verbose_name_plural": "SLP Progress Reports",
"ordering": ["-report_date", "-created_at"],
},
),
migrations.CreateModel(
name="SLPTarget",
fields=[
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"target_number",
models.PositiveSmallIntegerField(
help_text="Target number (1 or 2)", verbose_name="Target Number"
),
),
(
"subjective",
models.TextField(
blank=True, help_text="Subjective observations", verbose_name="Subjective"
),
),
(
"objective",
models.TextField(
blank=True,
help_text="Objective measurements and data",
verbose_name="Objective",
),
),
(
"assessment",
models.TextField(
blank=True, help_text="Assessment of progress", verbose_name="Assessment"
),
),
(
"plan",
models.TextField(
blank=True, help_text="Plan for next session", verbose_name="Plan"
),
),
(
"prompt_strategies",
models.TextField(
blank=True,
help_text="List of prompting strategies used",
verbose_name="Prompt Strategies",
),
),
(
"intervention",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="targets",
to="slp.slpintervention",
verbose_name="Intervention",
),
),
],
options={
"verbose_name": "SLP Target",
"verbose_name_plural": "SLP Targets",
"ordering": ["intervention", "target_number"],
},
),
migrations.CreateModel(
name="SLPAssessment",
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")),
(
"diagnosis_statement",
models.TextField(blank=True, verbose_name="Diagnosis Statement"),
),
("case_history", models.TextField(blank=True, verbose_name="Case History")),
("prenatal_history", models.TextField(blank=True, verbose_name="Prenatal History")),
(
"perinatal_history",
models.TextField(blank=True, verbose_name="Perinatal History"),
),
(
"postnatal_history",
models.TextField(blank=True, verbose_name="Postnatal History"),
),
(
"developmental_history",
models.TextField(blank=True, verbose_name="Developmental History"),
),
("medical_status", models.TextField(blank=True, verbose_name="Medical Status")),
(
"speech_language_detail",
models.TextField(
blank=True,
help_text="Detailed speech and language assessment",
verbose_name="Speech/Language Detail",
),
),
(
"gfta3_score",
models.CharField(
blank=True,
help_text="Goldman-Fristoe Test of Articulation-3 score",
max_length=100,
verbose_name="GFTA-3 Score",
),
),
(
"jat_score",
models.CharField(
blank=True,
help_text="Joliet Articulation Test score",
max_length=100,
verbose_name="JAT Score",
),
),
(
"ssi_score",
models.CharField(
blank=True,
help_text="Stuttering Severity Instrument score",
max_length=100,
verbose_name="SSI Score",
),
),
(
"oral_mechanism",
models.TextField(
blank=True,
help_text="Oral mechanism examination findings",
verbose_name="Oral Mechanism",
),
),
(
"rossetti_domains",
models.TextField(
blank=True,
help_text="Rossetti Infant-Toddler Language Scale domains and age levels",
verbose_name="Rossetti Domains",
),
),
(
"joint_attention_skills",
models.TextField(
blank=True,
help_text="Joint attention skills assessment (present/absent)",
verbose_name="Joint Attention Skills",
),
),
("clinical_summary", models.TextField(blank=True, verbose_name="Clinical Summary")),
("recommendations", models.TextField(blank=True, verbose_name="Recommendations")),
(
"frequency_per_week",
models.PositiveIntegerField(
blank=True,
help_text="Recommended frequency (sessions per week)",
null=True,
verbose_name="Frequency (per week)",
),
),
(
"session_duration_minutes",
models.PositiveIntegerField(
blank=True, null=True, verbose_name="Session Duration (minutes)"
),
),
(
"referral_rules",
models.TextField(
blank=True,
help_text="Referral recommendations to other services",
verbose_name="Referral Rules",
),
),
(
"appointment",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_assessments",
to="appointments.appointment",
verbose_name="Appointment",
),
),
(
"patient",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="slp_assessments",
to="core.patient",
verbose_name="Patient",
),
),
(
"provider",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_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": "SLP Assessment",
"verbose_name_plural": "SLP Assessments",
"ordering": ["-assessment_date", "-created_at"],
"indexes": [
models.Index(
fields=["patient", "assessment_date"], name="slp_slpasse_patient_9192ae_idx"
),
models.Index(
fields=["provider", "assessment_date"],
name="slp_slpasse_provide_8f248f_idx",
),
models.Index(
fields=["tenant", "assessment_date"], name="slp_slpasse_tenant__714a73_idx"
),
],
},
),
migrations.CreateModel(
name="SLPConsult",
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")),
(
"consult_variant",
models.CharField(
choices=[
("ASD", "Autism Spectrum Disorder"),
("LANGUAGE_DELAY", "Language Delay"),
("FLUENCY", "Fluency Disorder"),
],
max_length=20,
verbose_name="Consultation Variant",
),
),
("primary_concern", models.TextField(blank=True, verbose_name="Primary Concern")),
(
"suspected_areas",
models.TextField(
blank=True,
help_text="List of suspected problem areas",
verbose_name="Suspected Areas",
),
),
(
"type_of_service",
models.CharField(
choices=[
("CONSULT", "Consultation"),
("EVAL", "Evaluation"),
("INTERVENTION", "Intervention"),
("PARENT_TRAINING", "Parent Training"),
],
max_length=20,
verbose_name="Type of Service",
),
),
(
"communication_modes",
models.TextField(
blank=True,
help_text="Communication modes checklist (verbal, gestures, AAC, etc.)",
verbose_name="Communication Modes",
),
),
(
"screen_time_hours",
models.PositiveIntegerField(
blank=True, null=True, verbose_name="Screen Time (hours/day)"
),
),
(
"variant_questionnaire",
models.TextField(
blank=True,
help_text="Variant-specific questions and answers",
verbose_name="Variant Questionnaire",
),
),
(
"skills_to_observe",
models.TextField(
blank=True,
help_text="Skills observation matrix",
verbose_name="Skills to Observe",
),
),
(
"oral_motor_screening",
models.TextField(
blank=True,
help_text="Oral motor screening results",
verbose_name="Oral Motor Screening",
),
),
("recommendations", models.TextField(blank=True, verbose_name="Recommendations")),
(
"appointment",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_consults",
to="appointments.appointment",
verbose_name="Appointment",
),
),
(
"patient",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="slp_consults",
to="core.patient",
verbose_name="Patient",
),
),
(
"provider",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="slp_consults_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": "SLP Consultation",
"verbose_name_plural": "SLP Consultations",
"ordering": ["-consultation_date", "-created_at"],
"indexes": [
models.Index(
fields=["patient", "consultation_date"],
name="slp_slpcons_patient_b4208c_idx",
),
models.Index(
fields=["provider", "consultation_date"],
name="slp_slpcons_provide_c6a43d_idx",
),
models.Index(fields=["consult_variant"], name="slp_slpcons_consult_42d58f_idx"),
models.Index(
fields=["tenant", "consultation_date"],
name="slp_slpcons_tenant__7ea989_idx",
),
],
},
),
migrations.AddIndex(
model_name="slpintervention",
index=models.Index(
fields=["patient", "session_date"], name="slp_slpinte_patient_d50883_idx"
),
),
migrations.AddIndex(
model_name="slpintervention",
index=models.Index(
fields=["provider", "session_date"], name="slp_slpinte_provide_f9d964_idx"
),
),
migrations.AddIndex(
model_name="slpintervention",
index=models.Index(fields=["session_number"], name="slp_slpinte_session_d9281f_idx"),
),
migrations.AddIndex(
model_name="slpintervention",
index=models.Index(
fields=["tenant", "session_date"], name="slp_slpinte_tenant__050434_idx"
),
),
migrations.AddIndex(
model_name="slpprogressreport",
index=models.Index(
fields=["patient", "report_date"], name="slp_slpprog_patient_dc4316_idx"
),
),
migrations.AddIndex(
model_name="slpprogressreport",
index=models.Index(
fields=["provider", "report_date"], name="slp_slpprog_provide_eed43b_idx"
),
),
migrations.AddIndex(
model_name="slpprogressreport",
index=models.Index(
fields=["tenant", "report_date"], name="slp_slpprog_tenant__5d2e52_idx"
),
),
migrations.AlterUniqueTogether(
name="slptarget",
unique_together={("intervention", "target_number")},
),
]