# Generated by Django 5.2.7 on 2025-10-27 10:50 import django.contrib.auth.models import django.contrib.auth.validators import django.db.models.deletion import django.utils.timezone import phonenumber_field.modelfields import simple_history.models import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("auth", "0012_alter_user_first_name_max_length"), ("contenttypes", "0002_remove_content_type_name"), ] operations = [ migrations.CreateModel( name="Patient", 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")), ( "mrn", models.CharField( editable=False, max_length=20, unique=True, verbose_name="MRN" ), ), ( "national_id", models.CharField(blank=True, max_length=20, verbose_name="National ID"), ), ( "first_name_en", models.CharField(max_length=100, verbose_name="First Name (English)"), ), ( "father_name_en", models.CharField( blank=True, max_length=100, verbose_name="Father Name (English)" ), ), ( "grandfather_name_en", models.CharField( blank=True, max_length=100, verbose_name="Grandfather Name (English)" ), ), ( "last_name_en", models.CharField(max_length=100, verbose_name="Last Name (English)"), ), ( "first_name_ar", models.CharField( blank=True, max_length=100, verbose_name="First Name (Arabic)" ), ), ( "father_name_ar", models.CharField( blank=True, max_length=100, verbose_name="Father Name (Arabic)" ), ), ( "grandfather_name_ar", models.CharField( blank=True, max_length=100, verbose_name="Grandfather Name (Arabic)" ), ), ( "last_name_ar", models.CharField(blank=True, max_length=100, verbose_name="Last Name (Arabic)"), ), ("date_of_birth", models.DateField(verbose_name="Date of Birth")), ( "sex", models.CharField( choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex" ), ), ( "phone", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Phone Number" ), ), ("email", models.EmailField(blank=True, max_length=254, verbose_name="Email")), ( "caregiver_name", models.CharField(blank=True, max_length=200, verbose_name="Caregiver Name"), ), ( "caregiver_phone", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Caregiver Phone" ), ), ( "caregiver_relationship", models.CharField( blank=True, max_length=100, verbose_name="Caregiver Relationship" ), ), ("address", models.TextField(blank=True, verbose_name="Address")), ("city", models.CharField(blank=True, max_length=100, verbose_name="City")), ( "postal_code", models.CharField(blank=True, max_length=20, verbose_name="Postal Code"), ), ( "emergency_contact", models.TextField(blank=True, verbose_name="Emergency Contact"), ), ], options={ "verbose_name": "Patient", "verbose_name_plural": "Patients", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="Tenant", 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="Name")), ("code", models.CharField(max_length=50, unique=True, verbose_name="Code")), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ("settings", models.JSONField(blank=True, default=dict, verbose_name="Settings")), ], options={ "verbose_name": "Tenant", "verbose_name_plural": "Tenants", "ordering": ["name"], }, ), migrations.CreateModel( name="User", fields=[ ("password", models.CharField(max_length=128, verbose_name="password")), ( "last_login", models.DateTimeField(blank=True, null=True, verbose_name="last login"), ), ( "is_superuser", models.BooleanField( default=False, help_text="Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "username", models.CharField( error_messages={"unique": "A user with that username already exists."}, help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name="username", ), ), ( "first_name", models.CharField(blank=True, max_length=150, verbose_name="first name"), ), ( "last_name", models.CharField(blank=True, max_length=150, verbose_name="last name"), ), ( "email", models.EmailField(blank=True, max_length=254, verbose_name="email address"), ), ( "is_staff", models.BooleanField( default=False, help_text="Designates whether the user can log into this admin site.", verbose_name="staff status", ), ), ( "is_active", models.BooleanField( default=True, help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", verbose_name="active", ), ), ( "date_joined", models.DateTimeField( default=django.utils.timezone.now, verbose_name="date joined" ), ), ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "role", models.CharField( choices=[ ("ADMIN", "Administrator"), ("DOCTOR", "Doctor"), ("NURSE", "Nurse"), ("OT", "Occupational Therapist"), ("SLP", "Speech-Language Pathologist"), ("ABA", "ABA Therapist"), ("FRONT_DESK", "Front Desk"), ("FINANCE", "Finance"), ], default="FRONT_DESK", max_length=20, verbose_name="Role", ), ), ( "phone_number", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Phone Number" ), ), ( "employee_id", models.CharField(blank=True, max_length=50, verbose_name="Employee ID"), ), ( "groups", models.ManyToManyField( blank=True, help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.", related_name="user_set", related_query_name="user", to="auth.group", verbose_name="groups", ), ), ( "user_permissions", models.ManyToManyField( blank=True, help_text="Specific permissions for this user.", related_name="user_set", related_query_name="user", to="auth.permission", verbose_name="user permissions", ), ), ( "tenant", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="users", to="core.tenant", verbose_name="Tenant", ), ), ], options={ "verbose_name": "User", "verbose_name_plural": "Users", "ordering": ["last_name", "first_name"], }, managers=[ ("objects", django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name="File", 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")), ( "file_number", models.CharField( editable=False, max_length=20, unique=True, verbose_name="File Number" ), ), ("opened_date", models.DateField(auto_now_add=True, verbose_name="Opened Date")), ( "status", models.CharField( choices=[ ("ACTIVE", "Active"), ("CLOSED", "Closed"), ("ARCHIVED", "Archived"), ], default="ACTIVE", max_length=20, verbose_name="Status", ), ), ( "patient", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name="file", 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", ), ), ], options={ "verbose_name": "File", "verbose_name_plural": "Files", "ordering": ["-opened_date"], }, ), migrations.AddField( model_name="patient", name="tenant", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), migrations.CreateModel( name="HistoricalUser", fields=[ ("password", models.CharField(max_length=128, verbose_name="password")), ( "last_login", models.DateTimeField(blank=True, null=True, verbose_name="last login"), ), ( "is_superuser", models.BooleanField( default=False, help_text="Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "username", models.CharField( db_index=True, error_messages={"unique": "A user with that username already exists."}, help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", max_length=150, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name="username", ), ), ( "first_name", models.CharField(blank=True, max_length=150, verbose_name="first name"), ), ( "last_name", models.CharField(blank=True, max_length=150, verbose_name="last name"), ), ( "email", models.EmailField(blank=True, max_length=254, verbose_name="email address"), ), ( "is_staff", models.BooleanField( default=False, help_text="Designates whether the user can log into this admin site.", verbose_name="staff status", ), ), ( "is_active", models.BooleanField( default=True, help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", verbose_name="active", ), ), ( "date_joined", models.DateTimeField( default=django.utils.timezone.now, verbose_name="date joined" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, verbose_name="ID" ), ), ( "role", models.CharField( choices=[ ("ADMIN", "Administrator"), ("DOCTOR", "Doctor"), ("NURSE", "Nurse"), ("OT", "Occupational Therapist"), ("SLP", "Speech-Language Pathologist"), ("ABA", "ABA Therapist"), ("FRONT_DESK", "Front Desk"), ("FINANCE", "Finance"), ], default="FRONT_DESK", max_length=20, verbose_name="Role", ), ), ( "phone_number", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Phone Number" ), ), ( "employee_id", models.CharField(blank=True, max_length=50, verbose_name="Employee ID"), ), ("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 ), ), ( "history_user", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "tenant", 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", ), ), ], options={ "verbose_name": "historical User", "verbose_name_plural": "historical Users", "ordering": ("-history_date", "-history_id"), "get_latest_by": ("history_date", "history_id"), }, bases=(simple_history.models.HistoricalChanges, models.Model), ), migrations.CreateModel( name="HistoricalPatient", 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"), ), ( "mrn", models.CharField( db_index=True, editable=False, max_length=20, verbose_name="MRN" ), ), ( "national_id", models.CharField(blank=True, max_length=20, verbose_name="National ID"), ), ( "first_name_en", models.CharField(max_length=100, verbose_name="First Name (English)"), ), ( "father_name_en", models.CharField( blank=True, max_length=100, verbose_name="Father Name (English)" ), ), ( "grandfather_name_en", models.CharField( blank=True, max_length=100, verbose_name="Grandfather Name (English)" ), ), ( "last_name_en", models.CharField(max_length=100, verbose_name="Last Name (English)"), ), ( "first_name_ar", models.CharField( blank=True, max_length=100, verbose_name="First Name (Arabic)" ), ), ( "father_name_ar", models.CharField( blank=True, max_length=100, verbose_name="Father Name (Arabic)" ), ), ( "grandfather_name_ar", models.CharField( blank=True, max_length=100, verbose_name="Grandfather Name (Arabic)" ), ), ( "last_name_ar", models.CharField(blank=True, max_length=100, verbose_name="Last Name (Arabic)"), ), ("date_of_birth", models.DateField(verbose_name="Date of Birth")), ( "sex", models.CharField( choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex" ), ), ( "phone", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Phone Number" ), ), ("email", models.EmailField(blank=True, max_length=254, verbose_name="Email")), ( "caregiver_name", models.CharField(blank=True, max_length=200, verbose_name="Caregiver Name"), ), ( "caregiver_phone", phonenumber_field.modelfields.PhoneNumberField( blank=True, max_length=128, region=None, verbose_name="Caregiver Phone" ), ), ( "caregiver_relationship", models.CharField( blank=True, max_length=100, verbose_name="Caregiver Relationship" ), ), ("address", models.TextField(blank=True, verbose_name="Address")), ("city", models.CharField(blank=True, max_length=100, verbose_name="City")), ( "postal_code", models.CharField(blank=True, max_length=20, verbose_name="Postal Code"), ), ( "emergency_contact", models.TextField(blank=True, verbose_name="Emergency Contact"), ), ("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 ), ), ( "history_user", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "tenant", 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", ), ), ], options={ "verbose_name": "historical Patient", "verbose_name_plural": "historical Patients", "ordering": ("-history_date", "-history_id"), "get_latest_by": ("history_date", "history_id"), }, bases=(simple_history.models.HistoricalChanges, models.Model), ), migrations.CreateModel( name="HistoricalConsent", 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"), ), ( "consent_type", models.CharField( choices=[ ("GENERAL_TREATMENT", "General Treatment"), ("SERVICE_SPECIFIC", "Service Specific"), ("PHOTO_VIDEO", "Photo/Video"), ("DATA_SHARING", "Data Sharing"), ], max_length=30, verbose_name="Consent Type", ), ), ("content_text", models.TextField(verbose_name="Content Text")), ( "signed_by_name", models.CharField(blank=True, max_length=200, verbose_name="Signed By Name"), ), ( "signed_by_relationship", models.CharField( blank=True, max_length=100, verbose_name="Relationship to Patient" ), ), ( "signed_at", models.DateTimeField(blank=True, null=True, verbose_name="Signed At"), ), ( "signature_method", models.CharField( blank=True, choices=[ ("DRAWN", "Drawn"), ("TYPED", "Typed"), ("UPLOADED", "Uploaded"), ("EXTERNAL", "External Provider"), ], max_length=20, verbose_name="Signature Method", ), ), ( "signature_image", models.TextField( blank=True, max_length=100, null=True, verbose_name="Signature Image" ), ), ( "signature_hash", models.CharField(blank=True, max_length=64, verbose_name="Signature Hash"), ), ( "signed_ip", models.GenericIPAddressField( blank=True, null=True, verbose_name="Signed IP Address" ), ), ( "signed_user_agent", models.TextField(blank=True, verbose_name="Signed User Agent"), ), ("version", models.PositiveIntegerField(default=1, verbose_name="Version")), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ("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 ), ), ( "history_user", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "patient", 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", ), ), ( "tenant", 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", ), ), ], options={ "verbose_name": "historical Consent", "verbose_name_plural": "historical Consents", "ordering": ("-history_date", "-history_id"), "get_latest_by": ("history_date", "history_id"), }, bases=(simple_history.models.HistoricalChanges, models.Model), ), migrations.CreateModel( name="Consent", 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")), ( "consent_type", models.CharField( choices=[ ("GENERAL_TREATMENT", "General Treatment"), ("SERVICE_SPECIFIC", "Service Specific"), ("PHOTO_VIDEO", "Photo/Video"), ("DATA_SHARING", "Data Sharing"), ], max_length=30, verbose_name="Consent Type", ), ), ("content_text", models.TextField(verbose_name="Content Text")), ( "signed_by_name", models.CharField(blank=True, max_length=200, verbose_name="Signed By Name"), ), ( "signed_by_relationship", models.CharField( blank=True, max_length=100, verbose_name="Relationship to Patient" ), ), ( "signed_at", models.DateTimeField(blank=True, null=True, verbose_name="Signed At"), ), ( "signature_method", models.CharField( blank=True, choices=[ ("DRAWN", "Drawn"), ("TYPED", "Typed"), ("UPLOADED", "Uploaded"), ("EXTERNAL", "External Provider"), ], max_length=20, verbose_name="Signature Method", ), ), ( "signature_image", models.ImageField( blank=True, null=True, upload_to="consents/signatures/", verbose_name="Signature Image", ), ), ( "signature_hash", models.CharField(blank=True, max_length=64, verbose_name="Signature Hash"), ), ( "signed_ip", models.GenericIPAddressField( blank=True, null=True, verbose_name="Signed IP Address" ), ), ( "signed_user_agent", models.TextField(blank=True, verbose_name="Signed User Agent"), ), ("version", models.PositiveIntegerField(default=1, verbose_name="Version")), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ( "patient", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="consents", 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", ), ), ], options={ "verbose_name": "Consent", "verbose_name_plural": "Consents", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="Clinic", 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_en", models.CharField(max_length=200, verbose_name="Name (English)")), ( "name_ar", models.CharField(blank=True, max_length=200, verbose_name="Name (Arabic)"), ), ( "specialty", models.CharField( choices=[ ("MEDICAL", "Medical"), ("NURSING", "Nursing"), ("ABA", "ABA Therapy"), ("OT", "Occupational Therapy"), ("SLP", "Speech-Language Pathology"), ], max_length=20, verbose_name="Specialty", ), ), ("code", models.CharField(max_length=50, verbose_name="Code")), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ( "tenant", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), ], options={ "verbose_name": "Clinic", "verbose_name_plural": "Clinics", "ordering": ["name_en"], }, ), migrations.CreateModel( name="AuditLog", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name="ID", ), ), ("object_id", models.UUIDField(blank=True, null=True, verbose_name="Object ID")), ( "action", models.CharField( choices=[ ("CREATE", "Create"), ("UPDATE", "Update"), ("DELETE", "Delete"), ("VIEW", "View"), ("EXPORT", "Export"), ("PRINT", "Print"), ], max_length=20, verbose_name="Action", ), ), ("timestamp", models.DateTimeField(auto_now_add=True, verbose_name="Timestamp")), ("changes", models.JSONField(blank=True, default=dict, verbose_name="Changes")), ( "ip_address", models.GenericIPAddressField(blank=True, null=True, verbose_name="IP Address"), ), ( "content_type", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="contenttypes.contenttype", verbose_name="Content Type", ), ), ( "user", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="audit_logs", to=settings.AUTH_USER_MODEL, verbose_name="User", ), ), ( "tenant", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), ], options={ "verbose_name": "Audit Log", "verbose_name_plural": "Audit Logs", "ordering": ["-timestamp"], }, ), migrations.CreateModel( name="Attachment", 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")), ("object_id", models.UUIDField(verbose_name="Object ID")), ("file", models.FileField(upload_to="attachments/%Y/%m/%d/", verbose_name="File")), ( "file_type", models.CharField( choices=[ ("PDF", "PDF"), ("IMAGE", "Image"), ("DOCUMENT", "Document"), ("OTHER", "Other"), ], max_length=20, verbose_name="File Type", ), ), ("description", models.TextField(blank=True, verbose_name="Description")), ( "content_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="contenttypes.contenttype", verbose_name="Content Type", ), ), ( "uploaded_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="uploaded_attachments", to=settings.AUTH_USER_MODEL, verbose_name="Uploaded By", ), ), ( "tenant", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="%(app_label)s_%(class)s_related", to="core.tenant", verbose_name="Tenant", ), ), ], options={ "verbose_name": "Attachment", "verbose_name_plural": "Attachments", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="SubFile", 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")), ( "sub_file_number", models.CharField(max_length=20, verbose_name="Sub-File Number"), ), ("opened_date", models.DateField(auto_now_add=True, verbose_name="Opened Date")), ( "status", models.CharField( choices=[("ACTIVE", "Active"), ("CLOSED", "Closed")], default="ACTIVE", max_length=20, verbose_name="Status", ), ), ( "assigned_provider", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="assigned_subfiles", to=settings.AUTH_USER_MODEL, verbose_name="Assigned Provider", ), ), ( "clinic", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="subfiles", to="core.clinic", verbose_name="Clinic", ), ), ( "file", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="subfiles", to="core.file", verbose_name="File", ), ), ], options={ "verbose_name": "Sub-File", "verbose_name_plural": "Sub-Files", "ordering": ["-opened_date"], "unique_together": {("file", "clinic")}, }, ), migrations.AddIndex( model_name="patient", index=models.Index(fields=["mrn"], name="core_patien_mrn_bf2689_idx"), ), migrations.AddIndex( model_name="patient", index=models.Index(fields=["national_id"], name="core_patien_nationa_914a52_idx"), ), migrations.AddIndex( model_name="patient", index=models.Index( fields=["tenant", "created_at"], name="core_patien_tenant__444b99_idx" ), ), migrations.AddIndex( model_name="file", index=models.Index(fields=["file_number"], name="core_file_file_nu_1ef7fc_idx"), ), migrations.AddIndex( model_name="file", index=models.Index(fields=["patient"], name="core_file_patient_e15715_idx"), ), migrations.AddIndex( model_name="consent", index=models.Index( fields=["patient", "consent_type"], name="core_consen_patient_53785b_idx" ), ), migrations.AlterUniqueTogether( name="clinic", unique_together={("tenant", "code")}, ), migrations.AddIndex( model_name="auditlog", index=models.Index( fields=["content_type", "object_id"], name="core_auditl_content_fec0c4_idx" ), ), migrations.AddIndex( model_name="auditlog", index=models.Index(fields=["user", "timestamp"], name="core_auditl_user_id_7b678c_idx"), ), migrations.AddIndex( model_name="auditlog", index=models.Index( fields=["action", "timestamp"], name="core_auditl_action_096de0_idx" ), ), migrations.AddIndex( model_name="attachment", index=models.Index( fields=["content_type", "object_id"], name="core_attach_content_d3cac2_idx" ), ), ]