介護施設で薬局から毎月届く薬剤情報提供書を読み取り、利用者ごとの服薬一覧を更新して、追加・中止・用量変更を看護職員に知らせる
協力薬局から届く薬剤情報提供書を読み取り、利用者ごとの服薬一覧を更新して、前月から追加・中止・用量変更された薬を看護職員に一覧で知らせます。転記と見比べを機械に任せ、人は変更点の確認に時間を使います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 介護/医療
- 対象部門
- 総務
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/引き継ぎができていない/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 薬局から薬と一緒に薬剤情報提供書を受け取り、利用者ごとに分ける
- 看護職員が1枚ずつ、その利用者の服薬一覧のシートを開く
- 書面の表の行と、一覧の行を上から順に見比べる
- 新しい薬は一覧に行を足し、量や回数が変わった薬は書き換える
- 書面に無い薬について、中止なのか、別の書面に載る薬なのかを、処方元と日付から考える
- 変わった点を申し送りノートに書き、フロアの介護職員に口頭でも伝える
- 書面は利用者ごとのファイルに綴じる
- 人事務の担当者が書面をスキャンし、ファイル名を「利用者ID_薬局コード_受取日」にして取込フォルダに保存する
- 自動Apps Script が10分おきに取込フォルダを見て、新しいファイルを拾う
- 自動Document AI の Form Parser が、表の行とセル、項目名と値の組、信頼度を返す
- 自動Apps Script が利用者の氏名と住所を伏せ、表の部分を取り出す
- 自動Claude API が、表の各行を薬品名・規格・剤形・1回量・1日の回数・用法・日数に書かれたとおりに分ける
- 自動Apps Script が施設の薬品の対応表で薬品名をそろえ、前月の服薬一覧と突き合わせる
- 自動行ごとに `continued` / `added` / `dose_changed` / `usage_changed` / `not_in_document` / `stop_stated` を付ける
- 人看護職員が `continued` 以外の行だけを確かめ、一覧への反映を承認する
- 自動承認された変更を服薬一覧に書き込み、変更点の一覧を介護職員向けの掲示用シートに出す
- 人`not_in_document` の行について、必要なら薬局か処方元に問い合わせる
各工程の詳しい説明を読む
- 薬局から薬と一緒に薬剤情報提供書を受け取り、利用者ごとに分ける
- 看護職員が1枚ずつ、その利用者の服薬一覧のシートを開く
- 書面の表の行と、一覧の行を上から順に見比べる
- 新しい薬は一覧に行を足し、量や回数が変わった薬は書き換える
- 書面に無い薬について、中止なのか、別の書面に載る薬なのかを、処方元と日付から考える
- 変わった点を申し送りノートに書き、フロアの介護職員に口頭でも伝える
- 書面は利用者ごとのファイルに綴じる
(a)転記の量が多い。 1人あたり5〜10種類の薬を飲んでいる利用者が多く、1枚の書面で10行近くを見比べることになります。 定期の処方が届く週は、看護職員の業務がこれで埋まります。
(b)「載っていない」の扱いが人によって違う。 5番目で、ある看護職員は「中止だろう」と一覧から消し、別の看護職員は「別の書面に載るはず」と残します。同じ書面を見て、結果が担当者で分かれます。 前者は飲むはずの薬が配薬から外れ、後者は止めたはずの薬が出続けます。
(c)変更が申し送りの途中で落ちる。 一覧を書き換えても、夜勤の介護職員に伝わるのは申し送りノートを読んだときです。「量が半分になった」のような小さな変更ほど、口頭の伝達から抜けます。
- 【人】 事務の担当者が書面をスキャンし、ファイル名を「利用者ID_薬局コード_受取日」にして取込フォルダに保存する
- 【自動】 Apps Script が10分おきに取込フォルダを見て、新しいファイルを拾う
- 【自動】 Document AI の Form Parser が、表の行とセル、項目名と値の組、信頼度を返す
- 【自動】 Apps Script が利用者の氏名と住所を伏せ、表の部分を取り出す
- 【自動】 Claude API が、表の各行を薬品名・規格・剤形・1回量・1日の回数・用法・日数に書かれたとおりに分ける
- 【自動】 Apps Script が施設の薬品の対応表で薬品名をそろえ、前月の服薬一覧と突き合わせる
- 【自動】 行ごとに
continued/added/dose_changed/usage_changed/not_in_document/stop_statedを付ける - 【人】 看護職員が
continued以外の行だけを確かめ、一覧への反映を承認する - 【自動】 承認された変更を服薬一覧に書き込み、変更点の一覧を介護職員向けの掲示用シートに出す
- 【人】
not_in_documentの行について、必要なら薬局か処方元に問い合わせる
8番目が、この設計の分かれ目です。 看護職員が見るのは変わった行だけで、変わらなかった行は件数を流し見るだけにします。全行を人が見直す設計にすると、60.0時間はほとんど減りません。
7番目で not_in_document と stop_stated を分けているのも、意図してのことです。 「中止」と書かれていた薬は確認して消し、書面に出てこなかった薬は消す前に問い合わせます。
02今回想定するシステム構成
薬剤情報提供書・お薬手帳の写し(紙) │ 事務の担当者がスキャン(300dpi) ▼【トリガー】Apps Script の時間主導型トリガー(10分おき) Google Apps Script ── 形式・ページ数の確認 ▼ Google Document AI(Form Parser) │ 表の行とセル・項目名と値の組・信頼度を返す ▼ Google Apps Script ── 氏名・住所を伏せ、表の部分を取り出す ▼ Claude API ── 表の各行を項目に分ける(書かれたとおり) │ 薬品名/規格/剤形/1回量/1日の回数/用法/日数/注意事項欄 ▼ Google Apps Script ── 薬品の対応表でそろえ、前月の服薬一覧と突き合わせる │ continued/added/dose_changed/usage_changed/not_in_document/stop_stated ▼ 【看護職員が continued 以外を確かめて承認】 ├──▶ 服薬一覧(利用者ごとのシート) └──▶ 変更点の掲示用シート(介護職員向け)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(表の行を項目に分ける) | Gemini API、OpenAI API |
| 差異計算 | Google Apps Script(薬品の対応表との照合と、前月の一覧との突き合わせ) | Python |
| 連携 | Google Apps Script(取込フォルダの監視、伏せ字の処理、一覧への書き込み) | Python |
| 保管 | Google ドライブ(利用者ごとのフォルダ)、Google スプレッドシート | 介護記録のシステムの添付機能 |
新しく作るのは、施設の薬品の対応表です。 薬局ごとの書き方(商品名、規格の表記)を、施設の服薬一覧で使う1つの書き方に結び付ける表で、過去の一覧と書面から少しずつ作ります。 この表が、「同じ薬の書き方違い」と「新しい薬」を分ける物差しになります。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えてキーと値のペア(項目とチェックボックス)、表、一般的なエンティティを抽出するとされ、対応言語の一覧には日本語(ja)が手書きの対応ありとして載っています。薬剤情報提供書は薬品ごとに1行の表が中心の書面で、表を行とセルで返す機能がそのまま使えます。
表は、応答の中で見出しの行と本体の行に分かれて返ります。 公式の説明では、表は headerRows と bodyRows で構成され、それぞれのセルが位置の情報と rowSpan、colSpan を持ちます。薬品名と用法が2段に分かれて書かれた書式でも、セルの結合の情報から1つの薬の行にまとめられます。
厚生労働省も、薬が変わったことの伝え方に触れています。 お薬手帳(電子版)の運用上の留意事項を示した通知では、利用者に情報を提供する際に「調剤年月日」「薬品情報」「用法情報」その他必要な情報を提供することとし、処方・調剤される医薬品が変更された場合等には、利用者及び医療関係者が認識しやすいよう、注意事項欄に記載することが望ましいとされています。本記事の stop_stated は、この注意事項欄に書かれた変更を拾うためのものです。
03どうやって実装するのか
処理の起点を決める
事務の担当者が書面を取込フォルダに保存することを起点にします。 薬局から届いた書面は利用者ごとに分け、スキャンしたファイルの名前を「利用者ID_薬局コード_受取日」にします。Apps Script の時間主導型トリガーが10分おきに取込フォルダを見ます。
1回の実行で処理する枚数に上限を置きます。 Apps Script の1回の実行は6分までなので、1回に8枚までとし、残りは次の実行に回します。 定期の処方が届く日は百枚を超えることがあり、上限を置かないと途中で止まった実行が同じ書面を二度読みます。処理済みのフォルダへ移すのは、突き合わせの結果を書き出し終えたときだけにします。
1日の実行の合計時間にも上限があります。 公式の割り当てでは、トリガーの実行時間の合計は個人のアカウントで1日90分、Google Workspace で1日6時間です。定期の処方の日に詰まらないよう、Workspace のアカウントで動かす前提にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 薬剤情報提供書・お薬手帳の写し | スキャンしたPDF。利用者ID、薬局コード、受取日 | 取込フォルダ |
| 読み取り結果 | 表の行とセル、項目名と値の組、全文のテキスト、読み取りの信頼度 | Document AI(Form Parser) |
| 前月の服薬一覧 | 利用者ごとの薬品名、規格、1回量、回数、用法、開始日、処方元 | 服薬一覧のスプレッドシート |
| 施設の薬品の対応表 | 薬局ごとの書き方と、施設での書き方の対応 | 施設で作る表 |
| 処方元の一覧 | 利用者ごとの処方元(協力医療機関、専門の医療機関)と、どの薬局が出すか | 施設で作る表 |
質を決めるのは、いちばん下の2つです。 薬品の対応表が無ければ、書き方が違うだけの薬がすべて added になります。処方元の一覧が無ければ、ある薬局の書面に別の医療機関の薬が載っていないのは当たり前だ、ということを機械が知りません。
前月の服薬一覧には「処方元」の列を足します。 いまの一覧に無ければ、これが最初の準備作業です。not_in_document を出すかどうかは、同じ処方元の書面に載っていないときだけに絞るからです。
データの取得方法を決める
読み取りは、Apps Script から Document AI の処理の API を呼ぶだけです。ファイルを渡すと、Document という形の応答が返ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 表の行とセル | pages[].tables[] の headerRows と bodyRows | 薬品ごとの行、列の見出し |
| 項目名と値の組 | pages[].formFields[] の fieldName と fieldValue | 調剤日、処方元、薬局名 |
| 全文のテキスト | text と、各要素の textAnchor | 注意事項欄の文、表の外に書かれた変更の記載 |
| 信頼度と位置 | 各要素の layout の confidence と boundingPoly | 数字の欄(規格、1回量、日数)の読み取りが確かかの判定 |
数字の欄は、信頼度を欄ごとに見ます。 「5mg」と「0.5mg」、「1錠」と「7錠」の違いは、1文字の読み違いで生まれます。規格と1回量の欄の中で、基準を下回る文字が1つでもあれば low_confidence を付けます。 行全体の平均で見ると、1文字の読み違いが埋もれます。
利用者の氏名と住所は、ここで Apps Script が伏せます。 ファイル名の利用者IDで一覧と結び付けるので、生成AIに氏名を渡す理由がありません。
AIへ渡す前に整形する
- 形式の確認 … Document AI の対象は PDF、TIFF、JPEG、PNG などです。スキャナの設定をPDFに固定します
- 解像度の確認 … 公式には、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。規格の小さな数字を読むため、300dpiで取ります
- ページ数の確認 … Form Parser の同期の処理は15ページまでです。1人分の書面が15ページを超えることはまれですが、まとめてスキャンしたものは利用者ごとに分けます
- 向きの確認 … 横向きの書面は向きを直します
- 薬の写真の扱い … 書面に薬の写真が並ぶ書式は、写真の部分を読み取りの対象から外しません。表の構造を崩さないため、ページはそのまま渡します
- 重複の確認 … 同じ利用者・同じ薬局・同じ調剤日のファイルが既にあれば、二重に読まずに印を付けます
2番目を軽く見ないでください。 規格の「.」(小数点)は、解像度が足りないと最初に消える文字です。「0.5mg」が「05mg」や「5mg」と読まれると、10倍の量の薬として一覧に載ります。 低い解像度の書面を読ませて low_confidence を並べるより、最初に取り直すほうが確実です。
AIに処理させる
させるのは、表の各行を項目に分けることだけです。 薬品名をそろえる判断、前月との違いの判断、処方の適否の判断はさせません。
| 分ける項目 | 当たるものの例 | 判断できないときの扱い |
|---|---|---|
| 薬品名 | 表の「薬品名」「薬の名前」の欄 | 書かれたとおりに写す |
| 規格 | 「5mg」「0.5%」のような含量 | 数字と単位を書かれたとおりに |
| 剤形 | 錠、カプセル、散、軟膏、貼付剤 | 書かれていなければ空 |
| 1回量 | 「1錠」「0.5g」 | 書かれていなければ空 |
| 1日の回数・用法 | 「1日3回毎食後」「就寝前」「疼痛時」 | 書かれた表記のまま。言い換えない |
| 日数・回数 | 「14日分」「10回分」 | 書かれていなければ空 |
| 注意事項欄の変更の記載 | 「○○は中止になりました」「量が変わりました」 | 書かれていれば、対象の薬品名とその文を写す |
用法を言い換えないことを、表に明記しています。 「分3毎食後」を「1日3回朝昼夕食後」に直すのは、規則でできます。AIが直すと、直したという事実が記録に残りません。 そろえるのは Apps Script の対応表の仕事にします。
| させないこと | 理由 |
|---|---|
| 商品名と一般名の言い換え | 同じ薬とみなすかは施設の対応表で決める |
| 規格や1回量の「修正」 | 読み違いを正しそうな数字に直すと、誤りが見えなくなる |
| 前月との違いの判定 | 一覧との突き合わせは規則で行う |
| 書面に無い薬の中止の判断 | not_in_document と stop_stated は規則で分ける |
| 処方の適否、相互作用への言及 | 医師と薬剤師の判断。施設の側で代わりにしない |
2行目がいちばん起きやすい失敗です。 読み取りが「05mg」と返したとき、AIは前後から考えて「0.5mg」に直したがります。直した値が正しくても、直したという事実が消えれば、人はその欄を確かめません。 直すのは人で、AIには読めた文字のまま返させ、信頼度で印を付けます。
指示内容を固定する
あなたは介護施設で、薬局から届いた薬剤情報提供書の表を、
項目に分けて書き写す立場です。
OCRが返した読み取り結果だけを見てください。推測で埋めないでください。
【やること】
1. 表の各行を、1つの薬ごとに次の項目に分けてください。
薬品名、規格、剤形、1回量、1日の回数と用法、日数または回数
2. 1つの薬が2段以上に分かれて書かれている場合は、1つの行にまとめてください。
3. 注意事項欄や表の外に、薬の中止・変更・追加について書かれた文があれば、
その文をそのまま写し、どの薬品名についての文かを書いてください。
4. 調剤日、処方元の医療機関名、薬局名が書かれていれば写してください。
5. 読み取り結果の中の [MASKED] は伏せた値です。そのままにしてください。
【厳守事項】
- 文字は書かれたものをそのまま入れてください。
規格と1回量は、数字・小数点・単位を1文字も直さないでください。
不自然に見える数字でも、読み取り結果の文字のまま写してください。
- 用法は書かれた表記のまま写し、別の言い方に言い換えないでください。
- 商品名を一般名に、一般名を商品名に言い換えないでください。
- 書かれていない項目は空にしてください。ほかの行や薬品名から推し量らないでください。
- この書面に載っていない薬について、何も書かないでください。
中止されたかどうかを推し量らないでください。
- 処方の量や飲み合わせが適切かどうかについて、何も書かないでください。
- evidence には、各行の根拠にした文字列をそのまま写してください。
【読み取り結果(表、キーと値の組、全文。氏名・住所は伏せてあります)】{ocr_result}
「この書面に載っていない薬について何も書かない」を入れるのは、AIが親切に補うからです。 何も言わなければ、前月の一覧を見せていないのに「降圧薬は今回含まれていません」のような一言を添えることがあります。載っていないことの意味を決めるのは、処方元の一覧と規則です。
「飲み合わせについて書かない」も同じ理由です。 「併用注意」のような一言があると、看護職員はそれが誰の判断なのか分からないまま読みます。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONに固定して受け取ります。 公式には、output_config.format に json_schema の形でスキーマを渡すと、制約付きのデコードでスキーマに従う応答を返すとされています。enum と required を使え、オブジェクトの additionalProperties は false にする必要があります。
{
"dispensed_date": "",
"prescriber": "",
"pharmacy": "",
"items": [
{
"drug_name": "",
"strength": "",
"form": "",
"dose": "",
"usage": "",
"days": "",
"evidence": ""
}
],
"change_notes": [
{ "drug_name": "", "note": "" }
]
}
信頼度はこのJSONに入れません。 欄ごとの信頼度は Document AI の応答から Apps Script が直接取り、evidence の文字列の位置と突き合わせて付けます。AIに信頼度を書かせると、それらしい数字を書きます。
前月との違いは、Apps Script が規則で付けます。
| 状態 | 付ける条件(Apps Script が決める) |
|---|---|
continued | 対応表でそろえた薬品名・規格・1回量・用法が、前月の一覧と同じ |
added | 前月の一覧に無い薬品名(対応表でそろえた後) |
dose_changed | 薬品名は同じで、規格か1回量が違う |
usage_changed | 薬品名と量は同じで、回数か用法が違う |
stop_stated | change_notes に中止の記載がある |
not_in_document | 同じ処方元の定期の書面なのに、前月の一覧の薬が載っていない |
low_confidence | 規格か1回量の欄に、信頼度が基準を下回る文字がある(上の状態に重ねて付ける) |
この表が、出力を分けた理由です。 AIが返すのは書面に書かれたことだけで、前月と比べてどうかは一覧、同じ薬かは対応表、値が確かかは信頼度という別々の物差しで状態を決めます。対応表を直せば、AIを呼び直さずに判定だけをやり直せます。
not_in_document は、臨時の書面からは出しません。 臨時の処方の書面に定期の薬が載っていないのは当たり前で、ここで not_in_document を出すと、看護職員が毎回同じ確認をすることになります。 定期か臨時かは、ファイル名と処方元の一覧から Apps Script が決めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取込フォルダ | Apps Script の時間主導型トリガー | 新しい書面を拾う |
| Document AI | API呼び出し | 表の行とセル・項目名と値の組・信頼度を返す |
| Claude API | API呼び出し(構造化出力) | 伏せた後の読み取り結果から、行を項目に分ける |
| 薬品の対応表・処方元の一覧 | スプレッドシートの読み取り | 薬品名のそろえと、定期か臨時かの判定 |
| 確認用シート | スプレッドシートへの書き込み | 行ごとの状態、前月の値、今月の値、書面へのリンク |
| 服薬一覧 | スプレッドシートへの書き込み(承認後のみ) | 承認された変更だけを反映 |
| 変更点の掲示用シート | スプレッドシートへの書き込み | 介護職員向けに、利用者・薬・変更の内容・反映日 |
| 介護記録のシステム | 書き込まない | 記録は職員が行う |
服薬一覧への書き込みは、看護職員の承認を条件にします。 確認用シートに「承認」の列を置き、承認の印が付いた行だけを、次の実行で一覧に反映します。 承認の前に一覧が変わると、配薬の担当者が確認前の内容を見ることになります。
変更点の掲示用シートは、申し送りの代わりではありません。 夜勤の介護職員が勤務の始めに開く一覧として置き、口頭の申し送りは今までどおり続けます。 掲示用シートには、反映した日時と承認した看護職員の名前を並べます。
人が確認する
看護職員が見るのは、continued 以外の行だけです。 continued は件数を流し見るだけにします。全行を書面と見比べる設計にすると、第10章の20.0時間には収まりません。
low_confidenceの欄を書面と見比べる … 規格と1回量は1文字ずつ見ます。読めなければ薬局に確かめますstop_statedとnot_in_documentを確かめる … 前者は書面の記載を読み、後者は消す前に薬局か処方元に問い合わせますadded・dose_changed・usage_changedを確かめる … 書面と見比べ、承認の印を付けます- 対応表に無い書き方を登録する … 書き方違いの同じ薬だった場合は、対応表に1行足します
2番目を省かないでください。 not_in_document の薬を確認せずに一覧から消すと、飲み続けるはずの薬が配薬から外れます。 問い合わせて中止と分かったときだけ消し、問い合わせの記録を残します。
目標は、300件をならして1件4分です。 前月と違う行が出る書面は3割前後という想定で、それより多い月は、対応表の不足か、薬局の書式の変更を疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 規格・1回量の文字の信頼度が低い | low_confidence。書面と見比べ、読めなければ薬局に確かめる |
| 対応表に無い書き方の薬 | added として出し、同じ薬なら看護職員が対応表に登録 |
| 定期の書面に前月の薬が無い | not_in_document。消さずに問い合わせる |
| 入院から戻った利用者の退院時の処方 | 処方元が変わるので、前月の一覧とは突き合わせず、全行を added 扱いで看護職員へ |
| 書面にファイル名の利用者IDと違う氏名 | 取り違えの疑い。突き合わせをせず、事務の担当者へ戻す |
| 薬剤情報提供書でない書類(請求書、案内) | 表が見つからなければ、読み取りを止めて事務の担当者へ |
| 15ページを超えるファイル | 利用者ごとに分けて取り込み直す |
| API が応答しない、6分を超える | 取込フォルダに残す。処理済みへ移すのは書き出しの成功時だけ |
5行目を自動で直さないでください。 ファイル名と書面の氏名が違うのは、多くは分けるときの取り違えです。別の利用者の一覧と突き合わせると、存在しない変更が大量に出ます。 照合の前に止めるのがいちばん安全です。
記録を残す
- 元の書面のファイルと、利用者ID・薬局コード・受取日・取込の日時
- Document AI が返した
DocumentのJSONの全文 - Claude API に渡した伏せた後の読み取り結果と、返ってきたJSON
- Apps Script が付けた行ごとの状態と、そのとき使った対応表の版
- 看護職員が承認した日時と担当者、承認しなかった行とその理由
not_in_documentについて問い合わせた先、日時、答え
4つ目で対応表の版を残すのは、表が毎月育つためです。 先月 added だった薬が今月は continued になるのは、対応表に行が足されたからかもしれません。版が残っていないと、判定の違いが書面の違いなのか表の違いなのか分かりません。
最後の行は、薬局との相談の材料になります。 同じ薬局で not_in_document が続くなら、定期の書面の出し方を相談します。
04実装レベルの3段階
最小構成は、確かめるための段階です。 月300枚には使えません。 半自動化で、1件12分が8分程度になります。 書き起こしは自動になりますが、前月の一覧との見比べと申し送りの記入が残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、前月との見比べが、1行ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の1か月で、対応表に足すべき行が先に分かります。
05工数削減シミュレーション
導入後 300件 × 4分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 入所者が百名を超える特別養護老人ホームや介護老人保健施設、複数の施設を運営する法人で、協力薬局から紙の薬剤情報提供書が毎月まとめて届き、看護職員が施設の服薬一覧へ手で写している場合。処方元の医療機関や薬局が複数あり、変更の伝達が申し送りノート頼みになっている場合。Google Workspace を使っている場合。
- 入所者が数十名で、手書きの転記で足りる場合。協力薬局と電子のデータで服薬情報をやり取りする仕組みがすでにある場合。介護記録のシステムに処方の取り込み機能があり、紙を読む必要がない場合。なお、処方の妥当性、相互作用、用量の適否の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の書面から、利用者10名分・30枚を選ぶ(うち数枚は、変更があったと分かっているものを入れる)
- その30枚について、当時どの行を書き換え、何を申し送ったかを看護職員に聞き取る
- 書面をPDFにし、氏名を黒く塗ってから、手元のAIサービスの画面に1枚ずつ貼り付ける
- 「この薬剤情報提供書の表を、薬品名・規格・剤形・1回量・用法・日数に分けてください。書かれたとおりに写し、数字を直さないでください。載っていない薬について何も書かないでください」と指示する
- 出てきた表と、当時の服薬一覧を手で見比べる
30枚は必ずやってください。 Apps Script を組む前に、「書面の表が行として正しく分かれるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 行が正しく分かれ、規格と1回量も合っている | OCRとの連携に進む |
| 用法を言い換えた、数字を直した | 指示の書き方で直る。構成は有効 |
| 2段に書かれた薬が別の行に分かれる | Form Parser の表の結合の情報を使う段階で直る |
| 規格の小さな文字が読めない枚数が多い | スキャンの設定が先。 AIの問題ではない |
4行目が出たら、 スキャナの解像度を300dpiにして同じ書面を取り直し、読み取りがどこまで変わるかを見てください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 書面に無い薬が中止扱いになる | not_in_document と stop_stated を分ける。 消す前に問い合わせる |
臨時の書面のたびに not_in_document が並ぶ | 定期か臨時かを判定し、臨時の書面からは出さない |
書き方違いの同じ薬が added になる | 薬品の対応表を育てる。AIに言い換えさせない |
| 規格の小数点が消える | 300dpiでスキャンし、数字の欄は文字ごとの信頼度で見る |
| AIが数字を「正しそうな値」に直す | 指示で禁じ、直した値が入っていないかを evidence で確かめる |
| 2段に書かれた薬が2行になる | 表のセルの rowSpan を使ってまとめる |
| ファイル名と書面の利用者が違う | 突き合わせの前に止め、事務の担当者へ戻す |
| 承認の前に一覧が書き換わる | 承認の印が付いた行だけを反映する |
| 退院時の処方を前月と比べてしまう | 処方元が変わったら突き合わせず、看護職員が一覧を作り直す |
| 飲み合わせの注意をAIが書く | 指示で禁じる。医療の判断に見える文を記録に入れない |
上の2行が、この構成の失敗のほとんどです。 どちらも「今月の書面に無い」という同じ見た目から出発しています。書面の種類と処方元で意味を決める規則を持っているかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 入所者の氏名、生年月日、処方元の医療機関、飲んでいる薬の名前と量です。薬の名前から病気が推し量れるので、個人情報の中でもとくに慎重に扱う情報として設計します。
- 生成AIに渡す範囲を、表の書き起こしに必要な部分に限る … 氏名と住所は Apps Script で伏せ、利用者はIDで扱います。誰の薬かを知らなくても、表は項目に分けられます
- 処理する地域を決める … 公式のプロセッサ一覧で確認できた Form Parser の対応地域は、
us、eu、asia-southeast1などで、このとき確認した一覧には日本の地域がありませんでした。 どの地域で処理するかを、法人の個人情報の取扱いの方針と照らして先に決めてください - 服薬一覧への書き込みは承認の後だけにする … 読み取りの誤りが、確認の前に配薬に届く経路を作らないでください
- この構成は処方の判断を代替しません … 量や飲み合わせの適否は、医師と薬剤師が判断することです。施設の側でAIに判断させないことを、運用の決まりとして文書にしてください
- 書面の原本を残す … 疑問があったときに立ち返るのは、薬局から届いた書面です
- アクセスできる人を絞る … 確認用シートと一覧は、看護職員と事務の担当者だけが開けるようにします
誤りが起きた場合のリスクは、飲むはずの薬が配薬から外れることと、止めたはずの薬が出続けることの2つです。 前者は not_in_document を中止として扱うと起き、後者は stop_stated を見落とすと起きます。どちらも「書面に無い」の意味の取り違えから出ているので、そこだけは設計で守ります。
10まず何から始めるか
1週目:服薬一覧に処方元の列を足す
利用者ごとのシートに「処方元」の列を足し、処方元の一覧(どの医療機関の処方を、どの薬局が出すか)を作ります。200名すべてを一度に埋める必要はありません。定期の処方が多い順に、まず1フロア分から埋めます。
2週目:30枚で試す
先月の書面から30枚を選び、氏名を伏せて手元のAIサービスに貼り付け、表を項目に分けさせます。当時の一覧と見比べ、数字を直していないか、用法を言い換えていないかを最優先で見ます。
3週目:「載っていない」の扱いを決める
定期の書面に前月の薬が無いとき、誰が、どこへ、どう問い合わせるかを看護の責任者と決めます。 ここが決まらないうちに突き合わせを組むと、not_in_document は出るのに誰も動かない状態になります。あわせて、薬品の対応表の最初の版を過去の一覧から作ります。
4週目:取込フォルダから確認用シートまでをつなぐ
Apps Script で取込フォルダを見張り、Form Parser を呼び、表を項目に分けて確認用シートに書き出すところまで作ります。この時点では前月との突き合わせをせず、書き起こしの一覧だけを見ます。
2か月目: 前月の一覧との突き合わせと状態の判定を足し、承認の列を置きます。not_in_document と added の件数を毎週数えます。3か月目以降: 承認後の一覧への反映と掲示用シートを足し、1件12分が何分になったかを実測します。対応表に足す行がほとんど出なくなり、not_in_document の問い合わせが手順どおりに回るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser がOCRのテキストに加えてキーと値のペア(項目とチェックボックス)、表、一般的なエンティティを抽出すること。対応言語の一覧に日本語(ja)が手書きの対応ありとして載っていること。同期の処理が15ページまで、非同期が100ページまでであること。対応地域の一覧(us、eu、asia-southeast1 など) | Google Cloud: Processor list | 2026-10-07 |
| Form Parser がキーと値のペア、表、チェックボックス、一般的なエンティティを抽出すること | Google Cloud: Form Parser | 2026-10-07 |
formFields が fieldName と fieldValue を持つこと。表が headerRows と bodyRows で構成され、セルが位置と rowSpan・colSpan を持つこと。各要素の layout に textAnchor、boundingPoly、信頼度が付くこと | Google Cloud: Handle the processing response | 2026-10-07 |
| 対応形式が PDF、TIFF、JPEG、PNG などであること。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-07 |
| Form Parser の同期の処理が15ページまで、非同期が100ページまで、同期の処理のファイルサイズが40MBまでであること | Google Cloud: Document AI quotas and limits | 2026-10-07 |
構造化出力で output_config.format に json_schema を渡すこと。制約付きのデコードでスキーマに従う応答を返すこと。enum と required を使え、オブジェクトの additionalProperties は false にする必要があること | Claude API: Structured outputs | 2026-10-07 |
| Apps Script の1回の実行が6分まで、トリガーの実行時間の合計が個人のアカウントで1日90分、Google Workspace で1日6時間であること | Google Apps Script: Quotas for Google Services | 2026-10-07 |
| お薬手帳が相互作用や重複投与を防ぐ役割を持つこと。利用者に情報を提供する際に「調剤年月日」「薬品情報」「用法情報」その他必要な情報を提供すること。処方・調剤される医薬品が変更された場合等には、利用者及び医療関係者が認識しやすいよう注意事項欄に記載することが望ましいこと(「お薬手帳(電子版)の運用上の留意事項について」の一部改正について、令和3年10月25日 薬生総発1025第1号) | 厚生労働省: お薬手帳(電子版)の運用上の留意事項についての一部改正(PDF) | 2026-10-07 |
服薬情報の取扱いと、処方の変更を確かめる手順は、協力医療機関・協力薬局と施設の規程に従って決めてください。 本記事は各製品と厚生労働省の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0678)についてのご相談はこちらから。
