/dcmjs

Javascript implementation of DICOM manipulation

Primary LanguageJavaScriptMIT LicenseMIT

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.

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

Support

The developers gratefully acknowledge their reseach support: