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

AI に退院サマリを作らせてみた — 3画面が同じ「署名→ロック→追記」を手組みしたので、SignedRecord に(やってみた #59)

ルート: /discharge-summary
デスクトップ表示
モバイル表示

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

解説記事

AI に退院サマリを作らせてみた — 3画面が同じ「署名→ロック→追記」を手組みしたので、SignedRecord に(やってみた #59)

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。医療7枚目——退院サマリ / 退院時要約(構造化サマリ × 署名→ロック→追記のみの法的記録 × 退院時検査値 × 指導医共同署名)。

入院の最後、医師が退院サマリを作成・確定・署名する画面。署名したら追記しかできない法的記録になる。#57 看護記録・#58 手術記録に続いて、同じ「署名→ロック→追記」の作法が3回目を踏んだ。

結果 — 4/5

tsc/build 緑・console 0・375px・サマリ各セクション記入→署名・確定でロック(read-only/aria-readonly)→追記(著者+時刻+理由)・退院時検査値の基準値フラグ・研修医→指導医の共同署名・h1 1個。

今回の本題 — 3画面が同じ「署名→ロック→追記」を手組み → SignedRecord に

cold AI が、この同じテストアプリの過去2画面のコードを読んで3回目を確認した:

Confirmed by reading the two prior screens: #57 nursing-record (SoapNote {status, signedBy, signedAt, addenda} + Dialog + Timeline — hand-rolled), #58 surgery (noteSigned/noteSignedBy/noteSignedAt + addenda + aria-readonly + IconLock — hand-rolled again), #59 this screen (a third time). The shape is now provably stable across 3 screens.

「draft → 署名(誰が・いつ)→ 不変の 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 bodychildren({ readOnly }))——署名すると readOnly が true になり、消費側がロックビュー vs 編集フィールドを出し分ける
  • 署名で signedBy/signedAt を記録・draft/署名済 Badge・ロック表示(IconLock + aria-readonly)・署名監査行
  • 署名後は本文不変、変更は追記のみ(composer は著者=signerId・時刻+理由を自動スタンプ)→ チェーン表示
  • 決定論的・ロケール非依存のタイムスタンプ既定(hydration リスク無し)・出荷済み Button/Input/Textarea/Badge を合成

ブラウザ実証(下書き→署名→ロック「確定済みの記録は変更できません」+監査行「dr-yamada・2026/06/23 13:22」+本文 read-only→追記「処方変更/退院後の内服薬を一部修正。」)。

越境複利が2件 — 直前に作った2つが、退院サマリでも効いた

  • CoSign(#58 build) — fit the attending co-sign perfectly. Used, not fought. 研修医のサマリを指導医が共同署名。same-person ガード(研修医IDを入れると blocking)・attestations・value/onSign・CoSignBadge——「#58 の手組み版より大きく改善」。
  • ReferenceValue(#56 build) — fit the discharge labs exactly. 退院時の Hb→L低値・Cr→H高値・eGFR→L低値を icon+H/L+sr-only で。

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

医療、ひと区切り — 安全と記録の文法が出揃った

医療で結晶化した primitive:
  範囲判断   → ReferenceValue (#241)  値 vs 基準範囲
  承認      → SafetyBanner   (#238)  危険を承認させる
  2人確認   → CoSign         (#239)  2人で確認する
  署名記録   → SignedRecord   (#246)  署名→ロック→追記のみ
+ 基礎部品の磨き: Textarea/Input の label/description(#245/#249)

医療を7枚深掘りして、「安全」と「記録」という、その業界が繰り返し要求する作法が、4つの primitive に結晶化した。これが業界深掘りの果実——1〜2枚では「たまたま」に見える穴が、3回見える頃には安定した API で primitive になる。医療は ReferenceValue/SafetyBanner/CoSign/SignedRecord を残した。これらは医療外でも効く(SLA 監視・maker-checker 承認・法的記録/監査ログ)。

起票だけ

  • 🟡 AlertTitle がデフォルト as="h5" で見出し階層を崩す(h1→h5・#251・status バナーの title は見出しでなくてよい)。

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

  • 医療は安全/記録の文法が出揃った。別業界へ pivot(不動産/製造/教育/公共など)。医療で作った primitive(特に SignedRecord/CoSign は契約・承認として)が他業界で発掘されるかも観測。

試す

まだ alpha。3画面が同じ「署名→ロック→追記」を手組みしたので SignedRecord に括り出し、医療の文法が4つ出揃った回。


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

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

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

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

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