Azure上でIRIS for Healthをデプロイし、FHIR リポジトリを構築する方法
開発者の皆さん、こんにちは。
今日はAzure上でIRIS for Healthをデプロイし、FHIRリポジトリを構築する方法をご紹介したいと思います。
AzureのMarketPlaceで「InterSystems」をキーワードに検索していただくと、以下のように複数のInterSystems製品がヒットします。
今日はこの製品の中から、InterSystems IRIS for Health Community Editionを選択し、FHIRリポジトリを構築します。
仮想マシンのサイズや、ディスク、ネットワーク等には特に制約や条件はありません。
Azureで提供されている最小の構成でもIRIS for Healthを動かすこともできます。
IRIS for Health Community Editionのデプロイに成功するとこのような画面に遷移します。
私の例では、コンピュータ名をIRIS4HFHIRSERVERとしています。
パブリックIPアドレスはマスクしていますが、このIPアドレスを使ってIRIS管理ポータルにアクセスしてみましょう。
http://<パブリックIPアドレス>:52773/csp/sys/UtilHome.csp
52773は管理ポータルにアクセスするためのポート番号であり、Azure上でデプロイするとこのポート経由でアクセスできるように既に構成が変更されています。
管理ポータルには初期パスワード _SYSTEM/SYS でログインすることができます。
ログインするとすぐに初期パスワード変更画面が表示されますので、任意のパスワードに変更してください。
ログインできたら、まずはFHIRリポジトリを作成する前にネームスペース・データベースを作成しましょう。
私の例ではネームスペース・データベースともにFHIRSERVERという名前にしています。
IRISやCache'でネームスペース/データベースの作成を経験したことがない方はこちらのドキュメントも参考にしてみてください。
ネームスペースの作成が完了したら、管理ポータルのトップページから Health → <作成したネームスペース名> → FHIR Configuration
と進み、FHIR SERVER CONFIGURATION ページを表示します。
このGUIの構成ページはIRIS for Health 2020.2 から追加になりました。それ以前のバージョンではコマンドラインからFHIRリポジトリを構築する必要があります。
こちらのドキュメントをご覧ください。2019.x 以前のバージョン / 2020.1
Server Configuration画面へ進み、+アイコンをクリックして、構成画面を表示します。
Metadata Set画面で、構築するFHIRリポジトリが対応するバージョンを選択します。R4の場合はHL7v40、STU3の場合はHL7v30を選択します。
Interaction strategy、URLはデフォルトのまま進み、OKを押すとFHIRリポジトリの構築がはじまります。
作成が完了するとURLをクリックして構成変更画面を表示することができます。
今日は変更せずこのまま使用します。
それでは早速FHIRリポジトリにアクセスしてみましょう!
FHIRリポジトリのエンドポイントは
http://<パブリックIPアドレス>:52773/csp/healthshare/fhirserver/fhir/r4
となります。
初期状態では当然データは入っていませんが、テストとしてPatientリソースをリクエストしてみましょう!
私の例ではPOSTMANを使っていますが、他のRESTツールからももちろん実行可能です。
まずエンドポイントの後ろに /Patient を追加してGETメソッドを実行します。
ユーザ認証が必要なので、Authorization→Basic Auth を選択し、管理ポータルログインでも使用した_SYSTEMアカウントを指定します。
結果は0件ですが、FHIR のBundleを取得することができました!
次はPatientリソースをPOSTしてみましょう。
日本語を含むデータを送りたいので、Content-Typeでcharsetまで指定します。
Content-Type=application/json+fhir;charset=utf-8
Bodyタブを選択して、Patientリソースを貼り付けます。私の例では、この記事の最後に記載したPatient.jsonサンプルを使っています。
POSTが成功すると、HTTP Statusが201 Createdと表示されます。
それではもう一度GETして今POSTしたPatientリソースが本当に登録されている確認しましょう!
取得できました!
いかがでしたか?
IRIS for Health Community Editionを使用すると、簡単にFHIRリポジトリを構築することができ、すぐに使い始めることができます。
Azureだけなく、AWSやGCPなどのクラウド上でもIRIS for Health Community Editionは公開されています。
また、InterSystems Docker hub からはIRIS for Health Community EditionのDocker imageを入手することもできますので、この記事の内容をローカル環境で実行することもできます!
なお、InterSystems開発者コミュニティで開催されているプログラミングコンテストの2020年8月のテーマはFHIRです!
詳細はこちらをご覧ください。コンテストテンプレートも公開されますのでぜひご利用ください。
Patient.json
{ "resourceType": "Patient", "address": [ { "postalCode": "1600023", "text": "東京都新宿区西新宿6丁目" } ], "birthDate": "1970-01-01", "gender": "male", "identifier": [ { "value": "1001" } ], "name": [ { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-representation", "valueCode": "IDE" } ], "use": "official", "text": "山田 太郎", "family": "山田", "given": [ "太郎" ] }, { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-representation", "valueCode": "SYL" } ], "use": "official", "text": "ヤマダ タロウ", "family": "ヤマダ", "given": [ "タロウ" ] } ], "telecom": [ { "value": "0312345678" } ] }