View a markdown version of this page

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

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

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

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

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

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

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

  • 동시 변경 사항 덮어쓰기 위험 최소화

  • 배치 및 트랜잭션 워크플로의 일부로 리소스 업데이트

지원되는 패치 형식

AWS HealthLake 는 두 가지 표준 패치 형식을 지원합니다.

JSON 패치(RFC 6902)

JSON 포인터 구문을 사용하여 리소스 구조의 위치별로 요소를 대상으로 지정합니다.

Content-Type: application/json-patch+json

FHIRPath 패치(FHIR R4 사양)

FHIRPath 표현식을 사용하여 콘텐츠 및 관계를 기준으로 요소를 대상으로 지정하여 패치 적용에 대한 FHIR 네이티브 접근 방식을 제공합니다.

Content-Type: application/fhir+json

사용법

직접 패치 작업

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

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

번들의 패치

패치 작업은 batch 또는 유형의 FHIR 번들 내에 항목으로 포함될 수 transaction있으므로 패치 작업을 단일 요청으로 다른 FHIR 상호 작용(생성, 읽기, 업데이트, 삭제)과 결합할 수 있습니다.

  • 트랜잭션 번들: 모든 항목이 원자적으로 성공하거나 실패함

  • 배치 번들: 각 항목은 독립적으로 처리됩니다.

JSON 패치 형식

지원되는 작업

연산 설명
add 리소스에 새 값 추가
remove 리소스에서 값 제거
replace 리소스의 기존 값 바꾸기
move 한 위치에서 값을 제거하고 다른 위치에 추가
copy 한 위치에서 다른 위치로 값 복사
test 대상 위치의 값이 지정된 값과 동일한지 테스트

경로 구문

JSON 패치는 JSON 포인터 구문(RFC 6901)을 사용합니다.

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

예제

여러 작업을 사용한 직접 JSON 패치 요청

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": "555-555-5555", "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" } ]
단일 작업으로 직접 JSON 패치 요청

PATCH [base]/Patient/example Content-Type: application/json-patch+json [ { "op": "replace", "path": "/active", "value": false } ]
번들의 JSON 패치

base64로 인코딩된 JSON 패치 페이로드를 포함하는 바이너리 리소스를 사용합니다.

{ "resourceType": "Bundle", "type": "transaction", "entry": [{ "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ==" }, "request": { "method": "PATCH", "url": "Patient/123" } }] }

FHIRPath 패치 형식

지원되는 작업

연산 설명
add 리소스에 새 요소 추가
insert 목록의 특정 위치에 요소 삽입
delete 리소스에서 요소 제거
replace 기존 요소의 값 바꾸기
move 목록 내 요소 재정렬

경로 구문

FHIRPath 패치는 FHIRPath 표현식을 사용하여 다음을 지원합니다.

  • 인덱스 기반 액세스: Patient.name[0]

  • 를 사용한 필터링where(): Patient.name.where(use = 'official')

  • 부울 로직: Patient.telecom.where(system = 'phone' and use = 'work')

  • 함수 하위 설정: first(), last()

  • 존재 확인: exists(), count()

  • 다형성 탐색: Observation.value

예제

직접 FHIRPath 패치 요청

PATCH [base]/Patient/123 Content-Type: application/fhir+json Authorization: ... { "resourceType": "Parameters", "parameter": [{ "name": "operation", "part": [ { "name": "type", "valueCode": "add" }, { "name": "path", "valueString": "Patient" }, { "name": "name", "valueString": "birthDate" }, { "name": "value", "valueDate": "1990-01-01" } ] }] }
번들의 FHIRPath 패치

파라미터 리소스를의 항목 리소스로 사용합니다method: PATCH.

{ "resourceType": "Bundle", "type": "transaction", "entry": [{ "resource": { "resourceType": "Parameters", "parameter": [{ "name": "operation", "part": [ { "name": "type", "valueCode": "add" }, { "name": "path", "valueString": "Patient" }, { "name": "name", "valueString": "birthDate" }, { "name": "value", "valueDate": "1990-01-01" } ] }] }, "request": { "method": "PATCH", "url": "Patient/123" } }] }

요청 헤더

헤더 필수 설명
Content-Type application/json-patch+json JSON 패치의 경우 또는 FHIRPath 패치application/fhir+json의 경우
If-Match 아니요 ETag를 사용한 버전별 조건부 업데이트

샘플 응답

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

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": "555-555-5555", "use": "home" } ], "meta": { "versionId": "2", "lastUpdated": "2025-05-05T10:10:10Z" } }

동작

PATCH 작업:

  • 적절한 사양에 따라 패치 구문을 검증합니다(JSON 패치의 경우 RFC 6902, FHIRPath 패치의 경우 FHIRPath R4).

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

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

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

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

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

오류 처리

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

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

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

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

  • 422 처리 불가능한 엔터티: 지정된 리소스 요소에 패치 작업을 적용할 수 없습니다.

기능 요약

기능 JSON 패치 FHIRPath 패치
콘텐츠 유형 application/json-patch+json application/fhir+json
경로 형식 JSON 포인터(RFC 6901) FHIRPath 표현식
직접 패치 API 지원됨 지원됨
번들 배치 지원됨(바이너리를 통해) 지원됨(파라미터를 통해)
번들 트랜잭션 지원됨(바이너리를 통해) 지원됨(파라미터를 통해)
운영 추가, 제거, 교체, 이동, 복사, 테스트 추가, 삽입, 삭제, 교체, 이동

제한 사항

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

  • 번들의 JSON 패치는 base64 인코딩 콘텐츠와 함께 바이너리 리소스를 사용해야 합니다.

  • 번들의 FHIRPath 패치는 파라미터 리소스를 사용해야 합니다.

추가 리소스

PATCH 작업에 대한 자세한 내용은 다음을 참조하세요.