diff --git a/Packages/viewerbase/lib/exportStudies.js b/Packages/viewerbase/lib/exportStudies.js index 2d5be197a..da3f56a38 100644 --- a/Packages/viewerbase/lib/exportStudies.js +++ b/Packages/viewerbase/lib/exportStudies.js @@ -9,28 +9,14 @@ exportStudies = function(studiesToExport) { return; } - var studiesQueried = []; - var numberOfStudiesToQuery = studiesToExport.length; - - progressDialog.show("Querying Studies...", numberOfStudiesToQuery); - - studiesToExport.forEach(function(selectedStudy) { - getStudyMetadata(selectedStudy.studyInstanceUid, function(study) { - studiesQueried.push(study); - - var numberOfStudiesQueried = studiesQueried.length; - - progressDialog.update(numberOfStudiesQueried); - - if (numberOfStudiesQueried === numberOfStudiesToQuery) { - exportQueriedStudies(studiesQueried); - } - }); - }); + queryStudies(studiesToExport, exportQueriedStudies); }; function exportQueriedStudies(studiesToExport) { - var numberOfFilesToExport = getNumberOfFilesToExport(studiesToExport); + var numberOfFilesToExport = 0; + studiesToExport.forEach(function(study) { + numberOfFilesToExport += getNumberOfFilesInStudy(study); + }); progressDialog.show("Exporting Studies...", numberOfFilesToExport); @@ -120,22 +106,6 @@ function exportQueriedStudiesInternal(studiesToExport, numberOfFilesToExport) { }); } -function getNumberOfFilesToExport(studiesToExport) { - var numberOFFilesToExport = 0; - - studiesToExport.forEach(function(study) { - study.seriesList.forEach(function(series) { - series.instances.forEach(function(instance) { - if (instance.wadouri) { - numberOFFilesToExport++; - } - }); - }); - }); - - return numberOFFilesToExport; -} - function onExportFailed(err) { exportFailed = true; progressDialog.close(); diff --git a/Packages/viewerbase/lib/queryStudies.js b/Packages/viewerbase/lib/queryStudies.js new file mode 100644 index 000000000..c7dd09f75 --- /dev/null +++ b/Packages/viewerbase/lib/queryStudies.js @@ -0,0 +1,48 @@ +/** + * Queries requested studies to get their metadata from PACS + * @param studiesToQuery Studies to query + * @param doneCallback Callback to call when the query is done + */ +queryStudies = function(studiesToQuery, doneCallback) { + if (studiesToQuery.length < 1) { + return; + } + + var studiesQueried = []; + var numberOfStudiesToQuery = studiesToQuery.length; + + progressDialog.show("Querying Studies...", numberOfStudiesToQuery); + + studiesToQuery.forEach(function(studyToQuery) { + getStudyMetadata(studyToQuery.studyInstanceUid, function(study) { + studiesQueried.push(study); + + var numberOfStudiesQueried = studiesQueried.length; + + progressDialog.update(numberOfStudiesQueried); + + if (numberOfStudiesQueried === numberOfStudiesToQuery) { + doneCallback(studiesQueried); + } + }); + }); +}; + +/** + * 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; +}; \ No newline at end of file diff --git a/Packages/viewerbase/package.js b/Packages/viewerbase/package.js index 5119cc2ab..c4e57ea37 100644 --- a/Packages/viewerbase/package.js +++ b/Packages/viewerbase/package.js @@ -146,6 +146,7 @@ Package.onUse(function(api) { api.addFiles('lib/resizeViewportElements.js', 'client'); api.addFiles('lib/setFocusToActiveViewport.js', 'client'); api.addFiles('lib/updateAllViewports.js', 'client'); + api.addFiles('lib/queryStudies.js', 'client'); api.addFiles('lib/exportStudies.js', 'client'); api.addFiles('lib/importStudies.js', 'client'); api.addFiles('lib/encodeQueryData.js', 'server'); @@ -166,6 +167,8 @@ Package.onUse(function(api) { api.export('updateOrientationMarkers', 'client'); api.export('setFocusToActiveViewport', 'client'); api.export('updateAllViewports', 'client'); + api.export('queryStudies', 'client'); + api.export('getNumberOfFilesInStudy', 'client'); api.export('exportStudies', 'client'); api.export('importStudies', 'client'); api.export('getActiveViewportElement', 'client');