Fixed issue on ordering of display sets in OHIF Viewers + Fixed issue with tag to property name translation on OHIFInstanceMetadata class.
This commit is contained in:
1 parent
a06da4e6e1
commit
6003f67865
4 files changed
+58
-29
No files matched your search
@@ -126,22 +126,25 @@ export class InstanceMetadata extends Metadata {
|
||||
if (typeof tagOrProperty === NUMBER) {
|
||||
// if it's a number, build an hexadecimal representation...
|
||||
tagName = 'x' + ('00000000' + tagOrProperty.toString(16)).substr(-8);
|
||||
} else if (typeof tagOrProperty === STRING && REGEX_TAG.test(tagOrProperty)) {
|
||||
tagName = tagOrProperty;
|
||||
} else {
|
||||
// use it as a property name otherwise...
|
||||
propertyName = tagOrProperty;
|
||||
} else if (typeof tagOrProperty === STRING) {
|
||||
if (REGEX_TAG.test(tagOrProperty)) {
|
||||
tagName = tagOrProperty;
|
||||
} else {
|
||||
propertyName = tagOrProperty;
|
||||
}
|
||||
}
|
||||
|
||||
// It's a property
|
||||
if (tagName === null) {
|
||||
if (propertyName !== null) {
|
||||
// try to figure out the "tagName" using the provided "propertyName"...
|
||||
for (let tag in dicomTagDescriptions) {
|
||||
// No need to check for "hasOwnProperty" here since dicomTagDescriptions is an object with no prototype...
|
||||
if (dicomTagDescriptions[tag] === propertyName) {
|
||||
tagName = tag;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (propertyName === null) {
|
||||
} else if (tagName !== null) {
|
||||
// try to figure out the "propertyName" using the provided "tagName"...
|
||||
propertyName = dicomTagDescriptions[tagName] || null;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@ import { ImageSet } from './classes/ImageSet';
|
||||
import { isImage } from './isImage';
|
||||
|
||||
const isMultiFrame = instance => {
|
||||
return instance.getRawValue('NumberOfFrames') > 1;
|
||||
// NumberOfFrames (0028,0008)
|
||||
return instance.getRawValue('x00280008') > 1;
|
||||
};
|
||||
|
||||
const makeDisplaySet = (series, instances) => {
|
||||
@@ -25,13 +26,8 @@ const makeDisplaySet = (series, instances) => {
|
||||
|
||||
// Sort the images in this series
|
||||
imageSet.sortBy((a, b) => {
|
||||
// Sort by instance Number
|
||||
const aInstanceNumber = a.getRawValue('x00200013');
|
||||
const bInstanceNumber = b.getRawValue('x00200013');
|
||||
if (a.instanceNumber && b.instanceNumber &&
|
||||
a.instanceNumber !== b.instanceNumber) {
|
||||
return a.instanceNumber - b.instanceNumber;
|
||||
}
|
||||
// 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)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
export const dicomTagDescriptions = {
|
||||
|
||||
const dicomTagDescriptions = Object.create(null); // Object with null prototype for fast and safe lookups...
|
||||
let _dicomTagDescriptions = {
|
||||
x00020000: 'FileMetaInfoGroupLength',
|
||||
x00020001: 'FileMetaInfoVersion',
|
||||
x00020002: 'MediaStorageSOPClassUID',
|
||||
@@ -3145,4 +3147,19 @@ export const dicomTagDescriptions = {
|
||||
xfffee000: 'StartOfItem',
|
||||
xfffee00d: 'EndOfItems',
|
||||
xfffee0dd: 'EndOfSequence'
|
||||
};
|
||||
};
|
||||
|
||||
// Safely copy tag descriptions to exported objects...
|
||||
(function(_dicomTagDescriptions) {
|
||||
const _hasOwn = Object.prototype.hasOwnProperty;
|
||||
for (let tag in _dicomTagDescriptions) {
|
||||
if (_hasOwn.call(_dicomTagDescriptions, tag)) {
|
||||
dicomTagDescriptions[tag] = _dicomTagDescriptions[tag];
|
||||
}
|
||||
}
|
||||
}(_dicomTagDescriptions));
|
||||
|
||||
// Discard original object...
|
||||
_dicomTagDescriptions = null;
|
||||
|
||||
export { dicomTagDescriptions };
|
||||
Reference in new issue
Block a user