feat(thumbnails): Enhance DICOM Thumbnail Rendering with different strategies (#5004)
Co-authored-by: Martin Bellehumeur, M. Eng. <23396581+mbellehumeur@users.noreply.github.com>
This commit is contained in:
1 parent
dee6909a99
commit
578c3939f0
80 files changed
+371
-284
No files matched your search
@@ -37,8 +37,8 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "^1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "^2.4.5",
|
||||
"@cornerstonejs/core": "^3.12.1",
|
||||
"@cornerstonejs/dicom-image-loader": "^3.12.1",
|
||||
"@cornerstonejs/core": "^3.12.2",
|
||||
"@cornerstonejs/dicom-image-loader": "^3.12.2",
|
||||
"@ohif/ui": "3.11.0-beta.27",
|
||||
"cornerstone-math": "0.1.9",
|
||||
"dicom-parser": "^1.8.21"
|
||||
|
||||
@@ -18,10 +18,21 @@ export type DisplaySet = {
|
||||
isOverlayDisplaySet?: boolean;
|
||||
|
||||
// Details about how to display:
|
||||
/** A URL that can be used to display the thumbnail. Typically a data url */
|
||||
/**
|
||||
* A URL that can be used to display the thumbnail. Typically a data url
|
||||
* This can be set to null to avoid trying to display a thumbnail, eg for
|
||||
* display sets without a thumbnail.
|
||||
*/
|
||||
thumbnailSrc?: string;
|
||||
/** A fetch method to get the thumbnail */
|
||||
getThumbnailSrc?(imageId?: string): Promise<string>;
|
||||
|
||||
/**
|
||||
* A fetch URL to display the content. This is used for content such as
|
||||
* pdf display.
|
||||
*/
|
||||
renderedUrl?: string;
|
||||
|
||||
SeriesDate?: string;
|
||||
SeriesTime?: string;
|
||||
instance?: InstanceMetadata;
|
||||
|
||||
@@ -35,6 +35,7 @@ import {
|
||||
sortStudyInstances,
|
||||
sortingCriteria,
|
||||
seriesSortCriteria,
|
||||
instancesSortCriteria,
|
||||
} from './sortStudy';
|
||||
import { splitComma, getSplitParam } from './splitComma';
|
||||
import { createStudyBrowserTabs } from './createStudyBrowserTabs';
|
||||
@@ -56,6 +57,7 @@ const utils = {
|
||||
sortStudyInstances,
|
||||
sortingCriteria,
|
||||
seriesSortCriteria,
|
||||
instancesSortCriteria,
|
||||
writeScript,
|
||||
formatDate,
|
||||
formatTime,
|
||||
|
||||
@@ -42,7 +42,19 @@ const seriesSortCriteria = {
|
||||
};
|
||||
|
||||
const instancesSortCriteria = {
|
||||
default: (a, b) => parseInt(a.InstanceNumber) - parseInt(b.InstanceNumber),
|
||||
default: (a, b) => {
|
||||
// Sort by InstanceNumber (0020,0013)
|
||||
const aInstance = parseInt(a.InstanceNumber) || 0;
|
||||
const bInstance = parseInt(b.InstanceNumber) || 0;
|
||||
if (aInstance !== bInstance) {
|
||||
return (parseInt(a.InstanceNumber) || 0) - (parseInt(b.InstanceNumber) || 0);
|
||||
}
|
||||
// Fallback rule to enable consistent sorting
|
||||
if (a.SOPInstanceUID === b.SOPInstanceUID) {
|
||||
return 0;
|
||||
}
|
||||
return a.SOPInstanceUID < b.SOPInstanceUID ? -1 : 1;
|
||||
},
|
||||
};
|
||||
|
||||
const sortingCriteria = {
|
||||
@@ -116,4 +128,11 @@ export default function sortStudy(
|
||||
return study;
|
||||
}
|
||||
|
||||
export { sortStudy, sortStudySeries, sortStudyInstances, sortingCriteria, seriesSortCriteria };
|
||||
export {
|
||||
sortStudy,
|
||||
sortStudySeries,
|
||||
sortStudyInstances,
|
||||
sortingCriteria,
|
||||
seriesSortCriteria,
|
||||
instancesSortCriteria,
|
||||
};
|
||||
Reference in new issue
Block a user