翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 は次のステップを実行します。
-
患者と支払い者を特定する:
coverageパラメータから患者と保険組織を抽出します。 -
適切なアンケートを見つけます。
-
パラメータの場合
questionnaire: 指定した正規 URL を使用します -
パラメータ付き
order: 注文コード (CPT/HCPCS/LOINC) と支払者を照合して、適切なアンケートを見つけます
-
-
依存関係の収集: アンケートのレンダリングに必要なすべてを自動的に取得します。
-
CQL ライブラリ - 事前入力と条件付き質問のロジック
-
ValueSets - 選択肢への回答 (<40 オプションの場合は自動的に展開)
-
QuestionnaireResponse - 進行中の既存のレスポンスまたは完了したレスポンス
-
-
すべてをまとめてパッケージ化:
-
すべてのリソースをバンドルします (各リソースは 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-progress、completed、amended) -
構造は参照されるアンケートと一致する必要があります
-
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 を展開して回答を選択する