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 카디널리티 설명
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는 다음 단계를 수행합니다.

  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 사라짐

요청된 리소스가 영구적으로 삭제되면 반환됩니다.

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 확장