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 執行步驟

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM