[ blog · tutorial ]11 min read

Menyambungkan ClinicalTrials.gov v2 + openFDA + ChEMBL ke dalam satu endpoint intelijen obat berlisensi bersih

Sarah ChoyDiterbitkan 3 Mei 202611 menit baca
Menyambungkan ClinicalTrials.gov v2 + openFDA + ChEMBL ke dalam satu endpoint intelijen obat berlisensi bersih

R&D farmasi, startup AI medis, dan tim farmakovigilans menginginkan hal yang sama: satu endpoint yang menarik uji klinis, label, kejadian merugikan, dan bioaktivitas secara berlisensi bersih. Inilah arsitektur yang berfungsi, lengkap dengan jebakan yang mengejutkan tim di produksi.

TL;DR

  • ClinicalTrials.gov v2 (REST + JSON) menggantikan v1 lama pada 2024 — skemanya lebih bersih, tetapi paginasi, field opsional, dan pergeseran historis mengejutkan integrator baru.
  • openFDA mencakup label obat (SPL), laporan kejadian merugikan FAERS, dan data penarikan, gratis; dibatasi 240 req/menit tanpa autentikasi, 120k/hari dengan key.
  • ChEMBL memberi Anda bioaktivitas (IC50, Ki, Kd, EC50), target, dan asai — dimensi struktural / mekanistik yang tidak dimiliki database lain.
  • Lisensi komersial DrugBank adalah jebakannya: penggunaan akademik diizinkan; produk apa pun, bahkan SaaS kecil, masuk dalam ketentuan lisensi komersial yang tidak dibaca kebanyakan builder sampai mereka menerima surat peringatan.
  • API Pick Clinical Search membungkus ClinicalTrials, openFDA, ChEMBL, dan farmakologi DrugBank dalam satu endpoint POST — 30 kredit per panggilan, berlisensi bersih, hanya saat sukses.

Bentuk masalahnya

Tiga jenis audiens berakhir membutuhkan pipeline data obat yang kurang lebih sama, dengan alasan yang berbeda:

  • Tim R&D biofarma dan repurposing obat menginginkan data bioaktivitas (ChEMBL), riwayat uji klinis (ClinicalTrials.gov), dan sinyal kejadian merugikan (FAERS) yang digabungkan untuk mengevaluasi suatu kandidat.
  • Startup AI medis yang membangun chatbot atau lapisan dukungan keputusan klinis membutuhkan label obat (SPL openFDA) dan data uji klinis yang digabungkan untuk membumikan jawaban LLM pada sumber regulasi.
  • Tim farmakovigilans menginginkan FAERS ditambah field terstruktur label obat ditambah informasi mekanisme dari ChEMBL/DrugBank untuk menilai plausibilitas sebuah sinyal.

Masing-masing audiens ini akhirnya menyambungkan empat database: ClinicalTrials.gov, openFDA, ChEMBL, dan DrugBank. Setiap database punya skema, rate limit, dan ketentuan lisensinya sendiri. DrugBank-lah yang menggigit — klausul penggunaan komersialnya menjerat tim yang mengintegrasikannya saat pengembangan tanpa membaca lisensi, dan mengirim surat peringatan kepada pendiri SaaS kecil adalah hal yang nyata.

Inilah arsitektur yang kami rekomendasikan, termasuk jalur alternatif berlisensi bersih yang menghindari jebakan DrugBank.

Empat sumber, masing-masing satu paragraf

ClinicalTrials.gov v2

US National Library of Medicine. Registri definitif untuk uji klinis terdaftar di AS dan standar global de facto. v2 diluncurkan pada 2024 — REST + JSON, menggantikan CSV/XML lama v1. Gratis, dibatasi rate (10 req/dtk). Dokumentasi di clinicaltrials.gov/data-api/api. Kekuatan: otoritatif, komprehensif, tanpa masalah lisensi. Kelemahan: field opsional yang jarang terisi untuk studi lama, friksi migrasi skema bagi tim yang masih di v1.

openFDA

API publik yang dikelola FDA. Mencakup label obat (SPL — Structured Product Labels), FAERS (Adverse Event Reporting System), data penarikan, serta padanan makanan/perangkat. Gratis, dibatasi 240 req/menit tanpa autentikasi dan 120.000 req/hari dengan API key. Kekuatan: sumber regulasi otoritatif, data terstruktur, cakupan luas. Kelemahan: parsing SPL menuntut pemahaman konvensi HL7; deduplikasi FAERS adalah masalah pengguna.

ChEMBL

EBI / EMBL-EBI. Database bioaktivitas terkurasi — pengukuran IC50, Ki, Kd, EC50 di seluruh senyawa, target, dan asai. Gratis, REST + JSON, tanpa kerumitan rate-limit pada volume sedang. Kekuatan: data struktural dan mekanistik yang tidak dicakup yang lain. Kelemahan: fokusnya tingkat riset; pemetaan terapeutik/klinis bersifat parsial.

DrugBank

Berasal dari University of Alberta, kini komersial. Pemetaan obat-target, farmakologi, interaksi obat-obat, polifarmakologi. Penggunaan akademik gratis; penggunaan komersial memerlukan lisensi berbayar. Lisensi berlaku untuk produk komersial apa pun, termasuk alat SaaS gratis — baca ketentuannya sebelum mengintegrasikan.

API Pick Clinical Search (alternatif berlisensi bersih)

Pencarian semantik di seluruh ClinicalTrials.gov, label obat FDA, bioaktivitas ChEMBL, dan metadata farmakologi DrugBank yang kami lisensikan. JSON in / JSON out, 30 kredit per panggilan (~$0,03), penagihan hanya saat sukses. Output konsisten dengan ketentuan data regulasi dan struktural; tanpa jebakan lisensi komersial bagi pengguna akhir.

Berdampingan

Cuplikan pada saat penulisan. Verifikasi rate limit dan lisensi terkini sebelum integrasi komersial.
ClinicalTrials.gov v2openFDAChEMBLDrugBankAPI Pick Clinical
CakupanRegistri uji klinisLabel + FAERS + penarikanBioaktivitas, target, asaiObat + target + interaksiKeempatnya, semantik
FormatREST + JSONREST + JSONREST + JSONREST + JSON / dump SQLJSON, cuplikan sudah dibentuk
Rate limit10 req/dtk240/menit tanpa auth, 120k/hari dengan keyMurah hatiBergantung tingkat lisensiPer panggilan (tanpa per pengguna)
LisensiDomain publikDomain publikCC-BY-SAAkademik gratis / komersial berbayarTOS API Pick
Paling cocokProtokol uji klinis, disambig. sponsorLabel regulasi, sinyal AEMekanistik / strukturalInteraksi obat-obat, polifarm.Pengambilan oleh agen AI atas semua

Kode yang berfungsi: tiap sumber

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: label obat + sinyal 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: bioaktivitas 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}")

API Pick Clinical Search: satu panggilan, semua sumber

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.

Tiga pola yang muncul di produksi

1. Penyaringan repurposing obat

Ambil sebuah obat yang telah disetujui. Tarik mekanismenya (target ChEMBL), indikasi terkininya (label openFDA), dan setiap uji klinis yang mengujinya untuk indikasi baru (ClinicalTrials.gov). Bandingkan silang dengan FAERS untuk sinyal keamanan pada indikasi baru. Agen merakit keempat bagian dan memunculkan kandidat yang layak menyita waktu seorang farmakolog.

2. Triase sinyal farmakovigilans

Cron tiap jam menarik laporan FAERS baru untuk daftar pantau obat. Hitung Reporting Odds Ratio terhadap sisa database. Tandai setiap sinyal di mana ROR > 2 dengan CI 95% yang mengecualikan 1. Pasangkan dengan ClinicalTrials.gov untuk memeriksa apakah indikasi penggunaannya on-label atau off-label. Keluarkan daftar berperingkat untuk tinjauan pagi tim — analog dengan pola morning-briefing untuk berita.

3. Pembumian asisten medis AI

Untuk setiap jawaban terkait obat yang diberikan asisten, tarik label openFDA dan gunakan sebagai kebenaran dasar yang otoritatif. Kutip bagian label FDA secara eksplisit. Tolak menjawab pertanyaan terkait dosis ketika label tidak dapat diambil. Inilah pola citation-grounded dari tulisan tentang hukum kasus Inggris yang diterapkan ke dunia medis — dengan taruhan yang bahkan lebih tinggi.

Jebakan DrugBank

Layak ditegaskan kembali. Lisensi akademik DrugBank sudah dipublikasikan luas, tetapi ketentuannya berubah pada saat Anda menarik bayaran dari siapa pun untuk apa pun yang menggunakan datanya — termasuk produk gratis yang penggunanya hendak Anda konversi menjadi berbayar di kemudian hari. Beberapa pendiri SaaS kecil menemukan ini dengan cara yang pahit setelah surat peringatan mendarat di kotak masuk mereka.

Dua jalur bersih:

  • Bayar lisensi komersialnya. Harga standarnya tidak transparan; bersiaplah bernegosiasi. Untuk produk matang yang sudah didanai, ini jawaban yang tepat, karena data interaksi obat-obat DrugBank sulit ditandingi.
  • Gunakan alternatif berlisensi bersih untuk tahap awal. ChEMBL mencakup sebagian besar data mekanistik. RxNorm + DailyMed (NIH) mencakup normalisasi nama obat dan label. FAERS mencakup kejadian merugikan. Kombinasi ini melewatkan beberapa data khas DrugBank (tabel interaksi yang kaya, polifarmakologi) tetapi cukup untuk sebagian besar produk tahap awal. API Pick Clinical Search membungkus subset berlisensi bersih untuk Anda.

Di mana ini menggeneralisasi

Pola 'menyambungkan empat database publik dengan penanganan rate-limit dan disiplin lisensi' muncul di banyak vertikal yang teregulasi — laporan keuangan (SEC + transkrip laba + statistik ekuitas), paten (USPTO + EPO + WIPO + JPO + KIPO + CNIPA), hukum (Find Case Law + legislation.gov.uk + padanan asing). Versi data obat tidak biasa terutama karena pijakan lisensinya lebih diperdebatkan. Setiap sumbu lain — keragaman skema, rate limit, deduplikasi, pemetaan pengenal antar-sumber — bersifat umum.

Untuk pengambilan satu panggilan di seluruh sumber data obat berlisensi bersih, API Pick Clinical Search menangani penyambungannya. Untuk integrasi yang lebih dalam (parsing SPL penuh, perhitungan sinyal FAERS, pohon target ChEMBL), Anda tetap mendatangi tiap sumber secara langsung. Pilih tingkat abstraksi yang tepat untuk setiap bagian pipeline.

Pertanyaan yang Sering Diajukan

Apa yang berubah di ClinicalTrials.gov v2 yang merusak pipeline?

Tiga hal. (1) Struktur endpoint — v2 adalah REST + JSON, bukan CSV/XML seperti v1. (2) Nama field — pembungkus baru protocolSection serta perubahan dari snake_case ke camelCase adalah refactor paling umum. (3) Pengisian field opsional — banyak field yang didokumentasikan sebagai 'tersedia' justru jarang terisi, terutama untuk studi yang lebih lama. Migrasi biasanya memakan 2-3 hari ditambah seminggu perbaikan bug seiring munculnya studi kasus tepi.

Apa masalah dengan lisensi DrugBank?

DrugBank gratis untuk riset akademik dan pribadi. Setiap penggunaan komersial — termasuk produk SaaS gratis, MVP sebuah startup, atau alat yang dipakai dalam konsultansi berbayar — masuk dalam ketentuan lisensi komersial DrugBank. Pos Thinklab 'Sounding the alarm on DrugBank's new license' dari beberapa tahun lalu masih menjadi tulisan kanonik. Banyak builder mengintegrasikan DrugBank dalam pengembangan tanpa menyadari bahwa begitu mereka merilis produk, lisensi itu berlaku. Baca ketentuannya sebelum mengintegrasikan, atau gunakan alternatif berlisensi bersih.

Bagaimana cara melakukan deteksi sinyal farmakovigilans dasar?

Ukuran disproporsionalitas standar — Reporting Odds Ratio (ROR), Proportional Reporting Ratio (PRR), BCPNN Bayesian — atas database kejadian merugikan FAERS. Pustaka open-source seperti vigipy mengimplementasikannya. Jebakannya adalah deduplikasi FAERS: banyak laporan merupakan pengajuan duplikat atas kasus yang sama oleh pihak yang berbeda; pustaka seperti VigiMatch dari WHO menanganinya, tetapi Anda harus membayarnya. Untuk sebagian besar kasus penggunaan AI medis, endpoint FAERS dari openFDA ditambah perhitungan ROR sederhana sudah cukup untuk memunculkan sinyal yang layak diselidiki.

Apakah API Pick Clinical Search sesuai HIPAA?

Sumber data yang kami bungkus (ClinicalTrials.gov, openFDA, ChEMBL, metadata farmakologi DrugBank) tidak memuat informasi kesehatan yang dilindungi — semuanya mencakup protokol uji klinis, label obat, agregat kejadian merugikan, dan data struktural/bioaktivitas. Kepatuhan HIPAA berlaku untuk PHI, yang tidak muncul dalam indeks kami. Jika Anda membangun produk hilir yang memang menangani PHI (mis. dukungan keputusan klinis atas rekam medis pasien), Anda perlu menanganinya secara terpisah. Data yang mengalir melalui endpoint kami konsisten dengan data regulasi publik.

Bisakah output dari ini digunakan untuk keputusan klinis?

Tidak. Output dari API pengambilan apa pun bersifat informatif; ini bukan nasihat medis atau dukungan keputusan klinis. Gunakan data untuk mendukung tenaga yang berkualifikasi — apoteker, dokter, spesialis regulasi — bukan untuk menggantikannya. Ini berlaku untuk API Pick Clinical Search dan API lain mana pun di bidang ini.

API yang digunakan dalam artikel ini

Sarah Choy
Ditulis oleh
Sarah Choy
CEO, API Pick

Sarah Choy adalah CEO API Pick. Ia menulis tentang membangun API siap produksi untuk AI agent dan alur kerja LLM.