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的术语结构如下图所示:

MedDRA

asc文件

我们拿到的MedDRA文件一般是asc文件,其格式如下:

asc

这里我们拿到的是最新的26.1中文版本MedDRA。

如果不用SAS读取,在MDB中显示如下:

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起来。

最终输出的文件如下:

output

这就拿到了我们想要的文件,也就解决了小红书那位同学的问题。

完整的SAS宏代码我已经放进了星球里,感兴趣的同学可以去看看。

Did you find this page helpful? Consider sharing it 🙌

Zhen Lu
Zhen Lu
Biostatistician, Clinical Epidemiologist

Walk with the master

Related