Skip to content

DICOM-rs v0.3

Compare
Choose a tag to compare
@Enet4 Enet4 released this 30 Sep 19:05

The third release of DICOM-rs encompasses a wide spectrum of quality-of-life features and improvements, making the library easier to use and more DICOM compliant. Future versions will hopefully tackle features of larger complexity and visibility.

Major Changes

  • [core/encoding/parser/object/ul] Error types have been refactored across the ecosystem of crates. They were completely restructured and designed via SNAFU, becoming more informative and useful. (#62)
  • [parser] The main data set reader supports multiple parsing strategies. By default, date, time, and date-time values are no longer parsed into chrono data types, thus not compromising the parsing process if they are invalid. (#65)
  • [core] The dicom_value! was given a few syntax changes, please see the respective documentation. (#56)
  • [code] PrimitiveValue's as_u8, as_i32, and as_tags methods are deprecated, in favor of the getter methods uint8_slice, int32_slice, and tags.
  • [encoding] Changes to TextCodec: new method name, and implementing Debug is no longer required (#53)
  • [encoding] SpecificCharacterSet has new variants and has been marked as non-exhaustive. (#53)
  • [transfer-syntax-registry] JPIP_DEREFERENCED_DEFLATE was renamed to JPIP_REFERENCED_DEFLATE (was a typo) (#58)

New

  • [core] Extended the public API for retrieving standard Rust values from DICOM PrimitiveValue, Value, and DataElement. Methods with and without automatic conversions are provided. (#56, #66, #68, #75)
  • [encoding] More character encodings are now supported: ISO-IR 100, ISO-IR 101, ISO-IR 109, ISO-IR 110, ISO-IR 144. (#53), plus GB18030 (#52 @kira-96)
  • [transfer-syntax-registry] Added more transfer syntaxes as described in DICOM PS3.6 2020b Table A-1 (#58)

Fixes and Enhancements

  • [core] Fixed an incorrect calculation of multi-valued data's length (#67)
  • [encoding] Fixed character set detection by the SpecificCharacterSet attribute (#52 @kira-96)
  • [parser] Fixed the parser not accepting sequence data in unknown attributes (#64)
  • [dcmdump] Redesigned the output of the tool, pushing values to the end and attribute names to the middle, and the output width has been adjusted for the terminal width (#45 @robyoung, #74)
  • [dcmdump] ImplementationClassUID was printing SOPClassUID by mistake (#61)
  • [dcmdump] The alias of the transfer syntax is now reported alongside its UID (#61)
  • [dcmdump] Human readable error output (#61)

Chores

  • Updated crate manifests: crates.io should now present the readme contents of each crate. (#57, #75)
  • Added documents for project conduct, governance, and contribution guidelines (#69)
  • Added WebAssembly testing to CI, for some of the components in the library. (#54)
  • Added integration test to OB with undefined length (#48 @robyoung)
  • dependency updates: [email protected]

Updated crates

  • dicom: 0.3.0
  • dicom-core: 0.3.0
  • dicom-encoding: 0.3.0
  • dicom-transfer-syntax-registry: 0.3.0
  • dicom-parser: 0.3.0
  • dicom-object: 0.3.0
  • dicom-dictionary-std: 0.3.0
  • dicom-ul: 0.2.0
  • dcmdump: 0.3.0
  • dicom-dictionary-builder: 0.1.2

Thanks

Special thanks to new and revisiting contributors involved in this version, as well as to users of the library who have contributed with their own real-life use cases of DICOM-rs.