医療EMR開発パターン
電子カルテ(EMR)および電子健康記録(EHR)システムを構築するためのパターンです。患者の安全、臨床的な正確性、実務者の効率性を最優先します。
使用するタイミング
- 患者診療ワークフローの構築(主訴、診察、診断、処方)
- 臨床記録作成の実装(構造化テキスト + 自由記述 + 音声テキスト変換)
- 薬物相互作用チェックを含む処方/薬剤モジュールの設計
- 臨床判断支援システム(CDSS)の統合
- 基準範囲ハイライト機能付き検査結果表示の構築
- 臨床データの監査証跡の実装
- 医療アクセシビリティ対応UIによる臨床データ入力の設計
動作の仕組み
患者安全第一
すべての設計判断は、「これは患者に害を及ぼすか?」という基準で評価されなければなりません。
- 薬物相互作用は必ず警告し、黙って通過させてはならない
- 異常な検査値は必ず視覚的にフラグ付けしなければならない
- 重要なバイタルは必ずエスカレーションワークフローをトリガーしなければならない
- 監査証跡なしに臨床データを変更してはならない
シングルページ診療ワークフロー
診療記録は1ページ内で垂直に流れるように設計する——タブ切り替えは禁止:
患者ヘッダー(固定——常に表示)
├── 人口統計情報、アレルギー、アクティブな薬剤
│
診療フロー(垂直スクロール)
├── 1. 主訴(構造化テンプレート + 自由記述)
├── 2. 現病歴
├── 3. 身体診察(系統別)
├── 4. バイタル(臨床スコアリング自動トリガー)
├── 5. 診断(ICD-10/SNOMED検索)
├── 6. 薬剤(薬剤DB + 相互作用チェック)
├── 7. 検査(臨床検査/放射線オーダー)
├── 8. 計画と経過観察
└── 9. 署名 / ロック / 印刷
スマートテンプレートシステム
interface ClinicalTemplate {
id: string;
name: string; // 例: "胸痛"
chips: string[]; // クリック可能な症状チップ
requiredFields: string[]; // 必須データ項目
redFlags: string[]; // 非閉鎖可能アラートをトリガーする
icdSuggestions: string[]; // 事前マッピングされた診断コード
}
テンプレート内のレッドフラグは、可視かつ非閉鎖可能なアラートをトリガーしなければなりません——トースト通知ではありません。
薬剤安全パターン
ユーザーが薬剤を選択
→ 現在の薬剤との相互作用をチェック
→ 診療中の薬剤との相互作用をチェック
→ 患者のアレルギーをチェック
→ 体重/年齢/腎機能に基づいて用量を検証
→ CRITICALな相互作用の場合:処方を完全にブロック
→ 臨床医はブロックを通過するためにオーバーライド理由を文書化する必要がある
→ MAJORな相互作用の場合:警告を表示し、確認を要求
→ すべてのアラートとオーバーライド理由を監査証跡に記録
重大な相互作用はデフォルトで処方をブロックします。臨床医は明示的にオーバーライドし、監査証跡に保存された文書化された理由を提供する必要があります。システムは重大な相互作用を黙って許可することはありません。
ロックされた診療記録パターン
臨床診療記録が署名されると:
- 編集は一切禁止——追記のみ許可(別個のリンクされた記録)
- 原本と追記の両方が患者タイムラインに表示される
- 監査証跡は、誰がいつ署名したか、およびすべての追記記録を記録する
臨床データのUIパターン
バイタル表示: 正常範囲ハイライト付きの現在値(緑/黄/赤)、前回との比較を示すトレンド矢印、自動計算された臨床スコア(NEWS2、qSOFA)、インラインでのエスカレーションガイダンス。
検査結果表示: 正常範囲ハイライト、前回値との比較、非閉鎖可能なアラート付きの重大値、採取/分析タイムスタンプ、予想到着時間付きの保留中オーダー。
処方箋PDF: ワンクリック生成、患者人口統計情報、アレルギー、診断、薬剤詳細(一般名 + ブランド名、用量、経路、頻度、期間)、臨床医署名欄。
医療向けアクセシビリティ
医療UIは標準的なウェブアプリよりも厳しい要件を満たす必要があります:
- 4.5:1以上の最小コントラスト比(WCAG AA)——臨床医は様々な照明下で作業する
- 大きいタッチターゲット(最低44x44px)——手袋をした状態や慌てた操作に対応
- キーボードナビゲーション——データを素早く入力するパワーユーザー向け
- 色のみのインジケーターは禁止——常に色をテキスト/アイコンと組み合わせる(色覚異常の臨床医向け)
- すべてのフォームフィールドにスクリーンリーダーラベルを付ける
- 臨床アラートに自動消去トーストを使用しない——臨床医が能動的に確認する必要がある
アンチパターン
- ブラウザのlocalStorageに臨床データを保存する
- 薬物相互作用チェックのサイレント失敗
- 重大な臨床アラートに対する閉鎖可能なトースト
- 臨床ワークフローを断片化するタブベースの診療UI
- 署名/ロックされた診療記録の編集を許可する
- 監査証跡なしで臨床データを表示する
- 臨床データ構造に
any型を使用する
例
例1: 患者診療ワークフロー
医師が患者#4521の診療記録を開く
→ 固定ヘッダーに表示: "Rajesh M, 58M, アレルギー: ペニシリン, アクティブな薬剤: メトホルミン500mg"
→ 主訴: "胸痛"テンプレートを選択
→ チップをクリック: "胸骨後部", "左腕に放散", "圧迫感"
→ レッドフラグ "胸骨後部圧迫感のある胸痛" が非閉鎖可能なアラートをトリガー
→ 診察: CVS系——"S1 S2正常、雑音なし"
→ バイタル: HR 110, BP 90/60, SpO2 94%
→ NEWS2自動計算: スコア8, リスク高, エスカレーションアラート表示
→ 診断: "ACS"を検索→ ICD-10 I21.9を選択
→ 薬剤: アスピリン300mgを選択
→ CDSSがメトホルミンとの相互作用をチェック: 相互作用なし
→ 診療記録に署名→ ロック、この時点から追記のみ
例2: 薬剤安全ワークフロー
医師が患者#4521にワルファリンを処方
→ CDSS検出: ワルファリン + アスピリン = CRITICAL相互作用
→ UI: 赤色の非閉鎖モーダルが処方をブロック
→ 医師が「理由を指定してオーバーライド」をクリック
→ 入力: "利益がリスクを上回る——INRプロトコルで監視中"
→ オーバーライド理由 + アラートが監査証跡に保存される
→ 文書化されたオーバーライド付きで処方が進行
例3: ロックされた診療記録 + 追記
診療記録 #E-2024-0891 がDr. Shahにより14:30に署名
→ すべてのフィールドがロック——編集ボタンは非表示
→ 「追記を追加」ボタンが利用可能
→ Dr. Shahが追記をクリック、追加: "検査結果を受領——トロポニン上昇"
→ 新しい記録 E-2024-0891-A1 が原本にリンク
→ タイムラインに両方が表示: 原本の診療記録 + 追記(タイムスタンプ付き)