@flywheel-io/fw-file-rs
v0.5.0
Published
JavaScript/WebAssembly bindings for fw-file rust crate
Downloads
1,244
Keywords
Readme
fw-file-rs
JavaScript/WebAssembly bindings for the fw-file-rs Rust library. This package lets you work with DICOM files directly in the browser.
Usage
import init, { Context, read_until_pixels } from "fw-file-rs/dcm";
// initialize the WASM module (required before use)
await init();
// Create a configured context using the builder pattern
const ctx = new Context()
.parse_include([
"InstitutionAddress",
"InstitutionName",
])
.group_by(["StudyInstanceUID", "SeriesInstanceUID"])
.split_localizer(true)
.deid_profile(`
version: 1
name: profile
dicom:
fields:
- name: PatientName
replace-with: REDACTED
`);
// Read DICOM header bytes from file
const headerBytes = await ctx.read_until_pixels(file);
// Extract metadata using the configured context
const meta = ctx.parse_header(headerBytes);
// Get Flywheel-specific metadata
const fwMeta = ctx.get_fw_meta(meta);
// Group DICOM files by configured tags with localizer splitting
const path_meta_pairs = [["1.dcm", meta]];
const groups = ctx.group_series(path_meta_pairs);
// De-identify the DICOM header using the configured profile
const deidHeaderBytes = ctx.deid_header(headerBytes);
// Prepare chunks for upload
const chunks = [];
chunks.push(new Blob([deidHeaderBytes]));
let start = headerBytes.length;
while (start < file.size) {
const chunkSize = Math.min(file.size - start, CHUNK_SIZE);
chunks.push(file.slice(start, start + chunkSize));
start += chunkSize;
}
// chunks are ready to be uploaded