#58スコア 4/5医療・ヘルスケア

AI に手術記録を作らせてみた — 1画面で4回出た「2人確認」を、ついにコンポーネントに(やってみた #58)

ルート: /surgery
デスクトップ表示
モバイル表示

375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。

解説記事

AI に手術記録を作らせてみた — 1画面で4回出た「2人確認」を、ついにコンポーネントに(やってみた #58)

⁠やってみたシリーズ⁠: 自作のデザインシステム @gunjo/ui群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。⁠医療6枚目⁠——⁠手術記録 / 麻酔記録⁠(タイムアウト × 器械・ガーゼカウント照合 × 麻薬/輸血の2人確認 × 麻酔記録 × 手術記録の署名)。

手術室の周術期記録。WHO 安全チェックリスト(サインイン/タイムアウト/サインアウト)、器械カウント照合、麻薬・輸血——⁠至るところで「2人確認(ダブルチェック)」が要る⁠画面。医療安全の核心作法が、1画面に何度も現れる。

結果 — 4/5

tsc/build 緑・console 0・375px・タイムアウトの2人サインオフ・器械カウント不一致→体内遺残を止めるアラート→サインアウトをブロック・麻薬/輸血の2人確認(2人目IDは主担当と別人)・手術記録の署名→追記のみ・h1 1個。

今回の本題 — 1画面で4回出た「2人確認」を作る

予備知識ゼロの AI が明言:

画面を定義する作法が「2人確認」だと、同じコンポーネントを⁠4回⁠手組みさせられる——タイムアウトのサインオフ、2人カウント、麻薬の2人確認、輸血の2人確認。まったく同じ形が ⁠#53 与薬⁠⁠#56 処方⁠ にも現れた。これはもう明らかに、⁠繰り返し出る・API の安定した欠落⁠ だ。

#53(ダブルチェック)・#56(麻薬2人署名)に続いて、#58 では⁠1画面で4回⁠。3回ルールをとうに超えていた。CoSign(#239)⁠ を作る(PR #248):

<CoSign primaryId="ns-tanaka"              // 2人目は主担当と別人でないと不可
  attestations={[{ id: "drug", label: "薬剤・規格・用量を確認した" }, { id: "patient", label: "患者・指示を確認した" }]}
  value={value} onSign={setValue} />       // CoSignValue { signerId, reason?, attestedAt, attestations }
<Button disabled={!value}>麻薬を投与</Button>   // 2人確認でアクションをゲート
  • 2人目が ID を入力、⁠主担当と同一なら止める⁠aria-invalidrole=alert エラー)
  • attestations の確認チェックを全部つけて署名 → タイムスタンプ付き CoSignValueonSign
  • 署名後は read-only 状態・相棒の CoSignBadge(「2人確認 済/要」)・出荷済みの Input/Checkbox/Textarea/Button/Badge を合成
  • 医療(麻薬/輸血/タイムアウト)だけでなく金融の二重承認(担当者と承認者を分ける)にも使える

ブラウザ実証(同一人物ガード→別IDで有効→署名で「2人確認 済 確認者: ns-suzuki」+バッジ success)。

業界を越えた再利用の複利が2件 — #56 で作った2つが、手術室で効いた

前々回(#56)で作った2つが、全く違う手術記録の画面でそのまま効いた:

  • SafetyBanner(#56 で作った)— 合った、手こずらなかった。⁠ 器械カウント不一致で destructive バナーが role=alert+assertive、requireAck で「再カウント/X線確認」、⁠サインアウトをブロック⁠——意図した約束どおり。
  • ReferenceValue(#56 で作った)— よく合った。⁠ 麻酔フローシートで30項目中2つの低値(出血)をフラグ、sr-only ラベルで色だけに頼らない。

医療の安全コンポーネントを作り切ったら、医療内の別画面で即発掘される——複利が業界の中でも回り始めた。

基礎コンポーネントの最後の磨き — Input の label 抜けも直した

#57 で Textarea の label/description 抜けを直したが、予備知識ゼロの AI が今回 Input も同じ抜け⁠を発見(2人目ID欄が裸の Input)。Select/Textarea と揃えて Input にも label/description を追加⁠#249PR #250)。これで主要な入力コンポーネントの label/description が揃った。

課題に記録だけ(2回目→次で作る)

  • 🟠 追記のみ署名記録(#246⁠2回目⁠=#57 看護記録+#58 手術記録)。手術記録の署名→追記のみも手組み。AppendOnlyRecord が #57/#58 から ~80行を消す。

学び — 業界の「安全の文法」が、コンポーネントに出揃った

医療の安全コンポーネント:
  範囲判断 → ReferenceValue (#241・#54/#55/#56 で作る)
  承認    → SafetyBanner   (#238・#53/#55/#56 で作る)
  2人確認 → CoSign         (#239・#53/#56/#58 で作る)

医療を6枚深掘りして、⁠安全の3つの文法(値を範囲で判断・危険を承認させる・2人で確認する)が全部コンポーネントとして固まった⁠。残るは「追記のみ記録」(2回目)。業界を深掘りする価値はここにある——その業界が⁠繰り返し要求する作法⁠が、3回見える頃には安定した API でコンポーネントになる。医療は安全の文法を3つ残した。

次回予告(やってみた #59)

  • 医療の安全コンポーネントは出揃った。⁠別業界へ⁠(不動産/製造/教育/公共など)か、追記記録の3回目を踏みに医療もう1枚か。「追記のみ記録」は法的記録・監査ログ・契約として⁠他業界でも再出現する⁠ので、別業界に移っても拾える。

試す

まだ alpha。1画面で4回出た「2人確認」を CoSign に括り出し、医療の安全の文法が3つ出揃った回。

この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。

使用した @gunjo/ui コンポーネント

この画面のソースが直接 import しているコンポーネントです。

cold AI が組み上げた実コード

ファイル名をクリックでソースを展開できます。

業界別「AI指示書パック」、先行登録を受付中です。