docs: def to_dict(self):
          '''A representation of that publication data that matches the schema we use in our databases.'''
          if not self.record_type == 'journal':
              # todo: it may be worthwhile creating subclasses for each entry type (journal, conference, etc.) with a common
              # API e.g. to_json which creates output appropriately
              raise Exception('This function has only been tested on journal entries at present.')
  
          author_list = []
          authors = self.article.get('authors', [])
          for x in range(len(authors)):
              author = authors[x]
              first_name = None
              middle_names = None
              if author.get('given_name'):
                  names = author['given_name'].split()
                  first_name = names[0]
                  middle_names = (' '.join(names[1:])) or None
              author_list.append(
                  dict(
                      AuthorOrder = x + 1,
                      FirstName = first_name,
                      MiddleNames = middle_names,
                      Surname = author.get('surname')
                  )
              )
  
          return dict(
              Title = self.article.get('title'),
              PublicationName = self.issue.get('full_title'),
              Volume = self.issue.get('volume'),
              Issue = self.issue.get('issue'),
              StartPage = self.article.get('first_page'),
              EndPage = self.article.get('last_page'),
              PublicationYear = self.get_year(),
              PublicationDate = self.get_earliest_date(),
              RIS = None,
              DOI = self.doi,
              PubMedID = self.get_pubmed_id(),
              URL = 'http://dx.doi.org/%s' % self.doi,
              ISSN = None, # eight-digit number
              authors = author_list,
              #
              RecordType = DOI.record_types.get(self.record_type)
          )