勤務表の作り方 
   -自動勤務表作成ソフトの賢い使い方を考える-


1.スタッフ数の見積もり

物理的に必要なスタッフ数は、計算で求めることができます。

例1 2交代 4週8休 72時間Max スタッフ数2名/Day

2(人)x2(入り明け)x28(日)x8(時間)=896時間
 必要な人員は、
   896/72=12.444..
 よって、最低でも 13人必要がことが分かります。 

例2 3交代 夜勤8回Max スタッフ数3名/Day

3(人)x2(深夜+準夜)*31*8(時間)=23.25
 よって、最低でも24人が必要になります。別な言い方をすれば、スタッフ数24人未満では、必ず夜勤を9回以上やらなければいけない人が生じるということです。

では、2交代では、13人、3交代では、24人入れば、必ず満足できるかというと、そうではありません。他の制約が入っていないので、その分が読めないのです。
計算で出るものではなく、試してみるしか方法がないということです。 (数学的にNP困難。ざっくり言うと、問題の規模が大きいとき、現実的な時間で解を求めることができない種類の問題であることが分かっています。)

2.最初は、広範囲に探す

例えば、例1で、12人で解かせようとします。人間には、上の計算で、解がないと分かっている問題でもソルバ(解くソフトの事です。)は、一生懸命に解を探そうとします。タイムアウトにならずに、解がない、と明確に分かるのは、比較的単純な問題に限られます。従って、最初の設定では、解のない領域ではなく、これ位なら解はあるはずだろう、という予想のもとに制約式を設定することをお勧めします。そのためにも、上のように、最低限のスタッフ数の見積もりは行ってください。

3.解の探索空間はなるべく大きく


予定の影響
制約を満たす解は、複数ありますが、最も解の空間が広いのは、ブランクの予定です。なにもないキャンバスには、自由な絵が書けますが、キャンバスが予定で埋まっていると、途端に解の空間が狭まり、欲しい解が得にくくなります。この様子をプロットしてみます。



横軸は、下の青部をブランクにした列数です。下図の場合は、一度、解を求めた後、青部3列をブランクにして再求解した結果、解の個数(別解の個数)は、殆どないということです。(一回求解した結果なので、少なくとも一個の解があることは判っている) これが、5列を削除して求解すると100以上の別解があり、7日では、10000個以上の別解があるという結果になりました。要するに、探す空間が大きければ、それだけ容易に解が見つかる可能性が大きいということになります。あたりまえの話です。つまり、


このことは、


ということを示唆しています。



下図は、実際の看護師長の予定入力の例ですが、彼女の勤務最適化の想いが強いためか、休み希望以外に多くの予定を書き込んでいます。(解の状況を確認しながら打ち込んでおられるようです。) これ位打ち込むのにかなり時間がかかると思いますが、計算機の負荷も大きくなり、求解時間も多くかかります。

彼女の頭の中に、制約としては入れていない制約があるのかどうかは分かりません。打ち込む時間と、制約を入れる時間との兼ね合いになりますが、通常は、この例よりもっと疎な予定入力が、望ましいと思います。

ともあれ、下が最終の予定入力で、答え一発、解の手修正をすることはなく提出しています。ちなみに、通常の制約の他 3レベルのソフト制約、50組程度のスタッフペアリング不可制約が附加された状態で解の探索時間は2-3分でした。(外部サーバを使うとPCの能力に依存しません。)


4.要求の多いスタッフをどうする?

次の例は、実際にあった あるスタッフの要求です。

師長さんへ

準夜:土曜日以外、日〜月可。
深夜:水曜 金曜のみ (日深)可
深準: 準まで連続でできます。第2第3週目に多めにつけてもらえると助かります
土日祝日勤 可能ですが、土曜日は、保育園が6時までなので、日祝を多めにしてもらえると助かります。


このスタッフの要求を全て制約化することはできません。部分共通項として、他の人も使いそうなものだけをスタッフプロパティとして記述しましょう。その他は、予定入力として入れ込んだ方が容易でしょう。

つまり、何がなんでもルール化・制約化して全部自動でやろう 、というよりも

 という方針が良いと思います。毎月同じで、多くの人が適用するものは、制約化した方が後々楽です。反対に、特定の個人だけ、あるいは今月だけ、という性格ものものは、直接書き込みして後は、スケジュールナース頑張れ! でよいでしょう。


結局、この方のスタッフプロパティは、下の青部としました。

上の予定と要求、そして下のスタッフプロパティを見ると、上の原則に則っていることが分かると思います。


深夜水金のみ、3連続夜勤可能、土曜休み は、このスタッフのみのプロパティ(他の人は全てオフ)です。通常3連続夜勤はNGですが、本人の希望である以上、検討が必要でしょう。これらは、他のスタッフでも後々、使う場面があるかもしれない、ということで追加しました。

この対応後、前の職場では、殆ど夜勤が出来なかったスタッフも、配偶者の協力を得て、なんとか夜勤をこなせるようになったとの事です。結果として、周りのスタッフとの負荷バランスの公平性が保たれています。

5.エラーを取り除く

6.ソフト制約でQOLを上げる

「基本的に〜」 「できれば〜」 「それが無理なら〜」 といった類の日本語に関して、実装するにはソフト制約を使います。
T.B.D.
参考 

7.優先度度つき予定入力 

コンピュータは、希望休を全て配置できるか?

常識的には、希望公休数が多ければ、良い環境のように思えますが、必ずしもそうだとは言えません。人的リソースに余裕があり、苦労せずに希望を通せれば、何も申し上げることはないのですが、残念ながらそういう職場は殆どないでしょう。

例えば、希望公休数が5日まで申請が可能だとします。全員がランダムに希望を出したとすると、全員が希望を満たせるものでしょうか? スケジュールナースには、シミュレーションという機能があり、ランダム公休を配置して様子を見ることができます。 この機能をつかうと、今の制約条件下で、どれ位希望公休数をかなえることができるかをシミュレーションすることができます。 結果は、驚くべきものでした。5日希望公休を謳っている病棟では、完全に希望を満たせることはまずなく、平均的には、3日程度までしか完全に満たすことができませんでした。5日希望公休を運用している実態と乖離が生じてしまったのです。調べてみると、乖離の原因は、

であることが分かりました。つまり、現在のルールは、なんら裏付けがあるものではありません。本当は、全員が5日、ランダムに希望を出されると破綻してしまう危いシステムであったのです。こうした知見は、スケジュールナースが明らかにした、世界で初めての成果です。

希望公休数が多い職場は、逆に勤務パターンが厳しくなる?

上の知見は、希望休を出せば出すほど、より好ましくない勤務パターンをスタッフに強いる関係である ことに注意してください。なぜならば、日本の勤務環境では、縦方向の制約、その日に必要な夜勤や、遅番、早番、残り番の数は、きっちり決まっておりソフト制約とすることは殆どありません。(増員日のソフト制約はあっても、最低限その日必要なスタッフ数をソフト制約とするところはありません。)つまり、解を得るためには、横方向の制約、看護師のシフトパターンで無理を強いる方向に作用させることで解を得ています。
謙虚なスタッフは、必要最低限の希望休みしか入れませんが、「出さなきゃ損」 みたいな感覚で出してくるスタッフも中にはいると思います。そうしたスタッフには、上の知見を理解して必要最低限を心がけて欲しい としか言えないのでしょうか? 謙虚なスタッフと傲慢なスタッフがいたとして、勤務表は、限られた解空間で選ばないといけないので、結果として、そして全体として、より好ましくない勤務パターンを強いるとすれば、謙虚なスタッフは二重に不利益を被ることになるのではないでしょうか? 「勤務表から最適化された患者サービスが始まる」というのは、スタッフ間の公平がまず最初にあるべきと思います。

スケジュールナースは、これらの計算とシミュレーションで得られた知見から、より良いルールに向けての指針を提案したいと思います。

スケジュールナースの提案各個人の希望休みに優先度をつける 

スケジュールナースでは、希望休みに優先度を割り当てることができます。例えば、

という具合に優先度を割り当てれば、本当に欲しい休みと、そうでない休みをコンピュータに教えてあげることが出来ます。 こうすれば、限られた人的リソース条件下で、スタッフの希望と好ましい勤務パターンの両立を最大限図ることが可能になります。
労使の協定があり、既に規則がある病院では、改訂は難しいのかもしれませんが、試験的にも、優先度をつけた希望のシステムを行って、体への負担はどちらが楽か検討してみる価値があるのではないでしょうか?

8.年休の活用

T.B.D.
参考 http://schedule-nurse.blogspot.jp/2014/04/blog-post.html

9.長期休暇を与えられるか検討する

公休以外に、年休や、長期休暇を与えられるかは、常に看護師長の悩みの種では、ないかと思います。スケジュールナースを活用することで、精度よく見積もることが出来ます。

10.正循環の検討

3交代の職場で、正循環勤務が話題になっています。看護協会のガイドラインでは、推奨とされる一方で、スタッフ側からは、必ずしも歓迎されてない側面もあります。スケジュールナースでは、より良いシフトパターン、及び、個々人でシフトパターンを選ぶ提案を行っています。

11.Tips集(旧項)


夜勤の負荷平準化は、どのように記述するか?

勤務表は、おのずと自明な制約があります。多くは、前の勤務表からの引継ぎという形で、伝統的な数字があるはずですが、ここでは、それが無いものとして、白紙の状態から考えてみます。

例題として、夜勤の負荷平準化について検討してみましょう。


下は、2交代で、

夜勤から次の夜勤までの間隔は、6日以上
夜勤、明け、休みのパターンで勤務しています。
連続勤務は5日までです。6日目には休みが入ります。
夜勤は正看から1名確保しています。
休みの回数は土日の回数と同じです。
土日祝の日勤者は、4名で固定しています
看護師長は、夜勤なし
一人あたりの夜勤数は、3-4回/月
平日の日勤者は、10名以上

という制約にしています。制約は2月1日-2月28日に適用しています。


この条件で、スケジュールナースでは、1秒足らずで、10個の解を得ることが出来ます。

下のように全ての夜勤可能者が3-4回の夜勤に収まっています。この3-4回とう制約は、どのようにして決まったのでしょうか?


負荷平準化のための制約の記述方法


ここでの制約の目的は、全員に夜勤を平準化したいということです。

上で夜勤ができる人は、17名です。2月期間28日のうち夜勤勤務者のべ総数Sumは、

Sum=2x28=56

です。これを17人で分担するとなると一人あたり
56/17=3.3

になります。つまり、全員が夜勤3回しかしないと17*3=51で、足りなくて全員が4回夜勤するとなると、17*4=68で余る計算になります。
「深夜勤務は、一人あたり3回から4回」という制約は、リーズナブルだったことが分かります。

夜勤間隔をできれば長くしたい

余談ですが、夜勤が込み入っていると、嫌がられますようね。そうした場合のネックになることはなんでしょう。上の計算のように、簡単には求まりませんから、限界についてここで調べてみましょう。


まずは、夜勤間隔を7日以上にしてみます。
7日以上にするには、[夜勤(S)の間隔6日(S*****S)を禁止] という制約を追加すればよいです。"禁止"は、最大でその数が0という制約と等価なので、下のように設定します。


上は、ソフト制約5ですので、これを有効化するには、下の行制約5をチェックして求解します。

これも10解を求めるのに2秒足らずで済みます。


このように、一日ずつ間隔を広げていってもよいのですが、面倒なのでエラー最小化モードで求めてみます。
全員が3回しかできないような夜勤間隔、例えば10日では、そもそも解がなかろう、ということも予想できますので、
その辺まで調べることとして、実際どこまで可能か、限界を見てみましょう。

ソフト制約を以下のように設定しソフトエラーの最小化で求解します。

すると下のように8日間隔まで可能であることが分かりました。

勿論、この他に、看護師の休み希望や、公休数による変動を考慮しないといけないので、これをそのまま運用することは出来ないのですが、おおよその目安はこんな感じで調べることが出来ます。

このページは、セルヴィスさんのページを参考にしました。


勤務表のブランク数と解の個数の関係

実は、今まで誰も調べたことはないと思います。 調べるソフトがありませんでしたから。スケジューリングナースは、制約を守る解をすべて列挙することが出来ますのでこの性質について調べることができます。

方法としては、以下の通りです。


1)まず、任意の解を得ます。データは、上で出た解のうちの一つを使いました。

2)解を初期設定に回し、任意の1列を削除し、解をすべて列挙させます。解の個数を数えます。
3)2)の削除列を増やし、同様に解の個数を数えます。これを繰り返して、ブランクの個数と解の個数の関係をグラフ化します。

下は、3日分の列をブランク(青部)にしたときの様子です。ブランク外の部分は、初期設定になるのでスケジュールはしません。ブランク部だけがスケジュール対象となります。そのとき周囲の制約も満足する解はいくつあるか?という問題です。


これに対して、3つの解がだけが見つかりました。
解1


解2


解3



同様にしてグラフ化していくと次のようになりました。
 

驚くべき結果ではありますが、ある意味当然と言えば当然の結果となりました。

2日内では、その解は、一個しか見つかりませんでした。つまり、元の解しか解はなく、これに対する別解はありませんでした。3日でも3個しかありません。しかしそれ以降は、爆発的に解は増えていて、全体では1000兆個以上の解になると予想されます。(そんなにあるなら、見つけるのはそんなに難しくないのでは? と思うかもしれませんが、母集団は、宇宙の全量子数より大きいことに留意してください。)

例えば、勤務表が完成した後で、何らかの勤務表の僅かな変更を余儀なくされることを考えましょう。この場合、少しの手直しでは駄目で、数日以上の変更が及ぶ、とも解釈できます。

いずれにしても、そのままの制約上で人間が考えて行うには、難しい事が予想されます。上の制約は、単純な例で実業務の制約はこれよりかなり多いです。これは、私の想像ですが、人間が行う場合、(意識的・無意識に)制約を緩めて変更を行っているのではないでしょうか?

やはり、スケジュールソフトを使いこなして、変更があった場合にも、できるだけしわ寄せがスタッフの勤務パターンに行かないようにしたいものです。

[Prev] [Next] [Index] [Home]