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

Preliminary dicom web client #174

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

charbeljc
Copy link
Contributor

This is just a POC for now. I tested it with Orthanc only
This PR was based on #173 so the revelant commits are also included.
This is rough and dirty, as I'm neither a dicom or rust expert ...

Regards

@charbeljc charbeljc mentioned this pull request Sep 9, 2021
@vsaase
Copy link
Contributor

vsaase commented Sep 9, 2021

nice, this works for me with Orthanc
thanks for starting the JSON to Dicom decoder, I will see if I can add to this

I wonder why you are doing this JSON array parsing. I did not run into a problem with serde_json with array responses.
You can parse the array as a vector of Values like this: let parsed: Vec<Value> = serde_json::from_str(jsonstring)?;

you should also check it with DCM4CHEE, a popular open source PACS
It can easily be started with docker_compose: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Run-minimum-set-of-archive-services-on-a-single-host#use-docker-compose

Then upload some dicom files with e.g. DCMTK: dcmsend localhost 11112 -aec DCM4CHEE +r +sd <dicom directory>
The dicomweb endpoint is http://localhost:8080/dcm4chee-arc/aets/DCM4CEE/rs

You will see that DCM4CHEE does not by default respond with the content-length in the multipart body on requesting a file with WADO. I think this is in violation of the standard here, but would still need a workaround since DCM4CHEE is so popular.

@Enet4 Enet4 marked this pull request as draft November 18, 2021 21:01
@charbeljc
Copy link
Contributor Author

nice, this works for me with Orthanc thanks for starting the JSON to Dicom decoder, I will see if I can add to this

I wonder why you are doing this JSON array parsing. I did not run into a problem with serde_json with array responses. You can parse the array as a vector of Values like this: let parsed: Vec<Value> = serde_json::from_str(jsonstring)?;

I was doing this to achieve a streaming API on json reading, to save memory and latency, but this is certainly a premature optimisation.

you should also check it with DCM4CHEE, a popular open source PACS It can easily be started with docker_compose: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Run-minimum-set-of-archive-services-on-a-single-host#use-docker-compose

Then upload some dicom files with e.g. DCMTK: dcmsend localhost 11112 -aec DCM4CHEE +r +sd <dicom directory> The dicomweb endpoint is http://localhost:8080/dcm4chee-arc/aets/DCM4CEE/rs

You will see that DCM4CHEE does not by default respond with the content-length in the multipart body on requesting a file with WADO. I think this is in violation of the standard here, but would still need a workaround since DCM4CHEE is so popular.

Thanks for the pointer, I will hopefully check this when thinks settle down a bit at Qynapse. In the mean time, feel free to takeover this POC !

@feliwir feliwir mentioned this pull request Mar 7, 2024
3 tasks
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.

2 participants