extract a little more shared case /longs

This commit is contained in:
Ross
2023-06-12 11:27:07 +01:00
parent 56cc23a8f2
commit cbe7257fe8
3 changed files with 24 additions and 26 deletions
+3 -13
View File
@@ -42,6 +42,7 @@ from generic.models import (
Contrast, Contrast,
QuestionNote, QuestionNote,
SeriesBase, SeriesBase,
SeriesImageBase,
) )
# from generic.models import Examination, Site, Condition, Sign # from generic.models import Examination, Site, Condition, Sign
@@ -319,23 +320,12 @@ class Case(models.Model):
return f"{self.pk}:{self.title} {'/'.join([str(c) for c in self.condition.all()])} [{', '.join(examinations)}]" return f"{self.pk}:{self.title} {'/'.join([str(c) for c in self.condition.all()])} [{', '.join(examinations)}]"
class SeriesImage(models.Model): class SeriesImage(SeriesImageBase):
image = models.FileField(upload_to=image_directory_path) image = models.FileField(upload_to=image_directory_path)
position = models.IntegerField(default=0)
upload_filename = models.CharField(max_length=255, blank=True)
series = models.ForeignKey( series = models.ForeignKey(
"Series", related_name="images", on_delete=models.SET_NULL, null=True "Series", related_name="images", on_delete=models.SET_NULL, null=True
) )
class Meta:
ordering = ["position"]
def get_dicom_info(self):
try:
info = pretty_print_dicom(pydicom.read_file(self.image))
except pydicom.errors.InvalidDicomError:
info = "File is not a dicom."
return info
class SeriesFinding(models.Model): class SeriesFinding(models.Model):
@@ -400,7 +390,7 @@ class Series(SeriesBase):
def get_full_str(self): def get_full_str(self):
if self.case: if self.case:
case_id = ", ".format([case.pk for case in self.case.all()]) case_id = ", ".join([case.pk for case in self.case.all()])
# case_id = self.case.pk # case_id = self.case.pk
else: else:
case_id = "None" case_id = "None"
+19
View File
@@ -24,6 +24,7 @@ from django.contrib.auth.models import User
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
from helpers.images import pretty_print_dicom
from rad.settings import REMOTE_URL from rad.settings import REMOTE_URL
from django.utils.html import format_html from django.utils.html import format_html
@@ -115,6 +116,24 @@ class QuestionBase(models.Model):
"""If this makes sense in the question/answer context override""" """If this makes sense in the question/answer context override"""
return None return None
class SeriesImageBase(models.Model):
position = models.IntegerField(default=0)
upload_filename = models.CharField(max_length=255, blank=True)
series = models.ForeignKey(
"Series", related_name="images", on_delete=models.SET_NULL, null=True
)
class Meta:
ordering = ["position"]
abstract = True
def get_dicom_info(self):
try:
info = pretty_print_dicom(pydicom.read_file(self.image))
except pydicom.errors.InvalidDicomError:
info = "File is not a dicom."
return info
class SeriesBase(models.Model): class SeriesBase(models.Model):
description = models.TextField( description = models.TextField(
+2 -13
View File
@@ -38,6 +38,7 @@ from generic.models import (
QuestionBase, QuestionBase,
QuestionNote, QuestionNote,
SeriesBase, SeriesBase,
SeriesImageBase,
UserAnswerBase, UserAnswerBase,
UserUserGroup, UserUserGroup,
) )
@@ -351,24 +352,12 @@ def test_image_validator(file):
pass pass
class LongSeriesImage(models.Model): class LongSeriesImage(SeriesImageBase):
image = models.FileField(upload_to=image_directory_path) image = models.FileField(upload_to=image_directory_path)
position = models.IntegerField(default=0)
upload_filename = models.CharField(max_length=255, blank=True)
series = models.ForeignKey( series = models.ForeignKey(
"LongSeries", related_name="images", on_delete=models.SET_NULL, null=True "LongSeries", related_name="images", on_delete=models.SET_NULL, null=True
) )
class Meta:
ordering = ["position"]
def get_dicom_info(self):
try:
info = pretty_print_dicom(pydicom.read_file(self.image))
except pydicom.errors.InvalidDicomError:
info = "File is not a dicom."
return info
@reversion.register @reversion.register
class LongSeries(SeriesBase): class LongSeries(SeriesBase):