医療現場における当直表作成は、複雑な制約条件とスタッフの希望を両立させる必要があり、担当者にとって大きな負担となっています。
この課題を解決するため、ChatGPTのGPTs機能を活用した、 調整さん連携型当直シフト自動スケジューリングGPT 「当直調整さん」 を開発しました。
今回のGPTでは、「PuLP[1] Optimization with PuLP — PuLP 2.8.0 documentation. Accessed May 28, 2024. https://coin-or.github.io/pulp/index.html 」という、数理最適化問題を解くためのツールを利用しています。難しい数式を計算してくれる頼もしい助っ人だと思ってください。
特長
- 調整さんとの連携: 調整さん [2]調整さん. https://chouseisan.com との連携を意識した仕組みにしています。
- 柔軟な制約条件設定: 「連続勤務日数」「月間当直回数」などの、制約条件が設定可能です。
- 最適化されたシフト生成: 設定された制約条件に基づき、公平で最適な当直シフトを自動生成します。
- CSV出力による利便性: 生成されたシフト表はCSV形式でダウンロードできます。
手順
1. GPT「当直調整さん」にアクセス
2. GPTに調整したい年月を入力し、調整さん用の入力データを作成します。
3. 調整さんに入力データを反映し、スタッフに希望日を回答してもらいます。
4. スタッフの回答結果をCSVファイルとしてダウンロードし、GPTにアップロードします。
5. GPTが最適化された当直シフトを自動計算し、CSVファイルで出力します。
実際の手順 (詳細)
1. まずGPTにアクセスしてみましょう。
https://chatgpt.com/g/g-gbRjWZViE-dang-zhi-diao-zheng-san
2. GPTに調整したい年月を入力し、調整さん用の入力データを作成します。
「何から始めたらいい?」をクリックしてもらうと、使用方法について説明してくれます。


例えば、「2024年7月」をつくりたいとします。年と月を当直調整さんに伝えてください。

自動で当直調整さんがPythonを実行して2024年7月のリストを作ってくれます。

右上の「コードをコピーする」から出力内容をコピーしてください。
3. 調整さんに入力データを反映し、スタッフに希望日を回答してもらいます。
調整さん にアクセスしてみましょう。
ステップ1: イベント名を記載します。
ステップ2: 赤枠で囲ったところに、先ほど当直調整さんからもらった文字列をペーストします。

ステップ3: 「出欠表をつくる」を押したら調整表の完成です。作成されたURLを使ってスタッフに知らせて入力してもらってください。

4. スタッフの回答結果をCSVファイルとしてダウンロードし、GPTにアップロードします。
回答画面の右にある「出欠表をダウンロードする」からcsvファイルをダウンロードしてください。

文字コード: UTF-8推奨ですが、どちらでも構いません。
行と列の設定: デフォルトの標準: 日程(縦) x 参加者 (横) を選択してください。

ドラッグアンドドロップをして当直調整さんにファイルをアップロードしてください。
5. GPTが最適化された当直シフトを自動計算し、CSVファイルで出力します。
もしテストで使用してみたい場合は、こちらのファイルを使用してみてください。
ファイルをアップロードすると以下のように制約条件について確認があります。

変更がなければ「変更なし」、変更があればそれぞれ希望を当直調整さんに伝えてください。
次に、今回の最適化処理に必要なPuLPのインストールが始まります。初回のみなので、最初は少し時間がかかりますが、次回以降、履歴からこの当直調整さんを繰り返し使っていただければ、インストールされた状態から使用することができます。

PuLPのインストールが完了したら、次の作業に自動的に進みます。GPTが最適化された当直シフトを自動計算し、CSVファイルで出力してくれます。

6. 何度も要望を伝えて微調整できる
ここからがGPTを使う利点の一つです。細かい調整の要望を立てると、GPTが適宜コードを修正して、PuLPを使って最適化をしながら細かく調整してもらうことができます。
- Dさんの当直回数は2回に減らして
- Fさんの連続する当直の間隔が短いから長くして
などにも対応してくれるので、要望にあった調整ができるまでお願いしてみてください。
最後に
今回作成した当直調整さんは、数理最適化のパッケージのサポートを使うことで、従来の指示だけだとうまくいかなかった細かい部分も対応してくれるように思います。
今まで頭を悩ませていた作業が少しでも軽くなり、「やりたいこと」に、より集中できるお手伝いができれば幸いです。
https://chatgpt.com/g/g-gbRjWZViE-dang-zhi-diao-zheng-san
References
↑1 | Optimization with PuLP — PuLP 2.8.0 documentation. Accessed May 28, 2024. https://coin-or.github.io/pulp/index.html |
---|---|
↑2 | 調整さん. https://chouseisan.com |