清洗后的数据
包含的数据列
列的含义
demo
primaryid
报告唯一识别码 各表连接的主键
caseid
案例码
案例(caseid)更新,会生成不同报告(primaryid)
event_dt
AE开始的时间
fda_dt
FDA接收报告的时间
age_grp
年龄组
occr_country
发生AE的国家
reporter_country
上报AE的国家
age_year
年龄(单位为年)
sex
性别
wt_kg
体重(单位为kg)
occp_cod
上报者身份代码
drug
primaryid
同demo
drug_seq
事件里的药物识别码
role_cod
药物角色代码
caseid
同demo
drugname
药名
route
给药途径
prod_ai
活性成分
reac
primaryid
同demo
caseid
同demo
pt
AE
indi
primaryid
同demo
drug_seq
同drug
indi_pt
适应症
caseid
同demo
outc
primaryid
同demo
caseid
同demo
outc_cod
转归/结局代码
ther
primaryid
同demo
drug_seq
同drug
start_dt
一个药物开始或重新开始治疗的时间
caseid
同demo
四、问题的解决思路4.1 问题1的解决思路目标药物上市时间可以通过FDA官网查询。FAERS数据库挖掘,所用数据的时间范围一般有三种:1、从建库至今2、从目标药物上市季度至今3、从目标药物上市时间至今不同方法的选择,会对前期数据清洗的过程产生一定影响:第1种时间范围,需要下载所有数据,然后进行清洗;这种方法的对象主要是已经上市很久的药品。第2种时间范围,只需下载上市季度至今的数据进行清洗,数据量会小很多;或者在第1种方法得到数据的基础上,提取目标药物上市季度至今的数据。第3种方法,可以在第1或2种方法得到的数据基础上,提取上市时间至今的数据。相关论文对3种方法均有采用,这里不讨论哪种方法更加合适。本篇的例子就是先清洗了建库至今的所有数据,然后又提取了目标药物上市季度至今的的数据。4.2 问题2的解决思路1、数据挖掘方法一般采用频率法和贝叶斯法,不管是频率法中ROR/PRR,还是贝叶斯法中的BCPNN等,都涉及到药品不良反应四格表,如下图:drug
Target adverse reaction
Other adverse reactions
Target drug
a
b
Other drug
c
d
主要通过对drug和reac表格的操作,得到a/b/c/d和N(a+b+c+d)。2、论文涉及到的目标药物不良事件报告的基本情况,例如性别、年龄、报告年份、国家、上报人、转归结果、适应症、报告数量等,可以通过对reac/demo/outc/indi等表格的操作,提取获得。五、程序实现假定目标药物的上市时间在2015年第1季度;假定目标药物的名称为“A”。library(tidyverse) #载入tidyverse
demo <- read_csv("……/demo.csv") #读取建库至今清洗后的demo#注意更换为自己的路径demo_2015Q1<- demo %>% filter(fda_dt >= 20150101)#通过fda_dt截取所需时间范围内的demo数据write_csv(demo_2015Q1, " demo_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_2015Q1 <- demo_2015Q1$primaryid#提取目标药物上市后所有priamryid,用于drug表格中上市后所有数据提取
drug <- read_csv("……/drug.csv")#读取建库至今清洗后的drugdrug_2015Q1 <- drug %>% filter(primaryid %in% prid_2015Q1) %>% filter(role_cod == "PS")#提取2015Q1至今的所有drug数据#role_cod设定为主要怀疑药物ps,如果有其他需求,可以通过更改role_cod的筛选条件进行重新提取write_csv(drug_2015Q1, " drug_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_drug_2015Q1<- drug_2015Q1$primaryid#提取drug_2015Q1中的所有primaryid,用来提取reac表格中的数据
reac <- read_csv("……/reac.csv")#读取建库至今清洗后的reacreac_2015Q1 <- reac %>% filter(primaryid %in% prid_drug_2015Q1)#提取上市季度至今的reacwrite_csv(reac_2015Q1, "reac_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
drug_A <- drug_2015Q1 %>% filter(prod_ai == "A")#在drug_2015Q1中提取目标药物A的子集#需要注意,我为了写程序方便,采用了相对更标准的prod_ai进行示例;prod_ai出现相对较晚,较早的案例就只能通过drugname进行检索提取;由于drugname并未进行标准化,所以需要通过程序,尽量把涉及目标药物A的子集提取到,包括但不限于不同的商品名、通用名等等。write_csv(drug_A, " drug_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_A <- drug_A$primaryid#提取目标药物A的primaryid
reac_A <- reac_2015Q1 %>% filter(primaryid %in% prid_A)#根据prid_A,对reac提取目标药物数据write_csv(reac_A, "reac_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
demo_A <- demo_2015Q1 %>% filter(primaryid %in% prid_A)#根据prid_A,对demo提取目标药物数据write_csv(demo_A, "demo_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
indi <- read_csv("indi.csv")#载入建库至今清洗后的indiindi_A <- indi %>% filter(primaryid %in% prid_A)#根据prid_A,对indi提取目标药物数据write_csv(indi_A, "indi_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
outc <- read_csv("outc.csv")#载入建库至今清洗后的outcoutc_A <- outc %>% filter(primaryid %in% prid_A)#根据prid_A,对outc提取目标药物数据write_csv(outc_A, "outc_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
ther <- read_csv("ther.csv")#载入建库至今清洗后的therther_A <- ther %>% filter(primaryid %in% prid_A)#根据prid_A,对ther提取目标药物数据write_csv(ther_A, "ther_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
六、所得数据小结
提取到的表格
表格用途
drug_2015Q1
统计abcdN
reac_2015Q1
统计abcdN
reac_A
统计目标药物不良事件报告数
demo_A
统计目标药物不良事件报告的基本特征
indi_A
统计目标药物的适应症
outc_A
统计目标药物不良事件的患者结局
ther_A
统计目标药物的治疗使用情况
后续会根据以上表格,进行论文所需数据的统计提取。 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。