# Generated by Django 5.0.14 on 2026-07-27 17:36 import uuid import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("clinical", "0001_initial"), ("curation", "0001_initial"), ("identity", "0001_initial"), ("intake", "0001_initial"), ] operations = [ migrations.CreateModel( name="ClinicalTrack", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "track_name", models.TextField( choices=[("CKM", "CKM"), ("eCKM", "eCKM"), ("MSK", "MSK")], unique=True, ), ), ("description", models.TextField(blank=True, null=True)), ("is_active", models.BooleanField(default=True)), ], ), migrations.CreateModel( name="DailyCheckinItem", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("item_key", models.TextField()), ("item_label", models.TextField()), ("item_type", models.TextField()), ("options", models.JSONField(blank=True, null=True)), ("is_required", models.BooleanField(default=True)), ("display_order", models.IntegerField()), ("safety_rule", models.JSONField(blank=True, null=True)), ], ), migrations.CreateModel( name="DailyCheckinTemplate", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("template_name", models.TextField()), ("clinical_track", models.TextField(default="all")), ("version", models.TextField()), ("is_active", models.BooleanField(default=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ], ), migrations.CreateModel( name="MonitoringPlanTemplate", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("template_name", models.TextField()), ("clinical_track", models.TextField(default="all")), ("trigger_description", models.TextField(blank=True, null=True)), ("is_active", models.BooleanField(default=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ], ), migrations.CreateModel( name="CarePeriod", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("start_date", models.DateField()), ("end_date", models.DateField(blank=True, null=True)), ("baseline_status", models.TextField(default="pending")), ("operational_status", models.TextField(default="active")), ("physician_review_status", models.TextField(default="not_required")), ("reporting_schedule", models.JSONField(blank=True, null=True)), ("reconciliation_status", models.TextField(default="not_applicable")), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="care_periods", to="identity.beneficiary", ), ), ( "clinical_track", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.clinicaltrack", ), ), ], ), migrations.CreateModel( name="Alignment", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("aligned_at", models.DateTimeField()), ("cms_response", models.JSONField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="alignments", to="identity.beneficiary", ), ), ( "intake_record", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="alignments", to="intake.intakerecord", ), ), ( "clinical_track", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.clinicaltrack", ), ), ], ), migrations.CreateModel( name="DailyCheckinSubmission", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("submission_date", models.DateField()), ("source_system", models.TextField()), ("status", models.TextField(default="submitted")), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="checkin_submissions", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ( "template", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.dailycheckintemplate", ), ), ], ), migrations.CreateModel( name="DailyCheckinResponse", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("value", models.JSONField()), ("created_at", models.DateTimeField(auto_now_add=True)), ( "item", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.dailycheckinitem", ), ), ( "submission", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="responses", to="monitoring.dailycheckinsubmission", ), ), ], ), migrations.AddField( model_name="dailycheckinitem", name="template", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="items", to="monitoring.dailycheckintemplate", ), ), migrations.CreateModel( name="DailyStatusLog", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("log_date", models.DateField()), ("symptoms_new_worsening", models.TextField(blank=True, null=True)), ("pain_change", models.TextField(blank=True, null=True)), ("fatigue", models.TextField(blank=True, null=True)), ("sleep_quality", models.TextField(blank=True, null=True)), ("dizziness", models.BooleanField(blank=True, null=True)), ("shortness_of_breath", models.BooleanField(blank=True, null=True)), ("chest_pain", models.BooleanField(blank=True, null=True)), ("fever", models.BooleanField(blank=True, null=True)), ("swelling", models.BooleanField(blank=True, null=True)), ("bleeding", models.BooleanField(blank=True, null=True)), ("skin_reaction", models.BooleanField(blank=True, null=True)), ("gi_reaction", models.BooleanField(blank=True, null=True)), ("urination_change", models.BooleanField(blank=True, null=True)), ("other_concern", models.TextField(blank=True, null=True)), ("source_system", models.TextField()), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="status_logs", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ], ), migrations.CreateModel( name="EligibilityCheck", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "check_status", models.TextField( choices=[ ("pending", "Pending"), ("eligible", "Eligible"), ("ineligible", "Ineligible"), ("control_group", "Control Group"), ], default="pending", ), ), ("cms_response", models.JSONField(blank=True, null=True)), ("ineligibility_reason", models.TextField(blank=True, null=True)), ("checked_at", models.DateTimeField(auto_now_add=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="eligibility_checks", to="identity.beneficiary", ), ), ( "intake_record", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="eligibility_checks", to="intake.intakerecord", ), ), ( "requested_track", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.clinicaltrack", ), ), ], ), migrations.CreateModel( name="EnrollmentDecision", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "decision", models.TextField( choices=[ ("approved", "Approved"), ("rejected", "Rejected"), ("deferred", "Deferred"), ("withdrawn", "Withdrawn"), ] ), ), ("decision_at", models.DateTimeField(auto_now_add=True)), ("reason", models.TextField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="identity.beneficiary", ), ), ( "decision_by", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="identity.user" ), ), ( "intake_record", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="enrollment_decisions", to="intake.intakerecord", ), ), ], ), migrations.CreateModel( name="MissedCheckinEvent", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("missed_date", models.DateField()), ("consecutive_days_missed", models.IntegerField(default=1)), ("notified", models.BooleanField(default=False)), ("notified_at", models.DateTimeField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="missed_checkins", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ], ), migrations.CreateModel( name="MonitoringPlan", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("clinical_trigger", models.TextField()), ("baseline_abnormality", models.TextField(blank=True, null=True)), ("status", models.TextField(default="active")), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="monitoring_plans", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ( "created_by", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="identity.user" ), ), ( "template", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="monitoring.monitoringplantemplate", ), ), ], ), migrations.CreateModel( name="MonitoringPlanItem", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("item_description", models.TextField()), ("monitoring_category", models.TextField()), ("measure_name", models.TextField(blank=True, null=True)), ("frequency_interval", models.TextField(blank=True, null=True)), ("planned_due_date", models.DateField(blank=True, null=True)), ("cms_reportable", models.BooleanField(default=False)), ("reportability_reason", models.TextField(blank=True, null=True)), ("evidence_layer", models.TextField()), ("status", models.TextField(default="scheduled")), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "loinc_code", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="clinical.loinccode", ), ), ( "monitoring_plan", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="items", to="monitoring.monitoringplan", ), ), ( "ordering_clinician", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="identity.user", ), ), ], ), migrations.CreateModel( name="MonitoringPlanResult", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("result_date", models.DateField()), ("value_text", models.TextField(blank=True, null=True)), ("value_numeric", models.FloatField(blank=True, null=True)), ("unit", models.TextField(blank=True, null=True)), ("source_type", models.TextField()), ("source_record_id", models.UUIDField()), ("baseline_comparison", models.TextField(blank=True, null=True)), ("prior_result_comparison", models.TextField(blank=True, null=True)), ("review_status", models.TextField(default="pending")), ("completed_at", models.DateTimeField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "monitoring_plan_item", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="results", to="monitoring.monitoringplanitem", ), ), ( "review_user", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="identity.user", ), ), ( "source_document", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="curation.clinicaldocument", ), ), ], ), migrations.CreateModel( name="MonthlyPatientSummary", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("month", models.DateField()), ("summary_content", models.JSONField()), ("review_status", models.TextField(default="generated")), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="monthly_summaries", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ( "review_user", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="identity.user", ), ), ], ), migrations.CreateModel( name="PatientAdherenceSummary", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("period_start", models.DateField()), ("period_end", models.DateField()), ("expected_checkins", models.IntegerField(default=0)), ("completed_checkins", models.IntegerField(default=0)), ("missed_checkins", models.IntegerField(default=0)), ("adherence_rate", models.FloatField(default=0)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="adherence_summaries", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ], ), migrations.CreateModel( name="PatientNotification", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "notification_type", models.TextField( choices=[ ("missed_checkin_reminder", "Missed Checkin Reminder"), ("safety_alert", "Safety Alert"), ("general", "General"), ("protocol_update", "Protocol Update"), ] ), ), ("message", models.TextField()), ( "channel", models.TextField( choices=[ ("email", "Email"), ("sms", "SMS"), ("in_app", "In-App"), ] ), ), ("sent_at", models.DateTimeField(blank=True, null=True)), ("read_at", models.DateTimeField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="notifications", to="identity.beneficiary", ), ), ], ), migrations.CreateModel( name="ProtocolAssignmentVersion", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("assigned_at", models.DateTimeField(auto_now_add=True)), ("notes", models.TextField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "assigned_by", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="identity.user" ), ), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ], ), migrations.CreateModel( name="PatientExecutionLog", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("execution_date", models.DateField()), ("completed", models.BooleanField(default=False)), ("duration_minutes", models.IntegerField(blank=True, null=True)), ("body_areas", models.TextField(blank=True, null=True)), ("steps_completed", models.IntegerField(blank=True, null=True)), ("steps_skipped", models.TextField(blank=True, null=True)), ("missed_reason", models.TextField(blank=True, null=True)), ("unusual_reaction", models.TextField(blank=True, null=True)), ("source_system", models.TextField()), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="execution_logs", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ( "protocol_version", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="monitoring.protocolassignmentversion", ), ), ], ), migrations.CreateModel( name="ProtocolVersion", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("version_number", models.TextField()), ("description", models.TextField(blank=True, null=True)), ("protocol_content", models.JSONField(blank=True, null=True)), ("is_active", models.BooleanField(default=True)), ("effective_from", models.DateField()), ("effective_to", models.DateField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "clinical_track", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.clinicaltrack", ), ), ], ), migrations.AddField( model_name="protocolassignmentversion", name="protocol_version", field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.protocolversion", ), ), migrations.AddField( model_name="careperiod", name="protocol_version", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="monitoring.protocolversion", ), ), migrations.CreateModel( name="RawDailyCheckinSubmission", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("raw_payload", models.JSONField()), ("source_system", models.TextField()), ("source_record_id", models.TextField(blank=True, null=True)), ("ingested_at", models.DateTimeField(auto_now_add=True)), ("form_version", models.TextField(blank=True, null=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="raw_checkins", to="identity.beneficiary", ), ), ], ), migrations.CreateModel( name="TrackSpecificDailyLog", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("log_date", models.DateField()), ( "clinical_track", models.TextField( choices=[("CKM", "CKM"), ("eCKM", "eCKM"), ("MSK", "MSK")] ), ), ("home_bp_systolic", models.FloatField(blank=True, null=True)), ("home_bp_diastolic", models.FloatField(blank=True, null=True)), ("home_weight_lbs", models.FloatField(blank=True, null=True)), ("blood_sugar", models.FloatField(blank=True, null=True)), ("urination_changes", models.TextField(blank=True, null=True)), ("swelling", models.TextField(blank=True, null=True)), ("energy_level", models.TextField(blank=True, null=True)), ("pain_score_0_10", models.FloatField(blank=True, null=True)), ("function_today", models.TextField(blank=True, null=True)), ("activity_tolerance", models.TextField(blank=True, null=True)), ("sleep_disruption", models.BooleanField(blank=True, null=True)), ("flare_status", models.BooleanField(blank=True, null=True)), ("pain_medication_use", models.TextField(blank=True, null=True)), ("source_system", models.TextField()), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="track_logs", to="identity.beneficiary", ), ), ( "care_period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to="monitoring.careperiod", ), ), ], ), migrations.CreateModel( name="Unalignment", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("unaligned_at", models.DateTimeField()), ("reason", models.TextField(blank=True, null=True)), ("cms_response", models.JSONField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "beneficiary", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="unalignments", to="identity.beneficiary", ), ), ], ), ]