Extended Negotiation

Extended negotiation allows "options" to be negotiated between 2 Application_Entities as part of Negotiation. In order for the option to be available for use, it must be both proposed by the initiator and agreed by the acceptor.

The uses for extended negotiation are currently:

  • Relational_Queries
  • Specification of storage level (how accurately the data is retained) for C-STORE

In DicomObjects, these values are used as follows:

For an SCU:

  • Set DicomGlobal.EnableExtendedNegotiation to true
  • Create and set up a DicomConnection/DicomAssociation object
  • Add the appropriate Presentation Context
  • Set the ExtendedNegotiationValues property of that context to a byte array containing the values required
  • Use SetDestination/Open as normal
  • Check the ExtendedNegotiationValues property of the context to see if it has been accepted by the SCP (and if not, do not expect to use the facility!)

For an SCP:

  • Set DicomGlobal.EnableExtendedNegotiation to true
  • In the AssociationRequest event, check the value of the ExtendedNegotiationValues property of the requested contexts, and leave at 1 if you accept, or set to 0 if you do not.

Note that for convenience in DicomObjects, these values are attached per DicomContext but in fact are negotiated at a SOP_Class level, so values set/accessed for one DicomContext are in fact shared between all DicomContext objects in the same association sharing the same SOP Class/Abstract Context.

Relevance: