Function: parseDicom()
Internal
- implementation signature. Public JSDoc lives on the overloads above.
Call Signature
parseDicom(
input):Dataset
Parse a DICOM Part 10 buffer into a structural Dataset.
Lenient by default - recoverable deviations (missing preamble, File Meta
group-length mismatch, odd-length value, etc.) are pushed into
ds.warnings with stable codes from WARNING_CODES. Four unrecoverable
structural failures throw DicomParseError:
EMPTY_INPUT- emptyBuffer | Uint8Array | ArrayBuffer.NOT_DICOM_PART_10- input lacks bothDICMmagic at offset 128 and a recognizable(0002,0000)File Meta Group Length at offset 0.INVALID_FILE_META- File Meta is truncated or(0002,0010)Transfer Syntax UID is missing.UNSUPPORTED_TRANSFER_SYNTAX- Transfer Syntax UID is not one of the four v1 UIDs (1.2.840.10008.1.2,…1.2.1,…1.2.2,…1.2.1.99).
Pass { strict: true } to escalate every Tier-2 warning to a thrown
DicomParseError carrying the warning code.
Parameters
input
ArrayBuffer | Buffer<ArrayBufferLike> | Uint8Array<ArrayBufferLike>
Returns
Example
import { parseDicom, WARNING_CODES, DicomParseError } from "@cosyte/dicom";
import { readFileSync } from "node:fs";
// Three input shapes (PARSE-04): Buffer, Uint8Array, ArrayBuffer.
const bytes = readFileSync("study.dcm");
const ds1 = parseDicom(bytes);
const ds2 = parseDicom(new Uint8Array(bytes));
const ds3 = parseDicom(bytes.buffer);
// Inspect File Meta + warnings.
console.log(ds1.fileMeta?.transferSyntaxUID);
for (const w of ds1.warnings) {
if (w.code === WARNING_CODES.DICOM_MISSING_PREAMBLE) {
console.warn("bare File Meta input at offset", w.position.byteOffset);
}
}
// Strict mode + onWarning callback.
try {
parseDicom(bytes, {
strict: true,
onWarning: (w) => console.error(w.code, "at offset", w.position.byteOffset),
});
} catch (err) {
if (err instanceof DicomParseError) {
console.error(err.code, err.byteOffset, err.snippet);
}
}
Call Signature
parseDicom(
input,options):Dataset
Parse a DICOM Part 10 buffer into a structural Dataset.
Lenient by default - recoverable deviations (missing preamble, File Meta
group-length mismatch, odd-length value, etc.) are pushed into
ds.warnings with stable codes from WARNING_CODES. Four unrecoverable
structural failures throw DicomParseError:
EMPTY_INPUT- emptyBuffer | Uint8Array | ArrayBuffer.NOT_DICOM_PART_10- input lacks bothDICMmagic at offset 128 and a recognizable(0002,0000)File Meta Group Length at offset 0.INVALID_FILE_META- File Meta is truncated or(0002,0010)Transfer Syntax UID is missing.UNSUPPORTED_TRANSFER_SYNTAX- Transfer Syntax UID is not one of the four v1 UIDs (1.2.840.10008.1.2,…1.2.1,…1.2.2,…1.2.1.99).
Pass { strict: true } to escalate every Tier-2 warning to a thrown
DicomParseError carrying the warning code.
Parameters
input
ArrayBuffer | Buffer<ArrayBufferLike> | Uint8Array<ArrayBufferLike>
options
Returns
Example
import { parseDicom, WARNING_CODES, DicomParseError } from "@cosyte/dicom";
import { readFileSync } from "node:fs";
// Three input shapes (PARSE-04): Buffer, Uint8Array, ArrayBuffer.
const bytes = readFileSync("study.dcm");
const ds1 = parseDicom(bytes);
const ds2 = parseDicom(new Uint8Array(bytes));
const ds3 = parseDicom(bytes.buffer);
// Inspect File Meta + warnings.
console.log(ds1.fileMeta?.transferSyntaxUID);
for (const w of ds1.warnings) {
if (w.code === WARNING_CODES.DICOM_MISSING_PREAMBLE) {
console.warn("bare File Meta input at offset", w.position.byteOffset);
}
}
// Strict mode + onWarning callback.
try {
parseDicom(bytes, {
strict: true,
onWarning: (w) => console.error(w.code, "at offset", w.position.byteOffset),
});
} catch (err) {
if (err instanceof DicomParseError) {
console.error(err.code, err.byteOffset, err.snippet);
}
}