dcmjs
JavaScript implementation of DICOM manipulation. This code is an outgrowth of several efforts to implement web applications for medical imaging.
Note: this code is a work-in-progress and should not be used for production or clinical purposes
See live examples here
Goals
Overall the code should:
- Support reading and writing of correct DICOM objects
- Provide a programmer-friendly JavaScript environment for using and manipulating DICOM objects
- Include a set of useful demos to encourage correct usage of dcmjs and modern DICOM objects
- Encourage correct referencing of instances and composite context when creating derived objects
- Current target is modern web browsers, but a set of node-based utilities also makes sense someday.
Architectural goals include:
- Use modern JavaScript programming methods (currently ES6) but avoid heavy frameworks
- Leverage modern DICOM standards but avoid legacy parts
- Support straightforward integration with multiple JavaScript deployment targets (browser, node, etc) and frameworks.
Parts of DICOM that dcmjs will focus on:
- Enhanced Multiframe Images
- Segmentation Objects
- Parametric Maps
- Structured Reports
Parts of DICOM that dcmjs will not focus on:
- DIMSE (legacy networking like C-FIND, C-MOVE, etc)
- Physical Media (optical disks)
Status
Currently dcmjs is an early-stage development experiment.
npm install --save dcmjs
npm install --save dcmjs@dev
Implemented
- Bidirectional conversion to and from part 10 binary DICOM and DICOM standard JSON encoding (as in DICOMweb)
- Bidirectional convertion to and from DICOM standard JSON and a programmer-friendly high level version.
In development
- Creation of (correct) enhanced multiframe DICOM objects from legacy image objects
- Creation of (correct) derived DICOM objects such as Segmentations and Structured Reports
TODO
- Create a test suite of input and output DICOM objects
- Test interoperability with other DICOM implementations
- Add documentation
History
- 2014
- DCMTK cross compiled to javascript at CTK Hackfest. While this was useful and powerful, it was heavyweight for typical web usage.
- 2016
- 2017
- 2018
- Work continues to develop SR and SEG support to OHIFViewer allow interoperability with DICOM4QI
Support
The developers gratefully acknowledge their reseach support: