.. _v1.4.0:

1.4.0
=====


Fixes
.....

* Fixed Query Retrieve service class not responded with ``0x0000`` (Success)
  if no matches were yielded by the C-FIND request handler.
* Fixed association being aborted due to failure to decode a rejected
  presentation context when the transfer syntax value is empty (:issue:`342`)
* Checkpoint added to the reactor in ``Association`` to prevent possible
  race conditions:

  * When acting as the Acceptor and calling one of the ``Association.send_*()``
    methods.
  * During an A-RELEASE collision.


Enhancements
............

* Added ``Event.move_destination`` (for ``evt.EVT_C_MOVE``),
  ``Event.action_type`` (for ``evt.EVT_N_ACTION``), ``Event.event_type`` (for
  ``evt.EVT_N_EVENT_REPORT``) and ``Event.event`` properties (:issue:`353`)
* Added ``meta_uid`` keyword parameters to the ``Association.send_n_*()``
  methods to allow the use of Meta SOP Classes (such as those used in the
  Print Management service class)
* Added *Basic Grayscale Print Management Meta SOP Class* and *Basic Color
  Print Management Meta SOP Class* to ``sop_class``.
* Added support for the following service classes:

  * Protocol Approval Query Retrieve (:issue:`327`)
  * Application Event Logging
  * Instance Availability Notification
  * Media Creation Management
  * Print Management
  * Unified Procedure Step
  * RT Machine Verification
  * Storage Commitment
* Added handling of non-conformant Presentation Context AC (reject) PDUs which
  contain no Transfer Syntax Sub-item (:issue:`361`)
* ``ae_title`` and ``contexts`` keyword arguments added to
  ``AE.start_server()``
* Invalid (0000,1030) *Move Originator Application Entity Title* values
  received in C-STORE service requests are now logged and ignored rather than
  raising an exception and aborting the association.
* Improved handling of DIMSE service messages with empty element values.
* Added handling for DIMSE service requests when acting as the association
  Requestor


Changes
.......

* The following have been removed as per planned deprecation:

  * ``AE.on_c_store()``, ``AE.on_c_echo()``, ``AE.on_c_find()``,
    ``AE.on_c_get()``, ``AE.on_c_move()``, ``AE.on_n_get()``,
    ``AE.on_async_ops_window()``, ``AE.on_sop_class_common_extended()``,
    ``AE.on_sop_class_extended()``, ``AE.on_user_identity()``,
    ``AE.on_association_accepted()``, ``AE.on_association_rejected()``,
    ``AE.on_association_released()``, ``AE.on_association_aborted()``,
  * ``_config.DECODE_STORE_DATASETS``
  * ``DIMSEServiceProvider.on_send_dimse_message()``,
    ``DIMSEServiceProvider.on_receive_dimse_message()``
* ``Association.send_c_find()``, ``Association.send_c_get()`` and
  ``Association.send_c_move()`` now require a `query_model` parameter that
  is used to set the *Affected SOP Class UID* value. The parameter should
  pass a pydicom UID or UID string. Passing a key that corresponds to a given
  UID is deprecated and will be removed in v1.5. (:issue:`348`)
* ``Event.name`` and ``Event.description`` properties removed, use
  ``Event.event.name`` and ``Event.event.description`` instead.
