code: def id_lookup(paper_id, idtype=None):
      
      if idtype is not None and idtype not in ('pmid', 'pmcid', 'doi'):
          raise ValueError("Invalid idtype %s; must be 'pmid', 'pmcid', "
                           "or 'doi'." % idtype)
      if paper_id.upper().startswith('PMC'):
          idtype = 'pmcid'
      # Strip off any prefix
      if paper_id.upper().startswith('PMID'):
          paper_id = paper_id[4:]
      elif paper_id.upper().startswith('DOI'):
          paper_id = paper_id[3:]
      data = {'ids': paper_id}
      if idtype is not None:
          data['idtype'] = idtype
      try:
          tree = pubmed_client.send_request(pmid_convert_url, data)
      except Exception as e:
          logger.error('Error looking up PMID in PMC: %s' % e)
          return {}
      if tree is None:
          return {}
      record = tree.find('record')
      if record is None:
          return {}
      doi = record.attrib.get('doi')
      pmid = record.attrib.get('pmid')
      pmcid = record.attrib.get('pmcid')
      ids = {'doi': doi,
             'pmid': pmid,
             'pmcid': pmcid}
      return ids
docs: This function takes a Pubmed ID, Pubmed Central ID, or DOI
      and use the Pubmed ID mapping
      service and looks up all other IDs from one
      of these. The IDs are returned in a dictionary.