DEIM Forum 2014 F6-2

電子カルテシステムの操作ログデータの時系列分析による頻出シーケンスの抽出牧原健太郎†

荒堀喜貴††宗夫††††

荒木賢二††††

串間

渡辺

陽介†††

横田

治夫††

† 東京工業大学工学部情報工学科 〒 152–8552 東京都目黒区大岡山 2-12-1†† 東京工業大学大学院情報理工学研究科計算工学専攻 〒 152–8552 東京都目黒区大岡山 2-12-1††† 東京工業大学学術国際情報センター 〒 152–8550 東京都目黒区大岡山 2-12-1†††† 宮崎大学医学部附属病院医療情報部 〒 889–1601 宮崎県宮崎市清武町木原 5200
E-mail: †makihara.k@de.cs.titech.ac.jp
あらまし

近年の医療の現場では電子カルテの普及が進み、医療の効率化がなされている。しかし、電子カルテの活用という点においては未だ研究段階であり、蓄積された電子カルテに関するデータを分析して医療の補助とすること
で、さらなる効率化を目指す事が考えられる。そこで本研究では、電子カルテの操作ログデータから医療行為の実施手順を分析し、その頻出シーケンスを抽出して医療の現場に役立てることを目標とする。ある病気に対して行われる処置・検査の典型的な流れはクリニカルパスと呼ばれる。電子カルテの操作ログ分析によって得られる医療行為の頻出シーケンスは、その医療行為の典型的な流れであると考えられるので、クリニカルパス作成の際の補助とするのはその活用例の一つである。
キーワード

データマイニング, シーケンシャルパターンマイニング, 電子カルテ, クリニカルパスᐇ㝿䛻⾜䜟䜜䛯䜸䞊䝎䛾ὶ䜜

1. は じ め に
近年、医療の現場では電子カルテの普及が進んでいる。電子

䜸䞊䝎A

䜸䞊䝎A

……

クリニカルパスとは、特定の病気に対して医療の現場で行わ

䜸䞊䝎C

䞉䞉䞉
㟁Ꮚ䜹䝹䝔

䜰䜽䝉䝇
ᒚṔ

㐣ཤ䛾஦౛䛜኱ኚከ䛔䛯䜑䛻㈇ᢸ䛜኱䛝䛔䟿

㐣ཤ䛾஦౛䜢ඖ䛻᭱㐺䛺䜽䝸䝙䜹䝹䝟䝇䜢᳨ウ᭱ウィ⟬ᶵ䛻䜘䜛ᨭ᥼䛷㈇ᢸ䜢㍍ῶ

Output知識を発見するなどの、電子カルテのさらなる活用が求められ
ている。

䜸䞊䝎E

䜸䞊䝎B

ᒚṔ䛿㟁Ꮚ䜹䝹䝔䛻ಖᏑ་⒪䝏䞊䝮

いては未だ研究段階であり、蓄積したデータから医療に役立つ䞉䞉䞉ᒚṔ䛿㟁Ꮚ䜹䝹䝔䛻ಖᏑ⑓ẼD䜢ᝈ䛖ᝈ⪅2

索が素早く行えるなど、医療の効率化がなされている。しかしながら、蓄積された電子カルテデータの二次利用という点にお䜸䞊䝎Cᐇ㝿䛻⾜䜟䜜䛯䜸䞊䝎䛾ὶ䜜

カルテとは従来の紙カルテを電子化したものであり、電子カルテの導入によってカルテの物理的な量が減り、またカルテの検

䜸䞊䝎D

䜸䞊䝎B

⑓ẼD䜢ᝈ䛖ᝈ⪅1㟁Ꮚ䜹䝹䝔䛾䜰䜽䝉䝇ᒚṔ䜢ศᯒ䛧䚸㢖ฟ䛩䜛䜸䞊䝎䛾䝅䞊䜿䞁䝇䜢ᢳฟ⑓ẼD䛻ᑐ䛩䜛䜽䝸䝙䜹䝹䝟䝇
䜸䞊䝎A

䜸䞊䝎B

れる典型的なオーダの流れを時系列順に並べた列のことであ

䜸䞊䝎C

䞉䞉䞉

図 1 想定する課題とアプローチ

り、電子的なクリニカルパスの利用が進んできている [1]。また、オーダとは医師が患者に実施する処置・検査のことであり、
例えば「点滴」や「血圧測定」などがあたる。クリニカルパスを導入し、病気毎に決められたオーダのパスを辿ることで、医療の標準・効率・安全化が期待されるとして、日本でも徐々に普及してきている。
白紙からのクリニカルパスの作成は負担が非常に大きいため、過去の典型的な例から医療チームが検討を重ねてパス化す
るなどの手法が取られているが、この場合でも事例が大変多い
ためにクリニカルパス作成の負担は大きく、計算機による補助が求められている [2]。計算機によるクリニカルパス抽出のアプローチとして、平野らの研究 [2] では過去のオーダ列を特定期間（1 日）でフェーズ分けし、その典型らしさから過去の事
例群をクラスタリングし、いくつかのクリニカルパス候補としている。この研究で抽出されたクラスタの中には特定期間で区切ったことによって実際のクリニカルパスと外れてしまったものもあった。
本研究では平野らの研究と異なる新しい手法を提案する。電子カルテの操作ログデータから患者 1 人が受けたオーダ列を取り出し、さらにそのオーダ列を特定期間ではなく特定のオーダを基準に分割して、その前後において頻出なオーダのシーケ
ンスを取り出し、これをクリニカルパスの候補として提示する（図 1）。これを実現する方式として、宋らの先行研究 [3] [4] のアイデアに基づき、電子カルテの操作ログデータを分析することで、オーダの頻出なシーケンスをワークフローとして抽出し、これをクリニカルパス候補とする。
ある病気を患う患者全体に実施されたオーダの列全体から頻出するオーダのシーケンスを抽出する方法として、本研究では

オーダ列の集合に対してアプリオリアルゴリズム [5] を元とした抽出アルゴリズムを適用し、患者全体のうち一定以上の人数… 䜰䜽䝉䝇ᖺ᭶᪥

… ✀㢮

᧯స

… ᝈ⪅ID… 䝥䝻䝟䝔䜱

…

に出現するシーケンスを頻出シーケンスとする。この手法は特… 2012-4-14

… 䜸䞊䝎

సᡂ

… aaa

… ཷデ䠈⏘፬ே⛉…

… 2012-4-14

… 䜸䞊䝎

సᡂ

… aaa

… ᳨ᰝ

…

… 2012-4-14

… ⑓ྡ

సᡂ

… aaa

… ༸ᕢ⭘⒆…

の都合などでオーダが日付的にずれてしまった場合もその影響… 2012-4-15

… 䜸䞊䝎

᭦᪂

… aaa

… ⾡๓ᢞ⸆

…

を受けないという利点がある。

… 2012-4-15

… 䜸䞊䝎

᭦᪂

… aaa

… ᡭ⾡ ༸ᕢ⭘⒆…

… 2012-4-15

… 䜸䞊䝎

᭦᪂

… aaa

… ⾡ᚋ᥇⾑

…

… 2012-4-16

… 䜸䞊䝎

సᡂ

… bbb

… ཷデ䠈➨䠎እ⛉…

定期間ごとのフェーズでオーダ列を区切っていないため、現場本論文では 2. で対象とするアクセスログと本研究のアプロー
チについて説明し、続く 3. で頻出シーケンスの具体的な抽出方法を説明する。4. では実際に本研究の手法を適用した結果とその考察を示し、5. で関連研究について紹介した上で、6. にて今

図 2 前提とする電子カルテアクセスログデータの例

回の研究のまとめと今後の課題を示す。

2. 問 題 設 定
2. 1 電子カルテアクセスログ
本研究では 2006 年 4 月 1 日から 2013 年 6 月 30 日までの、1年区切りで分割された宮崎大学医学部附属病院の電子カルテの

ᝈ⪅1

ධ㝔

⾡๓ᢞ⸆

㝜㒊Ὑί

ᡭ⾡

㏥㝔

ᝈ⪅2

ධ㝔

⾡๓ᢞ⸆

ᡭ⾡

⾡ᚋᢞ⸆

㏥㝔

ᝈ⪅3

ධ㝔

ᡭ⾡

᳨ᰝ

㏥㝔

ᝈ⪅ẖ䛻ᇶ‽䜲䝧䞁䝖䛾๓ᚋ䛷ศ๭
ᝈ⪅1๓༙

ධ㝔

⾡๓ᢞ⸆

㝜㒊Ὑί

ᝈ⪅2๓༙

ධ㝔

⾡๓ᢞ⸆

ᡭ⾡

ᝈ⪅3๓༙

ධ㝔

ᡭ⾡

ᡭ⾡

ᝈ⪅1ᚋ༙

㏥㝔

ᝈ⪅2ᚋ༙ ⾡ᚋᢞ⸆
ᝈ⪅3ᚋ༙

᳨ᰝ

㏥㝔
㏥㝔

๓ᚋ䛾䛭䜜䛮䜜䛛䜙㢖ฟ䝅䞊䜿䞁䝇ᢳฟ

アクセスログを使用する。このアクセスログは、宮崎大学医学図3

部附属病院で使われている電子カルテシステム「IZANAMI」[6]基準イベントによる分割の概要

によって取得した。1 年分のアクセスログの件数は 20,000,000〜50,000,000 件程度であり、アクセスログの件数は年々増加し

2. 2 本研究のアプローチている。個人情報保護の点から、この操作ログデータは患者の本研究では、1. で述べたように電子カルテアクセスログを分

名前を含んでいない。患者に対して行われたオーダの時系列順

析し、その中からオーダ列の頻出シーケンスを抽出することでなどを抽出するため、患者 ID を匿名化して用いている。なお、

それをクリニカルパスの候補とすることを目的とする。その抽当該アクセスログを医療行為改善の研究に用いることは、宮崎出方法としては、現場の都合でオーダの実施日程が変わった場

大学病院の HP [8] にてオプトアウトしており、宮崎大学の倫理合にもその影響を受けにくい抽出方法が望ましい。例えば手術審査委員会および東京工業大学の疫学研究等倫理審査委員会のを行う場合に、その前後で行われると決まっているオーダは、承認を得ている。

手術の実施日程が本来より遅くなったとしてもそれらのオーダ

このアクセスログの 1 件分のデータはアクセス年月日、情報の実施が前倒しになったりすることがなく、実施日がずれたとの種類、操作の内容、患者 ID、プロパティなどの合計 22 個のしてもその前後関係は変わらない。このような目安となるオー値からなっている（図 2）。情報の種類とは、そのアクセスロ

ダを区切りとして、その前後で頻出なシーケンスを抽出するこグが電子カルテのどの情報に関するものであるかを示す値でとで、あるオーダの実施がずれてもその影響を受けにくいようあり、例えば情報の種類が「オーダ」であればそのアクセスロ

なクリニカルパス候補の作成が出来ると考えられる。

グは電子カルテのオーダに関する情報のアクセスログ、情報の本研究ではこのような目安となるオーダの候補に着目し、「基種類が「病名」であれば電子カルテの病名に関する情報のアク準イベント」として表記する。基準イベントは、医療の現場にセスログ、といったようになっている。プロパティはそのログおいてその前後のフェーズに分けて医療行為が行われるようなの電子カルテの実際の内容に関する情報であり、情報コードが重要なオーダであり、例えば前述の手術などがそれに当たる。

「オーダ」であれば行われたオーダの内容（例えば「入院時指この基準イベントを持つ患者のみを頻出シーケンス抽出の対導依頼」、「点滴」など）が入っており、情報コードが「病名」

象とし、そのオーダ列を基準イベントの前後に分けて、その前であれば実際にその患者の病名について書かれている。例えば

後それぞれについて頻出シーケンスを抽出するというのが、本

図 2 の例で医師が患者 aaa に対して卵巣腫瘍であると判断しそ研究のアプローチである（図 3）。

の情報を作成した場合には、「そのアクセス年月日、情報の種

3. 時系列分析による頻出シーケンス抽出類：病名、操作：作成、患者 ID：患者 aaa、プロパティ：卵巣腫瘍」というログが蓄積される。

3. 1 前

提本研究で使用する情報は電子カルテアクセスログの内、匿名

本研究の手法を実行するにあたり、電子カルテアクセスログ

化した患者の ID とアクセス日時、「病名」や「オーダ」などアを関係データベースに格納した。そのため、電子カルテアクセ

クセスした情報の分類、その操作内容（作成や更新など）、そし

スログからデータを取り出す際には RDBMS に対して SQL 文てアクセスした情報の中身、以上の 5 つの情報であるため、こによるクエリを発行することで求めたいデータを取り出すことの情報を持つ電子カルテアクセスログであれば宮崎大学医学部が可能となる。

附属病院の電子カルテに限らずとも本研究の手法が適用できる。

3. 2 患者のオーダ列抽出クエリ
ある病気を患う患者 1 人が受けたオーダの時系列順の取り出

①䜸䞊䝎ิ㞟ྜ

CREATE VIEW diseaseOfPatient AS(
SELECT DISTINCT 患者 ID, SubIDProperty AS 病名 , アクセス年月日䝇䝔䝑䝥1:
䝕䞊䝍䜽䝸䞊䝙䞁䜾

FROM アクセスログテーブル
WHERE 情報コード ='5' AND 操作コード =' 作成 'ORDER BY 患者 ID, アクセス年月日 );䜸䞊䝎㝖ཤ䝹䞊䝹౛• ྠ୍䜸䞊䝎䛜㐃⥆䛧䛶ฟ⌧䛩䜛• ྠ୍᫬้䛻」ᩘ✀㢮䛾」ᩘ䛾䜸䞊䝎䛜኱㔞䛻ฟ⌧䛩䜛• 䞉䞉䞉䛺䛹

䝇䝔䝑䝥2:
㢖ฟ䝅䞊䜿䞁䝇ᢳฟྵ䜎䛺䛔ᇶ‽䜲䝧䞁䝖䜢ྵ䜐䜸䞊䝎ิ䛛䠛

②

䝇䜻䝑䝥

ྵ䜐

CREATE VIEW orderSqOfPatient AS(๓༙䜸䞊䝎ิ

SELECT 患者 ID, SubIDProperty AS オーダ , アクセス年月日㢖ฟ䝅䞊䜿䞁䝇ᢳฟ

FROM アクセスログテーブル
WHERE 情報コード ='2' AND 操作コード =' 作成 'ORDER BY 患者 ID, アクセス年月日 );③
CREATE VIEW orderSqOfDisease AS(ᇶ‽䜲䝧䞁䝖䛻䜘䜛䜸䞊䝎ิ䛾ศ๭

ᚋ༙䜸䞊䝎ิ
㢖ฟ䝅䞊䜿䞁䝇ᢳฟ㢖ฟ䝅䞊䜿䞁䝇㞟ྜ䝇䝔䝑䝥3:
㢖ฟ䝅䞊䜿䞁䝇䛾
䝣䜱䝹䝍䝸䞁䜾

㢖ฟ䝅䞊䜿䞁䝇䛾䝣䜱䝹䝍䝸䞁䜾䝹䞊䝹౛• 䛂㏥㝔䛃䛾䜸䞊䝎䜢ྵ䜎䛺䛔• 䞉䞉䞉䛺䛹

図 5 頻出シーケンス抽出における行程

SELECT DISTINCT 病名 , y. 患者 ID, オーダ , y. アクセス年月日
FROM diseaseOfPatient AS x, orderSqOfPatient AS y
WHERE x. 患者 ID=y. 患者 ID

シーケンス抽出の詳しい方法については次節で説明する。
ステップ 3 では、ステップ 2 によって得られた頻出シーケン

ORDER BY 病名 , y. 患者 ID, y. アクセス年月日 );ス群が特に多い場合に、その中からクリニカルパスの候補とし④て適切であると考えられるものを絞り込むためにフィルタリン

CREATE TABLE orderSqTable AS(

グをかける。具体的には、「退院」をシーケンスの中に含むもSELECT * FROM orderSqOfDiseaseの等の条件を設ける。

WHERE 病名 =ʼ 求めたい病名ʼ );
図 4 データベース化したアクセスログから患者の受けた処置列を得る手法

以上の操作によって残ったものをクリニカルパス候補となる
頻出シーケンスとする。

3. 4 頻出シーケンス抽出の詳細
頻出なアイテム集合の取り出し方のアルゴリズムとして、アし方を説明する（図 4）。ある病気にかかったある患者の受けたプリオリアルゴリズム [5] がある。ある大きさの頻出集合を求

オーダのシーケンスを取り出すには、まず病名と患者 ID の対める際に、それより 1 つ小さい大きさの頻出集合を部分集合に

1 ）応表の VIEW を作る（°。次に、患者 ID とその患者が受け含んでいない候補は頻出しないため、それらを候補としないこ

2 ）たオーダの対応表の VIEW を取る（°。最後に、この 2 つのとで、組み合わせの数を抑え、計算コストを低くするというも

3 ）VIEW から患者 ID が同じものを結合させる（°。後は、このである。本研究では頻出シーケンスを求めるにあたってそのの VIEW から病名のカラムが求めたい病名のレコードだけを4 ）選択すれば（°、ある病気を患う患者が受けたオーダ全ての候補の数が膨大になるのを防ぐために、このアプリオリアルゴ
リズムを参考にした。アプリオリアルゴリズムは集合に対して

時系列順が患者 ID 順に得られる。

のアルゴリズムであるため、出現する順番を考慮してシーケン

3. 3 頻出シーケンス抽出の概要

スに適用できるようにした。図 6 はその擬似コードである。

本研究における頻出シーケンスの抽出は、図 5 の様に大きく

3 つのステップに分かれて行われる。

擬似コードの概要
まず対象とする病気中に出現するオーダ全てを長さ 1 のシーステップ 1 では、データベースに前節のクエリを発行して得1 ）ケンスとして候補シーケンス群に加え（°、候補シーケンス

られるオーダ列の中から実際のオーダの流れにより近いものを

2 ）群全てに出現回数を記録するカウンタを用意する（°。対象得るため、そのオーダ列に対してデータクリーニングを行う。

とする病気の患者が受けたオーダ列を 1 件ずつ取り出し、その具体的には、誤入力に対する修正操作や、登録ボタンを連続でオーダ列の中に候補シーケンス群の要素が部分シーケンスとし押してしまう等の原因によって時系列順オーダ列の中で連続し3 ）。ここで、て出現するなら対応するカウンタを 1 増やす（°て同一のオーダが出現した場合には、そのオーダを 1 回のみ

アプリオリアルゴリズムであれば候補がオーダ列の中に部分集

オーダ列に追加する等の処理がある。

合として登場するかを確認すればよいが、今回は部分シーケン

ステップ 2 では、データクリーニングを行った後の患者毎のスであるかを確認するため、出現する順番を考慮する必要があ

オーダ列に対して、その中に基準イベントとなるオーダが存在る。部分シーケンスであるかを調べる候補シーケンス群の 1 要するかを確認する。存在しない場合には、その患者については

素を、先頭から順に取り出し、その要素が患者のオーダ列を先母数に含めず、頻出シーケンスの抽出もスキップする。一方基頭から調べて中に初めて出現した位置を記録する。次の要素は準イベントとなるオーダが存在する患者に対しては、その患者

オーダ列のその位置より後から末尾までの間で出現するかを調のオーダ列を、先頭から基準イベントまでのオーダ列と、基準

べて、出現した場合には位置の値をその位置で更新する。これ

イベントが出現した後のオーダ列の 2 つに分割し、その 2 つのを繰り返し、探す要素が出現しなかった場合には部分シーケン

オーダ列それぞれに対して頻出シーケンスの抽出を行う。頻出スではなく、最後の要素まで出現した場合には部分シーケンス

aprioriSequence()
I := 対象とする病気中に出現するオーダ全て ;P := 対象とする病気を患う患者 ID 全て ;minsup := 最低支持度 ;thrs := | P | * minsup;
candidateSeq := { { i } | i ∈ I }; ①
WHILE |candidateSeq| != 0
FORALL seq ∈ candidateSeq②
seq の counter = 0;
FORALL p ∈ P
pseq=p の受けたオーダのシーケンス ;FORALL seq ∈ candidateSeq③
IF isSubSequence(seq, pseq) == true
seq の counter++;
FORALL seq ∈ candidateSeq
IF seq の counter < thrs
candidateSeq=candidateSeq\{seq}; ⑤
IF |candidateSeq| == 0⑨
BREAK;ELSE⑥
Display candidateSeq;
FORALL seq ∈ candidateSeq
FORALL order ∈ seq
IFNOT order ∈ candidateOrdercandidateOrder=candidateOrder∪order;
FORALL seq ∈ candidateSeq
FORALL order ∈ candidateOrder
seq の末尾に order を加える ;⑧
newCandidateSeq=newCandidateSeq∪seq;
candidateSeq=newCandidateSeq;
candidateOrder={};
newCandidateSeq={};

ᝈ⪅1

䜸䞊䝎A

䜸䞊䝎B

䜸䞊䝎B

ᝈ⪅2

䜸䞊䝎B

䜸䞊䝎B

䜸䞊䝎D

䜸䞊䝎A

䜸䞊䝎C

ᝈ⪅3

䜸䞊䝎A

䜸䞊䝎B

ᝈ⪅4

䜸䞊䝎C

䜸䞊䝎B

䜸䞊䝎C

䜸䞊䝎B

䜸䞊䝎A

䜸䞊䝎B

䜸䞊䝎B

ᝈ⪅5

䜸䞊䝎A

䜸䞊䝎B

䜸䞊䝎C

長さ 1 の候補シーケンス群と出現する患者数①[A]:3, [B]:5, [C]:4, [D]:1

D を切り捨て、得られる長さ 1 の頻出シーケンス

isSubSequence(seq, pseq)
n=0;
FORALL order ∈ seq
FORALL porder ∈ pseq の n 番目から末尾までを取り出した subSequence
IF order == pordern=porder の pseq 内での順番 +1;
BREAK;IF porder == pseq の末尾
RETURN false;
RETURN true;[A], [B], [C]②⑦

長さ 4 の候補シーケンス群と出現する患者数[A,B,A,A]:0,[A,B,A,B]:0,[A,B,A,C]:1,[A,B,B,A]:2,[A,B,B,B]:0,[A,B,B,C]:1,[A,B,C,A]:1,[A,B,C,B]:1,[A,B,C,C]:0,

長さ 2 の候補シーケンス群と出現する患者数[B,B,A,A]:0,[B,B,A,B]:0,[B,B,A,C]:1[A,A]:2, [A,B]:3, [A,C]:3,

出現数の少ない候補を切り捨てて[B,A]:2,[B,B]:4,[B,C]:3,得られる長さ 4 の頻出シーケンス③④[C,A]:1,[C,B]:2,[C,C]:0⑦[A,B,B,A]

出現数の少ない候補を切り捨てて得られる長さ 2 の頻出シーケンス[A,A], [A,B], [A,C],[B,A],[B,B],[B,C],

④

[C,B]

長さ 5 の候補シーケンス群と出現する患者数[A,B,B,A,A]:0,[A,B,B,A,B]:0

図 6 アプリオリ的頻出シーケンス抽出の擬似コード

出現数の少ない候補を切り捨てて得られる長さ 5 の頻出シーケンス

4 ）
となる（°
。これを全ての患者について実行した後、出現回数のカウンタが患者の数に最低支持度（ミニマムサポート）をかけた値 (サポート値) より低い場合にはその候補を候補シー
5 ）ケンス群から外す（°。この処理が終わった時に候補シーケ

ンス群に残っていたものを長さ 1 の頻出シーケンスとして出力6 ）する（°。次に長さが 1 つ長い候補シーケンス群を作成するために、今の候補シーケンス群の中に残っているオーダ全てを
7 ）候補オーダとして取り出し（°、全ての候補シーケンス群の長さ 3 の候補シーケンス群と出現する患者数

⑧

なし
【終了】

[A,A,A]:0,[A,A,B]:0,[A,A,C]:1,[A,B,A]:2,[A,B,B]:2,[A,B,C]:3,[A,C,A]:1,[A,C,B]:1,[A,C,C]:0,⑤ [B,A,A]:0,[B,A,B]:0,[B,A,C]:1,[B,B,A]:2,[B,B,B]:1,[B,B,C]:1,[B,C,A]:1,[B,C,B]:1,[B,C,C]:0,[C,B,A]:1,[C,B,B]:1,[C,B,C]:0
出現数の少ない候補を切り捨てて得られる長さ 3 の頻出シーケンス⑥ [A,B,A],[A,B,B],[A,B,C],[B,B,A]

図 7 アプリオリ的頻出シーケンス抽出の具体例

要素について、全ての候補オーダ 1 つを末尾に加えた物を新し
8 ）い候補シーケンス群の要素とする（°。これを繰り返し候補

シーケンスを長くしていき、全ての候補シーケンスがサポート
9 ）値より低い出現回数しか出現しなくなったら終了する（°。

頻出シーケンス抽出の具体例
具体例を挙げて説明する（図 7）。ある病気に対して、その病気の患者 1,2,3,4,5 が居たとする。患者 1 の受けたオーダのシー
ケンスが [A,B,B,A,C]、患者 2 の受けたオーダのシーケンスが[B,B,D]、患者 3 が [A,B,C,B,A]、患者 4 が [C,B,B,B]、患者 5
が [A,B,C] であったとする。この 5 つのオーダのシーケンスから、当該疾患に対して 40 ％以上頻出するシーケンスを求める。
まず当該疾患に出現するオーダ全てを、長さ 1 の候補シーケ
ンスとする。現在の候補シーケンスは [[A],[B],[C],[D]] である。
この候補シーケンスの出現する患者の数をそれぞれ数えると、[A] は 3 人、[B] は 5 人、[C] は 4 人、[D] は 1 人である。今回の例では 40 ％以上頻出するシーケンスを求めたいので総患者数 5 人*0.4=2 人以上のものを残し、それ未満のものを取り除
1 ）く（図 7 °
。これによって残った、長さ 1 の頻出シーケンスは2 ）[[A],[B],[C]] となる（図 7 °。この残ったシーケンスから、新たに長さ 2 の候補シーケンスを作成する。残ったシーケンスの末尾に、残ったオーダの 1 つを加えるので、得られる候補シーケンスは [[A,A],[A,B],[A,C],[B,A],[B,B],[B,C],[C,A],[C,B],[C,C]] の 9つとなる。この 9 つについて同様にシーケンスが出現する患者の数を数えると [A,A] は 2、[A,B] は 3、[A,C] は 3、[B,A] は2、[B,B] は 4、[B,C] は 3、[C,A] は 1、[C,B] は 2、[C,C] は 0
3 ）となり（図 7 °、出現患者数 2 以上を残して、長さ 2 の頻出

シーケンスは [[A,A],[A,B],[A,C],[B,A],[B,B],[B,C],[C,B]] とな
4 ）る（図 7 °
。さらにこのシーケンスから長さ 3 の候補シーケン

スを同様に作成すると [[A,A,A], [A,A,B], [A,A,C], [A,B,A],[A,B,B], [A,B,C], [A,C,A], [A,C,B], [A,C,C], [B,A,A],[B,A,B], [B,A,C], [B,B,A], [B,B,B], [B,B,C], [B,C,A], [B,C,B],
5 ）[B,C,C], [C,B,A], [C,B,B], [C,B,C]] となり（図 7 °、この出

現患者数をカウントして 2 以上の物を残すと長さ 3 の頻出シー
6 ）ケンスは [[A,B,A],[A,B,B],[A,B,C],[B,B,A]] となる（図 7 °。

以降も同様にすると長さ 4 の頻出シーケンスは [A,B,B,A] の
7 ）
みとなり（図 7 °、長さ 5 の頻出シーケンスは得られる候補

シーケンスの中に出現患者数が 2 以上のものができないために8 ）得られない（図 7 °
。

4. 実

験

4. 1 実 験 方 法
実際に 3. のアルゴリズムを実行し、どのようなシーケンスが抽出できるかを試した。病名毎に患者 ID 順、アクセス年月日順
でオーダがソートされたテーブルをデータベースとして Post-

SQLᩥ䛷䝕䞊䝍䜢ၥ䛔ྜ䜟䛫

PostgreSQLJava䝥䝻䜾䝷䝮ೃ⿵䝅䞊䜿䞁䝇⩌䛸䛭䛾䜹䜴䞁䝍䞊

ၥ䛔ྜ䜟䛫䛾⤖ᯝ䜢㏉䛩
ᝈ⪅ID

䜸䞊䝎

⑓ẼDis

ᝈ⪅1

䜸䞊䝎A

⑓ẼDis

ᝈ⪅1

䜸䞊䝎B

⑓ẼDis

ᝈ⪅1

䜸䞊䝎B

⑓ẼDis

ᝈ⪅1

䜸䞊䝎A

⑓ẼDis

ᝈ⪅1

䜸䞊䝎C

⑓ẼDis

ᝈ⪅2

䜸䞊䝎B

⑓ẼDis

ᝈ⪅2

䜸䞊䝎B

…

…

…

ᝈ⪅1ேศ䛾
䜸䞊䝎ิ䜢ྲྀᚓ

䜸䞊䝎ิ䛛䜙
ೃ⿵䝅䞊䜿䞁䝇⩌䜢᥈⣴䜹䜴䞁䝍䞊䜢ቑ䜔䛩

<A,A>

1

<A,B>

1

䜎䛰ᝈ⪅䛜ṧ䛳䛶䛔䜛඲䛶䛾ᝈ⪅䛾
䜸䞊䝎ิ䜢᥈⣴⤊஢……

⑓ྡ

図 9 得られた術前・術後シーケンスの一例

ೃ⿵䝅䞊䜿䞁䝇䛾䜹䜴䞁䝍䞊䛜䝃䝫䞊䝖್ᮍ‶䛾䜒䛾䜢ೃ⿵䛛䜙㝖እ

PostgreSQL䛻Ⓩ㘓䛥䜜䛯⑓ẼDis䛻ᑐ䛧䛶䛾䜸䞊䝎䠄ᝈ⪅ID䚸䜰䜽䝉䝇᪥᫬䛷䝋䞊䝖䠅ධ㝔ṧ䛳䛯ೃ⿵䝅䞊䜿䞁䝇䛛䜙᪂䛧䛔ೃ⿵䝅䞊䜿䞁䝇⩌䜢సᡂ

システムの概要

㝜㒊Ὑί

ᡭ⾡

ẚ㍑

sq1 ධ㝔

⾡๓ᢞ⸆ᡭ⾡sq1, sq3䛜୍⮴

sq2 ධ㝔

᳨ᰝᡭ⾡яa䛜ᐇ㝿䛻ཷ䛡䛯䜸䞊䝎sq3 ⾡๓ᢞ⸆ 㝜㒊Ὑίẚ㍑

㐣ཤ䛻䜽䝸䝙䜹䝹
䝟䝇1䜢㐺⏝䛥䜜䛯༸ᕢ⭘⒆ᝈ⪅nே

ධ㝔

㝜㒊Ὑί

Ḟ㣗

ᡭ⾡

я

୍⮴䛺䛧
䛭䛾ෆ䛾1ேbb䛜ᐇ㝿䛻ཷ䛡䛯䜸䞊䝎…

greSQL に登録した。Java のプログラムによって PostgreSQLに SQL 文を発行してアクセスログからデータを取得し、候補

ᡭ⾡

…

図8

䛭䛾ෆ䛾1ேa⾡๓ᢞ⸆୍⮴䛧䛯≀䛜䛒䛳䛯ேᩘ

k
n

䠙

୍⮴ᝈ⪅
๭ྜ

䜽䝸䝙䜹䝹䝟䝇1㐺⏝ᝈ⪅⥲ᩘ
䝸䝙䜹
䜹䝹䝟
䝟䝇

シーケンスやカウンターの管理、頻出シーケンスの出力などは

図 10 評価方法の概要

Java プログラムで行う（図 8）。実行環境は以下である。
•

OS:Linux version 3.2.0-29-generic•

CPU:Intel(R) Xeon(R) CPU E5-4650 0 @ 2.70GHz•

Memory:64GB•

Java:バージョン 1.7.0 25•

PostgreSQL:バージョン 9.1.10

4. 2 実験で対象としたログデータの種類と病気
本研究で対象としたログデータは 2. で述べたものの中で操作コードが「作成」または「更新」となっているもののみとし、「閲覧」や「エクスポート」といった操作コードのものは除外した。「作成」または「更新」とした理由は、2. で説明したログデータではオーダが行われると決まった際にオーダが作成さ

図 11 クリニカルパス名ごとの術前・術後フェーズの一致患者割合れ、オーダが実施される際には更新されるためである。ただし、実施される場合以外にもオーダは更新されることがある。

れた。

本研究の手法は、オーダ列の中に基準イベントが出現する場

ステップ 3 では、術後に関しては非常に数が多いために、こ合を想定している。2012 年の「卵巣腫瘍」の患者 66 人のうち、の中からさらにクリニカルパス候補として適当である「退院」

37 人がオーダ列の中に「手術」のオーダを含んでいたため、今を含むシーケンス 4,296 件（最大の長さ 13）に限定した。実際

回はこれを本手法を適用する対象とする。手術を含むオーダがに得られた術前・術後フェーズの頻出シーケンスの例を図 9 に出現する 37 人のオーダ作成・更新列のオーダ総数は 16,790 件

載せる。これらの頻出シーケンスの評価は次節で行う。

であった。

4. 3 術前及び術後の頻出シーケンス群の抽出実験
実際に本研究の手法を実行するにあたって、図 5 におけるス

4. 4 頻出シーケンス群の評価
4. 3 で得られた頻出シーケンス群がどの程度クリニカルパスと一致するかを確認する。

テップ 1 では、2 つの方法を通してデータクリーニングを行っ

ここでは 2009 年から 2011 年までの、実際にクリニカルパス

た。1 つ目に、同一種類のオーダが連続する場合にそれを 1 回のを適用したことが判明している患者 ID のオーダ列を利用する。

オーダとした。これは、オーダ列の中に近い時間で同一のオー評価方法として、図 10 のように 2009〜2011 年に何らかのクダが連続して出現することが多く、そのオーダが実際に短時間

リニカルパスを適用された、オーダ「手術 卵巣腫瘍」を含むで連続して何度も行われているとは考えにくいケースがあった

卵巣腫瘍患者の「作成」または「更新」のオーダ列を、「手術ためである。2 つ目に、同じ患者の同日の同時刻に作成・更新

卵巣腫瘍」で術前・術後に区切り、それらが得られた術前・術されたオーダはオーダ列から除外した。これらは、電子カルテ

後の頻出シーケンス群の部分シーケンスとして含まれている割システムが入力支援等の目的で自動で一括作成したオーダであ合をクリニカルパス名毎に調べた。その結果、図 11 のようにる可能性が高いためである。

なった。横軸にはクリニカルパス名を示し、縦軸は一致患者割以上の方法を用いてデータクリーニングを行った後、図 5 に合を術前は青、術後は赤で示している。どのクリニカルパスにおけるステップ 2 として、術前・術後の両フェーズについて、対しても 80 ％以上と、患者一致割合が高いことが分かる。

最低支持度を 80 ％にしてアプリオリ的頻出シーケンス抽出を

4. 5 実験結果の考察行った。その結果、術前に関して 16 件（最大の長さ 5）、術後

まず 4. 3 で得られたシーケンスの数を見ると分かるように、に関して 50,673 件の頻出シーケンス（最大の長さ 14）が得ら

最低支持度が 80 ％以上の頻出シーケンスを取ったにも関わら

図 12 術前頻出シーケンスと共起度の高い術後頻出シーケンスの選び方ず、術後フェーズに関して 4,000 件以上の頻出シーケンスが得られたことから、術後部分の頻出なオーダには様々なパターン

図 13

㡯␒

ඹ㉳ᩘ䛾
᭱኱್

᭱኱ඹ㉳ᩘ䛾
䝅䞊䜿䞁䝇ᩘ

䐟

26

䐠

28

1

䐡

28

20

䐢

27

20

䐣

26

4

䐤

26

4

䐥

26

3

䐦

27

1

䐧

27

56

䐨

27

17

䐩

27

1

䐪

27

1

䐫

26

4

䐬

28

2

䐭

26

21

䐮

27

6

4

最も共起度の高い術後シーケンスの共起数とその共起数の術後シーケンスの数が存在することがわかった。これら全てをクリニカルパスの候補として提示するにはあまりに数が多すぎるため、今回の手法
のみではクリニカルパス作成の補助とすることは難しい。しかしながら、4. 4 の評価結果を見れば分かるように、2012 年の手術を含む卵巣腫瘍患者のオーダ列をマイニングして得られたシーケンス群の中には、確かに 2009〜2011 年のクリニカルパ

100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%

⾡๓㒊䛜୍⮴䛧䛯᫬䛻⾡ᚋ㒊䛜୍⮴䛧䛯๭ྜス適用患者の殆どにおいて一致するものが存在することも分かった。

4. 6 共起数による術後部分の絞り込み実験
頻出シーケンス群の抽出実験では術後部分に関して、その頻出シーケンス数が 4,296 件と大変多くのシーケンスが抽出され

図 14た。これは本来の目的であるクリニカルパスの候補として示す

術前部分が一致した場合にそれと共起度の高い術後部分が一致する割合には多すぎるため、これらを絞り込むことが望まれる。そこで、
術前頻出シーケンスについては数が少ないことに着目し、数多このグラフから、「卵巣腫瘍摘出術（良性）」以外のクリニカル

くの術後頻出シーケンスの中から、術前頻出シーケンスと共起

パスについては、術前部分が一致する場合には、それと共起度度の高いものを対応付けることを行う。

の高い術後部分も一致する割合が高いことが分かる。このことある術前頻出シーケンスと最もよく共起するシーケンスは次から、得られたシーケンス群をクリニカルパス候補として提示のように選んだ（図 12）。まず共起度の高い術後頻出シーケンする際に、術前部分までがわかった場合には、それと共起度のスを求めたい術前頻出シーケンスを 1 つ選ぶ。この術前頻出

高い術後頻出シーケンスは術後において行われる割合が高いた

シーケンスが存在する 2012 年の卵巣腫瘍患者のオーダ列それ

め、それを提示することで 4,296 件全てを提示するよりは候補

ぞれについて、術後頻出シーケンス 4,296 件それぞれが出現しが絞りこめる、と考えられる。

ているかを確認し、出現する患者の人数を共起数とする。そして 4,296 件のうち、最も共起数が高かった術後シーケンスを最5. 関 連 研 究も共起度の高いシーケンスとした。なお最も共起数の高い術後医療データのマイニングに関する研究

シーケンスが 2 つ以上存在する場合、それら全てを共起度の高いシーケンスとした。

串間らは宮崎大学医学部附属病院の電子カルテシステム「IZANAMI」の入院患者看護記録をテキストマイニングし、

4. 7 絞り込み実験の結果

それを KeyGraph によって可視化している [7]。この研究では

術前頻出シーケンス 16 件のそれぞれについて、最も共起度

2007 年と 2009 年の第２内科における入院患者看護記録をテキの高かった術後頻出シーケンスの共起数と、その共起数を持つ

ストマイニング技法によって共起解析ネットワーク可視図とし術後頻出シーケンスの数は図 13 のようになった。この図からて、それらを比較し検討行うことで看護記録テキストデータの16 件それぞれの術前シーケンスについて、4,296 件から比べる

定量的な分析を行っている。看護記録を可視化することは重要と絞り込めていることが分かる。

であるが、本研究のアクセスログによる解析とは研究目的が異また 2009 年から 2011 年までの卵巣腫瘍患者のオーダ列について、術前部分が一致した場合に、それと共起度の高い術後部分も一致した患者の割合を調べた所、図 14 のようになった。

なる。
医療情報データを利用してクリニカルパスの候補を生成する

手段として、平野らは過去の事例から典型らしさを求め、その典型らしさから事例をクラスタリングしてクリニカルパスとすることを提案した [2]。この研究では医療行為の過去の例を特定期間でフェーズ分けし、あるフェーズ中にあるオーダが出現す謝辞本研究の一部は、日本学術振興会科学研究費補助金基盤研究（A）(#22240005, #25240014) の助成により行われた。

る頻度と、あるフェーズから次のフェーズに移行する際にある

また、本研究で宮崎大学医学部附属病院の電子カルテアクセ

オーダが別のあるオーダに推移する頻度を求め、その例におけスログを医療行為改善の研究に用いることは、宮崎大学病院のる推移頻度を全体の推移頻度で除し、出現頻度で重み付けするHP にてオプトアウトしており、宮崎大学の倫理審査委員会おことによって、その例が全体の中でどれだけ典型的であるかのよび東京工業大学の疫学研究等倫理審査委員会の承認を得てお指標を求め、その典型らしさから過去の事例群をクラスタリン

り、関係各位の協力に感謝する。

グし、いくつかのクリニカルパス候補としている。
アクセスログマイニングに関する研究
ファイルのアクセスログから頻出するシーケンスを取り出す
研究として、宋らの研究 [3] [4] がある。この研究では、過去にあるユーザがある作業を行うのに使ったファイルのアクセスロ
グを時系列順に取り出し、そのアクセスログから頻出するファ
イル操作の列を抽出することでワークフローとし、他のユー
ザが同じ作業を行う際に使うファイルを監視することで次に使う可能性が高いと思われるファイルを推薦するというものである。この研究ではファイル操作の順番について、タスクと呼ばれる単位で近い時間の操作を順不同として扱っている。また、タスクの抽象化と呼ばれる作業を行い、ファイル名の類似性やコピー関係のあるファイル同士をまとめることで、新規ファイルのアクセスに対しても同じ抽象タスクで使われると思われるファイルを推薦している。

6. まとめと今後の課題
本研究では、電子カルテシステムのファイルアクセスログを分析し、医療行為改善のサポートを目標とした。そのために、匿名化した実際の電子カルテのアクセスログから、オーダ列の頻出シーケンスを抽出し、それをクリニカルパスの候補としてクリニカルパス作成を補助することを試みた。提案手法では基準イベントに着目し、現場の都合で基準イベントのオーダがずれてしまった場合でもその前後において行うべきオーダが分かるよう、オーダ列をそれぞれ術前部分・術後部分に分けて頻出なシーケンスの抽出を行う。実験では宮崎大学医学部附属病院
で使われている電子カルテシステムの匿名化されたアクセスロ
グデータを分析の対象とした。2012 年の卵巣腫瘍患者のうち、手術をオーダ列の中に含む 37 人を対象として頻出シーケンス抽出を行った所、術前部分に関しては 16 件、術後部分に関しては 4,000 件以上の頻出シーケンスが得られた。この手法で得られた頻出シーケンス群の中には、2009〜2011 年のクリニカ
ルパスを適用された卵巣腫瘍患者のオーダ列の部分シーケンスとなっているものが存在していた。術後部分に関しては候補数が多く、より精緻なクリニカルパスを示すことが可能になることも考えられる。術後部分の多くの候補の中から、術前部分と共起度の高い術後部分のみに絞り込んだ所、術前部分が一致した場合には術後部分も一致する割合が高いことが分かった。
今後の課題としては、卵巣腫瘍以外の別の病気についても本研究の手法を試すことや、LCS などの他のマイニング手法と比較することなどが考えられる。

文

献[1] Osamu Okada,Naoki Ohboshi,Tomohiro Kuroda,Keisuke
Nagase,and Hiroyuki Yoshihara. Electronic Clinical Path
System Based on Semistructured Data Model Using Personal Digital Assistant for Onsite Access. Journal of Medical
Systems August 2005, Volume 29, Issue 4, pp 379-389,2005[2] 平野章二, 岩田春子, 津本周作. 「典型らしさ指標に基づくク
リニカルパス候補生成の試み」. 第 33 回医療情報学連合大会
2-F-3-4,2013[3] 宋強, 川端貴幸, 伊藤史朗, 渡辺陽介, 横田治夫. 「ファイル名抽象化に基づくアクセスログからのワークフロー抽出とファイル
推薦手法の評価」. DEIM Forum 2013 B8-2,2013[4] Qiang Song,Takayuki Kawabata, Fumiaki Itoh, Yousuke
Watanabe, and Haruo Yokota. A File Recommendation
Method Based on Task Workﬂow Patterns Using File-accessLogs. DEXA2013 pp 410-417,2013[5] Rakesh Agrawal and Ramakrishnan Srikant Fast algorithms
for mining association rules in large databases. Proceedingsof the 20th International Conference on Very Large Data
Bases, VLDB, pages 487-499, Santiago, Chile, September
1994.
[6] 串間宗夫, 荒木賢二, 鈴木斎王, 荒木早苗, 田村宏樹, 淡野公一, 外
山貴子, 石塚興彦, 池田満. マイニング技法を活用した電子カルテ(IZANAMI) のネットワーク可視化. 電子情報通信学会技術研究
報告. CAS, 回路とシステム 108(388), 187-192, 2009-01-15[7] 串間宗夫, 荒木賢二, 鈴木斎王, 荒木早苗, 仁鎌照絵. 電子カルテ
ネットワークシステム (IZANAMI) のテキストデータ分析. 電子情報通信学会技術研究報告. IN, 情報ネットワーク 109(449),
383-388, 2010-02-25[8] 宮崎大学医学部附属病院 医療情報部. http://www.med.miyazakiu.ac.jp/home/jyoho/