agdar/referrals/migrations/0002_historicalreferral_and_more.py
Marwan Alwali 2f1681b18c update
2025-11-11 13:44:48 +03:00

559 lines
19 KiB
Python

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