C

Clinicaltrials Database Dynamic

Enterprise-grade skill for query, clinicaltrials, search, trials. Includes structured workflows, validation checks, and reusable patterns for scientific.

SkillClipticsscientificv1.0.0MIT
0 views0 copies

ClinicalTrials Database Dynamic

A scientific computing skill for searching and retrieving data from ClinicalTrials.gov — the comprehensive registry of clinical studies maintained by the National Library of Medicine. ClinicalTrials Database Dynamic helps you find trials by condition, intervention, or sponsor, and retrieve detailed protocol and results data.

When to Use This Skill

Choose ClinicalTrials Database Dynamic when:

  • Searching for clinical trials by disease, drug, or sponsor
  • Retrieving trial design details (endpoints, enrollment, phases)
  • Monitoring trial status updates and result postings
  • Building systematic review search strategies across registries

Consider alternatives when:

  • You need published trial results (use PubMed)
  • You need drug approval information (use FDA database)
  • You need pharmacokinetic data (use dedicated PK databases)
  • You need real-world evidence (use claims databases)

Quick Start

claude "Find active Phase 3 trials for Alzheimer's disease treatments"
import requests # ClinicalTrials.gov API v2 base_url = "https://clinicaltrials.gov/api/v2/studies" params = { "query.cond": "Alzheimer Disease", "filter.overallStatus": "RECRUITING", "filter.phase": "PHASE3", "pageSize": 10, "sort": "LastUpdatePostDate:desc", "fields": "NCTId,BriefTitle,OverallStatus,Phase,EnrollmentCount,LeadSponsorName,StartDate,PrimaryCompletionDate" } response = requests.get(base_url, params=params) data = response.json() for study in data.get("studies", []): info = study["protocolSection"]["identificationModule"] status = study["protocolSection"]["statusModule"] print(f"\n{info['nctId']}: {info['briefTitle']}") print(f" Phase: {status.get('phases', ['N/A'])}") print(f" Status: {status['overallStatus']}")

Core Concepts

ClinicalTrials.gov API v2

EndpointPurposeExample
/studiesSearch studies?query.cond=cancer
/studies/{nctId}Get single study/studies/NCT12345678
/studies?fields=Select specific fieldsfields=NCTId,BriefTitle
/stats/sizeCount matching studiesGet result count

Study Phases

PhaseDescriptionTypical Size
Early Phase 1First-in-human, dose finding10-30
Phase 1Safety, pharmacokinetics20-80
Phase 2Efficacy signal, dose ranging100-300
Phase 3Confirmatory efficacy trial300-3000+
Phase 4Post-marketing surveillance1000+
def search_trials(condition=None, intervention=None, sponsor=None, phase=None, status="RECRUITING", max_results=50): """Search ClinicalTrials.gov with multiple filters""" params = {"pageSize": min(max_results, 100)} if condition: params["query.cond"] = condition if intervention: params["query.intr"] = intervention if sponsor: params["query.spons"] = sponsor if phase: params["filter.phase"] = phase if status: params["filter.overallStatus"] = status all_studies = [] next_token = None while len(all_studies) < max_results: if next_token: params["pageToken"] = next_token resp = requests.get("https://clinicaltrials.gov/api/v2/studies", params=params) data = resp.json() studies = data.get("studies", []) all_studies.extend(studies) next_token = data.get("nextPageToken") if not next_token: break return all_studies[:max_results] # Example: CRISPR therapies in recruiting trials trials = search_trials(intervention="CRISPR", status="RECRUITING")

Configuration

ParameterDescriptionDefault
api_versionAPI version (v2 recommended)v2
page_sizeResults per request (max 100)20
default_statusDefault study status filterRECRUITING
fieldsDefault fields to retrieveAll fields
sortSort order for resultsLastUpdatePostDate:desc

Best Practices

  1. Use specific condition terms from MeSH vocabulary. "Alzheimer Disease" returns more targeted results than "Alzheimer's" or "dementia." ClinicalTrials.gov uses MeSH terms for indexing — match their vocabulary for precise searches.

  2. Filter by status for actionable results. Use RECRUITING for trials currently enrolling, ACTIVE_NOT_RECRUITING for ongoing trials, or COMPLETED for trials with potential results. Unfiltered searches include terminated and withdrawn studies.

  3. Request only needed fields. The full study record is large. Use the fields parameter to request only the fields you need (NCTId, BriefTitle, Phase, Status). This reduces response size and parsing time significantly.

  4. Paginate through all results for systematic reviews. ClinicalTrials.gov returns max 100 studies per request. Use pageToken for complete result sets. For systematic reviews, document your search strategy including all filters for reproducibility.

  5. Check for posted results on completed trials. Completed trials may have results posted on ClinicalTrials.gov before (or instead of) journal publication. Check the hasResults flag and retrieve outcome measures, adverse events, and participant flow data.

Common Issues

Search returns too many irrelevant trials. Combine filters — use query.cond with filter.phase and query.intr together. Adding a specific intervention or sponsor dramatically reduces noise. Avoid generic terms like "cancer" without additional qualifiers.

API returns 429 Too Many Requests. ClinicalTrials.gov enforces rate limits. Add 0.5-second delays between paginated requests. For bulk data needs, consider using the ClinicalTrials.gov bulk download files instead of API queries.

Enrolled numbers don't match published results. ClinicalTrials.gov enrollment counts may differ from publications due to screen failures, withdrawals, and different counting methodologies. Always note the data source when citing enrollment figures.

Community

Reviews

Write a review

No reviews yet. Be the first to review this template!

Similar Templates