本頁面說明 Cloud Healthcare API 如何支援 FHIR 資源參照。
總覽
FHIR 資源參照是從來源資源到目標資源的方向連結。FHIR 資源參照可用於連結資源。舉例來說,FHIR 資源類型 Observation
具有 Reference 類型的 subject
欄位,可用來連結 Patient
資源,做為觀察主題。
FHIR 資源參照資料也可能會循環引用。舉例來說,FHIR 資源類型 CarePlan
有 replaces
欄位,可指向另一個 CarePlan
。
FHIR 參考結構中最重要的元素是參考資料。其他元素 (例如 display
和 identifier
) 會以 Cloud Healthcare API 中的形式保留。
Cloud Healthcare API 支援的 Reference.reference
格式包括:
本機資源參照
資源參照定義為 RESOURCE_TYPE/RESOURCE_ID
。Cloud Healthcare API 也支援在 RESOURCE_TYPE/RESOURCE_ID
前面加上完整的 FHIR 儲存庫名稱。例如:FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID
。如果您採用這種格式,存放區名稱必須與要求的 FHIR 存放區相符。否則,系統會因非本機參照而拒絕要求。
儲存庫設定選項 FhirStore.disableReferentialIntegrity
可控制本地參照驗證的參照完整性檢查,預設為啟用。如要進一步瞭解參考完整性檢查,請參閱「FHIR 參考完整性」。
版本化參照
Cloud Healthcare API 支援參照特定版本的目標資源。如要連結至特定版本的目標資源,請使用本機參照中 RESOURCE_ID/_history/VERSION_ID
] 後方的格式。
啟用參照完整性檢查後,伺服器會驗證 FHIR 儲存庫中是否有歷史版本。Resource-purge
方法會移除歷來版本,無論是否已被參照。
條件式參照
除了明確指定目標資源 ID 之外,executeBundle
也接受針對目標資源的條件參照搜尋查詢,該查詢會在要求時解析為目標資源 ID。例如:Patient?identifier=abc
。
如果搜尋查詢未解析為目標資源,或解析為多個目標資源,無論是否已啟用參照完整性檢查,伺服器都會拒絕要求。
URI 開頭為 urn:uuid
或 urn:oid
當您在交易套件中使用 executeBundle
方法時,可以使用通用唯一識別碼 (UUID) 或物件識別碼(OID) 參照,以解析在同一個套件中建立或更新的其他資源參照。詳情請參閱管理 FHIR 束合指南。
完整外部網址
完整的外部網址 (例如 http://www.example.com/abc
) 會儲存在參照欄位中,且不會經過修改。Cloud Healthcare API 不會解析網址或嘗試驗證其有效性。
如果完整的外部網址與要求的 FHIR 存放區完整網址相符,系統會將參照視為本機資源參照。
片段參照
片段參照會指向資源中內嵌的所含資源。舉例來說,如果觀察記錄提到一位一般醫師,但沒有受控的醫師目錄,就無法建立完整的醫師資源。全科醫師是觀察記錄中的內含資源。資源上的參照欄位可以使用 #[INLINE_RESOURCE_ID]
的形式,指向內嵌的資源。
在下列 FHIR R4 範例中,p1
和 p2
是內嵌資源 ID,分別參照為 #p1
和 #p2
:
{
"resourceType": "Observation",
"contained": [
{
"resourceType":"Patient",
"id": "p1",
"generalPractitioner": {"reference": "#p2"}
},
{
"resourceType":"Practitioner",
"id": "p2"
}
],
"status": "final",
"subject": {"reference": "#p1"},
"performer": [{"reference": "#p2"}]
}
[INLINE_RESOURCE_ID]
必須是資源內的內含資源,否則伺服器會拒絕要求。所含資源只能由其容器或同一容器內的其他所含資源參照。