# Generated by Django 4.2.7 on 2025-10-07 12:18
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
[docs]
class Migration(migrations.Migration):
dependencies = [
("core", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="AudioTranscript",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"transcript_id",
models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
),
(
"audio_file",
models.FileField(blank=True, null=True, upload_to="audio/"),
),
(
"audio_duration",
models.FloatField(
blank=True, null=True, verbose_name="Durata (secondi)"
),
),
(
"transcript_text",
models.TextField(blank=True, verbose_name="Testo trascritto"),
),
(
"confidence_score",
models.FloatField(
blank=True, null=True, verbose_name="Score di confidenza"
),
),
(
"language",
models.CharField(
default="it-IT", max_length=10, verbose_name="Lingua"
),
),
(
"status",
models.CharField(
choices=[
("pending", "In attesa"),
("transcribing", "Trascrizione in corso"),
("completed", "Completato"),
("error", "Errore"),
],
default="pending",
max_length=20,
),
),
(
"error_message",
models.TextField(blank=True, verbose_name="Messaggio di errore"),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"transcription_completed_at",
models.DateTimeField(blank=True, null=True),
),
(
"encounter",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="transcripts",
to="core.encounter",
),
),
],
options={
"verbose_name": "Trascrizione Audio",
"verbose_name_plural": "Trascrizioni Audio",
"ordering": ["-created_at"],
},
),
migrations.CreateModel(
name="ClinicalData",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("patient_name", models.CharField(blank=True, max_length=200)),
("patient_age", models.IntegerField(blank=True, null=True)),
("patient_gender", models.CharField(blank=True, max_length=10)),
(
"chief_complaint",
models.TextField(blank=True, verbose_name="Motivo accesso"),
),
(
"history_present_illness",
models.TextField(
blank=True, verbose_name="Anamnesi patologia remota"
),
),
(
"past_medical_history",
models.JSONField(
blank=True,
default=list,
verbose_name="Anamnesi patologica remota",
),
),
(
"medications",
models.JSONField(blank=True, default=list, verbose_name="Farmaci"),
),
(
"allergies",
models.JSONField(blank=True, default=list, verbose_name="Allergie"),
),
(
"vital_signs",
models.JSONField(
blank=True, default=dict, verbose_name="Parametri vitali"
),
),
(
"physical_examination",
models.JSONField(
blank=True, default=dict, verbose_name="Esame obiettivo"
),
),
(
"assessment",
models.TextField(blank=True, verbose_name="Valutazione"),
),
(
"diagnosis",
models.JSONField(blank=True, default=list, verbose_name="Diagnosi"),
),
(
"treatment_plan",
models.TextField(blank=True, verbose_name="Piano terapeutico"),
),
("confidence_score", models.FloatField(blank=True, null=True)),
("extracted_at", models.DateTimeField(auto_now_add=True)),
("validated", models.BooleanField(default=False)),
(
"transcript",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="clinical_data",
to="core.audiotranscript",
),
),
(
"validated_by",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"verbose_name": "Dati Clinici",
"verbose_name_plural": "Dati Clinici",
},
),
migrations.CreateModel(
name="ClinicalReport",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"report_id",
models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
),
(
"template_type",
models.CharField(
choices=[
("emergency", "Pronto Soccorso"),
("consultation", "Consulenza"),
("admission", "Ricovero"),
],
default="emergency",
max_length=20,
),
),
(
"report_content",
models.JSONField(
default=dict, verbose_name="Contenuto strutturato"
),
),
(
"pdf_file",
models.FileField(blank=True, null=True, upload_to="reports/"),
),
("is_finalized", models.BooleanField(default=False)),
("finalized_at", models.DateTimeField(blank=True, null=True)),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"clinical_data",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="core.clinicaldata",
),
),
(
"encounter",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="reports",
to="core.encounter",
),
),
(
"finalized_by",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"verbose_name": "Report Clinico",
"verbose_name_plural": "Report Clinici",
"ordering": ["-created_at"],
},
),
]