WAN NYAN CLINIC

SESSION 00 · 10分

業務とシステムを引き継ぐ

WAN NYAN CLINIC の現行業務、SQLite に残る現在の予約内容と変更履歴、現在起きている事故を確認します。

現行業務と起きている事故

新任エンジニアとして WAN NYAN CLINIC の予約システムを引き継ぎます。この10分は修正案を出さず、 現場の担当者、日々の操作、実際に起きた事故を、同じ事実に基づいて読み解きます。

現行業務

受付
予約を確認し、来院を受け付け、診察室へ案内し、会計までの状態を更新する。
獣医師
受付済みの予約から診察を開始し、担当者と開始時刻をカルテへ残す。
飼い主
予約と連絡先を預け、受付から失敗理由や次の案内を受け取る。

引き継ぎ初日に確認した2件

会計を終えた Mugi へ、もう一度請求してしまった

会計担当は診察を終えた Mugi の飼い主から4,800円を受け取り、予約を会計済みにしました。 その後、獣医師が同じ予約で「診察開始」を押すと、システムは操作を止めず、予約を診察中へ戻しました。 受付は会計前の来院だと判断し、飼い主へ同じ金額をもう一度請求しました。

SQLite には、「会計済み」にした変更履歴と、「診察中」になっている現在の予約内容が、同じ予約 ID に残りました。

事故を調べた担当者へ、飼い主の連絡先まで見せてしまった

二重請求の経緯を確認するために予約の変更履歴を開くと、操作名や時刻だけでなく、 操作後の予約内容まで丸ごと保存されていました。調査に不要な飼い主の氏名、メールアドレス、電話番号も閲覧できる状態でした。

変更履歴が増えるたびに、同じ個人情報を含むデータが SQLite へ追加されます。

この時点では原因を決めつけません。次の節で画面操作と SQLite に残った内容を照らし合わせ、 現在の予約内容と変更履歴のどこに問題があるかを確認します。

画面操作の結果がデータベースにどう残るか

画面で操作すると、現在の予約内容と、各操作を行った後の変更履歴が SQLite に保存されます。 サーバーを起動し直しても両方のデータは残り、 「デモを初期状態へ戻す」を実行したときだけ初期状態へ戻ります。ここでも修正はせず、事故報告と現在の動きがどこで結び付くかを確認します。

現在の操作

担当画面で行う操作現在の記録
受付予約検索、来院受付、診察室への案内、会計完了を入力する。予約の現在の状態と操作を行った時刻を更新する。
獣医師受付済みの予約から診察を開始し、診療内容を入力する。担当者、開始時刻、診療内容を残す。
会計担当診察料、検査料、処方料を確認して会計をする。請求額と会計をした時刻を残す。

現在の予約内容と変更履歴を見比べる

デモ画面では、SQLite から読み出したデータを JSON 形式で表示します。 JSON は、この画面でデータの内容を示す形式です。別の種類のデータを保存しているわけではありません。

画面に表示されるもの何が入っているか何を確かめるか
現在の予約内容予約 ID、動物 ID、飼い主 ID、現在の状態、各操作の時刻。想定外の状態や ID の取り違え、不正な診察結果が残っていないか。
予約の変更履歴履歴 ID、操作名、時刻、その操作を終えた直後の予約内容。現在の予約内容と食い違っていないか、不要な個人情報が含まれていないか。
不整合の警告予約状態、ID、現在の予約内容と変更履歴の食い違い、個人情報の有無。事故を再現した後、どのデータに問題が残ったか。

レビューと持ち帰り

班で「誰が、どの操作をし、何が起き、現在の予約内容と変更履歴にどう残ったか」を1件ずつ共有します。 Session 00 では事故を修正しません。Session 02 から Session 07 で、状態、ID、入力と個人情報、失敗、実行のたびに変わる値、予約内容と変更履歴の食い違いを順に改善する理由を確認します。