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
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)
Currently dcmjs is an early-stage development experiment.
// To install latest _stable_ release
npm install --save dcmjs
// To install latest code merged to master
npm install --save dcmjs@dev
- 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.
- Creation of (correct) enhanced multiframe DICOM objects from legacy image objects
- Creation of (correct) derived DICOM objects such as Segmentations and Structured Reports
- Create a test suite of input and output DICOM objects
- Test interoperability with other DICOM implementations
- Add documentation
- 2014
- DCMTK cross compiled to javascript at CTK Hackfest. While this was useful and powerful, it was heavyweight for typical web usage.
- 2016
- A Medical Imaging Web Appliction meeting at Stanford and follow-on hackfest in Boston helped elaborate the needs for manipulating DICOM in pure Javascript.
- Based on DICOM Part 10 read/write code initiated by Weiwei Wu of OHIF, Steve Pieper developed further features and examples of creating multiframe and segmentation objects discussed with the community at RSNA
- 2017
- At NA-MIC Project Week 25 Erik Ziegler and Steve Pieper worked with the community to define some example use cases to mix the pure JavaScript DICOM code with Cornerstone and CornerstoneTools.
- 2018
- Work continues to develop SR and SEG support to OHIFViewer allow interoperability with DICOM4QI
The developers gratefully acknowledge their reseach support:
- Open Health Imaging Foundation (OHIF)
- Quantitative Image Informatics for Cancer Research (QIICR)
- Radiomics
- The Neuroimage Analysis Center
- The National Center for Image Guided Therapy