データソース追加手順(ATLAS)
ATLAS のデータソースを追加する手順を記します。
WebAPI は、OMOP Common Data Model (CDM) v5 に変換された 1 つ以上のデータベースの構成をサポートします。
下記 URL を参考に、この手順を作成しています。
https://github.com/OHDSI/WebAPI/wiki/CDM-Configuration
前提条件
WebAPI がインストールされていること。
CDM スキーマに対象のデータが格納されていること。
概要
ATLAS セットアップ手順で作成された WebAPI データベースでは、WebAPI を使用してさまざまな分析をするために使用する 1 つまたは複数の CDM を設定できます。
WebAPI が正しく機能するためには sourceおよび source_daimon エントリを構成する必要があります。
sourceテーブルは、CDM への JDBC 接続情報が保持され、CDM データベースへの接続を定義します。source_daimon テーブルは、source_id を使用して、CDM、Vocabulary、Results、temp スキーマの関連付けを定義します。
以下のセクションでは、OHDSI WebAPI で使用する CDM を準備する方法と、WebAPI を設定して環境内の CDM に接続する方法について説明します。
スキーマのセットアップ
CDM データの特性を把握するために Achilles を実行することを強くお勧めします。
そのプロセスの一環として、結果を保持する Results schema を作成します。
これらのテーブルは WebAPI によって利用され、WebAPI で設定された CDM に基づくレコード数の情報を含む語彙検索を補完します。
| スキーマ | 概要 | 権限 |
|---|---|---|
| CDM | 患者レベルのデータを保持するためのテーブル群 | read-only |
| Vocabulary | 語彙を保持するテーブル群 | read-only |
| Results | Achilles を使用した特性化の結果を保持するテーブル群 | insert/delete/select/update |
| Temp | WebAPI が特定の分析を実行する際に、情報を一時的に保存するためのスキーマ | full control (create/remove tables & data) |
※以降の手順では、CDM schema : eunomiaResults schema : eunomia_resultstemp schema : eunomia_temp
として進めます
※CDM には OMOP の語彙を保持するテーブルが含まれ、CDM schema と Vocabulary schema は、CDM データベース内の同じスキーマを参照していることが多いです
OHDSI データベースに Results schema と temp schema の 2 つのスキーマを作成します。
- Results スキーマの作成
以下の SQL を実行することで、Results スキーマが作成されます。(例:eunomia_results スキーマ)
CREATE SCHEMA eunomia_results
AUTHORIZATION ohdsi_app_user;
GRANT USAGE ON SCHEMA eunomia_results TO ohdsi_app_user WITH GRANT OPTION;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA eunomia_results
GRANT DELETE, INSERT, SELECT, UPDATE ON TABLES TO ohdsi_app_user WITH GRANT OPTION;
Results スキーマの構成は以下のようになります。
- Temp スキーマの作成
以下の SQL を実行することで、Temp スキーマが作成されます。(例:eunomia_temp スキーマ)
CREATE SCHEMA eunomia_temp
AUTHORIZATION ohdsi_app_user;
GRANT ALL ON SCHEMA eunomia_temp TO ohdsi_app_user WITH GRANT OPTION;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA eunomia_temp
GRANT ALL ON TABLES TO ohdsi_app_user WITH GRANT OPTION;
Temp スキーマの構成は以下のようになります。
cdm, vocabulary の中のテーブル群に対して、Index を作成します。
これにより、ATLAS の Query の実行効率を大幅に改善します。
下記の URL から SQL をコピーします。
https://github.com/OHDSI/CommonDataModel/blob/v5.4.0/inst/ddl/5.3/postgresql/OMOPCDM_postgresql_5.3_indices.sql
“@cdmDatabaseSchema” を CDM schema の名称に置き換えて、pgAdmin 4 から実行します。

INDEX が作成されます。

Achilles の実行
CDM に対して、Achilles を実行し、results(結果)を作成します。
実行結果が Results schema に反映されます。
R から下記のコマンドを実行します。
※パスワード “zzzz” は、書き換えてください
※JDBC ドライバのパスは、C:/Program Files/PostgreSQL としています
(PostgreSQL JDBC ドライバを保存していることが前提)
library(Achilles) connectionDetails <- createConnectionDetails( dbms="postgresql", server="localhost/OHDSI", user="ohdsi_app_user", password="zzzz", port="5432", pathToDriver = "C:/Program Files/PostgreSQL") options(connectionObserver = NULL) achilles(connectionDetails = connectionDetails, cdmVersion = "5.3", cdmDatabaseSchema = "eunomia", resultsDatabaseSchema = "eunomia_results", outputFolder = "output")
Results schema に以下の 3 つのテーブルが作成されます。

Results schema のテーブルを作成
CDM 用の SQL スクリプトを生成して、Results schema にテーブルを作成します。
WebAPI の実行に必要なテーブルを確立する必要があります。
次の WebAPI URL は、Results schema テーブルを作成および設定するために必要な SQL スクリプトを生成するために使用します。
http://<server:port>/WebAPI/ddl/results?dialect=<your_cdm_database_dialect>&schema=<your_results_schema>&vocabSchema=<your_vocab_schema>&tempSchema=<your_temp_schema>&initConceptHierarchy=truecatalina.bat run 実行後、URL をブラウザに貼り付けます。
例: CDM schema : eunomia、Results schema : eunomia_results、temp schema : eunomia_temp とした場合。
http://localhost:8080/WebAPI/ddl/results?dialect=postgresql&schema=eunomia_results&vocabSchema=eunomia&tempSchema=eunomia_temp&initConceptHierarchy=true
生成された SQL を pgAdmin 4 から実行します。

Results schemaに、テーブルが追加されます。

concept_count テーブルの作成
Achilles が実行されていることを前提とし、これらのテーブルを使用して語彙検索を強化するために使用される concept_count テーブルを作成します。
http://server:port/WebAPI/ddl/achilles?dialect=<cdm_database_dialect>&schema=<results_schema>&vocabSchema=<vocabulary_schema>catalina.bat run を実行している状態で、URL をブラウザに貼り付けます。
例:cdm_database_dialect : postgresql、Results_schema: eunomia_results、 Vocabulary_schema : eunomia とした場合。
http://localhost:8080/WebAPI/ddl/achilles?dialect=postgresql&schema=eunomia_results&vocabSchema=eunomia
生成された SQL を pgAdmin 4 から実行します。

Results schemaに、achilles_result_concept_count テーブルが追加されます。

source および source_daimon テーブルのセットアップ
source および source_daimon テーブルは、WebAPI.war がデプロイされた状態で tomcat サービ スを起動したときに作成されます。
OHDSI ツールを使用するには、これらのテーブルに JDBC ソース接続と対応する source_daimon を設定し、ソースに関連付けられた CDM、Vocabulary、Results、Temp スキーマの場所を指定する必要があります。
例:WebAPI.SOURCE および SOURCE_DAIMON の挿入例(CDM schema : eunomia Results schema : eunomia_results temp schema : eunomia_temp)
下記の SQL を pgAdmin 4 から実行します。( “zzzz” のパスワードを書き換えて実行してください)
INSERT INTO webapi.source (source_id, source_name, source_key, source_connection, source_dialect) SELECT nextval('webapi.source_sequence'), 'eunomia', 'eunomia', $$jdbc:postgresql://localhost:5432/OHDSI?user=ohdsi_app_user&password=zzzz$$, 'postgresql'; INSERT INTO webapi.source_daimon (source_daimon_id, source_id, daimon_type, table_qualifier, priority) SELECT nextval('webapi.source_daimon_sequence'), source_id, 0, 'eunomia', 0 FROM webapi.source WHERE source_key = 'eunomia' ; INSERT INTO webapi.source_daimon (source_daimon_id, source_id, daimon_type, table_qualifier, priority) SELECT nextval('webapi.source_daimon_sequence'), source_id, 1, 'eunomia', 1 FROM webapi.source WHERE source_key = 'eunomia' ; INSERT INTO webapi.source_daimon (source_daimon_id, source_id, daimon_type, table_qualifier, priority) SELECT nextval('webapi.source_daimon_sequence'), source_id, 2, 'eunomia_results', 1 FROM webapi.source WHERE source_key = 'eunomia' ; INSERT INTO webapi.source_daimon (source_daimon_id, source_id, daimon_type, table_qualifier, priority) SELECT nextval('webapi.source_daimon_sequence'), source_id, 5, 'eunomia_temp', 0 FROM webapi.source WHERE source_key = 'eunomia' ;
処理が完了すると、webapi スキーマの source テーブル、source_daimon テーブルにデータソースのデータが追加されます。


WebAPI が起動し、source/source_daimon の挿入が完了すると、ブラウザで次の URL を開くことができるようになります。
http://localhost:8080/WebAPI/source/sources出力は次のようになります。
[{
"sourceId":2,
"sourceName":"eunomia",
"sourceDialect":"postgresql",
"sourceKey":"eunomia",
"daimons":
[{
"sourceDaimonId":2,
"daimonType":"CDM",
"tableQualifier":"eunomia",
"priority":0
},{
"sourceDaimonId":3,
"daimonType":"Vocabulary",
"tableQualifier":"eunomia",
"priority":1
},{
"sourceDaimonId":4,
"daimonType":"Results",
"tableQualifier":"eunomia_results",
"priority":1
},{
"sourceDaimonId":5,
"daimonType":"Temp",
"tableQualifier":"eunomia_temp",
"priority":0
}
]
}
]
以上の作業が完了することにより、ATLAS からデータソースの選択ができるようになります。





