Releases: fo-dicom/fo-dicom
5.2.2
On April 22nd 2025 fo-dicom 5.2.2 was officially released.
This release contains the following changes:
- Update to DICOM Standard 2025b
- Render images with window width < 1, but apply LINEAR_EXACT on rendering. (#1905)
- Use current version of fo-dicom.Codecs in tests and DicomDump supporting Windows arm64 builds
- New package fo-dicom.Imaging.SkiaSharp (#1956)
- Send Command and Data in separate PDUs via network (#1960)
- Successfully opening an invalid file that contains some delimiter items at the end of the file (#1958)
There are no breaking changes from version 5.2.1 to version 5.2.2
5.2.1
On March 13th 2025 fo-dicom 5.2.1 was officially released.
This release contains the following bugfixes:
- Fixed regression in parser where group length of VR UN was parsed wrong (#1941)
- Updated ImageSharp version to fix a security issue (CVE-2025-27598)
This release contains the following changes:
- Update to DICOM Standard 2025a
- UseFellowOakDicom registers the default services only if there are not yet some services registered (#1929)
There are no breaking changes from version 5.2.0 to version 5.2.1
5.2.0
On February 3rd 2025 fo-dicom 5.2.0 was officially released.
This release contains the following bugfixes:
- Fix bug where VOI LUT Function with empty value caused a crash (#1891)
- Fixed bug, where milliseconds have been cut away when adding a Datetime to a DicomDataset (#1719)
- Fix parsing of invalid DICOM files, that contain "," as decimal separator in DS values (#1296)
- Fix parsing files from stream created by HttpClient (#1698)
This release contains the following changes:
- Update to DICOM Standard 2024d
- Add ConnectionTimeout to ClientConnectionOptions (#1784)
- Refactor the parser to make it better maintainable
- The optional AffectedSopInstanceUID is added to the CStoreResponse by default. (#1390)
- DicomDataset.AddOrUpdate also allows passing DicomSequence as argument type (#1664)
- Enable reading DICOMDIR files where the offsets are not correctly but at cleast close (#1927)
There are the following breaking changes from version 5.1.5 to version 5.2.0
- the IByteSource interface has changed
- DicomElement.ValueRepresentation.ValidateString() now throws a DicomValidationException if a null value is passed (#1590)
5.1.5
5.1.5
On October 27th 2024 fo-dicom 5.1.5 was officially released.
This release contains the following bugfixes:
- Fix regression which caused an exception if writing with an empty SpecificCharacterSet tag (#1879)
- Fix issue where DicomDataset.FunctionalGroupValues throws IndexOutOfBounds in case of an empty SharedFunctionalGroupSequence (#1884)
There are no breaking changes from version 5.1.4 to version 5.1.5
5.1.4
On October 27th 2024 fo-dicom 5.1.4 was officially released.
This release contains the following bugfixes:
- Fix issue where the main TCP listener loop could be blocked by frozen TLS handshakes (#1766)
- Fix issue with retrieving correct VR when the DICOM element's length is a blank character (e.g., 0x200A) by modifying the empty string check to specifically handle 0x2020 (#1847)
- Fix bug where under some circumstances (transcode a 8 bit image with odd row or column length from explicit to implicit TS) a odd length pixeldata is written (#1403)
- Fix bug where DicomDataset.GetDicomTag thew an exception if the private tag does not exist in dataset (#1840)
- Fix rendering of EnhancedMR or EnhancedCT images, that contain any invalid value in any item within the Functional Groups (#1862)
This release contains the following changes:
- Update to DICOM Standard 2024d
- Add support for saving new strings with multi-valued Specific Character Set (#1789)
- Throw a meaningful and explaining JsonException when trying to serialize not supported fragmented data (#1792)
- FO-DICOM.Tests target net8.0-windows instead of net7.0-windows
There are no breaking changes from version 5.1.3 to version 5.1.4
5.1.3
On June 27th 2024 fo-dicom 5.1.3 was officially released.
This release contains the following bugfixes:
- Fix rendering of files with photometric interpretation YBR_RCT or YBR_ICT (#1734)
- Fix rendering multiframe image when several frames are rendered in parallel
- Fix rendering of compressed data where the photometric interpretation changed while decompressing data.
- Fix performance regression in DicomServer (#1776)
- Fix bug where reading parallel from the a stream file returned wrong data (#1653)
- Fix rendering of images with 1 bit stored, where the image does not povide windowing values (#1432)
- Fix issue that applying FallbackEncoding was not working when SpecificCharacterSet tag is missing (#1159)
- Fix race condition in GenericGrayscalePipeline that could trigger a NullReferenceException (#1759)
This release contains the following changes:
- Update to DICOM Standard 2024c
- Added core support for HTJ2K-based transfer syntaxes (not actual codec) (#1687)
- Reduce the memory impact of the DicomDatasetComparer. By a static property DicomDataset.CompareInstancesByContent the usage of DicomDatasetComparer in DicomDataset.Equals can be disabled globally. (#1807)
- Add support for parsing DICOM files where the pixel data is not properly closed with a SequenceDelimitationItem (#1339)
- Update Dicom json converter to handle Infinity values for FL and FD VRs (#1725)
- Add support for rendering multiframe DICOM files where last fragment is 0 bytes (#1586)
- Use information from Functional Group Sequences when rendering EnhancedCT, EnhancedMR or BTO objects
- DicomImage can cache decompressed pixel data, render-LUT or rendered image.
- New properties CacheMode and AutoAplyLUTToAllFrames in DicomImage.
- Apply FallbackEncoding of DicomServices to the DicomDatasets that are sent through this DicomService (#1642)
- Add resiliency against WindowCenter or WindowWidth containing gibberish (#1756)
- Ignore overlay data that is too small (#1728)
- Allow leading zeros in DS values (#1793)
- Correctly handle gb2312 (ISO 2022 IR 58) character encoding (#1805)
There are the following breaking changes from version 5.1.2 to version 5.1.3
- Calculation of VOI LUT function LINEAR_EXACT changed as defined since DICOM Standard 2019d
5.1.2
On December 21st 2023 fo-dicom 5.1.2 was officially released.
This release contains the following bugfixes:
- Fix issue where extracting a string from a DICOM dataset could return null if the tag was present but empty
- Fix issue where stopping a DICOM server left the unused services cleanup task running (#1562)
- Fix incorrect values returned from
DicomEncoding.GetCharset()
(#1624) - Fix issue where reading a DICOM file with large pixel data (> 2 GB) did not work (#1453)
- Fix issue where a DICOM server could stop accepting incoming connections if MaxClientsAllowed is configured and one or more connections never close (#1468)(#1670)
- Fix issue where a DICOM server could leak memory when one or more connections never close (#1594)
- Fix the issue of 'DicomAttribute not generated in XML when element is of type DicomFragmentSequence'
- Fix issue with missing known DicomTransferSyntax from static DicomTransferSyntax.Entries dictionary (#1644)
This release contains the following changes:
- Update to DICOM Standard 2023e
- fo-dicom.Imaging.Desktop supports net6.0-windows and net7.0-windows targets (#1318)
- Added private tags mentioned in RayStation 11A DICOM Conformance Statement (#1612)
- Extension methods
DicomDataset.WriteToLog
andDicomFile.WriteToLog
now also accept aMicrosoft.Extensions.Logging.ILogger
- Optimize the common case of adding a single
DicomItem
to aDicomDataset
by adding an overloadDicomDataset.Add(DicomItem item)
(#1604) - Immediately throw an exception if DICOM server synchronously fails to start (#1562)
- Add the possibility to configure TCP buffer sizes (#1564)
- Tolerate
Specific Character Set
values misspelled as "ISO-IR ###" additionally to "ISO IR ###" - Prevent adding duplicate presentation contexts to an association request (#1596)
- Improve robustness of DicomService when presented with HTTP requests. Fail early if the PDU type is not recognized (#1678)
- Added IEquatable implementation and equality operators for DicomDataset class
There are the following breaking changes from version 5.1.1 to version 5.1.2
- Configuration of
MaxClientsAllowed
must now be done via theconfigure
parameter ofIDicomServerFactory.Create(..)
instead of using theOptions
property of aDicomServer
. IServiceCollection.AddDicomServer(Action<DicomServiceOptions> configure)
was changed toIServiceCollection.AddDicomServer(Action<DicomServerOptions> configure)
5.1.1
5.1.0
On May 21st 2023 fo-dicom 5.1.0 was officially released.
This release contains the following bugfixes:
- Fix Truncating UIDs during Dimse and PDU logging (#1505)
- Fix reading of DICOM files with extra tags in File Meta Information (#1376)
- Fix sending more DICOM requests over an existing association where a request previously timed out (#1396)
- Fix race-condition where Dicom clients could be accepted for connection before the server was fully configured (#1398)
- Fix overwriting of Lossy Compression ratio tag (#1400)
- Fix DicomJsonConverter deserialization to handle invalid private creator item (#1445)
- Fix rendering of XA/XRF images that include a modality LUT sequence (#1442)
- Fix incorrect conversion of some decimal strings (#1454)
- Fix reading of Confidentiality Profile Attributes from standard (led to missing Clean Graphics option) (#1212)
- Fix incorrect JSON conversion of inline binaries (#1487)
- Fix GetDateTimeOffset with default offset from date/time (#1511)
- Fix even length in pixel data by adding payload (#1019)
- Fix JsonDicomConverter number serialization mode 'PreferablyAsNumber' to handle integers greater than int.MaxValue or lesser than int.MinValue (#1521)
- Fixed missing logging of RemoteHost and RemoteIP in SCU (#1518)
- Fix handling of negative overlay origin (#1559)
This release contains the following changes:
- Support using client certificates for Tls connections.
- New interfaces ITlsAcceptor and ITlsInitiator give more freedom in handling Tls connections.
- Cache file length in FileByteSource to improve parse speed (#1493)
- Improve throughput of DicomClient when more requests are added mid-flight (#1396)
- Improve performance and reduce memory usage when opening DICOM files (#1414)
- Disabled dataset validation on
DicomFile.Clone()
(#1465) - Added support for DICOM supplement 225, Multi-Fragment video transfer syntax (#1469)
- Added support for rendering native icon image stored within encapsulated sop instance (#1483)
- Added property to omit adding the default Implicit VR Little Endian transfer syntax for CStoreRequest (#1475)
- Use CommunityToolkit.HighPerformance (#1473)
- Added private tags from Varian official DICOM Conformance Statements (#1556)
- Add better logging for inbound connections (#1561)
- Added User Identity Negotiation support (#1110)
There are the following breaking changes from version 5.0.3 to version 5.1.0
- Switch to Microsoft.Extensions.Logging, replacing FellowOakDicom.Log.ILogger and FellowOakDicom.Log.ILogManager. These are old interfaces are still supported, but they are now marked as obsolete
- Updated DICOM Dictionary to 2023b. Several DicomTag constant names changed to singular name from plural form
- DicomServer factories methods take an instance of ITlsAcceptor instead of a certificate name in case of Tls connection.
- A exception is thrown when a private dicom tag is added without explicit VR (#1462)
5.0.3
On May 23rd 2022 fo-dicom 5.0.3 was officially released.
This release contains the following bugfixes:
- Fixed bug where anonymization threw an exception if a DicomTag of VR UI contained no value (#1308)
- Catch exception in logmessage, to avoid making the application crash because of logging (#1288)
- Fixed StreamByteBuffer to read an internally buffered stream completely (#1313)
- Fixed bug where disposal of DicomService could throw an exception if the buffered write stream still had content (#1319)
- Fix VR's SV and UV VR Length field (#1386)
This release contains the following changes:
- Update to DICOM Standard 2022b
- Added option
numberSerializationMode
toJsonDicomConverter
that allows different modes for serializing DS/IS/UV/SV DICOM items, including handling of invalid values (#1354 & #1362) - Added an extension to get a DateTimeOffset respecting the timezone info in the dataset (#1310)
- Optimize performance and reduce memory allocations in network layer (#1291)
- Add new API for expert DICOM client connections/associations. This new API gives full control over the connection, association and requests when sending DICOM requests (#1144)
- Rewrite "DicomClient" based on the new advanced API. The state based implementation is gone. The public API has remained the same. (#1144)
- Ignore empty VOI LUT and Modality LUT Sequence (#1369)
- Validate calling AE and called AE length when creating a DicomClient (#1323)
- Improve handling of WSI creation: faster offset table calucation and a naming of temp files to allow more than 64.000.
- DicomAnonymizer private fields and methods changed to protected so they can be used in subclasses, made instance methods virtual so they can be overridden in subclasses
There are the following breaking changes from version 5.0.2 to version 5.0.3
- Subclasses of DicomService will have to pass an instance of DicomServiceDependencies along to the DicomService base constructor. This replaces the old LogManager / NetworkManager / TranscoderManager dependencies. (#1291)
- Subclasses of DicomServer will have to pass an instance of DicomServerDependencies along to the DicomServer base constructor. This replaces the old NetworkManager / LogManager dependencies. (#1291)
- DicomClient no longer has a NetworkManager, LogManager or TranscoderManager, these are to be configured via dependency injection. (#1144)