Added a basic implementation of hanging protocols with one hardcoded mammogram protocol.
This commit is contained in:
1 parent
dac91857f0
commit
292edc11d3
17 files changed
+5706
-133
No files matched your search
@@ -0,0 +1,73 @@
|
||||
var valueRepresentationTypes = {
|
||||
number: [
|
||||
'SH',
|
||||
'LO'
|
||||
]
|
||||
};
|
||||
|
||||
/**
|
||||
* converts an WADO instance to a javascript object with the help of a data dictionary
|
||||
*
|
||||
* @param instance
|
||||
* @param options
|
||||
*/
|
||||
instanceDataToJsObject = function (instance, dictionary) {
|
||||
if (!instance) {
|
||||
throw 'instanceDataToJsObject: missing required parameter dataSet';
|
||||
}
|
||||
|
||||
var result = {};
|
||||
|
||||
// The comma is always inserted after the first four digits
|
||||
var position = 4;
|
||||
|
||||
Object.keys(instance).forEach(function(tag) {
|
||||
var item = instance[tag];
|
||||
|
||||
// Reformat the tag from 00020010 to "(0002,0010)" to suit the dictionary
|
||||
var tagFormatted = '(' + tag.substr(0, position) + ',' + tag.substr(position) + ')';
|
||||
|
||||
// Retrieve the tag dictionary entry
|
||||
var tagDictionaryEntry = dictionary[tagFormatted];
|
||||
console.log(tagDictionaryEntry);
|
||||
|
||||
// If there is no tag dictionary entry, or no name
|
||||
// for this tag, just use the original tag instead
|
||||
var tagName;
|
||||
if (!tagDictionaryEntry || !tagDictionaryEntry.name) {
|
||||
tagName = tag;
|
||||
} else {
|
||||
tagName = tagDictionaryEntry.name;
|
||||
}
|
||||
|
||||
if (item.Value && item.Value.length > 1) {
|
||||
// handle sequences
|
||||
var sequenceItems = [];
|
||||
item.Value.forEach(function(instance) {
|
||||
sequenceItems.push(instanceDataToJsObject(instance, dictionary));
|
||||
});
|
||||
result[tagName] = sequenceItems;
|
||||
|
||||
} else if (!item.Value || !item.Value.length) {
|
||||
// Handle empty arrays
|
||||
result[tagName] = undefined;
|
||||
|
||||
} else {
|
||||
// Handle single valued cases
|
||||
if (item.vr === 'PN') {
|
||||
// Patient Name
|
||||
result[tagName] = DICOMWeb.getName(item);
|
||||
|
||||
} else if (valueRepresentationTypes.number.indexOf(item.vr) > 0) {
|
||||
// Number type
|
||||
result[tagName] = DICOMWeb.getNumber(item);
|
||||
|
||||
} else {
|
||||
// Everything else
|
||||
result[tagName] = DICOMWeb.getString(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
console.log(result);
|
||||
return result;
|
||||
};
|
||||
Reference in new issue
Block a user