病院の電子カルテ要約をClaude Codeで時短|医師の記録時間を70%削減する想定シナリオ

1日3時間の記録時間を1時間に圧縮 | 医療, 電子カルテ, Claude Code, 病院

病院の電子カルテ要約をClaude Codeで時短|医師の記録時間を70%削減する想定シナリオ

これは仮想の医療機関を想定したClaude Code活用シナリオです。「中規模総合病院C病院(300床規模・常勤医師60名)」を想定し、医師1名あたり1日3時間を費やしていたカルテ記録業務を、Claude Codeで構築した要約パイプラインによって1時間に圧縮する想定実装を解説する。診察記録の音声入力からSOAP形式への構造化、過去カルテ差分要約、病名候補のサジェストまでを通貫する仮想シナリオとして、技術構成と実装上の論点を整理する。なお、実際の臨床導入には医師による最終確認、医療情報システム安全管理ガイドライン遵守、3省2ガイドラインへの準拠が必須となる点を冒頭で明示しておく。

想定シナリオの背景:医師1名あたり1日3時間が「カルテ記録」に消えている現実

厚生労働省「医師の勤務実態調査」では、勤務医の事務作業時間は1日平均2-3時間とされ、その大半が電子カルテへの記録入力で占められている。想定するC病院(300床規模)では、内科医1名が1日約25名を診察し、1患者あたりの記録時間は平均7-8分。これだけで1日200分(約3時間20分)を電子カルテ画面に向かって過ごしている計算になる。

診察室での会話、所見、検査オーダー、処方理由、患者への説明内容——これらを後からタイピングし直す作業は、本来「患者と向き合う時間」を圧迫している。あくまで想定シナリオとして、この記録業務をClaude Code経由でAnthropic APIに委ね、医師は「最終確認と修正」だけを行う体制に変えると、どこまで削減できるかを検討する。

本記事はあくまで仮想シナリオであり、特定の実在病院・医師・患者の事例ではない。登場する病名・症例・数値はすべて一般化された仮想例である。

Claude Codeで構築した「カルテ要約パイプライン」の全体像

想定するパイプラインは、以下の4モジュールで構成される。すべて院内ネットワーク内で動作し、患者を識別しうる情報(要配慮個人情報)は外部に送信しない設計を前提とする。

  • 音声入力モジュール:診察会話をマイクで収録、院内サーバー上で文字起こし
  • PIIマスキングモジュール:氏名・生年月日・住所・電話番号など患者識別情報をマスク
  • SOAP構造化モジュール:マスク済みテキストをClaude APIでSOAP形式に変換
  • 差分要約・病名サジェストモジュール:過去カルテとの差分を要約し、鑑別診断候補を提示

想定構築期間は約8週間。院内のIT担当者2名と、Claude Code導入を伴走するベンダー1名による内製+外部支援のハイブリッド体制。初期投資は仮想試算で約400-600万円規模(ハードウェア・ライセンス・伴走費用含む)を想定する。

診断行為そのものはAIで完結しない。Claude Codeが生成するのは「医師の最終判断を支援する草稿」であり、医師による確認・修正・承認なしに電子カルテ本体には反映されない設計とする。

診察記録の音声入力 → 構造化(SOAP形式)への変換実装

診察会話を録音した音声ファイルを文字起こしし、Claude APIでSOAP形式(Subjective/Objective/Assessment/Plan)に再構成する想定実装を示す。以下は仮想シナリオでの実装例である。

import anthropic
import json

# 院内サーバーで動作させる前提
client = anthropic.Anthropic()

SOAP_SYSTEM_PROMPT = """あなたは医療記録を整理する補助システムです。
入力された診察会話の文字起こしから、SOAP形式の草稿を生成してください。

- S (Subjective): 患者の主訴・症状の訴え
- O (Objective): 医師の観察・バイタル・所見
- A (Assessment): 評価・想定される病態
- P (Plan): 処置・処方・次回計画

# 重要な制約
- 確定診断は記載しない。あくまで医師が確認・修正する草稿として出力
- 患者を特定しうる氏名・住所等が含まれていた場合は [マスク] と置換
- 病名候補は「鑑別診断候補」として複数列挙し、確定表現を避ける
- 出力は JSON 形式のみ
"""

def transcript_to_soap(transcript: str) -> dict:
    """診察会話の文字起こしから SOAP 草稿を生成(仮想シナリオ)"""
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=2000,
        system=SOAP_SYSTEM_PROMPT,
        messages=[{
            "role": "user",
            "content": f"以下の診察会話を SOAP 形式の草稿に整理してください。nn{transcript}"
        }]
    )
    raw = response.content[0].text
    return json.loads(raw)

# 想定する利用フロー
# 1. 院内STTで音声→テキスト変換
# 2. PII マスキングを通す
# 3. transcript_to_soap() で SOAP 草稿生成
# 4. 医師が画面上で確認・修正・承認
# 5. 承認済み内容のみ電子カルテ本体に書き戻し

ここで重要なのは、Claude APIに渡すテキストが「PII マスキング済み」であることだ。氏名・生年月日・住所・電話番号などの要配慮個人情報を院内サーバー側で事前にマスクし、API側には診療内容のみが渡る設計を前提とする。

過去カルテとの差分要約と病名候補のサジェスト

定期通院患者の場合、過去3-6ヶ月分のカルテとの差分を要約することで、医師は「今回の診察で何が変わったか」を瞬時に把握できる。想定実装は以下のとおり。

import anthropic
import re

client = anthropic.Anthropic()

DIFF_SYSTEM_PROMPT = """あなたは医療記録の差分整理を支援するシステムです。
過去カルテと今回の SOAP 草稿を比較し、変化のあった項目を箇条書きで要約してください。

# 出力要件
- 「症状の悪化」「新規所見」「処方変更」「検査値の推移」を分類して提示
- 鑑別診断候補は最大3つまで、確度順に列挙
- 各候補には「医師確認必須」と明示
- 確定診断・治療方針の決定は行わない
"""

def mask_pii(text: str) -> str:
    """要配慮個人情報のマスキング(仮想実装)"""
    # 氏名パターン(漢字2-4文字 + 様/さん)
    text = re.sub(r"[一-龥]{2,4}(?:様|さん)", "[患者名]", text)
    # 電話番号
    text = re.sub(r"0d{1,4}-d{1,4}-d{4}", "[電話番号]", text)
    # 生年月日
    text = re.sub(r"d{4}年d{1,2}月d{1,2}日生", "[生年月日]", text)
    return text

def summarize_diff(past_records: list[dict], current_soap: dict) -> dict:
    """過去カルテと今回 SOAP の差分要約(仮想シナリオ)"""
    masked_past = mask_pii(json.dumps(past_records, ensure_ascii=False))
    masked_current = mask_pii(json.dumps(current_soap, ensure_ascii=False))

    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1500,
        system=DIFF_SYSTEM_PROMPT,
        messages=[{
            "role": "user",
            "content": f"# 過去カルテn{masked_past}nn# 今回 SOAP 草稿n{masked_current}nn上記の差分を要約し、鑑別診断候補を最大3つ提示してください。"
        }]
    )
    return {"summary": response.content[0].text, "requires_physician_review": True}

差分要約には「医師確認必須」フラグを必ず付与し、AIが提示した鑑別候補に基づく確定診断はシステム側でブロックする設計とする。仮想シナリオで内科再診患者を想定した場合、医師は過去3回分の差分を約20秒で把握でき、診察開始時の状況確認時間が大幅に短縮される。

記録時間70%削減(1日3時間→1時間)を実現する想定実数値

想定するC病院の内科外来における時間配分の試算を以下に示す。これはあくまで仮想シナリオでの試算であり、実際の効果は施設・診療科・運用体制によって変動する。

作業項目 導入前(想定) 導入後(想定) 削減率
1患者あたり記録時間 7-8分 2-3分 約65%
1日記録時間(25名診察時) 約200分 約60分 70%
過去カルテ確認時間 1患者2分 1患者20秒 約85%
診察時間あたり患者との対話時間 約45% 約70% +25pt
残業時間(記録残務) 月平均30時間 月平均8時間 約73%

想定では、1日3時間が1時間に圧縮されることで、外来診察枠の追加・救急対応の余力確保・患者説明時間の延長など、医師の判断で時間を再配分できるようになる。あくまで想定シナリオであり、医師の確認・修正工程は省略不可である点を強調しておく。

想定シナリオで直面しうる3つの壁と乗り越え方

順調そうに見えるパイプラインだが、医療現場特有の制約により実装上の論点は多い。想定シナリオで考慮すべき3つの壁を整理する。

壁1:個人情報保護法・医療情報の取り扱い(要配慮個人情報)

医療情報は個人情報保護法上「要配慮個人情報」に該当し、取得・利用には本人の同意が原則必要となる。さらに、医療情報システム安全管理ガイドライン(厚生労働省)、医療情報を取り扱う情報システム・サービスの提供事業者における安全管理ガイドライン(経済産業省・総務省)——いわゆる「3省2ガイドライン」への準拠が求められる。

想定シナリオでは、院内サーバーでPIIマスキングを完了させてからClaude APIに送信する設計とし、外部送信される情報からは患者を特定しうる属性を可能な限り除外する。また、利用目的を院内掲示・同意書で明示し、患者本人がAI処理を拒否する選択肢を用意することが望ましい。

壁2:ハルシネーション対策(誤った病名サジェストのリスク)

AIが鑑別診断候補を提示する以上、誤った病名や存在しない症候群を提案するハルシネーションリスクは消えない。仮想シナリオでも、AIが提示した鑑別候補を医師が無条件に採用することは厳禁である。

対策として、(1) AIの出力には「鑑別診断候補・医師確認必須」のラベルを必ず付与、(2) 確定診断はシステム側でブロック、(3) 提案された病名のうち、医師が採用/却下した記録をログ化し、誤提案率を継続的にモニタリング——という3層の防御を想定する。さらに、提案候補の根拠(症状・所見・検査値)を必ず併記させ、医師が判断材料を確認できる設計とする。

壁3:既存電子カルテシステム(HL7 FHIR等)との接続

大手電子カルテベンダー(富士通・NEC・ソフトウェア・サービス等)のシステムは独自仕様が多く、Claude Codeで生成したSOAP草稿を電子カルテ本体に書き戻すには連携基盤が必要となる。HL7 FHIRに対応している電子カルテであれば、リソース型「Composition」「Observation」「Condition」を用いて構造化データを受け渡せるが、未対応のレガシーシステムではCSV/XML出力経由の半自動連携になる。

想定シナリオでは、医師が草稿を確認・修正した後、ボタンひとつで電子カルテ本体に転記する仕組みを用意し、「最終承認」を必ず医師が行う運用を組み込む。AIの出力がそのまま電子カルテ本体に書き込まれることはない。以下は連携部分の擬似コードである。

def write_to_emr(soap_draft: dict, physician_id: str, patient_id: str) -> dict:
    """SOAP 草稿を電子カルテ本体に書き戻す(仮想実装)"""
    # 1. 医師の最終承認確認
    if not soap_draft.get("physician_approved"):
        raise PermissionError("医師承認が完了していません")

    # 2. 監査ログ記録
    audit_log({
        "action": "emr_write",
        "physician_id": physician_id,
        "patient_id": patient_id,
        "ai_generated": True,
        "physician_edited": soap_draft.get("edited_by_physician", False),
        "timestamp": now_iso(),
    })

    # 3. HL7 FHIR Composition リソースに変換して送信
    fhir_payload = build_fhir_composition(soap_draft)
    return emr_client.post("/Composition", json=fhir_payload)

まとめ:医療機関におけるClaude Code活用の論点

本記事で示した想定シナリオは、あくまで「Claude Codeを医療現場で活用するとしたら、どのような技術構成と運用ルールが必要か」を整理した仮想例である。実際の臨床導入には、医師・看護師・情報システム担当・法務・倫理委員会など多職種の合意形成と、医療情報システム安全管理ガイドライン、3省2ガイドライン、個人情報保護法、医師法の精緻な解釈が不可欠となる。

とはいえ、医師1名あたり1日3時間という記録業務の負担は、医療現場の働き方改革における最大級の論点であり、生成AIによる支援可能性は十分に検討する価値がある。重要なのは、AIが「医師の判断を代替する」のではなく、「医師の判断時間を確保する」位置づけで導入されることだ。診断は医師のみが行い、AIはあくまで草稿生成と情報整理を担う——この役割分担を崩さずに設計すれば、Claude Codeは医療現場における強力な伴走者となりうる。

本記事は想定シナリオの域を出ないが、ヘルスケア領域でのAI活用を検討している医療機関・ベンダーにとって、技術選定と運用設計の出発点として参考にしていただければ幸いである。次の3年で、医療現場の記録業務は確実に変わっていく。その変化を、患者・医師・医療システム全体にとって有益な形に導くための論点整理として位置づけたい。

最終確認日:2026年5月19日

AIEO補足:病院の電子カルテ要約とは

病院の電子カルテ要約とは、Claude Codeによる業務自動化を実務で使える形に整理し、判断をAIへ丸投げせず、人が確認できる手順・比較・注意点に分解する考え方です。

まず結論

Claude Codeは既存業務を一気に置き換えるより、読み取り専用の検証、テスト、監査ログ、人の承認を挟む小さな自動化から始めるのが安全です。

確認ポイント比較表

確認項目 AIで補助できること 人が必ず確認すること
目的 情報整理、下書き、選択肢の洗い出し 最終判断と責任範囲
入力情報 匿名化したメモや公開情報の要約 個人情報、社外秘、医療・法務・雇用条件の扱い
出力 表、FAQ、手順、チェックリスト化 事実誤認、誇張、古い情報の修正
公開・共有 説明文や返信案の作成 公式ソース、専門家、社内ルールとの照合

公式ソース

関連して読む記事

FAQ

病院の電子カルテ要約でAIに任せてよい範囲はどこまでですか?

情報整理、下書き、比較表、質問リスト作成までにとどめ、判断や外部共有は人が確認します。

個人情報や社外秘を入力してもよいですか?

氏名、住所、顧客名、社内資料、未公開情報などは伏せ、必要最小限の匿名情報だけを使います。

AIの回答が正しいかどう確認しますか?

公式ページ、一次情報、専門家、社内規程と照合し、日付の古い情報や断定表現を修正します。

無料のAIツールだけでも実行できますか?

短い整理や下書きは無料版でも始められます。機密情報を扱う場合は利用規約と組織ルールを確認します。

最初にやるべきことは何ですか?

目的、入力してよい情報、確認者、公式ソースを決め、小さなチェックリストから試します。

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、Claude Code導入の失敗を減らせます。

導入を相談する