ワクチン予約や健康診断予約kintoneシステム

職場で今後ワクチン接種の予約管理を自動化させたいという要望がありました

最近webhookを使ったリアルタイム集計がブームなkintoneで、以前試した方法があったので今回はそのアプリの作成方法をご紹介します

健康診断やワクチン予約に利用可能な、リアルタイム予約管理をkintoneでやってみた

やりたいことはワクチン予約状況計算の自動化

予約受付の流れとしては

  1. 予約カレンダーから予約可能日を確認
  2. 予約可能日があればその日程で予約
  3. 予約した時点で予約可能数に反映

これをkintoneとkintone連携サービスで考えた場合

  1. kViewerで予約可能日をカレンダービューで表示
  2. kViewerとフォームブリッジを連携させ予約受付
  3. Webhookを利用可能なサービスでリアルタイム集計
bozu
今回は③で使えそうなサービスとして、krewDataのリアルタイム実行を使ってみました

利用サービスリンク

  • kintone
  • kViewer
  • フォームブリッジ
  • krewData
kintone連携サービス 関連記事 
[catlist numberposts=’5′ date=”yes”  id=525]

kintoneアプリ作成(今回は2つ)

今回は2つのkintoneアプリを作成します

  1. ワクチン接種日程表アプリ
  2. ワクチン接種登録アプリ

それぞれどんな機能があって、どんなkintoneアプリなのかを説明していきます

ワクチン接種日程管理kintoneアプリ

ワクチン接種日程管理kintoneアプリ

配置フィールドは

  • 日付(日付フィールド)
  • 予約可能数(数値フィールド)
  • 予約数(フィールド数)
  • 予約残数(計算フィールド)
  • カレンダー表示(文字列1行)

予約残数には予約可能数-予約数

この予約残数をカレンダーに表示して、どの日程が予約可能か表示したいんですが

ワクチン予約カレンダー設定
bozu
予約タイトルフィールドに計算フィールドは設定できないっぽい

文字列1行フィールドなら、予約タイトルフィールドに設定できるので

カレンダー表示には自動計算にして、予約残数を式に設定しました

文字列1行設定


bozu
あとは予約数に実予約数が自動で入力されるようになれば、予約残数も自動で表示されるはず

ワクチン接種登録kintoneアプリ

次に、フォームから入力された予約内容を反映さえるアプリを作成します

ワクチン接種登録kintoneアプリ

配置したフィールドは

  • 日付(日付フィールド)
  • 氏名(文字列1行フィールド)
  • 人数(数値フィールド)
bozu
シンプルです!!応用すれば1時間毎の予約数を設定するとかも可能ですね

人数フィールドには初期値で1を設定しています

初期値を1に設定する

アプリの設定は以上です

次に連携サービスの設定をしていきます

連携サービスではAPIとWebhookを設定として使います

kintone連携サービスの設定

最初に書いた通り、今回利用する連携サービスは

  • kViewer
  • フォームブリッジ
  • krewData(リアルタイム集計)

それぞれの設定を確認していきましょう

kViewerでワクチン予約状況をカレンダー表示

kViewerでは、予約可能な日程を表示させたいのでイメージはこんな感じ

kViewerでワクチン予約状況をカレンダー表示

kViewerに関しては別のブログをご参照ください(kViewer記事

設定ポイント①予約数が0になったら予約できなくする

これを実現するためには、予約数が0になった時点でkViewerにレコードを表示しないようにすればOKです

予約可能数0になると表示されなくする

設定ポイント②kViewerとフォームブリッジを連携させる

kViewerで表示させたカレンダーにから予約フォームを起動させるのがスムーズなので、両サービスを連携させます

この後作成するフォームブリッジのURLをkViewerで設定しますので、まずはフォームブリッジを作っていきます

フォームブリッジでワクチン予約受付

フォームブリッジも細かな設定や活用事例は別記事を参考に(フォームブリッジ記事

フォームブリッジでワクチン予約受付

ちょっとややこしいですが、設定ポイント!!

設定ポイント①フォームブリッジで設定するアプリはワクチン接種日程表

bozu
予約を入力してもらうんだから、ワクチン接種予約アプリをフォームブリッジに設定するんじゃないの?

そう思う人が多いかもしれません

今回、kViewerでワクチン接種日程表の情報を確認します。そしてフォームブリッジに連携しますよね?

連携のメリットとしてはkViewerで表示した情報をフォームブリッジのフォームに引き継げる点や、フォームブリッジで引き継いだ内容を修正するとkintoneの内容にも反映してくれる点です

ただ、今回の場合はその機能が裏目に出てしまいます

kViewerで日付のデータをもってフォームブリッジから予約するので、日付のフィールドには既に値が入っています。そして、氏名を入力すると既に入力された同日のレコードの氏名を上書き保存してしまう・・・

解決方法としては、まず回答後の自動処理で2つのアプリに回答データを保存するように設定します。

ワクチン予約フロー

こうすることで、次に行うフィールドの設定kintoneアプリからフィールドを同期すると2つのアプリが設定可能となります

ワクチン接種日程表
2つのアプリに情報をセットする

そして、ワクチン接種日程表アプリとは同期せず、ワクチン接種登録アプリと同期させます

こうすることで、ワクチン接種日程表アプリの日付情報を引用しつつ予約内容の保存はワクチン接種登録アプリに行う

そして、今回作成したフォームをkViewerと連携させます

フォームブリッジと連携する
bozu
これで、カレンダーから予約したい日付を選択して、予約ボタンを押せば予約可能となりました。この記事を書いている時間は深夜1時・・・ゴールは近いですw

今のままであれば、予約残数は自動計算されないので手動で日別予約数を入力する必要があります

リアルタイム集計可能な連携サービスで思いつくのが

  • データコレクト
  • Customine
  • krewData

今回はリアルタイム集計のフロー枠が1つ空いていたkrewDataを紹介します

フォームブリッジへの大量アクセス
通常フォームブリッジからkintoneにAPI経由で情報を送れる数は100回/分で、オプション料金を支払っても500回/分となっています。また、kintone自体1日のAPI上限が10,000と制限されていますので、人気商品の予約などに利用するには運用を考えないといけませんね〜

フォームを複数作っても、100回とか500回は1つの環境に適用されるので、フォームを分散させても意味がないんですね。なので、kintoneのドメインとフォームブリッジを複数契約して分散させるとかでしょうけど、そもそも物凄いアクセスがあると大抵予約できずに売り切れになってしまう

krewDataリアルタイム集計で予約状況をリアル集計

krewDataの記事は・・・書いてなかったかもしれないw

細かな設定は公式をご参考に・・・(krewDataリアルタイム実行)

プラグインやフローの設定をご紹介します。最終的にこんな感じになればリアルタイム実行が成功しています

krewDataでワクチンフロー

まずは、実行単位を設定します。呼び出し元アプリにはワクチン接種登録アプリを設定。これはフォームブリッジから予約内容が追加された時点で再集計をkrewDataで行いたいのでこちらのアプリを選択しています。

今回はwebhookを用いました。URLの部分に設定に必要なURLが表示されますので、こちらのコピーしてワクチン接種登録アプリのwebhookに設定します

krewDataリアルタイム実行予約
kintonewebhook設定

通知を送信する条件は、運用におって様々だと思います。今回はレコード追加とレコードの削除を条件に設定しています。

そして、リアルタイム実行にはログ出力先のアプリを作成する必要があるのですが、こちらはkrewDataの機能を使って設定が可能です。

ログ出力先設定

krewDataフロー作成

さて、これでゴール

データ編集フローを作っていきましょう。フローも至ってシンプル

krewDataワクチン予約フロー

入力アプリはワクチン接種登録アプリに設定し、フィールドは日付と人数にしておきます

設定入力アプリ設定
プレビュー入力アプリプレビュー

このままだと同日に何件予約が入っているのか分からないので、グループ化を行います

設定日付グループ化
プレビューグループ化後のプレビュー

プレビューの内容を見ると、日別に集計がされていますね。あとはこの情報をワクチン接種日程表にセットするだけなので、出力アプリを設定します。

出力先アプリ設定

日付を更新キーに設定しているので、予約された内容に該当する日付のレコードに最新の集計結果が反映されるというわけですね

bozu
リアルタイム集計といえば、データコレクトやCustomineのJobRunnerなどもあります。どのサービスが良いか、予約数や他にやりたいことなども考慮して検討ですね

ワクチン予約カレンダーイメージ(kViewer)

動画でワクチン予約管理システムの説明

健康診断やワクチン予約に利用可能な、リアルタイム予約管理をkintoneでやってみた

色々活用可能だと個人的に考えている

bozu
色々と使えそうじゃないですか?
どんどん活用することで、集計が楽になると多いませんか?

集計に頑張る必要はないと思いますし、自動化できる部分は自動化したらいいと思います

今回は公開していますが、予約カレンダーも予約フォームもパスワードやIPで制限することで社内や院内、施設内だけのアクセスにすることも可能です

注意点として、krewDataのリアルタイム集計実行は5回/分と制限されています。kintone自体webhookは60回/分と制限が設けられているので

・フォームブリッジで予約を受けるだけなら、オプションを使って500回/分
・予約をwebhookで処理させたい場合、サービスによって5~60/分

上記の制限を考慮する必要があります

一人でもこの情報が役立つことを願っております