diff --git a/dicomViewer.js b/dicomViewer.js index 771cceb..71187a6 100644 --- a/dicomViewer.js +++ b/dicomViewer.js @@ -15,7 +15,6 @@ cornerstoneTools.init({ let tool_state = {}; - export function loadCornerstone(main_element, db, images, annotations_to_load, load_as_stack = false) { // canvas-panel holds the enabled elements and all tools / menus const canvas_panel = $("
"); @@ -619,6 +618,7 @@ 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) let load_annotation_image = true; if (load_annotation_image) { @@ -791,6 +791,12 @@ function keyDownHandler(e, element) { } e.preventDefault(); // Needed to stop the default action (scroll) break; + case 38: // Up + manualScrollDicom(1, element); + break; + case 40: // down + manualScrollDicom(-1, element); + break; case 46: // . //toggleFlagged(); break; @@ -865,6 +871,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { const ArrowAnnotateTool = cornerstoneTools.ArrowAnnotateTool; const RectangleRoiTool = cornerstoneTools.RectangleRoiTool; const LengthTool = cornerstoneTools.LengthTool; + const AngleTool = cornerstoneTools.AngleTool; + const CobbAngleTool = cornerstoneTools.CobbAngleTool; + const EraserTool = cornerstoneTools.EraserTool; cornerstone.enable(element); element.tabIndex = 0; @@ -886,6 +895,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { cornerstoneTools.addToolForElement(element, StackScrollTool); cornerstoneTools.addToolForElement(element, MagnifyTool); cornerstoneTools.addToolForElement(element, LengthTool); + cornerstoneTools.addToolForElement(element, AngleTool); + cornerstoneTools.addToolForElement(element, CobbAngleTool); + cornerstoneTools.addToolForElement(element, EraserTool); //cornerstoneTools.addTool(ArrowAnnotateTool); //cornerstoneTools.addTool(RectangleRoiTool); @@ -924,6 +936,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { "Length", "ArrowAnnotate", "RectangleRoi", + "Angle", + "CobbAngle", + "Eraser", ]; $(".mouse-binding-select option").remove(); @@ -973,6 +988,7 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { loadAltDicomInterface(db); element.addEventListener("cornerstoneimagerendered", onImageRendered); + element.addEventListener("cornerstonenewimage", onNewImage); //element.addEventListener("cornerstonetoolskeydown", keyDownHandler); //setDicomCanvasNonFullscreen(element); @@ -1012,7 +1028,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { $(element).on("mouseup", function (event) { console.log(event) - if (event.which == 4) { getNextAnnotationImage(element)} + if (event.which == 4) { + getNextAnnotationImage(element) + } $(".magnifyTool").hide(); }); } @@ -1053,6 +1071,48 @@ async function loadAltDicomInterface(db) { }); } +function onNewImage(e) { + let dataSet = e.detail.image.data; + checkAnonStatus(dataSet) +} + +function checkAnonStatus(dataSet) { + let accession_number = dataSet.string('x00080050').toLowerCase(); + let patient_id = dataSet.string('x00100020').toLowerCase(); + + let not_anon = false; + + let site_codes = ["ref", "rk9", "ra9", "rh8", "rbz", "rba"] + + for (let i = 0; i < site_codes.length; i++) { + if ( + accession_number.startsWith(site_codes[i]) || + patient_id.startsWith(site_codes[i])) { + not_anon = true; + } + } + + if (not_anon) { + toastr.warning(`File does not appear to be annonymised