zoukankan      html  css  js  c++  java
  • mimic-omop专病数据生产ETL

    MIMIC-OMOP转换

    1.数据与环境准备

    1.1 MIMIC-III v1.4数据集获取

    需从mimic官网注册申请并下载数据

     

    1.2 mimic-omop开源项目源码下载

    https://github.com/MIT-LCP/mimic-omop

    1.3 PostgreSQL数据库安装配置

    1.3.1 下载安装

    Linux环境,联网执行以下命令安装即可

    # Install the repository RPM:

    yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

     

    # Install PostgreSQL:

    yum install -y postgresql96-server

     

    # Optionally initialize the database and enable automatic start:

    /usr/pgsql-9.6/bin/postgresql96-setup initdb

    systemctl enable postgresql-9.6

    systemctl start postgresql-9.6

    1.3.2 配置初始化

    postgres用户初始配置

    安装完成后,操作系统会自动创建一个postgres用户用来管理数据库,为其初始化密码(输入命令后连输2次密码):

    $ passwd postgres

    数据库初始配置

    使用数据库自带的postgres用户登录数据库,并为其赋予密码

    $ su - postgres

    $ psql -U postgres

    postgres=# alter user postgres with password '你的密码';

    配置远程连接

    使用find / -name 'pg_hba.conf'查找到pg_hba.conf,修改pg_hba.conf在最后添加允许访问IP段(全网段可访问)

    host all all 0.0.0.0/0

    使用find / -name 'postgresql.conf'找到 postgresql.conf找到用户参数listen_address(取消掉注释),改成下面样式

    listen_address = '*' 

    启用密码验证

    #password_encryption = on 修改为 password_encryption = on

    重启数据库

    $ systemctl restart postgresql-9.6 

    2. MIMIC-III v1.4数据入库

    2.1 创建MIMIC数据库

    创建表空间

    postgres=# create tablespace mimic_omop_tbs location '/home/postgres9.6/tablespace';

    目录分配权限

    postgres=# chown postgres:postgres /home/postgres9.6/tablespace

    创建数据库

    postgres=# create database mimic tablespace mimic_omop_tbs ;

    切换到mimic数据库

    postgres=# c mimic;

    2.2 数据与项目源码准备

    将MIMIC-III v1.4数据上传至/home/mimic-datasource

     

    将mimic-omop源码上传至/home/mimic-omop-code/mimic-omop

     

    2.3 执行数据入库

    项目执行前,进入/home/mimic-omop-code/mimic-omop/mimic/build-mimic目录,修改postgres_load_data_gz.sql中mimic数据文件路径

    # sed -i 's/:mimic_data_dir//home/mimic-datasource/g' postgres_load_data_gz.sql

    进入PostgreSQL数据库,切换到项目源码目录

    mimic=# cd /home/mimic-omop-code/mimic-omop/mimic/build-mimic

    执行数据入库sql

    mimic=# i build-mimiciii.sql

    3. OMOP CDM建表

    3.1 获取CommonDataModel项目

    https://github.com/OHDSI/CommonDataModel下载源码,项目包括Oracle、SQL Server、PostgreSQL等数据库OMOP CDM模型建表DDL、主键、约束等SQL语句,可在数据库中完成OMOP CDM模型建表。

    按照mimic-omop/omop/build-omop/postgresql/README.md,进行OMOP CDM模型建表,其主要调用了CommonDataModel项目中DDL建表语句。其中,mimic-omop项目对CommonDataModel中建表语句进行了一些改进,具体按照README.md执行即可。

    3.2 修改DDL语句

    修改CommonDataModel项目中DDL语句

    sed -i 's/^CREATE TABLE ([a-z_]*)/CREATE UNLOGGED TABLE 1/' "omop/build-omop/postgresql/OMOP CDM postgresql ddl.txt"

    3.3 定义PSQL连接变量

    定义PSQL连接变量,后面执行语句sql使用

    export OMOP_SCHEMA='omop'

    export OMOP='dbname=mimic options=--search_path='$OMOP_SCHEMA

    3.4 创建schema并建表

    数据库中创建omop的schema并执行建表语句

    psql "$OMOP" -c "DROP SCHEMA IF EXISTS $OMOP_SCHEMA CASCADE;"

    psql "$OMOP" -c "CREATE SCHEMA $OMOP_SCHEMA;"

    psql "$OMOP" -f "omop/build-omop/postgresql/OMOP CDM postgresql ddl.txt"

    3.5 修改字段

    修改某些字段类型为text,NLP表添加字段等

    psql "$OMOP" -f "omop/build-omop/postgresql/mimic-omop-alter.sql"

    3.6 添加注释

    给OMOP表添加注释

    psql "$OMOP" -f "omop/build-omop/postgresql/omop_cdm_comments.sql"

    3.7 导入标准术语词表

    需要先下载词表,地址 https://www.ohdsi.org/analytic-tools/athena-standardized-vocabularies/ ,选择所有词表下载(大小1G多)。下载完成后压缩包内有多个csv文件(CONCEPT相关)与一个java文件(用来导入CPT词表),执行语句将词表导入数据库

    psql "$OMOP" -f "omop/build-omop/postgresql/omop_vocab_load.sql"

    4. 本地MIMIC-III CONCEPT加载

    OMOP CDM的全部内容都被编码为概念(Concepts),所有细节均保存在CONCEPT表。在创建OMOP CDM时已经加载了标准术语词表,这里还需要导入MIMIC数据集中的“本地”概念到CONCEPT表中。参考mimic-omop项目根目录下README-run-etl.md执行,具体操作如下:

    4.1 定义PSQL连接变量

    定义PSQL连接变量,后面执行语句sql使用

    export OMOP_SCHEMA='omop'

    export OMOP='dbname=mimic options=--search_path='$OMOP_SCHEMA

    export MIMIC='dbname=mimic options=--search_path= mimiciii'

    4.2 字典表生成concept_id

    先给mimiciii所有表添加mimic_id

    psql "$MIMIC" -f mimic/build-mimic/postgres_create_mimic_id.sql

    OMOP预留2000000000+作为本地概念编码,因此所有d_开头的字典表都添加了该范围的mimic_id字段作为concept_id

    4.3 本地csv文件导入

    mimic-omop项目还提供了额外的本地concepts位于extras/concept/*.csv,项目提供R脚本将csv文件入库到mimic

    l  安装R环境

    使用如下命令安装并启用 EPEL (如果已经安装过则忽略)

    yum install epel-release

    使用如下命令安装R

    yum install R

    从GitHub上安装RPostgres包

    install.packages("remotes") 
    remotes::install_github("r-dbi/RPostgres")

    注意,过程中可能需安装yum -y install postgresql-devel 不用再安装libpq否则包冲突

    l  cfg配置文件

    主要用于postgres数据库连接配置

    l  执行R脚本

    Rscript etl/ConceptTables/loadTables.R mimiciii

    4.4 *导入CONCEPT表*

    执行etl/StandardizedVocabularies/CONCEPT/etl.sql脚本,将mimiciii数据集字典表concepts与本地cencepts全部导入OMOP中CONCEPT表(这一步可不单独执行,可在下一步ETL中批量执行)

    psql "$MIMIC" --set=OMOP_SCHEMA="$OMOP_SCHEMA" -f "etl/StandardizedVocabularies/CONCEPT/etl.sql"

    5. MIMIC-OMOP ETL

    前面步骤全部完成后,执行以下语句,进行mimic-omop数据映射转换(包括concepts加载)

    psql "$MIMIC" --set=OMOP_SCHEMA="$OMOP_SCHEMA" -f "etl/etl.sql"

    注意:执行过程中,omop有些字段not null约束导致无法转换,建议根据实际情况将not null约束去除。

    附录

    mimic-omop项目功能

    1.    mimic数据入库

    1.1 模块功能

    l  生成mimiciii、mimic两个schema的ddl,建立表结构;

    l  加载mimiciii v1.4数据集到mimiciii数据库;

    l  加载若干患者的子集以模拟测试ETL;

    1.2 执行步骤

    1.  执行sql文件build-mimiciii.sql(图中文件编号1,会先后调用1.1,1.2),将建设mimiciii数据库并加载所有数据;

    2.  执行sql文件build-mimic.sql(图中文件编号2,会先后调用2.1,2.2,2.3,2.4),将建设mimic数据库并加载mimiciii中部分数据用于ETL测试;

    每个sql文件功能已在图中标出,可根据需要单独执行单个文件;

     

    2.    OMOP CDM建表

    2.1 模块功能

    l  在omop的schema中建立OMOP CDM表结构;

    l  修改OMOP CDM表结构;

    l  加载标准术语词表;

    2.2 执行步骤

     

    3.    本地Concept加载

    3.1 模块功能

    l  d_开头的字典表加载到CONCEPT;

    l  本地CSV加载到CONCEPT;

    3.2 执行步骤

     

    4.    ETL

    4.1 模块功能

    l  将mimiciii数据集映射转换到OMOP CDM(包括concepts加载);

    4.2 执行步骤

     

  • 相关阅读:
    C#中的一些访问修饰符
    Win7下各种Oracle服务的作用
    MySql创建视图
    Sql Server SQL语句创建数据库
    C语言函数指针:获得任意类型数组的最大
    SQLHelper帮助类
    .Net有哪些大型项目、大型网站的案例
    复习一些小知识
    Js作用域与作用域链
    路飞-自定义User表和Media配置
  • 原文地址:https://www.cnblogs.com/ohmyuan/p/13613118.html
Copyright © 2011-2022 走看看