SlideShare a Scribd company logo
FHIR on Python
2022-01-20 Room D 13:50-14:20
山ノ内祥訓
PyCon Kyushu 2022 Kumamoto
1
おまえだれよ
名前
年齢
住まい
お仕事
山ノ内 祥訓(よしのり)
0x2A
熊本県
現在は大学病院の特任助教で臨床研究のデータに関する設
計及び開発と運用をやっています。
某SIerで医療情報システムの導入及び開発を10年ぐらい
やっていました。
SNS Facebook https://www.facebook.com/yoshinori.yamanouchi.12
Github https://github.com/eolla1013
資格等 医療情報技師 修士(医科学) 現在博士課程(6年目突入!!)
2
臨床研究支援以外のお仕事
➢ 病院情報システム関連
➢ 院内データ分析
➢ 医療情報学分野の研究
院内で診療に関係する情報システムの企画、開発、運用。医療情報の担当部署は
別にあるのでそのお手伝い。
医療安全や質改善のため院内の各部署からデータの収集と分析を頼まれることがある。
外来患者の待ち時間、転倒転落、血栓予防、薬剤の有害事象、などなど
医療情報システムの開発、ウェアラブルデバイス、機械学習による各種予測、最近は診
療記録のテキスト解析。医療画像はみんなやっているのでやっていないww
3
FHIR®とは
Fast Health Interoperable Resources
http://hl7.org/fhir/
医療情報の標準化団体であるHL7協会が策定している次世代標準規格。
これまでの規格とは異なり、一般的なWeb技術を用いて実装に
フォーカスしたデータ交換用のデータフォーマットとプロトコルと
なっている。80%のシステムが利用するであろう項目を標準で定義
し、あとは拡張項目で吸収する。
4
これまでの主な医療情報標準規格
➢ DICOM
➢ HL7 version2.5
➢ HL7 version3/CDA
➢ SS-MIX2
放射線画像の標準交換規格。最近では放射線に限らずエコーや内視
鏡などの動画像データも対応している。
患者情報や処方、検査依頼などの医療における指示実施情報のデー
タ交換規格。現状一番よく使われている。
医療情報のほぼすべてをモデリングすることを目指したバージョン。
XMLベースだが、CDAという医療文書のデータモデル以外はほとん
ど使われていない。
日本発祥のデータ保存と交換に関する規格。データリポジトリとし
てファイルシステムを用いているので実装が簡単。国内では電子カ
ルテを導入している病院の多くが整備しており、バックアップや地
域医療連携、データの二次利用でよく使われている。
5
例えばDICOM
6
例えばHL7v2.5
7
一方、FHIRは
GET https://fhirtestjp.med.gunma-u.ac.jp/Patient/1/_history/1?_format=json
✓ データフォーマットは基本JSON。
✓ リソースと呼ばれる同じ性質を持つ情報の
断片(例:Patient, Observation)と、リ
ソースを一意に識別するURIで表されるアド
レスを持つ
✓ RESTFullなWebAPIを標準とする。
✓ Bundleで目的別に複数のリソースの組み合
わせが可能。
✓ Profileでリソースの制約条件を指定できる。
HTTPメソッド サービスエンドポイント リソースとID 引数
8
電子処方箋の例
JAMI電子処方箋 HL7 FHIR 記述仕様書 パブリックコメント用20211206 より引用
電子処方箋が実用化されるとFHIRで医療機関
と院外薬局がやり取りすることになる。
https://std.jpfhir.jp/ 9
ワクチン接種証明書の例
新型コロナウィルスワクチンの接種証明書アプリに使用されている二次元バー
コードは2種類ありそのうちSMART Health Cards規格はFHIRで作られている。
https://www.digital.go.jp/policies/posts/vaccinecert
https://spec.smarthealth.cards/
bundle
entry[0]:patient resource
entry[1]:Immunization resource
entry[2]:Immunization resource
接種者の情報
1回目の接種情報
・・・
2回目の接種情報
10
FHIRの情報
FHIRの仕様についてはFHIRのサイトで
入手できる。各種リソースの説明もこ
こがオリジナル。ただし英語。
http://hl7.org/fhir/
現行バージョンはR4(4.0.1)だが、現在R4Bと
R5がリリースに向けて作業中なので実際に
使うときはR4であることを確認する。
11
FHIRの情報(日本国内向け)
日本語の情報は、日本医療情報学会の「次世代健康医療記録システム共通プラッ
トホーム研究会(NeXEHRS研究会)」が策定を進めている日本向け実装ガイド(JP
CORE)のサイトを見るとよい。関連団体として日本HL7協会やHL7FHIR研究会な
どがあり解説記事も多く掲載されている。
https://jpfhir.jp/
https://jpfhir.jp/jpcoreV1/
NeXEHRS研究会のサイト
HL7 FHIR JP Core 実装ガイド <Draft Ver.1>
ちなみに私はメンバー
ではありません。
12
PythonでFHIRを使うには(クライアント)
FHIRはデータフォーマットはJSON、操作はRESTFull APIなので基本的にはこんな感じ。
with urllib.request.urlopen('https://fhirtestjp.med.gunma-u.ac.jp/Patient/27') as response:
fhir = response.read()
pat = json.loads(fhir.decode('utf-8'))
print('患者ID:' + pat['identifier'][0]['value’])
print('氏名:' + pat['name'][0]['text'])
jsonpat=‘PatientリソースのJSON文字列’
request = urllib.request.Request(url= 'http://hapi.fhir.org/baseR4/Patient/’,
headers={'Content-Type': 'application/json’},
method=‘POST’,
data=jsonpat.encode('utf-8'))
with urllib.request.urlopen(request) as response:
fhir = response.read()
pat = json.loads(fhir.decode('utf-8'))
pprint.pprint(pat)
13
ライブラリを使う場合
簡単な操作は通常のWeb開発と同様に実装できるが、スキーマチェックや実装の
効率化を図るならクライアントライブラリを使ったほうが良い。
FHIRに関連するソフトウェアライブラリのサイトがあるのでそこから各種言語別
のライブラリが確認できる。
https://confluence.hl7.org/display/FHIR/Open+Source+Implementations
今回はこれを使う
Github上はR4が使えるが
pipには古いバージョンし
かないので注意!!
14
fhir-py
MITライセンス。
インストールはpipでOK。
>pip install fhirpy
https://github.com/beda-software/fhir-py
簡単な使い方。
client=SyncFHIRClient('https://fhirtestjp.med.gunma-u.ac.jp')
patres=client.resources('Patient')
pat=patres.search(_id='27').get()
print('患者ID:' + pat.identifier[0].value)
print('氏名:' + pat.name[0].text)
15
PythonでFHIRを使うには(サーバ)
FHIRサーバは当然のことながらリソースデータの永続化環境が必要。
想定されている実装パターンは主に二つ。
1)電子カルテのデータを読み込みレスポンスとして返す。
2)FHIRリポジトリを構築しそこに電子カルテデータを同期させる。
1)はサーバとしてはただのWebAPIサーバなのでURLの仕様を確認しながらイチ
から実装することになる。2)はOSSのFHIRリポジトリがあるのでそれを使った
ほうが手っ取り早い。
今回は1)を想定してデモしてみる。Webサーバはflask。
なお、データベースはないのでリソースは直書き。
16
まとめ
医療分野のデジタル化は遅れているといわれることが多いが、その理由の一つ
に各社オリジナルの仕様が長く続いて標準仕様がなかなか普及せず、参入ハー
ドルが高いことがある。
HL7 FHIRはオープンで一般的な技術に近く、さらに80%ルールを適用することで
実装の容易化を図っているので、今後普及が進むと考えられる。
特にこれまで院内ネットワークの奥底深くに閉じ込めていた診療データは、地
域医療連携や個人向けヘルスケアサービス連携で外部との接続需要が高まって
いる。
ヘルステック分野の実装技術の一つとして
興味を持ってもらえるとありがたいです。
17
謝辞
今回の内容は、自分も所属している日本Mテクノロジー学会のハンズオン資料を参
考にさせていただいております。資料及びサーバ環境を提供いただいた東京大学医
学部附属病院の土井俊祐先生、群馬大学医学部附属病院の鳥飼幸太先生に感謝いた
します。
【会期】 2022年9月2日(金)~3日(土)
【大会長】東京大学医学部附属病院 企画情報運営部
特任講師(病院) 土井 俊祐
【テーマ】「標準化との戦い」
【開催地】COMING SOON!
第50回日本Mテクノロジー学会大会記念大会
MTA2022 (ハイブリッド開催)
18

More Related Content

What's hot

バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
Ryota Watabe
 

What's hot (20)

データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話
 
リクルートライフスタイル流!分析基盤との賢い付き合い方
リクルートライフスタイル流!分析基盤との賢い付き合い方リクルートライフスタイル流!分析基盤との賢い付き合い方
リクルートライフスタイル流!分析基盤との賢い付き合い方
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
 
データ分析基盤を支えるエンジニアリング
データ分析基盤を支えるエンジニアリングデータ分析基盤を支えるエンジニアリング
データ分析基盤を支えるエンジニアリング
 
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組みData Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
 
datatech-jp Casual Talks#3 データエンジニアを採用するための試行錯誤
datatech-jp Casual Talks#3  データエンジニアを採用するための試行錯誤datatech-jp Casual Talks#3  データエンジニアを採用するための試行錯誤
datatech-jp Casual Talks#3 データエンジニアを採用するための試行錯誤
 
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
 
楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用
 
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
 
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
 
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
オントロジーとは?
オントロジーとは?オントロジーとは?
オントロジーとは?
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 

Similar to FHIR on python

regenerative_medicine
regenerative_medicineregenerative_medicine
regenerative_medicine
Kenta Oono
 
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
Akihiko Tsurugi
 

Similar to FHIR on python (20)

初めてさわるEC2ロール
初めてさわるEC2ロール初めてさわるEC2ロール
初めてさわるEC2ロール
 
Deep Learningを診療データに使った話
Deep Learningを診療データに使った話Deep Learningを診療データに使った話
Deep Learningを診療データに使った話
 
プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」
 
Azureミニセミナー(ハンズオン編)
Azureミニセミナー(ハンズオン編)Azureミニセミナー(ハンズオン編)
Azureミニセミナー(ハンズオン編)
 
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
 
SORACOM CLIを使ってみよう
SORACOM CLIを使ってみようSORACOM CLIを使ってみよう
SORACOM CLIを使ってみよう
 
データ活用を進めるために必要なこと
データ活用を進めるために必要なことデータ活用を進めるために必要なこと
データ活用を進めるために必要なこと
 
Azureミニセミナー(セミナー編)
Azureミニセミナー(セミナー編)Azureミニセミナー(セミナー編)
Azureミニセミナー(セミナー編)
 
regenerative_medicine
regenerative_medicineregenerative_medicine
regenerative_medicine
 
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
 
医学と工学の垣根を越えた医療AI開発
医学と工学の垣根を越えた医療AI開発医学と工学の垣根を越えた医療AI開発
医学と工学の垣根を越えた医療AI開発
 
20151104 health2.0 in Japan - clinical big data and subjects
20151104 health2.0 in Japan - clinical big data and subjects20151104 health2.0 in Japan - clinical big data and subjects
20151104 health2.0 in Japan - clinical big data and subjects
 
Jsme 2014 wakayama
Jsme 2014 wakayamaJsme 2014 wakayama
Jsme 2014 wakayama
 
JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料
 
医用工学研究所.pdf
医用工学研究所.pdf医用工学研究所.pdf
医用工学研究所.pdf
 
事業の時間軸-ビジネスのための未来学序説
事業の時間軸-ビジネスのための未来学序説事業の時間軸-ビジネスのための未来学序説
事業の時間軸-ビジネスのための未来学序説
 
オーブンデータによる大学Ir情報システムの可能性 プレゼン資料
オーブンデータによる大学Ir情報システムの可能性 プレゼン資料オーブンデータによる大学Ir情報システムの可能性 プレゼン資料
オーブンデータによる大学Ir情報システムの可能性 プレゼン資料
 
deep learningによるCTスキャン画像シーケンスの3次元セグメンテーションからのMixed Realityでの活用
deep learningによるCTスキャン画像シーケンスの3次元セグメンテーションからのMixed Realityでの活用deep learningによるCTスキャン画像シーケンスの3次元セグメンテーションからのMixed Realityでの活用
deep learningによるCTスキャン画像シーケンスの3次元セグメンテーションからのMixed Realityでの活用
 
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
130823 次世代を勝ち抜く(地域中堅病院向けセミナー) 地域中規模病院のあり方_final抜粋版
 
バリデーション研究の計画・報告・活用
バリデーション研究の計画・報告・活用バリデーション研究の計画・報告・活用
バリデーション研究の計画・報告・活用
 

FHIR on python