在 FHIR 服務中使用 Patient-everything
Patient-everything 作業是用來提供患者所有相關資源的檢視。 這項作業有助於讓患者存取其整個記錄,或讓提供者或其他使用者執行與患者相關的大量資料下載。 根據快速健康照護互通資源 (FHIR®) 規格,Patient-everything 會傳回與叫用此作業之資源或內容中所述之一或多個患者相關的所有資訊。 在 Azure 健康資料服務的 FHIR 服務中 (因此稱為 FHIR 服務),Patient-everything 都可以提取與特定患者相關的資料。
使用 Patient-everything
若要呼叫 Patient-everything,請使用下列命令:
GET {FHIRURL}/Patient/{ID}/$everything
注意
您必須指定特定患者的識別碼。 如果您需要所有患者的所有資料,請參閱 $export。
FHIR 服務會驗證其是否可以找到符合所提供患者標識碼的患者。 如果找到結果,回應將會是 searchset
類型結合下列資訊:
- 患者資源。
- 患者資源直接參考的資源,除了不是另請參閱的連結參考以外,或如果
seealso
連結參考RelatedPerson
。 - 如果有其他患者的
seealso
連結參考,結果將包含針對列出的seealso
名患者的 Patient-everything 作業。 - 患者區間中的資源。
- 參考患者資源的裝置資源。
注意
如果患者有 100 個以上的裝置與其連結,則只會傳回 100 個裝置。
Patient-everything 參數
FHIR 服務支援下列查詢參數。 所有參數都是選用的:
查詢參數 | 描述 |
---|---|
_type | 可讓您指定回應中將包含哪些類型的資源。 例如,_type=Encounter 只會傳回與患者相關聯的 Encounter 資源。 |
_since | 只會傳回自提供時間以來經過修改的資源。 |
start | 指定開始日期將會提取其臨床日期在指定開始日期之後的資源。 如果未提供開始日期,則結束日期之前的所有記錄都在範圍內。 |
end | 指定開始日期將會提取其臨床日期在指定開始日期之後的資源。 如果未提供開始日期,則結束日期之前的所有記錄都在範圍內。 |
注意
此 Patient-everything 實作不支援 _count 參數。
處理患者連結
在患者資源上,有一個稱為連結的專案,可將患者連結到其他患者或相關人員。 這些連結的患者有助於提供原始患者的整體檢視。 當患者取代另一名患者或兩個患者資源有互補資訊時,可以使用連結參考。 連結的其中一個使用案例是當收到 ADT 38 或 39 HL7v2 訊息時。 其描述患者的更新。 此更新可以儲存為連結元素中兩名患者之間的參考。
FHIR 規格有不同類型的患者連結的詳細概觀,但我們包含高階摘要:
- replaces - 患者資源會取代不同的患者。
- refer - 患者有效,但不會視為主要的資訊來源。 指向另一個患者以擷取其他資訊。
- seealso - 患者包含另一個同樣有效的患者連結。
- replaced-by - 患者資源會取代不同的患者。
Patient-everything 患者連結詳細資料
FHIR 服務中的 Patient-everything 作業會以不同方式處理患者連結,讓您更全面地檢視患者。
注意
連結也可參考 RelatedPerson
。 現在,RelatedPerson
資源不會在 Patient-everything 中處理,也不會在套件組合中傳回。
現在,Patient-everything 作業將忽略 replaces 和 refer 連結,且連結的患者不會在套件組合中傳回。
如所述,seealso 連結參考另一個與原始患者同樣有效的患者。 執行 Patient-everything 作業之後,如果患者有其他患者的 seealso
連結,則作業會在每個 seealso
連結上執行 Patient-everything。 這表示,如果患者連結到其他五名具有 seealso
類型連結的患者,我們會對這五名患者中的每一名執行 Patient-everything。
注意
這設定為只追蹤一層深度的 seealso
連結。 其不會處理 seealso
連結的 seealso
連結。
最終連結類型為 replaced-by。 在此情況下,不會再使用原始患者資源,且 replaced-by
連結會指向應使用的患者。 此 Patient-everything
實作預設會在套件組合開始時包含作業結果,並警告患者不再有效。 這也是 Prefer
標頭設定為 handling=lenient
時的行為。
此外,您可以將 Prefer
標頭設定為 handling=strict
來改為擲回錯誤。 在此情況下,傳回錯誤碼 301 MovedPermanently
表示目前患者已過期,並傳回連結中包含的正確患者的標識碼。 傳回錯誤的 ContentLocation
標頭會指向正確且最新的要求。
注意
如果 replaced-by
連結存在,Prefer: handling=lenient
和結果以異步方式在多個套件組合中傳回,則只會在一個套件組合中傳回作業結果。
Patient-everything 回應順序
Patient-everything 作業會分階段傳回結果:
- 階段 1 除了任何
generalPractitioner
和managingOrganization
資源 ir 參考之外,也會傳回Patient
資源本身。 - 階段 2 和階段 3 都會傳回患者區間中的資源。 如果指定了
start
或end
查詢參數,階段 2 會從可依臨床日期篩選的區間傳回資源,而階段 3 會從無法依臨床日期篩選的區間傳回資源。 如果未指定這兩個參數,則會略過階段 2,而階段 3 會傳回所有患者區間資源。 - 階段 4 會傳回參考患者的任何裝置。
每個階段都會傳回套件組合的結果。 如果結果跨越多個頁面,套件組合中的下一個連結會指向該階段結果的下一頁。 傳回階段的所有結果之後,套件組合中的下一個連結會指向呼叫以起始下一個階段。
如果原始患者有任何 seealso
連結,則每個患者都會重複階段 1 到 4。
Patient-everything 的範例
以下是使用 Patient-everything 作業的一些範例。 除了這些範例,我們還有範例 REST 檔案,說明 seealso
和 replaced-by
行為的運作方式。
若要使用 Patient-everything 來查詢 2010 年至 2020 年間患者的「一切資訊」,請使用下列呼叫:
GET {FHIRURL}/Patient/{ID}/$everything?start=2010&end=2020
若要使用 Patient-everything 查詢患者的觀察和遭遇,請使用下列呼叫:
GET {FHIRURL}/Patient/{ID}/$everything?_type=Observation,Encounter
若要使用 Patient-everything 來查詢患者自 2021-05-27T05:00:00Z 之後的「一切資訊」,請使用下列呼叫:
GET {FHIRURL}/Patient/{ID}/$everything?_since=2021-05-27T05:00:00Z
如果這些呼叫中任一找到患者,您會收到 200 個回應,其中包含對應資源的 Bundle
。
下一步
既然您已了解如何使用 Patient-everything 作業,接著可以學習搜尋選項。 如需更多資訊,請參閱
FHIR® 是 HL7 的註冊商標,可與 HL7 的權限搭配使用。