From 72c20c13e053c6b1a109209208bc8e78cd38d7a1 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 10 Nov 2025 11:18:20 +0000 Subject: [PATCH] Add fallback to 2D loader in DICOM 3D setup on viewport enable failure --- anatomy/static/js/anatomy.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/anatomy/static/js/anatomy.js b/anatomy/static/js/anatomy.js index 9f3164f3..11e2645b 100644 --- a/anatomy/static/js/anatomy.js +++ b/anatomy/static/js/anatomy.js @@ -548,13 +548,28 @@ async function setUpDicom3d(element) { console.log(renderingEngine) const viewportInput = { - viewportId, - type: Enums.ViewportType.STACK, - element, + viewportId, + type: Enums.ViewportType.STACK, + element, //viewportType: Enums.ViewportType.STACK, // Stack viewport for slice stacks }; - renderingEngine.enableElement(viewportInput); + try { + renderingEngine.enableElement(viewportInput); + } catch (err) { + // Some bundlings / integrations (dv3d wrapper) may reject the provided + // viewport type (e.g. "Viewport is not a valid type"). In that case + // fall back to the 2D cornerstone loader which is more permissive. + console.warn('renderingEngine.enableElement failed, falling back to 2D loader:', err); + try { + dicomViewer.loadCornerstone($(element), null, images, undefined, images.length > 5); + element._cornerstone3d = { fallback: 'cornerstone2d', imageCount: images.length }; + return element._cornerstone3d; + } catch (err2) { + console.error('2D fallback after enableElement failure also failed:', err2); + throw err; + } + } const viewport = renderingEngine.getViewport(viewportId);