Conectando ClinicalTrials.gov v2 + openFDA + ChEMBL em um endpoint de inteligência farmacológica com licença limpa

P&D farmacêutico, startups de IA médica e equipes de farmacovigilância querem a mesma coisa: um endpoint que reúna ensaios, rótulos, eventos adversos e bioatividade de forma com licença limpa. Aqui está a arquitetura funcional, com as armadilhas que surpreenderam equipes em produção.
TL;DR
- •O ClinicalTrials.gov v2 (REST + JSON) substituiu o legado v1 em 2024 — o esquema é mais limpo, mas paginação, campos opcionais e desvio histórico pegam os novos integradores de surpresa.
- •O openFDA cobre rótulos de medicamentos (SPL), relatórios de eventos adversos do FAERS e dados de recalls, de graça; limitado a 240 req/min sem autenticação, 120k/dia com uma chave.
- •O ChEMBL te dá bioatividade (IC50, Ki, Kd, EC50), alvos e ensaios — a dimensão estrutural / mecanística que falta a outros bancos de dados.
- •A licença comercial do DrugBank é a armadilha: o uso acadêmico é permitido; qualquer produto, mesmo um SaaS pequeno, cai sob os termos de licença comercial que a maioria dos desenvolvedores não lê até receber uma notificação.
- •O API Pick Clinical Search envolve ClinicalTrials, openFDA, ChEMBL e a farmacologia do DrugBank em um único endpoint POST — 30 créditos por chamada, licença limpa, cobrança apenas no sucesso.
O formato do problema
Três públicos acabam precisando aproximadamente do mesmo pipeline de dados farmacológicos, por razões diferentes:
- Equipes de P&D biofarmacêutico e de reposicionamento de fármacos querem dados de bioatividade (ChEMBL), histórico de ensaios (ClinicalTrials.gov) e sinais de eventos adversos (FAERS) reunidos para avaliar um candidato.
- Startups de IA médica que constroem chatbots ou camadas de suporte à decisão clínica precisam de rótulos de medicamentos (SPL do openFDA) e dados de ensaios reunidos para fundamentar as respostas do LLM em fontes regulatórias.
- Equipes de farmacovigilância querem o FAERS mais os campos estruturados dos rótulos de medicamentos mais informações de mecanismo do ChEMBL/DrugBank para avaliar a plausibilidade de um sinal.
Cada um desses públicos acaba conectando quatro bancos de dados entre si: ClinicalTrials.gov, openFDA, ChEMBL e DrugBank. Cada banco de dados tem o seu próprio esquema, limites de taxa e termos de licença. O DrugBank é o que morde — sua cláusula de uso comercial pega equipes que o integraram em desenvolvimento sem ler a licença, e notificar fundadores de SaaS pequeno é uma coisa real.
Aqui está a arquitetura que recomendamos, incluindo um caminho alternativo com licença limpa que evita a armadilha do DrugBank.
As quatro fontes, um parágrafo cada
ClinicalTrials.gov v2
US National Library of Medicine. Registro definitivo dos ensaios clínicos registrados nos EUA e o padrão global de fato. O v2 foi lançado em 2024 — REST + JSON, substituindo o legado CSV/XML do v1. Gratuito, com limite de taxa (10 req/s). Documentação em clinicaltrials.gov/data-api/api. Pontos fortes: autoritativo, abrangente, sem problemas de licença. Pontos fracos: escassez de campos opcionais em estudos mais antigos, atrito de migração de esquema para equipes ainda no v1.
openFDA
API pública gerida pela FDA. Cobre rótulos de medicamentos (SPL — Structured Product Labels), FAERS (Adverse Event Reporting System), dados de recalls e equivalentes de alimentos/dispositivos. Gratuito, limitado a 240 req/min sem autenticação e 120.000 req/dia com uma chave de API. Pontos fortes: fonte regulatória autoritativa, dados estruturados, ampla cobertura. Pontos fracos: fazer o parsing de SPL exige entender as convenções do HL7; a deduplicação do FAERS é problema do usuário.
ChEMBL
EBI / EMBL-EBI. Banco de dados de bioatividade curado — medições de IC50, Ki, Kd, EC50 ao longo de compostos, alvos e ensaios. Gratuito, REST + JSON, sem dores de cabeça com limite de taxa em volume moderado. Pontos fortes: dados estruturais e mecanísticos que nada mais cobre. Pontos fracos: o foco é de grau de pesquisa; os mapeamentos terapêuticos/clínicos são parciais.
DrugBank
Originado na University of Alberta, agora comercial. Mapeamentos fármaco-alvo, farmacologia, interações fármaco-fármaco, polifarmacologia. O uso acadêmico é gratuito; o uso comercial requer uma licença paga. A licença se aplica a qualquer produto comercial, incluindo ferramentas SaaS gratuitas — leia os termos antes de integrar.
API Pick Clinical Search (alternativa com licença limpa)
Busca semântica através de ClinicalTrials.gov, rótulos de medicamentos da FDA, bioatividade do ChEMBL e metadados de farmacologia do DrugBank que licenciamos. JSON in / JSON out, 30 créditos por chamada (~US$ 0,03), cobrança apenas no sucesso. A saída é coerente com os termos de dados regulatórios e estruturais; sem armadilha de licença comercial para os usuários finais.
Lado a lado
| ClinicalTrials.gov v2 | openFDA | ChEMBL | DrugBank | API Pick Clinical | |
|---|---|---|---|---|---|
| Cobertura | Registro de ensaios | Rótulos + FAERS + recalls | Bioatividade, alvos, ensaios | Fármacos + alvos + interações | Todas as quatro, semântica |
| Formato | REST + JSON | REST + JSON | REST + JSON | REST + JSON / dumps SQL | JSON, trechos já formatados |
| Limite de taxa | 10 req/s | 240/min sem auth, 120k/dia com chave | Generoso | Conforme o nível de licença | Por chamada (sem limite por usuário) |
| Licença | Domínio público | Domínio público | CC-BY-SA | Acadêmica grátis / comercial paga | TOS do API Pick |
| Melhor encaixe | Protocolos de ensaios, desambig. de patrocinadores | Rótulos regulatórios, sinais de EA | Mecanístico / estrutural | Interações fármaco-fármaco, polifarm. | Recuperação por agentes de IA sobre tudo |
Código funcional: cada fonte
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: rótulo de medicamento + sinal do 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: bioatividade de um alvo
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}")API Pick Clinical Search: uma chamada, todas as fontes
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.Três padrões que aparecem em produção
1. Triagem para reposicionamento de fármacos
Pegue um fármaco aprovado. Traga o seu mecanismo (alvos do ChEMBL), suas indicações atuais (rótulo do openFDA) e quaisquer ensaios que o testem em novas indicações (ClinicalTrials.gov). Cruze com o FAERS em busca de sinais de segurança na nova indicação. O agente reúne as quatro peças e revela candidatos que merecem o tempo de um farmacologista.
2. Triagem de sinais de farmacovigilância
Um cron de hora em hora traz novos relatórios do FAERS para uma lista de vigilância de fármacos. Calcule o Reporting Odds Ratio em relação ao restante do banco de dados. Sinalize qualquer sinal em que ROR > 2 com IC de 95% excluindo 1. Combine com o ClinicalTrials.gov para verificar se a indicação de uso é on-label ou off-label. Saída: uma lista priorizada para a revisão matinal da equipe — análoga ao padrão de briefing matinal para notícias.
3. Fundamentação de um assistente médico de IA
Para qualquer resposta do assistente relacionada a um fármaco, traga o rótulo do openFDA e use-o como a verdade fundamental autoritativa. Cite explicitamente a seção do rótulo da FDA. Recuse-se a responder perguntas relacionadas a dose quando o rótulo não puder ser recuperado. Este é o padrão de fundamentação por citações do texto sobre jurisprudência do Reino Unido aplicado à medicina — com riscos ainda maiores.
A armadilha do DrugBank
Vale a pena reenfatizar. A licença acadêmica do DrugBank é bem divulgada, mas os seus termos mudam no momento em que você cobra dinheiro de alguém por qualquer coisa que use os dados — incluindo um produto gratuito cujos usuários você pretende converter em pagantes mais tarde. Vários fundadores de SaaS pequeno descobriram isso da pior forma depois que uma notificação caiu na caixa de entrada deles.
Dois caminhos limpos:
- Pague a licença comercial. O preço padrão é opaco; espere negociar. Para produtos maduros com financiamento, esta é a resposta certa, porque os dados de interações fármaco-fármaco do DrugBank são difíceis de igualar.
- Use alternativas com licença limpa nos estágios iniciais. O ChEMBL cobre a maioria dos dados mecanísticos. RxNorm + DailyMed (NIH) cobrem a normalização de nomes de fármacos e os rótulos. O FAERS cobre os eventos adversos. A combinação perde alguns dados específicos do DrugBank (tabelas de interações ricas, polifarmacologia), mas basta para a maioria dos produtos em estágio inicial. O API Pick Clinical Search envolve o subconjunto com licença limpa para você.
Onde isso se generaliza
O padrão de 'conectar quatro bancos de dados públicos com tratamento de limites de taxa e disciplina de licença' aparece em muitas verticais reguladas — relatórios financeiros (SEC + transcrições de resultados + estatísticas de ações), patentes (USPTO + EPO + WIPO + JPO + KIPO + CNIPA), jurídico (Find Case Law + legislation.gov.uk + equivalentes estrangeiros). A versão de dados farmacológicos é incomum sobretudo porque a base de licenciamento é mais contestada. Qualquer outro eixo — diversidade de esquemas, limites de taxa, deduplicação, mapeamento de identificadores entre fontes — se generaliza.
Para recuperação em uma chamada através das fontes de dados farmacológicos com licença limpa, o API Pick Clinical Search faz a conexão. Para as integrações mais profundas (parsing completo de SPL, cálculo de sinais do FAERS, árvores de alvos do ChEMBL), você ainda vai a cada fonte diretamente. Escolha o nível certo de abstração para cada parte do pipeline.
Perguntas Frequentes
O que mudou no ClinicalTrials.gov v2 que quebra os pipelines?
Três coisas. (1) Estrutura do endpoint — o v2 é REST + JSON em vez do CSV/XML do v1. (2) Nomes de campos — o novo invólucro protocolSection e as mudanças de snake_case para camelCase são a refatoração mais comum. (3) Preenchimento de campos opcionais — muitos campos documentados como 'disponíveis' estão escassamente preenchidos, sobretudo em estudos mais antigos. A migração costuma levar 2-3 dias mais uma semana de correção de bugs conforme estudos de casos extremos vão aparecendo.
Qual é a questão com o licenciamento do DrugBank?
O DrugBank é gratuito para pesquisa acadêmica e pessoal. Qualquer uso comercial — incluindo um produto SaaS gratuito, o MVP de uma startup ou uma ferramenta usada em uma consultoria paga — cai sob os termos de licença comercial do DrugBank. O post da Thinklab 'Sounding the alarm on DrugBank's new license' de alguns anos atrás continua sendo o texto canônico. Muitos desenvolvedores integram o DrugBank em desenvolvimento sem perceber que, no momento em que lançam um produto, a licença se aplica. Leia os termos antes de integrar, ou use uma alternativa com licença limpa.
Como faço detecção básica de sinais de farmacovigilância?
As medidas padrão de desproporcionalidade — Reporting Odds Ratio (ROR), Proportional Reporting Ratio (PRR), BCPNN bayesiano — sobre o banco de dados de eventos adversos FAERS. Bibliotecas de código aberto como o vigipy as implementam. A armadilha é a deduplicação do FAERS: muitos relatórios são submissões duplicadas do mesmo caso por partes diferentes; bibliotecas como o VigiMatch da OMS lidam com isso, mas você paga por isso. Para a maioria dos casos de uso de IA médica, o endpoint FAERS do openFDA mais um cálculo simples de ROR basta para revelar sinais que valem a pena investigar.
O API Pick Clinical Search é compatível com a HIPAA?
As fontes de dados que envolvemos (ClinicalTrials.gov, openFDA, ChEMBL, metadados de farmacologia do DrugBank) não contêm informações de saúde protegidas — elas cobrem protocolos de ensaios, rótulos de medicamentos, agregados de eventos adversos e dados estruturais/de bioatividade. A conformidade com a HIPAA se aplica a PHI, que não aparece no nosso índice. Se você está construindo um produto a jusante que de fato lida com PHI (por exemplo, suporte à decisão clínica sobre prontuários de pacientes), terá que tratar disso separadamente. Os dados que fluem pelo nosso endpoint são coerentes com os dados regulatórios públicos.
A saída disso pode ser usada para decisões clínicas?
Não. A saída de qualquer API de recuperação é informativa; ela não constitui aconselhamento médico nem suporte à decisão clínica. Use os dados para apoiar pessoal qualificado — um farmacêutico, um médico, um especialista regulatório — não para substituí-lo. Isso se aplica ao API Pick Clinical Search e a qualquer outra API neste espaço.
APIs usadas neste artigo
Sarah Choy é a CEO da API Pick. Ela escreve sobre a construção de APIs prontas para produção para agentes de IA e fluxos de trabalho com LLMs.