add basic dicom diff support

This commit is contained in:
Ross
2024-02-05 09:15:38 +00:00
parent 5581461fb7
commit 1e16386e1e
6 changed files with 89 additions and 6 deletions
+29 -1
View File
@@ -17,6 +17,7 @@ from django.core.exceptions import (
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.views.generic import View
from django.views.generic.detail import DetailView
import pydicom
from generic.mixins import SuperuserRequiredMixin
from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormView
@@ -116,7 +117,7 @@ import plotly.express as px
from django.core.cache import cache
from django.conf import settings
from helpers.images import image_as_base64
from helpers.images import image_as_base64, print_dicom
import logging
from copy import deepcopy
@@ -130,6 +131,7 @@ import reversion
from rest_framework import viewsets
import os
import difflib
logger = logging.getLogger(__name__)
@@ -1039,6 +1041,32 @@ def series_order_dicom(request, pk):
return redirect("atlas:series_detail", pk=pk)
@login_required
def image_diff(request):
if request.htmx:
image_ids = request.POST.getlist("image-id")
first: SeriesImage = get_object_or_404(SeriesImage, pk=image_ids[0])
second: SeriesImage = get_object_or_404(SeriesImage, pk=image_ids[1])
first_ds = pydicom.read_file(first.image.file)
#del first_ds.PixelData
#j1 = first_ds.to_json_dict()
f = print_dicom(first_ds, join=False)
second_ds = pydicom.read_file(second.image.file)
#del second_ds.PixelData
#j2 = second_ds.to_json_dict()
s = print_dicom(second_ds, join=False)
diff = difflib.HtmlDiff().make_table(f, s)
return HttpResponse(diff)
return HttpResponse("Fail")
@login_required
def series_image_dicom(request, pk):