

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

# FHIR 리소스 삭제
<a name="managing-fhir-resources-delete"></a>

FHIR `delete` 상호 작용은 HealthLake 데이터 스토어에서 기존 FHIR 리소스를 제거합니다. 자세한 내용은 **FHIR R4 RESTful API 설명서**[https://hl7.org/fhir/R4/http.html#delete](https://hl7.org/fhir/R4/http.html#delete)의 섹션을 참조하세요.

**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 경로를 보려면 **복사** 버튼을 스크롤합니다.

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

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

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

   SigV4 권한 부여

   ```
   curl --request DELETE \
     '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'
   ```

   서버는 리소스가 HealthLake 데이터 스토어에서 제거되었음을 확인하는 `204` HTTP 상태 코드를 반환합니다. 삭제 요청이 실패하면 요청이 실패한 이유를 나타내는 `400` 일련의 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를 선택합니다.
   + **쿼리 유형** -를 선택합니다`Delete`.
   + **리소스 유형** - 삭제할 FHIR [리소스 유형을](reference-fhir-resource-types.md) 선택합니다.
   + **리소스 ID** - FHIR 리소스 ID를 입력합니다.

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

------

## 조건에 따라 FHIR 리소스 삭제
<a name="conditional-delete-fhir"></a>

조건부 삭제는 특정 FHIR 리소스 ID를 모르지만 삭제하려는 리소스에 대한 다른 식별 정보가 있는 경우에 특히 유용합니다.

조건부 삭제를 사용하면 논리적 FHIR ID가 아닌 검색 기준에 따라 기존 리소스를 삭제할 수 있습니다. 서버는 삭제 요청을 처리할 때 리소스 유형에 대한 표준 검색 기능을 사용하여 검색을 수행하여 요청에 대한 단일 논리적 ID를 확인합니다.

### 조건부 삭제 작동 방식
<a name="conditional-delete-works"></a>

**서버의 작업은 검색한 일치 항목 수에 따라 달라집니다.**  


1. **일치 항목 없음**: 서버가 일반 삭제를 시도하고 적절하게 응답합니다(404 존재하지 않는 리소스의 경우 찾을 수 없음, 204 이미 삭제된 리소스의 경우 콘텐츠 없음).

1. **일치하는 항목 하나**: 서버가 일치하는 리소스에서 일반 삭제를 수행합니다.

1. **여러 일치** 항목: 클라이언트의 기준이 충분히 선택적이지 않음을 나타내는 412 사전 조건 실패 오류를 반환합니다.

### 대응 시나리오
<a name="response-scenerios"></a>

AWS HealthLake 는 다음과 같은 응답 패턴으로 조건부 삭제 작업을 처리합니다.

**성공한 작업**  

+ 검색 기준이 단일 활성 리소스를 성공적으로 식별하면 시스템은 표준 삭제 작업과 마찬가지로 삭제를 완료한 후 **204 콘텐츠 없음을** 반환합니다.

**ID 기반 조건부 삭제**  
추가 파라미터(`createdAt`, `tag`또는 )`id`를 사용하여를 기반으로 조건부 삭제를 수행하는 경우`_lastUpdated`:
+ **204 콘텐츠 없음**: 리소스가 이미 삭제되었습니다.
+ **404 찾을 수 없음**: 리소스가 존재하지 않음
+ **409 충돌**: ID는 일치하지만 다른 파라미터는 일치하지 않음

**Non-ID-Based 조건부 삭제**  
`id`가 제공되지 않거나 `createdAt`, 또는 이외의 파라미터를 사용하는 경우`tag``_lastUpdated`:
+ **404 찾을 수 없음**: 일치하는 항목을 찾을 수 없음

**충돌 상황**  
여러 시나리오에서 412개의 사전 조건 실패 응답이 발생합니다.
+ 여러 리소스가 검색 기준과 일치(기준이 충분히 구체적이지 않음)
+ 에서 ETag 헤더 사용 시 버전 충돌 `If-Match`
+ 검색 및 삭제 작업 사이에 발생하는 리소스 업데이트

**성공적인 조건부 삭제의 예**  
다음 예시에서는 특정 기준에 따라 환자 리소스를 삭제합니다.

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

이 요청은 다음과 같은 환자 리소스를 삭제합니다.
+ 이름은 "peter"입니다.
+ 생년월일은 2000년 1월 1일입니다.
+ 전화번호는 1234567890입니다.

**모범 사례**  


1. 특정 검색 기준을 사용하여 여러 일치 항목을 방지하고 412 오류를 방지합니다.

1. 동시 수정을 처리하는 데 필요한 경우 버전 관리를 위해 ETag 헤더를 고려합니다.

1. 오류 응답을 적절하게 처리합니다.
   + 404의 경우: 검색 기준 구체화
   + 412의 경우: 기준을 더 구체적으로 지정하거나 버전 충돌 해결

1. 검색 작업과 삭제 작업 간에 리소스를 수정할 수 있는 동시성이 높은 환경에서 타이밍 충돌에 대비합니다.