

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

# FHIR 리소스 업데이트
<a name="managing-fhir-resources-update"></a>

FHIR `update` 상호 작용은 기존 리소스에 대한 새 현재 버전을 생성하거나 지정된에 대한 리소스가 아직 없는 경우 초기 버전을 생성합니다`id`. 자세한 내용은 **FHIR R4 RESTful API 설명서**[https://hl7.org/fhir/R4/http.html#update](https://hl7.org/fhir/R4/http.html#update)의 섹션을 참조하세요.

**FHIR 리소스를 업데이트하려면**  


1. HealthLake `region` 및 `datastoreId` 값을 수집합니다. 자세한 내용은 [데이터 스토어 속성 가져오기](managing-data-stores-describe.md) 단원을 참조하십시오.

1. 연결된 `id` 값을 `Resource` 업데이트하고 수집할 FHIR 유형을 결정합니다. 자세한 내용은 [조건 키](reference-fhir-resource-types.md) 단원을 참조하십시오.

1. HealthLake `region` 및에 대해 수집된 값을 사용하여 요청에 대한 URL을 구성합니다`datastoreId`. FHIR `Resource` 유형 및 관련 도 포함합니다`id`. 다음 예제에서 전체 URL 경로를 보려면 **복사** 버튼을 스크롤합니다.

   ```
   PUT https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
   ```

1. 요청에 대한 `JSON` 본문을 구성하여 수행할 FHIR 데이터 업데이트를 지정합니다. 이 절차의 목적상 파일을 로 저장합니다`update-patient.json`.

   ```
   {
       "id": "2de04858-ba65-44c1-8af1-f2fe69a977d9",
       "resourceType": "Patient",
       "active": true,
       "name": [
           {
               "use": "official",
               "family": "Doe",
               "given": [
                   "Jane"
               ]
           },
           {
               "use": "usual",
               "given": [
                   "Jane"
               ]
           }
       ],
       "gender": "female",
       "birthDate": "1985-12-31"
   }
   ```

1.  요청을 보냅니다. FHIR `update` 상호 작용은 FHIR 권한 부여에서 [AWS 서명 버전 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 또는 SMART와 함께 `PUT` 요청을 사용합니다. 다음 `curl` 예시에서는 HealthLake에서 `Patient` 리소스를 업데이트합니다. 전체 예제를 보려면 **복사** 버튼을 스크롤합니다.

------
#### [ SigV4 ]

   SigV4 권한 부여

   ```
   curl --request PUT \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id' \
     --aws-sigv4 'aws:amz:region:healthlake' \
     --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
     --header "x-amz-security-token:$AWS_SESSION_TOKEN" \
     --header 'Accept: application/json' \
     --data @update-patient.json
   ```

   요청은 기존 리소스가 *업데이트된* 경우 `200` HTTP 상태 코드를 반환하고 새 리소스가 생성된 경우 `201` HTTP 상태 코드를 반환합니다.

------
#### [ SMART on FHIR ]

   [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html) 데이터 형식에 대한 SMART on FHIR 권한 부여 예제입니다.

   ```
   {
       "AuthorizationStrategy": "SMART_ON_FHIR",
       "FineGrainedAuthorizationEnabled": true,
       "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name",
       "Metadata": "{\"issuer\":\"https://ehr.example.com\", \"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credential\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openId\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\",\"permission-v2\"]}"
   }
   ```

   호출자는 권한 부여 Lambda에 권한을 할당할 수 있습니다. 자세한 내용은 [OAuth 2.0 범위](reference-smart-on-fhir-oauth-scopes.md) 단원을 참조하십시오.

------
#### [ AWS Console ]

   1. HealthLake 콘솔의 [쿼리 실행](https://console.aws.amazon.com/healthlake/home#/crud) 페이지에 로그인합니다.

   2. **쿼리 설정** 섹션에서 다음을 선택합니다.
   + **데이터 스토어 ID** - 쿼리 문자열을 생성할 데이터 스토어 ID를 선택합니다.
   + **쿼리 유형** -를 선택합니다`Update (PUT)`.
   + **리소스 유형** - 업데이트하거나 생성할 FHIR [리소스 유형을](reference-fhir-resource-types.md) 선택합니다.
   + **요청 본문** - 리소스를 업데이트할 FHIR 데이터를 지정하여 요청에 대한 JSON 본문을 구성합니다.

   3. **쿼리 실행**을 선택합니다.

------

## 조건에 따라 FHIR 리소스 업데이트
<a name="managing-fhir-resources-update-conditional"></a>

조건부 업데이트를 사용하면 논리적 FHIR이 아닌 일부 식별 검색 기준에 따라 기존 리소스를 업데이트할 수 있습니다`id`. 서버는 업데이트를 처리할 때 요청에 대한 단일 논리를 해결하기 위해 리소스 유형에 `id` 대한 표준 검색 기능을 사용하여 검색을 수행합니다.

서버가 수행하는 작업은 검색한 일치 항목 수에 따라 달라집니다.
+ **일치 항목 없음, 요청 본문에 `id` 제공되지 않음**: 서버가 FHIR 리소스를 생성합니다.
+ **일치 항목 없음, `id` 제공됨 및 리소스가에 아직 존재하지 않음`id`**: 서버는 상호 작용을 업데이트로 상호 작용 생성을 처리합니다.
+ **일치 항목 없음, `id` 제공됨 및 이미 존재**: 서버가 `409 Conflict` 오류와 함께 업데이트를 거부합니다.
+ **일치 항목 1개, 리소스`id`가 제공되지 않음 OR(리소스가 `id` 제공되고 찾은 리소스와 일치함)**: 서버는 위와 같이 일치하는 리소스에 대해 업데이트를 수행합니다. 리소스가 업데이트된 경우 서버는를 반환해야 합니다`200 OK`.
+ **One Match, 리소스가 `id` 제공되었지만 찾은 리소스와 일치하지 않음**: 서버가 클라이언트 ID 사양이 가급적이면에서 문제가었음을 나타내는 `409 Conflict` 오류를 반환합니다. `OperationOutcome` 
+ **여러 일치** 항목: 서버가 클라이언트의 기준이 가급적이면 OperationOutcome으로 충분히 선택되지 않았음을 나타내는 `412 Precondition Failed` 오류를 반환합니다.

다음 예제에서는 이름이 peter이고, 생년월일이 2000년 1월 1일이며, 전화번호가 1234567890인 `Patient` 리소스를 업데이트합니다.

```
PUT https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?name=peter&birthdate=2000-01-01&phone=1234567890
```

## 리소스 업데이트에 대한 검증 수준 구성
<a name="validation-level-resource-updates"></a>

FHIR 리소스를 업데이트할 때 선택적으로 `x-amzn-healthlake-fhir-validation-level` HTTP 헤더를 지정하여 리소스에 대한 검증 수준을 구성할 수 있습니다.는 AWS HealthLake 현재 다음 검증 수준을 지원합니다.
+ `strict`: 리소스는 리소스의 프로필 요소 또는 프로필이 없는 경우 R4 사양에 따라 검증됩니다. 이는의 기본 검증 수준입니다 AWS HealthLake.
+ `structure-only`: 리소스는 R4에 대해 검증되며 참조된 프로파일은 무시합니다.
+ `minimal`: 리소스는 특정 R4 규칙을 무시하면서 최소한으로 검증됩니다. 검색/분석에 필요한 구조 검사에 실패한 리소스는 감사 경고를 포함하도록 업데이트됩니다.

최소 검증 수준으로 업데이트된 리소스는 검색 인덱싱에 필요한 검증에 실패하더라도 데이터 스토어에 수집될 수 있습니다. 이 경우 해당 실패를 문서화하기 위한 Healthlake별 확장을 포함하도록 리소스가 업데이트됩니다.

```
{
    "url": "http://healthlake.amazonaws.com/fhir/StructureDefinition/validation-issue",
    "valueString": "{\"resourceType\":\"OperationOutcome\",\"issue\":[{\"severity\":\"error\",\"code\":\"processing\",\"details\":{\"text\":\"FHIR resource in payload failed FHIR validation rules.\"},\"diagnostics\":\"FHIR resource in payload failed FHIR validation rules.\"}]}"
}
```

또한 다음 HTTP 응답 헤더는 "true" 값과 함께 포함됩니다.

```
x-amzn-healthlake-validation-issues : true
```

**참고**  
R4 사양에 따라 잘못된 형식으로 수집된 데이터는 이러한 오류가 있는 경우 예상대로 검색하지 못할 수 있습니다.