fix(segmentation): Changes to fix problems with non hydrated/loaded segmentations to be viewable when switching hanging protocols (e.g. MPR)#5139
Conversation
Use volumeLoader.createAndCacheVolume to create the volume for a SEG display set. This produces a StreamingImageVolume which is essential for switching to hanging protocols like MPR. RTSTRUCT display sets are now marked as reconstructable. For when multiple display sets occupy the active viewport, cache and restore each appropriately. Added tests: - launch MPR with unhydrated segmentation. - launch MPR and then add (but not load) a segmentation from the overlay menu - add (but not load) a segmentation from the overlay menu and then launch MPR
✅ Deploy Preview for ohif-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
extensions/cornerstone-dicom-rt/src/getSopClassHandlerModule.ts
Outdated
Show resolved
Hide resolved
extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts
Outdated
Show resolved
Hide resolved
| } else { | ||
| await viewport.setVolumes(filteredVolumeInputArray); | ||
| } | ||
| await viewport.setVolumes(volumeInputArray); |
There was a problem hiding this comment.
No longer is there need to set the overlay display set volumes separately.
|
|
||
| displaySetsInfo.push(displaySetInfo); | ||
|
|
||
| if (id === 'activeDisplaySet') { |
There was a problem hiding this comment.
@wayfarer3130, here is where the various overlay display sets are added for the "active display set" of a hanging protocol.
extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts
Outdated
Show resolved
Hide resolved
extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts
Show resolved
Hide resolved
sedghi
left a comment
There was a problem hiding this comment.
Thanks
Here are the things i found
Do the data overlay, see does not work
see https://share.cleanshot.com/MGnJgpFZ
This issue is related to the next issue I will be looking at regarding RTSTRUCT. I think the problem is that we get an exception when we try to overlay a SEG or RTSTRUCT on a series that is NOT referenced by the SEG or RTSTRUCT series. Can we leave this for now or should continue fixing all these scenarios in this PR? |
extensions/cornerstone/src/components/SelectItemWithModality.tsx
Outdated
Show resolved
Hide resolved
…gImageVolume. Restore changes in CornerstoneViewportService but load all volumes the same way.
…structable flag. Use an array of display set uids as the value in the displaySetSelectorMap to handle layered viewports.
|
I'm getting exceptions in tmtv mode when I double click various series in the initial view and drag/drop different series in, and then return to the original view. Sometimes it works to change views and sometimes it doesnt |
Thanks @wayfarer3130. But could you please give me some exact steps? It appears to work the same as in https://viewer-dev.ohif.org/ |
Further on this... I have spent a bit of time double clicking series and dragging and dropping series in the TMTV HP. I discovered no specific exceptions that were bugs. I had https://viewer-dev.ohif.org/ side-by-side with this PR branch. Both behaved similarly. The exceptions I did manage to receive were the following and were ALSO present in master (i.e. viewer-dev) So @sedghi and @wayfarer3130 unless there are more specific steps and/or exceptions that need to be handled that are CAUSED by this PR, I will not look further. |
|
Let's merge this and then if Bill got some time can report what he is seeing. |
…mentations-and-mpr
* chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: e2e playwright tests runnigns (OHIF#5070) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(Customization): Fixed incorrect events broadcast (OHIF#5075) Co-authored-by: Dan Elkis <dan.elkis@signalpet.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(ui): Prevent unintended text selection and improve component behavior (OHIF#5077) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: create memo when manually adding and removing annotations (OHIF#5051) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * docs: Fixed incorrect documentation and variables names (OHIF#5080) Co-authored-by: Dan Elkis <dan.elkis@signalpet.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation): Allow for debounced pub/sub events to be reliably cancelled when unsubscribed to. (OHIF#5092) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(tmtv): Corrected the various section names being referenced. (OHIF#5093) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(touch): Allow for multi-touch in OHIF (OHIF#5099) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(WindowLevelActionMenu): The window level menu must show different contents for 3D volume viewports (OHIF#5113) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * docs: improved migration guides for 3p10 (OHIF#5110) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(touch): Prevent touch drag to refresh the browser page. (OHIF#5108) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(markerlabelmap): accept preview/reject preview not working when the marker annotation tools are active (OHIF#5101) Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: data-viewportId name is illegal, renamed to data-viewportid (OHIF#5121) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(commandsModule): Enhanced flipViewport and rotateViewport commands (OHIF#5065) Co-authored-by: Dan Elkis <dan.elkis@signalpet.com> * fix(ToolbarService): Fixed removeButton bug for removing buttons inside sections (OHIF#5123) Co-authored-by: Dan Elkis <dan.elkis@signalpet.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps): bump tar-fs from 2.1.2 to 2.1.3 (OHIF#5096) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(hp): When reapplying an hp the display set selectors should be considered. (OHIF#5074) Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(getToolbarModule): fix enabled state of image slice sync (OHIF#5136) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(UnitTest): run was failing due to JS tests importing TS modules (OHIF#5145) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(action-corners): check hideWhenDisabled at both the evaluator and prop levels (OHIF#5149) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps): bump pbkdf2 from 3.1.2 to 3.1.3 (OHIF#5152) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps-dev): bump webpack-dev-server from 4.7.3 to 5.2.1 (OHIF#5114) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: Ultrasound Pleura B-line Annotation Mode & Extension (OHIF#5061) * test(MeasurementPanel): Converted MeasurementPanel interaction tests from cypress to playwright (OHIF#5153) * feat(toolbar/hokeys): add pub sub events to hotkeys manager class, subscribe toolbar to hotkeys pressed event (OHIF#5157) * fix(build): BUILD_PACKAGES_QUICK PR check (OHIF#5160) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(unit-tests): Update bun.lock to fix unit tests. (OHIF#5159) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps-dev): bump webpack from 5.89.0 to 5.94.0 in /modes/usAnnotation (OHIF#5156) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(labelmap): Add labelmap segmentation in OHIF (OHIF#5158) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps-dev): bump webpack from 5.89.0 to 5.94.0 in /extensions/usAnnotation (OHIF#5162) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps): bump webpack to 5.95.0 (OHIF#5163) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation): Changes to fix problems with non hydrated/loaded segmentations to be viewable when switching hanging protocols (e.g. MPR) (OHIF#5139) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(hp): add onStageChange callback (OHIF#5165) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation): Added support for unhydrated RTSTRUCT in MPR. Added support for overlaying segmentations over display sets the segmentations do not reference. (OHIF#5168) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: Add possibility to add additional props for PanelSection (OHIF#5172) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore: recovery 2 (OHIF#5014) merge to 3.11 (OHIF#5175) Co-authored-by: Alireza <ar.sedghi@gmail.com> Co-authored-by: Dan Rukas <dan.rukas@gmail.com> Co-authored-by: Tang Cheng <45505657+tctco@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: add force to remove image from cache (OHIF#5176) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(overlay-menu): Adding, changing and removing segmentation overlays should update the overlay menu instantly (OHIF#5181) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(labeling): measurement labeling dialog was overwriting the entire measurement and breaking it (OHIF#5095) * fix(measurement-group): use measurment study uid instead of active study uid (OHIF#5091) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: add segment label tool (OHIF#5164) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation overlays): Allow for the addition of multiple segmentation overlays. (OHIF#5189) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(rendering): Introduce SequentialRenderingEngine to resolve canvas size limitation, performance degradation on high res monitors and enhance multi-monitor support (OHIF#5195) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(security): Patch for Babel vulnerability (OHIF#5193) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: group clear measurements history (OHIF#5194) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(rendering): Introduce WebGLContextPool for parallel rendering in ContextPoolRenderingEngine (OHIF#5196) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: exception in newly added segmentations (OHIF#5198) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(UnitTests): Fixing "Cannot find module @cornerstonejs/core" error while running unit tests (OHIF#5148) * ui(icons): Adds action and helper icon artwork for segmentation (OHIF#5200) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: enhance preview accept method (OHIF#5199) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(UI): Restored the scroll bar OHIF L&F (OHIF#5202) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(viewport): Enhance Orientation Menu with Reformat Option and UI Improvements (OHIF#5184) Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> Co-authored-by: Alireza <ar.sedghi@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(panels): Allow for setting the initial and minimum expanded widths of each side panel. (OHIF#5207) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation): Removed LOAD/hydrate button for segmentation overlays (OHIF#5214) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(TMTV): The TMTV CSV file now has the correct name and contents (OHIF#5215) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(segmentation): Fix segmentationid undefined 5106 (OHIF#5107) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(DicomUpload): Fix upload form and some scrollbars styles (OHIF#5125) * fix(black-viewports): MPR viewports were turning black if their parent stack had it's properties reset (OHIF#5219) * fix(viewportgrid): don't subscribe to duplicate event listeners (OHIF#5218) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: image slices are displayed in reverse order, if we switch from common layout to 2D MPR (OHIF#5022) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(multimonitor): Study browser more menu fixes (OHIF#5208) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: labelmap init (OHIF#5228) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(security): Pin eslint-config-prettier and eslint-plugin-prettier versions. (OHIF#5234) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(docs): Added entry for the showStudyList configuration setting. (OHIF#5235) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat(segmentation): Add customization for handling missing referencedDisplaySetInstanceUID for the SEG/RTSTRUCT. (OHIF#4983) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps): bump form-data from 4.0.3 to 4.0.4 (OHIF#5244) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(docs): Added docs for multimonitor and local linking (OHIF#5247) * fix(security): Removed stylus package due to potential security vulnerability and we don't use it. (OHIF#5250) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(ViewportOrientationMarkers): round rotation to fix floating point issue (OHIF#5135) Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: disable seg download/export buttons until a user has drawn something (OHIF#4953) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(calibration): do not override user set calibration (OHIF#5231) Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore(deps): bump axios from 1.10.0 to 1.11.0 (OHIF#5252) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * Handle 200 status response and add default error handling (OHIF#5227) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: issue introduced from PR 5022 (OHIF#5223) Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * Fix flaky SEGDataOverlayForUnreferencedDisplaySetNoHydration test. (OHIF#5254) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(ArrowAnnotate): Allow free-form text for arrow annotations (OHIF#5259) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix: prevent failure in DICOM loader for wadouri type (OHIF#5260) Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(tooltips): tool tips should be portals (OHIF#5265) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * test(SegmentationPanel): add test for jump to center of segments from PACS and basic add, rename, delete from panel (OHIF#5262) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(multiframes): Corrected combining frame instances for multiframes. (OHIF#5264) * fix: null save voi range properties (OHIF#5268) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(colorbar): Allow for `AdvancedRenderingControls` to be placed at the top or bottom of the viewport. (OHIF#5270) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(colorbar): Allow for AdvancedRenderingControls to be placed at the left or right of the viewport. (OHIF#5273) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: improve segment label (OHIF#5217) Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * Adds containsAll validator (OHIF#5279) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * feat: add support to scoord3d (OHIF#5016) Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * fix(annotation): Add command to show pleura percentage in USAnnotationPanel and update condition for BLinePleuraPercentage (OHIF#5297) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore: release 3p11 * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] * chore: 3.11 Recovery 1 (OHIF#5514) * chore(version): version.json [skip ci] * chore(version): Update package versions [skip ci] --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com> Co-authored-by: ohif-bot <danny.ri.brown+ohif-bot@gmail.com> Co-authored-by: Alireza <ar.sedghi@gmail.com> Co-authored-by: Dan <12800016+rinslow@users.noreply.github.com> Co-authored-by: Dan Elkis <dan.elkis@signalpet.com> Co-authored-by: Pedro Köhler <pedrokohlerbh@gmail.com> Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Co-authored-by: Ibrahim <93064150+IbrahimCSAE@users.noreply.github.com> Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Patrick Wespi <pwespi@pm.me> Co-authored-by: Vinícius Alves de Faria Resende <viniciusfariaresende@gmail.com> Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com> Co-authored-by: rodrigobasilio2022 <114958722+rodrigobasilio2022@users.noreply.github.com> Co-authored-by: dxlin <dxlin@users.noreply.github.com> Co-authored-by: Celian-abd <101793092+Celian-abd@users.noreply.github.com> Co-authored-by: Dan Rukas <dan.rukas@gmail.com> Co-authored-by: Tang Cheng <45505657+tctco@users.noreply.github.com> Co-authored-by: Salim Kanoun <salim.kanoun@gmail.com> Co-authored-by: Vishnu Suresh Perumbavoor <63797249+vishnusureshperumbavoor@users.noreply.github.com> Co-authored-by: Alexey Klimovich <alexeyklimovich@gmail.com> Co-authored-by: arul-trenser <arul.mozhi@trenser.com> Co-authored-by: Teo Udovčić <65370281+deepnothing@users.noreply.github.com> Co-authored-by: MatheusRdk <119511463+MatheusRdk@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Emmanuel Ferdman <emmanuelferdman@gmail.com> Co-authored-by: Mateus Cota <mateus.cota@cfaz.net> Co-authored-by: Will <70962569+WillianVarela@users.noreply.github.com>
Context
Attempting to switch hanging protocols prior to a segmentation being hydrated/loaded causes various exceptions and blank viewports.
Changes & Results
Adding segmentation via data portal in MPR mode (and other hanging protocols).
Use volumeLoader.createAndCacheVolume to create the volume for a SEG display set. This produces a StreamingImageVolume which is essential for switching to hanging protocols like MPR. RTSTRUCT display sets are now marked as reconstructable.
For when multiple display sets occupy the active viewport, cache and restore each appropriately.
Added tests:
Testing
Three tests at the very least...
Test A
Test B
Test C
Checklist
PR
semantic-release format and guidelines.
Code
etc.)
Public Documentation Updates
additions or removals.
Tested Environment