From 72bfbf69c7c27b6c4f300a7a79666b12173db4af Mon Sep 17 00:00:00 2001 From: "Emanuel F. Oliveira" Date: Fri, 10 Feb 2017 18:37:32 -0200 Subject: [PATCH] Adapting OHIFStudySummary to translate OHIF Viewers specific property names to standard DICOM keywords. --- .../client/lib/OHIFStudySummary.js | 44 ++++++++++++++++++- .../client/lib/getStudyPriors.js | 3 -- .../lib/classes/metadata/StudySummary.js | 2 +- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Packages/ohif-study-list/client/lib/OHIFStudySummary.js b/Packages/ohif-study-list/client/lib/OHIFStudySummary.js index 4cb1a9ae1..f54afc93a 100644 --- a/Packages/ohif-study-list/client/lib/OHIFStudySummary.js +++ b/Packages/ohif-study-list/client/lib/OHIFStudySummary.js @@ -1,12 +1,52 @@ import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; +/** + * Constants + */ + +const STRING = 'string'; +const propertyReplacementMap = { + modalities: 'ModalitiesInStudy', + patientBirthdate: 'PatientBirthDate' +}; + +/** + * OHIF Viewers specialized version of StudySummary class + */ export class OHIFStudySummary extends OHIF.viewerbase.metadata.StudySummary { // @Override addTags(tagMap) { - // @TODO: Map OHIF tag names to standard DICOM tag names - super.addTags(tagMap); + const _hasOwn = Object.prototype.hasOwnProperty; + const _tagMap = Object.create(null); + for (let property in tagMap) { + if (_hasOwn.call(tagMap, property)) { + let standardProperty = OHIFStudySummary.getStandardPropertyName(property); + if (standardProperty) { + _tagMap[standardProperty] = tagMap[property]; + } + } + } + super.addTags(_tagMap); + } + + /** + * Turns a non-standard, OHIF specific, DICOM property name into a standard one. + * @param {string} property A string representing a non-conforming keyword. + * @returns {string|undefined} Returns a standard-conforming property name. + */ + static getStandardPropertyName(property) { + let standardProperty; + if (typeof property === STRING && property.charAt(0) !== '_') { + if (property in propertyReplacementMap) { + standardProperty = propertyReplacementMap[propertyReplacementMap]; + } else { + standardProperty = property.replace(/^sop/, 'SOP').replace(/Uid$/, 'UID').replace(/Id$/, 'ID'); + standardProperty = standardProperty.charAt(0).toUpperCase() + standardProperty.substr(1); + } + } + return standardProperty; } } diff --git a/Packages/ohif-study-list/client/lib/getStudyPriors.js b/Packages/ohif-study-list/client/lib/getStudyPriors.js index 3b64c4df2..b035b7227 100644 --- a/Packages/ohif-study-list/client/lib/getStudyPriors.js +++ b/Packages/ohif-study-list/client/lib/getStudyPriors.js @@ -40,9 +40,6 @@ const getStudyPriors = study => { const summary = new OHIFStudySummary(); summary.addTags(study); priorStudies.push(summary); - console.log('@StudyListStudies'); - console.log(study); - console.log(study); }); return priorStudies; diff --git a/Packages/ohif-viewerbase/client/lib/classes/metadata/StudySummary.js b/Packages/ohif-viewerbase/client/lib/classes/metadata/StudySummary.js index 2ff216b26..8bef2a40a 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/metadata/StudySummary.js +++ b/Packages/ohif-viewerbase/client/lib/classes/metadata/StudySummary.js @@ -1,6 +1,6 @@ import { DICOMTagDescriptions } from '../../DICOMTagDescriptions'; -const StudyInstanceUID = 'x0020000D'; +const StudyInstanceUID = 'x0020000d'; export class StudySummary {