1.4.0#
Fixes#
- Fixed handling of VRs AT and PN in json encoding (#915) 
- Fixed handling of binary values in json encoding (#887) 
- Prevent exception if assigning None to UI element (#894) 
- Fixed print output for numeric multi-value elements (#892) 
- Fixed testing PN values for truthiness (#891) 
- Fixed handling of data too large to written in explicit transfer syntax 
- Fixed assigning of empty values to data elements (#896) 
- Fixed error in unpickling dataset (#947) 
- Fixed error in pickling modified datasets (#951) 
- Fixed improper conversion of the first value of the LUT Descriptor elements (0028,1101-1103) and (0028,3002) (#942) 
- Fixed handling of ISO IR 159 encoding (#917) 
- Fixed propagation of bulk data handler in Dataset.from_json (#971) 
- Correctly handle DICOMDIR files with records in reverse-hierarchical order (#822) 
- Pixel Data encoded using JPEG2000 and decoded using the Pillow handler no longer returns RGB data when the (0028,0004) Photometric Interpretation is YBR_FULL or YBR_FULL_422. (#263, #273, #826) 
- Avoid possible high memory usage while reading sequences (#994) 
- Fixed - generate_pixel_data()not returning all available frames when the Basic Offset Table was empty. This may still occur when multiple fragments per frame are present for non-JPEG transfer syntaxes or where no JPEG EOI/EOC marker is present (#685)
- Fixed possible incorrect switch to explicit VR in sequence items (#999) 
- Fixed JPEG 2000 (UIDs 1.2.840.10008.1.2.4.90 and 1.2.840.10008.1.2.4.91) pixel data with bit depth range 9-16 not producing the correct values with the Pillow handler (#693) 
- Fixed parsing a DICOMDIR file with no records raising an exception (#1004) 
Enhancements#
- Added support for converting (60xx,3000) Overlay Data to a numpy ndarray using - Dataset.overlay_array()(#912)
- Added support for deferred reading in file-like objects (#932) 
- Tolerate values with multiple and/or incorrect padding bytes (#940) 
- Added support for uncompressed pixel data with (0028,0004) Photometric Interpretation of YBR_FULL_422 to the numpy pixel data handler. 
- Added - apply_color_lut()function for applying color palette LUTs (#205)
- Added - apply_modality_lut()function for applying modality LUTs.
- Added - get_palette_files()for retrieving well-known palette color datasets.
- Raise on end of file errors if config.enforce_valid_values is set (#277) 
- Added user warning, or exception in strict mode, if a DICOMDIR has an unexpected transfer syntax (#848) 
- Handle missing offset tags in DICOMDIR (#981) 
- Added optional handler argument to - decompress(). This lets you specify a particular handler, rather than following pydicom’s default order (#537)
- Added - apply_voi_lut()function for applying VOI LUTs or windowing operations.
- Added support for (7fe0,0008) Float Pixel Data and (7fe0,0009) Double Float Pixel Data to - pixel_array(#452)
- JPEG 2000 (1.2.840.10008.1.2.4.91) transfer syntax is supported for data with bit depth > 8 with the Pillow pixel data handler 
- PixelData.is_undefined_lengthis now set automatically based on whether the Dataset’s Transfer Syntax is compressed (#1006)
- Updated DICOM dictionary to 2019e edition (#1013) 
- Added support for new VRs OV, SV, UV (#1016) 
- Code dictionaries and - Codeclass for structured reporting added (alpha release only). See the Structured Reporting tutorial for more information
Changes#
- get_frame_offsets()now returns whether the Basic Offset Table is empty and a list of the offsets.
