2024年5月8日水曜日

医師の当直表・拘束表問題のタスク設定

 タスクは、診療科にします。これで、休日のフェーズ0/1/2,平日のフェーズ1/2に対して縦の列を制約します。診療科の設定は、自由ですので、将来の追加・変更は容易であり拡張性を有しています。これをシフトのみで行おうとすると破綻すると思います。

もう一つのポイントは、NoTaskVarを使用しない、ということです。これまでのフェーズモードを有する勤務表では、これを用いる例が殆どだったと思いますが今回は用いません。

この特殊タスクの説明は、難しいので割愛しますが、これを用いないということは、定義されている全てのフェーズでタスクがFillINされている必要がある、ということになります。例えば、宿日直というシフトのフェーズを見ると24時間、フェーズ0/1/2でチェックがされています。このときフェーズ0/1/2のいずれでも、以下のタスクのどれかが必ず割り当てられるという意味になります。空きや重複はありえません。必ず、定義したタスクのどれかが割り当てられる、という仕様になります。

シフトは、以下のように最終的になりました。拘束勤務をしつつ、日直や宿直、宿日直、短時間宿直があり得るので、どうしても状態数が増えてしまいますが、これ以下にはできません。通常の勤務や休みは全てまとめて、「その他」シフトにしています。このシフトは別な意味で便利で、当直したくない日には、予定を「その他」で埋めてしまえばよい訳です。「30分以下の空きや重複がない、切れ目なく」の実装は、シフトで保証します。縦の列はタスクで保証します。

以上のフレームワークで記述した解(人力解)の例が以下です。宿日直は、3フェーズ24時間、宿直は、2フェーズ16時間が割り当てられていることが分かります。連休中も、宿日直や、拘束が連続してある、という過酷な勤務になっていることが分かると思います。宿日直のあとオンコール(呼び出し)があったなら、何時間寝ないことになってしまうか想像してみてください。恐らくは日本だけの特殊勤務形態ではあります。しかし、日本の医療は、こうした過酷な勤務をこなしている勤務医によって支えられている、ということではないでしょうか?




0 件のコメント:

コメントを投稿