Skip to content

Commit ce19960

Browse files
committed
fix(metadata): Fix issues with metadata usage from WADO-URI
1 parent ad6e96e commit ce19960

File tree

3 files changed

+60
-17
lines changed

3 files changed

+60
-17
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-cornerstone-viewport",
3-
"version": "0.1.17",
3+
"version": "0.1.18",
44
"description": "Cornerstone medical image viewport component for React",
55
"author": "Cornerstone Contributors",
66
"license": "MIT",

src/ViewportOverlay/ViewportOverlay.js

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ const {
1515
} = helpers;
1616

1717
function getCompression(imageId) {
18-
const lossyImageCompression = cornerstone.metaData.get('x00282110', imageId);
19-
const lossyImageCompressionRatio = cornerstone.metaData.get(
20-
'x00282112',
21-
imageId
22-
);
23-
const lossyImageCompressionMethod = cornerstone.metaData.get(
24-
'x00282114',
18+
const generalImageModule = cornerstone.metaData.get(
19+
'generalImageModule',
2520
imageId
2621
);
22+
const {
23+
lossyImageCompression,
24+
lossyImageCompressionRatio,
25+
lossyImageCompressionMethod
26+
} = generalImageModule;
2727

2828
if (lossyImageCompression === '01' && lossyImageCompressionRatio !== '') {
2929
const compressionMethod = lossyImageCompressionMethod || 'Lossy: ';
@@ -63,13 +63,23 @@ class ViewportOverlay extends PureComponent {
6363
imagePlaneModule || {};
6464
const { seriesNumber, seriesDescription } = seriesMetadata || {};
6565

66-
const studyDate = cornerstone.metaData.get('x00080020', imageId);
67-
const studyTime = cornerstone.metaData.get('x00080030', imageId);
68-
const studyDescription = cornerstone.metaData.get('x00081030', imageId);
69-
const patientName = cornerstone.metaData.get('x00100010', imageId);
70-
const patientId = cornerstone.metaData.get('x00100020', imageId);
71-
const instanceNumber = cornerstone.metaData.get('x00200013', imageId);
72-
const frameTime = cornerstone.metaData.get('x00181063', imageId);
66+
const generalStudyModule = cornerstone.metaData.get(
67+
'generalStudyModule',
68+
imageId
69+
);
70+
const { studyDate, studyTime, studyDescription } = generalStudyModule;
71+
72+
const patientModule = cornerstone.metaData.get('patientModule', imageId);
73+
const { patientId, patientName } = patientModule;
74+
75+
const generalImageModule = cornerstone.metaData.get(
76+
'generalImageModule',
77+
imageId
78+
);
79+
const { instanceNumber } = generalImageModule;
80+
81+
const cineModule = cornerstone.metaData.get('cineModule', imageId);
82+
const { frameTime } = cineModule;
7383

7484
const frameRate = formatNumberPrecision(1000 / frameTime, 1);
7585
const compression = getCompression(imageId);
@@ -145,7 +155,7 @@ class ViewportOverlay extends PureComponent {
145155
</div>
146156
<div>{imageDimensions}</div>
147157
<div>{seriesDescription}</div>
148-
<div>Zoom: ${formatNumberPrecision(zoom, 0)}%</div>
158+
<div>Zoom: {formatNumberPrecision(zoom, 0)}%</div>
149159
<div className="compressionIndicator">{compression}</div>
150160
<div>{wwwc}</div>
151161
</div>
@@ -174,7 +184,7 @@ class ViewportOverlay extends PureComponent {
174184
</div>
175185
<div>{imageDimensions}</div>
176186
<div>{seriesDescription}</div>
177-
<div>Zoom: ${formatNumberPrecision(zoom, 0)}%</div>
187+
<div>Zoom: {formatNumberPrecision(zoom, 0)}%</div>
178188
<div className="compressionIndicator">{compression}</div>
179189
<div>{wwwc}</div>
180190
</div>

src/metadataProvider.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,41 @@ function wadoUriMetaDataProvider(type, imageId) {
4343
return;
4444
}
4545

46+
if (type === 'generalImageModule') {
47+
return {
48+
instanceNumber: dataSet.intString('x00200013'),
49+
lossyImageCompression: dataSet.string('x00282110'),
50+
lossyImageCompressionRatio: dataSet.string('x00282112'),
51+
lossyImageCompressionMethod: dataSet.string('x00282114')
52+
};
53+
}
54+
55+
if (type === 'patientModule') {
56+
return {
57+
patientName: dataSet.string('x00100010'),
58+
patientId: dataSet.string('x00100020')
59+
};
60+
}
61+
62+
if (type === 'generalStudyModule') {
63+
return {
64+
studyDescription: dataSet.string('x00081030'),
65+
studyDate: dataSet.string('x00080020'),
66+
studyTime: dataSet.string('x00080030')
67+
};
68+
}
69+
70+
if (type === 'cineModule') {
71+
return {
72+
frameTime: dataSet.float('x00181063')
73+
};
74+
}
75+
4676
if (dataSet.elements[type] !== undefined) {
4777
const element = dataSet.elements[type];
78+
if (!element.vr) {
79+
return;
80+
}
4881

4982
return dicomParser.explicitElementToString(dataSet, element);
5083
}

0 commit comments

Comments
 (0)