기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 | 카디널리티 | 설명 |
|---|---|---|---|
coverage |
적용 범위 | 1..* (필수) | 문서에 대한 멤버 및 적용 범위를 설정하기 위한 적용 범위 리소스(들) |
questionnaire |
canonical | 0..* | 반환할 특정 설문 조사(들)의 정식 URL(들)(버전을 포함할 수 있음) |
order |
Resource | 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 파라미터 리소스를 반환합니다. 각 패키지 번들에는 다음이 포함됩니다.
| 입력 유형 | 카디널리티 | 설명 |
|---|---|---|
| 설문 조사 | 1 | 렌더링할 설문지 |
| QuestionnaireResponse | 0..1 | 미리 채워지거나 부분적으로 완료된 응답(해당하는 경우) |
| 라이브러리 | 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 - 진행 중이거나 완료된 기존 응답
-
-
모든 것을 함께 패키징합니다.
-
모든 리소스를 번들링합니다(각 리소스는 한 번만 포함됨).
-
제공된 경우
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 사라짐
요청된 리소스가 영구적으로 삭제되면 반환됩니다.
429 요청이 너무 많음
속도 제한을 초과하면 반환됩니다.
500 Internal Server Error
예기치 않은 서버 오류가 발생할 때 반환됩니다.
501 구현되지 않음
요청된 작업이 아직 구현되지 않은 경우 반환됩니다.
검증 규칙
입력 검증
-
coverage파라미터 필요(1..* 카디널리티) -
questionnaire또는 중 하나 이상을 제공해야order합니다. -
모든 적용 범위 리소스는 유효한 FHIR 리소스여야 합니다.
-
모든 주문 리소스는 유효한 FHIR 리소스여야 합니다.
-
정식 URLs 올바른 형식이어야 합니다.
-
changedSince는 유효한 ISO 8601 dateTime이어야 합니다.
QuestionnaireResponse 검증
-
status가 적절해야 함(in-progress,completed,amended) -
구조는 참조된 설문 조사와 일치해야 합니다.
-
basedOn는 유효한 주문 리소스를 참조해야 합니다. -
subject는 유효한 환자 리소스를 참조해야 합니다.
리소스 중복 제거
-
각 리소스는 번들에 한 번만 표시됩니다.
-
예외: 동일한 리소스의 다른 버전이 모두 포함될 수 있습니다.
-
리소스는 표준 URL 및 버전으로 식별됩니다.
성능 사양
| 지표 | 사양 |
|---|---|
| 리소스 수 제한 | 번들당 리소스 500개 |
| 번들 크기 제한 | 최대 5MB |
필수 권한
$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의 진단 코드로 미리 채워진, 항산기 치료 설문지가 포함된 패키지를 반환합니다.
사용 사례 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의 Dell 요청 설문지를 반환합니다.
사용 사례 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 작성
-
완료된 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 활용
자주 액세스하는 설문지의 경우 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 확장