DICOM-rs v0.3
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
'sas_u8
,as_i32
, andas_tags
methods are deprecated, in favor of the getter methodsuint8_slice
,int32_slice
, andtags
. - [encoding] Changes to
TextCodec
: new methodname
, and implementingDebug
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 toJPIP_REFERENCED_DEFLATE
(was a typo) (#58)
New
- [core] Extended the public API for retrieving standard Rust values from DICOM
PrimitiveValue
,Value
, andDataElement
. 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.0dicom-core
: 0.3.0dicom-encoding
: 0.3.0dicom-transfer-syntax-registry
: 0.3.0dicom-parser
: 0.3.0dicom-object
: 0.3.0dicom-dictionary-std
: 0.3.0dicom-ul
: 0.2.0dcmdump
: 0.3.0dicom-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.