alterlab-fda について
openFDAを通じて公開FDA規制データを検索する研究者や分析担当者向けのスキルです。Pythonインターフェースで医薬品、医療機器、食品、動物用製品、物質を扱い、再利用可能なクエリ例やレート制限、キャッシュ処理も提供します。
主な機能
- 01有害事象と製品ラベルの検索
- 02承認、認可、リコール情報の検索
- 03医薬品コードと物質の照会
- 04供給不足と規制措置の監視
- 05レート制限、キャッシュ、再試行の処理
活用シーン
- 01市販後の医薬品安全性報告の確認
- 02医療機器のリコールと認可の監視
- 03食品リコールと有害事象の追跡
- 04化学物質識別子の照会
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-fdaインストール後、Claude Code で/alterlab-fdaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/animal_veterinary.mdapi_basics.mddevices.mddrugs.mdfoods.mdother.mdquery_patterns.mdscripts/fda_examples.pyfda_query.py詳細
FDA データベースへのアクセス
概要
FDA の取り組みとして公開データセット向けにオープン API を提供する openFDA を通じて、包括的な FDA 規制データにアクセスできます。標準化されたインターフェースを使用し、Python から医薬品、医療機器、食品、動物用製品、物質に関する情報を検索できます。
主な機能:
- 医薬品、医療機器、食品、動物用製品の有害事象を検索
- 製品表示、承認、規制関連申請にアクセス
- リコールや規制措置を監視
- National Drug Codes(NDC)と物質識別子(UNII)を検索
- 医療機器の分類と承認状況(510k、PMA)を分析
- 医薬品の供給不足や供給上の問題を追跡
- 化学構造や物質間の関係を調査
このスキルを使用する場面
次のような作業でこのスキルを使用してください。
- 医薬品の調査:安全性プロファイル、有害事象、製品表示、承認、供給不足
- 医療機器の監視:有害事象、リコール、510(k) 承認、PMA 承認
- 食品の安全性:リコール、アレルゲンの追跡、有害事象、栄養補助食品
- 獣医学:動物の種や品種別の動物用医薬品の有害事象
- 化学物質/物質のデータ:UNII の検索、CAS 番号との対応付け、分子構造
- 規制分析:承認経路、規制措置、コンプライアンスの追跡
- ファーマコビジランス:市販後調査、安全性シグナルの検出
- 科学研究:医薬品相互作用、安全性の比較、疫学研究
該当しない場面
| シナリオ | 代わりに使用 |
|---|---|
| 臨床試験登録情報(NCT ID、募集状況、適格性) | alterlab-clinicaltrials |
| DrugBank のキュレーション済み医薬品–標的/DDI ナレッジ | alterlab-drugbank |
| 化合物の生理活性および作用機序データ | alterlab-chembl |
| 薬理ゲノム学に基づく投与量のガイダンス(CPIC/DPWG) | alterlab-clinpgx |
クイックスタート
1. 基本設定
# Run from the skill's scripts/ dir, or add it to sys.path first.
from fda_query import FDAQuery
# API key is optional (works keyless); pass it or set FDA_API_KEY.
fda = FDAQuery(api_key="YOUR_API_KEY")
# Query drug adverse events
events = fda.query_drug_events("aspirin", limit=100)
# Get drug labeling
label = fda.query_drug_label("Lipitor", brand=True)
# Search device recalls
recalls = fda.query("device", "enforcement",
search="classification:Class+I",
limit=50)
2. API キーの設定
API キーがなくても API を利用できますが、登録するとレート制限が緩和されます。
- キーなし:240 リクエスト/分、1,000 リクエスト/日
- キーあり:240 リクエスト/分、120,000 リクエスト/日
登録先:https://open.fda.gov/apis/authentication/
環境変数として設定します。
export FDA_API_KEY="your_key_here"
3. 実行例
# Run comprehensive examples
python scripts/fda_examples.py
# This demonstrates:
# - Drug safety profiles
# - Device surveillance
# - Food recall monitoring
# - Substance lookup
# - Comparative drug analysis
# - Veterinary drug analysis
FDA データベースのカテゴリ
医薬品
承認から市販後調査まで、医薬品のライフサイクル全体を網羅する、医薬品関連の 6 つのエンドポイントにアクセスできます。
エンドポイント:
- 有害事象 - 副作用、エラー、治療効果の不十分な事例に関する報告
- 製品表示 - 処方情報、警告、効能・効果
- NDC ディレクトリ - National Drug Code の製品情報
- 規制措置レポート - 医薬品のリコールと安全性に関する措置
- Drugs@FDA - 1939 年以降の承認履歴データ
- 医薬品の供給不足 - 現在および解消済みの供給問題
一般的な使用例:
# Safety signal detection
fda.count_by_field("drug", "event",
search="patient.drug.medicinalproduct:metformin",
field="patient.reaction.reactionmeddrapt")
# Get prescribing information
label = fda.query_drug_label("Keytruda", brand=True)
# Check for recalls
recalls = fda.query_drug_recalls(drug_name="metformin")
# Monitor shortages (endpoint is drug/shortages; status values:
# "Current", "To Be Discontinued", "Resolved")
shortages = fda.query("drug", "shortages",
search="status:Current")
リファレンス: 詳細なドキュメントについては references/drugs.md を参照してください。
医療機器
医療機器の安全性、承認、登録を網羅する、医療機器関連の 9 つのエンドポイントにアクセスできます。
エンドポイント:
- 有害事象 - 医療機器の不具合、負傷、死亡
- 510(k) 承認 - 市販前届出
- 分類 - 医療機器のカテゴリとリスククラス
- 規制措置レポート - 医療機器のリコール
- リコール - リコールの詳細情報
- PMA - クラス III 医療機器の市販前承認データ
- 登録・リスティング - 製造施設のデータ
- UDI - 医療機器固有識別データベース
- COVID-19 血清学 - 抗体検査の性能データ
一般的な使用例:
# Monitor device safety
events = fda.query_device_events("pacemaker", limit=100)
# Look up device classification
classification = fda.query_device_classification("DQY")
# Find 510(k) clearances
clearances = fda.query_device_510k(applicant="Medtronic")
# Search by UDI
device_info = fda.query("device", "udi",
search="identifiers.id:00884838003019")
リファレンス: 詳細なドキュメントについては references/devices.md を参照してください。
食品
安全性のモニタリングとリコールのため、食品関連のエンドポイントにアクセスします。
エンドポイント:
- 有害事象 - 食品および栄養補助食品に関する事象(CAERS、
food/event) - 執行報告 - 食品のリコール
化粧品の有害事象には、専用のエンドポイントcosmetic/eventが用意されました。
一般的なユースケース:
# Monitor allergen recalls
recalls = fda.query_food_recalls(reason="undeclared peanut")
# Track dietary supplement events
events = fda.query_food_events(
industry="Dietary Supplements")
# Find contamination recalls
listeria = fda.query_food_recalls(
reason="listeria",
classification="I")
リファレンス: 詳細なドキュメントについては、references/foods.mdを参照してください。
動物・獣医学
動物種ごとの情報を含む、動物用医薬品の有害事象データにアクセスします。
エンドポイント:
- 有害事象 - 動物種、品種、製品別の動物用医薬品の副作用
一般的なユースケース:
# Species-specific events
dog_events = fda.query_animal_events(
species="Dog",
drug_name="flea collar")
# Breed predisposition analysis
breed_query = fda.query("animalandveterinary", "event",
search="reaction.veddra_term_name:*seizure*+AND+"
"animal.breed.breed_component:*Labrador*")
リファレンス: 詳細なドキュメントについては、references/animal_veterinary.mdを参照してください。
物質・その他
UNIIコード、化学構造、関連性を含む、分子レベルの物質データにアクセスします。
エンドポイント:
- 物質データ(
other/substance)- UNII、CAS、化学構造、関連性 - UNII(
other/unii)- UNIIコード ↔ 物質名の検索 - NSDE(
other/nsde)- 包括的なNDC SPLデータ要素ファイル - 過去の文書(
other/historicaldocument)- FDAのアーカイブ文書
また、以下も利用可能です(2026-09に確認済み):transparency/crl(公開済みの完全回答書)および
tobacco/problem(たばこ製品の問題報告)。
一般的なユースケース:
# UNII to CAS mapping
substance = fda.query_substance_by_unii("R16CO5Y76E")
# Search by name
results = fda.query_substance_by_name("acetaminophen")
# Get chemical structure
structure = fda.query("other", "substance",
search="names.name:ibuprofen+AND+substanceClass:chemical")
リファレンス: 詳細なドキュメントについては、references/other.mdを参照してください。
クエリパターンと結果の処理
再利用可能なFDAQueryパターン(安全性プロファイル、経時的な傾向、比較、データベース横断検索)、レスポンスの構造、エラー処理、ページネーション、ベストプラクティスについては、references/query_patterns.mdを参照してください。
押さえておくべきポイント:
- 裸のワイルドカードではなく、具体的なフィールド検索(
patient.drug.medicinalproduct:aspirin)を使用してください。 FDAQueryは、レート制限(240/分、APIキー使用時は120,000/日)とキャッシュを自動的に処理します。skipの上限は25,000です(query_allはそこで停止します)。さらにページを取得する場合は、Linkレスポンスヘッダーのsearch_afterカーソル、より狭い日付範囲での検索、または一括ダウンロードを利用してください。meta.last_updatedで各エンドポイントのデータの鮮度を確認できます。FAERS(drug/event)には四半期分の遅延があります。count_by_fieldで完全一致のフレーズを数えるには、exact=Trueを使用してください(.exactが追加されます)。- すべてのレスポンスは
{meta: {results: {total, ...}}, results: [...]}という形式です。必ずerrorと空のresultsを確認してください。
APIリファレンス
以下の詳細については:
- 認証とレート制限 →
references/api_basics.mdを参照してください - クエリパターンと結果の処理 →
references/query_patterns.mdを参照してください - 医薬品データベース →
references/drugs.mdを参照してください - 医療機器データベース →
references/devices.mdを参照してください - 食品データベース →
references/foods.mdを参照してください - 動物・獣医学データベース →
references/animal_veterinary.mdを参照してください - 物質データベース →
references/other.mdを参照してください
スクリプト
scripts/fda_query.py
FDAQueryクラスを提供するメインのクエリモジュールです。以下の機能があります:
- すべてのFDAエンドポイントへの統一インターフェース
- レート制限とキャッシュの自動処理
- エラー処理と再試行ロジック
- 一般的なクエリパターン
scripts/fda_examples.py
以下を実演する包括的な例です:
- 医薬品の安全性プロファイル分析
- 医療機器のサーベイランス監視
- 食品リコールの追跡
- 物質の検索
- 医薬品の比較分析
- 動物用医薬品の分析
例を実行するには:
python scripts/fda_examples.py
その他のリソース
- openFDAホームページ:https://open.fda.gov/
- APIドキュメント:https://open.fda.gov/apis/
- インタラクティブAPIエクスプローラー:https://open.fda.gov/apis/try-the-api/
- GitHubリポジトリ:https://github.com/FDA/openfda
- 利用規約:https://open.fda.gov/terms/
サポートとトラブルシューティング
よくある問題
問題:レート制限を超えました
- 解決策:API キーを使用する、リクエスト間に待機時間を設ける、またはリクエスト頻度を下げてください
問題:結果が見つかりません
- 解決策:より広い検索語を試す、スペルを確認する、ワイルドカードを使用してください
問題:クエリ構文が無効です
- 解決策:
references/api_basics.mdのクエリ構文を確認してください
問題:結果にフィールドがありません
- 解決策:すべてのレコードにすべてのフィールドが含まれているわけではありません。必ずフィールドの有無を確認してください
ヘルプの利用
- GitHub の課題:https://github.com/FDA/openfda/issues
- メール:[email protected]