ppt tadano g
TRANSCRIPT
グラフマッチングの患者紹介システムへの適用
但野友美
複合情報学専攻調和系工学研究室
背景近年,医療の対象として介護・療養型施設を意識する状況となり,地域医療システム全体を総合的に捉える重要性が高まっている
医療の機能を分化し,患者の治療の段階によって適切な病床に行くように流れを作ることが望まれている
急性期病床 亜急性期・回復リハビリテーション病床
介護療養型施設
現在,札幌市では急性期から介護・療養型施設などへの転院が,隘路となっている
問題点
「札幌市医師会双方向患者紹介システム」より
※(「札幌市医師会双方向患者紹介システムの構築にむけた実態調査とその分析」より)
※
病院側が患者に適切な紹介先の医療機関を提示できない場合が多い理由
※
地域全体で情報の共有ができていない
医療機関,現在の空き病床
①送り手側が患者を登録 ②医療機関DBでマッチング ③結果確認 ④転院先決定
患者紹介システム
→現在β版が公開されている
双方向患者紹介システム
情報不足を解消するために,札幌市医師会では
の構築を目指している
複数の患者のマッチングを同時にとる方法の提案
•患者が転院する際の病床の割り当てを二部グラフの完全マッチング問題としてモデル化
•二部グラフの完全マッチングを求めるプログラムを実装し,患者紹介システムへの適用性を検証
目的
患者A患者B患者C
病床1病床2病床3病床4
β版
登録順に患者を一人ずつマッチングする
患者全体のマッチングを一度にとることにより,登録順が後の患者を考慮する
A1/28 2/16転院病床1,3,4
B2/9 2/20転院病床1,2,3
転院できない
C2/12 2/25転院病床2,3
病床1,2,3,4があるとする
モデル化複数の患者のマッチングを同時にとり,すべての患者に症状に合った医療機関を割り当てることを,二部グラフG(X,Y)の完全マッチングを解
く問題としてモデル化する.
• X={1,2,‥,n} 患者集合
(転院希望の患者)• Y={1,2,‥,m} 病床の集合
(空いている病床の集合)
X,Yからなる二部グラフの行列
mnn
m
gg
ggYXG
L
MOM
L
1
111
),( とする.
辺ijが存在するとは,患者i が病床j に行くことが可能
であることを表す
ここで, ∈{0,1} であり,辺ijが存在する場合は1,ない場合は0が入る
ijg njmi 0,0
求める解 すべての行に1が1つだけあり,列にはたかだか1つの1がある.そしてその他はすべて0であるという条件を満たすマッチング行列
mnn
m
mm
mmM
L
MOM
L
1
111
を求める
Mが存在しなければ“ない”存在した場合は条件を満たす解を1つ求める
解があるための必要十分条件は,Xの任意の部分集合X’に対して,X’の近傍をφ(X’)とすると, |X’|≦|φ(X’)| を満たすことである.
制約条件Hallの定理より
•••
mn}1,0{ijg}1,0{ijm
ここで, であり,辺ijがマッチングである場合は1,そうでない場合は0が入る
}1,0{ijm njmi 0,0
( :患者数 :病床数)n m
m
iijij
m
iij gmm
1111• ∧ mi ,,1L
•n
jijij
n
jij gmm
111
1
0
n
jijm
11
n
jijm
10
∧ mj ,,0L
特徴:完全マッチングが存在する場合は必ず見つけることができる計算量: (E:辺の集合,X:患者の集合)
2XEO
システム要件すべての患者に病床を割り当てる組み合わせが存在する場合,必ずその組み合わせを求められるようにしたい
ハンガリー法二部グラフG(X,Y)のXにおける完全マッチングを求めるアルゴリズム
①初期マッチングを作る
a1
a2a3
b1
b2
b3
二部グラフG(A,B)についてAにおける完全マッチングを求める場合
a1
a2a3
b1b2b3
A B
②Aについて
マッチング相手が未割り当てな点を探す
③マッチングを置き換えられる
道を探す
④マッチングを置き換える
a1
a2a3
b1
b2
b3
a1
a2a3
b1
b2
b3
アルゴリズム
a1
a2a3
b1b2
b3
実験概要
実際にハンガリー法を患者紹介システムに適用した場合の計算時間を調べる
症状が似ている患者は行くことができる病床も似てくる
実用的な範囲の計算時間で転院先を見つける必要がある
病床数 1000
患者数 1≦|X|≦1000各x∈Xの次数 E計算機 オプテロン270CPU(2GHz) メモリ:4GB
②1000の病床が症状によって10個ずつ100カテゴリーにカテゴライズされたグラフ
• ランダムに辺を引いた二部グラフとカテゴライズされたグラフにおける計算時間の比較 → 実験1
• カテゴライズされたグラフの場合,辺の本数による計算時間の比較 → 実験2
患者A
患者B
• 札幌市の病床数約45000• 空き病床率8%• システム登録率約3割 と仮定
×10
×10
×10
・・・
×10
カテゴリー1
カテゴリー2
カテゴリー3
カテゴリー100
実験で扱うグラフ
①ランダムに辺を引いた二部グラフ
カテゴライズされたグラフ
0
2
4
6
8
10
0 200 400 600 800 1000
10*10100
実験①
|X|
• カテゴライズされたグラフの方が計算時間が多くなった• 計算時間は,初期マッチングの段階で病床が未割り当ての患者数に比例する• いずれの場合も|X|が|Y|の90%以下の範囲では,解を20秒以内で算出できる
1,ランダムに100本辺を引いた二部グラフと,カテゴライズされたグラフの比較
時間(秒)
0
20
40
60
80
100
120
0 200 400 600 800 1000
10*10100
|X|
|X|が|Y|の90%
ランダムに100本辺を引いた
二部グラフ
カテゴライズされた二部グラフにおいてカテゴリーを10ずつ選ぶ(全部で100本引く)
カテゴライズされたグラフ
ランダム
初期マッチングの段階で病床が未割り当ての患者数
0
50
100
150
200
250
0 200 400 600 800 1000
10*510*1010*25
実験②
時間(秒)
|X|
|X|が|Y|の90%
• 辺の数が少ないほど計算時間は多くなった• 計算時間は,初期マッチングの段階で病床が未割り当ての患者数に比例する• いずれの場合も|X|が|Y|の90%以下の範囲では,解を20秒以内で算出できる
2,カテゴライズされたグラフについて,各x∈Xからひく辺の数による計算時間の比較
カテゴリーを5個ずつ選ぶ(次数E=50)
10個ずつ選ぶ(E=100)
25個ずつ選ぶ(E=250)
0
5
10
15
20
25
0 200 400 600 800 1000
5*1010*1025*10
初期マッチングの段階で病床が未割り当ての患者数
|X|
E=50
E=100
E=250
結果と考察
ハンガリー法は患者紹介システムのマッチングにおいて,登録順が後の患者を考慮に入れる場合に適用可能である
• 完全マッチングが存在する場合は必ず見つけることができる• 計算時間が少ない
• 全探索ではないので,解を1つしか求めることができない
病床数が1000以下で,患者数が病床数の90%以下の場合,グラフの形状によらず計算時間は20秒以内に算出できることが分かった
利点
欠点
• カテゴライズされたグラフの方が計算時間が多くなった• 辺の数が少ない場合,初期マッチングで未割り当てとなる病床が多くなり
計算時間が多くなった
まとめ• 登録順が後の患者を考慮したマッチング方法として,二部グラフの
完全マッチングを用いる方法を適用した• 患者紹介システムにハンガリー法を適用した場合,計算時間は,
病床数1000以下,患者数が病床数の90%以下であれば20秒以内に算出できる
• ハンガリー法は完全マッチングが存在する場合,必ず解を求めることはできるが,求めることのできる解は1つである
課題
• すべての完全マッチングを求める方法の検討
• 患者の行くことのできる病院について希望順位などを定められる完全マッチング(辺に重みをつけるなど) の実現
双方向患者紹介システム登録医療機関データベース
マッチングシステム
コーディネートスクエア図1:札幌市医師会入退院支援システム
(「札幌市医師会双方向患者紹介システム」より)
患者を受け入れることができる医療機関の
データベース
転送側医療機関と受入側医療機関が患者情報を入力し,双方向から
マッチングを行うシステム
マッチングの結果をもとに転送側・受入側医療機関双方の担当者,患者本人,家族などが集まり,受入医療機関を決定する
一度に転院希望の患者数が複数の場合,患者と病床の
集合を二部グラフとして捉え,その完全マッチングを求める
問題に置き換えることができないか
実験②
0
0.2
0.4
0.6
0.8
1
1.2
1.4
0 100 200 300 400 500
E100Y10.E10
|Y|=1000に固定1≦|X|≦500Yに偏りをもたせるためにYの要素を10ずつ100個のかたまりとし,各x∈XからYに辺を引く場合,一度に10本ずつ引くようにした.各x∈XからE個y∈Yを選んだので,実際にはE×10本の辺を引いたこととなる.
時間(秒)
|X|
1.4秒
Yに偏りをもたせ100本の辺を引く場合
ランダムに100本の辺を
引く場合
結果:E=10
辺の引き方に偏りを持たせて計算時間を計る
0
0.0005
0.001
0.0015
0.002
0.0025
0.003
0.0035
0.004
0.0045
0 10 20 30 40 50 60 70 80 90 100
"kekka100.kanzen.txt" using 1:4
0
20
40
60
80
100
120
140
160
180
200
0 100 200 300 400 500 600 700 800 900 1000
random10010*10
0
20
40
60
80
100
120
140
160
180
200
0 100 200 300 400 500 600 700 800 900 1000
10*1025*10
0
20
40
60
80
100
120
140
160
180
200
0 100 200 300 400 500 600 700 800 900 1000
random10010*10
0
1
2
3
4
5
6
7
0 100 200 300 400 500 600 700 800 900 1000
10*10100
0
20
40
60
80
100
120
0 100 200 300 400 500 600 700 800 900 1000
10*10100
0
20
40
60
80
100
120
0 100 200 300 400 500 600 700 800 900 1000
10*1010*25
0
50
100
150
200
250
0 200 400 600 800 1000
10*1010*2510*510*3