2020-03-09 20:03:23 +01:00
|
|
|
import { studyMetadataManager } from '../utils';
|
2019-08-13 21:36:46 +02:00
|
|
|
|
|
|
|
|
import OHIFError from './OHIFError';
|
|
|
|
|
import { StudyMetadata } from './metadata/StudyMetadata';
|
|
|
|
|
import { StudyMetadataSource } from './StudyMetadataSource.js';
|
|
|
|
|
import { retrieveStudyMetadata } from '../studies/retrieveStudyMetadata.js';
|
|
|
|
|
|
|
|
|
|
export class OHIFStudyMetadataSource extends StudyMetadataSource {
|
|
|
|
|
/**
|
|
|
|
|
* Get study metadata for a study with given study InstanceUID
|
|
|
|
|
* @param server
|
|
|
|
|
* @param {String} studyInstanceUID Study InstanceUID
|
|
|
|
|
* @return {Promise} A Promise object
|
|
|
|
|
*/
|
|
|
|
|
getByInstanceUID(server, studyInstanceUID) {
|
|
|
|
|
return retrieveStudyMetadata(server, studyInstanceUID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Load study info (OHIF.viewer.Studies) and study metadata (OHIF.viewer.StudyMetadataList) for a given study.
|
2020-03-09 20:03:23 +01:00
|
|
|
* @param {StudyMetadata} study StudyMetadata object.
|
2019-08-13 21:36:46 +02:00
|
|
|
*/
|
|
|
|
|
loadStudy(study) {
|
2020-03-09 20:03:23 +01:00
|
|
|
if (!(study instanceof StudyMetadata)) {
|
2019-08-13 21:36:46 +02:00
|
|
|
throw new OHIFError(
|
2020-03-09 20:03:23 +01:00
|
|
|
'OHIFStudyMetadataSource::loadStudy study is not an instance of StudyMetadata'
|
2019-08-13 21:36:46 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
const studyInstanceUID = study.getStudyInstanceUID();
|
|
|
|
|
|
|
|
|
|
if (study instanceof StudyMetadata) {
|
|
|
|
|
const alreadyLoaded = OHIF.viewer.Studies.findBy({
|
2020-03-09 20:03:23 +01:00
|
|
|
StudyInstanceUID: studyInstanceUID,
|
2019-08-13 21:36:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!alreadyLoaded) {
|
|
|
|
|
OHIFStudyMetadataSource._updateStudyCollections(study);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resolve(study);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.getByInstanceUID(studyInstanceUID)
|
|
|
|
|
.then(studyInfo => {
|
|
|
|
|
// Create study metadata object
|
|
|
|
|
const studyMetadata = new StudyMetadata(
|
|
|
|
|
studyInfo,
|
2020-03-09 20:03:23 +01:00
|
|
|
studyInfo.StudyInstanceUID
|
2019-08-13 21:36:46 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Get Study display sets
|
|
|
|
|
const displaySets = studyMetadata.createDisplaySets();
|
|
|
|
|
|
|
|
|
|
// Set studyMetadata display sets
|
|
|
|
|
studyMetadata.setDisplaySets(displaySets);
|
|
|
|
|
|
|
|
|
|
OHIFStudyMetadataSource._updateStudyCollections(studyMetadata);
|
|
|
|
|
resolve(studyMetadata);
|
|
|
|
|
})
|
|
|
|
|
.catch(reject);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Static methods
|
|
|
|
|
static _updateStudyCollections(studyMetadata) {
|
|
|
|
|
const studyInfo = studyMetadata.getData();
|
|
|
|
|
|
|
|
|
|
// Set some studyInfo properties
|
|
|
|
|
studyInfo.selected = true;
|
|
|
|
|
studyInfo.displaySets = studyMetadata.getDisplaySets();
|
|
|
|
|
studyMetadataManager.add(studyMetadata);
|
|
|
|
|
}
|
|
|
|
|
}
|