Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

10th temp commitment instanceuid only #30

Conversation

red1408
Copy link
Contributor

@red1408 red1408 commented Aug 12, 2019

[#28] Modify storage commitment adapter to query only on sop instance uid (temporarily)

Needs 9th pull request.

.setString(Tag.SOPClassUID, VR.UI, cmtItem.getClassUid());
// current (v1beta1) healthcare api wrongly returns
// "SOPClassUID is not a supported instance or study or series level attribute"
//queryAttributes
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer deleting the code for now, and we can use commit history to add it back once the issue is resolved on the server side.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok

@danielbeaudreau
Copy link
Collaborator

Thanks, can you please rebase this as well? (I guess all the rebasing is getting a bit problematic, but this PR doesn't remove the duplicate test script file, so it's necessary here anyway)

@danielbeaudreau danielbeaudreau merged commit 6c37c7a into GoogleCloudPlatform:master Aug 12, 2019
@red1408
Copy link
Contributor Author

red1408 commented Aug 12, 2019

Done.

red1408 pushed a commit to red1408/healthcare-dicom-dicomweb-adapter that referenced this pull request Sep 4, 2019
…itment_instanceuid_only

10th temp commitment instanceuid only
psavery added a commit to psavery/wsidicom that referenced this pull request Jan 30, 2024
This change adds support for Google Healthcare API DICOMweb servers, such
as the NCI's [Imaging Data Commons](https://datacommons.cancer.gov/repository/imaging-data-commons).

The problem: Google Healthcare API raises an error if `AvailableTransferSyntaxUID` is a
field, or if `SOPClassUID` is used as a search filter.

The `SOPClassUID` should definitely be allowed as an instance-level search
filter, as documented in [Table 10.6.1-5. Required Matching Attributes](https://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_10.6.html).
However, this has apparently been a long-standing problem of nearly four
years (see [here](GoogleCloudPlatform/healthcare-dicom-dicomweb-adapter#30 (comment))),
so it may not be fixed anytime soon. And even if it is fixed, the Imaging Data
Commons may not update their software anytime soon. It would be highly
advantageous to support such a large DICOMweb repository by working around
the issue.

The fix in this PR is as follows:

1. The two `search_for_instances()` calls are still performed identically as before, as long as there are no HTTP errors.
2. If there is an HTTP error with a 400 status_code, and a message is present matching the errors from Google Healthcare API, then the `search_for_instances()` arguments are patched to work for Google Healthcare API, as follows:
a) `AvailableTransferSyntaxUID` is simply removed, if present.
b) `SOPClassUID` is manually filtered, if present (meaning it is not supplied in the `search_filters`, but only instances with a matching `SOPClassUID` are returned).

These changes shouldn't have any impact on any situations except where an error
occurs from a Google Healthcare API server. And in that case, the function calls
are patched and then work properly.

The following example works after this fix:

```python
from wsidicom import WsiDicom, WsiDicomWebClient

url = 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb'
study_uid = '2.25.227261840503961430496812955999336758586'
series_uid = '1.3.6.1.4.1.5962.99.1.1334438926.1589741711.1637717011470.2.0'

client = WsiDicomWebClient.create_client(url)

slide = WsiDicom.open_web(client, study_uid, series_uid)
```

Fixes: imi-bigpicture#141

Signed-off-by: Patrick Avery <[email protected]>
psavery added a commit to psavery/wsidicom that referenced this pull request Jan 30, 2024
This change adds support for Google Healthcare API DICOMweb servers, such
as the NCI's [Imaging Data Commons](https://datacommons.cancer.gov/repository/imaging-data-commons).

The problem: Google Healthcare API raises an error if `AvailableTransferSyntaxUID` is a
field, or if `SOPClassUID` is used as a search filter.

The `SOPClassUID` should definitely be allowed as an instance-level search
filter, as documented in [Table 10.6.1-5. Required Matching Attributes](https://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_10.6.html).
However, this has apparently been a long-standing problem of nearly four
years (see [here](GoogleCloudPlatform/healthcare-dicom-dicomweb-adapter#30 (comment))),
so it may not be fixed anytime soon. And even if it is fixed, the Imaging Data
Commons may not update their software anytime soon. It would be highly
advantageous to support such a large DICOMweb repository by working around
the issue.

The fix in this PR is as follows:

1. The two `search_for_instances()` calls are still performed identically as before, as long as there are no HTTP errors.
2. If there is an HTTP error with a 400 status_code, and a message is present matching the errors from Google Healthcare API, then the `search_for_instances()` arguments are patched to work for Google Healthcare API, as follows:
a) `AvailableTransferSyntaxUID` is simply removed, if present.
b) `SOPClassUID` is manually filtered, if present (meaning it is not supplied in the `search_filters`, but only instances with a matching `SOPClassUID` are returned).

These changes shouldn't have any impact on any situations except where an error
occurs from a Google Healthcare API server. And in that case, the function calls
are patched and then work properly.

The following example works after this fix:

```python
from wsidicom import WsiDicom, WsiDicomWebClient

url = 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb'
study_uid = '2.25.227261840503961430496812955999336758586'
series_uid = '1.3.6.1.4.1.5962.99.1.1334438926.1589741711.1637717011470.2.0'

client = WsiDicomWebClient.create_client(url)

slide = WsiDicom.open_web(client, study_uid, series_uid)
```

Fixes: imi-bigpicture#141

Signed-off-by: Patrick Avery <[email protected]>
psavery added a commit to psavery/wsidicom that referenced this pull request Jan 31, 2024
This change adds support for Google Healthcare API DICOMweb servers, such
as the NCI's [Imaging Data Commons](https://datacommons.cancer.gov/repository/imaging-data-commons).

The problem: Google Healthcare API raises an error if `AvailableTransferSyntaxUID` is a
field, or if `SOPClassUID` is used as a search filter.

The `SOPClassUID` should definitely be allowed as an instance-level search
filter, as documented in [Table 10.6.1-5. Required Matching Attributes](https://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_10.6.html).
However, this has apparently been a long-standing problem of nearly four
years (see [here](GoogleCloudPlatform/healthcare-dicom-dicomweb-adapter#30 (comment))),
so it may not be fixed anytime soon. And even if it is fixed, the Imaging Data
Commons may not update their software anytime soon. It would be highly
advantageous to support such a large DICOMweb repository by working around
the issue.

The fix in this PR is as follows:

1. The two `search_for_instances()` calls are still performed identically as before, as long as there are no HTTP errors.
2. If there is an HTTP error with a 400 status_code, and a message is present matching the errors from Google Healthcare API, then the `search_for_instances()` arguments are patched to work for Google Healthcare API, as follows:
a) `AvailableTransferSyntaxUID` is simply removed, if present.
b) `SOPClassUID` is manually filtered, if present (meaning it is not supplied in the `search_filters`, but only instances with a matching `SOPClassUID` are returned).

These changes shouldn't have any impact on any situations except where an error
occurs from a Google Healthcare API server. And in that case, the function calls
are patched and then work properly.

The following example works after this fix:

```python
from wsidicom import WsiDicom, WsiDicomWebClient

url = 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb'
study_uid = '2.25.227261840503961430496812955999336758586'
series_uid = '1.3.6.1.4.1.5962.99.1.1334438926.1589741711.1637717011470.2.0'

client = WsiDicomWebClient.create_client(url)

slide = WsiDicom.open_web(client, study_uid, series_uid)
```

Fixes: imi-bigpicture#141

Signed-off-by: Patrick Avery <[email protected]>
erikogabrielsson pushed a commit to imi-bigpicture/wsidicom that referenced this pull request Feb 12, 2024
This change adds support for Google Healthcare API DICOMweb servers, such
as the NCI's [Imaging Data Commons](https://datacommons.cancer.gov/repository/imaging-data-commons).

The problem: Google Healthcare API raises an error if `AvailableTransferSyntaxUID` is a
field, or if `SOPClassUID` is used as a search filter.

The `SOPClassUID` should definitely be allowed as an instance-level search
filter, as documented in [Table 10.6.1-5. Required Matching Attributes](https://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_10.6.html).
However, this has apparently been a long-standing problem of nearly four
years (see [here](GoogleCloudPlatform/healthcare-dicom-dicomweb-adapter#30 (comment))),
so it may not be fixed anytime soon. And even if it is fixed, the Imaging Data
Commons may not update their software anytime soon. It would be highly
advantageous to support such a large DICOMweb repository by working around
the issue.

The fix in this PR is as follows:

1. The two `search_for_instances()` calls are still performed identically as before, as long as there are no HTTP errors.
2. If there is an HTTP error with a 400 status_code, and a message is present matching the errors from Google Healthcare API, then the `search_for_instances()` arguments are patched to work for Google Healthcare API, as follows:
a) `AvailableTransferSyntaxUID` is simply removed, if present.
b) `SOPClassUID` is manually filtered, if present (meaning it is not supplied in the `search_filters`, but only instances with a matching `SOPClassUID` are returned).

These changes shouldn't have any impact on any situations except where an error
occurs from a Google Healthcare API server. And in that case, the function calls
are patched and then work properly.

The following example works after this fix:

```python
from wsidicom import WsiDicom, WsiDicomWebClient

url = 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb'
study_uid = '2.25.227261840503961430496812955999336758586'
series_uid = '1.3.6.1.4.1.5962.99.1.1334438926.1589741711.1637717011470.2.0'

client = WsiDicomWebClient.create_client(url)

slide = WsiDicom.open_web(client, study_uid, series_uid)
```

Fixes: #141

Signed-off-by: Patrick Avery <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants