CC.2.3 Subscribe/Unsubscribe to Receive UPS Event Reports (N-ACTION)

This operation allows an SCU to subscribe with an SCP in order to receive N-EVENT-REPORTS of subsequent changes to the state of a UPS instance, or to unsubscribe in order to no longer receive such N-EVENT-REPORTs. This operation shall be invoked by the SCU through the DIMSE N-ACTION Service.

CC.2.3.1 Action Information

DICOM AEs that claim conformance to the UPS Watch SOP Class as an SCU and/or an SCP shall support the Action Types and Action Information as specified in Table CC.2.3-1.

Table CC.2.3-1

Subscribe/Unsubscribe to Receive UPS Event Reports – ACTION INFORMATION

Action Type Name Action Type ID Attribute Tag Requirement Type SCU/SCP
Subscribe to Receive UPS Event Reports 3 Receiving AE (0074,1234) 1/1
Deletion Lock (0074,1230) 1/1
Unsubscribe from Receiving UPS Event Reports 4 Receiving AE (0074,1234) 1/1
Suspend Global Subscription 5 Receiving AE (0074,1234) 1/1

Each AE may be in one of three UPS Subscription States for each existing UPS Instance: Not Subscribed, Subscribed with Deletion Lock, or Subscribed w/o Deletion Lock. The UPS Subscription State determines whether N-EVENT-REPORTs relating to a UPS Instance will be sent to the AE.

Each AE may also be in one of three Global Subscription States for a given SCP: No Global Subscription, Globally Subscribed with Deletion Lock, Globally Subscribed w/o Deletion Lock. The Global Subscription State mainly determines the initial UPS Subscription State for an AE and new UPS Instances created by the SCP. Changes to the Global Subscription State can also change the UPS Subscription State for existing UPS Instances as described in Table CC.2.3-2.

The three Subscription actions in Table CC.2.3-1 are used to manage the UPS Subscription State and Global Subscription State of an AE.

Table CC.2.3-2 describes the UPS Subscription State transitions of an AE for a given UPS Instance. Each row in the table defines what should happen in response to a Subscription Action, or a UPS creation event, given the initial state. The table also shows when an initial event message should be sent to the AE describing the “Current UPS State”.

Note: In general, instance specific instructions take precedence over global instructions. The exception is the Unsubscribe Globally instruction, which removes all subscriptions, global and specific. To simply stop globally subscribing to new instances without removing specific subscriptions, use the Suspend Global Subscription message.

Most actions affect only the UPS Subscription State of a single UPS Instance. However, Global actions potentially affect all existing UPS Instances managed by the SCP and this is indicated in the following table by “ All ”. For example, in the “AE Subscribes Globally with Lock” row, the content of the “Not Subscribed” cell means that in addition to setting the Global Subscription State for the AE to “Global Subscription with Lock”, all existing UPS Instances whose UPS Subscription State for the Receiving AE is “Not Subscribed” will each have their UPS Subscription State changed to “Subscribed with Lock” and an event will be sent to the Receiving AE for each Instance.

Table CC.2.3-2

UPS SUBSCRIPTION STATE TRANSITION TABLE

States (for a specific UPS and AE)
Events null Not Subscribed Subscribed with Lock Subscribed w/o Lock
A UPS is Created when the AE Global Subscription State is ”No Global Subscription” Go to Not Subscribed N/A N/A N/A
A UPS is Created when the AE Global Subscription State is ”Global Subscription with Lock” Go to Subscribed with Lock; Send initial event N/A N/A N/A
A UPS is Created when the AE Global Subscription State is ”Global Subscription w/o Lock” Go to Subscribed w/o Lock; Send initial event N/A N/A N/A
AE Subscribes Globally with Lock N/A AE Global State is now “Global Sub. with Lock”; All Go to Subscribed with Lock; All Send initial event AE Global State is now “Global Sub. with Lock”; No UPS state change; AE Global State is now “Global Sub. with Lock”; No UPS state change;
AE Subscribes Globally w/o Lock N/A AE Global State is now “Global Sub. w/o Lock”; All Go to Subscribed w/o Lock; AE Global State is now “Global Sub. w/o Lock”; No UPS state change; AE Global State is now “Global Sub. w/o Lock”; No UPS state change;
AE Subscribes to Specific UPS with Lock N/A Go to Subscribed with Lock; Send initial event No UPS state change; Send initial event Go to Subscribed with Lock; Send initial event
AE Subscribes to Specific UPS without Lock N/A Go to Subscribed w/o Lock; Send initial event Go to Subscribed w/o Lock; Send initial event No UPS state change; Send initial event
AE Unsubscribes from Specific UPS N/A No UPS state change Go to Not Subscribed Go to Not Subscribed
AE Unsubscribes Globally N/A AE Global State is now “No Global Subscription”; No UPS state change; AE Global State is now “No Global Subscription”; All Go to Not Subscribed; AE Global State is now “No Global Subscription”; All Go to Not Subscribed;
AE Suspends Global Subscription N/A AE Global State is now “No Global Subscription”; No UPS state change; AE Global State is now “No Global Subscription”; No UPS state change; AE Global State is now “No Global Subscription”; No UPS state change;

See PS 3.17 GGG.1 Reliable Watchers and Deletion Locks for further discussion of deletion locks.

CC.2.3.2 Service Class User Behavior

The SCU subscribing to track the progress and results of the scheduled procedure step may be the system that created the UPS as an SCU of the UPS Push SOP Class, or it may be some other interested observer.

An SCU shall use the N-ACTION primitive to request the SCP to subscribe an AE (usually the requesting SCU) to receive event reports relating to UPS instances managed by the SCP. Since all UPSs are created as instances of the UPS Push SOP Class, the Requested SOP Class UID (0000,0003) in the N-ACTION request shall be the UID of the UPS Push SOP Class. See CC.3.1 for further details.

An SCU shall also use the N-ACTION primitive to request the SCP to unsubscribe an AE to stop receiving event reports relating to UPS instances managed by the SCP. Action Information is specified in Table CC.2.3-1. The SCU shall always provide the AE-TITLE which is to receive (or stop receiving) the N-EVENT-REPORTs.

To subscribe for events relating to a single specific UPS instance managed by the SCP, the SCU shall use Action Type ID 3 (Subscribe to Receive UPS Event Reports) and provide the SOP Instance UID of the specific UPS instance in the N-ACTION primitive request. The SCU shall indicate a need for the UPS instance to persist after its state has changed to COMPLETED or CANCELED by setting the value of the Deletion Lock to TRUE. Otherwise the SCU shall set the value of the Deletion Lock to FALSE.

To unsubscribe for events relating to a single specific UPS instance managed by the SCP, the SCU shall use Action Type ID 4 (Unsubscribe from Receiving UPS Event Reports) and provide the SOP Instance UID of the specific UPS instance in the N-ACTION primitive request.

To subscribe for events relating to all current and subsequently created UPS instances managed by the SCP, the SCU shall use Action Type ID 3 (Subscribe to Receive UPS Event Reports) and provide the well-known UID 1.2.840.10008.5.1.4.34.5 in the N-ACTION primitive request. The SCU shall indicate a need for UPS instances to persist after their states have changed to COMPLETED or CANCELED by setting the value of the Deletion Lock to TRUE. Otherwise the SCU shall set the value of the Deletion Lock to FALSE.

Note: This “global subscription” is useful for SCUs that wish to monitor all activities without having to issue regular C-FINDs to identify new UPS instances.

To unsubscribe for events relating to all current UPS instances managed by the SCP and also stop being subscribed to subsequently created UPS instances, the SCU shall use Action Type ID 4 (Unsubscribe from Receiving UPS Event Reports) and provide the well-known UID 1.2.840.10008.5.1.4.34.5 in the N-ACTION primitive request.

Note: This “global unsubscription” is useful for SCUs that wish to stop monitoring all activities and release all deletion locks (if any) placed for this subscriber.

To just stop being subscribed to subsequently created UPS instances, but still continue to receive events for currently subscribed instances managed by the SCP, the SCU shall use Action Type ID 5 (Suspend Global Subscription) and provide the well-known UID 1.2.840.10008.5.1.4.34.5 in the N-ACTION primitive request.

For each UPS instance on which the SCU has placed a deletion lock, either explicitly on the specific instance or implicitly via a global subscription with lock, the SCU shall remove the deletion lock once any needed final state information for the instance has been obtained. The deletion lock may be removed either by unsubscribing or by subscribing with the value of the Deletion Lock set to FALSE.

Note: The SCP will retain COMPLETED or CANCELED UPS Instances until all deletion locks have been released. Failure by SCUs to release the deletion lock may cause problems for the SCP. SCU’s which do not have a significant need for the final state information, or who cannot dependably remove deletion locks should not use deletion locks.

The successful N-ACTION Response Status Code indicates that the SCP has received the N-ACTION request and the Subscription State for the AE has been successfully modified.

Note: When subscribing to a specific instance, the SCU can also expect to receive an initial N-EVENT-REPORT containing the current state of the UPS instance. When subscribing globally with the Deletion Lock set to TRUE, the SCU can expect to receive initial N-EVENT-REPORTs for every instance currently managed by the SCP. Initial N-EVENT-REPORTs for newly created instances, received as a result of a global subscription, will appear as transitions to the SCHEDULED state.

A warning N-ACTION Response Status Code of “Deletion Lock not granted”, indicates that the AE subscription requested by the SCU was successful, but the deletion lock has not been set.

A failure N-ACTION Response Status Code indicates that the subscription state change requested will not be processed and no subscription states have been changed. The action taken by the SCU upon receiving this status is beyond the scope of this Standard.

At any time after receipt of the N-ACTION-Response, the SCU may release the association on which it sent the N-ACTION-Request.

CC.2.3.3 Service Class Provider Behavior

Upon receipt of the N-ACTION request, the SCP shall attempt to update the Global Subscription State and/or UPS Subscription State of the specified AE with respect to the specified SOP Instance UID as described in Table CC.2.3-2 and then return, via the N-ACTION response primitive, the appropriate N-ACTION Response Status Code.

A success status conveys that the Global Subscription State and/or UPS Subscription State for the AE specified in Receiving AE (0074,1234) was successfully modified by the SCP. The AE-TITLE in Receiving AE (0074,1234) may be different than the AE-TITLE used by the SCU for the association negotiation. The SCP shall use the AE-TITLE specified in Receiving AE (0074,1234). This allows systems to subscribe other systems they know would be interested in events for a certain UPS.

For all UPS instances managed by the SCP, the SCP shall send N-EVENT-REPORTS (as described in CC.2.4.3) to AEs that have a UPS Subscription State of “Subscribed with Lock” or “Subscribed w/o Lock”.

Upon successfully processing a subscription action, the SCP shall send initial UPS State Report N-EVENT-REPORTs, as indicated in Table CC.2.3-2, providing the current status of the UPS Instance to the Receiving AE.

The SCP may also refuse both specific and global Subscription requests by returning a failure N-ACTION Response Status Code for “Refused: Not Authorized” if the refusal depends on permissions related to the tasks or the requestor, or “Refused: SCP does not support Event Reports” if the SCP does not support sending the events. The SCP must document in its conformance statement if it might refuse Subscription requests.

The SCP may remove existing Deletion Locks by changing the UPS Subscription State for the AE from “Subscribed with Lock” to “Subscribed w/o Lock” and/or by changing the Global Subscription State for an AE from “Global Subscription with Lock” to “Global Subscription w/o Lock”. This is intended to allow the SCP to deal with SCU malfunctions. The SCP must document in its conformance statement if it might remove a Deletion Lock.

The SCP may also refuse the Deletion Lock portion of a specific or global Subscription request. For example, a request to modify the UPS Subscription State for the AE to “Subscribed with Lock” would instead result in a UPS Subscription State of “Subscribed w/o Lock” and a Warning status (see Table CC.2.3-3) returned to the requesting SCU. This is intended to deal with Security and related policy restrictions. The SCP must document in its conformance statement if it might refuse a Deletion Lock.

Bi-directional Authentication of machines/users/applications is possible at association time (see PS 3.7 and PS 3.15). PS 3.7 provides a “Refused: Not Authorized” error code. Further requiring or documenting authentication and/or authorization features from the SCU or SCP is beyond the scope of this SOP Class.

CC.2.3.4 Status Codes

The status values which are specific for this DIMSE operation are defined in Table CC.2.3-3.

Table CC.2.3-3

STATUS VALUES

Status Meaning Code
Success The requested change of subscription state was performed 0000
Warning Deletion Lock not granted. B301
Failure Specified SOP Instance UID does not exist or is not a UPS Instance managed by this SCP C307
Receiving AE-TITLE is Unknown to this SCP C308
Refused: Specified action not appropriate for specified instance C314
Refused: SCP does not support Event Reports C315