医療情報ユーザーから見た fhirアプリケーションの利点 ......web2.0...

31
2019/6/8 1 医療情報ユーザーから見た FHIRアプリケーションの利点 群馬大学医学部附属病院 システム統合センター 鳥飼 幸太 このチュートリアルの目的 FHIRの構成要素について、コーディングスキルを身につける -REST -JSON HTMLからREST/JSONを用いて、FHIRサーバからデータを取 得するコーディングを身につける これらの取り組みを通じて、FHIRがREST/JSONを採用する、 開発上のメリットについて具体的実感をもつ

Upload: others

Post on 19-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

1

医療情報ユーザーから見たFHIRアプリケーションの利点群馬大学医学部附属病院 システム統合センター

鳥飼 幸太

このチュートリアルの目的

• FHIRの構成要素について、コーディングスキルを身につける• -REST

• -JSON

• HTMLからREST/JSONを用いて、FHIRサーバからデータを取得するコーディングを身につける

•これらの取り組みを通じて、FHIRがREST/JSONを採用する、開発上のメリットについて具体的実感をもつ

Page 2: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

2

IoTデバイスの広く浸透する医療への変化

総務省 平成30年版 通信情報白書

“Make once, Use Many”

現行システムとFHIRの適用範囲

WWW

TCP/IP

CAT5/6/7 IEEE802.11a/b/g/n/ac

Mobile NetworkWired (Fixed) Network

スタッフが情報とともに移動する個別タスクを個別に分担チーム医療・情報の電子化、即時化目的ごとのデバイス

スタッフが情報の側に移動する共通タスクを複数スタッフで分担部門化の流れとともに浸透共通の端末

HTTP

Page 3: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

3

このチュートリアルの構成

CSVファイル

FHIR/JSONファイル1001,YAMADA TAROU,37.5,degC,2018/3/5

1002,AKIYAMA TADAO, 36.8, degC,2018/3/51003,HARUNA FUMIO, 36.4,degC,2018/3/6…

SELECT ID, Body Temperature FROM …

SQL文でのデータ抽出

REST応答文の実装

<HTML><script type="text/javascript" language="javascript"></script>

<body><br></body></HTML>

http://iris4h.azure.com:52773/fhir/ observation/bodytemperature/1001

ID identifier

datetime

effectiveDateTimevalue

effectiveValue

unit unit

JavaScript/HTMLの作成FHIRタグのパース

RESTコマンドでWebブラウザ表示

グラフライブラリの追加

サーバサイド

クライアントサイド

TCPソケット

外部サーバ参照(TCP)

データ取得(TCP)状態遷移、エラーチェックに手間

データパース(読解)エラーチェック

構造体への割り付け

XML構文宣言が多い(文法規則が多い)(特にデータ提供側で負荷増)

プログラムが持つ構造体にマッピングが必要

デバイスへの表示デバイスごとに表示させる命令セットが異なる→デバイスが変化するとプログラムも作り直し

Web以前

Page 4: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

4

<HEAD>CSS

<HTML>

<BODY>

JavaScript

JavaScript

<div id=t1>

target = t1

書式の基本様式

外部サーバ参照(REST)

データ取得(JSON)

構造化データを処理

表示先に出力する

Webテクノロジー基本セット:HTML+CSS+JavaScript

</HTML>

20分クッキング

愛は学会にある。Mテクノロジー学会

群馬大学医学部附属病院

Page 5: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

5

Page 6: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

6

Page 7: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

7

Page 8: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

8

Page 9: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

9

Page 10: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

10

Page 11: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

11

Page 12: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

12

Page 13: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

13

Page 14: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

14

体温データ取得用の<Route>を追加

体温データのObservationリソースを取得する処理を追加する

Page 15: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

15

体温データを取得するSQLを追加する

Page 16: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

16

Page 17: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

17

Page 18: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

18

Page 19: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

19

Page 20: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

20

Page 21: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

21

Page 22: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

22

Page 23: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

23

Page 24: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

24

処方情報を取得するREST APIの構築

• MedicationDispenseリソース• 患者さんに対して調剤/支給された薬剤の情報をあらわすリ

ソースです。

• https://www.hl7.org/fhir/medicationdispense.html

• RESTのリクエスト /medicationdispense/患者ID に対し、右のBundleで表されるリソース群を返すAPIを構築しました。

Resource : Bundletype : message

Patient :id : 12345name : 山田

Observation :id : 67890Observation :

id : 67890Observation :

id : 67890MedicationDispense :

id : 67890

Page 25: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

25

REST APIから取得したFHIRデータ例

全体はBundleリソースに含まれる

対象の患者のPatientリソースを含む

1件目のMedicationDispenseリソース

対象となるMedicationリソースをcontained内にもつ

7日分の処方

=容量・用法などの情報

1回量

用法・タイミング

トータル処方量

対象患者

処方日

2件目以降のMedicationDispenseリソースへ

RESTリクエストURL

FHIR Tips - Code/Coding/CodeableConcept

• FHIRのデータを眺めているとCodeに関する情報がよくでてきます

• codeは“ただの文字列“• code=10154-3,code=8716-3,code=622669401

• ただし、codeという名前のelementもよく使われる。

• coding=code+コード体系(system)表示名(display)バージョン情報(version)を付加したもの• code=8867-4,system=http://loinc.org, display=“Heart Rate”,version=2.6

• codeableconcept = coding + 付加情報(text)• text=“脈拍”

その結果、一見ややこしい表記に!↑

Page 26: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

26

FHIR Tips2 - Quantity

• 検査結果の数値や処方した薬の数などを表現する目的でQuantityというデータ型を使用します

• データは valueで表現されます

• さらに単位(unit)、単位体系(system) 、単位のコード(code) といった情報が付加されて表現されます。

日数の表現 個数の表現

Webアプリケーション画面

FHIRデータ取得のために実際にリクエストしたFHIR APIのURL

FHIR Bundle内のPatientリソースから取得したデータ

FHIR Bundle内のMedicationDispenseリソース群から取得したデータ

Page 27: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

27

HTML/JavaScriptソース

<head><link rel="stylesheet" type="text/css" href="mycss.css"><meta charset="UTF-8"><title>FHIRTEST Step 4</title><style>body {background: #eeeeee;

}</style>

<script type="text/javascript" language="javascript">

function onButtonClick() {

var linktext5 = 'http://iris4h-fhirapi.japaneast.cloudapp.azure.com:52773/csp/sqltofhir/fhir/medicationdispense/'+document.getElementById("id_textBox1").value;

var xhr = new XMLHttpRequest();xhr.responseType = 'text';xhr.open('GET',linktext5,true);xhr.send();

resturl = document.getElementById("resturl");resturl.innerHTML='<h2>FHIRリクエストURL:'+linktext5+'</h2>';

xhr.onreadystatechange = function(){if (xhr.readyState==4 && xhr.status==200) {

var data = JSON.parse(xhr.responseText);

FHIRデータ取得のために実際にリクエストするURLの組み立て

RESTリクエストの実行

取得したJSONデータのパース処理

HTML/JavaScriptソースvar table = document.getElementById("mdTable");for ( var i in data.entry ) {

var patientinfo='';var record;

//Patient Resourceから患者情報を抽出if (data.entry[i].resource.resourceType=="Patient") {patientinfo=patientinfo+" "+data.entry[i].resource.name[0].family;patientinfo=patientinfo+" "+data.entry[i].resource.name[0].given[0];patientinfo=patientinfo+" "+data.entry[i].resource.gender;patientinfo=patientinfo+" "+data.entry[i].resource.birthDate;

patientinfo=patientinfo+" "+data.entry[i].resource.address[0].postalCode;patientinfo=patientinfo+" "+data.entry[i].resource.address[0].text;

patienttext = document.getElementById("patienttext");patienttext.innerHTML='<h2>患者基本情報:'+patientinfo+'</h2>';

}

else if (data.entry[i].resource.resourceType=="MedicationDispense") {var row=table.insertRow(-1);var cell1 = row.insertCell(-1);var cell2 = row.insertCell(-1);var cell3 = row.insertCell(-1);var cell4 = row.insertCell(-1);var cell5 = row.insertCell(-1);

cell1.innerHTML=data.entry[i].resource.medicationReference.display;cell2.innerHTML=data.entry[i].resource.whenHandedOver;cell3.innerHTML=data.entry[i].resource.dosageInstruction[0].doseQuantity.value + data.entry[i].resource.dosageInstruction[0].doseQuantity.unit;cell4.innerHTML=data.entry[i].resource.dosageInstruction[0].text;cell5.innerHTML=data.entry[i].resource.quantity.value+data.entry[i].resource.quantity.code;

}}

取得したFHIR/JSONデータのPatientリソースから患者情報の抽出

htmlのtableエレメントに追加するrowエレメントを取得

取得したFHIR/JSONデータのMedicationDispenseリソースから処方情報の抽出

取得したFHIR/JSONデータ

"resource": {"resourceType": "Patient","identifier": [

{"value": "1001"

}],"name": [

{"family": "山田","given": [

"太郎"],"use": "official"

}],"birthDate": "1970-01-01","gender": "男","address": [

{"postalCode": "1600023","text": "東京都新宿区西新宿6丁目"

}],

Page 28: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

28

HTML/JavaScriptソース

<body><form name="form1" id="id_form1" action="">PID:<input name="textBox1" id="id_textBox1" type="text" value="1001" /><input type="button" value="Show" onclick="onButtonClick();" />

</form><hr/>

<div id="resturl"></div>

<div id="patienttext"></div><table id="mdTable"><tr><th>薬剤名</th><th>日時</th><th>1回処方量</th><th>用法</th><th>総処方量</th>

</tr>

</table>

<!-- JavaScriptで作られたコード(読みだされた文字リスト)が出力される場所 --><div id="output"></div><br><br>

</body>

結果表示用のHTML要素

今後の展望

Page 29: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

29

医療データに関わる要素と通信方式

DBサーバデータ処理

アルゴリズムWeb

インターフェース

バックエンド(電子カルテや部門システム)

フロントエンド

入出力デバイス

DBサーバ

院内側

地域連携DBサーバ

ユーザー

ユーザー

院外側

…バックエンド??

Webインターフェース

データ処理アルゴリズム

データ処理アルゴリズム

院内データをサーバ以外/院外と通信/共有するという要請は、システムの最適な構成・工数の少ない実装方法に根本的な変化を要請する

1 2

技術における複雑化・差別化と、規格化・標準化の分岐点

現場が求める性能(情報量・速度)

ユーザー数

性能向上=差別化要素高付加価値化独自性の追求

R&D領域限定されたユーザー

現場満足の分岐点

市場における技術の有用性の認識データの比較・交換の必要性「標準化活動」

互換性、保守性による活用価値、コストパフォーマンスに関心の重心が移る

独自要素の利点を追求特定領域での応用

性能>互換性 性能<互換性

ユーザーの選択肢が広がる

現場利用条件の充足

Page 30: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

30

医療業界の事例:CT装置における技術進歩とDICOM標準化のあゆみ

現場が求める性能(情報量・速度)

ユーザー数

画質スライス厚撮影時間再構成時間

現場満足の分岐点

市場における技術の有用性の認識データの比較・交換の必要性「標準化活動」

DICOM互換の製品が増加ユーザー数と選択肢が充実

新しいモダリティ技術(cine、Dual Energy等)

各社が独自規格で性能を向上

性能>互換性

現場利用条件の充足

性能<互換性

産業と医療の循環 – 医療情報と医療情報機器について

医療ニーズ

診療に直接作用

診療に二次的作用

医療専用機器(CT等)

産業製品の活用(PC、スマホ等)

医療情報機器・ソフト

(電子カルテ等)

ハードウェアは産業界の製品をそのまま使える高い動作信頼性が求められる

医療法、病名体系、保険収載などは産業界になく、専門の製作が必要現場運用が変化する

IoT事例として血圧、体温、血糖などのデバイスは要薬事承認

IoT実現に負担の大きい領域

産業界における技術の変遷Web2.0以降、開発が個別性から共通性へ変化

Web2.0(REST/JSON) + HL7 = FHIR

Page 31: 医療情報ユーザーから見た FHIRアプリケーションの利点 ......Web2.0 以降、開発が個別性から共通性へ変化 Web2.0(REST/JSON) + HL7 = FHIR 2019/6/8

2019/6/8

31