データソース追加手順(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 スキーマ
- 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=true
catalina.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 からデータソースの選択ができるようになります。