code: def _validate_isvalid_orcid(self, isvalid_orcid, field, value):
          
          if isvalid_orcid and 'ORCID' in value:
              try:
                  res = search_orcid(value['ORCID'])
              except ConnectionError:
                  warn('network not available, ORCID not validated.')
                  return
              except HTTPError:
                  self._error(field, 'ORCID incorrect or invalid for ' +
                              value['name']
                              )
                  return
  
              family_name = res['name']['family-name']['value']
              given_name = res['name']['given-names']['value']
              if not compare_name(given_name, family_name, value['name']):
                  self._error(field, 'Name and ORCID do not match. Name supplied: ' +
                              value['name'] + '. Name associated with ORCID: ' +
                              ' '.join([given_name, family_name])
                              )
docs: Checks for valid ORCID if given.
  
          Args:
              isvalid_orcid (`bool`): flag from schema indicating ORCID to be checked.
              field (`str`): 'author'
              value (`dict`): dictionary of author metadata.
  
          The rule's arguments are validated against this schema:
              {'isvalid_orcid': {'type': 'bool'}, 'field': {'type': 'str'},
               'value': {'type': 'dict'}}