Atlas安装教程
由于OHDSI生态中,Atlas作为统计分析处于比较重要的地位,鉴于官网的安装文档比较简陋,且存在错误的部分,所以此处基于自身经验,提供了一份完整的安装文档帮助中国地区的OHDSI初学者用于入门。
先决条件
本教程暂时适配的是Atlas 2.8.0版本其它版本的安装可能存在一些不同。我们暂时使用Postgresql作为CDM和Atlas的元数据库,鉴于WebAPI 3.0之后不再支持其它数据库,且Postgresql的功能足够强大。
软件环境
Postgresql 10 (其它版本的可能存在兼容性问题)且硬盘大于100GB
Tomcat 8.X (虽然使用Spring Boot开发,但是由于添加了很多自定义的Maven插件,所以还是建议使用War包进行部署)
R 4.0.X、R Tools 4.0.X 且仅安装64位
JDK 1.8.X 且仅安装64位
Maven 3.X
Node JS LTS版本
Git
取决于你的服务器和客户端的操作系统,请安装对应的程序,另外如果你在之前对OMOP、CDM等理论知识不了解,建议熟悉之后再进行后续的安装,当然如果只是简单部署你也可以选择使用Docker Compose进行一键安装,具体效果未知。
实施流程
Atlas = Atlas Front + WebAPI + CDM + VOCAB
WebAPI = RESULTS + TMP + ACHILLES
安装步骤
一旦你已经完成了先决条件中所有软件的安装,让我们开始真正的Atlas安装步骤
安装 WebAPI
WebAPI是一个基于Java的程序,用来提供一系列的web接口用来和CDM数据库进行交互。当然它也有自己的数据库用来存储需要连接的CDM数据库配置信息、队列定义信息、概念集合、分析配置信息等。
下载对应版本的源代码
解压之后,创建WebAPIConfig目录,复制sample_settings.xml配置文件到新目录中,修改配置文件中的部分内容
datasource.url - 当前应用的数据库地址,源代码中的数据库地址为localhost、数据库名为OHDSI,如果你的配置信息不同,需要修改。
datasource.ohdsi.schema - 由于postgresql的数据库中可以包含多个模式,当前参数配置的模式为WebAPI应用的模式,默认为webapi,如果你没有手动创建当前模式的话,需要手动创建或者修改配置
datasource.username、datasource.password - 默认配置了ohdsi_app_user用户作为webapi的普通用户,可以增删改查webapi中的所有表和数据
flyway.datasource.username、flyway.datasource.password - flyway用于创建webpi所需要的表,默认为ohdsi_admin_user,拥有webapi的全部权限
在postgresql中创建对应用户、数据库的命令如下,需要使用postgres管理员登录
3.构建war包,执行打包命令,此处使用postgresql的打包参数,打包完成后我们可以在target目录下看到WebAPI.war的文件
4.启动tomcat,将打包好的文件复制到tomcat主目录下的webapp目录中,稍等一段时间之后,tomcat将会自动完成webapi的部署,在这个过程中会自动在webapi下创建应用所需的全部表结构,如果启动过程中出现表不存在等关系,请检查flyway.datasource的配置,例如用户没有授权,schema指定的不对等,如果在第一次启动过程中由flyway初始化失败导致项目启动失败,请在下次启动之前,删除schema_version表,否则程序不会重新进行表的初始化
5. 验证webapi的发布是否成功,打开浏览器访问 http://localhost:8080/WebAPI/info,如果页面返回类似下图的信息,即表示webapi的部署基本成功,当然此时你还没有配置任何的CDM数据源,仅仅是完成了WebAPI的安装
安装 CDM、Vocab
CDM为实际的业务数据,所以需要你能够提前将转换后的数据写入到CDM中,Vocab为OMOP的术语库,需要从athena下载你需要的字典文件导入。
下载CDM所需的sql脚本,处于兼容性的考虑,我们使用的是v5.3.1版本的数据,如果你使用了v6.0的cdm模型,可能你需要对自己的模型进行降级,不过问题不大,只需要修改部分字段的名字和删掉death表
取决于你使用的数据库,此处我们假设你使用的是postgresql数据库,打开项目目录中的PostgreSQL目录,按顺序执行sql脚本
首先执行create domain datetime2 as timestamp;语句,创建自定义的类型,这个sql并没有在官方的仓库中提及,但是会导致你后续的脚本执行失败
执行OMOP CDM postgresql ddl.txt,创建基础表结构
此时你需要导入OMOP术语库的文件,这样的导入速度是最快的,一旦你创建完关联关系之后,这个操作将会变得非常耗时
执行OMOP CDM vocabulary load - PostgreSQL.sql之前你需要把你从athena下载的zip文件解压到和数据库相同的服务器上,请检查文件所在目录是否和脚本相对应,否则会导致执行失败
最后执行OMOP CDM postgresql indexes.txt,此处会创建表对应的索引
虽然还剩余一个文件我们并没有执行,但是你的CDM数据库已经安装完成,此处建议不要执行OMOP CDM postgresql constraints.txt,这个脚本里面的命令会导致数据库对CDM模型进行极大的限制,有些限制其实并不需要,因为在实际进行统计分析时是不必要的,但是一旦你执行了这些sql,你将无法写入你的业务数据到CDM中
安装 Achilles
一旦完成了CDM的安装,且已经写入了业务数据,此时需要进行质量检测和数据的基础统计来给Atlas提供一些基础信息,此处我们做一些简化操作,直接执行命令即可,不需要下载额外的库
首先安装Achilles的R语言库
创建cdm的数据库连接,请注意修改数据库的配置信息
执行achilles的扫描程序,此处我们使用并发扫描,需要注意几个参数
cdmDatabaseSchema - cdm的模式,里面存放的是你的业务数据
vocabDatabaseSchema - vocab的模式,里面存放的是OMOP的术语库,虽然你可以创建一个独立的术语库,但是由于atlas已经在代码中硬编码了cdm和vocab的模式,所以你只能将cdm的数据和vocab的数据放在一个模式中
resultsDatabaseSchema - achilles执行结果的模式,此处会存放最后统计分析出来的结果
scratchDatabaseSchema - achilles执行的中间表数据库
runCostAnalysis - 是否执行费用的统计分析,此处我们忽略,如果你的cdm中包含费用的数据,可以打开,不过会增加较多的执行时间
导出JSON文件,如果你想使用Achilles Web查看统计结果的话
创建achilles的缓存
请在rtool中执行以上命令,由于兼容性等等问题,请始终仅安装64位版本,如果你的cdm数据量较大例如超过10万以上,请关注数据库服务器的性能是否够用,否则你可能会等待超过一天的时间来执行这些命令
接下来如果你是第一次运行achilles,我们需要执行一些sql,生成一些配置表用于atlas使用,如果你想直接通过atlas获取部分sql的话,请在浏览器访问
http://localhost:8080/WebAPI/ddl/results?dialect=postgresql&schema=results&vocabSchema=cdm&tempSchema=temp&initConceptHierarchy=true,浏览器上将会返回所有你需要执行的sql,请检查schema、vocabSchema、tempSchema的值分别对应achilles结果模式、OMOP术语模式、临时表模式。
如果你使用默认的配置去创建数据库的话,我们也提供了一份完整sql脚本,你可以直接执行
下载地址:https://gist.github.com/bdc0770e089677ff3c3ef1a052d89df3
在webapi库中配置当前CDM的信息,这样你就可以在atlas中去访问这些数据了,请在webapi的schema中执行这些命令,注意你配置的数据库地址应该和你执行achilles中的数据源配置相同,完成这些配置信息后,调用webapi的接口刷新数据源
http://localhost:8080/WebAPI/source/refresh
安装 Atlas Front
一旦你执行过了Achilles,接下来还剩最后一个组件atlas的前端项目。
下载对应版本的源代码
在项目根目录创建两个配置文件,避免后续部署之后,在浏览器上访问报错
执行打包命令
3. 打包完成后,直接将项目目录复制到tomcat中即可,此时通过浏览器访问前端地址http://localhost:8080/atlas/#/home,就可以看到atlas的主页了
4. 如果前端页面显示红色的报错信息,提示configuration配置错误,则可能是因为webapi中的souce、source_diamond表的配置信息异常导致
创建分析
首先访问configuration页面,确认你的cdm数据源都是可用的
如果出现undefined等提示,请检查cdm的配置信息是否正确
2. 点击search按钮,进入术语搜索页面,搜索warfarin,确认术语库的安装正确
3. 点击Data Source按钮,查看CDM中的数据,如果你的cdm总有对应的数据,那么你应该能够看到如下所示的信息,如果你点击查看其它表的数据的时候报错,请确认achilles中的第七步操作是否执行,还有一点就是如果你的concept数据没有进行标准化,此页面也不会显示任何数据,对于atlas分析平台来说,它只能识别标准的概念
4. 在concept sets中创建一个概念集,此处我们选择几个疾病的术语,修改概念集的名字
5. 进入cohort Definition,创建队列,选择conditon作为入队标准,保存之后,查看concept sets中点击condition,查看概念集是否有匹配的数据,如果为0的话你将不会在看到任何人进入你定义的队列中
确认完毕之后,进入Generation的页面中,点击generate生成入队的数据,此处依然需要确认是否有数据,否则其它模块的统计分析将不会产生任何的数据
6. 进入Characterization模块中,创建一个表征分析,使用刚才定义的队列,并选择你想使用的分析方法
7. 切换到Executions的页面中,点击执行,过一段时间后,你将可以查看分析结果
欢迎交流
以上是本人在实践atlas的过程中所总结的一些经验,如果你有任何疑问或者希望交流关于OHDSI生态组件的使用欢迎联系作者。
邮箱地址:1163525902@qq.com
最后更新于