このページでは、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 リソースを作成する方法を示しています。
- Patient(DSTU2、STU3、R4、R5)リソース
- Patient の 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 ストアで動作します。
コンソール
JSON を使用して FHIR リソースを FHIR ストアにアップロードするには、次の操作を行います。
- Google Cloud コンソールで、[FHIR ビューア] に移動します。
- [FHIR ストア] プルダウン リストでデータセットを選択し、データセット内の FHIR ストアを選択します。
- [アップロード] タブをクリックします。
-
テキスト領域に、JSON 形式の有効な FHIR リソースを入力します。次に例を示します。
注: 複数の FHIR リソース オブジェクトの JSON 配列を入力することもできます。{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
- [保存] をクリックします。アップロードが完了すると、FHIR ビューアでリソースを表示できます。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
このサンプルを試す前に、クライアント ライブラリを使用した Cloud Healthcare API クイックスタートにある Python の設定手順を実施してください。 詳細については、Cloud Healthcare API Python API のリファレンス ドキュメントをご覧ください。
Cloud Healthcare API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Encounter リソースを作成したら、Encounter リソースに関連付けられた Observation リソースを作成します。この Observation リソースでは、患者の 1 分あたりの心拍数(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: 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、R5)を実装します。
条件付き作成を使用すると、重複する FHIR リソースの作成を回避できます。たとえば、FHIR サーバーの各患者リソースには、通常、医療記録番号(MRN)などの一意の識別子があります。新しい患者リソースを作成し、同じ MRN を持つ患者リソースが存在しないことを確認するには、検索クエリを使用して新しいリソースを条件付きで作成します。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、R5)を実装します。
リソースを更新すると、そのリソースのコンテンツ全体が更新されます。 これは、リソースの一部のみを更新するリソースのパッチ適用とは対照的です。
FHIR ストアに enableUpdateCreate
が設定されていると、リソースが存在する場合、または存在せず指定された ID でリソースを挿入する場合は、リクエストはリソースを更新する Upsert(Update または Insert)として扱われます。
リクエストの本文には、JSON エンコードされた FHIR リソース、リクエスト ヘッダーには Content-Type: application/fhir+json
を含める必要があります。リソースには、リクエストの REST パスの ID と同じ値を持つ id
要素を含める必要があります。
次の REST サンプルは、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、R5)を実装します。
条件付き更新を適用できるのは、一度に 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、R5)を実装します。
リソースにパッチを適用するときは、JSON パッチのドキュメントで指定された操作を利用してリソースの一部を更新します。
リクエストには JSON パッチ ドキュメント、リクエスト ヘッダーには Content-Type: application/json-patch+json
を含める必要があります。
次のサンプルは、Observation リソースにパッチを適用する方法を示しています。患者の 1 分あたりの心拍数(BPM)の Observation は、replace
パッチ オペレーションを使用して更新されます。
次の 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 リソースの 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、R4)を実装します。
条件付きパッチを適用できるのは、一度に 1 つのリソースのみです。検索条件が複数件と一致した場合、リクエストは 412 Precondition Failed
エラーを返します。検索条件が一致しない場合、リクエストは 404 Not Found
エラーを返します。
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
REST
次のサンプルは、Observation の識別子が my-code-system
の ABC-12345
の場合に、Observation リソースを編集する PATCH
リクエストを送信する方法を示しています。患者の 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 リソースを取得する
次のサンプルでは、FHIR リソースの内容を取得する方法を示しています。
次の REST サンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
コンソール
Google Cloud コンソールで、[FHIR ビューア] ページに移動します。
[FHIR ストア] プルダウン リストでデータセットを選択し、データセット内の FHIR ストアを選択します。
リソースタイプのリストをフィルタするには、表示するリソースタイプを検索します。
[リソースタイプ] フィールドをクリックします。
表示される [プロパティ] プルダウン リストで、[リソースタイプ] を選択します。
リソースタイプを入力します。
別のリソースタイプを検索するには、表示される [演算子] プルダウン リストから [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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような 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
: 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、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 ビューア] ページに移動します。
[FHIR ストア] メニューでデータセットを選択し、データセット内の FHIR ストアを選択します。
FHIR リソースタイプのリストをフィルタするには、表示するリソースタイプを検索します。
[リソースタイプ] フィールドをクリックします。
表示される [プロパティ] プルダウン リストで、[リソースタイプ] を選択します。
FHIR リソースタイプを入力します。
FHIR リソースタイプの一覧で、リソースタイプを選択します。
表示される FHIR リソースの表で、リソースを選択するか検索します。
FHIR リソースの履歴バージョンを表示して比較するには、[概要] タブをクリックして、次の操作を行います。
- FHIR リソースの履歴バージョンを表示するには、[バージョン ID] と同じ行にある [履歴バージョンを表示] をクリックします。[リソース バージョンの選択] ペインで、バージョンを選択し、[確認] をクリックします。バージョンのデータは、[概要]、[要素]、[JSON] の各タブに表示されます。
- FHIR リソースの 2 つのバージョンを比較するには、[バージョン ID] と同じ行で、[リソース バージョンを比較] をクリックします。[比較するリソース バージョンを選択] ペインで、2 つのリソース バージョンを選択し、[確認] をクリックします。2 つのリソース バージョンが差分ビューに表示されます。左側に選択した最初のバージョン、右側に 2 番目のバージョンが表示されます。
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 リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(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 リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(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 ビューア] ページに移動します。
[FHIR ストア] メニューでデータセットを選択し、データセット内の FHIR ストアを選択します。
FHIR リソースタイプのリストをフィルタするには、表示するリソースタイプを検索します。
[リソースタイプ] フィールドをクリックします。
表示される [プロパティ] プルダウン リストで、[リソースタイプ] を選択します。
FHIR リソースタイプを入力します。
FHIR リソースタイプの一覧で、リソースタイプを選択します。
表示される FHIR リソースの表で、リソースを選択するか検索します。
特定のバージョンの FHIR リソースを表示する手順は次のとおりです。
- [概要] タブをクリックします。
- [バージョン ID] と同じ行で、[過去のバージョンを表示] をクリックします。
- [リソース バージョンの選択] ペインで、バージョンを選択し、[確認] をクリックします。バージョンのデータは、[概要]、[要素]、[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 リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(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 リソースのすべてのバージョンを一覧表示する方法を示しています。Observation は、患者の 1 分あたりの心拍数(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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
Go
Java
Node.js
Python
FHIR リソースを条件付きで削除する
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する 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"
エラーを返します。リソースを個別に削除する手順は次のとおりです。
次のサンプルは、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 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
API Explorer
メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
FHIR リソースの履歴バージョンを削除する
次のサンプルは、projects.locations.datasets.fhirStores.fhir.Resource-purge
メソッドを使用して FHIR リソースのすべての履歴バージョンを削除する方法を示しています。
projects.locations.datasets.fhirStores.fhir.Resource-purge
メソッドの呼び出しは、roles/healthcare.fhirStoreAdmin
ロールを持つユーザー(呼び出し元)に限定されています。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)と空のレスポンスが返されます。