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

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

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

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

解説記事

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

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。医療6枚目——手術記録 / 麻酔記録(タイムアウト × 器械・ガーゼカウント照合 × 麻薬/輸血の2人確認 × 麻酔記録 × 手術記録の署名)。

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

結果 — 4/5

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

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

cold AI が明言:

A screen whose defining 作法 is "2人確認" forces you to hand-roll the same primitive four times — time-out sign-off, 2人カウント, narcotic co-sign, transfusion co-sign. The exact same shape appeared in #53 与薬 and #56 処方. It is now unambiguously a recurring, stable-API gap.

#53(ダブルチェック)・#56(麻薬2人署名)に続いて、#58 では1画面で4回。3回ルールをとうに超えていた。CoSign(#239) を build(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 を入力、主担当と同一なら blockingaria-invalidrole=alert エラー)
  • attestations の確認チェックを全部つけて署名 → タイムスタンプ付き CoSignValueonSign
  • 署名後は read-only 状態・companion CoSignBadge(「2人確認 済/要」)・出荷済み Input/Checkbox/Textarea/Button/Badge を合成
  • 医療(麻薬/輸血/タイムアウト)だけでなく金融の maker-checker 承認にも使える

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

越境複利が2件 — #56 で作った2つが、手術室で効いた

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

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

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

基礎部品の最後の磨き — Input の label 抜けも直した

#57 で Textarea の label/description 抜けを直したが、cold AI が今回 Input も同じ抜けを発見(2人目ID欄が裸の Input)。Select/Textarea とパリティで Input にも label/description 追加#249PR #250)。これで主要入力部品の label/description が揃った。

起票だけ(2回目→次で build)

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

学び — 業界の「安全の文法」が、primitive に出揃った

医療の安全 primitive:
  範囲判断 → ReferenceValue (#241・#54/#55/#56 で build)
  承認    → SafetyBanner   (#238・#53/#55/#56 で build)
  2人確認 → CoSign         (#239・#53/#56/#58 で build)

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

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

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

試す

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


<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->

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

この画面のソースが直接 import している部品です。

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

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