# Generated by Django 5.2.6 on 2025-09-19 10:58 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" ), ), ]