

医療APIによる患者教育スライドの自動化(2026年版)
患者教育スライドの自動化とは、承認済みかつ匿名化されたソーステキスト(退院指示、手技説明、臨床ガイドライン)をコンテンツリポジトリからバックエンドジョブが読み取り、2Slides APIを通じてスライドデッキに変換することを指します。Fast PPTのgenerateは、1ページあたり10クレジットで、状態ごと・言語ごとに編集可能なPPTXを生成します。8ページのデッキなら80クレジット、約0.20ドルです。create-pdf-slidesとgenerate-narrationを組み合わせると、ナレーション付きのスタッフ研修用デッキが作成できます。これは病院の教育チーム、デジタルヘルス企業、メドコムエージェンシー向けに設計されています。
主なポイント
- 1つの承認済みソース文書から、
responseLanguageの値を変えるだけで言語ごとに1つのデッキが生成されます。2Slidesはスペイン語、ベトナム語、アラビア語を含む20以上の言語に対応。 - 8ページのFast PPT患者用デッキは80クレジット、約0.20ドル(5ドルのスターターパックの場合)。月500デッキなら40,000クレジットで、80ドルのパックに相当。
- ナレーション付きの10ページスタッフ研修デッキは、画像デザインスライドで1,010クレジット、ナレーションで2,100クレジット、合計約7.78ドル。
userInputには承認済みかつ匿名化されたテキストのみを入力。患者名、MRN、誕生日は含みません。すべてのjobId、ソースバージョン、レビュアーの判断は監査テーブルに記録。- 2SlidesはHIPAA認証を主張せず、本記事は法的助言ではありません。コンプライアンス管理はユーザー側で実装・記録してください。
対象ユーザー
病院システムで患者教育を担当している方、デジタルヘルス企業でコンテンツ管理をしている方、メドコムエージェンシーで資料制作をしている方。課題は共通です:ガイドラインが変わると、6言語×40状態分のデッキが一斉に古くなり、修正できる人は診療中。承認済みソースからデッキを再生成し、臨床レビュアーに回すバックエンドジョブが、手動再作成をなくしつつレビューは維持します。
ソーステキストが未承認、または患者固有情報をプロンプトに入れる必要がある場合は、このレシピは適しません。制御されたコンテンツを大規模に公開するもので、個別のケアプランを生成するものではありません。
ワークフロー概要
| ステップ | ツール | 内容 | 2Slidesエンドポイント / クレジット |
|---|---|---|---|
| 1 | シークレットマネージャー、バックエンドサービス | APIキーをサーバー側に保管し、プロンプトに入るテキストを定義 | GET /api/v1/echo(認証チェック無料) |
| 2 | コンテンツリポジトリ(Git、CMS、DAM) | 承認済みかつ匿名化されたソーステキスト(バージョンスタンプ・チェックサム付き) | なし |
| 3 | バックエンドジョブ | 落ち着いた臨床テンプレートを選び、状態と言語ごとに1デッキ生成 | GET /api/v1/themes/search(無料)、POST /api/v1/slides/generate(10クレジット/ページ) |
| 4 | ジョブランナー+レビューデータベース | ポーリングしてPPTXをダウンロード、jobId・ソースバージョンと共に保存、レビュー待ちにマーク | GET /api/v1/jobs/{id}(無料) |
| 5 | 同じジョブ、研修トラック | 画像デザインのスタッフ研修デッキ作成、続けてオンボーディング動画用ナレーション生成 | create-pdf-slides(2K解像度で10+100クレジット/ページ)、generate-narration(210クレジット/ページ) |
| 6 | 臨床レビュアー、公開担当 | 承認または却下、バージョンスタンプ付与、ポータルやLMSに公開 | download-slides-pages-voices(PNG+WAVの無料ZIP) |
ステップ1:コンプライアンス境界を設定しAPIキーはサーバー側に保持
コードを書く前に、ネットワーク外に出るuserInputのテキスト範囲を明確にします。患者教育では、承認済みの一般向けコンテンツ(状態説明、手技説明、指示)に限定し、特定の患者を記述しません。HIPAAプライバシールールはhttps://www.hhs.gov/hipaaに記載。プライバシー担当者が第三者生成サービスのポリシー適合を判断してください。本記事はその代替ではありません。
APIキーは2slides.com/apiで取得。API Keysタブで500クレジットの無料キーが発行されます。これは8ページのテストデッキ約6セット分に相当。キーはシークレットマネージャーやサーバー環境変数に保管し、ブラウザやモバイルアプリ、共有ノートには絶対に置かないでください。

図1:2slides.comのAPIリファレンスページ。APIキーはサーバー側に保持する旨のセキュリティ注意を含む。
ジョブを実行するサーバーからキーを検証:
curl -s https://2slides.com/api/v1/echo \
-H "Authorization: Bearer $SLIDES_API_KEY"認証済みレスポンスが返れば、資格情報は正しく設定されています。次はコンテンツへ。
ステップ2:承認済みかつ匿名化されたソースコンテンツをバージョンスタンプ付きで準備
生成ジョブはチャットウィンドウではなくレコードから読み込みます。最小限のソースレコードは承認テキスト、バージョン、承認機関を含み、どの言葉からデッキが作られたか追跡可能です。
{
"slug": "heart-failure-discharge",
"title": "心不全入院後の退院時の注意",
"version": "2026.09.1",
"approved_by": "臨床教育委員会",
"approved_on": "2026-09-03",
"reading_level": "小学校6年生相当",
"approved_text": "心不全とは心臓のポンプ機能が十分でない状態です。退院後は毎朝体重を測ってください… 1日で3ポンド、1週間で5ポンド増えたらケアチームに連絡を…"
}安全に送信するための3つのルール:
- PHI(個人識別情報)は絶対に含めない。 名前、MRN、誕生日、予約日など個人を特定できる情報は不可。MRNや日付パターンの正規表現チェックを毎回実行し、失敗したらジョブをブロック。
- 承認済みテキストのみ。 ジョブは
approved_textフィールドを読み、レコードのステータスがapprovedであることを確認。ドラフトは無視。 - わかりやすい言葉で。 Fast PPTはテンプレートのプレースホルダーに合わせて文章を調整するため、小学校6年生レベルの文章が適切。
ステップ3:Fast PPTで多言語患者教育資料を生成
テンプレートは一度選択。落ち着いた臨床的な見た目を検索し、返されたthemeIdを設定に保存:
curl -s "https://2slides.com/api/v1/themes/search?query=healthcare&limit=5" \
-H "Authorization: Bearer $SLIDES_API_KEY"query=medicalも試してください。高コントラスト、大きな文字、複雑なインフォグラフィックなしが望ましい。患者用デッキは待合室のスマホや看護師ステーションで印刷されるためです。
言語ごとに1デッキ生成。英語のソースは同じで、responseLanguageだけ変えます。複数ジョブをバッチで送るためmode: "async"を指定。
curl -s -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "心不全入院後の退院時の注意。心不全とは心臓のポンプ機能が十分でない状態です。退院後は毎朝朝食前に体重を測ってください。薬は薬剤シートに記載の通り正確に服用してください。塩分はケアチームの指示量に制限してください。1日で3ポンド、1週間で5ポンド増えた場合、息切れが悪化した場合、脚がむくんだ場合はケアチームに連絡してください。ソースバージョン2026.09.1、臨床教育委員会によるレビュー済み。",
"themeId": "<themes/searchで得たthemeId>",
"responseLanguage": "Spanish",
"mode": "async"
}'レスポンスは{ "jobId": "..." }。同様に"Vietnamese", "Arabic", "Simplified Chinese"など対応言語で繰り返し。言語コードではなく言語名を渡すこと。"es"は不可、"Spanish"が正しい。

図2:generateエンドポイントのドキュメント。responseLanguageと20以上の対応言語を示す。
5~10秒ごとにポーリングし、ジョブがsuccessまたはfailedになるまで待つ:
curl -s https://2slides.com/api/v1/jobs/<jobId> \
-H "Authorization: Bearer $SLIDES_API_KEY"完了するとPPTXのdownloadUrlが返る。generateは1キーあたり1分間に6リクエスト、jobs/{id}は10リクエストのレート制限あり。10言語なら10回の送信を10秒間隔で行い、各デッキは約30秒で返る。
ステップ4:Pythonでレビューキューを構築(生成、保存、承認)
以下のジョブは1つの承認済みソースレコードを読み込み、言語ごとにデッキを生成、PPTXをダウンロードし、deck_reviewsテーブルにpending_review状態で行を追加。公開は行わず、レビュアー(バイリンガル臨床医または認定医療翻訳者)がファイルを確認後にapprove()を呼び出します。
import hashlib
import json
import os
import sqlite3
import time
import requests
API = "https://2slides.com/api/v1"
HEADERS = {
"Authorization": f"Bearer {os.environ['SLIDES_API_KEY']}",
"Content-Type": "application/json",
}
# GET /api/v1/themes/search?query=healthcareで選択し設定に保存したもの
THEME_ID = os.environ["CLINICAL_THEME_ID"]
LANGUAGES = ["English", "Spanish", "Vietnamese", "Arabic"]
db = sqlite3.connect("patient_education.db")
db.execute("""
CREATE TABLE IF NOT EXISTS deck_reviews (
job_id TEXT PRIMARY KEY,
condition_slug TEXT,
language TEXT,
source_version TEXT,
source_sha256 TEXT,
theme_id TEXT,
file_path TEXT,
status TEXT,
reviewer TEXT,
reviewed_at TEXT,
created_at TEXT
)""")
def now():
return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
def assert_no_phi(text):
# 最小限のガード。独自パターンや上流の人間チェックを追加推奨。
import re
if re.search(r"\bMRN\b|\b\d{7,10}\b|\b\d{1,2}/\d{1,2}/\d{2,4}\b", text):
raise ValueError("ソーステキストがPHIパターンチェックに失敗しました")
def submit(source, language):
body = {
"userInput": source["approved_text"],
"themeId": THEME_ID,
"responseLanguage": language,
"mode": "async",
}
r = requests.post(f"{API}/slides/generate", headers=HEADERS, json=body, timeout=60)
r.raise_for_status()
return r.json()["jobId"]
def wait(job_id):
while True:
r = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
job = r.json()
if job["status"] == "success":
return job["downloadUrl"]
if job["status"] == "failed":
raise RuntimeError(f"job {job_id} が失敗しました")
time.sleep(8) # 5~10秒ごとにポーリング
def download(url, path):
os.makedirs(os.path.dirname(path), exist_ok=True)
with requests.get(url, stream=True, timeout=120) as r:
r.raise_for_status()
with open(path, "wb") as f:
for chunk in r.iter_content(65536):
f.write(chunk)
def enqueue_for_review(source):
if source.get("status") != "approved":
raise ValueError("承認済みソースレコードのみ生成可能です")
assert_no_phi(source["approved_text"])
digest = hashlib.sha256(source["approved_text"].encode("utf-8")).hexdigest()
for language in LANGUAGES:
job_id = submit(source, language)
url = wait(job_id)
path = f"decks/{source['slug']}/{source['version']}/{language}_{job_id}.pptx"
download(url, path)
db.execute(
"INSERT INTO deck_reviews VALUES (?,?,?,?,?,?,?,?,?,?,?)",
(job_id, source["slug"], language, source["version"], digest,
THEME_ID, path, "pending_review", None, None, now()),
)
db.commit()
time.sleep(10) # 1キーあたり6リクエスト/分以下に抑える
def approve(job_id, reviewer):
db.execute(
"UPDATE deck_reviews SET status='approved', reviewer=?, reviewed_at=? WHERE job_id=?",
(reviewer, now(), job_id),
)
db.commit()
def reject(job_id, reviewer):
db.execute(
"UPDATE deck_reviews SET status='rejected', reviewer=?, reviewed_at=? WHERE job_id=?",
(reviewer, now(), job_id),
)
db.commit()
if __name__ == "__main__":
with open("sources/heart-failure-discharge.json", encoding="utf-8") as f:
enqueue_for_review(json.load(f))重要な設計ポイントは2つ。ファイルパスとDB行にソースバージョンとjobIdを含め、レビュアーが「このスライドはどの言葉から作られたか」を常に答えられること。そしてスクリプトに公開処理を含めず、公開はstatus = 'approved'の行のみを参照して行うこと。
ステップ5:ナレーション付き臨床スタッフ研修デッキを作成
患者用デッキはFast PPT経路のまま、看護師や教育者がPowerPointで編集・印刷します。スタッフ研修は新入社員がオンボーディング時に視聴する動画が必要なため、画像デザインスライド+音声のcreate-pdf-slides→generate-narration連携を使います。同じAPIキーとコンプライアンス境界で。
承認済みプロトコルテキストを送信。page: 0でスライド数はプランナーが選択可能。resolution: "2K"で1ページあたり100クレジットに抑制。
curl -s -X POST https://2slides.com/api/v1/slides/create-pdf-slides \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "インサービス:入院病棟での手指衛生とPPEの着脱手順。承認済みプロトコルバージョン2026.09。<承認済みプロトコルテキスト>",
"designStyle": "落ち着いた臨床研修デッキ、柔らかい青と白、大きく読みやすい文字、シンプルな線画アイコン、患者写真なし",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 0,
"contentDetail": "standard",
"responseLanguage": "English"
}'前述のようにjobs/{jobId}をポーリング。デッキがsuccessになったら、そのジョブでナレーションをリクエスト:
curl -s -X POST https://2slides.com/api/v1/slides/generate-narration \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobId": "<create-pdf-slidesのjobId>",
"mode": "single",
"speakerName": "Clinical Educator",
"voice": "Kore",
"contentMode": "standard",
"includeIntro": true
}'ナレーションは非同期のみで、1ページあたり210クレジット。完了後、POST /api/v1/slides/download-slides-pages-voicesに{ "jobId": "..." }を送ると、ページごとのPNG+WAVファイルの無料ZIPが返り、FFmpegでMP4に結合するかLMSに渡します。ナレーション原稿もスライドと同じレビュアーがチェック。音声の誤りも誤情報です。コンテンツ構成についてはAIで研修デッキを作る方法、PDFがある場合はPDFからスライドへのワークフローを参照。
ステップ6:患者教育スライド自動化の公開、バージョン管理、監査
公開は生成API呼び出しではなくDBクエリ。公開担当者はstatus = 'approved'の行を選び、PPTX(またはPDF)を患者ポータル、キオスク、LMSにコピーし、公開ページにソースバージョン、承認日、言語のスタンプを押す。ソースレコードが2026.10.1に更新されると、全言語で再生成され、古い行はsupersededにマークされ、レビュアーキューが再び埋まる。
deck_reviewsテーブルは監査ログ。各デッキについて、品質管理チームが知りたい「どのソースバージョンか」「どのチェックサムか」「どのテンプレートか」「どのjobIdか」「誰がいつレビューしたか」を答えます。記録ポリシーに従い保管してください。
参考スタイルの選び方
Fast PPTテンプレートにブランドイメージが合わない場合、画像デザイン経路で参考資料からデザインシステムを派生可能。2Slidesギャラリーには実際の参考デッキがあり、referenceImageUrlとしてcreate-like-thisに渡すか、designStyleプロンプトの参考に使えます。これらはAPI出力ではなく参考用デッキです。

図3:「The Future of Wellness 2025 Edition」タイトルスライド。柔らかく低コントラストな医療系スタイルでreferenceImageUrlに適する。

図4:同デッキのコンテンツスライド。抑えた配色で臨床情報の可読性を確保。

図5:ギャラリー詳細ページ。スライド単位のプレビューとPPT/PDFダウンロード。ここでスライド画像URLをコピーし参考資料に使える。
多くの病院チームにとっては、自社の承認済みブランドスライドが最良の参考資料。公開URLにホストし、referenceImageUrlとして渡せば、すべてのスタッフデッキがそのデザインシステムを継承。
費用の目安
現実的な月間ボリューム例。患者用デッキは8ページのFast PPT、スタッフ研修デッキは10ページの2K画像デザイン+ナレーション付き。
| 項目 | 1件あたりクレジット | Tier A: 患者用20デッキ+研修2デッキ | Tier B: 患者用500デッキ+研修10デッキ |
|---|---|---|---|
| 患者用デッキ(8ページ、Fast PPT) | 80 | 1,600 | 40,000 |
| スタッフ研修デッキ(10ページ、2K画像) | 1,010 | 2,020 | 10,100 |
| ナレーション(10ページ) | 2,100 | 4,200 | 21,000 |
| 合計クレジット | 7,820 | 71,100 | |
| 概算USD | $19.55($0.0025/クレジット、10,000クレジット$22.50パック相当) | $142.20($0.002/クレジット、40,000クレジット$80パック相当) |
Tier Aは10状態×2言語+月2本のインサービス動画。Tier Bは50状態×10言語+月10本の動画で、多施設システム相当。クレジットは従量課金制。Proプランは月10,000クレジット追加だがAPI利用に必須ではない。
このユースケースにFast PPTと画像デザインスライドのどちらを使うべきか?
| ニーズ | 利用API | 理由 |
|---|---|---|
| 看護師が編集・印刷する患者用配布資料 | generate(Fast PPT) | ネイティブ編集可能PPTX、10クレジット/ページ、1デッキ約30秒 |
| 同じ内容を10言語で用意 | generate + responseLanguage | ソース1つ、言語ごとにパラメータ変更のみ |
| スタッフ向けオンボーディング動画 | create-pdf-slides → generate-narration | 画像デザインのみナレーション対応。PNG+WAVのZIPでMP4作成可能 |
| 病院ブランドイメージに完全準拠したデッキ | create-like-this + referenceImageUrl | 承認済みスライドからデザインシステムを派生 |
Fast PPTはナレーション不可。低リテラシー向けに音声が必要な患者用デッキは画像デザイン経路で、1ページ100クレジット+ナレーション210クレジット。PDF+画像で返るため編集不可。
よくある落とし穴
- PHIが二次的なフィールドから漏れる。 ガイドラインの「症例紹介」段落に実患者情報が含まれることも。
userInputに連結するすべてのフィールドでパターンチェックを行い、上流で人間による匿名化を必ず実施。 - 再生成バーストでレート制限に引っかかる。
generate、create-pdf-slides、generate-narrationは1キーあたり1分間に6リクエスト。送信は10秒間隔でキューイング。50状態×10言語の再生成は500ジョブ、約84分かかるため夜間バッチに適切。 - APIキーをフロントエンドやノートに置く。 キーはサーバー環境変数に保持。共有ドキュメントにキーが出たらすぐにローテーション。
- Fast PPTジョブにナレーションを試みる。
generate-narrationはgenerateのjobIdを拒否。音声が必要ならcreate-pdf-slidesかcreate-like-thisを使う。 - 言語をコードで渡す。
responseLanguageは"Vietnamese"や"Traditional Chinese"など言語名を受け付け、"vi"などコードは不可。 - 40ページのガイドラインを丸ごと貼る。 長すぎる入力は密で雑多なスライドに。まず6~10の患者向けポイントに要約するか、画像デザイン経路で
page: 0を指定しプランナーに枚数を選ばせる。
よくある質問
患者教育コンテンツをAIプレゼンAPIに送っても安全ですか?
承認済みで一般向け、PHIを含まない内容なら適切です。「心不全患者向け退院指示」はPHIなしですが、特定患者名の記載はNG。PHIチェックは自動化し上流で行い、プライバシー担当者を巻き込んでください。2SlidesはHIPAA認証を主張せず、本記事は法的助言ではありません。
多言語患者教育資料はどの言語で生成可能ですか?
2SlidesはresponseLanguageで20以上の出力言語をサポート。英語、スペイン語、アラビア語、ポルトガル語、ベトナム語、簡体字中国語、繁体字中国語、ヒンディー語、韓国語、ロシア語、フランス語、ドイツ語など。ISOコードではなく言語名を渡してください。出力は初稿として、バイリンガル臨床医や認定医療翻訳者が公開前にレビューしてください。
患者向けデッキもスタッフ研修デッキのようにナレーションできますか?
はい、ただし画像デザイン経路のみです。患者用デッキをFast PPTではなくcreate-pdf-slides(2K解像度で1ページ100クレジット)で生成し、続けてgenerate-narration(1ページ210クレジット)を呼び出します。6ページのナレーション付き患者説明は10 + 600 + 1,260 = 1,870クレジット、約4.68ドル。Fast PPTジョブはナレーション不可。
ガイドライン更新を全言語にどう反映しますか?
ソースレコードのバージョンを上げ、古い行をsupersededにマークし、ジョブを再実行。各言語に新しいjobIdと新バージョンを含むファイルパス、pending_review行が作られます。公開スタンプはレビュアー承認時のみ更新されるため、患者は未レビューの更新を見ず、監査ログで言語ごとの切り替え時期がわかります。
他の医療プレゼン生成APIと比べてどうですか?
GammaのAPI(developers.gamma.app)も類似の自動化を提供しますが、APIキー発行にProプランが必要です。一方2Slidesは無料アカウントでも500クレジット付きのキーが発行され、病院ITのパイロットが購入前に可能。どちらも第三者サービスなので匿名化ルールは同様に適用されます。本比較は2Slidesチームによるものです。
次のステップ
患者教育スライド自動化は、承認済みソースレコード、言語ごとに1デッキ生成するジョブ、公開を制御するレビューキューという、少量のコードとガバナンスの組み合わせです。
- 2slides.com/apiでAPIキーを取得。500クレジットで8ページテストデッキ約6セット分。
- ハブ記事チーム別AIプレゼンAPI活用例で他のレシピも参照。
- 関連記事:医療・ヘルスケア向けAIプレゼン(本ジョブの手動ワークフロー対比)、AI音声付き企業研修動画(ナレーション付きインサービスデッキの制作側)。
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free