mgbam commited on
Commit
1c6cb4b
·
verified ·
1 Parent(s): 9bee6a4

Update genesis/api_clients/umls_api.py

Browse files
Files changed (1) hide show
  1. genesis/api_clients/umls_api.py +30 -0
genesis/api_clients/umls_api.py CHANGED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # genesis/api_clients/umls_api.py
2
+ import requests
3
+ import os
4
+
5
+ UMLS_API_KEY = os.getenv("UMLS_API_KEY")
6
+ AUTH_ENDPOINT = "https://utslogin.nlm.nih.gov/cas/v1/api-key"
7
+
8
+ def get_tgt():
9
+ """Get Ticket Granting Ticket for UMLS API."""
10
+ data = {"apikey": UMLS_API_KEY}
11
+ r = requests.post(AUTH_ENDPOINT, data=data)
12
+ r.raise_for_status()
13
+ # Extract TGT URL
14
+ return r.headers.get("location") or r.text.split('action="')[1].split('"')[0]
15
+
16
+ def get_service_ticket(tgt):
17
+ """Get single-use Service Ticket."""
18
+ r = requests.post(tgt, data={"service": "http://umlsks.nlm.nih.gov"})
19
+ r.raise_for_status()
20
+ return r.text
21
+
22
+ def search_umls(query: str):
23
+ """Search UMLS for terms."""
24
+ tgt = get_tgt()
25
+ ticket = get_service_ticket(tgt)
26
+ url = f"https://uts-ws.nlm.nih.gov/rest/search/current"
27
+ params = {"string": query, "ticket": ticket}
28
+ r = requests.get(url, params=params)
29
+ r.raise_for_status()
30
+ return r.json()