-
Notifications
You must be signed in to change notification settings - Fork 285
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* First commit * Add multiframe support to cs3d * Remove unnecessary file and refactoring * Remove unnecessary file and refactoring code * Running required checks * Refactoring convertMultiframeImageIds function * Adding multiframe support for local example * Update cswil version
- Loading branch information
1 parent
5303d1a
commit 327f17a
Showing
6 changed files
with
101 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
import { metaData } from '@cornerstonejs/core'; | ||
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; | ||
|
||
/** | ||
* preloads imageIds metadata in memory | ||
**/ | ||
async function prefetchMetadataInformation(imageIdsToPrefetch) { | ||
for (let i = 0; i < imageIdsToPrefetch.length; i++) { | ||
await cornerstoneWADOImageLoader.wadouri.loadImage(imageIdsToPrefetch[i]) | ||
.promise; | ||
} | ||
} | ||
|
||
function getFrameInformation(imageId) { | ||
if (imageId.includes('wadors:')) { | ||
const frameIndex = imageId.indexOf('/frames/'); | ||
const imageIdFrameless = | ||
frameIndex > 0 ? imageId.slice(0, frameIndex + 8) : imageId; | ||
return { | ||
frameIndex, | ||
imageIdFrameless, | ||
}; | ||
} else { | ||
const frameIndex = imageId.indexOf('&frame='); | ||
let imageIdFrameless = | ||
frameIndex > 0 ? imageId.slice(0, frameIndex + 7) : imageId; | ||
if (!imageIdFrameless.includes('&frame=')) { | ||
imageIdFrameless = imageIdFrameless + '&frame='; | ||
} | ||
return { | ||
frameIndex, | ||
imageIdFrameless, | ||
}; | ||
} | ||
} | ||
/** | ||
* Receives a list of imageids possibly referring to multiframe dicom images | ||
* and returns a list of imageid where each imageid referes to one frame. | ||
* For each imageId representing a multiframe image with n frames, | ||
* it will create n new imageids, one for each frame, and returns the new list of imageids | ||
* If a particular imageid no refer to a mutiframe image data, it will be just copied into the new list | ||
* @returns new list of imageids where each imageid represents a frame | ||
*/ | ||
function convertMultiframeImageIds(imageIds) { | ||
const newImageIds = []; | ||
imageIds.forEach((imageId) => { | ||
const { imageIdFrameless } = getFrameInformation(imageId); | ||
const instanceMetaData = metaData.get('multiframeModule', imageId); | ||
if ( | ||
instanceMetaData && | ||
instanceMetaData.NumberOfFrames && | ||
instanceMetaData.NumberOfFrames > 1 | ||
) { | ||
const NumberOfFrames = instanceMetaData.NumberOfFrames; | ||
for (let i = 0; i < NumberOfFrames; i++) { | ||
const newImageId = imageIdFrameless + (i + 1); | ||
newImageIds.push(newImageId); | ||
} | ||
} else newImageIds.push(imageId); | ||
}); | ||
return newImageIds; | ||
} | ||
|
||
export { convertMultiframeImageIds, prefetchMetadataInformation }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters