An Azure offering that provides a suite of purpose-built technologies for protected health information in the cloud.
Hello @Haywood Phillips
Thanks for the detailed reproduction. Based on the behavior you've documented, this appears to be an issue in Microsoft.Health.Dicom.Client's DICOM JSON deserialization path, rather than with WADO-RS retrieval itself.
The key distinction is that the DICOM service returns the metadata successfully with HTTP 200, but Microsoft.Health.Dicom.Client 10.0.535 subsequently fails while deserializing the FL value:
"Value": ["-Infinity", -1]
The fact that:
- replacing "-Infinity" with a finite value succeeds;
- the same payload parses successfully with fo-dicom 5.2.6;
- and the exception occurs specifically inside the client's JSON parsing;
strongly suggests the client isn't handling all non-finite FL/FD representations the service returns.
Azure Health Data Services exposes DICOM data through the DICOMweb standard APIs, including WADO-RS retrieval, and Microsoft's documented C# approach uses both the DICOM Client and fo-dicom packages.
As a temporary workaround, if feasible in your application, retrieve the metadata using the DICOMweb REST endpoint/HttpClient and deserialize the application/dicom+json payload with a version of fo-dicom whose DicomJsonConverter correctly handles NaN, Infinity, and -Infinity, rather than letting RetrieveStudyMetadataAsync deserialize the response internally.
I don't recommend modifying the source DICOM object just to replace the non-finite value, especially since the service accepts the object and successfully returns its metadata.
Given your minimal repro, I think this is also appropriate to raise as a Microsoft.Health.Dicom.Client bug. When opening the support/engineering issue, include:
- Microsoft.Health.Dicom.Client version 10.0.535
- Microsoft.Health.FellowOakDicom version 10.0.535
- The minimal FL/FD JSON example
- The exact JsonException
- Confirmation that finite values work
- Confirmation that fo-dicom 5.2.6 parses the same payload
Your sanitized HttpMessageHandler reproduction would also be useful because it removes the Azure service from the test path and shows the failure occurs entirely during client-side deserialization.
So, based on the evidence you've provided, I don't see a configuration change on the Azure DICOM service side that would address this. The proper fix is for the Microsoft client to accept the non-finite FL/FD representations the service can return.
References:
Use C# and DICOMweb Standard APIs in Azure Health Data Services
Access DICOMweb APIs to manage DICOM data
Azure Health Data Services DICOM service FAQ
Help make this community better for everyone: if this answer resolved your issue, please accept it or upvote it. If not, share more details in a comment so we can continue the discussion and find the right solution.