ワクチン予約や健康診断予約キントーンシステム
職場で今後ワクチン接種の予約管理を自動化させたいという要望がありました
最近webhookを使ったリアルタイム集計がブームなkintoneで、以前試した方法があったので今回はそのアプリの作成方法をご紹介します
やりたいことはワクチン予約状況計算の自動化
予約受付の流れとしては
- 予約カレンダーから予約可能日を確認
- 予約可能日があればその日程で予約
- 予約した時点で予約可能数に反映
これをkintoneとkintone連携サービスで考えた場合
- kViewerで予約可能日をカレンダービューで表示
- kViewerとフォームブリッジを連携させ予約受付
- Webhookを利用可能なサービスでリアルタイム集計
利用したkintone連携サービス
- kintone
- kViewer
- フォームブリッジ
- krewData
kintoneアプリ作成(今回は2つ)
今回は2つのkintoneアプリを作成します
- ワクチン接種日程表アプリ
- ワクチン接種登録アプリ
それぞれどんな機能があって、どんなkintoneアプリなのかを説明していきます
ワクチン接種日程管理kintoneアプリ
配置フィールドは
- 日付(日付フィールド)
- 予約可能数(数値フィールド)
- 予約数(フィールド数)
- 予約残数(計算フィールド)
- カレンダー表示(文字列1行)
予約残数には予約可能数-予約数
この予約残数をカレンダーに表示して、どの日程が予約可能か表示したいんですが
文字列1行フィールドなら、予約タイトルフィールドに設定できるので
カレンダー表示には自動計算にして、予約残数を式に設定しました
ワクチン接種登録kintoneアプリ
次に、フォームから入力された予約内容を反映さえるアプリを作成します
配置したフィールドは
- 日付(日付フィールド)
- 氏名(文字列1行フィールド)
- 人数(数値フィールド)
人数フィールドには初期値で1を設定しています
アプリの設定は以上です
次に連携サービスの設定をしていきます
連携サービスではAPIとWebhookを設定として使います
kintone連携サービスの設定
最初に書いた通り、今回利用する連携サービスは
- kViewer
- フォームブリッジ
- krewData(リアルタイム集計)
それぞれの設定を確認していきましょう
kViewerでワクチン予約状況をカレンダー表示
kViewerでは、予約可能な日程を表示させたいのでイメージはこんな感じ
kViewerに関しては別のブログをご参照ください(kViewer記事)
設定ポイント①予約数が0になったら予約できなくする
これを実現するためには、予約数が0になった時点でkViewerにレコードを表示しないようにすればOKです
設定ポイント②kViewerとフォームブリッジを連携させる
kViewerで表示させたカレンダーにから予約フォームを起動させるのがスムーズなので、両サービスを連携させます
この後作成するフォームブリッジのURLをkViewerで設定しますので、まずはフォームブリッジを作っていきます
フォームブリッジでワクチン予約受付
フォームブリッジも細かな設定や活用事例は別記事を参考に(フォームブリッジ記事)
ちょっとややこしいですが、設定ポイント!!
設定ポイント①フォームブリッジで設定するアプリはワクチン接種日程表
そう思う人が多いかもしれません
今回、kViewerでワクチン接種日程表の情報を確認します。そしてフォームブリッジに連携しますよね?
連携のメリットとしてはkViewerで表示した情報をフォームブリッジのフォームに引き継げる点や、フォームブリッジで引き継いだ内容を修正するとkintoneの内容にも反映してくれる点です
ただ、今回の場合はその機能が裏目に出てしまいます
kViewerで日付のデータをもってフォームブリッジから予約するので、日付のフィールドには既に値が入っています。そして、氏名を入力すると既に入力された同日のレコードの氏名を上書き保存してしまう・・・
解決方法としては、まず回答後の自動処理で2つのアプリに回答データを保存するように設定します。
こうすることで、次に行うフィールドの設定でkintoneアプリからフィールドを同期すると2つのアプリが設定可能となります
そして、ワクチン接種日程表アプリとは同期せず、ワクチン接種登録アプリと同期させます
こうすることで、ワクチン接種日程表アプリの日付情報を引用しつつ予約内容の保存はワクチン接種登録アプリに行う
そして、今回作成したフォームをkViewerと連携させます
今のままであれば、予約残数は自動計算されないので手動で日別予約数を入力する必要があります
リアルタイム集計可能な連携サービスで思いつくのが
- データコレクト
- Customine
- krewData
今回はリアルタイム集計のフロー枠が1つ空いていたkrewDataを紹介します
krewDataリアルタイム集計で予約状況をリアル集計
krewDataの記事は・・・書いてなかったかもしれないw
細かな設定は公式をご参考に・・・(krewDataリアルタイム実行)
プラグインやフローの設定をご紹介します。最終的にこんな感じになればリアルタイム実行が成功しています
まずは、実行単位を設定します。呼び出し元アプリにはワクチン接種登録アプリを設定。これはフォームブリッジから予約内容が追加された時点で再集計をkrewDataで行いたいのでこちらのアプリを選択しています。
今回はwebhookを用いました。URLの部分に設定に必要なURLが表示されますので、こちらのコピーしてワクチン接種登録アプリのwebhookに設定します
通知を送信する条件は、運用におって様々だと思います。今回はレコード追加とレコードの削除を条件に設定しています。
そして、リアルタイム実行にはログ出力先のアプリを作成する必要があるのですが、こちらはkrewDataの機能を使って設定が可能です。
krewDataフロー作成
さて、これでゴール
データ編集フローを作っていきましょう。フローも至ってシンプル
入力アプリはワクチン接種登録アプリに設定し、フィールドは日付と人数にしておきます
このままだと同日に何件予約が入っているのか分からないので、グループ化を行います
プレビューの内容を見ると、日別に集計がされていますね。あとはこの情報をワクチン接種日程表にセットするだけなので、出力アプリを設定します。
日付を更新キーに設定しているので、予約された内容に該当する日付のレコードに最新の集計結果が反映されるというわけですね
動画でワクチン予約管理システムの説明
色々活用可能だと個人的に考えている
集計に頑張る必要はないと思いますし、自動化できる部分は自動化したらいいと思います
今回は公開していますが、予約カレンダーも予約フォームもパスワードやIPで制限することで社内や院内、施設内だけのアクセスにすることも可能です
注意点として、krewDataのリアルタイム集計実行は5回/分と制限されています。kintone自体webhookは60回/分と制限が設けられているので
・フォームブリッジで予約を受けるだけなら、オプションを使って500回/分
・予約をwebhookで処理させたい場合、サービスによって5~60/分
上記の制限を考慮する必要があります
一人でもこの情報が役立つことを願っております