From 7a74aa2cf8ef80cc15cd0623b93a6ee406d74b40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr>
Date: Tue, 14 Mar 2017 21:30:54 +0100
Subject: [PATCH] add patent info web service, and harden a bit pubmed info
 parsing

---
 ippisite/ippidb/ws.py | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py
index cc4807da..2cf9ecb8 100644
--- a/ippisite/ippidb/ws.py
+++ b/ippisite/ippidb/ws.py
@@ -1,4 +1,5 @@
 from bioservices.eutils import EUtils
+import requests
 
 def get_pubmed_info(pmid):
     eu = EUtils()
@@ -8,8 +9,26 @@ def get_pubmed_info(pmid):
     authors_list = [a['LastName']+ ' ' + a['Initials'] for a in article['AuthorList']['Author']]
     authors = ', '.join(authors_list)
     journal_name = article['Journal']['Title']
-    biblio_year = article['Journal']['JournalIssue']['PubDate']['Year']
+    biblio_date = article['Journal']['JournalIssue']['PubDate']
+    if 'Year' in biblio_date:
+        biblio_year = biblio_date['Year']
+    else:
+        biblio_year = biblio_date['MedlineDate'][0:3]
     return {'title':title,
             'journal_name':journal_name,
             'biblio_year':biblio_year,
             'authors_list': authors}
+
+def get_epo_info(patent_number):
+    resp = requests.get('http://ops.epo.org/3.1/rest-services/published-data/publication/docdb/{}/biblio.json'.format(patent_number))
+    data = resp.json()
+    exchange_doc = data['ops:world-patent-data']['exchange-documents']['exchange-document']
+    if isinstance(exchange_doc, list):
+        exchange_doc = exchange_doc[0]
+    title = [el['$'] for el in exchange_doc['bibliographic-data']['invention-title'] if el['@lang']=='en']
+    authors = [i['inventor-name']['name']['$'] for i in exchange_doc['bibliographic-data']['parties']['inventors']['inventor'] if i['@data-format']=='original']
+    biblio_year = [el['date']['$'][:4] for el in exchange_doc['bibliographic-data']['publication-reference']['document-id'] if el['@document-id-type']=='epodoc'][0]
+    return {'title': title,
+            'journal_name': None,
+            'biblio_year': biblio_year,
+            'authors_list': authors}
-- 
GitLab