mirror of
https://github.com/leaders-of-digital-9-task/backend.git
synced 2024-11-22 01:16:33 +03:00
updated models structure
This commit is contained in:
parent
d5731ad8af
commit
23db12cf8a
|
@ -1,3 +1,3 @@
|
||||||
# flake8: noqa
|
# flake8: noqa
|
||||||
from .base import Dicom, Project
|
from .base import Dicom, Layer, Project
|
||||||
from .shapes import BaseShape, Circle, Coordinate, FreeHand, Roi, Ruler
|
from .shapes import BaseShape, Circle, Coordinate, FreeHand, Roi, Ruler
|
||||||
|
|
|
@ -7,6 +7,51 @@ User = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
class Project(models.Model):
|
class Project(models.Model):
|
||||||
|
class PathologyType(models.IntegerChoices):
|
||||||
|
no_pathology = 0, "Без патологий"
|
||||||
|
covid_pathology_all = 1, "COVID-19; все доли; многочисленные; размер любой"
|
||||||
|
covid_pathology_lung = (
|
||||||
|
2,
|
||||||
|
"COVID-19; Нижняя доля правого лёгкого, Нижняя доля левого лёгкого",
|
||||||
|
)
|
||||||
|
few = 3, "Немногочисленные; 10-20 мм"
|
||||||
|
lung_cancer_lower_right = (
|
||||||
|
4,
|
||||||
|
"Рак лёгкого; Нижняя доля правого лёгкого, Единичное; 10-20 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_middle_right = (
|
||||||
|
5,
|
||||||
|
"Рак лёгкого; Средняя доля правого лёгкого, Единичное; >20 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_lower_left = (
|
||||||
|
6,
|
||||||
|
"Рак лёгкого; Нижняя доля левого лёгкого, Единичное; 10-20 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_upper_right = (
|
||||||
|
7,
|
||||||
|
"Рак лёгкого; Верхняя доля правого лёгкого, Единичное; 5-10 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_upper_left = (
|
||||||
|
8,
|
||||||
|
"Рак лёгкого; Верхняя доля левого лёгкого, Единичное; 5-10 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_all_many_small = (
|
||||||
|
9,
|
||||||
|
"Метастатическое поражение лёгких; Все доли; Многочисленные; 5-10 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_all_many_big = (
|
||||||
|
10,
|
||||||
|
"Метастатическое поражение лёгких; Все доли; Многочисленные; 10-20 мм",
|
||||||
|
)
|
||||||
|
lung_cancer_all_few_small = (
|
||||||
|
11,
|
||||||
|
"Метастатическое поражение лёгких; Все доли; Немногочисленные; 5-10 мм",
|
||||||
|
)
|
||||||
|
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
pathology_type = models.IntegerField(choices=PathologyType.choices, default=0)
|
||||||
|
|
||||||
user = models.ForeignKey(User, related_name="projects", on_delete=models.CASCADE)
|
user = models.ForeignKey(User, related_name="projects", on_delete=models.CASCADE)
|
||||||
slug = models.SlugField(max_length=10)
|
slug = models.SlugField(max_length=10)
|
||||||
stl = models.FileField(blank=True)
|
stl = models.FileField(blank=True)
|
||||||
|
@ -18,17 +63,11 @@ class Project(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Dicom(models.Model):
|
class Dicom(models.Model):
|
||||||
class PathologyType(models.IntegerChoices):
|
|
||||||
no_pathology = 0, "Без патологий"
|
|
||||||
covid_pathology = 1, "Covid"
|
|
||||||
|
|
||||||
user = models.ForeignKey(User, related_name="files", on_delete=models.CASCADE)
|
|
||||||
slug = models.SlugField()
|
slug = models.SlugField()
|
||||||
|
|
||||||
file = models.FileField(upload_to=media_upload_path)
|
file = models.FileField(upload_to=media_upload_path)
|
||||||
uploaded = models.DateTimeField(auto_now_add=True)
|
uploaded = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
pathology_type = models.IntegerField(choices=PathologyType.choices, default=0)
|
|
||||||
project = models.ForeignKey(
|
project = models.ForeignKey(
|
||||||
Project, related_name="files", null=True, on_delete=models.SET_NULL
|
Project, related_name="files", null=True, on_delete=models.SET_NULL
|
||||||
)
|
)
|
||||||
|
@ -38,3 +77,15 @@ class Dicom(models.Model):
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse("get_update_delete_dicom", kwargs={"slug": self.slug})
|
return reverse("get_update_delete_dicom", kwargs={"slug": self.slug})
|
||||||
|
|
||||||
|
|
||||||
|
class Layer(models.Model):
|
||||||
|
parent = models.ForeignKey(
|
||||||
|
"self", related_name="children", blank=True, null=True, on_delete=models.CASCADE
|
||||||
|
)
|
||||||
|
dicom = models.ForeignKey(Dicom, related_name="layers", on_delete=models.CASCADE)
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
slug = models.SlugField(max_length=8)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"layer on {self.dicom}"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from dicom.models import Dicom
|
from dicom.models import Layer
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from polymorphic.models import PolymorphicModel
|
from polymorphic.models import PolymorphicModel
|
||||||
|
|
||||||
|
@ -7,8 +7,7 @@ class BaseShape(PolymorphicModel):
|
||||||
TYPE = "no_type"
|
TYPE = "no_type"
|
||||||
min_coordinates = None
|
min_coordinates = None
|
||||||
max_coordinates = None
|
max_coordinates = None
|
||||||
dicom = models.ForeignKey(Dicom, related_name="shapes", on_delete=models.CASCADE)
|
layer = models.ForeignKey(Layer, related_name="shapes", on_delete=models.CASCADE)
|
||||||
image_number = models.IntegerField()
|
|
||||||
|
|
||||||
def serialize_self(self):
|
def serialize_self(self):
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user