| |
| import os, httpx |
| from functools import lru_cache |
|
|
| UMLS_API_KEY = os.getenv("UMLS_KEY") |
| REL_URL = "https://uts-ws.nlm.nih.gov/rest/content/current/CUI/{cui}/relations" |
|
|
| async def _get_ticket() -> str: |
| from mcp.umls import _get_ticket as fn |
| return await fn() |
|
|
| @lru_cache(maxsize=512) |
| async def fetch_relations(cui: str) -> list[dict]: |
| ticket = await _get_ticket() |
| params = {"ticket": ticket, "pageSize": 50} |
| async with httpx.AsyncClient(timeout=10) as c: |
| r = await c.get(REL_URL.format(cui=cui), params=params) |
| r.raise_for_status() |
| rels = r.json().get("result", {}).get("relation", []) |
| return [ |
| {"label": rel["relationLabel"], |
| "cui2": rel["relatedId"], |
| "name2": rel["relatedLabel"]} |
| for rel in rels |
| ] |
|
|