投稿者

インターシステムズジャパン
記事 Toshihiko Minamoto · 8月 21 5m read

OMOP Odyssey 対応記念(ハデスの館編)

Hades DatabaseConnector 6.4.0 が IRIS に対応しました!

OHDSI は OHDSI Hades プロジェクトにおいて、IRIS を DatabaseConnector 6.4.0サポートされるプラットフォームおよびダイアレクトとして正式に発表しました! 🎉 この成果を披露し、InterSystems IRIS で OMOP CDM 5.4 を作成してみましょう。


TLS - InterSystems Cloud Document を運用(Helath Connect Cloud または同等)

IRIS Cloud Document ワークロードを実行しており、クラウドポータルと RStudio で最小限のステップで OMOPCDM54 データベースをなんとか作成しました。


システム

証明書をどのようにシステムにインポートするかに関係なく、インポートはここで行って、InterSystems Cloud Document デプロイメントに接続する必要があります。私はソリューション全体で次のスクリプトを緩く使用しています。ポータルからダウンロードした証明書を貼り付けると、証明書が自動的にインポートされます。

 
import_iris_certificate.sh
#!/bin/bash

cat << 'EOF' > /usr/local/share/ca-certificates/cloudsql-gar2.crt
-----BEGIN CERTIFICATE-----
PEM FROM CLOUD DEPLOYMENT HERE
-----END CERTIFICATE-----
EOF

update-ca-certificates

PEM_FILE="/etc/ssl/certs/cloudsql-gar2pem" PASSWORD="changeit" JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") KEYSTORE="$JAVA_HOME/lib/security/cacerts" CERTS=$(grep 'END CERTIFICATE'$PEM_FILE| wc -l) echo$KEYSTORE# To process multiple certs with keytool, you need to extract# each one from the PEM file and import it into the Java KeyStore.for N in $(seq 0 $(($CERTS - 1))); do ALIAS="$(basename $PEM_FILE)-$N"echo"Adding to keystore with alias:$ALIAS" cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" | keytool -noprompt -import -trustcacerts
-alias$ALIAS -keystore $KEYSTORE -storepass $PASSWORDdone

クラウドポータル

これはリスナー経由でも別の方法で実行できますが、クラウドポータルで実行できることを強調するために、SQL クエリツールを使用できます。


RStudio

次のステップは RStudio です。ここでは、多少のセットアップを行えば、ほとんどの作業は OHDSI パッケージが行います。

install.packages("devtools")
devtools::install_github("OHDSI/CommonDataModel")
install.packages("DatabaseConnector")
install.packages("SqlRender")
Sys.setenv("DATABASECONNECTOR_JAR_FOLDER" = "/home/sween/Desktop/OMOP/iris-omop-extdb/jars")
library(DatabaseConnector)
downloadJdbcDrivers("iris")


RStudio に戻る

iris ダイアレクト(OHDSI ツールに含まれました)が実際に含まれているかを確認できます。

CommonDataModel::listSupportedDialects()

実際に IRIS が存在しています。


実はここまで進む準備はできていましたが、まず最初に、作成された ddl をダンプして確認し、どこかにチェックインしたいと考えていました。これは、ddl を「ドライ ラン」方式でダンプします。

CommonDataModel::buildRelease(cdmVersions = "5.4",
                              targetDialects = "iris",
                              outputfolder = "./ddl/iris/")

出力フォルダを見てみましょう。

次に、InterSystems Cloud Document インスタンスをターゲットにし、実際に OMOP データベースを作成しましょう。これは、接続、次に実行の 2 つのステップで行います。
接続

cd <- DatabaseConnector::createConnectionDetails(dbms = "iris",
                                                 connectionString = "jdbc:IRIS://k8s-0a6bc2ca-a096b3cb-578f6ec1b7-8b0e928263a4990a.elb.us-east-2.amazonaws.com:443/USER/:::true",
                                                 user = "SQLAdmin",
                                                 port = "443",
                                                 password = "PASSWORD",
                                                 pathToDriver = "./jars",
)

実行

CommonDataModel::executeDdl(connectionDetails = cd,
                            cdmVersion = "5.4",
                            cdmDatabaseSchema = "OMOPCDM54"
                            )

すべてが順調に進めば、RStudio にエラーは報告されません

InterSystems Cloud Document デプロイメントで作業を確認すると、結果は空ですが、そこにあります!

👣🔫 警告です。これについては OMOP の旅でもう一度お話しします。IRIS の CDM では、「DOMAIN」テーブルと名前の衝突のようなものがあることに注意してください。上のスクリーンショットを見ると、DOMAIN がすべて大文字になっているのがわかります。これは、domain が InterSystems SQL Workloads のキーワードであるためです。したがって、テーブルに対する操作が存在する場合は、そのテーブル名を引用符で囲む必要があることに注意してください。

for table in cdmtables:
    try:
        if table == "domain":
            sql = f'(select * from OMOPCDM54."{table}") AS temp_table;'else:
            sql = f'(select * from OMOPCDM54.{table}) AS temp_table;'

 

開発者(IRIS を使用しているため、TLS などの実装のオーバーヘッドを気にしてはいられません)

ちょっと急いでおり、セキュリティは他の人の仕事であるため、ローカルの IRIS Community、Eval、コンテナー、または POD に OMOP データベースが必要です。 ほとんどの手順は上記のように新しい接続文字列の外部に適用され、SMP を通じてスキーマが作成されます。

次にもう一度 RStudio で、開発者インスタンスをポイントします。

cd <- DatabaseConnector::createConnectionDetails(dbms = "iris",
                                                 connectionString =
"jdbc:IRIS://192.168.1.162:1972/USER",
                                                 user = "_SYSTEM",
                                                 port = "1972",
                                                 password = "SYS",
                                                 pathToDriver = "./jars",
)

CommonDataModel::executeDdl(connectionDetails = cd, cdmVersion = "5.4", cdmDatabaseSchema = "OMOPCDM54" )

懐かしい資格情報で接続しています...

つぎに、SMP を再読み込みし、OMOPCDM54 スキーマを展開します。

成功です!

🙌 🎉 
素晴らしい作業でした。この取り組みに関与していただいた皆さんにお礼を申し上げます!