이 페이지에서는 Cloud Healthcare API의 FHIR 저장소 내 리소스와 관련된 참조 무결성 개념을 설명합니다.
FHIR 저장소는 동일한 저장소 내의 다른 리소스 참조에 대한 참조 무결성을 적용합니다.
- 리소스를 생성, 업데이트 또는 패치할 때 리소스의 결과 콘텐츠에 존재하지 않는 리소스 또는 리소스 버전에 대한 참조가 포함된 경우 작업이 실패합니다.
- 리소스를 삭제할 때 저장소에 해당 리소스를 참조하는 다른 리소스가 있으면 작업이 실패합니다.
저장소를 만들 때 disableReferentialIntegrity
옵션을 설정하여 참조 무결성을 사용 중지할 수 있습니다.
예외 및 제한
FHIR 사양은 다양한 형식의 참조를 허용하며 일부는 참조 무결성이 적용되지 않습니다.
- URL로 지정된 외부 참조로 FHIR 저장소의 기본 URL과 일치하지 않습니다.
- 비즈니스 식별자로 지정된 논리적 참조입니다.
- 사람이 읽을 수 있는 표시 문자열만 포함된 참조입니다.
- FHIR 확장 프로그램 내부의 참조에는
complexDataTypeReferenceParsing
이ENABLED
로 설정된 경우에만 참조 무결성이 적용됩니다. 이 값은 새 FHIR 저장소의 기본값입니다.
일부 API 메서드는 특정 조건에서 참조 무결성을 위반할 수 있습니다.
- FHIR는 참조가
[resource type]/[resource ID]/_history/[version ID]
형식을 사용하여 리소스의 특정 이전 버전을 가리키도록 합니다. 참조 무결성은 만들거나 업데이트할 때 참조에 적용되지만Resource-purge
메서드를 사용하여 리소스의 이전 버전을 삭제하는 경우 수신되는 참조는 확인되지 않습니다. - FHIR
import
메서드는 참조 무결성을 적용하지 않습니다. 참조 무결성이 필요하지 않거나 입력이 참조 무결성을 충족하는 것으로 알려진 경우 이 메서드를 사용할 수 있습니다. 후자의 경우 모든 리소스 가져오기가 성공적으로 완료되면 FHIR 저장소 내의 참조가 eventual consistency에 도달합니다. deidentify
메서드는 필터를 사용하여 리소스의 하위 집합을 선택하는 경우, 작업 중에 일시적으로 또는 영구적으로 참조 무결성을 충족하지 않는 상태로 FHIR 저장소를 만들 수 있습니다.
무결성이 시행되지만 이전 사례 중 하나로 위반된 경우 업데이트가 수정되거나 유효하지 않은 참조를 모두 삭제하지 않는 한 유효하지 않은 참조가 포함된 리소스에서의 리소스 업데이트는 거부됩니다. 이러한 상태로 인해 무결성이 가정되는 저장소를 사용하는 애플리케이션에도 문제가 발생할 수 있습니다.
포함된 리소스
FHIR 사양은 모든 포함된 리소스가 포함하고 있는 리소스(다른 포함된 리소스의 참조 포함) 내의 어딘가에서 참조되어야 하며 포함된 리소스에 대한 모든 참조가 유효해야 한다는 제약 조건을 포함합니다. 이 제약 조건은 참조 무결성과 별도로 적용되며 각 개별 리소스의 FHIRPath 불변에 정의되므로 사용 중지할 수 없습니다.