View a markdown version of this page

HealthLake에 대한 FHIR $inquire 작업 - AWS HealthLake

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

HealthLake에 대한 FHIR $inquire 작업

$inquire 작업을 통해 이전에 제출한 사전 권한 부여 요청의 상태를 확인할 수 있습니다. 이 작업은 Da Vinci 사전 승인 지원(PAS) 구현 가이드를 구현하여 현재 권한 부여 결정을 검색하는 표준화된 FHIR 기반 워크플로를 제공합니다.

작동 방식

  • 쿼리 제출: 확인하려는 클레임과 지원 정보가 포함된 FHIR 번들을 보냅니다.

  • 검색: HealthLake는 데이터 스토어에서 해당 ClaimResponse를 검색합니다.

  • 검색: 가장 최근 권한 부여 상태가 검색됩니다.

  • 응답: 현재 권한 부여 상태(대기열 있음, 승인됨, 거부됨 등)의 즉각적인 응답을 받습니다.

참고

$inquire는 기존 권한 부여 상태를 검색하는 읽기 전용 작업입니다. 데이터 스토어의 리소스는 수정하거나 업데이트하지 않습니다.

API 엔드포인트

POST /datastore/{datastoreId}/r4/Claim/$inquire Content-Type: application/fhir+json

요청 구조

번들 요구 사항

요청은 다음을 포함하는 FHIR 번들 리소스여야 합니다.

  • Bundle.type: 이어야 함 "collection"

  • Bundle.entry: 다음을 사용하여 정확히 하나의 클레임 리소스를 포함해야 합니다.

    • use = "preauthorization"

    • status = "active"

  • 참조 리소스: 클레임에서 참조하는 모든 리소스가 번들에 포함되어야 합니다.

Query-by-Example

입력 번들의 리소스는 검색 템플릿 역할을 합니다. HealthLake는 제공된 정보를 사용하여 해당 ClaimResponse를 찾습니다.

필수 리소스

Resource 카디널리티 프로필 설명
클레임 1 PAS 클레임 문의 문의하려는 사전 권한 부여
환자 1 PAS 수혜자 환자 환자 인구통계 정보
조직(보험사) 1 PAS 보험 회사 조직 보험 회사
조직(제공자) 1 PAS 요청 조직 요청을 제출한 의료 서비스 제공자

중요 검색 기준

HealthLake는 다음을 사용하여 ClaimResponse를 검색합니다.

  • 클레임의 환자 참조

  • 클레임의 보험 회사 참조

  • 클레임의 공급자 참조

  • 클레임에서 생성된 날짜(시간 필터)

환자별 쿼리만

모든 문의는 특정 환자와 연결되어야 합니다. 환자 식별이 없는 시스템 전체 쿼리는 허용되지 않습니다.

요청 예제

POST /datastore/example-datastore/r4/Claim/$inquire Content-Type: application/fhir+json Authorization: Bearer <your-token> { "resourceType": "Bundle", "id": "PASClaimInquiryBundleExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle"] }, "identifier": { "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER", "value": "5269368" }, "type": "collection", "timestamp": "2005-05-02T14:30:00+05:00", "entry": [ { "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample", "resource": { "resourceType": "Claim", "id": "MedicalServicesAuthorizationExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"] }, "status": "active", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" }] }, "use": "preauthorization", "patient": { "reference": "Patient/SubscriberExample" }, "created": "2005-05-02T11:01:00+05:00", "insurer": { "reference": "Organization/InsurerExample" }, "provider": { "reference": "Organization/UMOExample" } } }, { "fullUrl": "http://example.org/fhir/Patient/SubscriberExample", "resource": { "resourceType": "Patient", "id": "SubscriberExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"] }, "name": [{ "family": "SMITH", "given": ["JOE"] }], "gender": "male" } }, { "fullUrl": "http://example.org/fhir/Organization/UMOExample", "resource": { "resourceType": "Organization", "id": "UMOExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"] }, "name": "Provider Organization" } }, { "fullUrl": "http://example.org/fhir/Organization/InsurerExample", "resource": { "resourceType": "Organization", "id": "InsurerExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"] }, "name": "Insurance Company" } } ] }

응답 형식

성공 응답(200 OK)

다음이 포함된 PAS 쿼리 응답 번들을 받게 됩니다.

  • 현재 권한 부여 상태의 ClaimResponse, 검색 기준과 일치하는 경우 여러 ClaimResponse

  • 요청의 모든 원본 리소스(되돌아옴)

  • 응답이 어셈블된 시간의 타임스탬프

가능한 ClaimResponse 결과

결과 설명
queued 권한 부여 요청이 아직 검토 보류 중입니다.
complete 권한 부여 결정(disposition승인/거부 확인)
error 처리 중에 오류가 발생했습니다.
partial 부분 권한 부여
{ "resourceType": "Bundle", "identifier": { "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER", "value": "5269367" }, "type": "collection", "timestamp": "2005-05-02T14:30:15+05:00", "entry": [ { "fullUrl": "http://example.org/fhir/ClaimResponse/InquiryResponseExample", "resource": { "resourceType": "ClaimResponse", "id": "InquiryResponseExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse-inquiry"] }, "status": "active", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" }] }, "use": "preauthorization", "patient": { "reference": "Patient/SubscriberExample" }, "created": "2005-05-02T11:05:00+05:00", "insurer": { "reference": "Organization/InsurerExample" }, "request": { "reference": "Claim/MedicalServicesAuthorizationExample" }, "outcome": "complete", "disposition": "Approved", "preAuthRef": "AUTH12345" } }, { "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample", "resource": { "resourceType": "Claim", "id": "MedicalServicesAuthorizationExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"] }, "status": "active", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" }] }, "use": "preauthorization", "patient": { "reference": "Patient/SubscriberExample" }, "created": "2005-05-02T11:01:00+05:00", "insurer": { "reference": "Organization/InsurerExample" }, "provider": { "reference": "Organization/UMOExample" } } }, { "fullUrl": "http://example.org/fhir/Patient/SubscriberExample", "resource": { "resourceType": "Patient", "id": "SubscriberExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"] }, "name": [{ "family": "SMITH", "given": ["JOE"] }], "gender": "male" } }, { "fullUrl": "http://example.org/fhir/Organization/UMOExample", "resource": { "resourceType": "Organization", "id": "UMOExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"] }, "name": "Provider Organization" } }, { "fullUrl": "http://example.org/fhir/Organization/InsurerExample", "resource": { "resourceType": "Organization", "id": "InsurerExample", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"] }, "name": "Insurance Company" } } ] }

오류 응답

400 잘못된 요청

요청 형식이 유효하지 않거나 검증이 실패할 때 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "required", "diagnostics": "Reference 'Patient/SubscriberExample' at path 'patient' for 'CLAIM' resource not found(at Bundle.entry[0].resource)" } ] }

401 권한이 없음

인증 자격 증명이 누락되거나 유효하지 않을 때 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "forbidden", "diagnostics": "Invalid authorization header" } ] }

403 금지됨

인증된 사용자에게 요청된 리소스에 액세스할 수 있는 권한이 없는 경우 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Insufficient SMART scope permissions." } ] }

400 찾을 수 없는 경우

쿼리에 대해 일치하는 ClaimResponse를 찾을 수 없는 경우 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "error", "code": "not-found", "diagnostics": "Resource not found. No ClaimResponse found from the input Claim that matches the specified Claim properties patient, insurer, provider, and created(at Bundle.entry[0].resource)" }] }

415 지원되지 않는 미디어 유형

Content-Type 헤더가 application/fhir+json이 아닐 때 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "error", "code": "value", "diagnostics": "Incorrect MIME-type. Update request Content-Type header." }] }

429 요청이 너무 많음

속도 제한을 초과하면 반환됩니다.

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "error", "code": "throttled", "diagnostics": "Rate limit exceeded. Please retry after some time." }] }

검증 규칙

HealthLake는 문의에 대해 포괄적인 검증을 수행합니다.

번들 검증

  • PAS 문의 요청 번들 프로필을 준수해야 합니다.

  • Bundle.type 여야 합니다. "collection"

  • 정확히 하나의 클레임 리소스를 포함해야 합니다.

  • 참조된 모든 리소스가 번들에 포함되어야 합니다.

클레임 검증

  • PAS 클레임 쿼리 프로필을 준수해야 합니다.

  • Claim.use 여야 합니다. "preauthorization"

  • Claim.status 여야 합니다. "active"

  • 필수 필드: patient, insurer, provider, created

리소스 검증

  • 모든 리소스는 해당 PAS 쿼리 프로필을 준수해야 합니다.

  • 필요한 지원 리소스가 있어야 합니다(환자, 보험 조직, 공급자 조직).

  • 교차 참조는 번들 내에서 유효하고 해석 가능해야 합니다.

성능 사양

지표 사양
리소스 수 제한 번들당 리소스 500개
번들 크기 제한 최대 5MB

필수 권한

$inquire 작업을 사용하려면 IAM 역할에 다음이 있는지 확인합니다.

  • healthlake:InquirePreAuthClaim - 작업을 호출하려면

FHIR 범위의 SMART

최소 필수 범위:

  • SMART v1: user/ClaimResponse.read

  • SMART v2: user/ClaimResponse.s

중요한 구현 참고 사항

검색 동작

문의를 제출하면 HealthLake는 다음을 사용하여 ClaimResponse를 검색합니다.

  • 입력 클레임의 환자 참조

  • 입력 클레임의 보험 회사 참조

  • 입력 클레임의 공급자 참조

  • 입력 클레임에서 생성된 날짜(시간 필터)

다중 일치: 여러 ClaimResponses 검색 기준과 일치하는 경우 HealthLake는 일치하는 모든 결과를 반환합니다. 최신 ClaimResponse.created 타임스탬프를 사용하여 최신 상태를 식별해야 합니다.

업데이트된 클레임

동일한 사전 권한 부여(예: 클레임 v1.1, v1.2, v1.3)에 대한 여러 업데이트를 제출한 경우 $inquire 작업은 제공된 검색 기준에 따라 최신 버전과 연결된 ClaimResponse를 검색합니다.

읽기 전용 작업

$inquire 작업:

  • 기존 권한 부여 상태를 검색합니다.

  • 최신 ClaimResponse를 반환합니다.

  • 리소스를 수정하거나 업데이트하지 않음

  • 새 리소스를 생성하지 않음

  • 새 권한 부여 처리를 트리거하지 않음

워크플로 예시

일반적인 사전 승인 문의 워크플로

1. Provider submits PA request POST /Claim/$submit → Returns ClaimResponse with outcome="queued" 2. Payer reviews request (asynchronous) → Updates ClaimResponse status internally 3. Provider checks status POST /Claim/$inquire → Returns ClaimResponse with outcome="queued" (still pending) 4. Provider checks status again later POST /Claim/$inquire → Returns ClaimResponse with outcome="complete", disposition="Approved"
  • Claim/$submit - 새 사전 권한 부여 요청을 제출하거나 기존 권한 부여 요청을 업데이트합니다.

  • Patient/$everything - 사전 권한 부여 컨텍스트에 대한 포괄적인 환자 데이터 검색