Skip to content
Otola-RyntaroPublic

About

clarith - local drug-interaction checker for clarithromycin and 20 representative drugs (Chrome extension + local FastAPI, PMDA package inserts). MIT licensed.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

くらりす

Claryth

現在のアプリバージョンは0.2.0です。変更内容はCHANGELOGを参照してください。

くすりの らくな リスク スクリーニング、略して「くらりす」です。

クラリスロマイシンなど相互作用確認が少し面倒な薬を基準に、複数の処方薬・OTC医薬品との組み合わせをローカルで調べるためのChrome拡張です。FastAPIとSQLiteをPC内で動かし、薬剤名候補の補助だけ任意でOllamaを使えます。

Warning

このツールは医療判断を代替しません。「記載なし」は相互作用がないことの保証ではありません。実際の判断では、必ず最新の電子添文、患者背景、用量、腎・肝機能などを確認してください。

Important

個人開発の実験的なオープンソース公開です。品質・正確性・最新性は保証しません。診断・治療・処方の判断根拠として使わないでください。利用は自己責任でお願いします(LICENSEの無保証条項に従います)。

主な機能

  • 一般名、販売名、頻用OTC商品名を最大20件まとめて入力
  • 基準薬をトップ20から選択。既定はクラリスロマイシン
  • 選択薬側と入力薬側のPMDA電子添文10.1・10.2を双方向に直接名称照合
  • 表記揺れや軽微な誤字から候補を提示し、利用者が薬剤を確定
  • 併用禁忌、併用注意、確認資料上の記載なしなどを薬剤ごとに表示
  • 該当行をローカル根拠ページで表示し、PMDA電子添文PDFへ移動
  • 相互作用、重大度、根拠、説明はLLMで生成せず、SQLiteの収載内容だけを表示
  • 標準動作はLLMなし。Ollamaは薬剤名候補の補助だけに使用
  • APIは127.0.0.1:8765、Ollamaは127.0.0.1:11434だけを使用
  • 拡張機能とAPIはユーザー単位の共有トークンで接続
  • 起動時に署名、DBハッシュ、SQLite完全性、スキーマ版、有効期限を確認

はじめる

詳しい画面操作やトラブル対応は初心者向けユーザーガイドを参照してください。

Windows PowerShellでプロジェクトフォルダを開き、同梱DBをそのまま使う場合は次を実行します。

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install_release.ps1

その後、Chromeでchrome://extensionsを開き、デベロッパーモードを有効にして、生成されたextension/distを「パッケージ化されていない拡張機能」として読み込みます。サイドパネルで「判定APIを起動」を押すと、このPC用のローカルAPI認証情報を自動取得します。distにはAPIトークンを保存しません。

同梱DBは動作確認用です。データ状態、署名、期限、DB変更などに問題がある場合、画面上部に理由が表示され、相互作用判定は停止します。

ローカル開発

PMDA XMLからDBを作り直す場合は、PMDAの一括ダウンロードサービスから取得したSGML/XMLをdatabaseへ展開してから実行します。

python -m pip install uv==0.11.21
uv sync --locked --extra test

cd extension
npm ci
cd ..

.\.venv\Scripts\python.exe scripts\init_db.py
.\.venv\Scripts\python.exe scripts\build_pmda_top20_db.py --source database --dataset-date 2026-06-12
$expiresAt = (Get-Date).ToUniversalTime().AddDays(30).ToString("o")
$manifestId = "local-$((Get-Date).ToString('yyyyMMdd-HHmmss'))"
.\.venv\Scripts\python.exe scripts\generate_release_signing_key.py --force
.\.venv\Scripts\python.exe scripts\sign_release_manifest.py --expires-at $expiresAt --manifest-id $manifestId
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install_windows_launcher.ps1

ローカルでAPI仕様画面が必要な場合だけ、起動前に次を設定します。通常起動では/docs、/redoc、/openapi.jsonを公開しません。

$env:CLARITH_MODE = "development"

AI薬剤名補助を使う場合は、別途Ollamaを導入してモデルを取得し、サイドパネルの「AI薬剤名補助を使う」をオンにします。オフの場合、OllamaへのHTTP通信は行いません。

ollama pull qwen3.5:9b

データ

同梱の動作確認用データ

これは開発・動作確認用の限定的な手動シードです。PMDA全件抽出結果を自動反映したデータではありません。

PMDA全件抽出用データ

  • 取得元: PMDA「医療用医薬品添付文書一括ダウンロードサービス」
  • 取得方法: 利用者がサービスからSGML/XMLを手動ダウンロードし、databaseへ展開
  • ローカル取得・展開日: 2026年6月12日
  • DB構築日: 2026年6月12日
  • 対象: XML 17,737ファイル、内容重複除外後11,245文書
  • 解析結果: クラリスロマイシン含有26文書、解析エラー0文書
  • 出力: backend/data/pmda_clarith.sqliteおよびartifacts/pmda_clarith/

トップ20検索では同じPMDA XMLからbackend/data/top20_interactions.sqliteを構築します。2026年6月12日の構築結果は、一般名3,954件、別名15,527件、10.1・10.2行43,235件です。

取得日はローカルファイルの取得記録とDBのsource_coverageに基づきます。個々の電子添文の改訂年月は文書ごとに保持しています。詳細は抽出レポートを参照してください。

PMDA検索画面の自動巡回は行いません。PMDAは検索ページの自動巡回ダウンロードを認めていないため、一括ダウンロードサービスから手動取得したファイルだけを処理します。

PMDAデータの再構築

databaseに手動取得したPMDA XMLを配置後、次を実行します。

.\.venv\Scripts\python.exe scripts\build_pmda_clarith_db.py --source database --dataset-date 2026-06-12
.\.venv\Scripts\python.exe scripts\validate_pmda_clarith_db.py
.\.venv\Scripts\python.exe scripts\build_pmda_top20_db.py --source database --dataset-date 2026-06-12

DBを再構築したら、manifestの再署名も必要です。

$expiresAt = (Get-Date).ToUniversalTime().AddDays(30).ToString("o")
$manifestId = "local-$((Get-Date).ToString('yyyyMMdd-HHmmss'))"
.\.venv\Scripts\python.exe scripts\sign_release_manifest.py --expires-at $expiresAt --manifest-id $manifestId

トップ20検索の制約

  • リスト中の薬剤群を一括判定せず、各順位から具体的な代表20成分を選択肢にしています。
  • 同じ薬効群でも成分ごとに結果が異なるため、プルダウンに表示された成分だけが基準薬です。
  • 現在は電子添文10.1・10.2の直接名称を双方向照合します。薬効群名だけの記載や患者条件からの推論は自動確定しません。
  • タクロリムスとロキソプロフェンの基準薬文書は全身投与・内服製剤に限定し、外用剤を除外しています。
  • 「記載なし」は直接名称を確認できなかったという意味で、安全性の保証ではありません。
  • 根拠ページは取得済み電子添文から抽出した10.1・10.2の該当行です。最終確認は併記されたPMDA電子添文PDFで行います。

トップ20成分の選定根拠

基準薬となる代表20成分は、併用禁忌の多さ、CYP/P-gp/OATPなど機序の複雑さ、出血・不整脈・中毒など重症化のしやすさ、腎機能・用量・商品名で判断が変わる度合いを基準に選定しています。各成分の選定理由・代表的な相互作用・出典はトップ20成分の選定根拠にまとめています。

構成

  • backend/: FastAPI、SQLite、薬剤名解決、相互作用判定
  • extension/: Chrome Manifest V3サイドパネル
  • pmda_builder/: PMDA XMLの解析と候補DB構築
  • scripts/: 初期化、起動、PMDA抽出用コマンド
  • docs/: 計画、チケット、ユーザーガイド、抽出レポート

プライバシー

入力はローカルAPIへ送信され、外部LLMには送信されません。AI補助を有効にした場合だけ、未解決の薬剤名とDB内候補がローカルOllamaへ送られます。患者氏名、ID、生年月日などの患者情報は入力しないでください。入力履歴を保存する機能はありません。

ライセンス

ソースコードはMIT Licenseで公開します。

Copyright (c) 2026 音良林太郎

PMDA電子添文など第三者が権利を持つ原資料・抽出データにはMIT Licenseを適用しません。PMDAの添付文書等情報検索ページご利用上の注意と各権利者の条件に従ってください。公開repoにはアプリ実行に必要な評価用SQLite DB、release_manifest.json、release_manifest.sigを同梱します。原XML、候補DB、作業用エクスポートはGit管理対象外です。

About

clarith - local drug-interaction checker for clarithromycin and 20 representative drugs (Chrome extension + local FastAPI, PMDA package inserts). MIT licensed.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages