AI に退院サマリを作らせてみた — 3画面が同じ「署名→ロック→追記」を手組みしたので、SignedRecord に(やってみた #59)
/discharge-summary375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に退院サマリを作らせてみた — 3画面が同じ「署名→ロック→追記」を手組みしたので、SignedRecord に(やってみた #59)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。医療7枚目——退院サマリ / 退院時要約(構造化サマリ × 署名→ロック→追記のみの法的記録 × 退院時検査値 × 指導医共同署名)。
入院の最後、医師が退院サマリを作成・確定・署名する画面。署名したら追記しかできない法的記録になる。#57 看護記録・#58 手術記録に続いて、同じ「署名→ロック→追記」の作法が3回目を踏んだ。
結果 — 4/5
tsc/build 緑・console 0・375px・サマリ各セクション記入→署名・確定でロック(read-only/aria-readonly)→追記(著者+時刻+理由)・退院時検査値の基準値フラグ・研修医→指導医の共同署名・h1 1個。
今回の本題 — 3画面が同じ「署名→ロック→追記」を手組み → SignedRecord に
予備知識ゼロの AI が、この同じテストアプリの過去2画面のコードを読んで3回目を確認した:
直前の2画面のコードを読んで確認した: #57 看護記録(
SoapNote {status, signedBy, signedAt, addenda}+ Dialog + Timeline——手組み)、#58 手術記録(noteSigned/noteSignedBy/noteSignedAt+ addenda +aria-readonly+ IconLock——また手組み)、#59 この画面(3回目)。この形はもう 3画面を通して安定していると証明できる。
「下書き → 署名(誰が・いつ)→ 書き換え不可の read-only → 追記の連なり(各々が著者+時刻+理由)」という法的記録の状態遷移を、医療の3画面が毎回手組みしていた。3回ルール発火で SignedRecord(#246)(PR #252)を出荷:
<SignedRecord value={record} onChange={setRecord} signerId="dr-yamada" canSign={isComplete}>
{({ readOnly }) => readOnly ? <p>{body}</p> : <Textarea value={body} onChange={onBodyChange} />}
</SignedRecord>
// draft → 署名・確定 でロック → 以後は追記(著者+時刻+理由)のみ
- controlled(value/onChange)+ render-prop の本文(
children({ readOnly }))——署名するとreadOnlyが true になり、使う側がロック表示と編集フィールドを出し分ける - 署名で
signedBy/signedAtを記録・下書き/署名済 Badge・ロック表示(IconLock +aria-readonly)・署名の監査行 - 署名後は本文を変えられず、変更は追記のみ(追記欄は著者=signerId・時刻+理由を自動で刻む)→ 連なりで表示
- 決まった値・ロケールに依存しないタイムスタンプの既定(サーバー/ブラウザずれ(hydration)の心配なし)・出荷済みの Button/Input/Textarea/Badge を合成
ブラウザ実証(下書き→署名→ロック「確定済みの記録は変更できません」+監査行「dr-yamada・2026/06/23 13:22」+本文 read-only→追記「処方変更/退院後の内服薬を一部修正。」)。
業界を越えた再利用の複利が2件 — 直前に作った2つが、退院サマリでも効いた
-
CoSign(#58 で作った)— 指導医の共同署名にぴったり合った。使った、手こずらなかった。 研修医のサマリを指導医が共同署名。同一人物ガード(研修医IDを入れると止まる)・attestations・value/onSign・CoSignBadge——「#58 の手組み版より大きく改善」。-
ReferenceValue(#56 で作った)— 退院時検査値にぴったり合った。 退院時の Hb→L低値・Cr→H高値・eGFR→L低値を icon+H/L+sr-only で。
医療の安全コンポーネントを作り切ったら、医療内の別画面で次々発掘される——複利が業界の中で回り続けた。
医療、ひと区切り — 安全と記録の文法が出揃った
医療で固まったコンポーネント:
範囲判断 → ReferenceValue (#241) 値 vs 基準範囲
承認 → SafetyBanner (#238) 危険を承認させる
2人確認 → CoSign (#239) 2人で確認する
署名記録 → SignedRecord (#246) 署名→ロック→追記のみ
+ 基礎コンポーネントの磨き: Textarea/Input の label/description(#245/#249)
医療を7枚深掘りして、「安全」と「記録」という、その業界が繰り返し要求する作法が、4つのコンポーネントとして固まった。これが業界深掘りの果実——1〜2枚では「たまたま」に見える欠落が、3回見える頃には安定した API でコンポーネントになる。医療は ReferenceValue/SafetyBanner/CoSign/SignedRecord を残した。これらは医療外でも効く(SLA 監視・二重承認・法的記録/監査ログ)。
課題に記録だけ
- 🟡
AlertTitleが既定でas="h5"になっていて見出し階層を崩す(h1→h5・#251・status バナーの title は見出しでなくてよい)。
次回予告(やってみた #60)
- 医療は安全/記録の文法が出揃った。別業界へ移る(不動産/製造/教育/公共など)。医療で作ったコンポーネント(特に SignedRecord/CoSign は契約・承認として)が他業界で発掘されるかも観測。
試す
まだ alpha。3画面が同じ「署名→ロック→追記」を手組みしたので SignedRecord に括り出し、医療の文法が4つ出揃った回。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。