Skip to content

Preliminary dicom web client#174

Draft
charbeljc wants to merge 9 commits intoEnet4:masterfrom
charbeljc:dicom-web-client
Draft

Preliminary dicom web client#174
charbeljc wants to merge 9 commits intoEnet4:masterfrom
charbeljc:dicom-web-client

Conversation

@charbeljc
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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