diff --git a/atlas/views.py b/atlas/views.py
index db5f1013..4f396c9b 100755
--- a/atlas/views.py
+++ b/atlas/views.py
@@ -1,4 +1,5 @@
import json
+import pprint
from dal import autocomplete
from django.shortcuts import render, get_object_or_404, redirect
from django import forms
@@ -1064,11 +1065,11 @@ def image_diff(request):
diff = difflib.HtmlDiff().make_table(f, s)
- #dict_diff = compare_dicom_datasets(first_ds, second_ds)
+ dict_diff = pprint.pformat(compare_dicom_datasets(first_ds, second_ds))
- return HttpResponse(diff)
+ #return HttpResponse(diff)
- #return HttpResponse(f"
{dict_diff}
{diff}")
+ return HttpResponse(f"{dict_diff}
{diff}")
return HttpResponse("Fail")
diff --git a/helpers/images.py b/helpers/images.py
index b811a4e7..3960ad51 100644
--- a/helpers/images.py
+++ b/helpers/images.py
@@ -220,8 +220,15 @@ def get_image_hash(img, dataset=None, hash_type="blake3", direct_pixel_data=True
def compare_dicom_elements(element1: pydicom.DataElement, element2: pydicom.DataElement):
+ dont_print = ['Pixel Data', 'File Meta Information Version']
+
+ if element1.name in dont_print:
+ return {}
+
differences = {}
+ vr_exists = False
+
# Compare the element tags
try:
if element1.tag != element2.tag:
@@ -230,15 +237,20 @@ def compare_dicom_elements(element1: pydicom.DataElement, element2: pydicom.Data
pass
# Compare the VR (Value Representation)
- if element1.VR != element2.VR:
- differences['VR'] = (element1.VR, element2.VR)
+ try:
+ if element1.VR != element2.VR:
+ vr_exists = True
+ differences['VR'] = (element1.VR, element2.VR)
+
+ except AttributeError:
+ pass
# Compare the value
if element1.value != element2.value:
differences['value'] = (element1.value, element2.value)
# Recursively compare the child elements
- if element1.VR == 'SQ' and element2.VR == 'SQ':
+ if vr_exists and element1.VR == 'SQ' and element2.VR == 'SQ':
for i, (item1, item2) in enumerate(zip(element1.value, element2.value)):
item_differences = compare_dicom_elements(item1, item2)
if item_differences:
@@ -253,17 +265,17 @@ def compare_dicom_datasets(dataset1: pydicom.Dataset, dataset2: pydicom.Dataset)
for element1 in dataset1:
element2 = dataset2.get(element1.tag)
if element2 is None:
- differences[element1.tag] = ('missing', element1.value)
+ differences[f"{element1.tag} {element1.name}"] = ('missing', element1.value)
else:
element_differences = compare_dicom_elements(element1, element2)
if element_differences:
- differences[element1.tag] = element_differences
+ differences[f"{element1.tag} {element1.name}"] = element_differences
# Check for any extra elements in dataset2
for element2 in dataset2:
element1 = dataset1.get(element2.tag)
if element1 is None:
- differences[element2.tag] = ('extra', element2.value)
+ differences[f"{element1.tag} {element1.name}"] = ('extra', element2.value)
return differences