# Generated by Django 5.2.7 on 2025-11-09 19:45 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): dependencies = [ ("appointments", "0003_add_no_show_tracking"), ("core", "0009_add_consent_expiry_date"), ("referrals", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="HistoricalReferral", 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"), ), ( "referral_type", models.CharField( choices=[ ("INITIAL_ASSESSMENT", "Initial Assessment"), ("CONSULTATION", "Consultation"), ("FOLLOW_UP", "Follow-up"), ("SECOND_OPINION", "Second Opinion"), ], default="CONSULTATION", max_length=30, verbose_name="Referral Type", ), ), ( "priority", models.CharField( choices=[ ("ROUTINE", "Routine"), ("URGENT", "Urgent"), ("EMERGENCY", "Emergency"), ], default="ROUTINE", max_length=15, verbose_name="Priority", ), ), ( "reason", models.TextField( help_text="Clinical reason for referring to another department", verbose_name="Reason for Referral", ), ), ( "clinical_notes", models.TextField( blank=True, help_text="Additional clinical information for receiving clinic", verbose_name="Clinical Notes", ), ), ( "status", models.CharField( choices=[ ("PENDING", "Pending"), ("ACKNOWLEDGED", "Acknowledged"), ("APPOINTMENT_BOOKED", "Appointment Booked"), ("COMPLETED", "Completed"), ("DECLINED", "Declined"), ("CANCELLED", "Cancelled"), ], default="PENDING", max_length=30, verbose_name="Status", ), ), ( "acknowledged_at", models.DateTimeField(blank=True, null=True, verbose_name="Acknowledged At"), ), ( "appointment_booked_at", models.DateTimeField( blank=True, null=True, verbose_name="Appointment Booked At" ), ), ( "completed_at", models.DateTimeField(blank=True, null=True, verbose_name="Completed At"), ), ( "outcome_notes", models.TextField( blank=True, help_text="Notes about the referral outcome", verbose_name="Outcome Notes", ), ), ( "declined_at", models.DateTimeField(blank=True, null=True, verbose_name="Declined At"), ), ("decline_reason", models.TextField(blank=True, verbose_name="Decline Reason")), ("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 ), ), ], options={ "verbose_name": "historical Referral", "verbose_name_plural": "historical Referrals", "ordering": ("-history_date", "-history_id"), "get_latest_by": ("history_date", "history_id"), }, bases=(simple_history.models.HistoricalChanges, models.Model), ), migrations.RemoveField( model_name="referralautorule", name="target_clinic", ), migrations.RemoveField( model_name="referralautorule", name="tenant", ), migrations.RemoveField( model_name="referralautorule", name="trigger_clinic", ), migrations.RemoveIndex( model_name="referral", name="referrals_r_from_cl_8eeff2_idx", ), migrations.RemoveIndex( model_name="referral", name="referrals_r_status_72952a_idx", ), migrations.RemoveIndex( model_name="referral", name="referrals_r_tenant__774b28_idx", ), migrations.RemoveField( model_name="referral", name="clinical_summary", ), migrations.RemoveField( model_name="referral", name="external_provider_contact", ), migrations.RemoveField( model_name="referral", name="external_provider_name", ), migrations.RemoveField( model_name="referral", name="from_discipline", ), migrations.RemoveField( model_name="referral", name="from_provider", ), migrations.RemoveField( model_name="referral", name="notes", ), migrations.RemoveField( model_name="referral", name="responded_at", ), migrations.RemoveField( model_name="referral", name="response_notes", ), migrations.RemoveField( model_name="referral", name="to_discipline", ), migrations.RemoveField( model_name="referral", name="to_provider", ), migrations.RemoveField( model_name="referral", name="urgency", ), migrations.AddField( model_name="referral", name="acknowledged_at", field=models.DateTimeField(blank=True, null=True, verbose_name="Acknowledged At"), ), migrations.AddField( model_name="referral", name="acknowledged_by", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="acknowledged_referrals", to=settings.AUTH_USER_MODEL, verbose_name="Acknowledged By", ), ), migrations.AddField( model_name="referral", name="appointment", field=models.ForeignKey( blank=True, help_text="Appointment booked for this referral", null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="referrals", to="appointments.appointment", verbose_name="Appointment", ), ), migrations.AddField( model_name="referral", name="appointment_booked_at", field=models.DateTimeField(blank=True, null=True, verbose_name="Appointment Booked At"), ), migrations.AddField( model_name="referral", name="appointment_booked_by", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="booked_referral_appointments", to=settings.AUTH_USER_MODEL, verbose_name="Appointment Booked By", ), ), migrations.AddField( model_name="referral", name="clinical_notes", field=models.TextField( blank=True, help_text="Additional clinical information for receiving clinic", verbose_name="Clinical Notes", ), ), migrations.AddField( model_name="referral", name="decline_reason", field=models.TextField(blank=True, verbose_name="Decline Reason"), ), migrations.AddField( model_name="referral", name="declined_at", field=models.DateTimeField(blank=True, null=True, verbose_name="Declined At"), ), migrations.AddField( model_name="referral", name="declined_by", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="declined_referrals", to=settings.AUTH_USER_MODEL, verbose_name="Declined By", ), ), migrations.AddField( model_name="referral", name="outcome_notes", field=models.TextField( blank=True, help_text="Notes about the referral outcome", verbose_name="Outcome Notes", ), ), migrations.AddField( model_name="referral", name="priority", field=models.CharField( choices=[("ROUTINE", "Routine"), ("URGENT", "Urgent"), ("EMERGENCY", "Emergency")], default="ROUTINE", max_length=15, verbose_name="Priority", ), ), migrations.AddField( model_name="referral", name="referral_type", field=models.CharField( choices=[ ("INITIAL_ASSESSMENT", "Initial Assessment"), ("CONSULTATION", "Consultation"), ("FOLLOW_UP", "Follow-up"), ("SECOND_OPINION", "Second Opinion"), ], default="CONSULTATION", max_length=30, verbose_name="Referral Type", ), ), migrations.AddField( model_name="referral", name="referred_by", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="made_referrals", to=settings.AUTH_USER_MODEL, verbose_name="Referred By", ), ), migrations.AddField( model_name="referral", name="referred_to", field=models.ForeignKey( blank=True, help_text="Specific therapist if known", null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="received_referrals", to=settings.AUTH_USER_MODEL, verbose_name="Referred To", ), ), migrations.AlterField( model_name="referral", name="from_clinic", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="outgoing_referrals", to="core.clinic", verbose_name="From Clinic", ), ), migrations.AlterField( model_name="referral", name="reason", field=models.TextField( help_text="Clinical reason for referring to another department", verbose_name="Reason for Referral", ), ), migrations.AlterField( model_name="referral", name="status", field=models.CharField( choices=[ ("PENDING", "Pending"), ("ACKNOWLEDGED", "Acknowledged"), ("APPOINTMENT_BOOKED", "Appointment Booked"), ("COMPLETED", "Completed"), ("DECLINED", "Declined"), ("CANCELLED", "Cancelled"), ], default="PENDING", max_length=30, verbose_name="Status", ), ), migrations.AlterField( model_name="referral", name="to_clinic", field=models.ForeignKey( default=1, on_delete=django.db.models.deletion.CASCADE, related_name="incoming_referrals", to="core.clinic", verbose_name="To Clinic", ), preserve_default=False, ), migrations.AddIndex( model_name="referral", index=models.Index( fields=["from_clinic", "status"], name="referrals_r_from_cl_b2b98f_idx" ), ), migrations.AddIndex( model_name="referral", index=models.Index( fields=["referred_by", "status"], name="referrals_r_referre_408b44_idx" ), ), migrations.AddIndex( model_name="referral", index=models.Index( fields=["status", "created_at"], name="referrals_r_status_2b2ceb_idx" ), ), migrations.AddIndex( model_name="referral", index=models.Index(fields=["tenant", "status"], name="referrals_r_tenant__8d626d_idx"), ), migrations.AddField( model_name="historicalreferral", name="acknowledged_by", field=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="Acknowledged By", ), ), migrations.AddField( model_name="historicalreferral", name="appointment", field=models.ForeignKey( blank=True, db_constraint=False, help_text="Appointment booked for this referral", null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name="+", to="appointments.appointment", verbose_name="Appointment", ), ), migrations.AddField( model_name="historicalreferral", name="appointment_booked_by", field=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="Appointment Booked By", ), ), migrations.AddField( model_name="historicalreferral", name="declined_by", field=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="Declined By", ), ), migrations.AddField( model_name="historicalreferral", name="from_clinic", field=models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name="+", to="core.clinic", verbose_name="From Clinic", ), ), migrations.AddField( model_name="historicalreferral", name="history_user", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), migrations.AddField( model_name="historicalreferral", name="patient", field=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", ), ), migrations.AddField( model_name="historicalreferral", name="referred_by", field=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="Referred By", ), ), migrations.AddField( model_name="historicalreferral", name="referred_to", field=models.ForeignKey( blank=True, db_constraint=False, help_text="Specific therapist if known", null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name="+", to=settings.AUTH_USER_MODEL, verbose_name="Referred To", ), ), migrations.AddField( model_name="historicalreferral", name="tenant", field=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", ), ), migrations.AddField( model_name="historicalreferral", name="to_clinic", field=models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name="+", to="core.clinic", verbose_name="To Clinic", ), ), migrations.DeleteModel( name="ReferralAutoRule", ), ]