SOP instance/object UID query


thank you for your previous answer Sebastien. The updated FAQ helped a
lot in figuring out how to interact with the API. It provides all the
functionality I need except for one. I'm not really sure how it is
specified by the DICOM standard, so my question will be a bit

I have a DICOM server, which I'm querying through Orthanc's
"modalities" API. After identifying the correct IDs of the study and
series, I would like to issue a WADO request - directly to the DICOM
server, bypassing Orthanc.

To accomplish this, I need the following IDs for the request:

The only ID causing some confusion is the last one. I've researched
some DICOM documentation and it might be the same as the SOP Instance
UID, but I'm not quite sure (well, it is the name of the DICOM file
stored in the filesystem).

I've looked around the code and found some functions, which seemed
like they have something to do with the ObjectUID, namely:

DicomUserConnection::FindInstance, where I supply both the

in the DicomUserConnection::Find method and the FindRootModel_Instance case the

fields.HasTag(0x0008, 0x0018) evaluates to false, which is a bit odd
as compared to the other cases, as it seems to me that the DICOM
server has not been queried yet. However in the other cases
(FindRootModel_Series...) the value that the query should return is
already known.

Can you please point me in the right direction? I'm a bit lost :slight_smile:



Dear Peter,

I have well received your question. As it is quite involved, I will try understand it on next week, when I come back from holidays.


Hi Peter,

Thanks for suggesting this interesting use of Orthanc to ease WADO querying!

I have read the WADO specification (PS 3.18: Web Access to DICOM Persistent Objects (WADO)), as found at the following URL:

Quoting this document: “Unique identifier of the object - SOP Instance UID as defined in the PS 3.3. This parameter is REQUIRED. The parameter name shall be ‘objectUID’.” [page 12, 8.1.4] So, the “ObjectUID” identifier you refer to is actually the “SOPInstanceUID” tag (0x0008, 0x0018). This tag corresponds to the DICOM_TAG_SOP_INSTANCE_UID constant inside the Orthanc source code.

Given this information, your question is answered in the following FAQ entry:

Please however note that Orthanc 0.6.0 does not feature the “find-instance” API (it will be released with Orthanc 0.6.1). You will have to synchronize to the mainline version using Mercurial: