匯出 FHIR 數據
藉由在 FHIR 服務中使用大量$export
作業,您可以匯出數據,如 HL7 FHIR® 大量資料存取規格中所述。
在您嘗試使用 $export
之前,請確定您的 FHIR 服務已設定為使用 Azure Data Lake Storage Gen2 帳戶進行連線。 若要設定匯出設定並建立 Data Lake Storage Gen2 帳戶,請參閱執行匯出設定。
$export
呼叫端點
設定 FHIR 服務以使用 Data Lake Storage Gen2 帳戶連線之後,您可以呼叫$export
端點,而 FHIR 服務會將數據匯出至記憶體帳戶內的 Azure Blob 儲存體 容器。 下列範例要求會將所有資源匯出至以名稱 ({{containerName}}
) 指定的容器。 注意:如果您想要在要求中指定 {{containerName}}
,您必須先在Data Lake Storage Gen2 帳戶中建立容器。
GET {{fhirurl}}/$export?_container={{containerName}}
如果您未在要求中指定容器名稱(例如呼叫 GET {{fhirurl}}/$export
),則會為匯出的數據建立具有自動產生名稱的新容器。
如需 FHIR $export
API 規格的一般資訊,請參閱 HL7 FHIR 匯出要求流程 檔。
FHIR 服務支援 $export
下列層級:
- 系統:
GET {{fhirurl}}/$export
- 病患:
GET {{fhirurl}}/Patient/$export
- 患者群組*:
GET {{fhirurl}}/Group/[ID]/$export
*FHIR 服務會匯出所有參考的資源,但不會匯出群組資源本身的特性。
數據會在多個檔案中匯出。 每個檔案只包含一種類型的資源。 個別檔案中的資源數目為 。 資源數目上限是以系統效能為基礎。 它目前設定為 5,000,但可以變更。
結果是您可能會取得資源類型的多個檔案。 檔名會遵循 格式 <resourceName>-<number>-<number>.ndjson
。 不保證檔案的順序會對應至資料庫中資源的任何順序。
注意
Patient/$export
如果資源位於多個群組或多個資源的區間中,則和 Group/[ID]/$export
可以匯出重複的資源。
除了檢查記憶體帳戶中導出的檔案是否存在之外,您還可以透過 FHIR 服務回應中傳回標頭中的 Content-Location
URL 來檢查$export
作業狀態。 如需詳細資訊,請參閱 HL7 中的 大量數據狀態要求 檔。
將您的 FHIR 數據匯出至 Data Lake Storage Gen2
目前,FHIR 服務支援 $export
Data Lake Storage Gen2 帳戶,但有下列限制:
- Data Lake Storage Gen2 提供 階層式命名空間,但無法將作業的目標
$export
設為容器內的特定子目錄。 FHIR 服務只能指定導出的目的地容器,其中會建立每個$export
作業的新資料夾。 $export
作業完成且所有數據都已寫入資料夾內之後,FHIR 服務不會再次將任何專案匯出至該資料夾。 後續匯出至相同的容器將會位於新建立的資料夾內。
若要將數據匯出至防火牆後方的記憶體帳戶,請參閱 設定匯出的設定。
設定和參數
標題
必須為 $export
作業設定兩個必要的標頭參數。 這些值是根據目前的 HL7 $export規格來設定。
- Accept:
application/fhir+json
- Prefer:
respond-async
查詢參數
FHIR 服務支援下列查詢參數來篩選導出的數據。 所有這些參數都是選擇性的。
查詢參數 | 由 FHIR 規格定義? | 描述 |
---|---|---|
_outputFormat |
Yes | 目前支援三個值來對齊 FHIR 規格: application/fhir+ndjson 、 application/ndjson 或只是 ndjson 。 所有導出作業都會傳回 .ndjson 檔案,而傳遞的值不會影響程式代碼行為。 |
_since |
Yes | 可讓您只匯出自指定時間以來已修改的資源。 |
_type |
Yes | 可讓您指定要包含的資源類型。 例如, _type=Patient 只會傳回病患資源。 |
_typeFilter |
Yes | 若要要求更精細的篩選,您可以搭配 參數使用_typeFilter _type 。 參數的值 _typeFilter 是以逗號分隔的 FHIR 查詢清單,可進一步限制結果。 |
_container |
No | 指定設定的記憶體帳戶中應匯出數據的容器名稱。 如果指定了容器,數據就會匯出至該容器中的資料夾。 如果未指定容器,數據會匯出至具有自動產生名稱的新容器。 |
_till |
No | 可讓您匯出已修改到指定時間的資源。 此參數僅適用於系統層級匯出。 在此情況下,如果歷程記錄版本尚未停用或清除,匯出會保證真正的快照集檢視。 |
includeAssociatedData |
No | 可讓您匯出歷程記錄和虛刪除的資源。 此篩選不適用於 『_typeFilter』 查詢參數。 將值包含為 『_history』,以導出歷程記錄/非最新版本的資源。 將值包含為 『_deleted』,以匯出虛刪除的資源。 |
注意
只有與 FHIR 服務位於相同訂用帳戶中的記憶體帳戶,才能註冊為作業的 $export
目的地。
疑難排解
下列資訊可協助您解決匯出 FHIR 數據的問題。
作業停滯在不良狀態
在某些情況下,當 FHIR 服務嘗試匯出數據時,工作可能會卡在不良狀態。 當 Data Lake Storage Gen2 帳戶許可權尚未正確設定時,尤其可能發生此情況。
檢查作業狀態的 $export
其中一種方式是移至記憶體帳戶的 記憶體瀏覽器 ,並查看匯出容器中是否有任何 .ndjson
檔案。 如果檔案不存在且沒有其他 $export
作業正在執行,則目前的作業可能停滯在不良狀態。 在此情況下,您可以將 DELETE 要求傳送至 Content-Location 標頭中提供的 URL,以取消要求來取消 $export
作業
注意
在 FHIR 服務中,在服務停止作業並移至新作業之前,作業處於不良狀態的默認時間 $export
是 10 分鐘。
下一步
在本文中,您已瞭解如何使用 $export
作業匯出 FHIR 資源。 如需如何設定和使用其他匯出選項的資訊,請參閱:
注意
FHIR® 是 HL7 的註冊商標,在 HL7 的許可下使用。