前回から引き続き、今度は具体的にPMDAによる薬剤安全性監視データベース(JADER)からデータ取得し、読み込んで、基本的な解析をやってみるところについてRでのやり方の一例をまとめる。
(ちなみに自前の実行環境はMacOS, メモリ64GB, RStudio使用(R ver. 3.5.1)。*おそらくメモリは16GBもあれば可能と思われる)



1。データのダウンロード
サイト(利用について)にアクセスし、注意事項など確認する。次に進むとDLページに出る。csvファイルで87Mb程度。本日(8月更新)DLしてみると以下のようなファイルになる。
スクリーンショット 2020-08-30 21.40.35









2。データ構造
写真のように、DEMO, DRUG, HIST, REACの4ファイルになる。
Rで読み込む時には、日本語を含むのでencoding ='cp932'など設定しておく必要がある。例えば上写真フォルダが~/Desktop/JADERというフォルダの中にあったとすると(*Macの場合)、

library(dplyr)
demo <- read.csv( file("~/Desktop/JADER/pmdacasereport202008/demo202008.csv" ,encoding='cp932')  ,sep=',', header=T, stringsAsFactor=F )
drug <- read.csv( file("~/Desktop/JADER/pmdacasereport202008/drug202008.csv" ,encoding='cp932')  ,sep=',', header=T, stringsAsFactor=F )
hist <- read.csv( file("~/Desktop/JADER/pmdacasereport202008/hist202008.csv" ,encoding='cp932')  ,sep=',', header=T, stringsAsFactor=F )
reac <- read.csv( file("~/Desktop/JADER/pmdacasereport202008/reac202008.csv" ,encoding='cp932')  ,sep=',', header=T, stringsAsFactor=F )

で読み込める。データ自体大きくはないので
data.table::fread()
を使う必要はあまりない。
データは4半期ごとにUpdateされるが、報告時期(Q1~4)によって報告件数に偏りがあることが知られているので、時間単位で区切っていくには年度が最小単位になろうかと思われる。


以下、データ構造について自分なりに記載する。(他サイトにはより詳細な記載があるのでこちらも参照)



# DEMO

スクリーンショット 2020-08-30 21.51.29
識別番号は(すでに匿名化されているのでほとんど意味はないが)一応隠してみた。
DEMOの内訳は画像のようにID、報告回数、性別、年代、体重(あれば)、身長(あれば)、報告年度と時期、自発報告か臨床試験か、報告者のカテゴリー、などが含まれている。

・年代は「@歳代」という形式だけではなく、「高齢者」とか「小児」とか「成人」とか「不明」とか曖昧さが高いものも含まれるが15%程度未満ではあるので、「@歳代」の形式のみ数値カテゴリー変換して年齢として扱ってしまっても良いかもしれない

・性別についてはかなり欠損が少ない(不明ないし空欄は5%未満)
・身長・体重は空欄が50~60%を占めるので参考程度
・報告者の資格は、Drが50万/64万件、薬剤師が9万/64万件、くらいの分布になっている


#DRUG
スクリーンショット 2020-09-01 2.19.37

(画像は一部columnを省略している)
DEMOと共通するのはID(画像で左端の「識別番号」)で、同一IDで使用歴のある薬が時期によらず列挙されている(ただし漏れがない保証はない)。
・「医薬品の関与」は被疑薬・併用薬・相互作用のいずれかのラベル付けが最初からされており、解析対象の薬と副反応ADRとの関係で対象範囲を決めることになる。
・医薬品名は販売名よりは一般名で記載されていることの方が多い。
・使用理由はそのまま薬の適応ということだが、空欄の場合も結構あるし、また薬剤とその使用理由の関係が一見して明らかではない or 1:1対応ではないように思えるケースも散見されるので、参考程度。


#HIST
スクリーンショット 2020-09-01 2.15.51
こちらも、DEMOと共通するのはID(画像で左端の「識別番号」)で、同一IDでの原疾患が時期によらず列挙されている。ただどこまで網羅されているのか、またどの程度の病状であるのかetcなど基本的なところがわからないので参考程度。


#REAC

スクリーンショット 2020-09-01 2.27.36
副反応Adverse event (AE) / Adverse drug reaction (ADR) の内容。同一IDで出たものが全て記載されている。
有害事象のコーディングはMedDRAという階層構造の規定コーディングに基づいていて、基本レベルのPreferred Term (PT)で記載されることが多いが、それより大雑把な or より細かいレベルで記載されている時もある。似たようなAEをどこまで区別するか、また病態を総括的に記載するのか分割的に記載するのか、などで表記の揺れが発生しうる。
データから拾ってくる場合、検索式でカバーすることが多いが、特定のAE複数群を直接指定してpick-upしていくこともできなくはない(ただし実際のデータ分布を細かく把握しておく必要はある)。その場合、MedDRAの英語版(http://bioportal.bioontology.org/ontologies/MEDDRA  > Classesで)もあるので参考になる。



 


3。重複除外
DRUG, REACのデータでは、同一IDで同じ薬剤ないしAEが重複して列挙されていることがあったりする。こちらは「ID・薬剤」ないし「ID・AE」の組み合わせを見て(最新のもの以外を)重複除外することで対処できる。
一方、DEMOでIDが重複していることはないのだが、同一の症例がDrや製薬会社からなど複数の報告者によって別個に報告された結果、IDは違うが実際の症例は同一である、というパターンはありうる。この場合、これまで様々な検討はされているが、潜在的な重複を確実に除外できる方法はない。