From d87874d0b1399dc9d2b600b50b677ba2855c64a9 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 30 Oct 2023 11:59:44 +0000 Subject: [PATCH] add some more dicom viewing capablities --- atlas/api.py | 6 ++++++ atlas/templates/atlas/series_image_dicom.html | 8 ++++++++ atlas/templates/atlas/series_viewer.html | 2 +- atlas/templates/atlas/user_uploads.html | 2 +- atlas/urls.py | 2 +- atlas/views.py | 5 +++++ generic/models.py | 7 +++++++ 7 files changed, 29 insertions(+), 3 deletions(-) create mode 100755 atlas/templates/atlas/series_image_dicom.html diff --git a/atlas/api.py b/atlas/api.py index bd08276e..8ab36967 100644 --- a/atlas/api.py +++ b/atlas/api.py @@ -235,3 +235,9 @@ def generate_image_hash(request, id: int): series_image.save() print(series_image) + +@router.get("/view_dicom_tags/{hash}", auth=django_auth) +def view_dicom_tags(request, hash: str): + + item = SeriesImage.objects.get(image_md5_hash=hash) + return item.get_dicom_json() \ No newline at end of file diff --git a/atlas/templates/atlas/series_image_dicom.html b/atlas/templates/atlas/series_image_dicom.html new file mode 100755 index 00000000..30b15603 --- /dev/null +++ b/atlas/templates/atlas/series_image_dicom.html @@ -0,0 +1,8 @@ +{% extends "atlas/base.html" %} + +{% block content %} +
+
+ {{image.get_dicom_info|safe}} + +{% endblock %} diff --git a/atlas/templates/atlas/series_viewer.html b/atlas/templates/atlas/series_viewer.html index 3e0bbb8d..0df66b80 100755 --- a/atlas/templates/atlas/series_viewer.html +++ b/atlas/templates/atlas/series_viewer.html @@ -73,7 +73,7 @@ Image details {% for image in series.images.all %} - [{{ image.id }}] {{image.image.url}}, pos: {{image.position}}, {{image.upload_filename}} + [{{ image.id }}] {{image.image.url}}, pos: {{image.position}}, {{image.upload_filename}} {% if image.image %} diff --git a/atlas/templates/atlas/user_uploads.html b/atlas/templates/atlas/user_uploads.html index f9d5c284..f9b531ab 100644 --- a/atlas/templates/atlas/user_uploads.html +++ b/atlas/templates/atlas/user_uploads.html @@ -8,7 +8,7 @@ {% endif %} - Click to select cases to import. If no series are selected all will be seleced/imported.
+ Click to select cases to import. If no series are selected all will be selected/imported.
{% if series_list %} diff --git a/atlas/urls.py b/atlas/urls.py index ad029cf4..39133fe0 100755 --- a/atlas/urls.py +++ b/atlas/urls.py @@ -188,7 +188,7 @@ urlpatterns = [ path("structure/create", views.StructureCreate.as_view(), name="structure_create"), path("series/", views.series_detail, name="series_detail"), path("series/", views.SeriesView.as_view(), name="series_view"), - path("series/", views.series_detail, name="series_detail"), + path("series_image//dicom", views.series_image_dicom, name="series_image_dicom"), path( "series//", views.series_detail, diff --git a/atlas/views.py b/atlas/views.py index 7c85b51d..68536a17 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -940,6 +940,11 @@ def series_order_dicom(request, pk): return redirect("atlas:series_detail", pk=pk) +@login_required +def series_image_dicom(request, pk): + image = get_object_or_404(SeriesImage, pk=pk) + + return render(request, "atlas/series_image_dicom.html", {"image": image}) @login_required @user_is_author_or_atlas_series_checker diff --git a/generic/models.py b/generic/models.py index 68272aa3..de48664b 100644 --- a/generic/models.py +++ b/generic/models.py @@ -195,6 +195,13 @@ class SeriesImageBase(models.Model): ordering = ["position"] abstract = True + def get_dicom_json(self): + try: + json = pydicom.read_file(self.image).to_json() + except pydicom.errors.InvalidDicomError: + return {} + return json + def get_dicom_info(self): try: info = pretty_print_dicom(pydicom.read_file(self.image))