# Generated by Django 6.0.1 on 2026-05-11 20:32

import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('contenttypes', '0002_remove_content_type_name'),
        ('organizations', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='RootCauseAnalysis',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('object_id', models.UUIDField(blank=True, db_index=True, help_text='ID of the related item', null=True)),
                ('title', models.CharField(max_length=500)),
                ('description', models.TextField(help_text='Description of the incident/issue')),
                ('background', models.TextField(blank=True, help_text='Background information and context')),
                ('status', models.CharField(choices=[('draft', 'Draft'), ('in_progress', 'In Progress'), ('review', 'Under Review'), ('approved', 'Approved'), ('closed', 'Closed')], db_index=True, default='draft', max_length=20)),
                ('severity', models.CharField(choices=[('low', 'Low'), ('medium', 'Medium'), ('high', 'High'), ('critical', 'Critical')], db_index=True, default='medium', max_length=20)),
                ('priority', models.CharField(choices=[('low', 'Low'), ('medium', 'Medium'), ('high', 'High'), ('critical', 'Critical')], db_index=True, default='medium', max_length=20)),
                ('root_cause_summary', models.TextField(blank=True, help_text='Summary of root cause analysis findings')),
                ('assigned_at', models.DateTimeField(blank=True, null=True)),
                ('approved_at', models.DateTimeField(blank=True, null=True)),
                ('approval_notes', models.TextField(blank=True)),
                ('closed_at', models.DateTimeField(blank=True, null=True)),
                ('closure_notes', models.TextField(blank=True)),
                ('target_completion_date', models.DateField(blank=True, help_text='Target date for RCA completion', null=True)),
                ('actual_completion_date', models.DateField(blank=True, null=True)),
                ('metadata', models.JSONField(blank=True, default=dict)),
                ('is_deleted', models.BooleanField(db_index=True, default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('approved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rca_approved_items', to=settings.AUTH_USER_MODEL)),
                ('assigned_to', models.ForeignKey(blank=True, help_text='Person responsible for RCA', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_rcas', to=settings.AUTH_USER_MODEL)),
                ('closed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='closed_rcas', to=settings.AUTH_USER_MODEL)),
                ('content_type', models.ForeignKey(blank=True, help_text='Type of the related item', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='related_rcas', to='contenttypes.contenttype')),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_rcas', to=settings.AUTH_USER_MODEL)),
                ('deleted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='deleted_rcas', to=settings.AUTH_USER_MODEL)),
                ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rcas', to='organizations.department')),
                ('hospital', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rcas', to='organizations.hospital')),
            ],
            options={
                'verbose_name': 'Root Cause Analysis',
                'verbose_name_plural': 'Root Cause Analyses',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RCAStatusLog',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('old_status', models.CharField(blank=True, max_length=20)),
                ('new_status', models.CharField(db_index=True, max_length=20)),
                ('notes', models.TextField(blank=True)),
                ('metadata', models.JSONField(blank=True, default=dict)),
                ('changed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rca_status_changes', to=settings.AUTH_USER_MODEL)),
                ('rca', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='status_logs', to='rca.rootcauseanalysis')),
            ],
            options={
                'verbose_name': 'RCA Status Log',
                'verbose_name_plural': 'RCA Status Logs',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RCARootCause',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('description', models.TextField(help_text='Description of root cause')),
                ('category', models.CharField(choices=[('process', 'Process/Procedure'), ('people', 'People/Training'), ('equipment', 'Equipment/Resources'), ('communication', 'Communication'), ('policy', 'Policy/Regulation'), ('environment', 'Environment'), ('technology', 'Technology/Systems'), ('other', 'Other')], db_index=True, max_length=50)),
                ('contributing_factors', models.TextField(blank=True, help_text='Factors that contributed to this root cause')),
                ('likelihood', models.IntegerField(blank=True, help_text='Likelihood score (1-5)', null=True)),
                ('impact', models.IntegerField(blank=True, help_text='Impact score (1-5)', null=True)),
                ('risk_score', models.IntegerField(blank=True, help_text='Risk score (likelihood * impact)', null=True)),
                ('evidence', models.TextField(blank=True, help_text='Evidence supporting this root cause')),
                ('is_verified', models.BooleanField(default=False)),
                ('verified_at', models.DateTimeField(blank=True, null=True)),
                ('verified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='verified_root_causes', to=settings.AUTH_USER_MODEL)),
                ('rca', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='root_causes', to='rca.rootcauseanalysis')),
            ],
            options={
                'verbose_name': 'Root Cause',
                'verbose_name_plural': 'Root Causes',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RCANote',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('note', models.TextField()),
                ('is_internal', models.BooleanField(default=True, help_text='Internal note (not visible in reports)')),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rca_notes', to=settings.AUTH_USER_MODEL)),
                ('rca', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='rca.rootcauseanalysis')),
            ],
            options={
                'verbose_name': 'RCA Note',
                'verbose_name_plural': 'RCA Notes',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RCACorrectiveAction',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('description', models.TextField(help_text='Description of corrective action')),
                ('action_type', models.CharField(choices=[('preventive', 'Preventive'), ('corrective', 'Corrective'), ('immediate', 'Immediate Action'), ('long_term', 'Long-term Solution')], db_index=True, default='corrective', max_length=20)),
                ('target_date', models.DateField(blank=True, help_text='Target date for completion', null=True)),
                ('completion_date', models.DateField(blank=True, help_text='Actual completion date', null=True)),
                ('status', models.CharField(choices=[('not_started', 'Not Started'), ('in_progress', 'In Progress'), ('completed', 'Completed'), ('cancelled', 'Cancelled')], db_index=True, default='not_started', max_length=20)),
                ('effectiveness_measure', models.TextField(blank=True, help_text='How effectiveness will be measured')),
                ('effectiveness_assessment', models.TextField(blank=True, help_text='Assessment of action effectiveness')),
                ('effectiveness_score', models.IntegerField(blank=True, help_text='Effectiveness score (1-5)', null=True)),
                ('obstacles', models.TextField(blank=True, help_text='Obstacles encountered during implementation')),
                ('metadata', models.JSONField(blank=True, default=dict)),
                ('responsible_person', models.ForeignKey(blank=True, help_text='Person responsible for implementing the action', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='corrective_actions', to='organizations.staff')),
                ('root_cause', models.ForeignKey(blank=True, help_text='Root cause this action addresses', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='corrective_actions', to='rca.rcarootcause')),
                ('rca', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='corrective_actions', to='rca.rootcauseanalysis')),
            ],
            options={
                'verbose_name': 'Corrective Action',
                'verbose_name_plural': 'Corrective Actions',
                'ordering': ['target_date', '-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RCAAttachment',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('file', models.FileField(upload_to='rca/%Y/%m/%d/')),
                ('filename', models.CharField(max_length=500)),
                ('file_type', models.CharField(blank=True, max_length=100)),
                ('file_size', models.IntegerField(help_text='File size in bytes')),
                ('description', models.TextField(blank=True)),
                ('uploaded_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rca_attachments', to=settings.AUTH_USER_MODEL)),
                ('rca', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='rca.rootcauseanalysis')),
            ],
            options={
                'verbose_name': 'RCA Attachment',
                'verbose_name_plural': 'RCA Attachments',
                'ordering': ['-created_at'],
            },
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['status', '-created_at'], name='rca_rootcau_status_de172e_idx'),
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['hospital', 'status', '-created_at'], name='rca_rootcau_hospita_105ba2_idx'),
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['department', 'status', '-created_at'], name='rca_rootcau_departm_ca310d_idx'),
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['assigned_to', 'status', '-created_at'], name='rca_rootcau_assigne_71e4cf_idx'),
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['is_deleted', '-created_at'], name='rca_rootcau_is_dele_1b8ad5_idx'),
        ),
        migrations.AddIndex(
            model_name='rootcauseanalysis',
            index=models.Index(fields=['content_type', 'object_id'], name='rca_rootcau_content_08b595_idx'),
        ),
        migrations.AddIndex(
            model_name='rcastatuslog',
            index=models.Index(fields=['rca', '-created_at'], name='rca_rcastat_rca_id_26e67b_idx'),
        ),
        migrations.AddIndex(
            model_name='rcastatuslog',
            index=models.Index(fields=['new_status', '-created_at'], name='rca_rcastat_new_sta_09a9ea_idx'),
        ),
        migrations.AddIndex(
            model_name='rcarootcause',
            index=models.Index(fields=['rca', '-created_at'], name='rca_rcaroot_rca_id_4c7113_idx'),
        ),
        migrations.AddIndex(
            model_name='rcarootcause',
            index=models.Index(fields=['category', '-created_at'], name='rca_rcaroot_categor_9eb3ca_idx'),
        ),
        migrations.AddIndex(
            model_name='rcanote',
            index=models.Index(fields=['rca', '-created_at'], name='rca_rcanote_rca_id_ade9da_idx'),
        ),
        migrations.AddIndex(
            model_name='rcacorrectiveaction',
            index=models.Index(fields=['rca', '-created_at'], name='rca_rcacorr_rca_id_49e717_idx'),
        ),
        migrations.AddIndex(
            model_name='rcacorrectiveaction',
            index=models.Index(fields=['status', 'target_date'], name='rca_rcacorr_status_96ba71_idx'),
        ),
        migrations.AddIndex(
            model_name='rcacorrectiveaction',
            index=models.Index(fields=['action_type', '-created_at'], name='rca_rcacorr_action__39700e_idx'),
        ),
    ]
