# Generated by Django 5.2.7 on 2025-10-27 10:50 import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("core", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="ReferralAutoRule", 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")), ("name", models.CharField(max_length=200, verbose_name="Rule Name")), ("description", models.TextField(blank=True, verbose_name="Description")), ( "trigger_keywords", models.JSONField( default=list, help_text="Keywords in diagnosis/assessment that trigger this rule", verbose_name="Trigger Keywords", ), ), ( "target_external_provider", models.CharField( blank=True, max_length=200, verbose_name="Target External Provider" ), ), ( "urgency", models.CharField( choices=[ ("ROUTINE", "Routine"), ("URGENT", "Urgent"), ("EMERGENCY", "Emergency"), ], default="ROUTINE", max_length=20, verbose_name="Default Urgency", ), ), ( "auto_create", models.BooleanField( default=False, help_text="Automatically create referral (vs. just suggest)", verbose_name="Auto Create", ), ), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ( "target_clinic", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="referral_auto_rules_target", to="core.clinic", verbose_name="Target Clinic", ), ), ( "tenant", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), ( "trigger_clinic", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="referral_auto_rules", to="core.clinic", verbose_name="Trigger Clinic", ), ), ], options={ "verbose_name": "Referral Auto Rule", "verbose_name_plural": "Referral Auto Rules", "ordering": ["trigger_clinic", "name"], }, ), migrations.CreateModel( name="Referral", 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")), ( "from_discipline", models.CharField( choices=[ ("MEDICAL", "Medical"), ("NURSING", "Nursing"), ("OT", "Occupational Therapy"), ("SLP", "Speech-Language Pathology"), ("ABA", "Applied Behavior Analysis"), ("EXTERNAL", "External Provider"), ], max_length=20, verbose_name="From Discipline", ), ), ( "to_discipline", models.CharField( blank=True, choices=[ ("MEDICAL", "Medical"), ("NURSING", "Nursing"), ("OT", "Occupational Therapy"), ("SLP", "Speech-Language Pathology"), ("ABA", "Applied Behavior Analysis"), ("EXTERNAL", "External Provider"), ], max_length=20, verbose_name="To Discipline", ), ), ( "external_provider_name", models.CharField( blank=True, help_text="Name of external provider if referral is external", max_length=200, verbose_name="External Provider Name", ), ), ( "external_provider_contact", models.CharField( blank=True, max_length=200, verbose_name="External Provider Contact" ), ), ("reason", models.TextField(verbose_name="Reason for Referral")), ( "urgency", models.CharField( choices=[ ("ROUTINE", "Routine"), ("URGENT", "Urgent"), ("EMERGENCY", "Emergency"), ], default="ROUTINE", max_length=20, verbose_name="Urgency", ), ), ( "status", models.CharField( choices=[ ("PENDING", "Pending"), ("ACCEPTED", "Accepted"), ("REJECTED", "Rejected"), ("COMPLETED", "Completed"), ("CANCELLED", "Cancelled"), ], default="PENDING", max_length=20, verbose_name="Status", ), ), ( "responded_at", models.DateTimeField(blank=True, null=True, verbose_name="Responded At"), ), ( "completed_at", models.DateTimeField(blank=True, null=True, verbose_name="Completed At"), ), ("notes", models.TextField(blank=True, verbose_name="Notes")), ("response_notes", models.TextField(blank=True, verbose_name="Response Notes")), ( "clinical_summary", models.TextField( blank=True, help_text="Summary of clinical findings to share with receiving provider", verbose_name="Clinical Summary", ), ), ( "from_clinic", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="referrals_from", to="core.clinic", verbose_name="From Clinic", ), ), ( "from_provider", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="referrals_made", to=settings.AUTH_USER_MODEL, verbose_name="From Provider", ), ), ( "patient", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="referrals", to="core.patient", verbose_name="Patient", ), ), ( "tenant", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), ( "to_clinic", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="referrals_to", to="core.clinic", verbose_name="To Clinic", ), ), ( "to_provider", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="referrals_received", to=settings.AUTH_USER_MODEL, verbose_name="To Provider", ), ), ], options={ "verbose_name": "Referral", "verbose_name_plural": "Referrals", "ordering": ["-created_at"], "indexes": [ models.Index( fields=["patient", "status"], name="referrals_r_patient_fc132b_idx" ), models.Index( fields=["from_clinic", "created_at"], name="referrals_r_from_cl_8eeff2_idx" ), models.Index( fields=["to_clinic", "status"], name="referrals_r_to_clin_2b5b90_idx" ), models.Index( fields=["status", "urgency"], name="referrals_r_status_72952a_idx" ), models.Index( fields=["tenant", "created_at"], name="referrals_r_tenant__774b28_idx" ), ], }, ), ]