Choose the result.
Keep the workflow.
Read an instance, select a few attributes, map to a custom object, or serialize DICOM. Change the output strategy through the same builder.
The pipeline modelBuild imaging workflows in JavaScript.
Read, select, map, and write DICOM data with one expressive, streaming-first API.
import EASI from '@xinonix/easi-js';
const url = 'https://pacs.example/dicom-web/studies/2.25.1';
const result = await EASI.pipelineBuilder()
.fromDicomweb()
.ofDicomData()
.toInstances()
.build()
.process({
source: url,
sourceOptions: {
mode: 'wado-instance',
accept: 'multipart/related; type="application/dicom"'
}
});
console.log(result.toArray());Browser + Node.js Read a study from a DICOMweb URL and work with its instance objects.
Replace this example with your complete WADO-RS study URL. Configure archive authentication and allow your browser origin through the archive’s CORS settings. Explore pipeline sources
import EASI from '@xinonix/easi-js';
const result = await EASI.pipelineBuilder()
.fromByteStream()
.ofDicomData()
.toInstances()
.build()
.process({
source: dicomBytes
});
const instances = result.toArray();
console.log(instances);Browser + Node.js Turn native DICOM bytes into objects your application can inspect.
Supply dicomBytes as a Uint8Array or ArrayBuffer from your application. Build your first pipeline
import EASI from '@xinonix/easi-js';
const result = await EASI.pipelineBuilder()
.fromDicomweb()
.ofDicomMetadata()
.toFHIRImagingStudy({
subject: { reference: patientReference }
})
.build()
.process({
source: metadataUrl,
sourceOptions: {
mode: 'wado-metadata'
}
});
console.log(JSON.stringify(result.first(), null, 2));Browser + Node.js Map DICOMweb study metadata to a FHIR R4 ImagingStudy resource.
metadataUrl is a complete WADO-RS study metadata URL. patientReference identifies an existing, resolved Patient. The resource is created in memory. Explore FHIR mapping
import EASI from '@xinonix/easi-js';
import * as DIMSE from '@xinonix/easi-js/dimse/node';
const transport = new DIMSE.NodeDimseQueryRetrieveSourceTransport();
const pipeline = EASI.pipelineBuilder()
.fromDimseAssociation(peer, transport)
.ofDicomData()
.toInstances()
.build();
const result = await pipeline.process({
sourceOptions: {
operation: 'c-get', performFind: false,
queryRetrieveModel: 'study-root', queryRetrieveLevel: 'STUDY',
keys: { StudyInstanceUID: studyUid },
operationTimeoutMs: 60000
}
});
const status = pipeline.reader.lastMetadata.dimse.finalResponse;
console.log(result.count, status);Node.js only Retrieve a known study from a DICOM peer through the same pipeline API.
Configure peer with host, port, and called/calling AE titles; supply an existing studyUid. The peer must allow C-GET. Inspect final status for warnings or partial results. Configure your DIMSE peer
npm install @xinonix/easi-jsFOCUS ON WHAT YOU’RE BUILDING
DICOM is rich, structured, and often large. EASI JS gives you a consistent way to turn that data into the product your application actually needs.
Read an instance, select a few attributes, map to a custom object, or serialize DICOM. Change the output strategy through the same builder.
The pipeline modelWork with byte streams, files, HTTP responses, and DICOMweb parts. Select only the attributes you need when a full object model adds unnecessary work.
Targeted selectionUse the core pipeline in a bundled browser app or Node.js 22 and 24. Add filesystem and DIMSE transports on the Node.js side.
Find your starting pointA SMALL EXAMPLE. A REAL PIPELINE.
Choose a synthetic sample and an output. EASI JS runs here in your browser, so you can see the transformation for yourself.
Tiny generated datasets with fictional identifiers. No patient files are loaded or uploaded.
Preparing the synthetic sample…Loading the example…Choose an output and run the pipeline.This demonstrates metadata processing using small synthetic DICOM datasets. It is not a clinical viewer or a diagnostic tool.
BEYOND THE FIRST FILE
Produce FHIR R4 ImagingStudy resources. Set patient references and other application context deliberately, with the mapping guide at hand.
Explore FHIR mapping NODE.JS + DIMSEVerify a peer, store instances, and use supported Study Root query/retrieve with Node.js DIMSE client and server APIs.
Explore DIMSE supportEASI JS is a library for imaging workflows. Your application supplies its UI, identity, storage, and deployment. Some pixel formats need optional codec backends.
Understand the boundariesLEARN AT YOUR OWN DEPTH
Start with a runnable example. Follow the ideas into sources, transformations, and integrations as your project needs them.
Your first pipeline
Run a small synthetic example, understand the output, and build from there.
Get startedThe core idea
Pick a source, input format, and output product. Then connect them in a fluent pipeline.
Explore pipelinesUseful transformations
Map DICOM study metadata to FHIR R4 ImagingStudy with explicit application context.
Learn FHIR mappingReal integrations
Use Node.js DIMSE for verification, storage, and supported Study Root query/retrieve.
Understand DIMSEA CLEAR WAY TO BEGIN. ROOM TO GROW.
Free community use for qualifying individuals, research institutions, nonprofits, and organization groups with annual gross revenue below US$5 million. Commercial licensing is available for larger organizations.
Source-available software. Eligibility and exceptions are defined by the community license.