update dicom viewer to support load by imageid
This commit is contained in:
@@ -585,13 +585,14 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l
|
||||
//});
|
||||
} else {
|
||||
let url;
|
||||
// This doesn't seem to have any benefit
|
||||
//if (data_url.startsWith("http")) {
|
||||
// url = data_url;
|
||||
//} else {
|
||||
// url = window.location.href.replace(/\/\#\/?$/, '') + "/" + data_url
|
||||
//}
|
||||
url = data_url;
|
||||
// Cornerstone needs the whole url to load? (not relative)
|
||||
if (data_url.startsWith("http")) {
|
||||
url = data_url;
|
||||
} else {
|
||||
url = window.location.href.replace(/\/\#\/?$/, '').replace("index.html", "") + "/" + data_url
|
||||
}
|
||||
//url = data_url;
|
||||
|
||||
|
||||
if (url.endsWith("dcm")) {
|
||||
url = "wadouri:" + url;
|
||||
@@ -618,7 +619,11 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l
|
||||
|
||||
//console.log("LOAD and cache, then", image);
|
||||
loadCornerstoneMainImage(element, image, stack, db, load_as_stack);
|
||||
checkAnonStatus(image.data)
|
||||
|
||||
// We can only check dicom data if it exists (e.g. not on jpegs)
|
||||
if (image.data != undefined) {
|
||||
checkAnonStatus(image.data)
|
||||
}
|
||||
|
||||
let load_annotation_image = true;
|
||||
if (load_annotation_image) {
|
||||
@@ -1215,6 +1220,12 @@ export function loadStackIndex(new_index, dicom_element) {
|
||||
//c = cornerstone.getEnabledElement(dicom_element)
|
||||
}
|
||||
|
||||
export function loadImageById(imageId, dicom_element) {
|
||||
cornerstone.loadImage(imageId).then(b => {
|
||||
cornerstone.displayImage(dicom_element, b);
|
||||
});
|
||||
}
|
||||
|
||||
function urltoFile(url, filename, mimeType) {
|
||||
return fetch(url)
|
||||
.then(function (res) {
|
||||
@@ -1277,34 +1288,34 @@ export function getNextAnnotationImage(element) {
|
||||
}
|
||||
|
||||
function manualScrollDicom(n, dicom_element) {
|
||||
// There must be a better way to do this...
|
||||
//dicom_element = document.getElementById("dicom-image");
|
||||
let c = cornerstone.getEnabledElement(dicom_element);
|
||||
// There must be a better way to do this...
|
||||
//dicom_element = document.getElementById("dicom-image");
|
||||
let c = cornerstone.getEnabledElement(dicom_element);
|
||||
|
||||
let max = c.toolStateManager.toolState.stack.data[0].imageIds.length;
|
||||
let max = c.toolStateManager.toolState.stack.data[0].imageIds.length;
|
||||
|
||||
if (max < 2) {
|
||||
return;
|
||||
}
|
||||
if (max < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
let current_index =
|
||||
c.toolStateManager.toolState.stack.data[0].currentImageIdIndex;
|
||||
let current_index =
|
||||
c.toolStateManager.toolState.stack.data[0].currentImageIdIndex;
|
||||
|
||||
let new_index = current_index + n
|
||||
|
||||
let corrected_index = Math.min(Math.max(new_index, 0), max)
|
||||
let new_index = current_index + n
|
||||
|
||||
// TODO: if loop
|
||||
//if (new_index >= max) {
|
||||
// corrected_index = new_index - max;
|
||||
//} else if (new_index < 0) {
|
||||
// corrected_index = new_index + max;
|
||||
//}
|
||||
let corrected_index = Math.min(Math.max(new_index, 0), max)
|
||||
|
||||
c.toolStateManager.toolState.stack.data[0].currentImageIdIndex = corrected_index;
|
||||
let id = c.toolStateManager.toolState.stack.data[0].imageIds[corrected_index];
|
||||
cornerstone.loadImage(id).then((b) => {
|
||||
cornerstone.displayImage(dicom_element, b);
|
||||
});
|
||||
// c = cornerstone.getEnabledElement(dicom_element)
|
||||
// TODO: if loop
|
||||
//if (new_index >= max) {
|
||||
// corrected_index = new_index - max;
|
||||
//} else if (new_index < 0) {
|
||||
// corrected_index = new_index + max;
|
||||
//}
|
||||
|
||||
c.toolStateManager.toolState.stack.data[0].currentImageIdIndex = corrected_index;
|
||||
let id = c.toolStateManager.toolState.stack.data[0].imageIds[corrected_index];
|
||||
cornerstone.loadImage(id).then((b) => {
|
||||
cornerstone.displayImage(dicom_element, b);
|
||||
});
|
||||
// c = cornerstone.getEnabledElement(dicom_element)
|
||||
}
|
||||
@@ -215,9 +215,10 @@
|
||||
$("#add-finding-button").click(() => {
|
||||
$("#hidden-form").show()
|
||||
dicom_element = $(".cornerstone-element").get(0);
|
||||
cornerstoneTools.globalImageIdSpecificToolStateManager.clear(dicom_element);
|
||||
cornerstone.reset(dicom_element);
|
||||
cornerstone.resize(dicom_element, true);
|
||||
//cornerstoneTools.globalImageIdSpecificToolStateManager.clear(dicom_element);
|
||||
//cornerstone.reset(dicom_element);
|
||||
////cornerstone.resize(dicom_element, true);
|
||||
$("#add-finding-button").hide()
|
||||
//$("#finding-form").empty().append(
|
||||
// $("#hidden-form form").clone()
|
||||
//);
|
||||
@@ -225,6 +226,7 @@
|
||||
});
|
||||
$("#cancel-add-finding-button").click((e) => {
|
||||
$("#hidden-form").hide()
|
||||
$("#add-finding-button").show()
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import json
|
||||
import pprint
|
||||
from typing import Any
|
||||
from dal import autocomplete
|
||||
from django.db.models.base import Model as Model
|
||||
from django.db.models.query import QuerySet
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django import forms
|
||||
from django.utils import timezone
|
||||
@@ -563,12 +566,21 @@ class CaseDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
|
||||
template_name = "confirm_delete.html"
|
||||
|
||||
|
||||
# TODO fix permissions
|
||||
class SeriesFindingDelete(RevisionMixin, PermissionRequiredMixin, DeleteView):
|
||||
permission_required = "atlas.delete_seriesfinding"
|
||||
model = SeriesFinding
|
||||
template_name = "confirm_delete.html"
|
||||
# success_url = reverse_lazy("atlas:case_view")
|
||||
|
||||
def get_object(self):
|
||||
series_finding = super().get_object()
|
||||
series = series_finding.series
|
||||
if series.check_user_can_edit(self.request.user):
|
||||
return series_finding
|
||||
else:
|
||||
raise PermissionDenied
|
||||
|
||||
def get_success_url(self):
|
||||
pk = self.kwargs["pk"]
|
||||
series_id = get_object_or_404(SeriesFinding, pk=pk).series.id
|
||||
@@ -1375,6 +1387,7 @@ class SeriesImagesZipView(SeriesImagesZipViewBase, SuperuserRequiredMixin):
|
||||
series_object = Series
|
||||
|
||||
|
||||
# At the moment only the series owner / author can delete findings but anyone can create
|
||||
def create_series_findings(request):
|
||||
# posts = Post.objects.all()
|
||||
response_data = {}
|
||||
|
||||
Reference in New Issue
Block a user