UNPKG

js-dicom

Version:

this is js-dicom

64 lines (54 loc) 1.85 kB
import * as util from './util.js'; /** * Converts an explicit VR element to a string or undefined if it is not possible to convert. * Throws an error if an implicit element is supplied * @param dataSet * @param element * @returns {*} */ export default function explicitElementToString (dataSet, element) { if (dataSet === undefined || element === undefined) { throw 'dicomParser.explicitElementToString: missing required parameters'; } if (element.vr === undefined) { throw 'dicomParser.explicitElementToString: cannot convert implicit element to string'; } var vr = element.vr; var tag = element.tag; var textResult; function multiElementToString (numItems, func) { var result = ''; for (var i = 0; i < numItems; i++) { if (i !== 0) { result += '/'; } result += func.call(dataSet, tag, i).toString(); } return result; } if (util.isStringVr(vr) === true) { textResult = dataSet.string(tag); } else if (vr === 'AT') { var num = dataSet.uint32(tag); if (num === undefined) { return undefined; } if (num < 0) { num = 0xFFFFFFFF + num + 1; } return `x${num.toString(16).toUpperCase()}`; } else if (vr === 'US') { textResult = multiElementToString(element.length / 2, dataSet.uint16); } else if (vr === 'SS') { textResult = multiElementToString(element.length / 2, dataSet.int16); } else if (vr === 'UL') { textResult = multiElementToString(element.length / 4, dataSet.uint32); } else if (vr === 'SL') { textResult = multiElementToString(element.length / 4, dataSet.int32); } else if (vr === 'FD') { textResult = multiElementToString(element.length / 8, dataSet.double); } else if (vr === 'FL') { textResult = multiElementToString(element.length / 4, dataSet.float); } return textResult; }