本頁說明如何建立、更新、修補、查看、列出、擷取及刪除 FHIR 資源。
FHIR 資源可包含病患、裝置、觀察結果等資料。如需完整的 FHIR 資源清單,請參閱 FHIR 資源索引 (DSTU2、STU3、R4 或 R5)。
本頁的 REST 範例適用於 R4 FHIR 儲存庫,如果您使用 DSTU2 或 STU3 FHIR 儲存庫,則不保證能正常運作。如果您使用 DSTU2 或 STU3 FHIR 存放區,請參閱官方 FHIR 說明文件,瞭解如何將範例轉換為您使用的 FHIR 版本。
Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
建立 FHIR 資源
您必須先建立 FHIR 儲存庫,才能建立 FHIR 資源。
REST 和 Python 範例說明如何建立下列 FHIR 資源:
- 病患 (DSTU2、STU3、R4 和 R5) 資源
- 病患的 Encounter (DSTU2、 STU3、 R4 和 R5) 資源
- Encounter 的 Observation (DSTU2、 STU3、 R4 和 R5) 資源
其他所有語言的範例則說明如何建立一般 FHIR 資源。
詳情請參閱 projects.locations.datasets.fhirStores.fhir.create
。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
JSON 要求主體:
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
建立 Patient 資源後,請建立 Encounter 資源,說明病患與醫護人員之間的互動。
在 PATIENT_ID 欄位中,代入您建立 Patient 資源時,伺服器傳回的回應 ID。
下列 REST 範例適用於 R4 FHIR 儲存庫。Python 範例適用於 STU3 FHIR 儲存庫。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:建立 Patient 資源時,伺服器傳回的回應
JSON 要求主體:
{ "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
Python
在試用這個範例之前,請按照Python「Cloud Healthcare API 快速入門:使用用戶端程式庫」中的設定說明操作。 詳情請參閱 Cloud Healthcare API Python API 參考說明文件。
如要向 Cloud Healthcare API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
建立 Encounter 資源後,請建立與 Encounter 資源相關聯的 Observation 資源。Observation 資源會提供病患的心率測量結果,單位為每分鐘心跳數 (BPM) (80
in bpm
)。
下列 REST 範例適用於 R4 FHIR 儲存庫。Python 範例適用於 STU3 FHIR 儲存庫。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:建立 Patient 資源時,伺服器在回應中傳回的 ID
- ENCOUNTER_ID:建立 Encounter 資源時,伺服器傳回的回應 ID
JSON 要求主體:
{ "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
Python
在試用這個範例之前,請按照Python「Cloud Healthcare API 快速入門:使用用戶端程式庫」中的設定說明操作。 詳情請參閱 Cloud Healthcare API Python API 參考說明文件。
如要向 Cloud Healthcare API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
有條件地建立 FHIR 資源
下列 curl
範例說明如何使用 projects.locations.datasets.fhirStores.fhir.create
方法,有條件地建立 FHIR 資源。這個方法會實作 FHIR 條件式 create
互動 (DSTU2、STU3、R4、R5)。
您可以運用條件式建立功能,避免建立重複的 FHIR 資源。舉例來說,FHIR 伺服器中的每個 Patient 資源通常都有專屬 ID,例如病歷編號 (MRN)。如要建立新的 Patient 資源,並確保沒有相同 MRN 的 Patient 資源,請使用搜尋查詢有條件地建立新資源。只有在搜尋查詢沒有相符項目時,Cloud Healthcare API 才會建立新資源。
伺服器的回應取決於符合搜尋查詢的資源數量:
相符 | HTTP 回應碼 | 行為 |
---|---|---|
未有 | 201 CREATED |
建立新資源。 |
1 個 | 200 OK |
不會建立新資源。 |
超過一個 | 412 Precondition Failed |
不會建立新資源,並傳回 "search criteria are not selective enough" 錯誤。 |
如要使用條件式 create
互動,而非 create
互動,請在要求中指定包含 FHIR 搜尋查詢的 If-None-Exist
HTTP 標頭:
If-None-Exist: FHIR_SEARCH_QUERY
在 Cloud Healthcare API 第 1 版中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有這個參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
REST
以下範例說明如何使用 If-None-Exist: identifier=my-code-system|ABC-12345
HTTP 標頭建立 Observation 資源。只有在沒有現有 Observation 資源符合查詢 identifier=my-code-system|ABC-12345
時,Cloud Healthcare API 才會建立資源。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json" \ -H "If-None-Exist: identifier=my-code-system|ABC-12345" \ -d @request.json \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation"
下列輸出內容範例刻意顯示失敗的要求。如要查看成功要求的回應,請參閱「建立 FHIR 資源」。
如果有多個 Observation 資源符合查詢條件,Cloud Healthcare API 會傳回下列回應,且條件式建立要求會失敗:
{
"issue": [
{
"code": "conflict",
"details": {
"text": "ambiguous_query"
},
"diagnostics": "search criteria are not selective enough",
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
更新 FHIR 資源
下列範例說明如何使用 projects.locations.datasets.fhirStores.fhir.update
方法更新 FHIR 資源。這個方法會實作 FHIR 標準的更新互動 (DSTU2、STU3、R4 和 R5)。
更新資源時,您會更新資源的完整內容。 這與修補資源不同,後者只會更新資源的部分內容。
如果 FHIR 存放區已設定 enableUpdateCreate
,系統會將要求視為 upsert (更新或插入),如果資源存在,則會更新資源;如果資源不存在,則會使用要求中指定的 ID 插入資源。
要求主體必須包含 JSON 編碼的 FHIR 資源,要求標頭則必須包含 Content-Type: application/fhir+json
。資源必須包含 id
元素,其值與要求 REST 路徑中的 ID 相同。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
REST
下列範例說明如何更新 Observation 資源中的每分鐘心跳數 (BPM)。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- OBSERVATION_ID:Observation 資源 ID
- PATIENT_ID:病患資源 ID
- ENCOUNTER_ID:會診資源 ID
- BPM_VALUE:更新後「觀察」資源中的每分鐘心跳數 (BPM) 值
JSON 要求主體:
{ "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
APIs Explorer
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
您應該會收到如下的 JSON 回應:
Go
Node.js
Python
有條件地更新 FHIR 資源
下列範例說明如何呼叫 projects.locations.datasets.fhirStores.fhir.conditionalUpdate
方法,更新符合搜尋查詢的 FHIR 資源,而非依 ID 識別資源。這個方法會實作 FHIR 標準條件式更新互動 (DSTU2、STU3、R4 和 R5)。
條件式更新一次只能套用至一項 FHIR 資源。
伺服器傳回的回應取決於根據搜尋條件比對的結果數量:
- 一個相符項目:資源已成功更新,或系統傳回錯誤。
- 多個相符項目:要求會傳回
412 Precondition Failed
錯誤。 - 零個符合
id
的項目:如果搜尋條件未找出任何相符項目、提供的要求主體包含id
,且 FHIR 儲存庫已將enableUpdateCreate
設為true
,系統會使用要求主體中的id
建立 FHIR 資源。 - 沒有相符項目且沒有
id
:如果搜尋條件沒有相符項目,且提供的要求主體不含id
,系統會建立 FHIR 資源,並指派伺服器 ID,就像是使用projects.locations.datasets.fhirStores.fhir.create
建立資源一樣。
要求主體必須包含 JSON 編碼的 FHIR 資源,要求標頭則必須包含 Content-Type: application/fhir+json
。
在 Cloud Healthcare API 第 1 版中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有這個參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
REST
以下範例說明如何使用 curl
和 PowerShell 傳送 PUT
要求,藉由 Observation 的 ID (ABC-12345
in my-code-system
) 編輯 Observation 資源。Observation 會提供病患每分鐘心跳次數 (BPM) 的測量結果。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:病患資源 ID
- ENCOUNTER_ID:會診資源 ID
- BPM_VALUE:Observation 資源中的每分鐘心跳數 (BPM) 值
JSON 要求主體:
{ "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
APIs Explorer
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
您應該會收到如下的 JSON 回應:
修補 FHIR 資源
下列範例說明如何呼叫 projects.locations.datasets.fhirStores.fhir.patch
方法,修補 FHIR 資源。這個方法會實作 FHIR 標準修補互動 (DSTU2、STU3、R4 和 R5)。
修補資源時,您會套用 JSON 修補文件指定的作業,更新資源的部分內容。
要求必須包含 JSON 修補程式文件,且要求標頭必須包含 Content-Type: application/json-patch+json
。
下列範例說明如何修補 Observation 資源。病患每分鐘心跳次數 (BPM) 的 Observation 會使用 replace
patch 作業更新。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- OBSERVATION_ID:Observation 資源 ID
- BPM_VALUE:修補的 Observation 資源中每分鐘心跳數 (BPM) 值
JSON 要求主體:
[ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ]
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json-patch+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json-patch+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
在 FHIR 軟體包中執行 PATCH
要求
您可以在 FHIR 組合中指定 PATCH
要求 (僅限 FHIR R4)。在 FHIR 組合中執行 PATCH
要求,可讓您一次修補多個 FHIR 資源,不必為每個 FHIR 資源提出個別的修補要求。
如要在套件中提出 PATCH
要求,請在要求中的 resource
物件中指定下列資訊:
- 設為
Binary
的resourceType
欄位 - 設為
application/json-patch+json
的contentType
欄位 - 以 Base64 編碼的修補程式主體
確認 resource
物件如下所示:
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K"
}
以下顯示在 data
欄位中以 Base64 編碼的修補程式主體:
[
{
"op": "replace",
"path": "/birthdate",
"value": "1990-01-01"
}
]
下列範例說明如何在套裝組合中使用 PATCH
要求,修補您在「建立 FHIR 資源」中建立的 Patient 資源,將 birthDate
值設為 1990-01-01
:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父項資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:現有 Patient 資源的 ID
JSON 要求主體:
{ "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' { "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' { "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
有條件地修補 FHIR 資源
下列範例說明如何呼叫 projects.locations.datasets.fhirStores.fhir.conditionalPatch
方法,修補符合搜尋查詢的 FHIR 資源,而非依 ID 識別資源。這個方法會實作 FHIR 標準的條件式修補互動 (DSTU2、STU3、R4 和 R4)。
條件式修補程式一次只能套用至一項資源。如果搜尋條件找到多個相符項目,要求會傳回 412 Precondition Failed
錯誤。
在 Cloud Healthcare API 第 1 版中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有這個參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
REST
下列範例說明如何傳送 PATCH
要求,在 Observation 的 ID 為 ABC-12345
時,編輯 my-code-system
中的 Observation 資源。系統會使用 replace
patch 作業,更新病患每分鐘心跳次數 (BPM) 的觀察結果。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- BPM_VALUE:Observation 資源中的每分鐘心跳數 (BPM) 值
JSON 要求主體:
[ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ]
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json-patch+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345"
PowerShell
將要求主體儲存在名為 request.json
的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json-patch+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
APIs Explorer
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
您應該會收到如下的 JSON 回應:
取得 FHIR 資源
下列範例說明如何取得 FHIR 資源的內容。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
控制台
前往 Google Cloud 控制台的「FHIR viewer」頁面。
在「FHIR Store」(FHIR 儲存庫) 下拉式清單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選資源類型清單,請搜尋要顯示的資源類型。
按一下「資源類型」欄位。
在隨即出現的「Properties」(屬性) 下拉式清單中選取「Resource Type」(資源類型)。
輸入資源類型。
如要搜尋其他資源類型,請從隨即顯示的「Operators」(運算子) 下拉式清單中選取「OR」(或),然後輸入其他資源類型。
在資源類型清單中,選取要取得內容的資源類型。
在隨即顯示的資源表格中,選取或搜尋資源。
REST
下列範例說明如何使用 projects.locations.datasets.fhirStores.fhir.read
方法,取得前一節中建立的 Observation 資源詳細資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- OBSERVATION_ID:Observation 資源 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
取得所有 Encounter 資源詳細資料
下列範例說明如何查看 Encounter 資源的詳細資料,以及與 Encounter 相關的所有資源。
這個方法會實作下列 FHIR 版本中定義的 FHIR 擴充作業
Encounter-everything
:
REST
請使用 projects.locations.datasets.fhirStores.fhir.Encounter-everything
方法。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:資料集 IDFHIR_STORE_ID
:FHIR 儲存庫 IDENCOUNTER_ID
:會診資源 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter/ENCOUNTER_ID/\$everything"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter/ENCOUNTER_ID/\$everything" | Select-Object -Expand Content
c427ce3e-7677-400e-bc06-33a8cecfdd77
的 Encounter 資源上呼叫方法時,系統會傳回下列範例回應。這個資源是 gs://gcp-public-data--synthea-fhir-data-10-patients/fhir_r4_ndjson/
公開 Cloud Storage 值區中的合成資源。
取得所有病患區隔資源
下列範例說明如何取得與特定病患區間相關聯的所有資源 (DSTU2、STU3、R4 和 R5)。詳情請參閱 projects.locations.datasets.fhirStores.fhir.Patient-everything
。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
curl
如要取得病患區隔中的資源,請發出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- FHIR 儲存庫名稱
- 病患 ID
- 存取權杖
以下範例顯示使用 curl
的 GET
要求:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID/\$everything"
如果要求成功,伺服器會以 JSON 格式傳回類似以下範例的回應:
{ "entry": [ { "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" } }, { "resource": { "class": { "code": "IMP", "display": "inpatient encounter", "system": "http://hl7.org/fhir/v3/ActCode" }, "id": "ENCOUNTER_ID", "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "resourceType": "Encounter", "status": "finished", "subject": { "reference": "Patient/PATIENT_ID" } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": BPM_VALUE } } } ], "resourceType": "Bundle", "type": "searchset" }
PowerShell
如要取得病患區隔中的資源,請發出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- FHIR 儲存庫名稱
- 病患 ID
- 存取權杖
以下範例顯示如何使用 PowerShell 提出 GET
要求:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/RESOURCE_ID/$everything' | ConvertTo-Json
如果要求成功,伺服器會以 JSON 格式傳回類似以下範例的回應:
{ "entry": [ { "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" } }, { "resource": { "class": { "code": "IMP", "display": "inpatient encounter", "system": "http://hl7.org/fhir/v3/ActCode" }, "id": "ENCOUNTER_ID", "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "resourceType": "Encounter", "status": "finished", "subject": { "reference": "Patient/PATIENT_ID" } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": BPM_VALUE } } } ], "resourceType": "Bundle", "type": "searchset" }
Go
Java
Node.js
Python
取得依類型或日期篩選的病患區隔資源
下列範例說明如何取得與特定病患區間 (R4)相關聯的所有資源,並依類型清單和指定日期與時間進行篩選。詳情請參閱 projects.locations.datasets.fhirStores.fhir.Patient-everything
的說明。
下列 REST 範例適用於 R4 FHIR 儲存庫。
curl
如要取得特定類型且自指定日期起,位於病患區隔中的資源,請提出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- FHIR 儲存庫名稱
- 病患 ID
- 查詢字串,內含以半形逗號分隔的資源類型清單和開始日期
- 存取權杖
以下範例顯示使用 curl
的 GET
要求:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID/\$everything?_type=RESOURCE_TYPES&_since=DATE"
如果要求成功,伺服器會以 JSON 格式傳回符合指定條件的所有資源。
PowerShell
如要取得特定類型且自指定日期起,位於病患區隔中的資源,請提出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- FHIR 儲存庫名稱
- 病患 ID
- 查詢字串,內含以半形逗號分隔的資源類型清單和開始日期
- 存取權杖
以下範例顯示如何使用 PowerShell 提出 GET
要求:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/RESOURCE_ID/$everything?_type=RESOURCE_TYPES&_since=DATE' | ConvertTo-Json
如果要求成功,伺服器會以 JSON 格式傳回符合指定條件的所有資源。
列出 FHIR 資源版本
您可以列出 FHIR 資源的歷史版本,包括目前版本和所有已刪除的版本。這項功能可讓您執行下列操作:
- 追蹤病歷、藥物或照護計畫的變更。
- 如果 FHIR 資源包含不正確的資料,您可以查看歷史版本,判斷不正確的資料是在何時輸入,並復原正確的資訊。
- 提供完整的稽核追蹤記錄,確保符合法規要求。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
控制台
前往 Google Cloud 控制台的「FHIR viewer」頁面。
在「FHIR store」(FHIR 儲存庫) 選單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選 FHIR 資源類型清單,請搜尋要顯示的資源類型。
按一下「資源類型」欄位。
在隨即出現的「Properties」(屬性) 下拉式清單中選取「Resource Type」(資源類型)。
輸入 FHIR 資源類型。
在 FHIR 資源類型清單中,選取資源類型。
在隨即顯示的 FHIR 資源表格中,選取或搜尋資源。
如要查看及比較 FHIR 資源的歷史版本,請按一下「Overview」(總覽) 分頁標籤,然後執行下列操作:
- 如要查看 FHIR 資源的歷來版本,請在「版本 ID」的同一列中,按一下「查看歷來版本」。 在「Select a resource version」(選取資源版本) 窗格中,選取版本,然後按一下「Confirm」(確認)。版本中的資料會填入「總覽」、「元素」和「JSON」分頁。
- 如要比較兩個版本的 FHIR 資源,請在「版本 ID」所在的同一列中,按一下「比較資源版本」。 在「選取要比較的資源版本」窗格中,選取兩個資源版本,然後按一下「確認」。系統會以差異檢視畫面顯示這兩個資源版本,左側是您選取的第一個版本,右側則是第二個版本。
REST
請使用 projects.locations.datasets.fhirStores.fhir.history
方法。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:FHIR 儲存庫的父項資料集FHIR_STORE_ID
:FHIR 儲存庫 IDRESOURCE_TYPE
:FHIR 資源類型RESOURCE_ID
:FHIR 資源 ID
如要傳送要求,請選擇以下其中一個選項:
curl
下列範例說明如何列出 Observation 資源的所有版本。原始建立後,系統更新了「觀察」一次,變更病患每分鐘心跳次數 (BPM)。執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history"
PowerShell
下列範例說明如何列出 Observation 資源的所有版本。原始建立後,系統更新了「觀察」一次,變更病患每分鐘心跳次數 (BPM)。執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history" | Select-Object -Expand Content
{ "entry": [ { "resource": { "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-02T00:00:00+00:00", "versionId": "MTU0MTE5MDk5Mzk2ODcyODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 85 } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } } } ], "resourceType": "Bundle", "type": "history" }
Go
Java
Node.js
Python
擷取 FHIR 資源版本
下列範例說明如何擷取特定版本的 FHIR 資源。如要尋找特定版本,可以列出 FHIR 資源的版本,然後查看該版本的資訊。版本 ID 位於 "versionId"
欄位中。舉例來說,請參閱下列 JSON 主體,其中醒目顯示了「列出 FHIR 資源版本」中 Observation 資源的版本 ID:
{ "entry": [ { "resource": { "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-02T00:00:00+00:00", "versionId": "MTU0MTE5MDk5Mzk2ODcyODAwMA" }, ... { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, ... }
下列範例會使用「建立 FHIR 資源」中建立的資源,並說明如何查看 Observation 資源。REST 範例適用於 R4 FHIR 儲存庫。Go、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
控制台
前往 Google Cloud 控制台的「FHIR viewer」頁面。
在「FHIR store」(FHIR 儲存庫) 選單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選 FHIR 資源類型清單,請搜尋要顯示的資源類型。
按一下「資源類型」欄位。
在隨即出現的「Properties」(屬性) 下拉式清單中選取「Resource Type」(資源類型)。
輸入 FHIR 資源類型。
在 FHIR 資源類型清單中,選取資源類型。
在隨即顯示的 FHIR 資源表格中,選取或搜尋資源。
如要查看特定版本的 FHIR 資源,請按照下列步驟操作:
- 按一下「總覽」分頁標籤。
- 在「版本 ID」所在的列中,按一下「查看歷來版本」。
- 在「Select a resource version」(選取資源版本) 窗格中,選取版本,然後按一下「Confirm」(確認)。版本中的資料會填入「總覽」、「元素」和「JSON」分頁。
REST
請使用 projects.locations.datasets.fhirStores.fhir.vread
方法。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:FHIR 儲存庫的父項資料集FHIR_STORE_ID
:FHIR 儲存庫 IDRESOURCE_TYPE
:FHIR 資源類型RESOURCE_ID
:FHIR 資源 IDRESOURCE_VERSION
:FHIR 資源版本
如要傳送要求,請選擇以下其中一個選項:
curl
下列範例說明如何列出 Observation 資源的所有版本。原始建立後,系統更新了「觀察」一次,變更病患每分鐘心跳次數 (BPM)。執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history/RESOURCE_VERSION"
PowerShell
下列範例說明如何列出 Observation 資源的所有版本。原始建立後,系統更新了「觀察」一次,變更病患每分鐘心跳次數 (BPM)。執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history/RESOURCE_VERSION" | Select-Object -Expand Content
{ "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } }
Go
Java
Node.js
Python
刪除 FHIR 資源
下列範例說明如何呼叫 projects.locations.datasets.fhirStores.fhir.delete
方法,刪除 Observation FHIR 資源。
無論作業成功或失敗,伺服器都會傳回 200 OK
HTTP 狀態碼。如要確認資源是否已成功刪除,請搜尋或取得該資源,並確認資源是否存在。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- OBSERVATION_ID:Observation 資源 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
有條件地刪除 FHIR 資源
在 Cloud Healthcare API 第 1 版中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有這個參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
只有在 FHIR 資源的 identifier.system
為 my-code-system
且 identifier.value
為 ABC-12345
時,該資源才會符合查詢 ?identifier=my-code-system|ABC-12345
。如果 FHIR 資源符合查詢條件,Cloud Healthcare API 就會刪除該資源。
如果查詢使用 identifier
搜尋參數,且符合多個 FHIR 資源,Cloud Healthcare API 會傳回 "412 - Condition not selective enough"
錯誤。如要個別刪除資源,請按照下列步驟操作:
下列範例說明如何有條件地刪除符合搜尋查詢的 FHIR 資源,而不是依據 ID 識別 FHIR 資源。搜尋查詢會使用 Observation 的 ID (ABC-12345
中的 my-code-system
) 比對並刪除 Observation 資源。
REST
請使用 projects.locations.datasets.fhirStores.fhir.conditionalDelete
方法。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:FHIR 儲存庫的父項資料集FHIR_STORE_ID
:FHIR 儲存庫 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
刪除 FHIR 資源的歷史版本
下列範例說明如何使用 projects.locations.datasets.fhirStores.fhir.Resource-purge
方法,刪除 FHIR 資源的所有歷史版本。
只有具備 roles/healthcare.fhirStoreAdmin
角色的使用者 (呼叫者) 才能呼叫 projects.locations.datasets.fhirStores.fhir.Resource-purge
方法;具備 roles/healthcare.fhirResourceEditor
角色的使用者無法呼叫這個方法。如要允許呼叫端刪除 FHIR 資源的歷史版本,請採取下列任一做法:
- 確認呼叫者具備
roles/healthcare.fhirStoreAdmin
角色。 - 建立具有
healthcare.fhirResources.purge
權限的自訂 IAM 角色,並將該角色指派給呼叫者。
這些範例會使用「建立 FHIR 資源」中建立的資源,並說明如何刪除 Observation 資源的歷史版本。
下列 REST 範例適用於 R4 FHIR 儲存庫。Go、Java、Node.js 和 Python 範例適用於 STU3 FHIR 存放區。
REST
請使用 projects.locations.datasets.fhirStores.fhir.Resource-purge
方法。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:FHIR 儲存庫的父項資料集FHIR_STORE_ID
:FHIR 儲存庫 IDRESOURCE_TYPE
:FHIR 資源類型RESOURCE_ID
:FHIR 資源 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/$purge"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/$purge" | Select-Object -Expand Content
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。