タスクは、診療科にします。これで、休日のフェーズ0/1/2,平日のフェーズ1/2に対して縦の列を制約します。診療科の設定は、自由ですので、将来の追加・変更は容易であり拡張性を有しています。これをシフトのみで行おうとすると破綻すると思います。
もう一つのポイントは、NoTaskVarを使用しない、ということです。これまでのフェーズモードを有する勤務表では、これを用いる例が殆どだったと思いますが今回は用いません。
この特殊タスクの説明は、難しいので割愛しますが、これを用いないということは、定義されている全てのフェーズでタスクがFillINされている必要がある、ということになります。例えば、宿日直というシフトのフェーズを見ると24時間、フェーズ0/1/2でチェックがされています。このときフェーズ0/1/2のいずれでも、以下のタスクのどれかが必ず割り当てられるという意味になります。空きや重複はありえません。必ず、定義したタスクのどれかが割り当てられる、という仕様になります。
シフトは、以下のように最終的になりました。拘束勤務をしつつ、日直や宿直、宿日直、短時間宿直があり得るので、どうしても状態数が増えてしまいますが、これ以下にはできません。通常の勤務や休みは全てまとめて、「その他」シフトにしています。このシフトは別な意味で便利で、当直したくない日には、予定を「その他」で埋めてしまえばよい訳です。「30分以下の空きや重複がない、切れ目なく」の実装は、シフトで保証します。縦の列はタスクで保証します。
0 件のコメント:
コメントを投稿