Hi,
tchiang wrote:
From my observation from the processing details, it seems that the bottleneck is the time wasted in waiting for Status=Pending.
Please note that all C-MOVE-RSP message are only very small messages sent to movescu about what is happening on the _second_ connection, ie. to let movescu know how many images were transferred to the target machine (which is _not_ movescu but your MYPACS01 machine). So it would be very unusual if movescu has a problem here. If you start the move request, movescu has nothing to do but waiting for intermediate C-MOVE-RSP messages (which are optional in DICOM after each image transferred on the second connection) and for the final C-MOVE-RSP message (required, sent after the last image was transferred successfully on the second connection). So movescu simply does nothing after start of image/study transfer but waiting for (any optional and one required) "progress status" messages. It's not very probable that this slows your transfer down.
If the status is success, it transfers the study smooth and pretty quick.
I think the communication between the PACS and the receiver of the images have some problems.
Therefore, I am considering using the following options. Since the manual page (from man movescu) contains limited description, I list the option I am interested in and my questions below:
--timeout 300 : Abandon the movescu process after waiting 5 minutes.
Question:
What are counted in these 300 seconds? Is it only the pending time or including processing time? For studies which need long processing time (for example studies with 500 or 1000 images), will this option terminate movescu in the middle of processing?
This timeout is only the TCP/IP timeout at the very beginning when movescu connects to your PACS. By the way, I guess none of the timeout option is of any help for your problem, sorry.
--cancel 3 : cancel after 3 responses
Question:
What responses are included in the 3 responses? I hope to abandon the movescu process after 3 Status=Pending responses. Is this the right option I should use?
As far as I can see after looking quickly into the code, this option makes movescu send a cancel message (meaning "please dont send any more images to the image receiver") to the PACS after receiving a certain amount of responses. Because responses for all images but the final images are optional, I guess this does only work for very specific use cases.
NumberOfRemainingSubOperations: 6
NumberOfCompletedSubOperations: 0
NumberOfFailedSubOperations: 0
NumberOfWarningSubOperations: 0
This is one of those optional intermediate responses, saying that there are 6 images on the second connection left to send.
Move Response 2: C-Move RSP: MsgID: 1 [Status=Pending]
AffectedSOPClassUID: =MOVEStudyRootQueryRetrieveInformationModel
Data Set: Not Present
NumberOfRemainingSubOperations: 6
NumberOfCompletedSubOperations: 0
NumberOfFailedSubOperations: 0
NumberOfWarningSubOperations: 0
This is the next one, still 6 images to send for the PACS on the second connection (a bit curious that the PACS sends intermediate messages without having done anyhting in between, but it's possible that this is a valid implementation of DICOM, I'm not sure).
Move Response 4: C-Move RSP: MsgID: 1 [Status=Pending]
AffectedSOPClassUID: =MOVEStudyRootQueryRetrieveInformationModel
Data Set: Not Present
NumberOfRemainingSubOperations: 5
NumberOfCompletedSubOperations: 0
NumberOfFailedSubOperations: 1
NumberOfWarningSubOperations: 0
Here you can already see, that one of the 6 images was sent by the PACS, _but_ the sub operation failed (NumberOfFailedSubOperations: 1. Sub operations always means the transfer on the connectio between PACS and image reciever), so the very first image couldnt be transferred.
Move Response 5: C-Move RSP: MsgID: 1 [Status=Pending]
AffectedSOPClassUID: =MOVEStudyRootQueryRetrieveInformationModel
Data Set: Not Present
NumberOfRemainingSubOperations: 4
NumberOfCompletedSubOperations: 0
NumberOfFailedSubOperations: 2
NumberOfWarningSubOperations: 0
2 images were tried to sent, but both failed...
-> and so on
C-Move RSP: MsgID: 1 [Status=Refused: OutOfResourcesSubOperations]
AffectedSOPClassUID: =MOVEStudyRootQueryRetrieveInformationModel
Data Set: Present
NumberOfCompletedSubOperations: 0
NumberOfFailedSubOperations: 6
NumberOfWarningSubOperations: 0Response Identifiers:
# Dicom-Data-Set
# Used TransferSyntax: BigEndianExplicit
(0008,0058) UI [1.2.840.113986.2.3567920692.20081015.130120.91\1.2.840.113986.2.3567920692.20081015.130217.502\1.2.840.113986.2.3567920692.20081015.130253.985\1.2.840.113986.2.3567920692.20081015.130326.764\1.2.840.113986.2.3567920692.20081015.130401.714\1.2.840.113986.2.3567920692.20081015.130437.751] # 286, 6 FailedSOPInstanceUIDList
Releasing Association
Requesting Association
Association Accepted (Max Send PDV: 28660)
This is the final one, stating that all 6 image transfers failed with overall status OutOfResourcesSubOperations, saying that on the second connection something went wrong. Also movescu is giving a list of SOP Insatance UIDs (6, one for every image) of those images the PACS said could not be transferred (all, in this case).
So, finally all information looks like the transfer between PACS and image receiver fails. movescu only protocols what the PACS tells per DICOM protocol about these failures but has nothing to do with the actual image transfer.
I guess the PACS is not able to convert the images to the transfer syntaxes needed for the image transfer on the second connection or the receiver just fails (maybe timeout) receiving the images. Maybe looking into your PACS logs would help you analyzing the problems.
Hope that helps...
Regards, Michael