pynetdicom._handlers.doc_handle_move#
- pynetdicom._handlers.doc_handle_move(event: Event, *args: Sequence[Any]) Iterator[tuple[str, int] | tuple[str, int, dict[str, Any]] | int | Dataset | None][source]#
Documentation for handlers bound to
evt.EVT_C_MOVE.User implementation of this event handler is required if one or more services that use C-MOVE are to be supported. If a handler is not implemented and bound to
evt.EVT_C_MOVEthen the C-MOVE request will be responded to using a Status value of0xC511- Failure.The first yield should be the
(addr, port)of the move destination, however you may instead yield(addr, port, kwargs), wherekwargsis adictcontaining keyword parameters that will be passed toAE.associate(). This allows you to customise the presentation contexts requested by the association with the Storage SCP via the contexts keyword parameter.The second yield should be the number of required C-STORE sub-operations as an
int, and the remaining yields the(status, dataset)pairs.Matching SOP Instances will be sent to the move destination Storage SCP over a new association. If the move destination is unknown then the SCP will send a response with a ‘Failure’ status of
0xA801‘Move Destination Unknown’.Event
evt.EVT_C_MOVESupported Service Classes
Status
- Success
0x0000- Sub-operations complete, no failures- Pending
0xFF00- Sub-operations are continuing- Cancel
0xFE00- Sub-operations terminated due to Cancel indication- Failure
0x0122- SOP class not supported0x0124- Not authorised0x0210- Duplicate invocation0x0211- Unrecognised operation0x0212- Mistyped argument0xA701- Out of resources: unable to calculate number of matches0xA702- Out of resources: unable to perform sub-operations0xA801- Move destination unknown0xA900- Identifier does not match SOP class0xAA00- None of the frames requested were found in the SOP instance0xAA01- Unable to create new object for this SOP class0xAA02- Unable to extract frames0xAA03- Time-based request received for a non-time-based original SOP Instance0xAA04- Invalid request0xC000to0xCFFF- Unable to process
- Parameters:
event (events.Event) –
The event representing a service class receiving a C-MOVE request message.
Eventattributes are:assoc: theAssociationthat is running the service that received the C-MOVE request.context: the presentation context the request was sent under as aPresentationContextTuple.event: the event that occurred asInterventionEvent.request: the receivedC-MOVE requesttimestamp: the date and time that the C-MOVE request was processed by the service asdatetime.datetime.
Eventproperties are:identifier: the decodedDatasetcontained within the C-MOVE request’s Identifier parameter. Because pydicom uses a deferred read when decoding data, if the decode fails the returnedDatasetwill only raise an exception at the time of use.is_cancelled: returnsTrueif a C-CANCEL request has been received,Falseotherwise. If a C-CANCEL is received then the handler should yield a(0xFE00, None)status/dataset pair andreturn.message_id: the C-MOVE request’s Message ID asint.move_destination: the C-MOVE request’s Move Destination value asstr.
args – If the handler was bound to the event using
bind(event, handler, args)or by passingevt_handlers=[(event, handler, args), ...], where args is alistthen there will be one or more optional extra parameters matching the contents of args.
- Yields:
addr, port or addr, port, kwargs (str, int, (dict) or None, None, (None)) – The first yield should be the (TCP/IP address, port number) of the destination AE (if known) or
(None, None)if unknown. If(None, None)is yielded then the SCP will send a C-MOVE response with a ‘Failure’ Status of0xA801(move destination unknown), in which case nothing more needs to be yielded. You may instead yield(addr, port, kwargs), wherekwargsis adictcontaining keyword parameters to pass toAE.associate()when the new association with the Storage SCP is initiated.int – The second yield should be the number of C-STORE sub-operations required to complete the C-MOVE operation. In other words, this is the number of matching SOP Instances to be sent to the peer.
status (pydicom.dataset.Dataset or int) – The status returned to the peer AE in the C-MOVE response. Must be a valid C-MOVE status value for the applicable Service Class as either an
intor aDatasetcontaining (at a minimum) a (0000,0900) Status element. If returning aDatasetthen it may also contain optional elements related to the Status (as in DICOM Standard, Part 7, Annex C).dataset (pydicom.dataset.Dataset or None) – If the status is ‘Pending’ then yield the
Datasetto send to the peer via a C-STORE sub-operation over a new association.If the status is ‘Failed’, ‘Warning’ or ‘Cancel’ then yield a
Datasetwith a (0008,0058) Failed SOP Instance UID List element containing the list of the C-STORE sub-operation SOP Instance UIDs for which the C-MOVE operation has failed.If the status is ‘Success’ then yield
None, although yielding a final ‘Success’ status is not required and will be ignored if necessary.
See also
send_c_move(),C_MOVE,QueryRetrieveServiceClass,HangingProtocolQueryRetrieveServiceClass,DefinedProcedureProtocolQueryRetrieveServiceClass,ColorPaletteQueryRetrieveServiceClass,ImplantTemplateQueryRetrieveServiceClass,ProtocolApprovalQueryRetrieveServiceClassReferences