Fixing metadata issues with Orthanc studies

This commit is contained in:
Bruno Alves de Faria 2017-09-21 16:48:43 -03:00
parent ef4a8d8684
commit da0595213d
7 changed files with 38 additions and 24 deletions

View File

@ -163,10 +163,7 @@ class ConformanceCriteria {
const promise = OHIF.studylist.retrieveStudyMetadata(studyInstanceUid); const promise = OHIF.studylist.retrieveStudyMetadata(studyInstanceUid);
promise.then(study => { promise.then(study => {
let studyMetadata = study; const studyMetadata = OHIF.viewerbase.getStudyMetadata(study);
if (!(study instanceof OHIF.viewerbase.metadata.StudyMetadata)) {
studyMetadata = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid);
}
data[measurementType].push({ data[measurementType].push({
measurement, measurement,

View File

@ -8,7 +8,7 @@
<div class="studyModality"> <div class="studyModality">
<div class="studyModalityBox"> <div class="studyModalityBox">
<div class="studyModalityText" style="{{modalityStyle}}"> <div class="studyModalityText" style="{{modalityStyle}}">
{{#if this.study.modalities}} {{#if instance.modalities}}
{{modalities}} {{modalities}}
{{else}} {{else}}
UN UN
@ -16,8 +16,8 @@
</div> </div>
</div> </div>
<div class="studyText"> <div class="studyText">
<div class="studyDate">{{formatDA this.study.studyDate 'D-MMM-YYYY'}}</div> <div class="studyDate">{{formatDA instance.studyDate 'D-MMM-YYYY'}}</div>
<div class="studyDescription">{{this.study.studyDescription}}</div> <div class="studyDescription">{{instance.studyDescription}}</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -10,6 +10,14 @@ Template.studyTimepointStudy.onCreated(() => {
instance.loading = new ReactiveVar(false); instance.loading = new ReactiveVar(false);
const studyMetadata = OHIF.viewerbase.getStudyMetadata(instance.data.study);
const firstInstance = studyMetadata.getFirstInstance();
if (firstInstance) {
instance.modalities = firstInstance.getRawValue('x00080060');
instance.studyDescription = firstInstance.getRawValue('x00081030');
instance.studyDate = firstInstance.getRawValue('x00080020');
}
// Get the current study element // Get the current study element
instance.getStudyElement = (isGlobal=false) => { instance.getStudyElement = (isGlobal=false) => {
const studyInstanceUid = instance.data.study.studyInstanceUid; const studyInstanceUid = instance.data.study.studyInstanceUid;
@ -144,7 +152,7 @@ Template.studyTimepointStudy.helpers({
modalities() { modalities() {
const instance = Template.instance(); const instance = Template.instance();
let modalities = instance.data.study.modalities; const modalities = instance.modalities || 'UN';
// Replace backslashes with spaces // Replace backslashes with spaces
return modalities.replace(/\\/g, ' '); return modalities.replace(/\\/g, ' ');
@ -154,20 +162,18 @@ Template.studyTimepointStudy.helpers({
// Responsively styles the Modality Acronyms for studies // Responsively styles the Modality Acronyms for studies
// with more than one modality // with more than one modality
const instance = Template.instance(); const instance = Template.instance();
const modalities = instance.data.study.modalities || 'UN'; const modalities = instance.modalities || 'UN';
const numModalities = modalities.split(/\\/g).length; const numModalities = modalities.split(/\\/g).length;
if (numModalities === 1) { if (numModalities === 1) {
// If we have only one modality, it should take up the whole // If we have only one modality, it should take up the whole div.
// div.
return 'font-size: 1vw'; return 'font-size: 1vw';
} else if (numModalities === 2) { } else if (numModalities === 2) {
// If we have two, let them sit side-by-side // If we have two, let them sit side-by-side
return 'font-size: 0.75vw'; return 'font-size: 0.75vw';
} else { } else {
// If we have more than two modalities, change the line // If we have more than two modalities, change the line height to display multiple rows,
// height to display multiple rows, depending on the number // depending on the number of modalities we need to display.
// of modalities we need to display.
const lineHeight = Math.ceil(numModalities / 2) * 1.2; const lineHeight = Math.ceil(numModalities / 2) * 1.2;
return 'line-height: ' + lineHeight + 'vh'; return 'line-height: ' + lineHeight + 'vh';
} }

View File

@ -84,6 +84,10 @@ Viewerbase.setInstanceClassDefaultViewportFunction = setInstanceClassDefaultView
import { displayReferenceLines } from './lib/displayReferenceLines'; import { displayReferenceLines } from './lib/displayReferenceLines';
Viewerbase.displayReferenceLines = displayReferenceLines; Viewerbase.displayReferenceLines = displayReferenceLines;
// getStudyMetadata
import { getStudyMetadata } from './lib/getStudyMetadata';
Viewerbase.getStudyMetadata = getStudyMetadata;
/** /**
* Exported Namespaces (sub-namespaces) * Exported Namespaces (sub-namespaces)
*/ */

View File

@ -167,11 +167,9 @@ export class StudyPrefetcher {
getSeries(study, image) { getSeries(study, image) {
const seriesMetadata = cornerstoneTools.metaData.get('series', image.imageId); const seriesMetadata = cornerstoneTools.metaData.get('series', image.imageId);
if (!(study instanceof OHIF.viewerbase.metadata.StudyMetadata)) { const studyMetadata = OHIF.viewerbase.getStudyMetadata(study);
study = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid);
}
return study.getSeriesByUID(seriesMetadata.seriesInstanceUid); return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);
} }
getInstance(series, image) { getInstance(series, image) {

View File

@ -9,12 +9,9 @@ import { OHIF } from 'meteor/ohif:core';
export const getImageIdForImagePath = (imagePath, thumbnail=false) => { export const getImageIdForImagePath = (imagePath, thumbnail=false) => {
const [studyInstanceUid, seriesInstanceUid, sopInstanceUid, frameIndex] = imagePath.split('_'); const [studyInstanceUid, seriesInstanceUid, sopInstanceUid, frameIndex] = imagePath.split('_');
let study = OHIF.viewer.Studies.findBy({ studyInstanceUid }); const study = OHIF.viewer.Studies.findBy({ studyInstanceUid });
if (!(study instanceof OHIF.viewerbase.metadata.StudyMetadata)) { const studyMetadata = OHIF.viewerbase.getStudyMetadata(study);
study = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid); const series = studyMetadata.getSeriesByUID(seriesInstanceUid);
}
const series = study.getSeriesByUID(seriesInstanceUid);
const instance = series.getInstanceByUID(sopInstanceUid); const instance = series.getInstanceByUID(sopInstanceUid);
const imageId = OHIF.viewerbase.getImageId(instance, frameIndex, thumbnail); const imageId = OHIF.viewerbase.getImageId(instance, frameIndex, thumbnail);
return imageId; return imageId;

View File

@ -0,0 +1,12 @@
import { OHIF } from 'meteor/ohif:core';
const getStudyMetadata = study => {
let studyMetadata = study;
if (study && !(studyMetadata instanceof OHIF.viewerbase.metadata.StudyMetadata)) {
studyMetadata = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid);
}
return studyMetadata;
};
export { getStudyMetadata };