WADO Requests w/ Dcm4chee: Proper WADO URL Syntax

A sample image returned from a dcm4chee WADO request

A sample image returned from a dcm4chee WADO request.

Dcm4chee is a fairly impressive open source PACS system that can handle some pretty heavy work loads. Being the self-respecting PACS that it is, it also comes with a WADO service, which is a standard way for a PACS systems to deliver single images via a simple HTTP GET request from a client (ie: allowing you to bypass obscure health care specific communication protocols, and just use regular http).

(Aside: WADO cannot be used for much more than fetching single images, in particular, you can’t do queries on the db, or request an entire study in one go. It’s rather limited.)

But how do you actually structure such a request in the case of dcm4chee? While there is some documentation that ahem, (kind of, sort of?) hints on how to do this here, it’s, umm, fairly cryptic.

So how do you properly structure a basic WADO request to dcm4chee? Here is it is:

http://[host]:[port]/wado/wado?requestType=WADO&studyUID=[studyUID]&seriesUID=[seriesUID]&objectUID=[SOPInstanceUID]&contentType=[contentType]

where all three of studyUID, seriesUID and objectUID are *required* in more recent versions of dcm4chee, and contentType is optional (in which case it will most likely return a lossy jpeg).

Going back to the official docs, we see that contentType can take the following two values: “application/dicom” or “application/jpeg” (as of this writing), which will instruct dcm4chee to return either a raw dicom or (a possibly compressed) jpeg. (One can set the compression setting / quality of the jpeg server-side as hinted in the docs.)

Actually, entering in an incorrect contentType into dcm4chee reveals a useful error message, indicating that the full set of contentTypes are:

 [image/jpeg, image/png, image/png16, application/dicom, application/dicom+xml, text/html, application/xhtml+xml, text/xml, text/plain, video/mpeg]

Finally, there are few more allowed wado request parameters: “rows”, “columns” (incorrectly written as “column” in the docs, sheesh), “frameNumber”, “transferSyntax” which the docs do not bother to explain.

The first two allow one to play with the size of the returned image (perhaps useful for generating thumbnails). As for the latter two, well, I’m not really sure. I will clarify this someday if I ever actually need to :).

Note: To the extent that the above statements have been tested, they have only been tested w/ dcm4chee version 2.18.1.


No fancy tricks or popups, simply an article like the above, which I write a few times a month - just for my subscribers.