Mercurial > hg > orthanc
comparison Core/DicomNetworking/DicomStoreUserConnection.cpp @ 3881:f23ab7829a8d transcoding
reorganization
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 May 2020 10:35:39 +0200 |
parents | cdd0cb5ec4e4 |
children | 904575738462 |
comparison
equal
deleted
inserted
replaced
3880:cdd0cb5ec4e4 | 3881:f23ab7829a8d |
---|---|
176 } | 176 } |
177 | 177 |
178 | 178 |
179 void DicomStoreUserConnection::LookupParameters(std::string& sopClassUid, | 179 void DicomStoreUserConnection::LookupParameters(std::string& sopClassUid, |
180 std::string& sopInstanceUid, | 180 std::string& sopInstanceUid, |
181 DicomTransferSyntax& transferSyntax, | |
182 DcmDataset& dataset) | 181 DcmDataset& dataset) |
183 { | 182 { |
184 OFString a, b; | 183 OFString a, b; |
185 if (!dataset.findAndGetOFString(DCM_SOPClassUID, a).good() || | 184 if (!dataset.findAndGetOFString(DCM_SOPClassUID, a).good() || |
186 !dataset.findAndGetOFString(DCM_SOPInstanceUID, b).good()) | 185 !dataset.findAndGetOFString(DCM_SOPInstanceUID, b).good()) |
190 parameters_.GetRemoteModality().GetApplicationEntityTitle()); | 189 parameters_.GetRemoteModality().GetApplicationEntityTitle()); |
191 } | 190 } |
192 | 191 |
193 sopClassUid.assign(a.c_str()); | 192 sopClassUid.assign(a.c_str()); |
194 sopInstanceUid.assign(b.c_str()); | 193 sopInstanceUid.assign(b.c_str()); |
195 | |
196 if (!FromDcmtkBridge::LookupOrthancTransferSyntax( | |
197 transferSyntax, dataset.getOriginalXfer())) | |
198 { | |
199 throw OrthancException(ErrorCode_InternalError, | |
200 "Unknown transfer syntax from DCMTK"); | |
201 } | |
202 } | 194 } |
203 | 195 |
204 | 196 |
205 bool DicomStoreUserConnection::NegotiatePresentationContext( | 197 bool DicomStoreUserConnection::NegotiatePresentationContext( |
206 uint8_t& presentationContextId, | 198 uint8_t& presentationContextId, |
312 association_->Open(parameters_); | 304 association_->Open(parameters_); |
313 return LookupPresentationContext(presentationContextId, sopClassUid, transferSyntax); | 305 return LookupPresentationContext(presentationContextId, sopClassUid, transferSyntax); |
314 } | 306 } |
315 | 307 |
316 | 308 |
317 void DicomStoreUserConnection::StoreInternal(std::string& sopClassUid, | 309 void DicomStoreUserConnection::Store(std::string& sopClassUid, |
318 std::string& sopInstanceUid, | 310 std::string& sopInstanceUid, |
319 DcmDataset& dataset, | 311 DcmDataset& dataset, |
320 const std::string& moveOriginatorAET, | 312 const std::string& moveOriginatorAET, |
321 uint16_t moveOriginatorID) | 313 uint16_t moveOriginatorID) |
322 { | 314 { |
315 LookupParameters(sopClassUid, sopInstanceUid, dataset); | |
316 | |
323 DicomTransferSyntax transferSyntax; | 317 DicomTransferSyntax transferSyntax; |
324 LookupParameters(sopClassUid, sopInstanceUid, transferSyntax, dataset); | 318 if (!FromDcmtkBridge::LookupOrthancTransferSyntax(transferSyntax, dataset)) |
319 { | |
320 throw OrthancException(ErrorCode_InternalError, | |
321 "Unknown transfer syntax from DCMTK"); | |
322 } | |
325 | 323 |
326 uint8_t presID; | 324 uint8_t presID; |
327 if (!NegotiatePresentationContext(presID, sopClassUid, transferSyntax)) | 325 if (!NegotiatePresentationContext(presID, sopClassUid, transferSyntax)) |
328 { | 326 { |
329 throw OrthancException(ErrorCode_NetworkProtocol, | 327 throw OrthancException(ErrorCode_NetworkProtocol, |
403 dicom->getDataset() == NULL) | 401 dicom->getDataset() == NULL) |
404 { | 402 { |
405 throw OrthancException(ErrorCode_InternalError); | 403 throw OrthancException(ErrorCode_InternalError); |
406 } | 404 } |
407 | 405 |
408 StoreInternal(sopClassUid, sopInstanceUid, *dicom->getDataset(), | 406 Store(sopClassUid, sopInstanceUid, *dicom->getDataset(), |
409 moveOriginatorAET, moveOriginatorID); | 407 moveOriginatorAET, moveOriginatorID); |
410 } | 408 } |
411 | 409 |
412 | 410 |
413 bool DicomStoreUserConnection::LookupTranscoding(std::set<DicomTransferSyntax>& acceptedSyntaxes, | 411 bool DicomStoreUserConnection::LookupTranscoding(std::set<DicomTransferSyntax>& acceptedSyntaxes, |
414 const std::string& sopClassUid, | 412 const std::string& sopClassUid, |