看護師の勤務表作成 ー解集合プログラミングの応用ー
彼は某国立大学の准教授である.彼は古くからの友人であり,優秀なプログラマーである.彼は故あって,附属病院のDXプロジェクトに関わることになった.実は附属病院の看護部では超過勤務の削減が積年の課題となっている.彼が各病棟の看護師長(約20名)にヒアリングしたところ,最も負担が大きい業務の一つが看護師の勤務表作成であった.彼の担当する附属病院に限らず国内外の多くの病院で,勤務表作成はいまなお看護師長の手作業である.実際に,1病棟の1ヶ月分の勤務表を作成するのに,約11時間も費やされているとの報告もある.そこで,彼は看護師長のもつ知識を最大限に活用するため,知識駆動AIとよばれる技術を用いてこの問題に取り組んだ.彼の狙い通り,質のよい勤務表をスピーディに自動作成することに成功した.が,その一方で新たな課題が発生するのであった.
勤務表作成の基準
ご家族や知り合いに看護師がいるという読者も少なくないだろう.看護師は24時間365日交代勤務しながら患者の生命・健康を守っている.看護師の勤務表作成は,看護師の健全な勤務環境を守るために大事である.そして良好な勤務環境は病院が提供する医療の質の向上にもつながる.日本看護協会は勤務表作成のガイドラインにおいて11項目の基準を示している.
例えば, 基準4の「夜勤の連続回数は2連続までとする」や基準5の「連続勤務日数は5日以内とする」などはわかりやすいだろう.もちろん,これらはガイドラインなので,医療機関や病棟によって独自の基準が存在することは言うまでもない.彼の大学の附属病院では,「新人看護師と指導看護師を優先して同じ勤務に割り当てる」という基準もあるそうだ.
実際の勤務表
まず最初に,彼が自動作成した勤務表を見てみよう.
これは,附属病院4階北病棟の2022年9月の勤務表である.各行は看護師,各列は日を表し,各マスには勤務シフトが記載されている.勤務表のマス目の数は32名×28日=896個ある.シフトは日(日勤),N(長日勤),J(短準夜勤),S(短深夜勤),P(遅出),○(週休)の6種類である.例えば,ID6の助産師さんは「NJS○…」となっているので,9月11日はNで長日勤,12日と13日がJとSで夜勤が続き,14日は○で休みという感じである.
勤務表作成は難しい?
彼は悩んでいた.どうやって附属病院の関係者にこの問題の難しさを説明すればよいかを.彼が出した答えはこうだ.勤務表のマス目は32名×28日=896個あり,各マスに6種類あるシフトのいずれかを割り当てるわけだから,組合せ可能な勤務表の総数は632×28 = 10697個となる.では 10697という数はどのくらい大きいのだろうか? 地球上の砂粒の数は約 5000 兆個 (約 1016)である.これは,地球の表面積を 510,100,000 km2とし,砂粒を 1mm3,地表から10mに隙間なく堆積と仮定した場合である.つまり,組合せ可能な勤務表の総数 10697は,地球上の砂粒の数よりも桁違い(681桁違い)に大きい.驚くべきは,各病棟の看護師長は地球上の砂粒の数よりも桁違いに多い候補の中から,唯一無二の勤務表を作成しているのである.それも手作業で! その苦労は想像で絶するものといえる.
勤務表の自動作成
地球上の砂粒の数よりも多い候補の中から,彼はどのように勤務表を自動作成したのかお話ししよう.彼が考えた勤務表作成の流れを示す.
まず最初に,彼は勤務表が満たすべき要件について看護師長に聞き取りをおこなった.つぎに,その要件を知識駆動AI用モデリング言語を用いて記述し,最後に,知識駆動AIツールを用いて勤務表を自動作成した.つまり,熟練者の知識をうまく活用して勤務表作成問題をモデリングすれば,あとはコンピュータが勤務表を作成してくれるというわけである.彼が作成したモデリングの一部を見てみよう.
この例は,解集合プログラミング(Answer Set Programming; ASP)とよばれる知識駆動AIツールを用いて記述されている.staff(1..32)
はstaff(1)
,…, staff(32)
の略記であり,staff(X)
はX
が看護師であることを表す論理式である.date(1..28)
も同様に日付を表す論理式である.shift(X)
はX
が勤務シフトであることを表す論理式である.ここでは,6つのシフトが定義されている.最後の行はルールとよばれ,:-
はif,,
はand,{…} = 1
は個数制約である.assigned(N,D,S)
は,看護師N
がD
日にシフトS
で勤務することを表す論理式である.このルールは,各看護師N
と各日D
に対して,6つのシフトのどれか一つを割り当てることを意味する.これは彼が作成したプログラムのほんの一部であるが,あとは,勤務表作成の11基準で示したような要件を,ルールとして追加していけばよいのである.
看護師さんからの評判
彼が自動作成した勤務表は附属病院の4階北病棟で実際に使われた.となると,気になるのはその評判である.看護師長さんからは,熟練, 中堅, 若手をバランス良くN(長日勤),J(短準夜勤),S(短深夜勤)に割り当てられている点がよい.土日の休みが多くの看護師に割り当てられている点もよい,とお褒めの言葉をいただいたそうだ.その一方で,ID6の助産師さんのNJSJSというシフトパターン(10月9日〜13日)は避けたいとの修正希望もあった.NJSJSは勤務表の要件には違反しないが,実際働いてみると過酷な勤務パターンだった.詳しく調べたところ,この9月に関しては,各看護師の休み希望などの要求を充足させるために,NJSJSを少なくとも1名に割り当てる必要性が生じてしまったそうだ.勤務表作成は奥が深い.
他にも貴重なコメントをいただいたと彼から聞いている.そのいくつかを紹介する.ポジティブなコメントとしては,「看護師長の負担を気にせず○(週休)希望を気持ち的に入れやすくなった」や「手作業では看護師個人の色々な事情を考慮するため精神的に辛いが,逆に自動作成によりストレスが大きく軽減された」があった.その一方で,「JSJS (夜勤2連続)というシフトパターンは体力的にきつい」,「収入に差が出るため,夜勤回数はできるだけ均等にしてほしい」,「希望しない3連休よりも2連休が適度にある方が良い」,など改善を要するコメントが寄せられた.そして最大の懸念事項は,勤務表を作成する時間は減ったが,看護師長の確認作業の時間が逆に増加してしまったという点である.この問題は最優先で解決すべきであり,彼はすでにいくつかの解決案を附属病院側に提示したそうだ.彼はいつも迅速である.
少しだけ専門的な話
情報学部のブログなので,少し専門的な話もした方がいいだろう.看護師の勤務表を作成する問題は,ナーススケジューリング問題 (Nurse Scheduling Problem; NSP)とよばれる組合せ最適化問題である.NSPはNP困難というクラスに属する計算量理論的に難しい問題である.NSPはオペレーションズリサーチの分野で古くから研究されており,近年では,COVID-19の影響もあり,AIの分野でも活発に研究されている.彼が利用したASPは知識駆動AIの一種で,看護師長のもつ知識を最大限に活用できる点が特長である.ASPのような知識駆動AIを用いる際に最も大事なのがモデリングである.モデリングの良し悪しが,最終的に得られる勤務表のクオリティを決定するといってよい.彼は優秀なプログラマーなので,短期間で良いモデリングを構成できた.しかし,一般に熟練者がもつ知識はしばしば暗黙的(無意識のうちに使っている)であり,モデリングすることが困難なことが多い.例えば, プロのテニスプレイヤーがもつ知識(どのような状況で,どのように動くのがよいのか)をモデリングすることは容易ではない.彼によると,暗黙知の吸い上げには PDCA サイクル(Plan – Do – Check – Action)が重要とのことだった.
私の貢献
この話の主役は彼なわけだが,私のことも少し触れておく.私の名前は「番原」と書いて「ばんばら」と読み,どちらかといえば珍しい苗字だ.番原の主な研究分野は,命題論理の充足可能性判定(SAT),制約プログラミング,解集合プログラミング(ASP)であり,なかでも,ASP は人工知能分野(特に知識表現・推論)で近年盛んに研究されている.番原はドイツのポツダム大学に客員研究員として1年間研究滞在し,それ以降,ASP の研究で世界的に著名な Torsten Schaub 教授と国際共同研究を続けている.とりわけ ASP による時間割作成の研究は,時間割ベンチマーク問題の半数以上の記録を塗り替えており,最も成功した ASP の応用事例の一つとして知られている.この業績に対して,2023年7月に論理プログラミング協会から,ICLP2023 ALP 10-Year Test-of-Time Award という名誉な賞をいただいた.
彼から ASP を使って看護師の勤務表を作成したいので手伝ってほしいと依頼があったのは2022年の春だったと思う.彼からの頼みを断ることはできないので,はいはいとすぐに承諾した.勤務表作成問題について,何度も合宿形式で朝から晩まで議論した.その際,時間割問題の研究で得られた知見が勤務表作成問題のモデリングに役立ったのを鮮明に覚えている.
エピローグ
彼と私の共同研究により,知識駆動AIを用いて質のよい勤務表をスピーディに自動作成することに成功した.これは紛れもない事実である.しかしながら,熟練者である看護師長が作成する勤務表は質が高いだけでなく,手作業による温かさ(愛?暗黙知?)にあふれている.もしかしたら,それ以上のものは存在しないかもしれない.彼の次の目標は「看護師長の手作業に匹敵する勤務表」を高速に自動作成することだという.「愛と勇気と我が友人」.彼の「大学への愛」と「新しいものに挑戦する勇気」が,附属病院DXを成功に導くことを祈りたい.国内外を問わず,AIといえば機械学習を思い浮かべることが多い.機械学習はデータから得られる情報のみを活用するデータ駆動AIである.知識駆動AIとデータ駆動AIは一見すると相反するものと思われがちだが,実は相補的(互いにおぎない合う関係)である.近い将来,知識駆動AIとデータ駆動AIを融合した新しいAIが生まれ,「看護師長の手作業を超える勤務表」が得られる日が来るかも知れない.