Bug 154

Summary: Matching against list of UID-s by C-MOVE
Product: Orthanc Reporter: Sébastien Jodogne <s.jodogne>
Component: Orthanc CoreAssignee: Sébastien Jodogne <s.jodogne>
Status: RESOLVED FIXED    
Severity: enhancement    
Priority: ---    
Version: unspecified   
Hardware: All   
OS: All   
Attachments: d2.dcm
d1.dcm

Description Sébastien Jodogne 2020-06-29 15:16:08 CEST
[BitBucket user: Miklós Espák]
[BitBucket date: 2019-10-18.08:18:16]

The DICOM standard allows matching against a list of UIDs in Q/R requests.

http://dicom.nema.org/medical/dicom/current/output/chtml/part04/sect_C.2.2.2.2.html

E.g. to retrieve two specific studies, one could perform a study root query and put something like "<first study instance UID>\\\\<second study instance UID>" in the data set that is passed to C-MOVE.

This works with dcmqrscp for both C-GET and C-MOVE, but does not seem to work with Orthanc with C-MOVE.

With other words, the VM \(value multiplicity\) of the attributes in the identifier data set in the Q/R operations can be higher than 1.

I attached two DICOM files to demonstrate the issue. They only contain the ID-s.

To store them:

```
storescu localhost 4242 d1.dcm
storescu localhost 4242 d2.dcm
```

I can retrieve the series one after the other:

```
movescu -v -aet TEST +P 2000 localhost 4242 --study -k QueryRetrieveLevel="SERIES" -k StudyInstanceUID="1.2.826.0.1.3680043.8.498.35214236271657363033644818354280454731" -k SeriesInstanceUID="1.2.826.0.1.3680043.8.498.12243321927795467590791662266352305113"
movescu -v -aet TEST +P 2000 localhost 4242 --study -k QueryRetrieveLevel="SERIES" -k StudyInstanceUID="1.2.826.0.1.3680043.8.498.35214236271657363033644818354280454731" -k SeriesInstanceUID="1.2.826.0.1.3680043.8.498.43769499931624584079690260699536473555"
```

But I cannot retrieve them in one go passing 

```
movescu -v -aet TEST +P 2000 localhost 4242 --study -k QueryRetrieveLevel="SERIES" -k StudyInstanceUID="1.2.826.0.1.3680043.8.498.35214236271657363033644818354280454731" -k SeriesInstanceUID="1.2.826.0.1.3680043.8.498.12243321927795467590791662266352305113\\1.2.826.0.1.3680043.8.498.43769499931624584079690260699536473555"
```

Note that I can as well combine the two C-MOVE operations into a single movescu command, as it has been pointed it out on the mailing list.

```
movescu -v -aet TEST +P 2000 localhost 4242 --study -k QueryRetrieveLevel="SERIES" -k StudyInstanceUID="1.2.826.0.1.3680043.8.498.35214236271657363033644818354280454731" -k SeriesInstanceUID="1.2.826.0.1.3680043.8.498.12243321927795467590791662266352305113" -k StudyInstanceUID="1.2.826.0.1.3680043.8.498.43769499931624584079690260699536473555"
```

However, this sends two C-MOVE operations, not a single one.

This issue focuses on C-MOVE, but matching against list of UID-s are relevant for other Q/R operations as well, so I would also check if this is supported by C-FIND now and if work has started about C-GET support then there, too.
Comment 1 Sébastien Jodogne 2020-06-29 15:17:10 CEST
Created attachment 25 [details]
d2.dcm
Comment 2 Sébastien Jodogne 2020-06-29 15:17:11 CEST
Created attachment 26 [details]
d1.dcm
Comment 3 Sébastien Jodogne 2020-06-29 15:27:03 CEST
[BitBucket user: Sébastien Jodogne]
[BitBucket date: 2020-02-26.10:58:06]

Fix issue #154 (Matching against list of UID-s by C-MOVE)

→ https://hg.orthanc-server.com/orthanc/changeset/5331918773e7
Comment 4 Sébastien Jodogne 2020-06-29 15:27:04 CEST
[BitBucket user: Sébastien Jodogne]
[BitBucket date: 2020-02-26.10:59:53]

Thanks for the report! This is now fixed in the mainline of Orthanc \(will be part of forthcoming 1.6.0 release\). An integration test is also available: https://hg.orthanc-server.com/orthanc-tests/changeset/c8d79d8258cd442f576a08c2214df4ad2998086d