# Generated by Django 5.2.3 on 2025-10-30 11:01 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('core', '0005_add_consent_template'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='DocumentTemplate', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, verbose_name='Template Name')), ('category', models.CharField(choices=[('medical', 'Medical'), ('nursing', 'Nursing'), ('aba', 'ABA'), ('ot', 'Occupational Therapy'), ('slp', 'Speech-Language Pathology'), ('assessment', 'Assessment'), ('progress', 'Progress Report'), ('discharge', 'Discharge Summary'), ('other', 'Other')], max_length=50, verbose_name='Category')), ('description', models.TextField(blank=True, verbose_name='Description')), ('content', models.TextField(help_text='Use {{variable_name}} for dynamic fields', verbose_name='Template Content')), ('is_active', models.BooleanField(default=True, verbose_name='Active')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_templates', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Document Template', 'verbose_name_plural': 'Document Templates', 'ordering': ['category', 'name'], }, ), migrations.CreateModel( name='ClinicalNote', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200, verbose_name='Title')), ('content', models.TextField(verbose_name='Content')), ('status', models.CharField(choices=[('draft', 'Draft'), ('final', 'Final'), ('amended', 'Amended'), ('deleted', 'Deleted')], default='draft', max_length=20, verbose_name='Status')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('finalized_at', models.DateTimeField(blank=True, null=True, verbose_name='Finalized At')), ('version', models.IntegerField(default=1, verbose_name='Version')), ('author', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='authored_notes', to=settings.AUTH_USER_MODEL)), ('finalized_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='finalized_notes', to=settings.AUTH_USER_MODEL)), ('parent_note', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='amendments', to='documents.clinicalnote')), ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clinical_notes', to='core.patient')), ('template', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='notes', to='documents.documenttemplate')), ], options={ 'verbose_name': 'Clinical Note', 'verbose_name_plural': 'Clinical Notes', 'ordering': ['-created_at'], 'permissions': [('can_finalize_note', 'Can finalize clinical notes'), ('can_amend_note', 'Can amend finalized notes')], }, ), migrations.CreateModel( name='NoteAddendum', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('content', models.TextField(verbose_name='Addendum Content')), ('reason', models.CharField(max_length=200, verbose_name='Reason')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('author', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), ('note', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='addendums', to='documents.clinicalnote')), ], options={ 'verbose_name': 'Note Addendum', 'verbose_name_plural': 'Note Addendums', 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='NoteAuditLog', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('action', models.CharField(choices=[('created', 'Created'), ('updated', 'Updated'), ('finalized', 'Finalized'), ('amended', 'Amended'), ('deleted', 'Deleted'), ('viewed', 'Viewed')], max_length=20, verbose_name='Action')), ('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='Timestamp')), ('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP Address')), ('changes', models.JSONField(blank=True, null=True, verbose_name='Changes')), ('note', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audit_logs', to='documents.clinicalnote')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Note Audit Log', 'verbose_name_plural': 'Note Audit Logs', 'ordering': ['-timestamp'], }, ), ]