Mercurial > hg > orthanc
annotate OrthancServer/OrthancMoveRequestHandler.cpp @ 2227:6be653462006
back to mainline
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 13 Dec 2016 17:41:56 +0100 |
parents | 21713ce8717b |
children | a3a65de1840f |
rev | line source |
---|---|
619 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1231
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
619 | 5 * |
6 * This program is free software: you can redistribute it and/or | |
7 * modify it under the terms of the GNU General Public License as | |
8 * published by the Free Software Foundation, either version 3 of the | |
9 * License, or (at your option) any later version. | |
10 * | |
11 * In addition, as a special exception, the copyright holders of this | |
12 * program give permission to link the code of its release with the | |
13 * OpenSSL project's "OpenSSL" library (or with modified versions of it | |
14 * that use the same license as the "OpenSSL" library), and distribute | |
15 * the linked executables. You must obey the GNU General Public License | |
16 * in all respects for all of the code used other than "OpenSSL". If you | |
17 * modify file(s) with this exception, you may extend this exception to | |
18 * your version of the file(s), but you are not obligated to do so. If | |
19 * you do not wish to do so, delete this exception statement from your | |
20 * version. If you delete this exception statement from all source files | |
21 * in the program, then also delete it here. | |
22 * | |
23 * This program is distributed in the hope that it will be useful, but | |
24 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
26 * General Public License for more details. | |
27 * | |
28 * You should have received a copy of the GNU General Public License | |
29 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
30 **/ | |
31 | |
824
a811bdf8b8eb
precompiled headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
810
diff
changeset
|
32 |
831
84513f2ee1f3
pch for unit tests and server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
33 #include "PrecompiledHeadersServer.h" |
619 | 34 #include "OrthancMoveRequestHandler.h" |
35 | |
36 #include "OrthancInitialization.h" | |
1371
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
37 #include "FromDcmtkBridge.h" |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
38 #include "../Core/DicomFormat/DicomArray.h" |
1486
f967bdf8534e
refactoring to Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1427
diff
changeset
|
39 #include "../Core/Logging.h" |
619 | 40 |
41 namespace Orthanc | |
42 { | |
43 namespace | |
44 { | |
45 // Anonymous namespace to avoid clashes between compilation modules | |
46 | |
47 class OrthancMoveRequestIterator : public IMoveRequestIterator | |
48 { | |
49 private: | |
50 ServerContext& context_; | |
1427
d710ea64f0fd
Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1371
diff
changeset
|
51 const std::string& localAet_; |
619 | 52 std::vector<std::string> instances_; |
53 size_t position_; | |
772
31cc399c7762
RemoteModalityParameters
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
771
diff
changeset
|
54 RemoteModalityParameters remote_; |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
55 std::string originatorAet_; |
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
56 uint16_t originatorId_; |
771 | 57 |
619 | 58 public: |
59 OrthancMoveRequestIterator(ServerContext& context, | |
771 | 60 const std::string& aet, |
1907
5011a597b6ce
Support of Move Originator Message ID (0000,1031) in C-Store responses driven by C-Move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
61 const std::string& publicId, |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
62 const std::string& originatorAet, |
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
63 uint16_t originatorId) : |
619 | 64 context_(context), |
1427
d710ea64f0fd
Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1371
diff
changeset
|
65 localAet_(context.GetDefaultLocalApplicationEntityTitle()), |
1907
5011a597b6ce
Support of Move Originator Message ID (0000,1031) in C-Store responses driven by C-Move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
66 position_(0), |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
67 originatorAet_(originatorAet), |
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
68 originatorId_(originatorId) |
619 | 69 { |
771 | 70 LOG(INFO) << "Sending resource " << publicId << " to modality \"" << aet << "\""; |
619 | 71 |
72 std::list<std::string> tmp; | |
73 context_.GetIndex().GetChildInstances(tmp, publicId); | |
74 | |
75 instances_.reserve(tmp.size()); | |
656 | 76 for (std::list<std::string>::iterator it = tmp.begin(); it != tmp.end(); ++it) |
619 | 77 { |
78 instances_.push_back(*it); | |
79 } | |
771 | 80 |
810
401a9633e492
configuration into a namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
776
diff
changeset
|
81 remote_ = Configuration::GetModalityUsingAet(aet); |
619 | 82 } |
83 | |
84 virtual unsigned int GetSubOperationCount() const | |
85 { | |
86 return instances_.size(); | |
87 } | |
88 | |
89 virtual Status DoNext() | |
90 { | |
91 if (position_ >= instances_.size()) | |
92 { | |
93 return Status_Failure; | |
94 } | |
95 | |
96 const std::string& id = instances_[position_++]; | |
97 | |
98 std::string dicom; | |
2124 | 99 context_.ReadDicom(dicom, id); |
771 | 100 |
101 { | |
776 | 102 ReusableDicomUserConnection::Locker locker |
1427
d710ea64f0fd
Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1371
diff
changeset
|
103 (context_.GetReusableDicomUserConnection(), localAet_, remote_); |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
104 locker.GetConnection().Store(dicom, originatorAet_, originatorId_); |
771 | 105 } |
619 | 106 |
107 return Status_Success; | |
108 } | |
109 }; | |
110 } | |
111 | |
112 | |
1162 | 113 bool OrthancMoveRequestHandler::LookupIdentifier(std::string& publicId, |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
114 ResourceType level, |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
115 const DicomMap& input) |
619 | 116 { |
1724
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
117 DicomTag tag(0, 0); // Dummy initialization |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
118 |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
119 switch (level) |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
120 { |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
121 case ResourceType_Patient: |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
122 tag = DICOM_TAG_PATIENT_ID; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
123 break; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
124 |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
125 case ResourceType_Study: |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
126 tag = (input.HasTag(DICOM_TAG_ACCESSION_NUMBER) ? |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
127 DICOM_TAG_ACCESSION_NUMBER : DICOM_TAG_STUDY_INSTANCE_UID); |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
128 break; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
129 |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
130 case ResourceType_Series: |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
131 tag = DICOM_TAG_SERIES_INSTANCE_UID; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
132 break; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
133 |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
134 case ResourceType_Instance: |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
135 tag = DICOM_TAG_SOP_INSTANCE_UID; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
136 break; |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
137 |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
138 default: |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
139 throw OrthancException(ErrorCode_ParameterOutOfRange); |
7e0b5e413c7c
C-Move SCP for studies using AccessionNumber tag
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1721
diff
changeset
|
140 } |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
141 |
619 | 142 if (!input.HasTag(tag)) |
143 { | |
144 return false; | |
145 } | |
146 | |
1737
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
147 const DicomValue& value = input.GetValue(tag); |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
148 if (value.IsNull() || |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
149 value.IsBinary()) |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
150 { |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
151 return false; |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
152 } |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
153 |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
154 const std::string& content = value.GetContent(); |
619 | 155 |
156 std::list<std::string> ids; | |
1744
b3de74dec2d5
integration mainline->db-changes
Sebastien Jodogne <s.jodogne@gmail.com>
diff
changeset
|
157 context_.GetIndex().LookupIdentifierExact(ids, level, tag, content); |
619 | 158 |
159 if (ids.size() != 1) | |
160 { | |
161 return false; | |
162 } | |
163 else | |
164 { | |
165 publicId = ids.front(); | |
166 return true; | |
167 } | |
168 } | |
169 | |
170 | |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1486
diff
changeset
|
171 IMoveRequestIterator* OrthancMoveRequestHandler::Handle(const std::string& targetAet, |
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1486
diff
changeset
|
172 const DicomMap& input, |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
173 const std::string& originatorIp, |
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
174 const std::string& originatorAet, |
1909
21fcfc428dc2
another semantics for Originator Message ID
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1907
diff
changeset
|
175 const std::string& calledAet, |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
176 uint16_t originatorId) |
619 | 177 { |
1573
3309878b3e16
more information about the origin of requests submitted to the DICOM handlers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1486
diff
changeset
|
178 LOG(WARNING) << "Move-SCU request received for AET \"" << targetAet << "\""; |
619 | 179 |
1371
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
180 { |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
181 DicomArray query(input); |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
182 for (size_t i = 0; i < query.GetSize(); i++) |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
183 { |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
184 if (!query.GetElement(i).GetValue().IsNull()) |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
185 { |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
186 LOG(INFO) << " " << query.GetElement(i).GetTag() |
2115
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1909
diff
changeset
|
187 << " " << FromDcmtkBridge::GetTagName(query.GetElement(i)) |
1737
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
188 << " = " << query.GetElement(i).GetValue().GetContent(); |
1371
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
189 } |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
190 } |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
191 } |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
192 |
f528849ee9f7
DICOM Query/Retrieve available from Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1288
diff
changeset
|
193 |
619 | 194 /** |
195 * Retrieve the query level. | |
196 **/ | |
197 | |
198 const DicomValue* levelTmp = input.TestAndGetValue(DICOM_TAG_QUERY_RETRIEVE_LEVEL); | |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
199 |
1737
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
200 if (levelTmp == NULL || |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
201 levelTmp->IsNull() || |
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
202 levelTmp->IsBinary()) |
619 | 203 { |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
204 // The query level is not present in the C-Move request, which |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
205 // does not follow the DICOM standard. This is for instance the |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
206 // behavior of Tudor DICOM. Try and automatically deduce the |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
207 // query level: Start from the instance level, going up to the |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
208 // patient level until a valid DICOM identifier is found. |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
209 |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
210 std::string publicId; |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
211 |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
212 if (LookupIdentifier(publicId, ResourceType_Instance, input) || |
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
213 LookupIdentifier(publicId, ResourceType_Series, input) || |
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
214 LookupIdentifier(publicId, ResourceType_Study, input) || |
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
215 LookupIdentifier(publicId, ResourceType_Patient, input)) |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
216 { |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
217 return new OrthancMoveRequestIterator(context_, targetAet, publicId, originatorAet, originatorId); |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
218 } |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
219 else |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
220 { |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
221 // No identifier is present in the request. |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
222 throw OrthancException(ErrorCode_BadRequest); |
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
223 } |
619 | 224 } |
225 | |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
226 assert(levelTmp != NULL); |
1737
ec66a16aa398
removal of DicomStringValue and DicomNullValue
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1724
diff
changeset
|
227 ResourceType level = StringToResourceType(levelTmp->GetContent().c_str()); |
1231
703fcd797186
Support of Tudor DICOM in Query/Retrieve
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1162
diff
changeset
|
228 |
619 | 229 |
230 /** | |
231 * Lookup for the resource to be sent. | |
232 **/ | |
233 | |
234 std::string publicId; | |
235 | |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
236 if (LookupIdentifier(publicId, level, input)) |
619 | 237 { |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2124
diff
changeset
|
238 return new OrthancMoveRequestIterator(context_, targetAet, publicId, originatorAet, originatorId); |
619 | 239 } |
1721
3bcb01028107
removed another flavor of ServerIndex::LookupIdentifier
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1573
diff
changeset
|
240 else |
619 | 241 { |
242 throw OrthancException(ErrorCode_BadRequest); | |
243 } | |
244 } | |
245 } |