Mercurial > hg > orthanc
diff OrthancServer/Internals/FindScp.cpp @ 1859:4e7c318a3f69
C-FIND SCP will return tags with sequence value representation
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Dec 2015 11:22:05 +0100 |
parents | 30e97a1f4093 |
children | b1291df2f780 |
line wrap: on
line diff
--- a/OrthancServer/Internals/FindScp.cpp Tue Dec 01 16:57:03 2015 +0100 +++ b/OrthancServer/Internals/FindScp.cpp Wed Dec 02 11:22:05 2015 +0100 @@ -148,9 +148,30 @@ { if (data.findHandler_ != NULL) { + std::list<DicomTag> sequencesToReturn; + + for (unsigned long i = 0; i < requestIdentifiers->card(); i++) + { + DcmElement* element = requestIdentifiers->getElement(i); + if (element && !element->isLeaf()) + { + const DicomTag tag(FromDcmtkBridge::Convert(element->getTag())); + + DcmSequenceOfItems& sequence = dynamic_cast<DcmSequenceOfItems&>(*element); + if (sequence.card() != 0) + { + LOG(WARNING) << "Orthanc only supports sequence matching on worklists, " + << "ignoring C-FIND SCU constraint on tag (" << tag.Format() + << ") " << FromDcmtkBridge::GetName(tag); + } + + sequencesToReturn.push_back(tag); + } + } + DicomMap input; FromDcmtkBridge::Convert(input, *requestIdentifiers); - data.findHandler_->Handle(data.answers_, input, + data.findHandler_->Handle(data.answers_, input, sequencesToReturn, *data.remoteIp_, *data.remoteAet_, *data.calledAet_); ok = true;