MedDRA的asc文件的SAS读取
问题
起因是,有同学在小红书上提问,怎么用SAS读取MedDRA的asc文件。
那我们这篇文章就在不使用MedDRA Desktop Browser (MDB)前提下,用SAS实现一下。
MedDRA
首先,还是介绍下MedDRA,MedDRA是Medical Dictionary for Regulatory Activities的缩写,是由国际药品监管机构协调委员会(International Council for Harmonisation of Technical Requirements for Pharmaceuticals for Human Use,简称ICH)制定的一套医学术语词典,用于药物不良事件(Adverse Event,简称AE)的记录、报告和分析。其旨在支持全球药物和医疗器械的监管和研究。该词典提供了统一的医学术语体系,用于描述和报告与药物治疗相关的医学事件和药物副作用。
MedDRA的主要特点:
- 全球标准化: MedDRA是全球性标准,被世界范围内的药品监管机构采用,包括美国FDA、欧洲药物管理局(EMA)等。
- 多语言支持: 以多语言形式提供,促进全球卫生专业人员、研究人员和监管机构之间的有效沟通。
- 层次化结构: 采用层次化的术语结构,从高层次的系统性术语到更具体的事件术语,为不同层次的用户提供了灵活性。
- 定期更新: MedDRA定期进行更新,以反映新兴的医学知识和新药物的开发。
MedDRA的术语结构如下图所示:
asc文件
我们拿到的MedDRA文件一般是asc文件,其格式如下:
这里我们拿到的是最新的26.1中文版本MedDRA。
如果不用SAS读取,在MDB中显示如下:
SAS读取
我们可以用SAS的infile
来读取,首先导入SOC/HLGT/HLT/PT hierarchy文件,如下:
data mdhier_&dsver.;
infile "&path.\mdhier.asc" dsd dlm='$' missover lrecl=32767;
length pt_name
hlt_name
hlgt_name
soc_name $100
soc_abbrev $5
null_field $1
primary_soc_fg $1;
input pt_code
hlt_code
hlgt_code
soc_code
pt_name
hlt_name
hlgt_name
soc_name
soc_abbrev
null_field
pt_soc_code
primary_soc_fg;
length ver $4;
ver = left("&ver.");
aebodsys = upcase(soc_name);
aedecod = upcase(pt_name);
run;
然后再类似地分别导入PT、LLT level文件,再将二者通过pt code merge起来,最后再将SOC/HLGT/HLT/PT level文件merge起来。
最终输出的文件如下:
这就拿到了我们想要的文件,也就解决了小红书那位同学的问题。
完整的SAS宏代码我已经放进了星球里,感兴趣的同学可以去看看。