本頁面說明如何建立、更新、修補、查看、列出、擷取及刪除 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 資源:
其他語言的範例會說明如何建立一般 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 欄位中,將 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
在試用這個範例之前,請先按照 Cloud Healthcare API 快速入門:使用用戶端程式庫中的操作說明設定 Python。詳情請參閱 Cloud Healthcare API Python API 參考說明文件。
如要向 Cloud Healthcare API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
建立「接觸」資源後,請建立與「接觸」資源相關聯的「觀察」資源。觀察資源會以每分鐘心跳數 (BPM) 的形式提供患者心率的測量值 (bpm
中的 80
)。
下列 REST 範例可搭配 R4 FHIR 儲存庫使用。這個 Python 範例可搭配 STU3 FHIR 儲存庫使用。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID: Google Cloud 專案的 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:建立病患資源時,伺服器在回應中傳回的 ID
- ENCOUNTER_ID:建立接觸事件資源時,伺服器傳回的回應中所含的 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
在試用這個範例之前,請先按照 Cloud Healthcare API 快速入門:使用用戶端程式庫中的操作說明設定 Python。詳情請參閱 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)。如要建立新的病患資源,並確保沒有相同 MRN 的病患資源,請使用搜尋查詢建立新資源。只有在沒有相符的搜尋查詢時,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.0 中,條件式作業會專門使用 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
下列範例說明如何更新觀察資源中的每分鐘節拍數 (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:更新後的 Observation 資源中每分鐘心跳 (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
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API 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
,系統會使用伺服器指派的 ID 建立 FHIR 資源,就像是使用projects.locations.datasets.fhirStores.fhir.create
建立資源一樣。
要求主體必須包含 JSON 編碼的 FHIR 資源,要求標頭則必須包含 Content-Type: application/fhir+json
。
在 Cloud Healthcare API 1.0 中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有此參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
REST
以下範例說明如何使用 curl
和 PowerShell 傳送 PUT
要求,藉此使用觀察值的 ID (my-code-system
中的 ABC-12345
) 編輯觀察值資源。觀察值會提供每分鐘心跳次數 (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
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
修補 FHIR 資源
以下範例說明如何呼叫 projects.locations.datasets.fhirStores.fhir.patch
方法來修補 FHIR 資源。這個方法會實作 FHIR 標準修補程序互動 (DSTU2、STU3、R4 和 R5)。
修補資源時,您可以套用 JSON 修補檔文件中指定的作業,更新部分資源。
要求必須包含 JSON 修補檔案,且要求標頭必須包含 Content-Type: application/json-patch+json
。
下列範例說明如何修補 Observation 資源。使用 replace
修補作業更新患者每分鐘心跳次數 (BPM) 的觀察值。
下列 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
物件中指定下列資訊:
resourceType
欄位設為Binary
contentType
欄位設為application/json-patch+json
- 以 Base64 編碼的修補內容主體
確認 resource
物件如下所示:
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K"
}
以下是 data
欄位中以 Base64 編碼的修補檔主體:
[
{
"op": "replace",
"path": "/birthdate",
"value": "1990-01-01"
}
]
以下範例說明如何在軟體包中使用 PATCH
要求,以便修補您在建立 FHIR 資源中建立的患者資源,讓 birthDate
值為 1990-01-01
:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
- PATIENT_ID:現有病患資源的 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.0 中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有此參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
REST
以下範例說明如何傳送 PATCH
要求來編輯 Observation 資源,前提是 Observation 的 ID 在 my-code-system
中為 ABC-12345
。replace
修補程式作業會更新患者每分鐘心跳 (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
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
取得 FHIR 資源
下列範例說明如何取得 FHIR 資源的內容。
下列 REST 範例可搭配 R4 FHIR 儲存庫使用。Go、Java、Node.js 和 Python 範例可搭配 STU3 FHIR 儲存庫使用。
控制台
前往 Google Cloud 控制台的「FHIR viewer」頁面。
在「FHIR Store」下拉式清單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選資源類型清單,請搜尋要顯示的資源類型。
按一下「Resource Type」(資源類型) 欄位。
在隨即出現的「Properties」下拉式清單中,選取「Resource Type」。
輸入資源類型。
如要搜尋其他資源類型,請從隨即顯示的「運算子」下拉式清單中選取「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
開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
取得所有遭遇資源詳細資料
下列範例說明如何查看交互事件資源的詳細資料,以及與交互事件相關的所有資源。
這個方法會實作 FHIR 擴充作業 Encounter-everything
,該作業定義於下列 FHIR 版本:
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 儲存庫」選單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選 FHIR 資源類型清單,請搜尋要顯示的資源類型。
按一下「Resource type」(資源類型) 欄位。
在隨即出現的「Properties」下拉式清單中,選取「Resource Type」。
輸入 FHIR 資源類型。
在 FHIR 資源類型清單中,選取所需資源類型。
在顯示的 FHIR 資源表格中,選取或搜尋資源。
如要查看及比較 FHIR 資源的歷史版本,請按一下「總覽」分頁標籤,然後執行下列操作:
- 如要查看 FHIR 資源的歷來版本,請在「版本 ID」所在的同一列中,按一下「查看歷來版本」。在「Select a resource version」窗格中選取版本,然後按一下「Confirm」。版本中的資料會填入「總覽」、「元素」和「JSON」分頁中。
- 如要比較兩個 FHIR 資源版本,請在「Version ID」所在的同一列中,按一下「Compare resource versions」。在「選取要比較的資源版本」窗格中,選取兩個資源版本,然後按一下「確認」。兩個資源版本會顯示在差異檢視畫面中,左側顯示您選取的第一個版本,右側則顯示第二個版本。
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 儲存庫」選單中選取資料集,然後選取資料集中的 FHIR 儲存庫。
如要篩選 FHIR 資源類型清單,請搜尋要顯示的資源類型。
按一下「Resource type」(資源類型) 欄位。
在隨即出現的「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
開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
Go
Java
Node.js
Python
條件式刪除 FHIR 資源
在 Cloud Healthcare API 1.0 中,條件式作業會專門使用 identifier
搜尋參數 (如果 FHIR 資源類型有此參數),判斷哪些 FHIR 資源符合條件式搜尋查詢。
只有在資源的 identifier.system
為 my-code-system
,且 identifier.value
為 ABC-12345
時,FHIR 資源才會與查詢 ?identifier=my-code-system|ABC-12345
相符。如果 FHIR 資源符合查詢,Cloud Healthcare API 就會刪除該資源。
如果查詢使用 identifier
搜尋參數,且相符項目為多個 FHIR 資源,Cloud Healthcare API 會傳回 "412 - Condition not selective enough"
錯誤。如要個別刪除資源,請按照下列步驟操作:
以下範例說明如何根據搜尋查詢條件刪除 FHIR 資源,而不是透過 ID 識別 FHIR 資源。搜尋查詢會使用觀察點的 ID (my-code-system
中的 ABC-12345
) 比對並刪除觀察點資源。
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
開啟方法參考頁面。系統會在頁面右側開啟 API 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) 和空白回應。