このページでは、FHIR リソースの作成、更新、パッチ適用、表示、一覧表示、取得、削除を行う方法を説明します。
FHIR リソースには、患者、デバイス、モニタリングなどに関するデータを含めることができます。FHIR リソースの一覧については、FHIR リソース インデックス(DSTU2、STU3、R4)をご覧ください。
このページの curl
と PowerShell のサンプルは R4 FHIR ストアで動作し、DSTU2 または STU3 の FHIR ストアを使用している場合には動作が保証されません。DSTU2 または STU3 の FHIR ストアを使用している場合は、公式の FHIR ドキュメントで、サンプルをお使いの FHIR バージョンに変換する方法をご確認ください。
Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
FHIR リソースの作成
FHIR リソースを作成する前に、FHIR ストアを作成する必要があります。
curl
、PowerShell、Python のサンプルでは、次の FHIR リソースを作成する方法を示しています。
- Patient(DSTU2、STU3、R4)リソース
- Patient の Encounter(DSTU2、STU3、R4)リソース
- Encounter の Observation(DSTU2、STU3、R4)リソース
その他のすべての言語のサンプルでは、汎用 FHIR リソースの作成方法を示しています。
詳細については、projects.locations.datasets.fhirStores.fhir.create
をご覧ください。
以下の curl
と PowerShell のサンプルは、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 を置き換えます。
以下の curl
と PowerShell のサンプルは、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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Encounter リソースを作成したら、Encounter リソースに関連付けられた Observation リソースを作成します。この Observation リソースでは、患者の 1 分あたりの心拍数(BPM)(bpm
の 80
)の測定値を記録します。
以下の curl
と PowerShell のサンプルは、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
このサンプルを試す前に、クライアント ライブラリを使用した 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)を実装します。
条件付き作成を使用すると、重複する FHIR リソースの作成を回避できます。たとえば、FHIR サーバーの各患者リソースには、通常、医療記録番号(MRN)などの一意の識別子があります。新しい Patient リソースを作成し、同じ MRN を持つ Patient リソースが存在しないようにするには、検索クエリを使用して新しいリソースを条件付きで作成します。Cloud Healthcare API は、検索クエリで一致がない場合にのみ新しいリソースを作成します。
サーバーのレスポンスは、検索クエリに一致したリソースの数によって異なります。
一致する | HTTP レスポンス コード | 動作 |
---|---|---|
ゼロ | 201 CREATED |
新しいリソースを作成します。 |
一つ | 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 v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
REST
次のサンプルは、If-None-Exist: identifier=my-code-system|ABC-12345
HTTP ヘッダーを使用して Observation リソースを作成する方法を示しています。Cloud Healthcare API は、クエリ identifier=my-code-system|ABC-12345
に一致する既存の Observation リソースがない場合にのみリソースを作成します。
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)を実装します。
リソースを更新すると、そのリソースのコンテンツ全体が更新されます。 これは、リソースの一部のみを更新するリソースのパッチ適用とは対照的です。
FHIR ストアに enableUpdateCreate
が設定されていると、リソースが存在する場合、または存在せず指定された ID でリソースを挿入する場合は、リクエストはリソースを更新する Upsert(Update または Insert)として扱われます。
リクエストの本文には、JSON エンコードされた FHIR リソース、リクエスト ヘッダーには Content-Type: application/fhir+json
を含める必要があります。リソースには、リクエストの REST パスの ID と同じ値を持つ id
要素を含める必要があります。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
REST
次のサンプルは、Observation リソースの 1 分あたりの心拍数(BPM)を更新する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
- OBSERVATION_ID: Observation リソース ID
- PATIENT_ID: Patient リソース ID
- ENCOUNTER_ID: Encounter リソース ID
- BPM_VALUE: 更新された Observation リソースの 1 分あたりの心拍数(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
API Explorer
リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
Go
Node.js
Python
FHIR リソースの条件付き更新
次のサンプルは、projects.locations.datasets.fhirStores.fhir.conditionalUpdate
メソッドを呼び出して、ID でリソースを特定するのではなく、検索クエリで一致する FHIR リソースを更新する方法を示しています。このメソッドには、FHIR 標準条件付き更新インタラクション(DSTU2、STU3、R4)を実装します。
条件付き更新を適用できるのは、一度に 1 つの FHIR リソースのみです。
サーバーから返されるレスポンスは、検索条件に基づいて一致した件数によって異なります。
- 1 件一致: リソースが正常に更新されるか、エラーが返されます。
- 複数件一致: リクエストにより
412 Precondition Failed
エラーが返されます。 id
でゼロ一致: 検索条件でゼロ一致があり、指定したリクエストの本文にid
が含まれ、FHIR ストアにenableUpdateCreate
がtrue
に設定されている場合、リクエスト本文のid
を使用して FHIR リソースが作成されます。id
なしでゼロ一致: 検索条件でゼロ一致があり、指定したリクエストの本文にid
が含まれていない場合、projects.locations.datasets.fhirStores.fhir.create
を使用してリソースが作成されたかのように、サーバーによって割り当てられた ID で FHIR リソースが作成されます。
リクエストの本文には、JSON エンコードされた FHIR リソース、リクエスト ヘッダーには Content-Type: application/fhir+json
を含める必要があります。
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
REST
次のサンプルは、curl
を使用して PUT
リクエストを送信し、Observation の識別子(my-code-system
内の ABC-12345
)を使用して Observation リソースを編集する方法を示しています。Observation には、患者の 1 分あたりの心拍数(BPM)の測定値が記録されます。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
- PATIENT_ID: Patient リソース ID
- ENCOUNTER_ID: Encounter リソース ID
- BPM_VALUE: Observation リソースの 1 分あたりの心拍数(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
API Explorer
リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
FHIR リソースのパッチ適用
次のサンプルは、projects.locations.datasets.fhirStores.fhir.patch
メソッドを呼び出して FHIR リソースにパッチを適用する方法を示しています。このメソッドには、FHIR 標準パッチ適用インタラクション(DSTU2、STU3、R4)を実装します。
リソースにパッチを適用するときは、JSON パッチのドキュメントで指定された操作を利用してリソースの一部を更新します。
リクエストには JSON パッチ ドキュメント、リクエスト ヘッダーには Content-Type: application/json-patch+json
を含める必要があります。
次のサンプルは、Observation リソースにパッチを適用する方法を示しています。患者の 1 分あたりの心拍数(BPM)の Observation は、replace
パッチ オペレーションを使用して更新されます。
以下の curl
と PowerShell のサンプルは、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 リソースの 1 分あたりの心拍数(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
リクエストを一括で使用して、1990-01-01
のbirthDate
値を取得するために、FHIR リソースの作成で作成した Patient リソースにパッチを適用する方法を説明します。
リクエストのデータを使用する前に、次のように置き換えます。
- 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
メソッドを呼び出して、ID でリソースを特定するのではなく、検索クエリで一致する FHIR リソースにパッチを適用する方法を示しています。このメソッドは、FHIR 標準条件付きパッチ適用インタラクション(DSTU2、STU3、R4)を実装します。
条件付きパッチを適用できるのは、一度に 1 つのリソースのみです。検索条件が複数件と一致した場合、リクエストは 412 Precondition Failed
エラーを返します。
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
REST
次のサンプルは、Observation の識別子が my-code-system
の ABC-12345
の場合に、curl
と PowerShell を使用して PATCH
リクエストを送信し、Observation リソースを編集する方法を示しています。患者の 1 分あたりの心拍数(BPM)の Observation は、replace
パッチ オペレーションを使用して更新されます。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID
- LOCATION: データセットの場所
- DATASET_ID: FHIR ストアの親データセット
- FHIR_STORE_ID: FHIR ストア ID
- BPM_VALUE: Observation リソースの 1 分あたりの心拍数(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
API Explorer
リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
FHIR リソースを取得する
次のサンプルは、projects.locations.datasets.fhirStores.fhir.read
メソッドを使用して FHIR リソースの内容を取得する方法を示しています。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。
Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
Console
FHIR リソースの内容を取得する手順は、次のとおりです。
Google Cloud コンソールで、[FHIR ビューア] ページに移動します。
[FHIR ストア] プルダウン リストでデータセットを選択し、データセット内の FHIR ストアを選択します。
リソースタイプのリストをフィルタするには、表示するリソースタイプを検索します。
[リソースタイプ] フィールドをクリックします。
表示される [プロパティ] プルダウン リストで、[リソースタイプ] を選択します。
リソースタイプを入力します。
別のリソースタイプを検索するには、表示される [演算子] プルダウン リストから [OR] を選択し、別のリソースタイプを入力します。
リソースタイプの一覧から、内容を取得するリソースのリソースタイプを選択します。
表示されるリソースの表で、リソースを選択するか検索します。
REST
次のサンプルは、前のセクションで作成した 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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
Go
Java
Node.js
Python
すべての Encounter リソースの詳細を取得する
次のサンプルは、projects.locations.datasets.fhirStores.fhir.Encounter-everything
メソッドを使用して、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
: Encounter リソース 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)と関連付けられたすべてのリソースを取得する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.Patient-everything
をご覧ください。
以下の curl
と PowerShell のサンプルは、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
をご覧ください。
以下の curl
と PowerShell のサンプルは、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 リソースのすべての履歴バージョンを一覧表示する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.history
をご覧ください。
このサンプルでは、FHIR リソースの作成で作成したリソースを使用し、Observation リソースのバージョンを一覧表示する方法を示します。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
curl
次のサンプルは、Observation リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(BPM)を変更するために、最初に作成されてから一度更新されました。
現在のバージョンと削除されたバージョンを含む FHIR リソースのすべてのバージョンを一覧表示するには、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/RESOURCE_TYPE/RESOURCE_ID/_history"
リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。この例では、2 つのバージョンの Observation が返されます。最初のバージョンでは、患者の心拍数は 75 BPM でした。2 番目のバージョンでは、患者の心拍数は 85 BPM でした。
{ "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" }
PowerShell
次のサンプルは、Observation リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(BPM)を変更するために、最初に作成されてから一度更新されました。
現在のバージョンと削除されたバージョンを含む FHIR リソースのすべてのバージョンを一覧表示するには、GET
リクエストを送信して次の情報を指定します。
- 親データセットの名前
- FHIR ストアの名前
- リソースのタイプと ID
- アクセス トークン
次のサンプルは、Windows 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/RESOURCE_TYPE/RESOURCE_ID/_history" | Select-Object -Expand Content
リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。この例では、2 つのバージョンの Observation が返されます。最初のバージョンでは、患者の心拍数は 75 BPM でした。2 番目のバージョンでは、患者の心拍数は 85 BPM でした。
{ "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 リソース バージョンの取得
次のサンプルは、リソースの特定のバージョンを取得する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.vread
をご覧ください。
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 リソースを表示する方法を示しています。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
curl
特定のバージョンの FHIR リソースを取得するには、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/RESOURCE_TYPE/RESOURCE_ID/_history/RESOURCE_VERSION"
リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。この例では、患者の心拍数が 75 BPM であった最初のバージョンの Observation が返されます。
{ "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 } }
PowerShell
特定のバージョンの FHIR リソースを取得するには、GET
リクエストを送信して次の情報を指定します。
- 親データセットの名前
- FHIR ストアの名前
- リソースのタイプと ID
- リソース バージョン
- アクセス トークン
次のサンプルは、curl
を使用した 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/RESOURCE_TYPE/RESOURCE_ID/RESOURCE_VERSION/_history" | Select-Object -Expand Content
リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。この例では、患者の心拍数が 75 BPM であった最初のバージョンの Observation が返されます。
{ "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 ステータスコードを返します。リソースが正常に削除されたことを確認するには、リソースを検索するか取得して、そのリソースが存在するかどうかを確認します。
以下の curl
と PowerShell のサンプルは、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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
Go
Java
Node.js
Python
FHIR リソースを条件付きで削除する
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
FHIR リソースがクエリ ?identifier=my-code-system|ABC-12345
と一致するのは、リソースの identifier.system
が my-code-system
で、identifier.value
が ABC-12345
の場合に限られます。FHIR リソースがクエリと一致する場合、Cloud Healthcare API はリソースを削除します。
クエリで identifier
検索パラメータを使用して複数の FHIR リソースと一致する場合、Cloud Healthcare API は "412 - Condition not selective enough"
エラーを返します。リソースを個別に削除する手順は次のとおりです。
次のサンプルは、ID で FHIR リソースを特定するのではなく、検索クエリで一致する FHIR リソースを条件付きで削除する方法を示しています。検索クエリは、Observation の識別子(my-code-system
の ABC-12345
)を使用して 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 application-default 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 application-default 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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
FHIR リソースの履歴バージョンの削除
次のサンプルは、FHIR リソースのすべての履歴バージョンを削除する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.Resource-purge
をご覧ください。
projects.locations.datasets.fhirStores.fhir.Resource-purge
メソッドの呼び出しは、roles/healthcare.fhirStoreAdmin
ロールを持つユーザー(呼び出し元)に限定されています。roles/healthcare.fhirResourceEditor
ロールを持つユーザーはこのメソッドを呼び出すことができません。呼び出し元が FHIR リソースの履歴バージョンを削除できるようにするには、次のいずれかを行います。
- 呼び出し元に
roles/healthcare.fhirStoreAdmin
のロールがあることを確認する。 healthcare.fhirResources.purge
権限を持つカスタム IAM ロールを作成し、そのロールを呼び出し元に割り当てる。
このサンプルは、FHIR リソースの作成で作成したリソースを使用して、Observation リソースのすべてのバージョンを削除する方法を示しています。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
curl
FHIR リソースのすべての履歴バージョンを削除するには、DELETE
リクエストを送信して次の情報を指定します。
- 親データセットの名前
- FHIR ストアの名前
- リソースのタイプと ID
- アクセス トークン
次のサンプルは、curl
を使用した DELETE
リクエストを示しています。
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/\$purge"
リクエストが成功すると、サーバーは JSON 形式の空のレスポンス本文を返します。
{}
PowerShell
FHIR リソースのすべての履歴バージョンを削除するには、DELETE
リクエストを送信して次の情報を指定します。
- 親データセットの名前
- FHIR ストアの名前
- リソースのタイプと ID
- アクセス トークン
次のサンプルは、Windows PowerShell を使用した DELETE
リクエストを示しています。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Delete ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/$purge" | ConvertTo-Json
リクエストが成功すると、サーバーは JSON 形式の空のレスポンス本文を返します。
{}