from django.db import models
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ...medical import Endoscope, EndoscopyProcessor
from ...administration import (
FirstName, LastName,
CenterProduct,
CenterWaste, CenterResource
)
from ...media import AnonymExaminationReport, AnonymHistologyReport
class CenterManager(models.Manager):
def get_by_natural_key(self, name) -> "Center":
return self.get(name=name)
[docs]
class Center(models.Model):
objects = CenterManager()
# import_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)
name_de = models.CharField(max_length=255, blank=True, null=True)
name_en = models.CharField(max_length=255, blank=True, null=True)
first_names = models.ManyToManyField(
to="FirstName",
related_name="centers",
)
last_names = models.ManyToManyField("LastName", related_name="centers")
if TYPE_CHECKING:
center_products: models.QuerySet["CenterProduct"]
center_resources: models.QuerySet["CenterResource"]
center_wastes: models.QuerySet["CenterWaste"]
endoscopy_processors: models.QuerySet["EndoscopyProcessor"]
endoscopes: models.QuerySet["Endoscope"]
first_names: models.QuerySet["FirstName"]
last_names: models.QuerySet["LastName"]
anonymexaminationreport_set: models.QuerySet["AnonymExaminationReport"]
anonymhistologyreport_set: models.QuerySet["AnonymHistologyReport"]
objects: CenterManager
[docs]
@classmethod
def get_by_name(cls, name):
return cls.objects.get(name=name)
[docs]
def natural_key(self) -> tuple[str]:
return (self.name,)
def __str__(self) -> str:
return str(object=self.name)
[docs]
def get_first_names(self):
return self.first_names.all()
[docs]
def get_last_names(self):
return self.last_names.all()
[docs]
def get_endoscopes(self):
return self.endoscopes.all()