本頁面說明參照完整性概念,以及與 Cloud Healthcare API 中 FHIR 儲存庫中的資源相關的概念。
FHIR 儲存庫會針對同一個儲存庫內其他資源的參照,強制執行參照完整性:
- 建立、更新或修補資源時,如果資源的產生內容包含對不存在的資源或資源版本的參照,作業就會失敗。
- 刪除資源時,如果商店中有其他資源參照該資源,則該作業會失敗。
如要停用參照完整性,請在建立商店時設定 disableReferentialIntegrity
選項。
排除條款和限制
FHIR 規格允許各種形式的參照,其中有些不受參照完整性規範:
- 透過網址指定的外部參照,不符合 FHIR 儲存庫的基本網址。
- 由商家 ID 指定的邏輯參照。
- 僅包含人類可讀的顯示字串參照。
- 只有在
complexDataTypeReferenceParsing
設為ENABLED
時,FHIR 擴充功能內的參照才會受到參考完整性規範。這是新 FHIR 儲存庫的預設值。
在某些情況下,特定 API 方法可能會導致違反參照完整性:
- FHIR 允許參照使用
[resource type]/[resource ID]/_history/[version ID]
表單,指向資源的特定歷史版本。建立或更新這些參照時,系統會套用參照完整性,但使用Resource-purge
方法移除資源的歷史版本時,系統不會檢查傳入的參照。 - FHIR
import
方法不會強制執行參照完整性。在不需要參照完整性,或已知輸入內容符合參照完整性的情況下,可以使用這項方法。在後一種情況下,每項資源成功匯入後,FHIR 儲存庫內的參照會達到最終一致性。 deidentify
方法可能會在作業期間暫時以不符合參照完整性的狀態建立 FHIR 儲存庫,如果使用篩選器選取資源子集,則會永久處於這種狀態。
如果系統正在強制執行完整性,但遭到上述任一情況違反,則會導致資源更新遭到拒絕,除非更新修正或移除所有無效的參照。這種狀態也可能會對使用商店的應用程式造成困擾,因為這些應用程式會假設商店的完整性。
包含的資源
FHIR 規格包含一項限制,即每個包含的資源都必須從其包含資源中的某處參照 (包括其他包含資源的參照),且每個包含資源的參照都必須有效。這項限制會與參照完整性分開強制執行,且無法停用,因為這項限制已在個別資源的 FHIRPath 不變量中定義。