[ blog · tutorial ]11 min read

ClinicalTrials.gov v2 + openFDA + ChEMBL को एक लाइसेंस-क्लीन ड्रग इंटेलिजेंस endpoint में जोड़ना

Sarah Choyप्रकाशित 3 मई 202611 मिनट पढ़ें
ClinicalTrials.gov v2 + openFDA + ChEMBL को एक लाइसेंस-क्लीन ड्रग इंटेलिजेंस endpoint में जोड़ना

फार्मा R&D, मेडिकल-AI स्टार्टअप, और फार्माकोविजिलेंस टीमें सभी एक ही चीज़ चाहती हैं: एक endpoint जो trials, लेबल, प्रतिकूल घटनाओं और बायोएक्टिविटी को लाइसेंस-क्लीन तरीके से खींच ले। यहाँ काम करने वाला architecture है, उन जालों सहित जिन्होंने production में टीमों को चौंका दिया है।

TL;DR

  • ClinicalTrials.gov v2 (REST + JSON) ने 2024 में पुराने v1 की जगह ले ली — schema अधिक साफ है, लेकिन pagination, वैकल्पिक फ़ील्ड, और ऐतिहासिक खिंचाव नए integrators को चौंका देते हैं।
  • openFDA दवा लेबल (SPL), FAERS की प्रतिकूल-घटना रिपोर्ट, और रिकॉल डेटा को मुफ़्त में कवर करता है; बिना प्रमाणीकरण के 240 req/min तक सीमित, key के साथ 120k/दिन।
  • ChEMBL आपको बायोएक्टिविटी (IC50, Ki, Kd, EC50), targets, और assays देता है — वह संरचनात्मक / यांत्रिकीय आयाम जो अन्य databases में नहीं होता।
  • DrugBank का commercial लाइसेंस ही जाल है: academic उपयोग की अनुमति है; कोई भी उत्पाद, यहाँ तक कि छोटा SaaS भी, commercial लाइसेंसिंग शर्तों के अंतर्गत आता है जिन्हें अधिकांश builders तब तक नहीं पढ़ते जब तक उन्हें नोटिस न मिल जाए।
  • API Pick Clinical Search, ClinicalTrials, openFDA, ChEMBL, और DrugBank फार्माकोलॉजी को एक ही POST endpoint में लपेट देता है — प्रति कॉल 30 क्रेडिट, लाइसेंस-क्लीन, केवल सफलता पर।

समस्या का स्वरूप

तीन दर्शक-वर्ग अलग-अलग कारणों से लगभग एक ही ड्रग-डेटा pipeline की आवश्यकता पर आ पहुँचते हैं:

  • बायोफार्मा R&D और ड्रग-रिपर्पजिंग टीमें किसी candidate का मूल्यांकन करने के लिए बायोएक्टिविटी डेटा (ChEMBL), ट्रायल इतिहास (ClinicalTrials.gov), और प्रतिकूल-घटना सिग्नल (FAERS) को आपस में जुड़ा हुआ चाहती हैं।
  • मेडिकल-AI स्टार्टअप जो chatbots या clinical decision support परतें बनाते हैं, उन्हें LLM के उत्तरों को नियामक स्रोतों पर आधारित करने के लिए दवा लेबल (openFDA SPL) और ट्रायल डेटा को जुड़ा हुआ चाहिए।
  • फार्माकोविजिलेंस टीमें किसी सिग्नल की प्रशंसनीयता का आकलन करने के लिए FAERS, साथ ही दवा-लेबल के संरचित फ़ील्ड, साथ ही ChEMBL/DrugBank से तंत्र संबंधी जानकारी चाहती हैं।

इनमें से प्रत्येक दर्शक-वर्ग अंततः चार databases को आपस में जोड़ देता है: ClinicalTrials.gov, openFDA, ChEMBL, और DrugBank। हर database का अपना schema, rate limit, और लाइसेंस शर्तें हैं। DrugBank ही वह है जो काट लेता है — इसकी commercial-उपयोग की धारा उन टीमों को पकड़ती है जिन्होंने लाइसेंस पढ़े बिना इसे विकास में integrate कर लिया, और छोटे SaaS संस्थापकों को नोटिस भेजना एक वास्तविक बात है।

यहाँ वह architecture है जिसकी हम सिफारिश करते हैं, जिसमें एक लाइसेंस-क्लीन वैकल्पिक मार्ग भी शामिल है जो DrugBank की जाल से बचाता है।

चार स्रोत, प्रत्येक एक अनुच्छेद में

ClinicalTrials.gov v2

US National Library of Medicine। US-पंजीकृत क्लिनिकल ट्रायल के लिए निर्णायक रजिस्ट्री और वास्तविक वैश्विक मानक। v2, 2024 में launch हुआ — REST + JSON, पुराने v1 CSV/XML की जगह। मुफ़्त, rate-limited (10 req/sec)। दस्तावेज़ीकरण clinicaltrials.gov/data-api/api पर। मज़बूतियाँ: प्रामाणिक, व्यापक, कोई लाइसेंस समस्या नहीं। कमज़ोरियाँ: पुराने अध्ययनों के लिए वैकल्पिक-फ़ील्ड की विरलता, v1 पर अभी भी टिकी टीमों के लिए schema migration की रगड़।

openFDA

FDA द्वारा संचालित सार्वजनिक API। दवा लेबल (SPL — Structured Product Labels), FAERS (Adverse Event Reporting System), रिकॉल डेटा, और खाद्य/उपकरण समकक्षों को कवर करता है। मुफ़्त, बिना प्रमाणीकरण के 240 req/min और API key के साथ 120,000 req/दिन तक rate-limited। मज़बूतियाँ: प्रामाणिक नियामक स्रोत, संरचित डेटा, व्यापक कवरेज। कमज़ोरियाँ: SPL parsing के लिए HL7 परंपराओं को समझना आवश्यक है; FAERS deduplication उपयोगकर्ता की समस्या है।

ChEMBL

EBI / EMBL-EBI। क्यूरेटेड बायोएक्टिविटी database — compounds, targets, और assays के पार IC50, Ki, Kd, EC50 मापन। मुफ़्त, REST + JSON, मध्यम मात्रा पर rate-limit की कोई परेशानी नहीं। मज़बूतियाँ: संरचनात्मक और यांत्रिकीय डेटा जिसे और कोई कवर नहीं करता। कमज़ोरियाँ: फोकस शोध-स्तरीय है; चिकित्सीय/क्लिनिकल मैपिंग आंशिक हैं।

DrugBank

University of Alberta में उत्पन्न, अब commercial। ड्रग-टारगेट मैपिंग, फार्माकोलॉजी, ड्रग-ड्रग इंटरैक्शन, पॉलीफार्माकोलॉजी। Academic उपयोग मुफ़्त है; commercial उपयोग के लिए सशुल्क लाइसेंस आवश्यक है। लाइसेंस किसी भी commercial उत्पाद पर लागू होता है, जिसमें मुफ़्त SaaS tools भी शामिल हैं — integrate करने से पहले शर्तें पढ़ें।

ClinicalTrials.gov, FDA दवा लेबल, ChEMBL बायोएक्टिविटी, और DrugBank फार्माकोलॉजी मेटाडेटा (जिसका हम लाइसेंस लेते हैं) के पार सिमैंटिक खोज। JSON in / JSON out, प्रति कॉल 30 क्रेडिट (~$0.03), केवल-सफलता-पर बिलिंग। output नियामक और संरचनात्मक डेटा शर्तों के अनुरूप है; अंतिम उपयोगकर्ताओं के लिए कोई commercial-लाइसेंस जाल नहीं।

आमने-सामने

लेखन के समय का स्नैपशॉट। commercial integration से पहले वर्तमान rate limits और लाइसेंसिंग की पुष्टि करें।
ClinicalTrials.gov v2openFDAChEMBLDrugBankAPI Pick Clinical
कवरेजट्रायल रजिस्ट्रीलेबल + FAERS + रिकॉलबायोएक्टिविटी, targets, assaysड्रग + targets + इंटरैक्शनचारों, सिमैंटिक
प्रारूपREST + JSONREST + JSONREST + JSONREST + JSON / SQL डंपJSON, पहले से आकार दिए snippets
Rate limit10 req/secबिना auth 240/min, key के साथ 120k/दिनउदारलाइसेंस-स्तर पर निर्भरप्रति-कॉल (कोई प्रति-उपयोगकर्ता नहीं)
लाइसेंससार्वजनिक डोमेनसार्वजनिक डोमेनCC-BY-SAAcademic मुफ़्त / commercial सशुल्कAPI Pick TOS
सर्वोत्तम उपयुक्तताट्रायल प्रोटोकॉल, sponsor disambigनियामक लेबल, AE सिग्नलयांत्रिकीय / संरचनात्मकड्रग-ड्रग इंटरैक्शन, polypharmसब पर AI-agent retrieval

काम करने वाला code: प्रत्येक स्रोत

ClinicalTrials.gov v2

import requests

# Trials for a specific condition + intervention
r = requests.get(
    "https://clinicaltrials.gov/api/v2/studies",
    params={
        "query.cond": "non-small cell lung cancer",
        "query.intr": "pembrolizumab",
        "filter.overallStatus": "RECRUITING",
        "pageSize": 25,
        "format": "json",
    },
)
studies = r.json()["studies"]
for s in studies[:3]:
    proto = s["protocolSection"]
    nct = proto["identificationModule"]["nctId"]
    title = proto["identificationModule"]["briefTitle"]
    sponsor = proto["sponsorCollaboratorsModule"]["leadSponsor"]["name"]
    print(f"{nct}: {title} (sponsor: {sponsor})")

openFDA: दवा लेबल + FAERS सिग्नल

import requests
from collections import Counter

# Drug label lookup
r = requests.get(
    "https://api.fda.gov/drug/label.json",
    params={"search": "openfda.brand_name:Lipitor", "limit": 1},
).json()
label = r["results"][0]
print("Indications:", label.get("indications_and_usage", ["—"])[0][:200])

# FAERS — most reported adverse events for atorvastatin
r = requests.get(
    "https://api.fda.gov/drug/event.json",
    params={
        "search": 'patient.drug.medicinalproduct:"ATORVASTATIN CALCIUM"',
        "count": "patient.reaction.reactionmeddrapt.exact",
        "limit": 10,
    },
).json()
print("Top reported reactions:")
for r_ in r["results"]:
    print(f"  {r_['term']}: {r_['count']}")

ChEMBL: target बायोएक्टिविटी

import requests

# Target search → activity for a specific target
r = requests.get(
    "https://www.ebi.ac.uk/chembl/api/data/activity.json",
    params={
        "target_chembl_id": "CHEMBL204",      # PD-L1
        "standard_type": "IC50",
        "limit": 25,
    },
).json()
for a in r["activities"][:5]:
    cid = a["molecule_chembl_id"]
    val = a["standard_value"]
    unit = a["standard_units"]
    print(f"{cid}: IC50 = {val} {unit}")
import requests

r = requests.post(
    "https://www.apipick.com/api/search/clinical",
    headers={"x-api-key": "pk_yourkey"},
    json={"query": "PD-L1 inhibitors in NSCLC trials and adverse events"},
)
for hit in r.json()["results"][:5]:
    print(hit["title"], "→", hit["url"], f"(source: {hit.get('source')})")
# Returns ranked semantic matches across trials + labels + bioactivity.
# 30 credits per call, only on HTTP 200.

तीन pattern जो production में सामने आते हैं

1. ड्रग-रिपर्पजिंग स्क्रीनिंग

कोई स्वीकृत दवा लें। उसका तंत्र (ChEMBL targets), उसके वर्तमान संकेत (openFDA लेबल), और कोई भी ट्रायल जो उसे नए संकेतों में परख रहा हो (ClinicalTrials.gov) खींचें। नए संकेत में सुरक्षा सिग्नल के लिए FAERS से क्रॉस-रेफरेंस करें। agent चारों टुकड़ों को जोड़ता है और ऐसे candidates सामने लाता है जो किसी फार्माकोलॉजिस्ट के समय के लायक हों।

2. फार्माकोविजिलेंस सिग्नल ट्रायेज

एक घंटे का cron दवाओं की एक watchlist के लिए नई FAERS रिपोर्ट खींचता है। शेष database के सापेक्ष Reporting Odds Ratio की गणना करें। ऐसे किसी भी सिग्नल को फ़्लैग करें जहाँ ROR > 2 हो और 95% CI में 1 शामिल न हो। यह जाँचने के लिए ClinicalTrials.gov के साथ जोड़ें कि उपयोग-संकेत on-label है या off-label। टीम की सुबह की समीक्षा के लिए एक प्राथमिकता-क्रमित सूची output करें — समाचार के लिए morning-briefing pattern के अनुरूप।

3. AI मेडिकल असिस्टेंट grounding

असिस्टेंट जो भी दवा-संबंधी उत्तर देता है, उसके लिए openFDA लेबल खींचें और उसे प्रामाणिक मूल सत्य के रूप में उपयोग करें। FDA लेबल अनुभाग को स्पष्ट रूप से उद्धृत करें। जब लेबल प्राप्त न हो सके तो खुराक-संबंधी प्रश्नों का उत्तर देने से इनकार करें। यह UK case law लेख का citation-grounded pattern है जो चिकित्सा पर लागू किया गया है — और भी अधिक जोखिम के साथ।

DrugBank की जाल

दोहराने योग्य है। DrugBank का academic लाइसेंस अच्छी तरह प्रचारित है, पर इसकी शर्तें उसी क्षण बदल जाती हैं जब आप डेटा का उपयोग करने वाली किसी भी चीज़ के लिए किसी से पैसे लेते हैं — जिसमें वह मुफ़्त उत्पाद भी शामिल है जिसके उपयोगकर्ताओं को आप बाद में paid में बदलना चाहते हैं। कई छोटे SaaS संस्थापकों ने इसे कठिन तरीके से तब जाना जब एक नोटिस उनके inbox में आ गिरा।

दो साफ़ मार्ग:

  • commercial लाइसेंस का भुगतान करें। मानक मूल्य निर्धारण अपारदर्शी है; मोलभाव की अपेक्षा करें। funding वाले परिपक्व उत्पादों के लिए यही सही उत्तर है, क्योंकि DrugBank के ड्रग-ड्रग इंटरैक्शन डेटा की बराबरी करना कठिन है।
  • प्रारंभिक चरणों के लिए लाइसेंस-क्लीन विकल्पों का उपयोग करें। ChEMBL अधिकांश यांत्रिकीय डेटा को कवर करता है। RxNorm + DailyMed (NIH) दवा-नाम सामान्यीकरण और लेबल को कवर करते हैं। FAERS प्रतिकूल घटनाओं को कवर करता है। यह संयोजन कुछ DrugBank-विशिष्ट डेटा (समृद्ध इंटरैक्शन तालिकाएँ, पॉलीफार्माकोलॉजी) से चूक जाता है, पर अधिकांश प्रारंभिक-चरण उत्पादों के लिए पर्याप्त है। API Pick Clinical Search आपके लिए लाइसेंस-क्लीन उपसमुच्चय को लपेट देता है।

यह कहाँ सामान्यीकृत होता है

'rate-limit हैंडलिंग और लाइसेंस अनुशासन के साथ चार सार्वजनिक databases को आपस में जोड़ना' वाला pattern कई विनियमित verticals में दिखता है — वित्तीय फाइलिंग (SEC + earnings transcripts + equity आँकड़े), पेटेंट (USPTO + EPO + WIPO + JPO + KIPO + CNIPA), विधिक (Find Case Law + legislation.gov.uk + विदेशी समकक्ष)। ड्रग-डेटा संस्करण मुख्यतः इसलिए असामान्य है क्योंकि लाइसेंस की आधारभूमि अधिक विवादित है। हर दूसरा अक्ष — schema विविधता, rate limits, deduplication, क्रॉस-स्रोत identifier मैपिंग — सामान्यीकृत होता है।

लाइसेंस-क्लीन ड्रग डेटा स्रोतों के पार एक-कॉल retrieval के लिए, API Pick Clinical Search जोड़ने का काम करता है। गहरे integrations (पूर्ण SPL parsing, FAERS सिग्नल गणना, ChEMBL target trees) के लिए, आप अब भी प्रत्येक स्रोत पर सीधे जाते हैं। pipeline के प्रत्येक भाग के लिए abstraction का सही स्तर चुनें।

अक्सर पूछे जाने वाले प्रश्न

ClinicalTrials.gov v2 में ऐसा क्या बदला जो pipelines को तोड़ देता है?

तीन चीज़ें। (1) Endpoint संरचना — v2 अब v1 के CSV/XML के बजाय REST + JSON है। (2) फ़ील्ड नाम — नया protocolSection रैपर और snake_case से camelCase में बदलाव सबसे आम refactor हैं। (3) वैकल्पिक-फ़ील्ड का भराव — 'उपलब्ध' के रूप में दस्तावेज़ित कई फ़ील्ड कम भरे होते हैं, खासकर पुराने अध्ययनों में। migration में आमतौर पर 2-3 दिन लगते हैं, साथ ही एक सप्ताह की bug-fixing जैसे-जैसे edge-case अध्ययन सामने आते हैं।

DrugBank लाइसेंसिंग का मामला क्या है?

DrugBank academic और व्यक्तिगत शोध के लिए मुफ़्त है। कोई भी commercial उपयोग — जिसमें एक मुफ़्त SaaS उत्पाद, किसी स्टार्टअप का MVP, या किसी सशुल्क परामर्श में इस्तेमाल किया गया tool शामिल है — DrugBank की commercial लाइसेंसिंग शर्तों के अंतर्गत आता है। कुछ साल पहले की Thinklab पोस्ट 'Sounding the alarm on DrugBank's new license' आज भी इसका प्रामाणिक लेख है। कई builders विकास के दौरान DrugBank को integrate कर लेते हैं, बिना यह समझे कि जिस क्षण वे कोई उत्पाद launch करते हैं, लाइसेंस लागू हो जाता है। integrate करने से पहले शर्तें पढ़ें, या किसी लाइसेंस-क्लीन विकल्प का उपयोग करें।

मैं बुनियादी फार्माकोविजिलेंस सिग्नल पहचान कैसे करूँ?

मानक असंगति माप — Reporting Odds Ratio (ROR), Proportional Reporting Ratio (PRR), Bayesian BCPNN — FAERS प्रतिकूल-घटना database पर। vigipy जैसी open-source लाइब्रेरियाँ इन्हें लागू करती हैं। जाल है FAERS का deduplication: कई रिपोर्ट एक ही केस की विभिन्न पक्षों द्वारा की गई डुप्लिकेट फाइलिंग होती हैं; WHO के VigiMatch जैसी लाइब्रेरियाँ इसे संभालती हैं, पर इसकी कीमत चुकानी पड़ती है। अधिकांश मेड-AI उपयोग मामलों के लिए, openFDA का FAERS endpoint और एक साधारण ROR गणना जाँच के योग्य सिग्नल सामने लाने के लिए पर्याप्त है।

क्या API Pick Clinical Search HIPAA-अनुपालक है?

जिन डेटा स्रोतों को हम लपेटते हैं (ClinicalTrials.gov, openFDA, ChEMBL, DrugBank फार्माकोलॉजी मेटाडेटा) उनमें कोई संरक्षित स्वास्थ्य जानकारी नहीं होती — वे ट्रायल प्रोटोकॉल, दवा लेबल, प्रतिकूल-घटना समुच्चय, और संरचनात्मक/बायोएक्टिविटी डेटा को कवर करते हैं। HIPAA अनुपालन PHI पर लागू होता है, जो हमारे index में नहीं आता। यदि आप कोई downstream उत्पाद बना रहे हैं जो वास्तव में PHI संभालता है (उदा. रोगी रिकॉर्ड पर clinical decision support), तो आपको इसे अलग से संभालना होगा। हमारे endpoint से होकर बहने वाला डेटा सार्वजनिक नियामक डेटा के अनुरूप है।

क्या इसका output क्लिनिकल निर्णयों के लिए उपयोग किया जा सकता है?

नहीं। किसी भी retrieval API का output सूचनात्मक है; यह चिकित्सीय सलाह या clinical decision support का गठन नहीं करता। डेटा का उपयोग योग्य कर्मियों — एक फार्मासिस्ट, चिकित्सक, नियामक विशेषज्ञ — को सहयोग देने के लिए करें, उन्हें प्रतिस्थापित करने के लिए नहीं। यह API Pick Clinical Search और इस क्षेत्र की किसी भी अन्य API पर लागू होता है।

इस लेख में उपयोग की गई APIs

Sarah Choy
लेखक
Sarah Choy
CEO, API Pick

Sarah Choy, API Pick की CEO हैं। वे AI एजेंट्स और LLM वर्कफ़्लो के लिए प्रोडक्शन-रेडी APIs बनाने के बारे में लिखती हैं।