75 lines
2.2 KiB
JavaScript
75 lines
2.2 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) {
|
|
const studiesQueried = [],
|
|
numberOfStudiesToQuery = studiesToQuery.length,
|
|
notify = (options || {}).notify || function() { /* noop */ }
|
|
|
|
return new Promise((resolve, reject) => {
|
|
if (studiesToQuery.length < 1) {
|
|
return reject();
|
|
}
|
|
|
|
studiesToQuery.forEach(function(studyToQuery) {
|
|
getStudyMetadata(studyToQuery.studyInstanceUid, function(study) {
|
|
studiesQueried.push(study);
|
|
|
|
notify({
|
|
total: numberOfStudiesToQuery,
|
|
processed: studiesQueried.length
|
|
});
|
|
|
|
if (studiesQueried.length === numberOfStudiesToQuery) {
|
|
resolve(studiesQueried);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
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) {
|
|
var numberOFFilesToExport = 0;
|
|
|
|
study.seriesList.forEach(function(series) {
|
|
series.instances.forEach(function(instance) {
|
|
if (instance.wadouri) {
|
|
numberOFFilesToExport++;
|
|
}
|
|
});
|
|
});
|
|
|
|
return numberOFFilesToExport;
|
|
};
|