Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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弱)に作成義務
- ...
レセプトで分析するお話
情報処理学会 デジタルプラクティス 2013年15号
https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_
action=repository_vi...
もっと知りたい
• レセプト=『○○をしました ××円です』
- どうしてしたのか?
- した結果どうなったのか?
• カルテには書いてある
- 自然言語処理はハードルが高い…
SS-MIX2データ
Standardized Structured Medical record Information eXchange
• 電子カルテのデータを統一形式で出力
- 部門システム間連携
- 地域医療機関情報連携
• 20種を...
Riakで作る
SS-MIX Database
実験開始
• データ提供
- 中規模2病院
- 1年分
- 1.5GB, 3.5GB
- オフライン収集
Why Riak?
未確定仕様
• SS-MIX2仕様書 ver 0.96
- 今後ファイル定義は変わりうる
- 患者ごと・日ごとのファイル
- 1KB程度 ×数百万/1年
- ファイル命名規則は確定
• 患者ID_診療日_オーダーNo_タイムスタンプ_有効/無効...
総量予測困難
• 作成義務のないデータ
- 電子カルテ未導入病院
- 必要になったら必要な分だけ作成
• スモールスタートして急増にも備えたい
分散処理DB
AWS使う?
• 超個人情報です
- 全ファイルに患者氏名
- オンプレミス前提
KVS + 分散処理 + オンプレミス
Riak
インポート
• HL7メッセージの組み合わせ
- 繰り返しあり、省略あり
MSH|^~&|HIS123|SEND|GW|RCV|20111220103059.0000||OUL^R22^OUL_R22|20111220131032|P|2.5|...
HL7
• 各フィールドに省略あり、深さあり
- JSON化してインポート
- kuenishi/meddatum
https://github.com/kuenishi/meddatum
“fieldA”:“AA”,
“fieldB”:{“s...
検索
• Riak Searchで楽々・高速
- medicineCode : AAAAA*
• どのまとまりで出力する?
患者をどう数えるか?
Q. 数えたい『1人』とは何か?
A. 症例数
冬に肺炎、夏に骨折で入院は別症例
汎用的な区切りは?
• ~入院 :外来エピソード
• 入院~退院:入院エピソード
• 退院~ :外来エピソード エピソード単位で出力
入院 退院 入院
抽出後…
• JSONでは統計ソフトに渡せない
• kuenishi/presto-riak
https://github.com/kuenishi/presto-riak
- SQLで二次元表を出力
- グループ化
presto:defaul...
これからしたいこと
ファイルの取り消し
• ファイル名の末尾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
ありがとうございました
Upcoming SlideShare
Loading in …5
×

RiakでつくるHealthcare Database

RiakでつくるHealthcare Database

@Riak Meetup Tokyo #5
http://riak.connpass.com/event/10741/

RiakでつくるHealthcare Database

  1. 1. Riakでつくる Healthcare Database 川島直美
  2. 2. 自己紹介 • 川島直美です - (独)国立病院機構 本部 総合研究センター 診療情報分析部 システム開発専門職 - 前処理SE - GitHub: imoan1983
  3. 3. 診療情報分析部 since 2010 • 診療データの収集・分析 - 医療の可視化・比較 - 質の向上・均てん化への貢献 • 国立病院機構 143病院 - 入院患者:60万人/年 - 外来患者:のべ1,000万人/年
  4. 4. 今日のお話 1. 医療情報の利用 2. RiakでつくるHealthcare Database 3. これからしたいこと
  5. 5. 医療情報の利用
  6. 6. 二次利用 医療情報の利用 一次利用
  7. 7. 医療情報の利用 患者個人の記録 傷病の治癒 一次利用
  8. 8. 二次利用 医療情報の利用 不特定多数の記録 新しい知見
  9. 9. 臨床疫学研究 前向き 研究 後向き 研究
  10. 10. 臨床疫学研究 研究計画 予算獲得 調査開始 前向き 研究 大金 時間
  11. 11. 臨床疫学研究 過去データ 研究計画・予算獲得 分析開始 少額 すぐ 後向き 研究 支援DBを 作ろう!!
  12. 12. MIA since 2010 Medical Information Analysis databank • テキストファイルを収集・RDB化 • SQLで自由分析 - DPC調査データ • 包括支払い制度参加病院(1900弱)に作成義務 - レセプトデータ • 全国9万超の保険医療機関が作成する診療報酬請求データ RDB
  13. 13. レセプトで分析するお話 情報処理学会 デジタルプラクティス 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 載りました 喋りました
  14. 14. もっと知りたい • レセプト=『○○をしました ××円です』 - どうしてしたのか? - した結果どうなったのか? • カルテには書いてある - 自然言語処理はハードルが高い…
  15. 15. SS-MIX2データ Standardized Structured Medical record Information eXchange • 電子カルテのデータを統一形式で出力 - 部門システム間連携 - 地域医療機関情報連携 • 20種を超えるファイル定義 - 検査結果 etc - 検査や薬を全国統一コードで記載
  16. 16. Riakで作る SS-MIX Database
  17. 17. 実験開始 • データ提供 - 中規模2病院 - 1年分 - 1.5GB, 3.5GB - オフライン収集
  18. 18. Why Riak?
  19. 19. 未確定仕様 • SS-MIX2仕様書 ver 0.96 - 今後ファイル定義は変わりうる - 患者ごと・日ごとのファイル - 1KB程度 ×数百万/1年 - ファイル命名規則は確定 • 患者ID_診療日_オーダーNo_タイムスタンプ_有効/無効フラグ Key Value Store Key:ファイル名 Value:ファイル内容
  20. 20. 総量予測困難 • 作成義務のないデータ - 電子カルテ未導入病院 - 必要になったら必要な分だけ作成 • スモールスタートして急増にも備えたい 分散処理DB
  21. 21. AWS使う? • 超個人情報です - 全ファイルに患者氏名 - オンプレミス前提 KVS + 分散処理 + オンプレミス Riak
  22. 22. インポート • 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^^^^^C SPM|1|000000001219001||023^血清^JC10|||||||||||||201112191500 OBR|1|000000011000354|000000001219001|E001^血液学的検査^99O03|||20111219|20111219||||||||607^医 ORC|SC|000000011000354|000000001219001||CM||||20111220103059|||607^医師一郎^^^^^^^^L^^^^^I|01 OBX|1|NM|3A016000002327102^A/G比^JC10||1.7||1.2-2.0||||F|||201112191500 OBX|2|NM|3A010000002327101^総蛋白^JC10||7.2|g/dl^g/dl^99XYZ|6.70-8.3||||F|||201112191500 OBX|3|NM|3A015000002327101^アルブミン^JC10||4.9|g/dl^g/dl^99XYZ|3.7-5.5||||F|||201112191500
  23. 23. HL7 • 各フィールドに省略あり、深さあり - JSON化してインポート - kuenishi/meddatum https://github.com/kuenishi/meddatum “fieldA”:“AA”, “fieldB”:{“subField1”:“B1”,“subField2”:“B2”}, “fieldD”:“DD” AA | B1 ^ B2|| DD
  24. 24. 検索 • Riak Searchで楽々・高速 - medicineCode : AAAAA* • どのまとまりで出力する?
  25. 25. 患者をどう数えるか? Q. 数えたい『1人』とは何か? A. 症例数 冬に肺炎、夏に骨折で入院は別症例
  26. 26. 汎用的な区切りは? • ~入院 :外来エピソード • 入院~退院:入院エピソード • 退院~ :外来エピソード エピソード単位で出力 入院 退院 入院
  27. 27. 抽出後… • JSONでは統計ソフトに渡せない • kuenishi/presto-riak https://github.com/kuenishi/presto-riak - SQLで二次元表を出力 - グループ化 presto:default> select * from table; hosp_id | patiend_id | date ---------+------------+--------- 123456 | 7777777777 | 19830311 123456 | 0000000000 | 20000401 234567 | 3333333333 | 20140122 (3 rows)
  28. 28. これからしたいこと
  29. 29. ファイルの取り消し • ファイル名の末尾1桁で有効/無効の区別 患者ID_診療日_オーダーNo_タイムスタンプ_1 患者ID_診療日_オーダーNo_タイムスタンプ_0 ファイル名(Key)で検索して削除
  30. 30. データの保全 • 研究利用 - 利用中に値が変わっては困る • データ、indexディレクトリを保存
  31. 31. ファイル内のヒット • 『HbA1c検査の値が10.0以上』で過剰ヒット JSON化の工夫 “検査名”:“HbA1C”,“検査値”:8.2 … “検査名”:“血糖”,“検査値”:110.5… “HbA1C”:8.2 … “血糖”:110.5…
  32. 32. 検出限界以下・以上の表現 • 『検査値:[ * : 2 ]』で検索漏れ JSON化の工夫 “検査値”:“<=1.0”… “検査値下限”:0 … “検査値上限”:1.0 …
  33. 33. 様々なエピソード • ○○薬投与期間中 • ✕✕発症前1年から直近 • □□の検査値が△△を上回っている間 Start~Endを患者ごとに指定?
  34. 34. データの是正 • 仕様無視 - 数値フィールドに文字列 - JISなのに『 ① 』『 ㌘ 』 - 『髙』野さんは? 標準化団体へ問い合わせ • 独自コード - 標準コード付番中
  35. 35. 終わりに • 大きな予算がつきそうです - 数十病院、リアルタイム収集 • 成果物を発信していきます - https://github.com/imoan1983
  36. 36. ありがとうございました

×