527 lines
18 KiB
Python
527 lines
18 KiB
Python
# Generated by Django 5.2.7 on 2025-10-06 21:15
|
|
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
("appointments", "0001_initial"),
|
|
("core", "0001_initial"),
|
|
("hr", "0001_initial"),
|
|
("patients", "0001_initial"),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name="appointmentrequest",
|
|
name="patient",
|
|
field=models.ForeignKey(
|
|
help_text="Patient requesting appointment",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="appointment_requests",
|
|
to="patients.patientprofile",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="appointmentrequest",
|
|
name="provider",
|
|
field=models.ForeignKey(
|
|
help_text="Healthcare provider",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="provider_appointments",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="appointmentrequest",
|
|
name="rescheduled_from",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="Original appointment if rescheduled",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="rescheduled_appointments",
|
|
to="appointments.appointmentrequest",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="appointmentrequest",
|
|
name="tenant",
|
|
field=models.ForeignKey(
|
|
help_text="Organization tenant",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="appointment_requests",
|
|
to="core.tenant",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="appointmenttemplate",
|
|
name="created_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who created the template",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="created_appointment_templates",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="appointmenttemplate",
|
|
name="tenant",
|
|
field=models.ForeignKey(
|
|
help_text="Organization tenant",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="appointment_templates",
|
|
to="core.tenant",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="queueentry",
|
|
name="appointment",
|
|
field=models.ForeignKey(
|
|
help_text="Associated appointment",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="queue_entries",
|
|
to="appointments.appointmentrequest",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="queueentry",
|
|
name="assigned_provider",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="Assigned provider",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="assigned_queue_entries",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="queueentry",
|
|
name="patient",
|
|
field=models.ForeignKey(
|
|
help_text="Patient in queue",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="queue_entries",
|
|
to="patients.patientprofile",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="queueentry",
|
|
name="updated_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who last updated entry",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="updated_queue_entries",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="slotavailability",
|
|
name="created_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who created the slot",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="created_availability_slots",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="slotavailability",
|
|
name="provider",
|
|
field=models.ForeignKey(
|
|
help_text="Healthcare provider",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="availability_slots",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="slotavailability",
|
|
name="tenant",
|
|
field=models.ForeignKey(
|
|
help_text="Organization tenant",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="availability_slots",
|
|
to="core.tenant",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="telemedicinesession",
|
|
name="appointment",
|
|
field=models.OneToOneField(
|
|
help_text="Associated appointment",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="telemedicine_session",
|
|
to="appointments.appointmentrequest",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="telemedicinesession",
|
|
name="created_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who created the session",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="created_telemedicine_sessions",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="created_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who created the waiting list entry",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="created_waiting_list_entries",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="department",
|
|
field=models.ForeignKey(
|
|
help_text="Department for appointment",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="waiting_list_entries",
|
|
to="hr.department",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="patient",
|
|
field=models.ForeignKey(
|
|
help_text="Patient on waiting list",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="waiting_list_entries",
|
|
to="patients.patientprofile",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="provider",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="Preferred healthcare provider",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="provider_waiting_list",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="removed_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who removed entry from waiting list",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="removed_waiting_list_entries",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="scheduled_appointment",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="Scheduled appointment from waiting list",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="waiting_list_entry",
|
|
to="appointments.appointmentrequest",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglist",
|
|
name="tenant",
|
|
field=models.ForeignKey(
|
|
help_text="Organization tenant",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="waiting_list_entries",
|
|
to="core.tenant",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglistcontactlog",
|
|
name="contacted_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="Staff member who made contact",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitinglistcontactlog",
|
|
name="waiting_list_entry",
|
|
field=models.ForeignKey(
|
|
help_text="Associated waiting list entry",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="contact_logs",
|
|
to="appointments.waitinglist",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitingqueue",
|
|
name="created_by",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
help_text="User who created the queue",
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="created_waiting_queues",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitingqueue",
|
|
name="providers",
|
|
field=models.ManyToManyField(
|
|
blank=True,
|
|
help_text="Providers associated with this queue",
|
|
related_name="waiting_queues",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="waitingqueue",
|
|
name="tenant",
|
|
field=models.ForeignKey(
|
|
help_text="Organization tenant",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="waiting_queues",
|
|
to="core.tenant",
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name="queueentry",
|
|
name="queue",
|
|
field=models.ForeignKey(
|
|
help_text="Waiting queue",
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="queue_entries",
|
|
to="appointments.waitingqueue",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["tenant", "status"], name="appointment_tenant__979096_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["patient", "status"], name="appointment_patient_803ab4_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["provider", "scheduled_datetime"],
|
|
name="appointment_provide_ef6955_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["scheduled_datetime"], name="appointment_schedul_8f6c0e_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["priority", "urgency_score"],
|
|
name="appointment_priorit_cdad1a_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmentrequest",
|
|
index=models.Index(
|
|
fields=["appointment_type", "specialty"],
|
|
name="appointment_appoint_49fcc4_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmenttemplate",
|
|
index=models.Index(
|
|
fields=["tenant", "specialty"], name="appointment_tenant__8f5ab7_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmenttemplate",
|
|
index=models.Index(
|
|
fields=["appointment_type"], name="appointment_appoint_da9846_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="appointmenttemplate",
|
|
index=models.Index(
|
|
fields=["is_active"], name="appointment_is_acti_953e67_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="slotavailability",
|
|
index=models.Index(
|
|
fields=["tenant", "provider", "date"],
|
|
name="appointment_tenant__d41564_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="slotavailability",
|
|
index=models.Index(
|
|
fields=["date", "start_time"], name="appointment_date_e6d843_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="slotavailability",
|
|
index=models.Index(
|
|
fields=["specialty"], name="appointment_special_158174_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="slotavailability",
|
|
index=models.Index(
|
|
fields=["is_active", "is_blocked"],
|
|
name="appointment_is_acti_4bd0a5_idx",
|
|
),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name="slotavailability",
|
|
unique_together={("provider", "date", "start_time")},
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="telemedicinesession",
|
|
index=models.Index(
|
|
fields=["appointment"], name="appointment_appoint_34f472_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="telemedicinesession",
|
|
index=models.Index(fields=["status"], name="appointment_status_f49676_idx"),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="telemedicinesession",
|
|
index=models.Index(
|
|
fields=["scheduled_start"], name="appointment_schedul_8a4e8e_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["tenant", "status"], name="appointment_tenant__a558da_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["patient", "status"], name="appointment_patient_73f03d_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["department", "specialty", "status"],
|
|
name="appointment_departm_78fd70_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["priority", "urgency_score"],
|
|
name="appointment_priorit_30fb90_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["status", "created_at"], name="appointment_status_cfe551_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglist",
|
|
index=models.Index(
|
|
fields=["provider", "status"], name="appointment_provide_dd6c2b_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglistcontactlog",
|
|
index=models.Index(
|
|
fields=["waiting_list_entry", "contact_date"],
|
|
name="appointment_waiting_50d8ac_idx",
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglistcontactlog",
|
|
index=models.Index(
|
|
fields=["contact_outcome"], name="appointment_contact_ad9c45_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitinglistcontactlog",
|
|
index=models.Index(
|
|
fields=["next_contact_date"], name="appointment_next_co_b29984_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitingqueue",
|
|
index=models.Index(
|
|
fields=["tenant", "queue_type"], name="appointment_tenant__e21f2a_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitingqueue",
|
|
index=models.Index(
|
|
fields=["specialty"], name="appointment_special_b50647_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="waitingqueue",
|
|
index=models.Index(
|
|
fields=["is_active"], name="appointment_is_acti_e2f2a7_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="queueentry",
|
|
index=models.Index(
|
|
fields=["queue", "status"], name="appointment_queue_i_d69f8c_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="queueentry",
|
|
index=models.Index(
|
|
fields=["patient"], name="appointment_patient_beccf1_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="queueentry",
|
|
index=models.Index(
|
|
fields=["priority_score"], name="appointment_priorit_48b785_idx"
|
|
),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name="queueentry",
|
|
index=models.Index(
|
|
fields=["joined_at"], name="appointment_joined__709843_idx"
|
|
),
|
|
),
|
|
]
|