기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 작업:
-
RFC 6902 및 RFC 6901에 따라 JSON 패치 구문을 검증합니다.
-
원자적으로 작업 적용 - 모든 작업이 성공하거나 모두 실패함
-
리소스 버전 ID를 업데이트하고 새 기록 항목을 생성합니다.
-
변경 사항을 적용하기 전에 기록에서 원래 리소스를 보존합니다.
-
패치 적용 후 FHIR 리소스 제약 조건 검증
-
ETag와 If-Match 헤더를 사용한 조건부 업데이트 지원
오류 처리
작업은 다음 오류 조건을 처리합니다.
-
400 잘못된 요청: 잘못된 패치 구문(부적합 요청 또는 잘못된 JSON 패치)
-
404 찾을 수 없음: 리소스를 찾을 수 없음(지정된 ID가 존재하지 않음)
-
409 충돌: 버전 충돌(동시 업데이트 또는 최신이 아닌 버전 ID 제공)
-
422 Unprocessable Entity: 지정된 리소스 요소에 패치 작업을 적용할 수 없습니다.
경고
-
application/json-patch+json콘텐츠 유형만 지원됩니다. -
검색 조건을 사용하는 조건부 패치 작업은 지원되지 않습니다.
PATCH 작업에 대한 자세한 내용은 FHIR R4 PATCH