diff --git a/Packages/ohif-servers/both/schema/servers.js b/Packages/ohif-servers/both/schema/servers.js index f8a28f0ef..5a0a224e0 100644 --- a/Packages/ohif-servers/both/schema/servers.js +++ b/Packages/ohif-servers/both/schema/servers.js @@ -175,6 +175,11 @@ export const UISettings = new SimpleSchema({ type: String, label: 'Cornerstone default image renderer', defaultValue: 'webgl' + }, + sortSeriesByIncomingOrder: { + type: Boolean, + label: 'Define if the series\' images shall be sorted by incoming order. Sort by Instance Number by default.', + defaultValue: false } }); diff --git a/Packages/ohif-viewerbase/client/lib/createStacks.js b/Packages/ohif-viewerbase/client/lib/createStacks.js index ca946a873..6c7414961 100644 --- a/Packages/ohif-viewerbase/client/lib/createStacks.js +++ b/Packages/ohif-viewerbase/client/lib/createStacks.js @@ -1,5 +1,7 @@ +import { Meteor } from 'meteor/meteor'; import { ImageSet } from './classes/ImageSet'; import { isImage } from './isImage'; +import { OHIF } from 'meteor/ohif:core'; const isMultiFrame = instance => { // NumberOfFrames (0028,0008) @@ -26,11 +28,14 @@ const makeDisplaySet = (series, instances) => { isMultiFrame: isMultiFrame(instance) }); - // Sort the images in this series - imageSet.sortBy((a, b) => { - // Sort by InstanceNumber (0020,0013) - return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0); - }); + // Sort the images in this series if needed + const shallSort = !OHIF.utils.ObjectPath.get(Meteor, 'settings.public.ui.sortSeriesByIncomingOrder'); + if (shallSort) { + imageSet.sortBy((a, b) => { + // Sort by InstanceNumber (0020,0013) + return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0); + }); + } // Include the first image instance number (after sorted) imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));