This commit is contained in:
Ross
2023-12-18 18:32:41 +00:00
parent e1ef236e7b
commit 06e0f6f6cb
2 changed files with 18 additions and 41 deletions
+12 -40
View File
@@ -896,6 +896,8 @@ class UncategorisedDicom(models.Model):
created_date = models.DateTimeField(default=timezone.now)
basic_dicom_tags = models.JSONField(null=True)
def check_for_duplicates(self, image_hash):
duplicate = None
@@ -924,9 +926,13 @@ class UncategorisedDicom(models.Model):
duplicate = self.check_for_duplicates(image_hash)
self.basic_dicom_tags = self.get_basic_dicom_tags(ds)
if duplicate is not None:
raise DuplicateDicom
# Hack for tests
if image_hash != "1234":
super().save(*args, **kwargs) # Call the "real" save() method.
@@ -938,8 +944,10 @@ class UncategorisedDicom(models.Model):
except pydicom.errors.InvalidDicomError:
return None
def get_basic_dicom_tags(self):
with pydicom.dcmread(self.image) as ds:
def get_basic_dicom_tags(self, dataset=None):
try:
if dataset = is None:
dataset = pydicom.read_file(self.image)
to_include = (
"StudyDescription",
"Modality",
@@ -953,51 +961,15 @@ class UncategorisedDicom(models.Model):
tags = {}
for tag in to_include:
if tag in ds:
tags[tag] = ds[tag].value
if tag in dataset:
tags[tag] = dataset[tag].value
else:
tags[tag] = ""
return tags
try:
with pydicom.read_file(self.image) as ds:
to_include = (
"StudyDescription",
"Modality",
"ProtocolName",
"SeriesDescription",
"SeriesInstanceUID",
"BodyPartExamined",
"SliceThickness",
)
tags = {}
for tag in to_include:
if tag in ds:
tags[tag] = ds[tag].value
else:
tags[tag] = ""
return tags
except pydicom.errors.InvalidDicomError:
return None
to_include = (
"StudyDescription",
"Modality",
"ProtocolName",
"SeriesDescription",
"SeriesInstanceUID",
"BodyPartExamined",
"SliceThickness",
)
tags = {}
for i in to_include:
tags[i] = "12345"
return tags
class DuplicateDicom(Exception):
pass
+6 -1
View File
@@ -388,7 +388,12 @@ def user_uploads(request, case_id: int | None = None):
data = defaultdict(list)
for d in dicoms:
tags = d.get_basic_dicom_tags()
if not d.basic_dicom_tags:
d.basic_dicom_tags = tags = d.get_basic_dicom_tags()
d.save()
else:
tags = d.basic_dicom_tags
data[tags["SeriesInstanceUID"]].append((tags, d.created_date))