Source code for endoreg_db.models.medical.finding.finding_morphology_classification

from django.db import models
from typing import List

class FindingMorphologyClassificationTypeManager(models.Manager):
    def get_by_natural_key(self, name):
        return self.get(name=name)
    
[docs] class FindingMorphologyClassificationType(models.Model): name = models.CharField(max_length=255, unique=True) name_de = models.CharField(max_length=255, blank=True) name_en = models.CharField(max_length=255, blank=True) description = models.TextField(blank=True) objects = FindingMorphologyClassificationTypeManager()
[docs] def natural_key(self): return (self.name,)
def __str__(self): return str(self.name)
[docs] @classmethod def get_required_classifications_for_finding(cls, finding): """ Returns all required morphology classification types for a given finding. """ required_classification_types = [ _ for _ in finding.required_morphology_classification_types.all() ] return required_classification_types
class FindingMorphologyClassificationManager(models.Manager): def get_by_natural_key(self, name): return self.get(name=name)
[docs] class FindingMorphologyClassification(models.Model): name = models.CharField(max_length=255, unique=True) name_de = models.CharField(max_length=255, blank=True) name_en = models.CharField(max_length=255, blank=True) description = models.TextField(blank=True) classification_type = models.ForeignKey(FindingMorphologyClassificationType, on_delete=models.CASCADE) objects = FindingMorphologyClassificationManager()
[docs] def natural_key(self): return (self.name,)
def __str__(self): return str(self.name)
[docs] def get_choices(self): choices: List[FindingMorphologyClassificationChoice] = [_ for _ in self.choices.all()] return choices
class FindingMorphologyClassificationChoiceManager(models.Manager): def get_by_natural_key(self, name): return self.get(name=name)
[docs] class FindingMorphologyClassificationChoice(models.Model): name = models.CharField(max_length=255, unique=True) name_de = models.CharField(max_length=255, blank=True) name_en = models.CharField(max_length=255, blank=True) description = models.TextField(blank=True) classification = models.ForeignKey( FindingMorphologyClassification, on_delete=models.CASCADE, related_name='choices' ) subcategories = models.JSONField( default = dict ) numerical_descriptors = models.JSONField( default = dict ) objects = FindingMorphologyClassificationChoiceManager()
[docs] def natural_key(self): return (self.name,)
def __str__(self): _str = f"{self.name} ({self.classification})" return _str