70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
/**
|
|
* Queries requested studies to get their metadata from PACS
|
|
* @param studiesToQuery Studies to query
|
|
*/
|
|
queryStudies = function(studiesToQuery, options) {
|
|
let studiesQueried = 0;
|
|
const numberOfStudiesToQuery = studiesToQuery.length;
|
|
const notify = (options || {}).notify || function() { /* noop */ };
|
|
|
|
const promises = [];
|
|
|
|
studiesToQuery.forEach(studyToQuery => {
|
|
const promise = OHIF.studylist.retrieveStudyMetadata(studyToQuery.studyInstanceUid);
|
|
promise.then(study => {
|
|
studiesQueried++;
|
|
notify({
|
|
total: numberOfStudiesToQuery,
|
|
processed: studiesQueried
|
|
});
|
|
});
|
|
promises.push(promise);
|
|
});
|
|
|
|
return Promise.all(promises);
|
|
};
|
|
|
|
queryStudiesWithProgress = function(studiesToQuery) {
|
|
return OHIF.ui.showDialog('dialogProgress', {
|
|
title: 'Querying Studies...',
|
|
message: `Queried: 0 / ${studiesToQuery.length}`,
|
|
total: studiesToQuery.length,
|
|
task: {
|
|
run: (dialog) => {
|
|
queryStudies(studiesToQuery, {
|
|
notify: stats => {
|
|
dialog.update(stats.processed);
|
|
dialog.setMessage(`Queried: ${stats.processed} / ${stats.total}`);
|
|
}
|
|
})
|
|
.then(studiesQueried => {
|
|
dialog.done(studiesQueried);
|
|
}, () => {
|
|
dialog.cancel();
|
|
});
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Returns the total number of dicom files in a study
|
|
* @param study Queried study (includes metadata)
|
|
* @returns {number}
|
|
*/
|
|
getNumberOfFilesInStudy = function(study) {
|
|
let numberOFFilesToExport = 0;
|
|
|
|
study.seriesList.forEach(function(series) {
|
|
series.instances.forEach(function(instance) {
|
|
if (instance.wadouri) {
|
|
numberOFFilesToExport++;
|
|
}
|
|
});
|
|
});
|
|
|
|
return numberOFFilesToExport;
|
|
};
|