OHIF / Viewers

OHIF zero-footprint DICOM viewer and oncology specific Lesion Tracker, plus shared extension packages
https://docs.ohif.org/
MIT License
2.98k stars 3.12k forks source link

The instances of a 4D MR series are not loading completely. #4232

Open rghgit1 opened 2 weeks ago

rghgit1 commented 2 weeks ago

Describe the Bug

A series has both 4D and 3D instances. Only 3D instance are getting displayed in viewport. The 4D instance are not displayed. Attached is the series which is having issue. d64b9ef7-0434b983-b6fad63e-94c7c0f0-b64c7464.zip

The attached series has 36 instances. 1-18 are 4D and 19-36 are 3D. Only 19-36 instances are getting displayed in viewport.

This is happening with v3.8.0. However, with v3.8.0_beta.18 all the scans were getting loaded.

Steps to Reproduce

Load the attached series to Orthanc. View the series using Ohif v 3.8.0

The current behavior

Only instance 19-36 are getting displayed image

The expected behavior

Load all 36 instance and display a warning message similar to how it was in v3.8.0_beta.18 version image

OS

Window11

Node version

21.6.1

Browser

Edge 125.0.2535.92

rghgit1 commented 2 weeks ago

extensions\default\src\getSopClassHandlerModule.js - Looks like the DYNAMIC_VOLUME_LOADER_SCHEME is causing this behavior for timepoint data. If I use DEFAULT_VOLUME_LOADER_SCHEME all the instances are displayed (the order is still not correct though)

rghgit1 commented 2 weeks ago

Made below changes in extensions\default\src\getSopClassHandlerModule.js to get it working for now. Only use DYNAMIC_VOLUME_LOADER_SCHEME for CT/PT. Do suggest if there are better solutions.

function getDisplaySetInfo(instances) {
  const dynamicVolumeInfo = getDynamicVolumeInfo(instances);
  const { isDynamicVolume, timePoints } = dynamicVolumeInfo;
  let displaySetInfo;

  const { appConfig } = appContext;

  // if (isDynamicVolume) {
  if (isDynamicVolume && (instances.Modality === 'CT' || instances.Modality === 'PT')) {
    const timePoint = timePoints[0];
    const instancesMap = new Map();
adriangaliana commented 2 weeks ago

Hello @rghgit1, do you try the cinema Mode? I try with your data: image image image

With new versions, you can move trouth B-values or other types of 4D volumes 😊

rghgit1 commented 2 weeks ago

Hello @adriangaliana ,

Thank you for the prompt response and suggestions.

The solution appears to address the issue. However, during testing, I observed the following:

  1. The DiffusionBValue remains at 0/2 until I initiate playback. Shouldn't it change to 1/2 when the slider is moved to the right side, even before playback?
  2. When I select Cine, play the instance, and then deselect Cine, attempting to select Cine again causes the window to crash with the following message in the console: TypeError: Cannot set properties of undefined (setting 'timePointIndex')

Could the temporary fix I implemented potentially cause any other issues?

sedghi commented 2 weeks ago

Thank you for opening this issue. Since our 4D support has just been added, I'm not surprised about encountering issues. I will look into this.