def _parse_orcid_work(self, work):
        if not work:
            return {}

        biblio = {}
        # logger.debug(u"%20s parsing orcid work" % (self.provider_name))

        try:
            if work["work-citation"]["work-citation-type"].lower()=="bibtex":
                biblio = self.bibtex_parser.parse(work["work-citation"]["citation"])[0]
        except (KeyError, TypeError, IndexError):
            # logger.debug(u"%s missing work citation type" % (self.provider_name))
            pass

        try:
            biblio["year"] = work["publication-date"]["year"]["value"]
            biblio["year"] = re.sub("\D", "", biblio["year"])           
        except (KeyError, TypeError, IndexError):
            biblio["year"]  = ""

        try:
            biblio["title"] = work["work-title"]["title"]["value"]
        except (KeyError, TypeError, IndexError):
            biblio["title"]  = ""

        try:
            biblio["journal"] = work["work-title"]["subtitle"]["value"]
        except (__HOLE__, TypeError, IndexError):
            biblio["journal"]  = ""

        try:
            biblio["url"] = work["url"]["value"]
        except (KeyError, TypeError, IndexError):
            if "url" in biblio:
                del biblio["genre"]

        if not "authors" in biblio:
            biblio["authors"]  = ""

        try:
            if work["work-external-identifiers"]["work-external-identifier"][0]['work-external-identifier-type'] == "ISBN":
                biblio["isbn"] = work["work-external-identifiers"]["work-external-identifier"][0]["work-external-identifier-id"]['value']
        except (KeyError, TypeError, IndexError):
            pass

        try:
            biblio["genre"] = work["work-type"].lower().replace("_", " ")
            if biblio["genre"] == "data set":
                biblio["genre"] = "dataset"
            elif biblio["genre"] == "undefined":
                del biblio["genre"]
        except (KeyError, TypeError, IndexError):
            pass

        try:
            biblio["full_citation"] = work["work-citation"]["citation"]
            biblio["full_citation_type"] = work["work-citation"]["work-citation-type"].lower()
        except (KeyError, TypeError, IndexError):
            pass

        return biblio
dataset/ETHPy150Open Impactstory/total-impact-webapp/totalimpact/providers/orcid.py/Orcid._parse_orcid_work