add some more dicom viewing capablities
This commit is contained in:
@@ -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()
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{% extends "atlas/base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div id="single-dicom-viewer" class="dicom-viewer" data-images=["{{ image.image.url }}"] data-annotations=''>
|
||||
</div>
|
||||
{{image.get_dicom_info|safe}}
|
||||
|
||||
{% endblock %}
|
||||
@@ -73,7 +73,7 @@
|
||||
Image details
|
||||
</summary>
|
||||
{% for image in series.images.all %}
|
||||
[{{ image.id }}] {{image.image.url}}, pos: {{image.position}}, {{image.upload_filename}}
|
||||
[{{ image.id }}] <a href='{% url "atlas:series_image_dicom" image.pk %}'>{{image.image.url}}</a>, pos: {{image.position}}, {{image.upload_filename}}
|
||||
|
||||
|
||||
{% if image.image %}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
Click to select cases to import. If no series are selected all will be seleced/imported.<br/>
|
||||
Click to select cases to import. If no series are selected all will be selected/imported.<br/>
|
||||
|
||||
|
||||
{% if series_list %}
|
||||
|
||||
+1
-1
@@ -188,7 +188,7 @@ urlpatterns = [
|
||||
path("structure/create", views.StructureCreate.as_view(), name="structure_create"),
|
||||
path("series/<int:pk>", views.series_detail, name="series_detail"),
|
||||
path("series/", views.SeriesView.as_view(), name="series_view"),
|
||||
path("series/<int:pk>", views.series_detail, name="series_detail"),
|
||||
path("series_image/<int:pk>/dicom", views.series_image_dicom, name="series_image_dicom"),
|
||||
path(
|
||||
"series/<int:pk>/<int:finding_pk>",
|
||||
views.series_detail,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user