aws / aws-sdk-js-v3

Modularized AWS SDK for JavaScript.
Apache License 2.0
3.12k stars 579 forks source link

Add function to retrieve a tag value from the AWS Medical Imaging data structure. #6461

Open LeoReubelt opened 1 month ago

LeoReubelt commented 1 month ago

Describe the feature

A function that would take a DICOM tag, or series of DICOM tags, and return the value for that tag from the AWS Medical Imaging data structure.

Use Case

I have an existing infrastructure that is driven by DICOM tags. I am building new functionality using AWS Medical Imaging. If I had a function that would allow me to get a value for a tag, from the AWS Medical Imaging data structure, I could integrate my new AWS driven functionality with my existing infrastructure.

Proposed Solution

No response

Other Information

No response

Acknowledgements

SDK version used

3.577.0

Environment details (OS name and version, etc.)

Mac OS Sonoma 14.6.1.

zshzbh commented 1 month ago

Hey @LeoReubelt ,

Thanks for the feedback! AWS SDK has existing DICOM tags listed here. I'm trying to gather more information here. If I understand it right, you want to get the value of the DICOM tag from a function? For example, DICOMPatientName has patient name information, and you want to retrieve that value through the requested function?

If the example is not what you want, could you please give us an example as well as the sample function signature

Thanks! Maggie

LeoReubelt commented 1 month ago

Thanks for getting back to me @zshzbh.

I want to use the tags defined in the DICOM spec to get a value.

For example (0020,0037) is the tag for ImageOrientationPatient. And to get that value in the AWS data structure, you need to access the following path... metaData.Study.Series[SeriesUID].Instances[InstanceUID].DICOM.ImageOrientationPatient.

So I need a mapping from the DICOM spec tags (Spec) to the AWS path. The AWS data structure is great. But the majority of the DICOM using world that I have dealt with uses DICOM tags as defined by the spec. Without that mapping, I can not use any of the DICOM infrastructure that I have build in the past, or work with any outside customer/colleague.

And it would just be a long process for me to figure it out myself. Also, I am certain, this is a deciding factor for developers thinking of using AWS Medical Imaging.

zshzbh commented 1 month ago

@LeoReubelt ,

Thanks for your input! I have created an internal ticket to the service team , ref V1514369668.

We will let you know if there's any updates!

Thanks! Maggie

chrisbll971 commented 1 month ago

Do you know if retrieving DICOM JSON via the DICOM Web endpoints would work for your requirements?

https://docs.aws.amazon.com/healthimaging/latest/devguide/dicomweb-retrieve-instance-metadata.html

LeoReubelt commented 1 month ago

Thanks for the question @chrisbll971. No, that does not meet my requirement. I am already using that. I need to be able to get a meta data value from the DICOM tag. (0020,0037) is a tag. ImageOrientationPatient is an attribute name.

chrisbll971 commented 1 month ago

Do you know if you are using the GetImageSetMetadata in the AWS SDK or if you are using the referenced DICOM Web RetrieveInstanceMetadata API that returns DICOM JSON? The referenced DICOM Web RetrieveInstanceMetadata API isn't available in the AWS SDK - only the GetImageSetMetadata API.

The RetrieveInstanceMetadata API will return the metadata in DICOM JSON and will use only the tag values (0020,0037)

LeoReubelt commented 1 month ago

Interesting. I am using the SDK. Unfortunately it is too late at this point to go back. Because i have been working on the project for 6 months using the sdk. So a converter is really still what i need. But thanks for the tip. Can you easily find where Amazon has that documented? If so, please put it here.

chrisbll971 commented 1 month ago

Understood - the values come from the DICOM Standard Dictionary. I have not used Javascript for DICOM specifically, however, many DICOM libraries will have a library called "Dictionary" that will have the lookup values auto-generated from the DICOM Standard Dictionary. Two examples: