Fo Dicom Versions Save

Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity

5.1.2

3 months ago

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 and DicomFile.WriteToLog now also accept a Microsoft.Extensions.Logging.ILogger
  • Optimize the common case of adding a single DicomItem to a DicomDataset by adding an overload DicomDataset.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 the configure parameter of IDicomServerFactory.Create(..) instead of using the Options property of a DicomServer.
  • IServiceCollection.AddDicomServer(Action<DicomServiceOptions> configure) was changed to IServiceCollection.AddDicomServer(Action<DicomServerOptions> configure)

5.1.1

9 months ago

On May 29th 2023 fo-dicom 5.1.1 was officially released.

This release contains the following bugfixes:

  • Fix issue where DicomClient did not send requests when Async Ops Invoked was zero

5.1.0

10 months ago

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

1 year ago

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 to JsonDicomConverter 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)

5.0.2

2 years ago

On January 10th 2022 fo-dicom 5.0.2 was officially released.

This release contains the following bugfixes:

  • Fix issue where opening a DICOM file from a stream writes too much data when saving it again (#1264).
  • Fix issue where sending a deflated DICOM file via C-STORE was sent inflated, causing errors (#1283)

This release contains the following changes:

  • Update to DICOM Standard 2021e
  • Add possibility to read from streams without Seek like BrowserFileStream (#1218)
  • New method to convert an array of DicomDatasets into a json string (#1271)
  • Improved bilinear interpolation when rendering scaled images
  • Optimize performance and reduce memory allocations in network layer (#1267 and #1273)
  • Enhance Association Request Timeout (#1284)
  • Target encoding is not appied to texts that are not intended to be encoded. (#1301)

There are no breaking changes from version 5.0.1 to version 5.0.2

5.0.1

2 years ago

On November 11th 2021 fo-dicom 5.0.1 was officially released.

This release contains the following bugfixes:

  • Fix the exception that was thrown when rendering a single color image.
  • Fix a serialization issue by preventing DicomJsonConverter from consuming root end object token (#1251)
  • Fixed the bug where a incorrect Source PDU Field was sent in Association Abort Request (#984)

This release contains the following changes:

  • Drastically reduce memory consumption when saving a DICOM file
  • Add missing handling of UV, SV and OV in DicomDatasetReaderObserver.OnElement
  • It is now not possible to add a DICOM element with invalid group ID to DICOM meta information (#750)
  • XML documentation is now included in nuget package
  • Files bigger than 2GB can now be processed (#1148)

There are breaking changes from version 5.0.0 to version 5.0.1.

  • DicomFile.Open now throws a DicomFileException if the file size is less than 132 bytes, previously it returned null. (#641)

5.0.0

2 years ago

On September 13th 2021 fo-dicom 5.0.0 was officially released.

This release contains many structural and internal changes compared to version 4. Therefore there is a separate wiki-page to list the changes and breaking changes: Upgrade from version 4 to 5.

4.0.8

2 years ago

On September 10th 2021 fo-dicom 4.0.8 was officially released.

This release contains the following bugfixes:

  • Fixed bug where no DICOM charset was found for GB18030 in .NET Core (#1125)
  • Fixed bug where validatein failed incorrectly for VR Type DS (#1141)
  • Fixed bug where timeout detection stopped DicomClient prematurely.
  • Fixed bug where parsing of datasets with a final SequenceDelimiterItem at the end failed (#1157)
  • Fixed bug where DicomDirectory threw exception on calling the constructor with no parameters (#1176)
  • Fixed bug where anonymizer did not parse the items contained in sequences (#1202)

This release contains the following changes:

  • Adds some missing properties to IDicomClient interface (#1171)
  • FrameGeometry is enhanced so that it also works for DX, CR or MG images. (#1138)

There is the following breaking change from version 4.0.7 to version 4.0.8:

  • The generated definitions are updated to DICOM Standard 2021b. Now Nema also provides Keywords for the UIDs, these are used in order to be in sync with the DICOM standard. Because of that, some UID keywords have changed.

4.0.7

3 years ago

On November 1st 2020 fo-dicom 4.0.7 was officially released.

This release contains the following bugfixes:

  • Fixed bug where PixelSpacing was read wrong in FrameGeometry class.
  • Fixed bug where valid string decimals threw DicomValidationException.
  • Fixed bug where Storege Commitment Push Model SOP Class was mapped to a wrong DicomStorageCategory.
  • Fixed bug where opening deflated dicom file was extremly slow.
  • Fixed bug where handling of MaximumPDULength of DicomClient was not handled correctly.
  • Fixed bug where caching of pixel data in a multiframe DicomImage returned the wrong data when rendering the same image multithreaded.
  • Fixed bug where special characters in association request crashed DicomServer.
  • Fixed bug of IPv6 issue in DesktopNetworkStream.
  • Fixed bug where DS VR type value ending with \0 failed to serialize in JsonDicomConverter.
  • Fixed bug where deflated dicom files that contained sequences could not be opened correctly.

This release contains the following changes:

  • Date (DA) and DateTime (DT) tags now support range validation.
  • Optimize DicomTag.GetHashCode and improve performance.
  • Allow disabling validation in JsonDicomConverter.

There are no breaking changes from version 4.0.6 to version 4.0.7.

4.0.6

3 years ago

On August 06th 2020 fo-dicom 4.0.6 was officially released.

This release contains the following bugfixes:

  • Fixed bug where DICOM tag conversion for private tags for element numbers xxff was not possible.
  • Fixed bug where deserialization in JsonDicomConverter for NaN value in VR=FL did not work.
  • Fixed bug where an IOException was thrown when reading/sending files bigger than 2GB.
  • Fixed bug where DicomValidator complained about ESC character in LO.
  • Fixed bug where DicomValidation for UI complained when adding an existing file to DicomDirectory.
  • Fixed bug where an exception occurred in indexer of VOISequenceLUT Class.
  • Fixed bug where the DicomClient got stuck when any Exception (except IOException) occurs while sending a PDU over the network.
  • Fixed bug where the size of uncompressed YBR_FULL_422 images is calculated wrong.

This release contains the following changes:

  • The original TransferSyntax is now always sent as separate PresentationContext, so that it can be choosen more often over the default ImplicitVRLittleEndian.
  • New interface IDicomNEventReportRequestProvider for DicomServer. This is necessary to handle synchronous storage commitment on server.
  • Update to DICOM Standard 2020b.
  • A handler for N-Event requests in DicomClient, which is required to implement synchronous storage commitment.

There are no breaking changes from version 4.0.5 to version 4.0.6.