riakでつくるhealthcare database

Post on 15-Jul-2015

966 Views

Category:

Healthcare

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

RiakでつくるHealthcare Database川島直美

自己紹介

• 川島直美です

- (独)国立病院機構 本部 総合研究センター診療情報分析部 システム開発専門職

-前処理SE

- GitHub: imoan1983

診療情報分析部since 2010

• 診療データの収集・分析

-医療の可視化・比較

-質の向上・均てん化への貢献

• 国立病院機構 143病院

-入院患者:60万人/年

-外来患者:のべ1,000万人/年

今日のお話

1. 医療情報の利用

2. RiakでつくるHealthcare Database

3. これからしたいこと

医療情報の利用

二次利用

医療情報の利用

一次利用

医療情報の利用

患者個人の記録

傷病の治癒

一次利用

二次利用

医療情報の利用

不特定多数の記録

新しい知見

臨床疫学研究

前向き研究

後向き研究

臨床疫学研究

研究計画

予算獲得

調査開始

前向き研究

大金

時間

臨床疫学研究

過去データ

研究計画・予算獲得

分析開始

少額

すぐ

後向き研究

支援DBを作ろう!!

MIA since 2010

Medical Information Analysis databank

• テキストファイルを収集・RDB化

• SQLで自由分析

- DPC調査データ• 包括支払い制度参加病院(1900弱)に作成義務

-レセプトデータ• 全国9万超の保険医療機関が作成する診療報酬請求データ

RDB

レセプトで分析するお話

情報処理学会 デジタルプラクティス 2013年15号https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_

action=repository_view_main_item_detail&

item_id=94255&item_no=1&page_id=13&block_id=8

第36回 データマイニング+WEB@東京

http://www.slideshare.net/naomikawashima52/

tokyowebmining36th

載りました

喋りました

もっと知りたい

• レセプト=『○○をしました ××円です』

-どうしてしたのか?

-した結果どうなったのか?

• カルテには書いてある

-自然言語処理はハードルが高い…

SS-MIX2データStandardized Structured Medical record Information eXchange

• 電子カルテのデータを統一形式で出力

-部門システム間連携

-地域医療機関情報連携

• 20種を超えるファイル定義

-検査結果 etc

-検査や薬を全国統一コードで記載

Riakで作るSS-MIX Database

実験開始

• データ提供

-中規模2病院

-1年分

- 1.5GB, 3.5GB

-オフライン収集

Why Riak?

未確定仕様

• SS-MIX2仕様書 ver 0.96

- 今後ファイル定義は変わりうる

- 患者ごと・日ごとのファイル

- 1KB程度 ×数百万/1年

- ファイル命名規則は確定• 患者ID_診療日_オーダーNo_タイムスタンプ_有効/無効フラグ

Key Value Store Key:ファイル名 Value:ファイル内容

総量予測困難

• 作成義務のないデータ

-電子カルテ未導入病院

-必要になったら必要な分だけ作成

• スモールスタートして急増にも備えたい

分散処理DB

AWS使う?

• 超個人情報です

-全ファイルに患者氏名

-オンプレミス前提

KVS + 分散処理 + オンプレミス

Riak

インポート

• HL7メッセージの組み合わせ

-繰り返しあり、省略あり

MSH|^~\&|HIS123|SEND|GW|RCV|20111220103059.0000||OUL^R22^OUL_R22|20111220131032|P|2.5||||||~ISO PID|0001||0001000052^^^^PI||患者^太郎^^^^^L^I~カンジャ^タロウ^^^^^L^P||19700405|M|||^^^^PV1|0001|O|01^^^^^CSPM|1|000000001219001||023^血清^JC10|||||||||||||201112191500OBR|1|000000011000354|000000001219001|E001^血液学的検査^99O03|||20111219|20111219||||||||607^医ORC|SC|000000011000354|000000001219001||CM||||20111220103059|||607^医師一郎^^^^^^^^L^^^^^I|01OBX|1|NM|3A016000002327102^A/G比^JC10||1.7||1.2-2.0||||F|||201112191500OBX|2|NM|3A010000002327101^総蛋白^JC10||7.2|g/dl^g/dl^99XYZ|6.70-8.3||||F|||201112191500OBX|3|NM|3A015000002327101^アルブミン^JC10||4.9|g/dl^g/dl^99XYZ|3.7-5.5||||F|||201112191500

HL7

• 各フィールドに省略あり、深さあり

- JSON化してインポート

- kuenishi/meddatumhttps://github.com/kuenishi/meddatum

“fieldA”:“AA”, “fieldB”:{“subField1”:“B1”,“subField2”:“B2”}, “fieldD”:“DD”

AA | B1 ^ B2|| DD

検索

• Riak Searchで楽々・高速

- medicineCode : AAAAA*

• どのまとまりで出力する?

患者をどう数えるか?

Q. 数えたい『1人』とは何か?

A.症例数

冬に肺炎、夏に骨折で入院は別症例

汎用的な区切りは?

• ~入院 :外来エピソード

• 入院~退院:入院エピソード

• 退院~ :外来エピソード エピソード単位で出力

入院 退院 入院

抽出後…

• JSONでは統計ソフトに渡せない

• kuenishi/presto-riakhttps://github.com/kuenishi/presto-riak

- SQLで二次元表を出力

-グループ化

presto:default> select * from table;hosp_id | patiend_id | date

---------+------------+---------123456 | 7777777777 | 19830311123456 | 0000000000 | 20000401234567 | 3333333333 | 20140122

(3 rows)

これからしたいこと

ファイルの取り消し

• ファイル名の末尾1桁で有効/無効の区別

患者ID_診療日_オーダーNo_タイムスタンプ_1

患者ID_診療日_オーダーNo_タイムスタンプ_0

ファイル名(Key)で検索して削除

データの保全

• 研究利用

-利用中に値が変わっては困る

• データ、indexディレクトリを保存

ファイル内のヒット

• 『HbA1c検査の値が10.0以上』で過剰ヒット

JSON化の工夫

“検査名”:“HbA1C”,“検査値”:8.2 …“検査名”:“血糖”,“検査値”:110.5…

“HbA1C”:8.2 …“血糖”:110.5…

検出限界以下・以上の表現

• 『検査値:[ * : 2 ]』で検索漏れ

JSON化の工夫

“検査値”:“<=1.0”…

“検査値下限”:0 …“検査値上限”:1.0 …

様々なエピソード

• ○○薬投与期間中

• ✕✕発症前1年から直近

• □□の検査値が△△を上回っている間

Start~Endを患者ごとに指定?

データの是正

• 仕様無視

-数値フィールドに文字列

- JISなのに『 ① 』『 ㌘ 』

-『髙』野さんは? 標準化団体へ問い合わせ

• 独自コード

-標準コード付番中

終わりに

• 大きな予算がつきそうです

-数十病院、リアルタイム収集

• 成果物を発信していきます

- https://github.com/imoan1983

ありがとうございました

top related