@niivue/dicom-loader
Version:
a module to load DICOM files into a format that can be used by niivue
36 lines • 1.32 kB
JavaScript
// src/index.ts
import { Dcm2niix } from "@niivue/dcm2niix";
async function dicomLoader(data) {
const dcm2niix = new Dcm2niix();
await dcm2niix.init();
let returnedFiles = [];
if (Array.isArray(data) && data.length === 1 && data[0].data instanceof ArrayBuffer) {
const fileObj = data[0];
const file = new File([fileObj.data], fileObj.name, { type: "application/octet-stream" });
returnedFiles = await dcm2niix.input([file]).run();
} else if (Array.isArray(data) && data.length > 0) {
const first = data[0];
if (first.data instanceof ArrayBuffer) {
const files = [];
for (let i = 0; i < data.length; i++) {
const dicom = data[i];
const file = new File([dicom.data], dicom.name, { type: "application/octet-stream" });
files.push(file);
}
returnedFiles = await dcm2niix.input(files).run();
} else {
returnedFiles = await dcm2niix.input(data).run();
}
}
const niiFiles = returnedFiles.filter((file) => file.name.endsWith(".nii") || file.name.endsWith(".nii.gz"));
const arrayBuffers = [];
for (const file of niiFiles) {
const niiArrayBuffer = await file.arrayBuffer();
arrayBuffers.push({ name: file.name, data: niiArrayBuffer });
}
return arrayBuffers;
}
export {
dicomLoader
};
//# sourceMappingURL=index.mjs.map