def doc_handle_userid(event):
    """Documentation for handlers bound to ``evt.EVT_USER_ID``.

    User implementation of this handler is required if User Identity
    Negotiation is to be supported by the association. If no handler is
    implemented and bound to ``evt.EVT_USER_ID``
    then the association will be accepted (provided there's no other reason
    to reject it) and no User Identity Negotiation response will be sent in
    reply even if one is requested.

    **Event**

    ``evt.EVT_USER_ID``

    Parameters
    ----------
    event : events.Event
        The event representing an association request being received which
        contains a User Identity Negotiation item. ``Event`` attributes are:

        * ``assoc`` : the
          :py:class:`association <pynetdicom.association.Association>`
          that is running the service that received the user identity
          negotiation request.
        * ``event`` : the event that occurred as ``namedtuple``.
        * ``primary_field`` : the *Primary Field* value (as ``bytes``),
          contains the username, the encoded Kerberos ticket or the JSON web
          token, depending on the value of ``user_id_type``.
        * ``secondary_field`` : the *Secondary Field* value. Will be ``None``
          unless the ``user_id_type`` is ``2`` in which case it will be
          ``bytes``.
        * ``timestamp`` : the
          `date and time <https://docs.python.org/3/library/datetime.html#datetime-objects>`_
          that the negotiation request was processed by the ACSE.
        * ``user_id_type`` : the *User Identity Type* value (as an ``int``),
          which indicates the form of user identity being provided:

          * 1 - Username as a UTF-8 string
          * 2 - Username as a UTF-8 string and passcode
          * 3 - Kerberos Service ticket
          * 4 - SAML Assertion
          * 5 - JSON Web Token

    Returns
    -------
    is_verified : bool
        Return True if the user identity has been confirmed and you wish
        to proceed with association establishment, False otherwise.
    response : bytes or None
        If ``user_id_type`` is:

        * 1 or 2, then return ``None``
        * 3 then return the Kerberos Server ticket as ``bytes``
        * 4 then return the SAML response as ``bytes``
        * 5 then return the JSON web token as ``bytes``

    References
    ----------

    * DICOM Standard Part 7, `Annex D.3.3.7 <http://dicom.nema.org/medical/dicom/current/output/chtml/part07/sect_D.3.3.7.html>`_
    """
    pass
