PATCH 작업을 사용하여 리소스 수정 - AWS HealthLake

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

PATCH 작업을 사용하여 리소스 수정

AWS HealthLake 는 이제 FHIR 리소스에 대한 PATCH 작업을 지원하므로 전체 리소스를 업데이트하지 않고 추가, 교체 또는 삭제할 특정 요소를 대상으로 하여 리소스를 수정할 수 있습니다. 이 작업은 원격 클라이언트 또는 네트워크 사용량을 줄이려는 대역폭이 제한된 클라이언트에 특히 유용합니다. 이 작업은 다음이 필요한 경우에 특히 유용합니다.

  • 대규모 리소스에 대한 대상 업데이트 수행

  • 네트워크 대역폭 사용량 감소

  • 특정 리소스 요소에 대한 원자성 수정 수행

  • 동시 변경 사항을 덮어쓸 위험 최소화

사용량

PATCH HTTP 메서드를 사용하여 FHIR 리소스에서 PATCH 작업을 호출할 수 있습니다.

지원되는 작업

PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}

지원되는 패치 작업

HealthLake는 RFC 6902에 따라 다음과 같은 JSON 패치 작업을 지원합니다.

연산 설명
add 리소스에 새 값 추가
remove 리소스에서 값 제거
replace 리소스의 기존 값 바꾸기
move "from" 위치에 대한 "remove" 작업과 기능적으로 동일하며, 방금 제거된 값을 사용하여 대상 위치에 즉시 "add" 작업 수행
copy 지정된 위치의 값을 대상 위치로 복사합니다.
test 대상 위치의 값이 지정된 값과 동일한지 테스트

요청 헤더

헤더 필수 설명
Content-Type application/json-patch+json이어야 합니다.
If-Match 아니요 ETag를 사용한 버전별 조건부 업데이트

예시

여러 작업이 있는 패치 요청

PATCH [base]/Patient/example Content-Type: application/json-patch+json If-Match: W/"1" [ { "op": "replace", "path": "/name/0/family", "value": "Smith" }, { "op": "add", "path": "/telecom/-", "value": { "system": "phone", "value": "************", "use": "home" } }, { "op": "remove", "path": "/address/0" }, { "op": "move", "from": "/name/0/family", "path": "/name/1/family" }, { "op": "test", "path": "/gender", "value": "male" }, { "op": "copy", "from": "/name/0", "path": "/name/1" } ]
단일 작업을 사용한 패치 요청

PATCH [base]/Patient/example Content-Type: application/json-patch+json [ { "op": "replace", "path": "/active", "value": false } ]
샘플 응답

작업은 새 버전 정보와 함께 업데이트된 리소스를 반환합니다.

HTTP/1.1 200 OK Content-Type: application/fhir+json ETag: W/"2" Last-Modified: Mon, 05 May 2025 10:10:10 GMT { "resourceType": "Patient", "id": "example", "active": true, "name": [ { "family": "Smith", "given": ["John"] } ], "telecom": [ { "system": "phone", "value": "************", "use": "home" } ], "meta": { "versionId": "2", "lastUpdated": "2025-05-05T10:10:10Z" } }

JSON 패치 경로 구문

경로 파라미터는 JSON 포인터 구문(RFC 6901)을 사용합니다.

경로 예제 설명
/name/0/family 이름의 패밀리 요소
/telecom/- 통신 배열에 추가
/active 루트 수준 활성 요소
/address/0/line/1 첫 번째 주소의 두 번째 줄

동작

PATCH 작업:

  1. RFC 6902 및 RFC 6901에 따라 JSON 패치 구문을 검증합니다.

  2. 원자적으로 작업 적용 - 모든 작업이 성공하거나 모두 실패함

  3. 리소스 버전 ID를 업데이트하고 새 기록 항목을 생성합니다.

  4. 변경 사항을 적용하기 전에 기록에서 원래 리소스를 보존합니다.

  5. 패치 적용 후 FHIR 리소스 제약 조건 검증

  6. ETag와 If-Match 헤더를 사용한 조건부 업데이트 지원

오류 처리

작업은 다음 오류 조건을 처리합니다.

  • 400 잘못된 요청: 잘못된 패치 구문(부적합 요청 또는 잘못된 JSON 패치)

  • 404 찾을 수 없음: 리소스를 찾을 수 없음(지정된 ID가 존재하지 않음)

  • 409 충돌: 버전 충돌(동시 업데이트 또는 최신이 아닌 버전 ID 제공)

  • 422 Unprocessable Entity: 지정된 리소스 요소에 패치 작업을 적용할 수 없습니다.

경고

  • application/json-patch+json 콘텐츠 유형만 지원됩니다.

  • 검색 조건을 사용하는 조건부 패치 작업은 지원되지 않습니다.

PATCH 작업에 대한 자세한 내용은 FHIR R4 PATCH 설명서를 참조하세요.