Source code for core.migrations.0001_initial

# Generated by Django 4.2.7 on 2025-10-07 10:35

from django.conf import settings
import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import uuid


[docs] class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0012_alter_user_first_name_max_length'), ] operations = [ migrations.CreateModel( name='Doctor', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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')), ('doctor_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('specialization', models.CharField(help_text='Specializzazione medica', max_length=100)), ('department', models.CharField(help_text='Reparto di appartenenza', max_length=100)), ('license_number', models.CharField(help_text='Numero ordine medici', max_length=50, unique=True)), ('is_emergency_doctor', models.BooleanField(default=False, help_text='Abilitato al pronto soccorso')), ('created_at', models.DateTimeField(auto_now_add=True)), ('last_login_at', models.DateTimeField(blank=True, null=True)), ('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')), ], options={ 'verbose_name': 'Medico', 'verbose_name_plural': 'Medici', 'ordering': ['last_name', 'first_name'], }, managers=[ ('objects', django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name='Patient', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('patient_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('first_name', models.CharField(max_length=100, verbose_name='Nome')), ('last_name', models.CharField(max_length=100, verbose_name='Cognome')), ('date_of_birth', models.DateField(verbose_name='Data di nascita')), ('place_of_birth', models.CharField(max_length=100, verbose_name='Luogo di nascita')), ('fiscal_code', models.CharField(blank=True, max_length=16, null=True, unique=True, verbose_name='Codice fiscale')), ('gender', models.CharField(choices=[('M', 'Maschio'), ('F', 'Femmina'), ('O', 'Altro')], max_length=1, verbose_name='Sesso')), ('phone', models.CharField(blank=True, max_length=20, null=True, verbose_name='Telefono')), ('emergency_contact', models.CharField(blank=True, max_length=200, null=True, verbose_name='Contatto emergenza')), ('weight', models.FloatField(blank=True, null=True, verbose_name='Peso (kg)')), ('height', models.FloatField(blank=True, null=True, verbose_name='Altezza (cm)')), ('blood_type', models.CharField(blank=True, max_length=5, null=True, verbose_name='Gruppo sanguigno')), ('allergies', models.TextField(blank=True, null=True, verbose_name='Allergie note')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={ 'verbose_name': 'Paziente', 'verbose_name_plural': 'Pazienti', 'ordering': ['last_name', 'first_name'], 'indexes': [models.Index(fields=['fiscal_code'], name='core_patien_fiscal__26fe24_idx'), models.Index(fields=['last_name', 'first_name'], name='core_patien_last_na_5d3812_idx'), models.Index(fields=['date_of_birth'], name='core_patien_date_of_7405d5_idx')], }, ), migrations.CreateModel( name='Encounter', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('encounter_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('admission_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Ora di ammissione')), ('chief_complaint', models.TextField(verbose_name='Motivo accesso')), ('triage_priority', models.CharField(choices=[('white', 'Codice Bianco'), ('green', 'Codice Verde'), ('yellow', 'Codice Giallo'), ('red', 'Codice Rosso'), ('black', 'Codice Nero')], max_length=10, verbose_name='Codice triage')), ('status', models.CharField(choices=[('in_progress', 'In corso'), ('completed', 'Completato'), ('cancelled', 'Annullato')], default='in_progress', max_length=20)), ('discharge_time', models.DateTimeField(blank=True, null=True, verbose_name='Ora dimissione')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('doctor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='encounters', to=settings.AUTH_USER_MODEL)), ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='encounters', to='core.patient')), ], options={ 'verbose_name': 'Episodio di cura', 'verbose_name_plural': 'Episodi di cura', 'ordering': ['-admission_time'], 'indexes': [models.Index(fields=['admission_time'], name='core_encoun_admissi_a5e32c_idx'), models.Index(fields=['status'], name='core_encoun_status_899f27_idx'), models.Index(fields=['triage_priority'], name='core_encoun_triage__fb5685_idx')], }, ), ]