37 lines
1.8 KiB
Python
37 lines
1.8 KiB
Python
|
|
from django.db import models
|
||
|
|
|
||
|
|
class Patient(models.Model):
|
||
|
|
orthanc_id = models.CharField(max_length=255, unique=True)
|
||
|
|
patient_id = models.CharField(max_length=255, null=True, blank=True)
|
||
|
|
patient_name = models.CharField(max_length=255, null=True, blank=True)
|
||
|
|
patient_sex = models.CharField(max_length=10, null=True, blank=True)
|
||
|
|
patient_birth_date = models.CharField(max_length=20, null=True, blank=True)
|
||
|
|
studies = models.JSONField(null=True, blank=True) # Массив ID исследований
|
||
|
|
patient_metadata = models.JSONField(null=True, blank=True)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.patient_name or "Unknown Patient"
|
||
|
|
|
||
|
|
class Series(models.Model):
|
||
|
|
orthanc_id = models.CharField(max_length=255, unique=True)
|
||
|
|
parent_study = models.CharField(max_length=255)
|
||
|
|
patient = models.ForeignKey(Patient, related_name="series", on_delete=models.CASCADE)
|
||
|
|
main_dicom_tags = models.JSONField(null=True, blank=True)
|
||
|
|
status = models.CharField(max_length=50, null=True, blank=True)
|
||
|
|
is_stable = models.BooleanField(default=False)
|
||
|
|
last_update = models.CharField(max_length=50, null=True, blank=True)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.main_dicom_tags.get("SeriesDescription", "Unknown Series")
|
||
|
|
|
||
|
|
class Instance(models.Model):
|
||
|
|
orthanc_id = models.CharField(max_length=255, unique=True)
|
||
|
|
parent_series = models.ForeignKey(Series, related_name="instances", on_delete=models.CASCADE)
|
||
|
|
file_size = models.IntegerField(null=True, blank=True)
|
||
|
|
file_uuid = models.CharField(max_length=255, null=True, blank=True)
|
||
|
|
main_dicom_tags = models.JSONField(null=True, blank=True)
|
||
|
|
index_in_series = models.IntegerField(null=True, blank=True)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.main_dicom_tags.get("SOPInstanceUID", "Unknown Instance")
|