mcpField
T
tooluniverse-product-safety-surveillance

tooluniverse-product-safety-surveillance

github.com/mims-harvardデータ・データベース1.8k117 回インストール3 日前に更新
リポジトリ

tooluniverse-product-safety-surveillance について

複数のFDA規制製品について、市販後の安全記録を検索・解釈するToolUniverseスキルです。製品分類、クエリ作成、引用方法を案内し、医薬品の有害事象シグナル検出は対象外としています。

主な機能

  1. 01複数製品カテゴリのFDA安全記録検索
  2. 02質問に応じたopenFDAツールとエンドポイントの選択
  3. 03Luceneクエリ作成の案内
  4. 04記録フィールドと制約の説明
  5. 05出典と結果件数の引用を要求

活用シーン

  1. 01医療機器の有害事象報告やリコールの確認
  2. 02食品、サプリメント、化粧品の報告検索
  3. 03動物用医薬品の報告や医薬品不足の確認
  4. 04複数製品カテゴリの執行記録の取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-product-safety-surveillance

インストール後、Claude Code で/tooluniverse-product-safety-surveillanceを入力して読み込まれたか確認します。

同梱ファイルevals/evals.jsonreferences/openfda_fields.md

詳細

製品安全性の監視(複数製品、openFDA)

薬剤有害事象シグナルのマイニングを除く、FDA 規制対象のすべての製品クラスについて、市販後の安全性記録を取得して解釈します。対象は、医療機器、食品/栄養補助食品/化粧品、動物用医薬品、医薬品の供給(不足)に加え、複数製品にまたがる執行措置/リコール報告です。

重要な原則

  1. まず製品クラスを判断します。 医療機器ですか? 食品/サプリメント/化粧品ですか? 動物用医薬品ですか? 医薬品不足ですか? リコールですか? クラスに応じてツールを選択します。
  2. 有効な Lucene クエリを作成します。 openFDA では、フィールドを指定した field:value 形式の語句を使い、スペース区切りの AND で組み合わせます。フレーズや特殊文字には注意が必要です(「クエリ文法」を参照)。
  3. 取得してから解釈します。 これらは自発的/任意報告です。記録とそのフィールドを報告し、因果関係や発生率を断定してはいけません。
  4. すべての記録に出典を付記します。 ツール名、openFDA エンドポイント、使用したクエリ、meta.results.total の total ヒット数を記載します。
  5. 対象範囲を守ります。 依頼が薬剤有害事象のシグナル検出(PRR/ROR/IC)の場合は、そこで停止し、tooluniverse-pharmacovigilance / tooluniverse-adverse-event-detection を案内します。

使用する場合と使用しない場合

次の場合に使用します:

  • 医療機器の有害事象(MAUDE):「[医療機器] の有害事象/故障/死亡」
  • 医療機器のリコールと執行措置:「[企業] の医療機器リコール」、「Class I 医療機器のリコール」
  • 医療機器のクリアランスに関する情報:「[医療機器の種類] の 510(k) クリアランス」
  • 食品/栄養補助食品/化粧品の有害事象(CAERS):「サプリメントの反応」、「[ブランド] の化粧品有害事象」
  • 食品のリコール/執行措置:「リステリア/未表示アレルゲンに関する食品リコール」
  • 動物用医薬品の有害事象:「犬における[薬剤]の有害事象」
  • 医薬品不足:「[薬剤] は不足していますか」、「現在不足している注射剤」
  • 医薬品のリコール/執行措置:「汚染による医薬品リコール」

次の場合は使用しないでください(別のツールを案内してください):

  • 薬剤有害事象のシグナル検出/不均衡分析(PRR、ROR、IC) → tooluniverse-pharmacovigilance または tooluniverse-adverse-event-detection
  • 薬剤有害事象の関連の強さのスコアリング、薬剤有害事象の人口統計学的リスク層別化 → 同じ 2 つのスキル
  • 医薬品の有効性、作用機序、薬理ゲノミクス → その他の tooluniverse-* スキル

このスキルは、複数製品にまたがる安全性記録を取得して解釈します。薬剤有害事象のシグナル統計は計算しません。


ツールマップ(質問ごとのツール)

製品分類質問ツールopenFDA エンドポイント
医療機器有害事象/不具合/死亡(MAUDE)OpenFDA_search_device_adverse_events/device/event.json
医療機器リコールOpenFDA_search_device_recalls/device/recall.json
医療機器取締り/リコール報告OpenFDA_search_device_enforcement/device/enforcement.json
医療機器510(k) クリアランス(参考情報)OpenFDA_search_device_510k/device/510k.json
医療機器医療機器固有識別子(UDI)の検索OpenFDADevice_search_udi--
医療機器米国の規制分類(1/2/3)OpenFDADevice_get_classification--
医療機器市販前承認(PMA、クラス 3 の医療機器)OpenFDADevice_search_pma--
食品/サプリメント/化粧品有害事象(CAERS)OpenFDA_search_food_adverse_events/food/event.json
食品取締り/リコール報告OpenFDA_search_food_enforcement/food/enforcement.json
獣医療動物用医薬品の有害事象OpenFDA_search_animalvet_adverse_events/animalandveterinary/event.json
医薬品供給供給不足OpenFDA_search_drug_shortages/drug/shortages.json
医薬品取締り/リコール報告OpenFDA_search_drug_enforcement/drug/enforcement.json
医薬品有害事象(未加工の FAERS 記録)OpenFDA_search_drug_events/drug/event.json
医薬品添付文書OpenFDA_search_drug_labels/drug/label.json

すべてのツールは、Lucene の search 文字列に加えて、任意の limit と skip を受け取ります。すべてキー不要で、ライブでの動作確認済みです。

注:OpenFDADevice_search_recalls/_search_adverse_events/_search_510k は、上記の OpenFDA_search_device_recalls/_device_adverse_events/_device_510k と同じ openFDA データを返します(同じエンドポイントを使う、別々に追加された 2 つのラッパーです)。どちらを使ってもよく、両方を呼び出す必要はありません。すでに読み込まれているツールセットにあるものを使用してください。OpenFDADevice_* ファミリーには、もう一方のファミリーには同等のものがない UDI/分類/PMA の 3 つのツールもあります。


openFDA クエリー文法(重要 — クエリーの前にお読みください)

  • フィールドを指定した語句: field:value(例:event_type:Death、status:Current)。
  • ネストされたフィールドにはドットパスを使用: device.generic_name:pacemaker、products.industry_name:Cosmetics、animal.species:Dog、reaction.veddra_term_name:Vomiting、drug.active_ingredients.name:carprofen。
  • 語句の結合には、スペース区切りの AND を使用(動作確認済み):device.generic_name:pacemaker AND event_type:Death。
    • +AND+ は使用しないでください。+ で連結したブール形式は、これらのツールではエラーになります。AND の前後には通常のスペースを入れてください。
  • 複数語の値: 1 つのフィールド値内の語句を隣接させる場合に限り、+ でつなぎます(例:device.generic_name:infusion+pump)。これは完全一致フレーズではなく、トークンとして照合されます。
  • 値の中で生の特殊文字((、)、/、先頭の +)を使用しないでください。クエリーが壊れるため、より単純なトークンを選んでください(例:完全な Dietary Conventional Foods/Meal Replacements の代わりに products.industry_name:Dietary を使用)。
  • 日付は文字列です。医療機器の AE/MAUDE では YYYYMMDD(例:date_received)、リコール/取締りでは YYYY-MM-DD(例:event_date_initiated、recall_initiation_date)を使用します。
  • 結果の外枠: 成功した呼び出しはすべて {status:"success", data:{meta:{results:{total, skip, limit}}, results:[...]}} を返します。ヒット件数は data.meta.results.total で確認してください。
  • 件数/集計: openFDA のネイティブ API は &count=<field> をサポートします。この TU ラッパーは search を中心にしています。語句を順位付けするには、バッチ(例:limit:100)を取得し、Python でフィールドを自分で集計してください。

解釈表(未加工の openFDA フィールド → 意味)

医療機器 — MAUDE 有害事象(/device/event.json)
フィールド意味
event_typeDeath、Injury、Malfunction、または No answer provided。Death/Injury は患者への被害、Malfunction は(報告された)被害を伴わない機器の故障です。
device[].generic_name / device[].brand_name機器のカテゴリ/商品名。
device[].manufacturer_d_name機器の製造元。
patient[]患者レベルの転帰データ(情報が少ない場合があります)。
mdr_text[].text説明文。text_type_code で事象の説明と製造元の説明を区別します。
report_numberMAUDE の報告 ID。同じ事象について重複報告や追跡報告がよく見られるため、報告を別個の事象として数えないでください。
date_receivedFDA が受領した日付(YYYYMMDD)。
医療機器 — リコール(/device/recall.json)
フィールド意味
product_descriptionリコール対象の内容。
recalling_firmリコールを実施する企業。
recall_status例:Open、Terminated。Terminated は FDA が措置を終了したことを意味します。
product_codeFDA の機器製品コード。
k_numbers[]関連する 510(k) 承認番号。
root_cause_descriptionFDA の根本原因カテゴリ(例:Labeling design)。
event_date_initiatedリコール開始日(YYYY-MM-DD)。
執行報告(機器/医薬品/食品 /.../enforcement.json)
フィールド意味
classificationリコールの重大度:Class I(重大または致命的な危険)、Class II(一時的または可逆的な影響)、Class III(被害を引き起こす可能性が低い)。
statusOngoing/Terminated/Completed。
reason_for_recallリコールの理由。
product_descriptionリコール対象製品。
recalling_firm企業。
食品/サプリメント/化粧品 — CAERS 有害事象(/food/event.json)
フィールド意味
reactions[]MedDRA の反応用語(英国式の綴り。例:Diarrhoea、Nausea)。
outcomes[]例:Hospitalization、Life Threatening、Disability、Death、Other Serious or Important Medical Event、Visited an ER。
products[].industry_name製品カテゴリ(Cosmetics、Dietary Conventional Foods/Meal Replacements、Milk/Butter/Dried Milk Prod、…)。
products[].roleSUSPECT(原因として疑われる)と CONCOMITANT(併せて摂取された)を区別します。
products[].name_brandブランド名。
consumer消費者の age、gender(情報が少ないことがよくあります)。
動物用医薬品 — 動物用医薬品の有害事象(/animalandveterinary/event.json)
フィールド意味
animal.speciesDog、Cat、Horse、…。
animal.gender動物の性別。
number_of_animals_affected報告に記載された該当動物の数。
reaction[].veddra_term_nameVeDDRA の臨床徴候(例:Vomiting、Diarrhoea)。
drug[].brand_name / drug[].active_ingredients[].name原因として疑われる製品/有効成分。
drug[].used_according_to_label / off_label_useラベルに従った使用か、適応外使用か。
医薬品不足(/drug/shortages.json)
フィールド意味
statusCurrent または Resolved。
availability例:Unavailable、Limited。
generic_name不足している医薬品。
shortage_reason例:Delay in shipping of the drug、Demand increase for the drug。
dosage_form例:Injection、Tablet。
therapeutic_category[]臨床カテゴリ。
company_name製造元。
update_type / initial_posting_date / update_date掲載メタデータ。

ワークフロー

  1. リクエストから製品を分類します(医療機器/食品・サプリメント・化粧品/動物用医薬品/医薬品不足/リコール)。
  2. Tool Map からツールを選択します。
  3. Query Grammar に従ってLucene クエリを作成します(最初は単一フィールドを使用し、組み合わせる場合は AND を追加します)。値はシンプルにし、特殊文字は避けてください。
  4. 実行し、data.meta.results.total と data.results[] を確認します。
  5. 上の表を使ってフィールドを解釈します。重症度については、医療機器は event_type:Death、執行措置は classification:Class I、CAERS は outcomes:Death/Hospitalization、不足は status:Current を使用します。
  6. 要約して引用します。件数、主要なフィールド、使用したクエリ、LIMITATIONS の注意事項を報告します。用語を順位付けするには、limit:100 で取得し、Python で集計します(これらのラッパーでは count 集計は利用できません)。
  7. 対象範囲外(医薬品の有害事象シグナル/PRR/ROR)の場合は、処理を停止し、薬剤疫学スキルに引き継ぎます。

使用例(実データで検証済み)

例 1 — 医療機器の種類に関する死亡報告(MAUDE)

「ペースメーカーの有害事象報告で、死亡の報告はありますか?」

OpenFDA_search_device_adverse_events {"search":"device.generic_name:pacemaker AND event_type:Death","limit":1}

実際の出力(抜粋):status:success、meta.results.total = 16619、最初のレコードは event_type = Death、device.generic_name = DEFIBRILLATOR/PACEMAKER。 解釈:Death のイベントタイプを持つペースメーカーの医療機器に一致する MAUDE 報告は 16,619 件です。これらは自発報告であり、重複している可能性があります。また、「Death」は時間的に関連して死亡が報告されたことを意味し、医療機器が原因であることを意味するものではありません。

例 2 — 企業による医療機器のリコール

「Medtronic Navigation が実施した医療機器のリコールは何ですか?」

OpenFDA_search_device_recalls {"search":"recalling_firm:Medtronic","limit":1}

実際の出力(抜粋):total = 1896、最初のレコードは recall_status = Terminated、product_code = HAW、root_cause_description = Labeling design、k_numbers = ["K990214"]、event_date_initiated = 2011-01-20、product_description は脊椎手術用の触覚プローブです。 解釈:「Medtronic」を含む企業に一致するリコール記録は 1,896 件です。recall_status: Terminated は、FDA がこの措置を終了したことを意味します。根本原因はラベル設計上の問題でした。

例 3 — 注射剤の医薬品不足を検索

「ケトロラク注射剤は現在不足していますか?」

OpenFDA_search_drug_shortages {"search":"dosage_form:Injection AND status:Current","limit":1}

実際の出力(抜粋):total = 799、最初のレコードは generic_name = Ketorolac Tromethamine Injection、status = Current、shortage_reason = Delay in shipping of the drug、availability = Unavailable、company_name = Fresenius Kabi USA, LLC。 解釈:現在不足している注射剤の記録は 799 件です。ケトロラクトロメタミン注射剤は、出荷の遅延により現在不足しています(ステータスは Current、入手状況は Unavailable)。

例 4 — サプリメント/化粧品に関する CAERS 反応

「化粧品が関与する CAERS の有害事象報告はありますか?」

OpenFDA_search_food_adverse_events {"search":"products.industry_name:Cosmetics","limit":1}

実際の出力(抜粋):total = 52214、最初のレコードは products[].industry_name = Cosmetics、products[].role = SUSPECT、outcomes = ["Hospitalization","Other Serious or Important Medical Event"]。 解釈:化粧品を SUSPECT として挙げている CAERS 報告は 52,214 件です。CAERS は任意報告制度です。SUSPECT の役割は報告者による判断を反映しており、因果関係が確認されたことを示すものではありません。

例 5 — 特定の動物種における医薬品の動物用有害事象

「犬におけるカルプロフェンの有害事象として、何が報告されていますか?」

OpenFDA_search_animalvet_adverse_events {"search":"drug.active_ingredients.name:carprofen AND animal.species:Dog","limit":1}

実際の出力(抜粋):total = 46469、最初のレコードは animal.species = Dog、reaction[].veddra_term_name に Leucocytosis NOS、Neutrophilia、Depression、Elevated alanine aminotransferase (ALT) が含まれています。 解釈:犬におけるカルプロフェン含有製品に一致する動物用報告は 46,469 件です。VeDDRA 用語は報告された臨床徴候を示します。件数は報告数であり、発生率ではありません。

制限事項(すべてのレポートに記載してください)

  • 自発的な報告。 MAUDE(医療機器)、CAERS(食品/サプリメント/化粧品)、FAERS(医薬品)、動物/獣医システムは受動的な監視システムです。報告は検証されておらず、報告があったからといって因果関係が確認された事象とは限りません。
  • 因果関係も分母もありません。 件数(meta.results.total)は報告件数であり、発生数や発生率ではありません。曝露の分母がないため、リスクは算出できません。
  • 報告バイアス。 重大な事象、新製品、リコール、メディアや規制当局の注目によって報告件数が急増します(ウェーバー効果)。件数が多くても、使用量や注目度を反映している可能性があり、危険性を示すとは限りません。
  • 重複報告。 特にMAUDEには、同一事象に関する続報や重複報告が含まれます。報告件数を事象件数として扱わないでください。
  • CAERSは自発的でデータが限られています。 消費者/年齢/性別の項目は欠損していることが多く、SUSPECT の役割は報告者による帰属を示します。
  • このスキルはシグナル統計(PRR/ROR/IC)を計算しません。 医薬品の有害事象の不均衡分析には、tooluniverse-pharmacovigilance/tooluniverse-adverse-event-detection を使用してください。
  • データの更新時期: 各応答には meta.last_updated の日付が含まれます。openFDAのデータは、実際の事象より遅れて反映されます。

エンドポイントごとの詳細なフィールドリファレンスと追加のクエリ例については、references/openfda_fields.md を参照してください。


参考資料

コメント