In the vast majority of Associations, the Association is initiated by the SCU with the SCP responding, but DICOM does allow Reverse Role Negotiation whereby the initiator can request to be regarded as the SCP. In practise, this is only used as part of the Storage Commitment service.

An oddity of reverse role negotiation (like Extended Negotiation) is that it is agreed per SOP Class not Per Presentation Context, so an agreement to reverse the roles applies to all presentation contexts using that SOP Class.

Use in DicomObjects

As an SCU

This is only possible when using a DicomConnection(COM version) or DicomAssociation(.NET version) and is controlled by changing the RequesterSCURole COM/.NET & RequesterSCPRole COM/.NET properties. By Default, RequesterSCURole is true and RequesterSCPRole is false. Note that whilst these appear to be properties of a presentation context COM/.NET, they are in fact shared by all presentation contexts with the same SOP Class. Following negotiation (SetDestination in COM or Open in .NET) these properties contain the values which were accepted by the accepting application.

As an SCP

Check the values of the RequesterSCURole COM/.NET & RequesterSCPRole COM/.NET properties of the offered presentation contexts, and if necessary change to false to indicate your capabilities.

Allowed Values

One or other of RequesterSCURole or RequesterSCPRole must be true for any usable presentation context, and of course the acceptor may only accept what is offered. In addition, it would not generally be advisable to have both accepted, so that only really leaves 3 possibilities:

  • Normal
  • Initiator offers SCU=True and SCP=False

  • Acceptor must either leave untouched or refuse the context/SOP class

  • Result is “Normal” mode with initiator = SCU

  • Reverse Role

    • Initiator offers SCU=False and SCP=True
    • Acceptor must either leave untouched or refuse the context/SOP class
    • Result is “Reverse” mode with initiator=SCP
  • Acceptor Choice

    • Initiator offers SCU=True and SCP=True
    • Acceptor should set one or other to false
    • Result depends on choice made by acceptor