FRUCtoSアダプタ開発ガイド
最終更新日 2022年11月30日
本ガイドの目的
本ガイドは、HL7 FHIR標準(以下、FHIR) に準拠したFRUCtoSのRESTful APIを通じて、電子カルテシステムなどのデータを読み出すことのできる「アダプタ」を開発するための手順を記載しています。
現在は、アダプタ開発の最初のステップとして、主に電子カルテシステムの患者データをFHIRのPatientリソースとして取得するまでの手順を記載しています。
本ガイドは、以下に関する基本的な知識を有するシステム開発者を対象としています。
- FHIR
- 電子カルテシステムのDBスキーマ
- Java 11
- Apache Maven
- Spring Framework(以下、Spring)
- Lombok
- Docker
- Docker Compose
例としてDockerを実行環境とする場合を記載しています。 他のDocker互換のコンテナ実行環境をお使いの方は、適宜読み替えてください。 設定ファイルも適宜書き換えてください。
アダプタ開発に必要なソフトウェア
アダプタの開発作業を行うPCに、以下のソフトウェアがインストールされている必要がありま す。
- IDE(統合開発環境)※Pleiades All in One(Eclipse)またはIntelliJ IDEAを推奨
- Apache Maven 3.6.3
- Lombok 1.18.16 以降
アダプタの概要
FRUCtoSは、以下の3つの層から構成されており、各層の境界インターフェイスは、Springコンポーネントとして実装されています。
- インターフェイス層 - RESTful APIの提供など
- サービス層 - データバリデーションなど
- リポジトリ層 - データ検索処理やO/Rマッピングなど
アダプタは、このリポジトリ層のSpringコンポーネントを置き換える形で動作します。
具体的には、アダプタプロジェクトをビルドして作成したjarファイルを、FRUCtoSのWebアプリケーションに組み込むことで、リポジトリ層のSpringコンポーネントを置き換えます。
FRUCtoSのインターフェイス層およびサービス層の機能については、アダプタ側で特に意識することなくそのまま利用できます。
またアダプタでは、電子カルテシステムDBの値を保持するクラスと、FHIRリソースのマッピングをサポートするための各種アノテーションや、アダプタ用のコード生成ツールなどを利用できます。
アダプタ開発資源の入手
まずはFRUCtoS 公式サイトにて、製品版FRUCtoSのご利用をお申し込みください。アダプタサンプルプロジェクトを含む製品版FRUCtoSのご利用に必要な諸手続きについて、担当者よりご案内させていただきます。
アダプタサンプルプロジェクトを含む、製品版FRUCtoSのご利用の際には ソフトウェア利用許諾契約 の締結が必要となります。
アダプタプロジェクトの作成
- ダウンロードしたアダプタサンプルプロジェクトの圧縮ファイル
repository-adapter-sample.zip
を解凍します。 - 解凍したファイル内のフォルダ(
repository-adapter-sample
)を任意の名称に変更します。
例:repository-adapter-xxx(xxxは電子カルテ製品名やベンダー名など)
プロジェクトのインポート
Pleiades All in One(Eclipse)やIntelliJ IDEAなどのIDE(統合開発環境)でLombokを利用可能な状態にした後、アダプタプロジェクトをMavenプロジェクトとしてインポートします。
インポートしたプロジェクトの動作確認
IDE上でアダプタプロジェクトのビルドが完了した後、次のユニットテストを実行して、全てのテストが成功することを確認します。
com.example.impl.ResourceRepositoryImplPatientTest
テストが失敗する場合は、プロジェクトのインポート方法やビルド設定などに誤りがないかを確認してください。
Maven設定ファイルの修正
プロジェクトフォルダ内にあるpom.xml
の、groupId
、artifactId
、name
などを修正します。
「修正前」
<groupId>com.example</groupId>
<artifactId>fructos-repository-adapter-sample</artifactId>
<version>0.0.1.${buildDate}-${revision}</version>
<name>FRUCtoS Repository Adapter Sample</name>
「修正後(例)」
<groupId>jp.co.xxx</groupId>
<artifactId>fructos-repository-adapter-xxx</artifactId>
<version>0.0.1.${buildDate}-${revision}</version>
<name>FRUCtoS Repository Adapter for XXX</name>
pom.xml
のdependencies
で定義されている依存ライブラリの他に、使用したいライブラリやフレームワークなどがある場合は、dependency
を追加します。
例えば、以下のようなライブラリなどを追加することが考えられます。
- 電子カルテシステムDB用のJDBCドライバライブラリ
- サンプルプロジェクトで使用しているMyBatis以外のORMライブラリ
「PostgreSQLのJDBCドライバを追加する例」
<dependencies>
(中略)
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>
</dependencies>
DBテーブルの値を保持するクラスの作成
電子カルテシステムDBのテーブルの値を保持するクラス(一般的にEntityやDTOと呼ばれるクラス)を作成します。
※以降はこのクラスを「DBエンティティ」と記載します。
実装例:アダプタサンプルプロジェクトのcom.example.adapter.entity.PatientEntity
DBエンティティには、DBテーブルのカラムに対応したフィールドと、各フィールドのgetterおよびsetterを作成してください。
アダプタサンプルプロジェクトでは、Lombokアノテーションを使用してgetterとsetterを作成しています。
アダプタサンプルプロジェクトのサンプルDBスキーマは、src/main/resources/mybatis_settings/schema.sql
で定義されています。