見出し画像

医薬品副作用データベース③

前回の続きで、医薬品副作用データベース(JADER)から取得可能なデータを利用し、必要な情報を取り出すデータベースを作成します。


副作用(有害事象)から検索

前回は医薬品名(一般名 or 販売名)から検索するコードを作成しましたが、今回は副作用から被疑薬として報告されている医薬品名を抽出して件数を集計しましょう。
と言っても、SQL文自体の構造は前回の医薬品名からの検索と同じで良さそうで、検索する範囲(サブクエリ内のWHERE句)や出力するカラム名(SELECT句)あたりを変えればできそうですね。実際に挑戦してみてください!
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓
   ↓

import sqlite3
import pandas as pd

db = sqlite3.connect('side_effects.db')
c = db.cursor()

side_effect = input('有害事象を入力>')

c.execute("""
          SELECT `医薬品(一般名)`, count()
          FROM (
                SELECT DISTINCT * FROM join_table 
                WHERE 有害事象 like ? 
                AND 医薬品の関与 = '被疑薬'
                ) AS subquery
          GROUP BY `医薬品(一般名)` 
          ORDER BY count() DESC
          """, 
          [f'%{side_effect}%'])
results = c.fetchall()
c.close()
db.close()

if len(results) == 0:
    print(f'"{side_effect}"は、報告されていません。')
else:
    print(f'以下の薬剤を被疑薬とする"{side_effect}"の有害事象報告があります。')
    for result in results:
        print(f"・{result[0]}: {result[1]}件")

医薬品名から有害事象を検索するコードの時は、結果が0件だった場合を想定していませんでした…。今回は、抽出結果を格納するresultsという変数に含まれる要素の数(len(results))で分岐を設けて、出力されるテキストを変えています。

プログラムの実行

今回のサンプルコードは、そのままpyファイルとして保存して使用できます。せっかくなのでターミナルから実行してみます。

  1. 上記コードを「side_effects.py」というpyファイルでside_effects.dbと同じディレクトリに保存します。

  2. 「Windowsキー+R(ファイル名を指定して実行) → cmd」でコマンドプロンプトを起動

  3. 「cd "pyファイルやdbが保存してあるディレクトリパス"」でディレクトリを変更

  4. 「py side_effects.py」でpyファイルを実行

正常に実行されると、pyファイル中の「input('有害事象を入力>')」のところで入力を求められるのでコマンドプロンプトに検索したい有害事象を入力すれば、抽出・集計結果が出力されます。

試しに、「甲状腺機能低下症」と入力してみます。

結果がちゃんと出力されました。


このように、pythonコードでSQL文を扱えるSQLite3を使用すれば、手軽にデータベースをプログラムに組み込むことができます。
ただ、実行する時にディレクトリを変えたりするのが少し面倒・・・そう、batファイルにしておけば更に簡単に活用できそうです。
というわけで、次回はbatファイル化に挑戦です。

いいなと思ったら応援しよう!