I used the sendMOVERequest in class DcmSCU. When I turn off move destinat, and the result always returns OF_ok. However, I think it should return some error status code.
dcmqrscp and conQuest Server have been tested, and the log shows as following:
## Scenario 1: MOVESCP: dcmqrscp. turn off move destinat
### Console of the movescu:
Code: Select all
I: Requesting Association
I: Association Accepted (Max Send PDV: 16372)
I: Sending C-MOVE Request (MsgID 1)
I: Received C-MOVE Response (Refused: OutOfResourcesSubOperations)
W: Status is 0xa702 (unknown)
W: Will not wait for further C-MOVE responses
Code: Select all
I: Association Received (Grossschwarz:LIENSCU -> ECG_STORE)
I: Association Acknowledged (Max Send PDV: 16372)
I: Received Move SCP:
I: ===================== INCOMING DIMSE MESSAGE ====================
I: Message Type : C-MOVE RQ
I: Message ID : 1
I: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
I: Data Set : present
I: Priority : medium
I: Move Destination : LIENSCU
I: ======================= END DIMSE MESSAGE =======================
I: Move SCP Request Identifiers:
I:
I: # Dicom-Data-Set
I: # Used TransferSyntax: Little Endian Implicit
I: (0008,0005) CS [ISO_IR 192] # 10, 1 SpecificCharacterSet
I: (0008,0052) CS [STUDY] # 6, 1 QueryRetrieveLevel
I: (0020,000d) UI [XXXXX.XXX.XXX] # 50, 1 StudyInstanceUID
I:
I: Requesting Sub-Association
E: moveSCP: Sub-Association Request Failed: 0006:031b Failed to establish association
E: 0006:0317 Peer aborted Association (or never connected)
E: 0006:031c TCP Initialization Error: No error
I: Releasing Sub-Association
E: moveSCP: Sub-Association Release Failed: 0006:0106 ASC Caller passed in a NULL key
I: Move SCP Response 1 [status: Refused: OutOfResourcesSubOperations]
I: Association Release
## Scenario 2: MOVESCP: conQuest Server. turn off move destinat
Code: Select all
I: Requesting Association
I: Association Accepted (Max Send PDV: 32756)
I: Sending C-MOVE Request (MsgID 1)
I: Received C-MOVE Response (Failed: UnableToProcess)
W: Status is 0xc005 (unknown)
W: Will not wait for further C-MOVE responses
Code: Select all
[CONQUESTSRV1]
[CONQUESTSRV1] UPACS THREAD 591: STARTED AT: Fri Mar 15 16:17:55 2019
[CONQUESTSRV1] A-ASSOCIATE-RQ Packet Dump
[CONQUESTSRV1] Calling Application Title : "LIENSCU "
[CONQUESTSRV1] Called Application Title : "CONQUESTSRV1 "
[CONQUESTSRV1] Application Context : "1.2.840.10008.3.1.1.1", PDU length: 16384
[CONQUESTSRV1] Number of Proposed Presentation Contexts: 10
[CONQUESTSRV1] Presentation Context 0 "1.2.840.10008.5.1.4.1.2.1.1" 1
[CONQUESTSRV1] Presentation Context 1 "1.2.840.10008.5.1.4.1.2.2.1" 1
[CONQUESTSRV1] Presentation Context 2 "1.2.840.10008.5.1.4.31" 1
[CONQUESTSRV1] Presentation Context 3 "1.2.840.10008.5.1.4.1.2.1.2" 1
[CONQUESTSRV1] Presentation Context 4 "1.2.840.10008.5.1.4.1.2.2.2" 1
[CONQUESTSRV1] Presentation Context 5 "1.2.840.10008.5.1.4.1.2.4.2" 0
[CONQUESTSRV1] Presentation Context 6 "1.2.840.10008.5.1.4.1.2.1.3" 1
[CONQUESTSRV1] Presentation Context 7 "1.2.840.10008.5.1.4.1.2.2.3" 1
[CONQUESTSRV1] Presentation Context 8 "1.2.840.10008.5.1.4.1.2.4.3" 0
[CONQUESTSRV1] Presentation Context 9 "1.2.840.10008.5.1.4.1.2.5.3" 0
[CONQUESTSRV1] Server Command := 0021
[CONQUESTSRV1] Message ID := 0001
[CONQUESTSRV1] C-Move Destination: "LIENSCU "
[CONQUESTSRV1] (QualifyOn) (mapped) IP:Grossschwarz, PORT:1004
[CONQUESTSRV1] MyStudyRootRetrieveGeneric :: SearchOn
[CONQUESTSRV1] Query On Image
[CONQUESTSRV1] Queried item 0008 0005 is not in the database
[CONQUESTSRV1] Issue Query on Columns: DICOMImages.SOPClassUI, DICOMImages.SOPInstanc, DICOMSeries.SeriesInst, DICOMStudies.StudyInsta,DICOMImages.ObjectFile,DICOMImages.DeviceName
[CONQUESTSRV1] Values: DICOMStudies.StudyInsta = 'XXX.XXX' and DICOMSeries.StudyInsta = DICOMStudies.StudyInsta and DICOMImages.SeriesInst = DICOMSeries.SeriesInst
[CONQUESTSRV1] Tables: DICOMImages, DICOMSeries, DICOMStudies
[CONQUESTSRV1] Records = 1
[CONQUESTSRV1] Number of Images to send: 1
[CONQUESTSRV1] Host 'LIENSCU' did not accept the connection
[CONQUESTSRV1] C-Move (StudyRoot)
my code
Code: Select all
OFCondition ldcmSCU::SendCMOVERequest(
const OFString &AEt,
const OFString &MoveAEt,
const OFString &HostName,
const Uint16 PortNumber,
DcmDataset &req,
const OFString &Service)
{
OFCondition result = EC_Normal;
T_ASC_PresentationContextID presID = 0;
DcmSCU moveSCU;
moveSCU.setAETitle(GetMyDcmAETitle());
moveSCU.setPeerAETitle(AEt);
moveSCU.setPeerHostName(HostName);
moveSCU.setPeerPort(PortNumber);
result = InitialNetwork(moveSCU, DCM_Query_Retrieve);
if (result.good()) //TODO: errorCode control.
presID = findTransferSyntaxPC(Service, moveSCU);
OFList<RetrieveResponse*> Rsp1;
OFString Response;
int findResult;
result = moveSCU.sendMOVERequest(presID, MoveAEt, &req, &Rsp1);
if (result.good())
result = CMoveResponseHandle(Rsp1);
if (result.good())
moveSCU.closeAssociation(DCMSCU_RELEASE_ASSOCIATION);
return result;
}
OFCondition ldcmSCU::CMoveResponseHandle(OFList<RetrieveResponse *> Input)
{
OFCondition result;
OFString Response;
OFListIterator(RetrieveResponse *) it = Input.begin();
RetrieveResponse *rsp = *it;
int status = rsp->m_status;
COUT << "status" << status << OFendl;
return result;
}