2017-02-07 20:44:42 +01:00
|
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
|
|
2017-02-10 22:13:30 +01:00
|
|
|
// Important metadata classes
|
|
|
|
|
const { OHIFError, metadata } = OHIF.viewerbase;
|
|
|
|
|
const { StudySummary, StudyMetadata } = metadata;
|
|
|
|
|
|
2017-02-07 20:44:42 +01:00
|
|
|
export class OHIFStudyMetadataSource extends OHIF.viewerbase.StudyMetadataSource {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get study metadata for a study with given study InstanceUID
|
|
|
|
|
* @param {String} studyInstanceUID Study InstanceUID
|
2017-02-10 22:13:30 +01:00
|
|
|
* @return {Promise} A Promise object
|
2017-02-07 20:44:42 +01:00
|
|
|
*/
|
|
|
|
|
getByInstanceUID(studyInstanceUID) {
|
2017-10-11 13:03:35 +02:00
|
|
|
return OHIF.studies.retrieveStudyMetadata(studyInstanceUID);
|
2017-02-07 20:44:42 +01:00
|
|
|
}
|
|
|
|
|
|
2017-02-10 22:13:30 +01:00
|
|
|
/**
|
|
|
|
|
* Load study info (OHIF.viewer.Studies) and study metadata (OHIF.viewer.StudyMetadataList) for a given study.
|
2017-02-13 15:57:07 +01:00
|
|
|
* @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.
|
2017-02-10 22:13:30 +01:00
|
|
|
*/
|
|
|
|
|
loadStudy(study) {
|
|
|
|
|
if (!(study instanceof StudyMetadata) && !(study instanceof StudySummary)) {
|
|
|
|
|
throw new OHIFError('OHIFStudyMetadataSource::loadStudy study is not an instance of StudySummary or StudyMetadata');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
const studyInstanceUID = study.getStudyInstanceUID();
|
|
|
|
|
|
|
|
|
|
if (study instanceof StudyMetadata) {
|
|
|
|
|
const alreadyLoaded = OHIF.viewer.Studies.findBy({
|
|
|
|
|
studyInstanceUid: studyInstanceUID
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!alreadyLoaded) {
|
2017-02-10 22:22:10 +01:00
|
|
|
OHIFStudyMetadataSource._updateStudyCollections(study);
|
2017-02-10 22:13:30 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resolve(study);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-22 15:58:49 +01:00
|
|
|
this.getByInstanceUID(studyInstanceUID).then(studyInfo => {
|
2017-02-10 22:13:30 +01:00
|
|
|
// Create study metadata object
|
2017-02-22 15:58:49 +01:00
|
|
|
const studyMetadata = new OHIF.metadata.StudyMetadata(studyInfo, studyInfo.studyInstanceUid);
|
2017-02-10 22:13:30 +01:00
|
|
|
|
|
|
|
|
// Get Study display sets
|
|
|
|
|
const displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(studyMetadata);
|
|
|
|
|
|
|
|
|
|
// Set studyMetadata display sets
|
|
|
|
|
studyMetadata.setDisplaySets(displaySets);
|
|
|
|
|
|
2017-02-10 22:22:10 +01:00
|
|
|
OHIFStudyMetadataSource._updateStudyCollections(studyMetadata);
|
2017-02-10 22:13:30 +01:00
|
|
|
resolve(studyMetadata);
|
2017-09-19 17:44:39 +02:00
|
|
|
}).catch(reject);
|
2017-02-10 22:13:30 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Static methods
|
|
|
|
|
static _updateStudyCollections(studyMetadata) {
|
|
|
|
|
const studyInfo = studyMetadata.getData();
|
|
|
|
|
|
|
|
|
|
// Set some studyInfo properties
|
|
|
|
|
studyInfo.selected = true;
|
2017-02-10 22:22:10 +01:00
|
|
|
studyInfo.displaySets = studyMetadata.getDisplaySets();
|
2017-02-10 22:13:30 +01:00
|
|
|
|
|
|
|
|
// Insert new study info object in Studies TypeSafeCollection
|
|
|
|
|
OHIF.viewer.Studies.insert(studyInfo);
|
|
|
|
|
|
|
|
|
|
// Insert new study metadata in StudyMetadataList TypeSafeCollection
|
|
|
|
|
OHIF.viewer.StudyMetadataList.insert(studyMetadata);
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-07 20:44:42 +01:00
|
|
|
}
|