add basic dicom diff support
This commit is contained in:
+29
-1
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user