Here's an update to the 2 issues as discussed earlier by email.
The 2 issues were:
1) The OnReceiveAssociateRequest is not being called.
2) The QueryRetreiveScu is accepting a transfer syntax it does not support.
After discussing these issues with our engineers, we have learned that both of these issues are by design.
The QueryRetrieveScu object is meant to be a quick object to both query, and then retrieve images from a PACS. However, it is not as robust as a workstation.
Why the OnReceiveAssociateRequest is not being called:
When a query is performed with the object (using the Find function) the object sends a request and receives a response. When a retrieve is performed, the QueryRetrieveObject internally creates a listening service, which accepts a connection from the PACS, where the PACS will then issue a CStore request to the listening service, once the CStore finishes, the CMove is complete.
This is why the OnReceiveAssociateRequest function is never called, because the internal listening service is who the remote PACS will be communicating with. The OnReceiveAssociateRequest function that you have access to and are overriding is from the QueryRetrieveScu object, not the internal listening service.
Why the QueryRetreiveScu is accepting a transfer syntax it does not support:
Currently the QueryRetrieveScu's listener service is not able to handle filtering out unsupported transfer syntax. The code required to handle these cases would bloat the object and fall outside the design constraints of object itself.
A typical Workstation has both an SCU component and a listener service component.
To handle the type of communication you're faced with, you can use the QueryRetrieveScu to query, and then move, but when specifying where to move the DICOM file, you should specify a listener service that is robust enough to handle filtering out unsupported transfer syntax.
Mohamed Abedallah
Developer Support Engineer
LEAD Technologies, Inc.