AI に処方オーダを作らせてみた — 「3回待った」2つの欠落を、同じ回でまとめて作った(やってみた #56)
/prescription375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に処方オーダを作らせてみた — 「3回待った」2つの欠落を、同じ回でまとめて作った(やってみた #56)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。医療4枚目——処方 / 処方オーダ入力(採用薬検索 × 用量/経路/用法 × アレルギー/相互作用/用量レンジの安全チェック × 規制医薬品の2人署名 × 処方署名)。
#53 与薬(看護師が渡す)と別作法の、医師が薬を処方する画面。採用薬を選び、用量を入れ、アレルギー・相互作用・用量レンジをチェックし、署名する。医療安全の3つの欠落が、この画面で揃って3回目を踏んだ。
結果 — 4/5
tsc/build 緑・console 0・375px・採用薬 Combobox 検索・アレルギー一致で処方を止める警告・禁忌の相互作用でブロック・用量が腎機能調整後の安全域に対し過量(H)フラグ(eGFR 38 で morphine 10mg→過量、eGFR 90 では範囲内=検査値参照を実証)・麻薬は2人署名・3つ解決まで署名ボタン無効→解決で有効・h1 1個。
今回の本題 — 「3回待った」2つの欠落を、まとめて作る
#54 バイタル・#55 検査結果で2回目になった医療の欠落が、#56 処方で3回目を踏んだ。予備知識ゼロの AI が明言:
処方画面を支える3つの中心コンポーネントは、ライブラリに無く、手組みだった——この医療シリーズを通して 3回目/3回目/2回目。… これは連載で 「デザインシステムに入れろ」という最も明確なサイン だ。
規律どおり3回待ったので、2つを同じ回でまとめて作りました:
① ReferenceValue(#241・3回目: バイタル/検査値/用量)
「値を基準範囲に対し H/L/異常でフラグ」する第3の軸。3画面でAPI が完全に同一だったので、迷いなく出荷:
<ReferenceValue value={38.9} unit="℃" range={{ low: 36.0, high: 37.5, criticalHigh: 40.0 }} showRange /> // H
flagValue(6.8, { low: 3.5, high: 5.0, criticalHigh: 6.0 }) // → "critical-high"
純関数 flagValue() も export(テーブル/チャートがセルを再計算せず色付け)・H/L/HH/LL チップ+常時 sr-only ラベル・Meter(容量)とも Delta(変化)とも違う範囲のどこに属するかの軸・医療外も SLA/QA/監視で再利用可。
② SafetyBanner(#238・3回目: アレルギー/パニック値/相互作用)
恒久・assertive・承認できる安全アラート。Alert(表示専用・承認の約束なし)では足りなかった:
<SafetyBanner tone="destructive" title="アレルギー警告:ペニシリン"
requireAck acknowledged={acked} onAcknowledge={() => setAcked(true)}>…</SafetyBanner>
<Button disabled={!acked}>処方を署名</Button>
destructive は role="alert"+assertive で読み上げ・requireAck で承認ボタン・acknowledged を使う側が読んで署名(sign-off)をゲート・出荷済みの Button を合成。ブラウザ実証(アレルギー→alert/assertive・両方承認まで署名無効→承認で有効)。
規律が報われた — 「3回待つ」と API が固まる
#54 バイタル: ReferenceValue/SafetyBanner = 1回目 → 課題に記録だけ
#55 検査結果: 2回目(API 同一) → 課題に記録だけ
#56 処方 : 3回目 → 両方作る(API は3画面で確証済み)
1回目で作っていたら、バイタルだけの形に最適化して、検査値やパニック値で作り直していたかもしれない。3回待ったから、3画面を貫く安定した API で一発で出荷できた。ReferenceValue の {low, high, criticalLow, criticalHigh} も SafetyBanner の requireAck+署名ゲートも、3画面の共通項を抽出した形——だから医療のどの画面でも、医療外でも効く。規律は「作りすぎを防ぐ」だけでなく「正しい形で作る」ためでもあった。
課題に記録だけ(2回目→次で作る)
- 🟠 CoSignField / 2人署名(#239・2回目=#53 ダブルチェック+#56 麻薬2人署名)。第2署名者ID+確認+"主と別人"ガード。あと1回で作る。
学び — 複利は「作ったコンポーネント」だけでなく「待つ規律」にも乗る
医療は ReferenceValue/SafetyBanner/CoSignField という安全に特化した3つのコンポーネントを要求した。そのうち2つを、3画面で形を確認してから作った。次の医療画面(看護記録/与薬指示)で CoSignField が3回目を踏めば、医療の安全コンポーネントが出揃う。業界を深掘りすると、その業界の"安全の文法"がコンポーネントとして固まっていく——医療では「範囲判断・承認・2人確認」がそれだった。
次回予告(やってみた #57)
- 医療をもう1枚=看護記録/経過記録 or 手術記録で CoSignField#239 の3回目を狙う。または医療を一旦まとめて別業界へ。方針: 医療は深掘り。
試す
まだ alpha。3回待った2つの医療安全コンポーネントを、同じ回でまとめて作った回。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。