他院から届く紹介状を読み取って、受付の登録項目と予約の段取りの下書きを作る
他院からFAXや郵送で届く紹介状を読み取り、患者・紹介元・紹介の目的など受付に要る項目を書かれたとおりに取り出します。予約の段取りと紹介元への連絡文の下書きまで作り、職員は確認と予約の確定に集中できます。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Power Automate
- 対象業界
- 介護/医療
- 対象部門
- 総務
- 対象業務
- データ入力・転記/書類作成
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- FAXで届いた紹介状を複合機が共有フォルダに保存する。郵送・持参分は職員がスキャンして同じフォルダに入れる
- 職員が1通ずつ開き、患者の氏名・フリガナ・生年月日・性別・連絡先を読む
- 受付システムで既存の患者を検索し、該当があれば患者番号を控え、なければ新規登録の準備をする
- 紹介元の医療機関名と医師名を読み、紹介元の一覧と突き合わせる
- 紹介の目的、傷病名、紹介先の診療科と医師の指定、希望日、添付資料(画像のCD、検査結果)の有無を読み取る
- 診療科の外来の取り決めに照らして予約枠を探し、必要なら診療科に確認する
- 予約を取り、紹介元へ受診日を知らせるFAXを作って送る
- 自動FAXの受信PDFとスキャンしたPDFが、受付用のストレージに保存される
- 自動保存をきっかけにワークフローが動き、形式・ページ数・画像の大きさを確かめる
- 自動OCRが紹介状のテキスト、表、チェック欄、手書きかどうか、単語ごとの信頼度を返す
- 自動送信元のFAX番号と記載された医療機関名から、紹介元の一覧を引く
- 自動生成AIが、受付に要る項目を書かれたとおりに取り出し、空欄と読めない箇所を分けて返す
- 自動氏名・生年月日・電話番号で既存の患者の候補を探す(確定はしない)
- 自動診療科ごとの取り決めに照らして、予約の段取りの候補と、紹介元への連絡文の下書きを作る
- 人職員が確認画面で紹介状の画像と下書きを並べて見て、空欄・読めない箇所・患者の候補を確かめる
- 人受付システムに登録し、予約枠を確定する。診療科への確認が要るものは確認する
- 人連絡文の下書きを直して紹介元へ送る
各工程の詳しい説明を読む
- FAXで届いた紹介状を複合機が共有フォルダに保存する。郵送・持参分は職員がスキャンして同じフォルダに入れる
- 職員が1通ずつ開き、患者の氏名・フリガナ・生年月日・性別・連絡先を読む
- 受付システムで既存の患者を検索し、該当があれば患者番号を控え、なければ新規登録の準備をする
- 紹介元の医療機関名と医師名を読み、紹介元の一覧と突き合わせる
- 紹介の目的、傷病名、紹介先の診療科と医師の指定、希望日、添付資料(画像のCD、検査結果)の有無を読み取る
- 診療科の外来の取り決めに照らして予約枠を探し、必要なら診療科に確認する
- 予約を取り、紹介元へ受診日を知らせるFAXを作って送る
(a)読むだけで時間がかかる。 FAXを経由すると細い線がかすれ、「3」と「8」、「1」と「7」の区別がつかないことがあります。読み違えた生年月日で検索すると既存の患者が見つからず、同じ人を二重に登録します。
(b)同じ項目が、紹介状ごとに違う場所にある。 紹介先の診療科が宛名欄にあるもの、本文の最後に「○○科にてご高診ください」とあるもの、無いものがあり、毎回全体を読み通して探します。
(c)空欄に気づくのが遅い。 電話番号や希望日の空欄に予約の段階で初めて気づき、紹介元への確認で処理が翌日に持ち越されます。
(d)添付資料の扱いが漏れる。 「画像CD同封」と本文に一行あるだけのことがあり、見落とすと受診当日に画像の取り込みが間に合いません。
- 【自動】 FAXの受信PDFとスキャンしたPDFが、受付用のストレージに保存される
- 【自動】 保存をきっかけにワークフローが動き、形式・ページ数・画像の大きさを確かめる
- 【自動】 OCRが紹介状のテキスト、表、チェック欄、手書きかどうか、単語ごとの信頼度を返す
- 【自動】 送信元のFAX番号と記載された医療機関名から、紹介元の一覧を引く
- 【自動】 生成AIが、受付に要る項目を書かれたとおりに取り出し、空欄と読めない箇所を分けて返す
- 【自動】 氏名・生年月日・電話番号で既存の患者の候補を探す(確定はしない)
- 【自動】 診療科ごとの取り決めに照らして、予約の段取りの候補と、紹介元への連絡文の下書きを作る
- 【人】 職員が確認画面で紹介状の画像と下書きを並べて見て、空欄・読めない箇所・患者の候補を確かめる
- 【人】 受付システムに登録し、予約枠を確定する。診療科への確認が要るものは確認する
- 【人】 連絡文の下書きを直して紹介元へ送る
8番目が、この設計の分かれ目です。 職員は紹介状を最初から読み直すのではなく、下書きのうち色が付いた箇所(空欄、読めない、候補が複数)から見ます。 全部の項目を同じ重さで確かめると、12分はあまり減りません。
6番目で候補を出すだけにしているのは、意図してのことです。 患者の同定を自動にすると、照合の誤りがそのまま他人のカルテへの紐付けになります。
02今回想定するシステム構成
紹介状(FAX・郵送・患者の持参) │ FAXは複合機がPDF化、郵送・持参はスキャン ▼【トリガー】受付用ストレージ(Azure Blob Storage)への保存 Azure Logic Apps ├──▶ 形式・ページ数・画像の大きさの確認 ▼ Azure AI Document Intelligence(レイアウトモデル) │ テキスト・表・チェック欄・手書きかどうか・信頼度を返す ▼ Azure Logic Apps ── 紹介元の一覧を引く(FAX番号/医療機関名) ▼ Azure OpenAI(Microsoft Foundry) ── 受付項目の取り出し │ ① 患者 ② 紹介元 ③ 紹介の目的と傷病名 │ ④ 紹介先の診療科と医師 ⑤ 希望日と急ぎの記載 ⑥ 添付資料 ▼ Azure Logic Apps ── 既存の患者の候補探し/診療科の取り決めとの照合 ▼ 確認画面(紹介状の画像と下書きを並べる) ▼ 【人が確認】──▶ 受付・予約システムへ登録 ──▶ 紹介元への連絡(下書きを直して送る)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル) | Google Document AI |
| 生成AI | Azure OpenAI(Microsoft Foundry)(受付項目の取り出しと連絡文の下書き) | Claude API、Gemini API |
| 連携 | Azure Logic Apps(保存の検知、一覧の照合、確認画面への書き出し) | Power Automate |
| 保管 | Azure Blob Storage(受付用と処理済みの保存先) | Microsoft SharePoint |
受付・予約システムと電子カルテは、新しく足すものではありません。 この構成はそこへ書き込みません。確認画面で職員が確かめた内容を、職員が受付システムへ登録します。 紹介元の一覧はスプレッドシートのものを使い、FAX番号の列を必ず持たせます。
日本語の紹介状には、AWS Textract は使えません。 公式のよくある質問では、抽出の対応言語は英語、ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語で、手書きの認識は英語の範囲に限られるとされています。
Azure AI Document Intelligence のレイアウトモデルは、日本語の印刷文字と手書き文字の両方に対応しています。 言語コードは指定しないのが推奨で、指定すると不完全な結果が返る可能性があるとされています。入力はPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)のほか、Office形式とHTMLも扱えます。
生成AIに Azure OpenAI を置くのは、読み取りと同じクラウドの中で処理を閉じるためです。 紹介状は要配慮個人情報そのもので、どのリージョン・どの契約で扱うかを1か所で説明できるほうが、院内の承認が通りやすくなります。
03どうやって実装するのか
処理の起点を決める
受付用のストレージにファイルが保存されたことを起点にします。 複合機のFAX受信の保存先をここに向けます。従量課金の Azure Logic Apps では、Azure Blob Storage のトリガー「BLOB が追加または変更されたとき (プロパティのみ)」が使えます。
このトリガーは、コンテナーのルート フォルダーで起動し、設定した時点ですでにある BLOB は無視します。 受付用の保存先は1階層にし、稼働前に溜まっていた紹介状は別の手順で流し直します。
1日1回の定時実行にはしません。 紹介元は当日か翌日には受診日の連絡を待っています。処理が終わったファイルは、成功したときだけ処理済みの保存先へ移します。残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 紹介状ファイル | PDFまたは画像。受け取った日時、経路、FAXの送信元番号 | 受付用ストレージ(複合機の保存設定) |
| 読み取り結果 | テキスト、段落、表とセル、チェック欄の状態、手書きかどうか、単語ごとの信頼度 | Azure AI Document Intelligence |
| 紹介元の一覧 | 医療機関コード、名称、FAX番号、電話番号、登録医の氏名 | 紹介元の一覧(スプレッドシート) |
| 診療科の取り決め | 診療科ごとの紹介枠の曜日、事前に要る準備(画像の取り込み、採血の予約など) | 連携室が作る一覧 |
| 既存の患者の検索結果 | 氏名・フリガナ・生年月日・電話番号で引いた候補(患者番号つき) | 受付システムからの書き出し |
質を決めるのは、下の3つです。 紹介元の一覧にFAX番号が無ければ、医療機関名の読み取りだけに頼ることになり、表記ゆれで引けません。診療科の取り決め(「整形外科の紹介枠は火曜と木曜の午前」など)は職員の頭の中にあることが多く、書き出せない取り決めは下書きにも反映できません。
データの取得方法を決める
読み取りは、ワークフローからレイアウトモデル(モデルID prebuilt-layout)を呼び出し、features=keyValuePairs を指定してキーと値のペアも返させます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 全文と段落 | content、paragraphs | 本文の途中に書かれた紹介先の診療科や添付資料の記載を拾う |
| 表とセル | tables | 医師会の様式のような表形式の紹介状で、欄と値の対応を取る |
| チェック欄 | selectionMarks の state(selected/unselected) | 「返書:要/不要」「画像:有/無」のような選択欄 |
| 手書きかどうか | styles の isHandwritten と信頼度 | 手書きの行を、確認の優先度を上げる材料にする |
| 単語ごとの信頼度 | words の confidence | 氏名・生年月日・電話番号の読み取りが確かかどうか |
| キーと値のペア | features=keyValuePairs | 「患者氏名」「生年月日」のような欄と値の組 |
outputContentFormat=markdown を指定すると、表や見出しの構造を残したテキストでも受け取れます。 生成AIにはMarkdownを、信頼度の判定には元のJSONを使います。紹介元の照合は、FAX番号が先、医療機関名が後です。
AIへ渡す前に整形する
- 形式とサイズの確認 … PDFまたは画像であること。PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBが上限です
- 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります
- 解像度の確認 … 抽出するテキストの最小の高さは、1024×768の画像で12ピクセルです。150dpiで約8ポイントの文字に相当します
- ロックの解除 … パスワードでロックされたPDFは、提出前にロックを解除する必要があります
- FAX送付状の切り分け … 段落の役割(
titleなど)と表題で送付状を見分け、本文と分けます - 複数の患者の分割 … 1ファイルに複数の患者分があれば、表題の繰り返しで区切ります
- 重複の検知 … FAXのあとに届いた原本は、紹介元・氏名・日付で照合して既処理の印を付けます
3番目と7番目を軽く見ないでください。 FAXの標準的な画質はこの下限に近いことがあり、紹介元に高画質での送信をお願いするだけで読めない箇所が減ります。 FAXと原本を別々に受付すると、同じ紹介が2件の予約になります。
AIに処理させる
させるのは、受付に要る項目を紹介状に書かれたとおりに取り出し、項目ごとに「書かれている/書かれていない/読めない」を分けることです。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 患者の氏名・フリガナ | 書かれた文字をそのまま写す。旧字体も直さない | 信頼度が低い文字を含めば unreadable |
| 生年月日・性別 | 和暦・西暦の表記をそのまま写し、西暦の日付も併記する | 数字が読めなければ unreadable。換算は書かれた値だけで行う |
| 患者の連絡先 | 電話番号と住所 | 書かれていなければ missing |
| 紹介元 | 医療機関名、医師名、電話・FAX番号 | 一覧と照合できなければ not_found |
| 紹介の目的・傷病名 | 本文の記載を短く写す。要約で言い換えない | 目的の記載が無ければ missing |
| 紹介先の診療科・医師 | 宛名欄と本文の両方を見る | 両方に違う診療科があれば ambiguous |
| 希望日・急ぎの記載 | 「至急」「本日中」「○月○日希望」など書かれた言葉 | 書かれていなければ missing。急ぎかどうかを推し量らない |
| 添付資料 | 画像のCD、検査結果、お薬手帳の写しなどの記載とチェック欄 | 記載とチェック欄が食い違えば ambiguous |
右端の列が、最も大事な区別です。 missing は紹介元に確認するもの、unreadable は画像を見れば職員が読めるもの、ambiguous は紹介元か診療科に確かめるものです。混ぜると、むだな電話が増えるか、確かめるべき箇所が素通りします。
| させないこと | 理由 |
|---|---|
| 紹介先の診療科を決めること | 書かれていない診療科を傷病名から推すのは医学的な判断 |
| 急ぎかどうかを決めること | 「至急」と書かれているかは写すが、症状から急ぎと判断しない |
| 既存の患者と同じ人だと決めること | 患者の取り違えにつながる。候補を並べるまで |
| 氏名の漢字を正しそうな字に直すこと | 「髙」を「高」に、「﨑」を「崎」に直すと、別人の登録になる |
1行目と2行目が、最も起きやすい逸脱です。 「胸痛、心電図でST変化」とあれば、生成AIは循環器内科と推し、急ぎと判断したくなります。当たっていても、書かれていない判断が混ざった時点で、職員は紹介状を読み直さなくなります。
指示内容を固定する
あなたは病院の地域医療連携室で、他院から届いた紹介状を受付する担当者の補助です。
OCRが返した読み取り結果だけを見て、受付に要る項目を取り出してください。
推測で埋めないでください。医学的な判断をしないでください。
【取り出す項目】
1. 患者:氏名、フリガナ、生年月日、性別、電話番号、住所
2. 紹介元:医療機関名、医師名、電話番号、FAX番号
3. 紹介の目的と傷病名
4. 紹介先の診療科と医師の指定
5. 希望日と、急ぎに関する記載
6. 添付資料の記載(画像のCD、検査結果など)とチェック欄の状態
【status の選び方】
- ok ......... 値が書かれており、読み取れている
- missing .... 値が書かれていない。欄名だけがあって値が空の場合も missing
- unreadable . 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous .. 値の候補が複数あり、1つに決められない
迷ったときに ok を選ばないでください。
【厳守事項】
- 記載がなければ value は空にし、status を missing にしてください。
他の項目や文脈から補って埋めないでください。
- 氏名は書かれた字形のまま写してください。旧字体や異体字を
一般的な字に直さないでください。
- 生年月日は書かれた表記を raw にそのまま写し、西暦の日付を value に入れてください。
数字が読めない場合は換算せず unreadable にしてください。
- 紹介先の診療科が書かれていない場合、傷病名や症状から診療科を
推測しないでください。missing にしてください。
- 急ぎかどうかを判断しないでください。「至急」「本日」など、
急ぎに関する言葉が書かれていれば、その言葉をそのまま写してください。
- 傷病名と紹介の目的は、書かれた言葉を短く写してください。
言い換えやまとめをしないでください。
- evidence には、判定の根拠にした文字列をそのまま写してください。
- confidence は OCR が返した値のうち、その項目で最も低いものを入れてください。
- 紹介状でない書類(FAX送付状、返書、検査結果だけの紙など)と判断した場合は、
項目を取り出さず document_type に種類を書いてください。
【読み取り結果(Markdown)】{layout_markdown}
【項目ごとの信頼度】{confidence_table}
【送信元の情報】{fax_meta}
【紹介元の一覧の照合結果】{referrer_match}
「傷病名や症状から診療科を推測しない」を明記しないと、ほぼ確実に埋めます。 禁じるのは推測の結果ではなく、推測という行為そのものです。氏名の字形の指示も省けません。 旧字体をよく使われる字に直して返すと、受付システムの検索が1文字違いで外れ、同じ人を二重に登録します。
出力形式を固定する
次の形のJSONで受け取ります。 Azure OpenAI の構造化出力を使い、response_format に json_schema を指定して strict: true にします。
{
"document_type": "referral_letter",
"patient": {
"name": { "value": "", "status": "ok | missing | unreadable | ambiguous", "confidence": 0, "evidence": "" },
"kana": { "value": "", "status": "", "confidence": 0, "evidence": "" },
"birth_date": { "raw": "", "value": "", "status": "", "confidence": 0, "evidence": "" },
"sex": { "value": "", "status": "", "confidence": 0, "evidence": "" },
"phone": { "value": "", "status": "", "confidence": 0, "evidence": "" }
},
"referrer": {
"facility": "", "doctor": "", "fax": "",
"master_match": "matched | not_found | multiple"
},
"purpose": { "value": "", "status": "", "evidence": "" },
"diagnosis": { "value": "", "status": "", "evidence": "" },
"target_dept": { "value": "", "status": "", "evidence": "" },
"requested_date": { "value": "", "status": "", "evidence": "" },
"urgency_words": [],
"attachments": [ { "kind": "", "status": "", "evidence": "" } ],
"handwritten_ratio": 0
}
1つ目の理由は、項目ごとの status で、確認画面の色付けを決められることです。 2つ目は、予約の段取りを別の層に置けることです。 段取りの候補は、ワークフローが診療科の取り決めと突き合わせて作ります。
| 条件 | 段取りの候補 |
|---|---|
target_dept が ok で、取り決めに紹介枠がある | 直近の紹介枠を2つ候補に出す |
target_dept が missing または ambiguous | 「診療科へ確認」。枠の候補は出さない |
urgency_words が空でない | 「当日中に職員が診療科へ連絡」。急ぎかどうかは診療科が決める |
attachments に画像のCDがある | 「受診日の前日までに画像を取り込む」を付ける |
患者の必須項目に missing がある | 「紹介元へ確認」と連絡文の下書きに確認事項を入れる |
スキーマの制約も先に押さえます。 構造化出力では、すべてのフィールドを必須にして任意の項目は null との共用体型で表し、additionalProperties: false を設定します。プロパティは最大100個、入れ子は最大5階層です。文字列の pattern や format はサポートされないので、電話番号の形式の確認はワークフロー側で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付用ストレージ | Azure Logic Apps のトリガー | 紹介状の保存を検知する |
| Azure AI Document Intelligence | API呼び出し | レイアウトの読み取りと信頼度を返す |
| 紹介元の一覧 | スプレッドシートの読み取り | FAX番号と医療機関名で紹介元を引く |
| Azure OpenAI | API呼び出し | 受付項目の取り出しと連絡文の下書き |
| 既存の患者の検索 | 受付システムからの定期的な書き出しを読む | 氏名・生年月日・電話番号で候補を出す |
| 確認画面 | 一覧(表)への書き出し | 紹介状の画像へのリンクと下書きを並べる |
受付システムと電子カルテには書き込みません。 既存の患者の検索も、受付システムから書き出した一覧を読むだけにします。書き込みの経路を作らないことで、取り違えが自動で登録に進む道を最初から断ちます。
Azure Blob Storage のマネージド コネクタのアクションは50MB以下のファイルを扱い、マネージド トリガーはポーリングする仮想フォルダー内で30,000個の BLOB に制限されています。処理済みのファイルを受付用の保存先に残さないのは、この制限に近づかないためでもあります。
人が確認する
職員は全件の下書きを見ますが、見る深さを変えます。 患者の同定と予約の確定は人が行うので、1通も素通りにしません。
- 患者の候補を先に見る … 既存の患者の候補が0件、1件、複数件のどれかを見ます。1件でも、生年月日と電話番号の両方が一致しているかを目で確かめます
- 色の付いた項目を見る …
unreadableは画像を開いて読み、missingは連絡文の確認事項に入っているかを見ます - 急ぎの記載を見る …
urgency_wordsがあるものは、その場で診療科に連絡します。 下書きの一覧に置いたままにしません - 段取りの候補を選ぶ … 候補の枠から選び、受付システムで予約を確定します
- 連絡文を直して送る … 送信そのものは職員が行い、下書きを直した項目は記録に残します
1番目を省かないでください。 同姓同名で生年月日も同じ患者は珍しくなく、電話番号まで一致して初めて同じ人の可能性が高いと言えます。 目標は、600通をならして1通4分です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 画像の寸法が範囲外、文字が小さすぎる | 50×50〜10,000×10,000ピクセル、1024×768で12ピクセルが下限。原本を待つか、紹介元に再送を依頼 |
| FAXの1枚目が送付状だけ | 段落の役割と表題で見分け、紹介状の本文だけを取り出す |
| 紹介元が一覧に無い | not_found。新しい紹介元か、FAX番号が変わったかを職員が確かめる |
| 既存の患者の候補が複数 | すべてを並べて表示する。どれかを選ぶ処理を自動で入れない |
| FAXのあとに原本が届く | 紹介元・氏名・日付で照合し、新しい受付にしない |
| OCRや生成AIが応答しない | 受付用の保存先に残す。処理済みへ移すのは成功時だけ |
| 手書きの割合が高く、読めない箇所が多い | handwritten_ratio が高いものは確認の優先度を上げ、下書きに頼らず画像を読む前提にする |
1行目が最も多く起きます。 原因はAIではなくFAXの画質と送信の設定です。「候補が複数」の行も大切です。 先頭の候補を選ぶ処理を入れると、いずれ別人に紐付けます。
記録を残す
- 元の紹介状ファイルと、受け取った日時・経路・送信元のFAX番号
- OCRが返したJSONの全文(テキスト、表、チェック欄、手書きかどうか、信頼度)
- 生成AIが返したJSONと、そのとき参照した紹介元の一覧と診療科の取り決めの版
- 患者の候補として出した一覧と、職員が選んだ患者番号と選んだ人
- 職員が下書きを直した記録 … どの項目を、どう直したか
- 予約を確定した日時と、紹介元へ連絡した日時
- 紹介元ごとの
unreadableとmissingの発生率
4つ目の「選んだ人」を残すのは、取り違えが起きたときに、照合の仕組みの問題か確認の手順の問題かを切り分けるためです。 最後の行は、紹介元に書式の見直しをお願いする根拠になります。
04実装レベルの3段階
最小構成は確かめるための段階で、600通はさばけません。 半自動化で、1通12分が7分程度になります。 読み取りと項目の取り出しは自動になりますが、既存の患者の検索、予約枠の調整、連絡文の作成が残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、患者の候補探しと連絡文の作成が、1通ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、unreadable の多い紹介元と、取り決めが書き出せていない診療科が先に分かります。
05工数削減シミュレーション
導入後 600件 × 4分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 地域の診療所や他の病院から紹介状がFAX・郵送・患者の持参で毎月数百通届き、地域医療連携室や医事課の職員が1通ずつ読んで受付システムに打ち込んでいる病院。紹介元ごとに書式がばらばらで、手書きの紹介状も混ざる場合。紹介元の医療機関の一覧(FAX番号・担当医)を持っており、予約の段取りを診療科ごとの取り決めとして書き出せる場合。
- 紹介の大半が地域医療連携ネットワークや電子的な紹介状で届き、項目がすでにデータで受け取れている場合。紹介状が月に数十通で、目視と手入力で足りる場合。なお、どの診療科で診るか、どれだけ急ぐかといった医学的な判断は、この構成では代替できません。
07最小構成で試す方法
- 先月届いた紹介状から30通を選ぶ(手書きのもの、FAXで画質の悪いもの、診療科が書かれていないものを必ず入れる)
- 院内で利用が認められている生成AIの環境があることを確かめる。患者の氏名などは黒塗りにしたうえで試す
- 30通を1通ずつ画面に貼り付け、「受付に要る項目(患者、紹介元、目的、傷病名、紹介先の診療科、希望日、添付資料)を書かれたとおりに取り出してください。書かれていないものは空欄にし、推測で埋めないでください。診療科や急ぎを判断しないでください」と指示する
- 出てきた項目を、当時の受付システムの登録内容と突き合わせる
- 空欄を埋めていないか、診療科を推していないかを最優先で見る
30通は必ずやってください。 ワークフローを組む前に、「読み取れれば項目を取り出せるのか」と「推測を止められるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の登録と同じ項目が取り出せた | OCRとワークフローの連携に進む |
| 書かれていない診療科や希望日を埋めた | 指示の書き方で直る。構成は有効 |
| 手書きやFAXの文字が読めない通数が多い | 画質が先。 紹介元の送信設定と自院の受信設定を見直す |
3行目が出ても失敗ではありません。 その場合は、同じ紹介元に高画質で送り直してもらったもので、どこまで変わるかを見てください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 書かれていない診療科を傷病名から埋める | 推測という行為を禁じる指示を入れ、target_dept の evidence が空でないかを後段で見る |
| 旧字体を一般的な字に直して返す | 字形を変えない指示を入れ、OCRの文字列と生成AIの文字列を機械で比べる |
| 生年月日の和暦の換算を誤る | raw に元の表記を残し、換算はワークフロー側の計算で検算する |
| FAXの画質で数字が読めない | 1024×768で12ピクセルが下限。紹介元に高画質での送信をお願いする |
| 既存の患者の候補を自動で選ぶ | 候補を並べるまでにする。 選ぶのは職員 |
| 紹介元が一覧で見つからない | FAX番号の列を整備する。医療機関名だけで引かない |
| 急ぎの記載を一覧に埋もれさせる | urgency_words があるものは、一覧とは別に即時の通知を出す |
| 稼働前の分やサブフォルダーのファイルが処理されない | トリガーは既存の BLOB を無視し、ルート フォルダーで起動する。保存先は1階層にし、稼働前の分は別に流す |
上の3行が、この構成の失敗のほとんどです。 どれも生成AIが「気を利かせて」書かれていないことを足すところから始まり、足された値は見た目では正しいので確認をすり抜けます。
最後の行はエラーにならず、ファイルが黙って残ります。 毎朝、未処理の数を数える習慣を最初から作ってください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 患者の氏名、生年月日、連絡先、傷病名、既往歴や処方の記載、検査結果など、要配慮個人情報を含む診療情報そのものです。
- 医療情報の安全管理のガイドラインに沿って設計する … 厚生労働省の「医療情報システムの安全管理に関するガイドライン」は令和8年6月に見直され、第7.0版として公表されています。概説編、経営管理編、企画管理編、システム運用編、保守委託機関編に分かれています。処理を始める前に、情報システム担当と該当する項目を確かめてください
- 処理する場所と契約を先に決める … OCRと生成AIをどのリージョンで動かすか、入力したデータがどう扱われるかを、委託先との契約と院内の規程で説明できる形にします
- 試すときは黒塗りにする … 最小構成で手元の生成AIの画面を使う場合は、患者の氏名・生年月日・連絡先を黒塗りにしたもので試します
- 患者の同定を自動にしない … 取り違えは、他人の診療情報を別の患者のカルテに紐付けることになります。削減した時間とは比べものにならない損害です
- 医学的な判断を下書きに混ぜない … 診療科の選択と急ぐかどうかは医師が決めます。下書きが判断の形をしていると、確認が形だけになります
- ログの閲覧範囲を絞る … 保存するJSONには診療情報がそのまま入ります。閲覧できるのは連携室の職員と監査の担当に限ります
誤りが起きた場合のリスクは、患者を取り違えることと、急ぎの紹介を遅らせることの2つです。 前者は照合を自動で確定させると起き、後者は急ぎの記載を一覧に埋もれさせると起きます。
10まず何から始めるか
1週目:院内の承認の手続きを始め、紹介元の一覧にFAX番号を足す
情報システム担当と、医療情報をクラウドで処理するための院内の手続きを確かめます。並行して、紹介元の一覧にFAX番号の列を足します。400施設すべてを一度に埋める必要はありません。紹介の多い上位50施設から埋めます。
2週目:30通で試す
先月の紹介状から30通を選び、黒塗りにして手元の生成AIの環境に貼り付けます。当時の登録と突き合わせ、書かれていない診療科や希望日を埋めていないかを最優先で見ます。
3週目:診療科の取り決めを書き出す
紹介枠の曜日、画像の取り込みや採血の予約など、診療科ごとに事前に要る準備を一覧にします。診療科の外来の責任者に確認してもらいます。あわせて、急ぎの記載があったときの連絡先を決めます。
4週目:受付用の保存先から一覧までをつなぐ
複合機のFAX受信の保存先を受付用のストレージに向け、Azure Logic Apps でOCRを呼び、項目と status を一覧に書き出すところまで作ります。この時点では患者の候補も段取りも出さず、項目の一覧だけを見ます。
2か月目: 紹介元の一覧との照合、既存の患者の候補、診療科の取り決めとの照合を足します。職員が下書きを直した項目を毎週数えます。3か月目以降: 紹介元への連絡文の下書きを足し、1通12分が何分になったかを実測します。紹介元ごとの unreadable と missing の発生率を見て、高画質での送信のお願いと書式の相談を始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Amazon Textract の抽出の対応言語が英語・ドイツ語・フランス語・スペイン語・イタリア語・ポルトガル語で、手書きは英語の範囲に限られること(差し替えの根拠) | AWS: Amazon Textract よくある質問 | 2026-09-29 |
レイアウトモデルの印刷テキストと手書きテキストの対応言語に日本語が含まれること。言語コードは指定しないのが推奨であること。v4.0 でキーと値のペアを prebuilt-layout の features=keyValuePairs で取得すること | Microsoft Learn: 読み取りとレイアウトの言語サポート | 2026-09-29 |
| レイアウトモデルの入力形式、PDFとTIFFの最大2,000ページ(Freeは2ページ)、S0で500MB、画像の寸法とテキストの最小高さ、パスワード付きPDFの解除。段落の役割、選択マーク、手書きスタイル、単語ごとの信頼度、Markdown出力が返ること | Microsoft Learn: ドキュメント レイアウト分析 | 2026-09-29 |
構造化出力の指定(json_schema、strict: true)、全フィールド必須と null の共用体型、additionalProperties: false、プロパティ最大100個・入れ子最大5階層、pattern・format が非対応であること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-09-29 |
| 従量課金の Blob トリガーがルート フォルダーで起動し既存の BLOB を無視すること。マネージド アクションが50MB以下、マネージド トリガーが30,000個の BLOB に制限されること | Microsoft Learn: ワークフローから Azure Blob Storage に接続する | 2026-09-29 |
| 医療情報システムの安全管理に関するガイドラインが令和8年6月に見直され第7.0版となったこと。概説編・経営管理編・企画管理編・システム運用編・保守委託機関編で構成されること | 厚生労働省: 医療情報システムの安全管理に関するガイドライン 第7.0版 | 2026-09-29 |
医療情報をクラウドで処理してよいか、どの条件で処理するかは、院内の情報システム担当と規程に従って決めてください。 本記事は公開されている製品のドキュメントと厚生労働省のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0326)についてのご相談はこちらから。
