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()
|
series_image.save()
|
||||||
|
|
||||||
print(series_image)
|
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
|
Image details
|
||||||
</summary>
|
</summary>
|
||||||
{% for image in series.images.all %}
|
{% 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 %}
|
{% if image.image %}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% 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 %}
|
{% if series_list %}
|
||||||
|
|||||||
+1
-1
@@ -188,7 +188,7 @@ urlpatterns = [
|
|||||||
path("structure/create", views.StructureCreate.as_view(), name="structure_create"),
|
path("structure/create", views.StructureCreate.as_view(), name="structure_create"),
|
||||||
path("series/<int:pk>", views.series_detail, name="series_detail"),
|
path("series/<int:pk>", views.series_detail, name="series_detail"),
|
||||||
path("series/", views.SeriesView.as_view(), name="series_view"),
|
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(
|
path(
|
||||||
"series/<int:pk>/<int:finding_pk>",
|
"series/<int:pk>/<int:finding_pk>",
|
||||||
views.series_detail,
|
views.series_detail,
|
||||||
|
|||||||
@@ -940,6 +940,11 @@ def series_order_dicom(request, pk):
|
|||||||
|
|
||||||
return redirect("atlas:series_detail", pk=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
|
@login_required
|
||||||
@user_is_author_or_atlas_series_checker
|
@user_is_author_or_atlas_series_checker
|
||||||
|
|||||||
@@ -195,6 +195,13 @@ class SeriesImageBase(models.Model):
|
|||||||
ordering = ["position"]
|
ordering = ["position"]
|
||||||
abstract = True
|
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):
|
def get_dicom_info(self):
|
||||||
try:
|
try:
|
||||||
info = pretty_print_dicom(pydicom.read_file(self.image))
|
info = pretty_print_dicom(pydicom.read_file(self.image))
|
||||||
|
|||||||
Reference in New Issue
Block a user