定時で予約可能な予約フォームをキントーンで作ってみた
午前の診療予約は朝の6時から、午後の診療予約はお昼12時から予約可能とする。お昼の12時になるか、あらかじめ決めている予約可能枠が埋まったら予約できないようにしたい。
予約可能な外来でよくみる予約フォーム。
子供が風邪ひいた時は6時になったら連打してました。
基本専用ツールを使えばいいと思うんですが、kintoneと連携サービスを契約しているならできるんじゃないか?定時になったら予約可能にするって結構便利だと思って設定してみました。
複数の定時実行はkrewDataかCustomineが便利
kintone定時実行可能なkintone連携サービスはいくつかあります。1つのアプリに対して、複数時刻実行タスクを設定したい場合、krewDataのスケジュール実行やCustomineの定期実行タスクが便利です。
krewDataの複数定時実行について
krewDataの場合、1つのフローに対して複数の実行時間が設定可能です。
さらに、契約フロー数によっては同一アプリでも、異なるフロー設定することが可能です。
今回定時予約解放にはkrewDataを利用しました。
6:00になったら、AM予約レコードのフィールド値を変更して予約可能にするフロー。12:00になったら、AM予約は終了させて午後予約を可能にするフロー。
すごく便利なkrewDataですが、リアルタイム実行の場合制限がありますので使い所を検討する必要があります。
krewDataは複数の実行要求を同時に実行することはできません。
[同時実行時の動作]で処理実行中に新たな実行要求が発生した場合の動作を指定できます。要求をキャンセル: 実行中に新たな実行要求を受け付けません。
実行を待機: 新たな実行要求は実行開始を待機し、実行中の中の処理が完了した後に実行します。待機可能な実行数には制限があります。
Customineの複数定時実行について
Customineは定期実行タスクを設定することで。複数フロー複数時刻の実行が可能です。
通常1スロット1アプリって考え方ですが、定期実行やWebhookを用いた実行になると1時間=1スロットって考え方になります。処理にかかる時間がどの程度かで、利用できるカスタマイズが変わってきます。
krewDataの場合、フローにかかる時間って考え方ではないです。ただ、フロー数で管理しています。Customineは処理する実行時間で管理しています。この制限の中で複数定時実行を行うことが可能です。
データコレクトの複数定時実行について
最後にデータコレクトの定時実行なんですが、1アプリに対して1つの実行しか登録できません。
リアルタイム実行は、集計元として参照できるレコード数に制限はありますが、実行数などに制限はないです(kintoneの1日に実行できるAPIリクエスト数は、1アプリ10,000)
データコレクトでは、集計元として参照できるレコード数に、10,000レコードまでの制限があります。10,000レコードを超える場合は、絞り込み条件を設定していただくか、集計元アプリのレコード数制限解除オプションをご契約いただく必要があります。集計元アプリのレコード数制限解除オプションでは、集計元のレコード上限を100,000レコードまで増やすことができます。
定時実行を登録できる数の上限があるなら、同じアプリを複数データコレクトに登録すればいいじゃない!!kViewerもフォームブリッジもできるじゃないか!!
データコレクトは同じアプリを複数登録できないんです
複数定時実行はできないけど、リアルタイムなり手動実行はポチポチできるし登録できるアプリに制限はないってメリットもある。予約受付して、リアルタイムに予約可能数を計算する仕組みはデータコレクトで設定しました。
krewData
Customine
データコレクト
同じようなサービスだと思う人もいますが、結構違う部分が多いんですよね。
今回は、定時になったら予約解放したいのでkrewDataを利用しました。予約に関しては既にいくつか書いているので、そちらもご参考にしていただければ嬉しいです。
予約解放されていないと、予約受付できないようにする
krewDataで定時になったら予約可能や予約終了とフィールド値を変更するように設定しています。
受付フォームにはフォームブリッジを利用し、予約するには日付と時間帯(AMorPM)の入力が必須としています。しかし、日付と時間帯は直接入力できません。編集不可にしています。
kViewerルックアップを使って、予約できるレコードがあればルックアップで選択できる。
予約できないor予約数が予約枠に達している場合は、レコードが表示されないので予約できないって仕様です。
kViewer対策ってなってるのは、ラジオボタンならkViewerルックアップに利用できないので、文字列1行フィールドにラジオボタンの値をセットするって意味でフィールド名を変えていますw
ID登録されていないと、予約できないようにする
事前にIDと生年月日を登録していないと、予約フォームから予約できないようにしてみました。初診の方は別フォームからお願いね!!的なやつですね。
設定方法としては、IDと生年月日が登録されたアプリをkViewerルックアップで利用します。
ID=00001 生年月日=2000年1月1日の場合、入力値は0000120000101
みたいな感じで、IDと生年月日を入力してもらい、完全に一致したレコードのみを検索する。なので、IDと生年月日を分かっていないと予約できない。
IDと生年月日はkintone側でレコード結合して、患者識別コードってフィールドを作っています。
IDだけだと適当に入力して当たる確率高い。生年月日だけだと絶対被る人出てくる。なので、IDと生年月日を入力してもらう。これでOK