case_611 SaaS・IT

歯科医院の予約管理・リコール通知をClaude Codeで自動化する実装ガイド

歯科医院の予約管理・リコール通知をClaude Codeで自動化する実装ガイド

歯科医院の予約台帳整備・ダブルブッキング検出・定期検診リコール通知をClaude Codeで自動化する実装手順を解説。LINE通知の実装例、失敗パターン、個人情報の注意点まで受付業務の負担軽減策をまとめました。

結論:歯科医院の予約管理とリコール(定期検診の呼び戻し)通知は、Claude Codeで「予約台帳の整備・ダブルブッキング検出・リコール対象者の抽出・通知文面の生成」までを自動化できます。プログラマーを雇わなくても、受付で使っているExcelやCSVをそのまま入力にして、日本語の指示だけでスクリプトを作れるのがポイントです。

  • 要点1:予約データ(CSV/スプレッドシート)をClaude Codeに読ませ、重複予約・空き枠・無断キャンセル履歴を数秒でチェックできる
  • 要点2:「最終来院から6ヶ月経過した患者」を自動抽出し、LINE公式アカウント(Messaging API)やメール向けのリコール通知文面まで一気に生成できる
  • 要点3:患者情報は要配慮個人情報を含み得るため、外部送信の範囲とデータの持ち出しルールを先に決めるのが必須

対象読者:歯科医院の院長・受付リーダー・事務長、および歯科医院向けにツールを内製したいエンジニア。今日やること:Claude Codeをインストールし、テスト用のダミー予約CSVで「ダブルブッキング検出」を1本動かしてみる。ここまでなら30分で終わります。

先日、知人の歯科医院の受付業務を見せてもらう機会があったんです。予約変更の電話を受けながら紙の予約簿とレセコン画面を交互に見て、合間にリコールはがきの宛名を手書きで書いている。正直、「この突合作業とはがき書き、Claude Codeなら今夜中にスクリプト化できるな」と思いながら見ていました。私自身、Claude Codeで業務用のスクリプトを数え切れないほど書いてきましたが、歯科医院の予約・リコール業務は「定型データ×定型文面×定期実行」という、Claude Codeが最も得意とする条件が3つ揃った領域なんです。

本記事では、歯科医院の予約管理とリコール通知をClaude Codeで自動化する具体的な実装手順を、プロンプト例・コード例つきで解説します。エンジニアがいない医院でも読み進められるよう、専門用語はその都度かみ砕いて説明します。

なぜ歯科医院の予約・リコール業務は負担が大きいのか

歯科医院の経営は「定期検診で通い続けてくれる患者さん」に支えられています。厚生労働省の資料によると、令和4年歯科疾患実態調査で「この1年間に歯科検診を受けた」と答えた人の割合は全体で58.0%。裏を返せば、4割以上の人は1年間検診を受けておらず、特に30〜50歳未満の男性で受診率が低い傾向が示されています(出典:厚生労働省「歯科健診を取り巻く状況について」)。

つまり、リコール通知を「送るか送らないか」「続けられるか続けられないか」が、そのまま来院数の差になります。ところが現場の受付業務を分解すると、こうなっています。

  • 予約管理:電話・Web・窓口の3経路から入る予約を台帳に転記し、ユニット(診療台)とドクター・衛生士の空きを突合する
  • リコール管理:最終来院日から3ヶ月・6ヶ月経過した患者をリストアップし、はがき・電話・LINEで案内する
  • キャンセル対応:当日キャンセルが出たら、キャンセル待ちの患者に電話をかけて枠を埋める

どれも「データを突き合わせて、決まった文面で連絡する」作業です。人がやると1件ずつ目視確認になりますが、機械にとっては数秒の仕事。ここがClaude Codeの出番です。

Claude Codeとは──受付にエンジニアがいなくても使える理由

Claude Codeは、Anthropicが提供するAIコーディングツールです。ターミナル(黒い画面)だけでなく、VS Code拡張・デスクトップアプリ・ブラウザ版も用意されており、日本語で「予約CSVを読んで重複を探して」と指示すると、コードの作成から実行・修正までを自動で進めてくれます(出典:Claude Code 公式ドキュメント)。

歯科医院の文脈で重要なのは次の3点です。

  1. 手元のファイルをそのまま扱える — レセコンや予約システムからエクスポートしたCSV・Excelを、フォーマット変換なしで読ませられる
  2. スクリプトの「作成」と「実行」が一体 — 生成されたコードをコピペする必要がなく、その場で動かして結果を確認できる
  3. 定期実行と組み合わせられるclaude -p "指示文" という非対話モードがあり、OSのスケジューラやClaude Codeのスケジュール実行機能と組み合わせて「毎朝8時にリコール対象者を抽出」といった運用ができる

インストールは公式ドキュメント記載のコマンド1行です(macOS / Linux / WSLの場合)。

curl -fsSL https://claude.ai/install.sh | bash

利用にはClaudeのサブスクリプションまたはAPIアカウントが必要です。料金プランは公式サイトで最新情報を確認してください。当サイトではクリニックの受付業務全般への適用例をクリニック予約業務をClaude Codeで整理した実装例で、歯科医院の問診票・レセプト業務への適用を歯科医院×Claude Code|問診票・患者説明・レセプト自動化で解説しているので、あわせて読むと全体像がつかめます。

実装例1:予約台帳の整備とダブルブッキング検出

まず「予約データの形」を決める

自動化の第一歩はコードではなくデータの整理です。予約システムやレセコンからCSVをエクスポートできるなら、それをそのまま使います。手書きの予約簿しかない医院は、まず次のような列を持つスプレッドシートを作るところから始めてください。

列名 内容
patient_id 患者番号(氏名は使わない) P00123
date 予約日 2026-08-05
time 開始時刻 10:00
unit ユニット番号 2
staff 担当(Dr/DH) DH-A
menu 診療内容 定期検診
status 予約状態 確定 / キャンセル待ち

ポイントは、患者氏名や連絡先を予約台帳に持たせず、患者番号で管理することです。こうしておくと、後述するようにClaude Codeに渡すデータから個人を特定できる情報を減らせます。

プロンプト例:ダブルブッキング検出スクリプトを作らせる

Claude Codeを予約CSVのあるフォルダで起動し、次のように指示します。

【プロンプト1】
reservations.csv を読み込んで、以下をチェックするPythonスクリプト
check_bookings.py を作って実行してください。
1. 同じ日時・同じユニットに2件以上の「確定」予約がある行(ダブルブッキング)
2. 同じ日時・同じ担当スタッフに2件以上の「確定」予約がある行
3. 同じ患者番号が同日に2枠以上取っている行
結果は問題の種類ごとに見出しをつけて、日本語で一覧表示してください。
問題ゼロなら「本日の台帳に問題はありません」と表示してください。

Claude Codeはこの指示からスクリプトを生成し、その場で実行して結果まで見せてくれます。生成されるコードの中核はおおよそ次のようなロジックです。

import pandas as pd

df = pd.read_csv("reservations.csv")
confirmed = df[df["status"] == "確定"]

# 同一日時×ユニットの重複
dup_unit = confirmed[confirmed.duplicated(
    subset=["date", "time", "unit"], keep=False)]
if len(dup_unit) > 0:
    print("■ ユニットのダブルブッキング")
    print(dup_unit.sort_values(["date", "time"]).to_string(index=False))

私が実際にこの種の突合スクリプトを作るときは、最初の1回だけ対話モードで挙動を確認し、その後は claude -p で毎朝の定期実行に回します。「目視で台帳を眺める」時間が「エラーが出たときだけ見る」時間に変わるのが大きいんです。

プロンプト例:空き枠の一覧化

【プロンプト2】
reservations.csv と、診療時間の定義(平日9:00-18:00、昼休み13:00-14:30、
1枠30分、ユニット3台)をもとに、今週の空き枠一覧を
「日付・時刻・空きユニット数」の表で出力するスクリプトを作ってください。
電話対応中に見るので、直近の空きが上に来るよう並べてください。

これで「少々お待ちください」と保留にして台帳をめくる時間が消えます。電話を受けながら表を見るだけです。

実装例2:定期検診リコール通知の自動化

リコール対象者の抽出

リコールの基本は「最終来院日からの経過期間」での抽出です。来院履歴のCSV(patient_id、最終来院日、リコール希望間隔、連絡手段の列を想定)を用意し、次のように指示します。

【プロンプト3】
visits.csv から、最終来院日が今日から数えて
・リコール希望間隔(3ヶ月 or 6ヶ月)を超過した患者番号
を抽出し、recall_list.csv として出力するスクリプトを作ってください。
条件:
- すでに次回予約が reservations.csv に「確定」で入っている患者は除外
- 超過期間が長い順に並べる
- 連絡手段(LINE / メール / はがき / 電話)の列も残す

「次回予約が入っている人を除外する」条件が実務では重要です。ここを忘れると、来週予約が入っている患者さんに「検診のご案内」が届いて、かえって不信感を生みます。以前、別業種の顧客フォロー自動化を手伝ったとき、この除外条件の漏れを初回テストで見つけて冷や汗をかいたことがあり、それ以来リコール系の抽出には必ず入れるようにしています。

LINE公式アカウントでのリコール通知

抽出したリストへの通知は、歯科医院ではLINE公式アカウントが定番です。LINEのMessaging APIには、友だち登録済みのユーザーへ任意のタイミングでメッセージを送る「プッシュメッセージ」のエンドポイント(POST /v2/bot/message/push)が用意されており、チャネルアクセストークンで認証して呼び出します(出典:LINE Developers Messaging APIリファレンス)。

【プロンプト4】
recall_list.csv の各患者に、LINE Messaging APIのプッシュメッセージで
定期検診の案内を送るスクリプト send_recall.py を作ってください。
条件:
- チャネルアクセストークンは環境変数 LINE_CHANNEL_ACCESS_TOKEN から読む
  (コードに直接書かない)
- 患者番号とLINEユーザーIDの対応表 line_ids.csv を突合に使う
- 送信前に「送信予定の一覧」を表示し、y を入力したときだけ実際に送信する
- 送信結果(成功/失敗)を recall_log.csv に追記する

ここでの肝は「送信前に一覧を出して、人間が確認してから送る」設計にすることです。自動化というと全部無人にしたくなりますが、患者さんへの連絡は誤送信のダメージが大きい。抽出と文面作成は全自動、送信ボタンだけ人間という半自動が、医院運用ではいちばん事故が少ないやり方です。なお、LINE公式アカウントのメッセージ通数には料金プランごとの上限があるため、送信対象の件数と現在のプランはLINEの公式ページで確認してから運用を始めてください。LINE連携の実装手順そのものはClaude CodeでLINE Bot開発|Webhook実装で詳しく解説しています。

通知文面の生成と出し分け

【プロンプト5】
定期検診リコールの案内文を、次の3パターンで作ってください。
A. 前回来院から3ヶ月の定期検診メンバー向け(軽いトーン)
B. 前回来院から6ヶ月以上空いた方向け(久しぶりの方への気遣いトーン)
C. 治療を途中で中断している方向け(責めずに再開を促すトーン)
条件: LINE向けに各200字以内、絵文字は1〜2個まで、
医院名と予約用の電話番号を差し込む場所を {clinic_name} {tel} で示す。
誇大な表現や不安を煽る表現は使わない。

文面の「出し分け」は人がやると面倒で、結局全員に同じはがきを送りがちです。中断患者に定期検診と同じ文面を送るとまず反応がないので、ここをAIに任せられるのは実務上かなり効きます。

実装例3:キャンセル対応とキャンセル待ちの繰り上げ

当日キャンセルが出たときの「キャンセル待ちリストの上から順に電話」も、リスト管理を自動化すると速くなります。

【プロンプト6】
reservations.csv で status が「キャンセル待ち」の患者を、
希望日時・希望時間帯の条件つきで管理したいです。
キャンセルが出た枠(日付・時刻・ユニット)を引数で渡すと、
その枠の条件に合うキャンセル待ち患者を優先順に表示する
スクリプト fill_cancel.py を作ってください。
優先順位: 登録が早い順。同日希望者を最優先。

さらに、無断キャンセル(すっぽかし)の傾向分析も、蓄積したログがあれば指示1つです。「曜日別・時間帯別の当日キャンセル率を集計して」と頼むだけで、たとえば月曜朝イチの枠が崩れやすいといった傾向が見え、前日リマインドを強化する枠を決められます。私もスケジュール系のデータを扱うときは、まず曜日×時間帯のクロス集計から入るのですが、Claude Codeだとこの集計が文字どおり一言で終わるので、分析の心理的ハードルが消えるんですよね。

段階的導入ロードマップ

Phase 1(まず2週間):読み取り専用で試す — ダミーデータまたは匿名化した予約CSVで、ダブルブッキング検出と空き枠一覧だけ動かす。患者への送信は一切しない。受付スタッフが「見て便利」と感じるかを確認する段階です。

Phase 2(1〜2ヶ月目):リコール抽出と半自動送信 — リコール対象者の抽出を週次で回し、通知は「一覧確認→人間が送信」の半自動で開始。送信ログを必ず残し、文面パターンの反応差を見る。

Phase 3(3ヶ月目以降):定期実行と院内ルール化claude -p とスケジューラで毎朝の台帳チェックを自動化し、エラー時だけ通知が来る運用へ。データの保管場所・匿名化手順・送信承認者を院内ルールとして文書化する。

失敗パターンと対策

導入時にありがちなつまずきを、先回りして4つ挙げておきます。

❌ 失敗1:氏名・電話番号入りの生データをそのままAIに渡す
対策:予約台帳・来院履歴は患者番号ベースに分離し、氏名・連絡先の対応表はAIに読ませるフォルダの外に置く。病歴を含む診療情報は個人情報保護法上の「要配慮個人情報」に該当し得るため、外部サービスに何を送るかは院長判断で明文化しておく。クラウドAIの利用可否は、契約しているプランのデータ取り扱い条件(学習に使われるか否か)を公式情報で確認してから決めてください。

❌ 失敗2:いきなり全患者への自動送信から始める
対策:Phase 1は読み取り専用、Phase 2は送信前確認つきの半自動、と段階を踏む。最初の送信はスタッフ自身のLINEをテスト宛先にして文面・差し込みを確認する。

❌ 失敗3:次回予約がある患者にもリコール通知を送ってしまう
対策:抽出条件に「確定予約あり患者の除外」を必ず入れる。加えて「過去30日以内に通知済みの患者を除外」も入れると、二重送信を防げます。

❌ 失敗4:スクリプトが属人化して、作った人しか直せない
対策:Claude Codeの設定ファイル(CLAUDE.md)に「この医院のデータ構成・命名規則・やってはいけないこと」を書いておく。こうすると誰が起動しても同じ前提でAIが動き、「前任者しか触れない魔法のExcel」の再来を防げます。

手作業運用とClaude Code併用の比較

医院ごとに規模も体制も違うため、ここでは「作業のやり方がどう変わるか」を整理します(数値効果は各医院の件数・体制に依存します)。

業務 手作業運用 Claude Code併用
ダブルブッキング確認 台帳とレセコン画面を目視で突合 スクリプトが毎朝自動チェック、問題時のみ確認
リコール対象の抽出 カルテ・台帳をめくって手作業でリスト化 条件指定でCSVから自動抽出、除外条件も機械的に適用
通知文面の作成 全員に同一のはがき文面 3ヶ月検診・長期未来院・中断患者でトーンを出し分け
キャンセル枠の充当 記憶とメモを頼りに電話 条件に合うキャンセル待ちを優先順で即時表示
傾向分析 ほぼ実施できず 曜日×時間帯のキャンセル率集計を指示1つで実行

よくある質問(FAQ)

Q1. プログラミング経験ゼロの受付スタッフでも使えますか?

初期構築(データ形式の設計とスクリプト作成)は、本記事のプロンプトをベースにすれば非エンジニアでも到達可能です。ただし最初の1〜2週間は、エラーが出たときに「エラーメッセージをそのままClaude Codeに貼って直してもらう」という対処法を知っている人が伴走すると立ち上がりが速くなります。日々の運用自体は「表を見る・yを押す」だけです。

Q2. 既存の予約システムやレセコンと連携できますか?

多くのシステムはCSVエクスポート機能を持っているので、まずは「エクスポート→Claude Codeで処理」という疎結合の連携から始めるのが安全です。APIが公開されているシステムであれば直接連携も検討できますが、書き込み方向(予約の自動登録など)は誤動作時の影響が大きいため、読み取り方向から始めることを勧めます。

Q3. 患者情報をAIに渡して大丈夫ですか?

「渡すデータを最小化する」のが原則です。本記事の設計では、AIに読ませるのは患者番号ベースの予約・来院データのみで、氏名・連絡先の対応表は処理の外側に置いています。診療内容を含むデータは要配慮個人情報になり得るため、利用するAIサービスのデータ取り扱い条件を確認し、院内の個人情報保護方針と整合させてから運用してください。判断に迷う場合は、まずダミーデータだけで運用フローを固めるのが確実です。

Q4. LINEを使っていない高齢の患者さんはどうすれば?

連絡手段の列を持たせているのはこのためです。LINE可の患者はプッシュ送信、それ以外ははがき・電話のリストとして別CSVに出力し、はがきの宛名印刷用データや電話かけリストとして使います。「全員をLINEに寄せる」のではなく「手段別のリストを自動で仕分ける」のが現実的です。

Q5. 費用はどのくらいかかりますか?

Claude Codeの利用にはClaudeのサブスクリプションまたはAPI利用料、LINE通知を使う場合はLINE公式アカウントの料金がかかります。いずれもプラン改定があるため、具体的な金額はClaude Code公式ドキュメントとLINEの公式ページで最新情報を確認してください。人を1人雇うのに比べれば桁が違う水準であることは確かです。

まとめ:今日から始める3アクション

歯科医院の予約・リコール業務は、「定型データ×定型文面×定期実行」というClaude Codeの得意分野そのものです。最後に、今日から動ける3つのアクションを置いておきます。

  1. Claude Codeをインストールして、ダミー予約CSVでプロンプト1(ダブルブッキング検出)を動かす — まずは患者データを使わず、動く体験だけ作る
  2. 自院のリコールルール(3ヶ月/6ヶ月、除外条件、連絡手段)を紙に書き出す — 自動化の仕様書はこのメモがそのまま使えます
  3. 個人情報の取り扱い方針を院長・スタッフで15分話す — 「AIに渡してよいデータの範囲」を先に決めておくと、後の展開が一気に楽になります

予約管理まわりの実装をさらに広げたい方は、美容クリニックでの予約・カウンセリング活用をまとめた美容クリニックの予約・カウンセリングをClaude Codeでも参考になるはずです。次回は、リコール通知の反応率をログから分析して文面を改善していく「リコール改善サイクル」の実装を取り上げる予定です。

著者:佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。100社以上の企業向けAI研修・導入支援を手がける。著書『AIエージェント仕事術』(SBクリエイティブ)。SoftBank ビジネス+IT連載執筆。Claude Codeを業務の中核に据え、スクリプト自動化・エージェント構築の実践知見を発信している。

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する

チームで学ぶなら: Claude Code 法人研修(2日間ハンズオン) / 1人で習得するなら: 個別指導(週1マンツーマン)