ohif-viewer/Packages/ohif-measurements/client/lib/hangingProtocolCustomizations.js

63 lines
2.0 KiB
JavaScript

import { Meteor } from 'meteor/meteor';
import { Viewerbase } from 'meteor/ohif:viewerbase';
import { OHIF } from 'meteor/ohif:core';
const { InstanceMetadata, StudySummary } = Viewerbase.metadata;
// TODO: [LT-refactor] move this to ohif:hanging-protocols package
/**
* Get a timepoint type for a given study metadata
* @param {StudyMetadata} study StudyMetadata instance
* @return {String|undefined} Timepoint type if found or undefined if not found or any error/missing information
*/
const getTimepointType = study => {
const { timepointApi } = OHIF.viewer;
if (!timepointApi || !(study instanceof InstanceMetadata || study instanceof StudySummary)) {
return;
}
const timepoint = timepointApi.study(study.getStudyInstanceUID());
if (!timepoint || !(timepoint instanceof Array) || timepoint.length < 1) {
return;
}
return timepoint[0].timepointType;
};
/**
* Get the timpoint key (prior/current/baseline) for a given study metadata
* @param {StudyMetadata} study StudyMetadata instance
* @return {String|undefined} Timepoint key if found or undefined if not found or any error/missing information
*/
const getTimepointKey = study => {
const { timepointApi } = OHIF.viewer;
if (!timepointApi || !(study instanceof InstanceMetadata || study instanceof StudySummary)) {
return;
}
const timepoint = timepointApi.study(study.getStudyInstanceUID());
if (!timepoint || !(timepoint instanceof Array) || timepoint.length < 1) {
return;
}
const timepointId = timepoint[0]._id;
if (timepointApi.current()._id === timepointId) {
return 'current';
} else if (timepointApi.prior()._id === timepointId) {
return 'prior';
} else if (timepointApi.baseline()._id === timepointId) {
return 'baseline';
}
};
Meteor.startup(() => {
HP = HP || false;
if (HP) {
HP.addCustomAttribute('timepointType', 'Timepoint Type', getTimepointType);
HP.addCustomAttribute('timepointKey', 'Timepoint Key', getTimepointKey);
}
});