88 lines
2.4 KiB
JavaScript
Executable File
88 lines
2.4 KiB
JavaScript
Executable File
var tags = {
|
|
sopClassUid: '00080016'
|
|
};
|
|
|
|
var tagValues = {
|
|
HangingProtocolStorage: '1.2.840.10008.5.1.4.38.1'
|
|
};
|
|
|
|
/**
|
|
* Finds appropriate hanging protocols given a studyInstanceUid
|
|
*
|
|
* This function retrieves all hanging protocols in storage
|
|
* in order to find those that match the parameters of the given study
|
|
*
|
|
* @param studyInstanceUID
|
|
* @returns {Array} An array of matching hanging protocols
|
|
*/
|
|
DICOMHP.match = function(studyInstanceUID) {
|
|
// First, retrieve the metaData from the given study
|
|
var studyInstance = Services.WADO.retrieveMetadata(studyInstanceUID);
|
|
if (!studyInstance) {
|
|
return;
|
|
}
|
|
|
|
// Note: It turns out Orthanc doesn't support hanging protocol storage yet,
|
|
// so I will just stop here.
|
|
var studyData = instanceDataToJsObject(studyInstance, TAG_DICT);
|
|
|
|
/*var searchParameters = {
|
|
tags['sopClassUid']: tagValues['HangingProtocolStorage']
|
|
};
|
|
|
|
|
|
var modalities = studyData.ModalitiesInStudy;
|
|
|
|
|
|
var modalityMatch;
|
|
|
|
if (modalities) {
|
|
modalityMatch = [];
|
|
|
|
modalities.split('\\').forEach(function(modality){
|
|
if (modality && modality != 'SC') {
|
|
modalityMatch.push(modality);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
var firstInstance = Services.WADO..retrieveMetadata(studyInstanceUID, null, null, {limit : 1}),
|
|
lateralityMatch;
|
|
|
|
if (firstInstance.length > 0) {
|
|
lateralityMatch = firstInstance[0]["00200060"].Value[0];
|
|
}
|
|
|
|
// since orthanc doesn't support sequence matching
|
|
var allProtocols = Services.WADO..searchForInstances(null, null, params);
|
|
|
|
if (allProtocols.length < 1) {
|
|
return [];
|
|
}
|
|
|
|
var matchedProtocols = [];
|
|
|
|
allProtocols.forEach(function(protocol) {
|
|
|
|
var definitionSequence = protocol["0072000C"].Value;
|
|
|
|
definitionSequence.forEach(function(definition){
|
|
|
|
var defModality = definition["00080060"].Value[0];
|
|
|
|
if (defModality && modalityMatch && modalityMatch.indexOf(defModality) != -1) {
|
|
matchedProtocols.push(protocol);
|
|
return;
|
|
}
|
|
|
|
var defLaterality = definition["00200060"].Value[0];
|
|
if (defLaterality && (defLaterality == lateralityMatch)) {
|
|
matchedProtocols.push(protocol);
|
|
}
|
|
});
|
|
});
|
|
|
|
return matchedProtocols;*/
|
|
};
|