UNPKG

@abasb75/dicom-parser

Version:

a javascript powerfull dicom parser

221 lines (220 loc) 7.67 kB
var Value = /** @class */ (function () { function Value() { } Object.defineProperty(Value, "byVr", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len, vr, littleEndian) { switch (vr) { case "CS": return Value.CS(dataView, offset, len); case "US": return Value.US(dataView, offset, len, littleEndian); case "SS": return Value.SS(dataView, offset, len, littleEndian); case "SL": return Value.SL(dataView, offset, len, littleEndian); case "UL": return Value.UL(dataView, offset, len, littleEndian); case "IS": return Value.IS(dataView, offset, len); case "DS": return Value.DS(dataView, offset, len); case "DA": return Value.DA(dataView, offset, len); case "TM": return Value.TM(dataView, offset, len); case "OW": case "OB": case "OD": case "OF": return Value.OW(dataView, offset, len); case "UI": case "SH": case "LO": default: return Value.getString(new Uint8Array(dataView.buffer, offset, len)); } } }); Object.defineProperty(Value, "CS", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var value = Value.getString(new Uint8Array(dataView.buffer, offset, len)); var values = value.split("\\"); if (values.length === 0) { return value; } else if (values.length === 1) { return values[0]; } else { return values; } } }); Object.defineProperty(Value, "IS", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var value = Value.getString(new Uint8Array(dataView.buffer, offset, len)); if (/^[0-9]+$/.exec(value)) { return parseInt(value); } return value; } }); Object.defineProperty(Value, "DA", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var value = Value.getString(new Uint8Array(dataView.buffer, offset, len)); if (/^[0-9]{8}$/.exec(value)) { return "".concat(value.slice(0, 4), "-").concat(value.slice(4, 6), "-").concat(value.slice(6, 8)); } return value; } }); Object.defineProperty(Value, "DS", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var value = Value.getString(new Uint8Array(dataView.buffer, offset, len)); var values = value.split("\\").map(function (v) { if (/^[0-9\-\+]+$/.exec(v)) { return parseInt(v); } else if (/^[0-9\-\+]+\.[0-9]+$/.exec(v)) { return parseFloat(v); } return v; }); if (values.length === 0) { return value; } else if (values.length === 1) { return values[0]; } else { return values; } } }); Object.defineProperty(Value, "TM", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var value = Value.getString(new Uint8Array(dataView.buffer, offset, len)).trim().split('.')[0]; if (![2, 4, 6].includes(value.length)) { return value; } if (value.length === 4) { value += "00"; } else if (value.length === 2) { value += "0000"; } return "".concat(value.slice(0, 2), ":").concat(value.slice(2, 4), ":").concat(value.slice(4, 6)); } }); Object.defineProperty(Value, "US", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len, littleEndian) { if (littleEndian === void 0) { littleEndian = true; } if (len === 2) { var value = dataView.getUint16(offset, littleEndian); return value; } else if (len > 2) { var values = []; for (var i = offset; i < offset + len; i += 2) { values.push(dataView.getUint16(i, littleEndian)); } return values; } } }); Object.defineProperty(Value, "SS", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len, littleEndian) { if (littleEndian === void 0) { littleEndian = true; } if (len === 2) { return dataView.getInt16(offset, littleEndian); } else if (len > 2) { var values = []; for (var i = offset; i < offset + len; i += 2) { values.push(dataView.getInt16(i, littleEndian)); } return values; } } }); Object.defineProperty(Value, "SL", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len, littleEndian) { if (littleEndian === void 0) { littleEndian = true; } if (len === 4) { return dataView.getInt32(offset, littleEndian); } else if (len > 4) { var values = []; for (var i = offset; i < offset + len; i += 4) { values.push(dataView.getInt32(i, littleEndian)); } return values; } } }); Object.defineProperty(Value, "UL", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len, littleEndian) { if (littleEndian === void 0) { littleEndian = true; } if (len === 4) { return dataView.getUint32(offset, littleEndian); } else if (len > 4) { var values = []; for (var i = offset; i < offset + len; i += 4) { values.push(dataView.getUint32(i, littleEndian)); } return values; } } }); Object.defineProperty(Value, "OW", { enumerable: false, configurable: true, writable: true, value: function (dataView, offset, len) { var buffer = dataView.buffer.slice(offset, offset + len); return new DataView(buffer); } }); Object.defineProperty(Value, "getString", { enumerable: false, configurable: true, writable: true, value: function (bytes) { var decoder = new TextDecoder(); return decoder.decode(bytes).trim(); } }); return Value; }()); export default Value;