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 參數資源:

參數 Type 基數 Description
coverage 涵蓋範圍 1..* (必要) 用於建立文件成員和涵蓋範圍的 (涵蓋範圍) 資源
questionnaire 正式 0..* 要傳回之特定問卷的正式 URL (s) (可能包含版本)
order 資源 0..* 訂購資源 (DeviceRequest、ServiceRequest、MedicationRequest、Encounter、Appointment) 以建立內容
changedSince dateTime 0..1 如果存在,則只會傳回在此時間戳記之後變更的資源

參數驗證規則

至少必須提供下列其中一項 (除了必要的 之外coverage):

  • 一或多個questionnaire正式 URLs

  • 一或多個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)

操作會傳回包含一或多個套件套件的 FHIR 參數資源。每個套件套件都包含:

項目類型 基數 Description
問卷 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. 將所有內容一起封裝

    • 封裝所有資源 (每個資源僅包含一次)

    • 如果提供,則依changedSince時間戳記篩選

    • Outcome 如果遺失任何資源,將警告新增至

結果:準備進行轉譯的完整、獨立套件。

錯誤回應

400 錯誤的請求

請求驗證失敗時傳回。

{ "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 (未經授權)

當身分驗證憑證遺失或無效時傳回。

403 禁止

當已驗證的使用者缺少存取所請求資源的許可時傳回。

406 無法接受

當無法提供請求的內容類型時傳回。

409 衝突

發生版本或並行衝突時傳回。

410 Gone

當請求的資源永久刪除時傳回。

429 太多請求

超過速率限制時傳回。

500 內部伺服器錯誤

發生非預期的伺服器錯誤時傳回。

501 未實作

請求的操作尚未實作時傳回。

驗證規則

輸入驗證

  • coverage 參數為必要 (1..* 基數)

  • 至少order必須提供其中一個 questionnaire

  • 所有涵蓋範圍資源都必須是有效的 FHIR 資源

  • 所有訂單資源必須是有效的 FHIR 資源

  • 正式 URLs 必須正確格式化

  • changedSince 必須是有效的 ISO 8601 dateTime

QuestionnaireResponse驗證

  • status 必須適當 (in-progresscompletedamended)

  • 結構必須符合參考的問卷

  • basedOn 必須參考有效的訂單資源

  • subject 必須參考有效的病患資源

資源重複資料刪除

  • 每個資源只會在套件中出現一次

  • 例外狀況:可能同時包含相同資源的不同版本

  • 透過其正式 URL 和版本來識別資源

效能規格

指標 規格
資源計數限制 每個套件 500 個資源
套件大小限制 最多 5 MB

所需的許可

若要使用 $questionnaire-package操作,請確定您的 IAM 角色具有:

  • healthlake:QuestionnairePackage - 呼叫 操作

  • healthlake:ReadResource - 擷取問卷和相依資源

  • healthlake:SearchWithPost - 搜尋 QuestionnaireResponse和相關資源

FHIR 範圍上的 SMART

所需範圍下限:

  • SMART v1user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read

  • SMART v2user/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 路徑 Description
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 的患者生命值和診斷碼。

使用案例 2:擷取特定問卷版本

案例:供應商需要特定版本的問卷才能合規。

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

結果:傳回含所有相依性的確切版本 3.1.0 的 DME 請求問卷。

使用案例 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 */ } } ] }

結果:傳回多個套件套件,每個適用的問卷各一個。

與其他 Da Vinci IGs整合

涵蓋範圍需求探索 (CRD)

工作流程整合:

  • 供應商在其 EHR 中訂購服務

  • CRD 勾點觸發,檢查涵蓋範圍需求

  • 付款人回應,指出需要文件

  • 供應商呼叫 $questionnaire-package 以擷取文件表單

  • 供應商完成問卷

  • 文件是透過 PAS 或 CDex 提交

預先授權支援 (PAS)

工作流程整合:

  • 使用 $questionnaire-package 擷取文件需求

  • 使用所需的臨床資料完成 QuestionnaireResponse

  • 使用 Claim/$submit搭配已完成的 QuestionnaireResponse提交預先授權

  • 使用 檢查狀態 Claim/$inquire

臨床資料交換 (CDex)

工作流程整合:

  • 付款人請求申請其他文件

  • 提供者使用 $questionnaire-package 擷取結構化資料收集表單

  • 供應商完成 QuestionnaireResponse

  • 文件會透過 CDex 連接工作流程提交給付款人

故障診斷指南

問題:未傳回問卷

可能的原因:

  • 正式 URL 不符合資料存放區中的任何問卷

  • 訂單代碼未對應至付款人醫療政策中的任何問卷

  • 涵蓋範圍付款人沒有相關聯的問卷

解決方案:

  • 確認正式 URL 正確且問卷存在

  • 檢查訂單代碼 (CPT/HCPCS) 是否正確指定

  • 確認付款人組織已設定問卷

問題:套件中缺少相依性

可能的原因:

  • 參考的程式庫或 ValueSet 不存在於資料存放區中

  • 程式庫參考已中斷或不正確

  • ValueSet 擴展失敗

解決方案:

  • 檢查 Outcome 參數是否有資源遺失的相關警告

  • 驗證資料存放區中存在所有參考的資源

  • 確保 ValueSet URLs正確且可解決

問題:含 changedSince 的空套件

可能的原因:

  • 這是預期的行為 - 自指定的時間戳記以來未修改任何資源

解決方案:

  • 使用套件的快取版本

  • 移除changedSince參數以擷取完整套件

問題:未預先填入 QuestionnaireResponse

可能的原因:

  • 找不到現有的 QuestionnaireResponse

  • CQL Library 邏輯無法擷取所需的資料

  • 病患資料遺失或不完整

解決方案:

  • 這可能是預期的 - 並非所有問卷都有預先填入邏輯

  • 檢查資料存放區中是否存在病患資料

  • 檢閱 CQL Library 邏輯以了解資料擷取需求

最佳實務

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