View a markdown version of this page

HealthLake の FHIR $questionnaire-packageオペレーション - AWS HealthLake

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HealthLake の FHIR $questionnaire-packageオペレーション

$questionnaire-package オペレーションは、FHIR アンケートとそのアンケートのレンダリングと処理に必要なすべての依存関係を含む包括的なバンドルを取得します。このオペレーションでは、Da Vinci ドキュメントテンプレートとルール (DTR) 実装ガイドを実装し、ヘルスケアワークフローのドキュメント要件の動的フォームレンダリングを有効にします。

仕組み

  • リクエスト: カバレッジと注文コンテキストとともに、必要なアンケート (複数可) を識別するパラメータを送信します。

  • 取得: HealthLake はアンケートとすべての依存関係 (ValueSets、CQL ライブラリなど) を収集します。

  • パッケージ: すべてのリソースは標準化された形式でバンドルされます

  • 応答: レンダリングとデータ収集の準備ができた完全なパッケージが届きます。

ユースケース

  • 事前認可ドキュメント: 事前認可リクエストに必要な臨床情報を収集する

  • カバレッジ要件: 支払者カバレッジ要件を満たすために必要なドキュメントを収集する

  • 臨床データ交換: 支払者に送信するための臨床データを構築する

  • 動的フォーム: 事前入力された患者データと条件付きロジックを使用してアンケートをレンダリングする

API エンドポイント

POST /datastore/{datastoreId}/r4/Questionnaire/$questionnaire-package Content-Type: application/fhir+json

リクエストパラメータ

入力パラメータ

リクエスト本文には、次のパラメータを含む FHIR Parameters リソースが含まれている必要があります。

パラメータ タイプ カーディナリティ 説明
coverage カバレッジ 1..* (必須) ドキュメントのメンバーとカバレッジを確立するためのカバレッジリソース (複数可)
questionnaire canonical 0..* 返す特定のアンケートの正規 URL (複数可) (バージョンを含む場合があります)
order [リソース] 0..* コンテキストを確立するためにリソース (DeviceRequest、ServiceRequest、MedicationRequest、Encounter、Appointment) を注文する
changedSince dateTime 0..1 存在する場合、このタイムスタンプの後に変更されたリソースのみを返す

パラメータ検証ルール

次のいずれかを指定する必要があります (必須 に加えてcoverage)。

  • 1 つ以上のquestionnaire正規 URLs

  • 1 つ以上のorderリソース

有効なリクエストの組み合わせ:

  • coverage + questionnaire

  • coverage + order

  • coverage + questionnaire + order

リクエスト例

POST /datastore/example-datastore/r4/Questionnaire/$questionnaire-package Content-Type: application/fhir+json Authorization: Bearer <your-token> { "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { "resourceType": "Coverage", "id": "example-coverage", "status": "active", "beneficiary": { "reference": "Patient/example-patient" }, "payor": [{ "reference": "Organization/example-payer" }], "class": [{ "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/coverage-class", "code": "group" }] }, "value": "12345" }] } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0" }, { "name": "order", "resource": { "resourceType": "ServiceRequest", "id": "example-service-request", "status": "active", "intent": "order", "code": { "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "94660", "display": "Continuous positive airway pressure ventilation (CPAP)" }] }, "subject": { "reference": "Patient/example-patient" } } }, { "name": "changedSince", "valueDateTime": "2024-01-01T00:00:00Z" } ] }

レスポンスの形式

成功レスポンス (200 OK)

オペレーションは、1 つ以上のパッケージバンドルを含む FHIR Parameters リソースを返します。各パッケージバンドルには以下が含まれます。

エントリタイプ カーディナリティ 説明
アンケート 1 レンダリングするアンケート
QuestionnaireResponse 0..1 事前入力済みまたは部分的に完了したレスポンス (該当する場合)
[Library] (ライブラリ) 0..* 事前入力と条件付きロジックを含む CQL ライブラリ
ValueSet 0..* 拡張 ValueSets (<40 拡張の回答選択の場合)
例レスポンスの例
{ "resourceType": "Parameters", "parameter": [ { "name": "PackageBundle", "resource": { "resourceType": "Bundle", "id": "questionnaire-package-example", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle"] }, "type": "collection", "timestamp": "2024-03-15T10:30:00Z", "entry": [ { "fullUrl": "http://example.org/fhir/Questionnaire/home-oxygen-therapy", "resource": { "resourceType": "Questionnaire", "id": "home-oxygen-therapy", "url": "http://example.org/fhir/Questionnaire/home-oxygen-therapy", "version": "2.0", "status": "active", "title": "Home Oxygen Therapy Documentation", "item": [ { "linkId": "1", "text": "Patient diagnosis", "type": "choice", "answerValueSet": "http://example.org/fhir/ValueSet/oxygen-diagnoses" } ] } }, { "fullUrl": "http://example.org/fhir/Library/oxygen-prepopulation", "resource": { "resourceType": "Library", "id": "oxygen-prepopulation", "url": "http://example.org/fhir/Library/oxygen-prepopulation", "version": "1.0", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/library-type", "code": "logic-library" }] }, "content": [{ "contentType": "text/cql", "data": "bGlicmFyeSBPeHlnZW5QcmVwb3B1bGF0aW9u..." }] } }, { "fullUrl": "http://example.org/fhir/ValueSet/oxygen-diagnoses", "resource": { "resourceType": "ValueSet", "id": "oxygen-diagnoses", "url": "http://example.org/fhir/ValueSet/oxygen-diagnoses", "status": "active", "expansion": { "timestamp": "2024-03-15T10:30:00Z", "contains": [ { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J44.0", "display": "COPD with acute lower respiratory infection" }, { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J96.01", "display": "Acute respiratory failure with hypoxia" } ] } } }, { "fullUrl": "http://example.org/fhir/QuestionnaireResponse/example-prepopulated", "resource": { "resourceType": "QuestionnaireResponse", "id": "example-prepopulated", "questionnaire": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0", "status": "in-progress", "subject": { "reference": "Patient/example-patient" }, "basedOn": [{ "reference": "ServiceRequest/example-service-request" }], "item": [ { "linkId": "1", "text": "Patient diagnosis", "answer": [{ "valueCoding": { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J44.0", "display": "COPD with acute lower respiratory infection" } }] } ] } } ] } }, { "name": "Outcome", "resource": { "resourceType": "OperationOutcome", "issue": [{ "severity": "information", "code": "informational", "details": { "text": "Successfully retrieved questionnaire package" } }] } } ] }

オペレーションワークフロー

HealthLake がリクエストを処理する方法

を呼び出すと$questionnaire-package、HealthLake は次のステップを実行します。

  1. 患者と支払い者を特定する: coverageパラメータから患者と保険組織を抽出します。

  2. 適切なアンケートを見つけます

    • パラメータの場合questionnaire: 指定した正規 URL を使用します

    • パラメータ付きorder: 注文コード (CPT/HCPCS/LOINC) と支払者を照合して、適切なアンケートを見つけます

  3. 依存関係の収集: アンケートのレンダリングに必要なすべてを自動的に取得します。

    • CQL ライブラリ - 事前入力と条件付き質問のロジック

    • ValueSets - 選択肢への回答 (<40 オプションの場合は自動的に展開)

    • QuestionnaireResponse - 進行中の既存のレスポンスまたは完了したレスポンス

  4. すべてをまとめてパッケージ化:

    • すべてのリソースをバンドルします (各リソースは 1 回のみ含まれます)

    • 指定した場合のchangedSinceタイムスタンプによるフィルタリング

    • Outcome リソースがない場合に警告を に追加します

結果: レンダリング可能な完全で自己完結型のパッケージ。

エラーレスポンス

400 Bad Request

リクエストの検証が失敗したときに返されます。

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "error", "code": "required", "details": { "text": "At least one of 'questionnaire' or 'order' must be provided along with 'coverage'" } }] }

424 失敗した依存関係

依存リソースを取得できない場合に返されます。

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "warning", "code": "not-found", "details": { "text": "Referenced Library 'http://example.org/fhir/Library/missing-library' could not be retrieved" } }] }

401 Unauthorized

認証情報がないか無効である場合に返されます。

403 Forbidden

認証されたユーザーに、リクエストされたリソースへのアクセス許可がない場合に返されます。

406 使用できません

リクエストされたコンテンツタイプを指定できない場合に返されます。

409 Conflict

バージョンまたは同時実行の競合がある場合に返されます。

410 終了

リクエストされたリソースが完全に削除されたときに返されます。

429 Too Many Requests

レート制限を超えたときに返されます。

500 Internal Server Error

予期しないサーバーエラーが発生した場合に返されます。

501 未実装

リクエストされたオペレーションがまだ実装されていない場合に返されます。

検証ルール

入力の検証

  • coverage パラメータは必須です (1..* 基数)

  • 少なくとも 1 つの questionnaireまたは を指定orderする必要があります

  • すべてのカバレッジリソースは有効な FHIR リソースである必要があります

  • すべての注文リソースは有効な FHIR リソースである必要があります

  • 正規 URLs適切にフォーマットする必要があります

  • changedSince は有効な ISO 8601 dateTime である必要があります

QuestionnaireResponse の検証

  • status は適切である必要があります (in-progresscompletedamended)

  • 構造は参照されるアンケートと一致する必要があります

  • basedOn は有効な注文リソースを参照する必要があります

  • subject は有効な患者リソースを参照する必要があります

リソース重複排除

  • 各リソースはバンドルに 1 回のみ表示されます。

  • 例外: 同じリソースの異なるバージョンの両方が含まれる場合があります

  • リソースは正規 URL とバージョンによって識別されます

パフォーマンス仕様

メトリクス の仕様
リソース数の制限 バンドルあたり 500 リソース
バンドルサイズ制限 最大 5 MB

必要なアクセス許可

$questionnaire-package オペレーションを使用するには、IAM ロールに次のものがあることを確認します。

  • healthlake:QuestionnairePackage - オペレーションを呼び出すには

  • healthlake:ReadResource - アンケートと依存リソースを取得するには

  • healthlake:SearchWithPost - QuestionnaireResponse および関連リソースを検索するには

FHIR スコープでの SMART

最低限必要なスコープ:

  • SMART v1: user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read

  • SMART v2: user/Questionnaire.rs user/Library.rs user/ValueSet.rs user/QuestionnaireResponse.rs

重要な実装上の注意事項

リソース取得戦略

アンケート識別の優先度:

  • 正規 URL (questionnaireパラメータが指定されている場合) - 最高優先度

  • 注文分析 ( order パラメータが指定されている場合):

    • 注文コード (CPT、HCPCS、LOINC) を支払い医療ポリシーと照合する

    • カバレッジ支払者を使用して支払者固有のアンケートをフィルタリングする

    • 追加のコンテキストの理由コードを検討する

依存関係の解決

CQL ライブラリ:

  • アンケートリソースの cqf-library 拡張機能を介して取得

  • 依存ライブラリを タイプLibrary.relatedArtifactで再帰的に取得する depends-on

  • すべてのライブラリの依存関係がパッケージに含まれています

ValueSets:

  • 40 未満の概念が含まれている場合、自動的に拡張されます

  • より大きな ValueSets は拡張なしで含まれます

  • アンケートリソースとライブラリリソースの両方で参照される ValueSets が含まれています

QuestionnaireResponse の事前入力

オペレーションは、次の場合に事前入力されたデータを含む QuestionnaireResponse を返す場合があります。

  • 既存の進行中または完了したレスポンスが見つかった

  • 関連するライブラリの CQL ロジックは、患者レコードからデータを抽出できます

  • レスポンスが関連する注文とカバレッジにリンクされている

QuestionnaireResponse の検索条件:

検索パラメータ FHIR パス 説明
based-on QuestionnaireResponse.basedOn ServiceRequest または CarePlan へのリンク
patient QuestionnaireResponse.subject 対象である患者
questionnaire QuestionnaireResponse.questionnaire 回答中のアンケート

変更されたリソースのフィルタリング

changedSince パラメータが指定されている場合:

  • 指定されたタイムスタンプ後に変更されたリソースのみが含まれます

  • リソースが変更されていない場合、 は空のパッケージ200 OKで を返します。

  • 増分更新とキャッシュ戦略に役立ちます

  • タイムスタンプ比較でリソースmeta.lastUpdatedフィールドを使用する

複数のパッケージバンドル

オペレーションは、次の場合に複数のパッケージバンドルを返す場合があります。

  • 正規 URLs

  • 複数の注文で異なるアンケートが必要

  • 同じアンケートの異なるバージョンが適用される

各パッケージバンドルは、必要なすべての依存関係を含む自己完結型です。

一般的なユースケース

ユースケース 1: 事前承認ドキュメント

シナリオ: プロバイダーは、住宅用人工鼻の事前認可に関するドキュメントを収集する必要があります。

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Patient's insurance coverage */ } }, { "name": "order", "resource": { "resourceType": "ServiceRequest", "code": { "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "94660" }] } } } ] }

結果: EHR から患者のバイタルと診断コードがあらかじめ入力されている、O2 度治療用アンケートを含むパッケージを返します。

ユースケース 2: 特定のアンケートバージョンを取得する

シナリオ: コンプライアンスのためにプロバイダーに特定のバージョンのアンケートが必要です。

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/dme-request|3.1.0" } ] }

結果: すべての依存関係を持つ DME リクエストアンケートのバージョン 3.1.0 を正確に返します。

ユースケース 3: 更新を確認する

シナリオ: プロバイダーは、前回の取得以降に更新されたアンケートリソースがあるかどうかを確認したいと考えています。

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/medication-request" }, { "name": "changedSince", "valueDateTime": "2024-03-01T00:00:00Z" } ] }

結果: 2024 年 3 月 1 日以降に変更されたリソースのみ、または何も変更されていない場合は空のパッケージを返します。

ユースケース 4: 複数の注文

シナリオ: プロバイダーは、異なるアンケートを必要とする可能性のある複数のサービスリクエストを送信します。

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "order", "resource": { /* ServiceRequest for imaging */ } }, { "name": "order", "resource": { /* ServiceRequest for DME */ } } ] }

結果: 該当するアンケートごとに 1 つずつ、複数のパッケージバンドルを返します。

他の Da Vinci IGs との統合

カバレッジ要件検出 (CRD)

ワークフロー統合:

  • プロバイダーが EHR でサービスを注文する

  • CRD フックの起動、カバレッジ要件の確認

  • 支払者がドキュメントが必要であることを示す応答

  • プロバイダーが $questionnaire-packageを呼び出してドキュメントフォームを取得する

  • プロバイダーがアンケートを完了する

  • ドキュメントが PAS または CDex 経由で送信される

事前認可サポート (PAS)

ワークフロー統合:

  • $questionnaire-package を使用してドキュメント要件を取得する

  • 必要な臨床データを使用して QuestionnaireResponse を完了する

  • 記入済みの QuestionnaireResponse Claim/$submit で を使用して事前認可を送信する

  • を使用してステータスを確認する Claim/$inquire

臨床データ交換 (CDex)

ワークフロー統合:

  • 支払者がクレームの追加ドキュメントをリクエストする

  • プロバイダーが $questionnaire-packageを使用して構造化データ収集フォームを取得する

  • プロバイダーが QuestionnaireResponse を完了する

  • ドキュメントは CDex アタッチメントワークフローを介して支払者に送信されます

トラブルシューティングガイド

問題: アンケートが返されない

考えられる原因:

  • 正規 URL がデータストア内のアンケートと一致しません

  • 注文コードが支払者の医療ポリシーのアンケートにマッピングされない

  • カバレッジ支払者にアンケートが関連付けられていない

解決方法:

  • 正規 URL が正しく、アンケートが存在することを確認する

  • 注文コード (CPT/HCPCS) が正しく指定されていることを確認します。

  • 支払者の組織にアンケートが設定されていることを確認します。

問題: パッケージに依存関係がない

考えられる原因:

  • 参照ライブラリまたは ValueSet がデータストアに存在しません

  • ライブラリ参照が壊れているか正しくない

  • ValueSet の拡張に失敗しました

解決方法:

  • 不足しているリソースに関する警告については、 Outcomeパラメータを確認してください。

  • 参照されるすべてのリソースがデータストアに存在することを確認する

  • ValueSet URLs が正しく解決可能であることを確認する

問題: changedSince のパッケージが空

考えられる原因:

  • これは予想される動作です - 指定されたタイムスタンプ以降にリソースが変更されていません

解決方法:

  • キャッシュされたバージョンのパッケージを使用する

  • changedSince パラメータを削除して完全なパッケージを取得する

問題: QuestionnaireResponse が事前に入力されていません

考えられる原因:

  • 既存の QuestionnaireResponse が見つかりません

  • CQL ライブラリロジックが必要なデータを抽出できませんでした

  • 患者データが欠落しているか不完全である

解決方法:

  • これは想定されている場合があります。すべてのアンケートに事前入力ロジックがあるわけではありません。

  • データストアに患者データが存在することを確認する

  • データ抽出要件について CQL ライブラリロジックを確認する

ベストプラクティス

1. バージョンで正規 URLs を使用する

特定のアンケートをリクエストするときは、常にバージョン番号を指定します。

{ "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/dme|2.1.0" }

理由: 一貫性を確保し、アンケートが更新されたときの予期しない変更を防ぎます。

2. changedSince for Performance を活用する

頻繁にアクセスchangedSinceされるアンケートの場合は、 を使用してデータ転送を最小限に抑えます。

{ "name": "changedSince", "valueDateTime": "2024-03-10T15:30:00Z" }

理由: 更新されたリソースのみを取得することで、レイテンシーと帯域幅の使用量を削減します。

3. 完全なカバレッジ情報を含める

アンケートを正しく選択できるように、包括的なカバレッジの詳細を提供します。

{ "name": "coverage", "resource": { "resourceType": "Coverage", "beneficiary": { "reference": "Patient/123" }, "payor": [{ "reference": "Organization/payer-abc" }], "class": [{ /* Group/plan information */ }] } }

理由: HealthLake が支払者固有のアンケートと要件を特定するのに役立ちます。

  • Claim/$submit - 完成したドキュメントを使用して事前承認リクエストを送信する

  • Claim/$inquire - 送信された事前認可のステータスを確認する

  • ValueSet/$expand - ValueSets を展開して回答を選択する