@abasb75/dicom-parser
Version:
a javascript powerfull dicom parser
221 lines (220 loc) • 7.67 kB
JavaScript
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;