このページでは、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 ストアで動作します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア ID
リクエストの本文(JSON):
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }
Patient リソースを作成したら、Encounter リソースを作成して、患者と開業医のやり取りを記述します。
PATIENT_ID フィールドに、Patient リソースを作成したときにサーバーから返されたレスポンスの ID を置き換えます。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Python のサンプルは STU3 FHIR ストアで動作します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDPATIENT_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" }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "class": { "code": "IMP", "display": "inpatient encounter", "system": "http://hl7.org/fhir/v3/ActCode" }, "id": "ENCOUNTER_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "resourceType": "Encounter", "status": "finished", "subject": { "reference": "Patient/PATIENT_ID " } }
このサンプルを試す前に、クライアント ライブラリを使用した 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 ストアで動作します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDPATIENT_ID : Patient リソースを作成したときにサーバーから返されたレスポンスの IDENCOUNTER_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 " } }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value": 80 } }
このサンプルを試す前に、クライアント ライブラリを使用した 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 リソースを決定します。
次のサンプルは、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 ストアで動作します。
次のサンプルは、Observation リソースの 1 分あたりの心拍数(BPM)を更新する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDOBSERVATION_ID : Observation リソース IDPATIENT_ID : Patient リソース IDENCOUNTER_ID : Encounter リソース IDBPM_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 " } }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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 "
リクエスト本文を 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] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value":BPM_VALUE } }
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 リソースを決定します。
次のサンプルは、curl
を使用して PUT
リクエストを送信し、Observation の識別子(my-code-system
内の ABC-12345
)を使用して Observation リソースを編集する方法を示しています。Observation には、患者の 1 分あたりの心拍数(BPM)の測定値が記録されます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDPATIENT_ID : Patient リソース IDENCOUNTER_ID : Encounter リソース IDBPM_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 " } }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value":BPM_VALUE } }
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 ストアで動作します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDOBSERVATION_ID : Observation リソース IDBPM_VALUE : パッチ適用された Observation リソースの 1 分あたりの心拍数(BPM)
リクエストの本文(JSON):
[ { "op": "replace", "path": "/valueQuantity/value", "value":BPM_VALUE } ]
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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 "
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value":BPM_VALUE } }
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 プロジェクト IDLOCATION : 親データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDPATIENT_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" } } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "entry": [ { "response": { "etag": "W/\"MTY0ODgzNjY5MjQyODAxMzAwMA\"", "lastModified": "LAST_MODIFIED ", "location": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/PATIENT_ID ", "status": "200 OK" } } ], "resourceType": "Bundle", "type": "transaction-response" }
FHIR リソースの条件付きパッチ適用
次のサンプルは、projects.locations.datasets.fhirStores.fhir.conditionalPatch
メソッドを呼び出して、ID でリソースを特定するのではなく、検索クエリで一致する FHIR リソースにパッチを適用する方法を示しています。このメソッドは、FHIR 標準条件付きパッチ適用インタラクション(DSTU2、STU3、R4)を実装します。
条件付きパッチを適用できるのは、一度に 1 つのリソースのみです。検索条件が複数件と一致した場合、リクエストは 412 Precondition Failed
エラーを返します。
Cloud Healthcare API v1 では、条件付きオペレーションは identifier
検索パラメータのみを使用し(FHIR リソースタイプに存在する場合)、条件付き検索クエリと一致する FHIR リソースを決定します。
次のサンプルは、Observation の識別子が my-code-system
の ABC-12345
の場合に、curl
と PowerShell を使用して PATCH
リクエストを送信し、Observation リソースを編集する方法を示しています。患者の 1 分あたりの心拍数(BPM)の Observation は、replace
パッチ オペレーションを使用して更新されます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDBPM_VALUE : Observation リソースの 1 分あたりの心拍数(BPM)
リクエストの本文(JSON):
[ { "op": "replace", "path": "/valueQuantity/value", "value":BPM_VALUE } ]
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value":BPM_VALUE } }
FHIR リソースを取得する
次のサンプルは、projects.locations.datasets.fhirStores.fhir.read
メソッドを使用して FHIR リソースの内容を取得する方法を示しています。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。
Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
FHIR リソースの内容を取得する手順は、次のとおりです。
Google Cloud コンソールで、[FHIR ビューア] ページに移動します。
[FHIR ストア] プルダウン リストでデータセットを選択し、データセット内の FHIR ストアを選択します。
リソースタイプのリストをフィルタするには、表示するリソースタイプを検索します。
[リソースタイプ] フィールドをクリックします。
表示される [プロパティ] プルダウン リストで、[リソースタイプ] を選択します。
リソースタイプを入力します。
別のリソースタイプを検索するには、表示される [演算子] プルダウン リストから [OR] を選択し、別のリソースタイプを入力します。
リソースタイプの一覧から、内容を取得するリソースのリソースタイプを選択します。
表示されるリソースの表で、リソースを選択するか検索します。
次のサンプルは、前のセクションで作成した Observation リソースの詳細を取得する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDOBSERVATION_ID : Observation リソース ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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 "
次のコマンドを実行します。
$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] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
レスポンス
{ "code": { "coding": [ { "code": "8867-4", "display": "Heart rate", "system": "http://loinc.org" } ] }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "encounter": { "reference": "Encounter/ENCOUNTER_ID " }, "id": "OBSERVATION_ID ", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID " }, "valueQuantity": { "unit": "bpm", "value": 80 } }
すべての Encounter リソースの詳細を取得する
次のサンプルは、projects.locations.datasets.fhirStores.fhir.Encounter-everything
メソッドを使用して、Encounter リソースの詳細と、Encounter に関連するすべてのリソースを表示する方法を示しています。
このメソッドは、次の FHIR バージョンで定義されている FHIR 拡張オペレーション Encounter-everything
を実装します。
projects.locations.datasets.fhirStores.fhir.Encounter-everything
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: データセット IDDATASET_ID
: FHIR ストア IDFHIR_STORE_ID
: Encounter リソース IDENCOUNTER_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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"
次のコマンドを実行します。
$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 バケット内の合成リソースです。レスポンス
{ "resourceType": "Bundle", "type": "searchset", "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77", "resource": { "class": { "code": "AMB", "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode" }, "extension": [ { "extension": [ { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-action-Status-extension", "valueCode": "finished" } ], "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-action-PerformedContext-extension" } ], "id": "c427ce3e-7677-400e-bc06-33a8cecfdd77", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-encounter-EncounterPerformed" ], "versionId": "MTcxOTUyMzQ1MzA0MjMwMDAwMA" }, "participant": [ { "individual": { "reference": "Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649" } } ], "period": { "end": "2015-03-02T17:06:14-08:00", "start": "2015-03-02T16:51:14-08:00" }, "resourceType": "Encounter", "serviceProvider": { "reference": "Organization/69176529-fd1f-3b3f-abce-a0a3626769eb" }, "status": "finished", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "type": [ { "coding": [ { "code": "185349003", "display": "Encounter for check up (procedure)", "system": "http://snomed.info/sct" } ], "text": "Encounter for check up (procedure)" } ] } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Organization/69176529-fd1f-3b3f-abce-a0a3626769eb", "resource": { "active": true, "address": [ { "city": "CAMBRIDGE", "country": "US", "line": [ "330 MOUNT AUBURN STREET" ], "postalCode": "02138", "state": "MA" } ], "contact": [ { "name": { "text": "Synthetic Provider" } } ], "id": "69176529-fd1f-3b3f-abce-a0a3626769eb", "identifier": [ { "system": "urn:ietf:rfc:3986", "value": "69176529-fd1f-3b3f-abce-a0a3626769eb" }, { "system": "https://github.com/synthetichealth/synthea", "value": "69176529-fd1f-3b3f-abce-a0a3626769eb" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-entity-Organization" ], "versionId": "MTcxOTUyMzQ2Mjg2MzQ3NDAwMA" }, "name": "MOUNT AUBURN HOSPITAL", "resourceType": "Organization", "telecom": [ { "system": "phone", "value": "6174923500" } ], "type": [ { "coding": [ { "code": "prov", "display": "Healthcare Provider", "system": "http://terminology.hl7.org/CodeSystem/organization-type" } ], "text": "Healthcare Provider" } ] } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2", "resource": { "address": [ { "city": "Somerville", "country": "US", "extension": [ { "extension": [ { "url": "latitude", "valueDecimal": 42.390566 }, { "url": "longitude", "valueDecimal": -71.101324 } ], "url": "http://hl7.org/fhir/StructureDefinition/geolocation" } ], "line": [ "883 Howell Lane" ], "postalCode": "02138", "state": "Massachusetts" } ], "birthDate": "2008-03-10", "communication": [ { "language": { "coding": [ { "code": "es", "display": "Spanish", "system": "urn:ietf:bcp:47" } ], "text": "Spanish" } } ], "extension": [ { "extension": [ { "url": "ombCategory", "valueCoding": { "code": "2054-5", "display": "Black or African American", "system": "urn:oid:2.16.840.1.113883.6.238" } }, { "url": "text", "valueString": "Black or African American" } ], "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race" }, { "extension": [ { "url": "ombCategory", "valueCoding": { "code": "2186-5", "display": "Not Hispanic or Latino", "system": "urn:oid:2.16.840.1.113883.6.238" } }, { "url": "text", "valueString": "Not Hispanic or Latino" } ], "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity" }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Ariadna374 Lovato727" }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", "valueCode": "F" }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-birthPlace", "valueAddress": { "city": "Portsmouth", "country": "DM", "state": "Saint John Parish" } }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", "valueBoolean": true }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-entity-FathersName-extension", "valueHumanName": { "text": "Joaquín233 Montemayor547" } }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", "valueString": "999-10-3430" }, { "url": "http://synthetichealth.github.io/synthea/disability-adjusted-life-years", "valueDecimal": 0 }, { "url": "http://synthetichealth.github.io/synthea/quality-adjusted-life-years", "valueDecimal": 10 } ], "gender": "female", "id": "b0027145-32af-4030-bcb1-1f5b63d3f2e2", "identifier": [ { "system": "https://github.com/synthetichealth/synthea", "value": "c04dc343-a9f2-445c-ab4b-42b403a9cdba" }, { "system": "http://hospital.smarthealthit.org", "type": { "coding": [ { "code": "MR", "display": "Medical Record Number", "system": "http://terminology.hl7.org/CodeSystem/v2-0203" } ], "text": "Medical Record Number" }, "value": "c04dc343-a9f2-445c-ab4b-42b403a9cdba" }, { "system": "http://hl7.org/fhir/sid/us-ssn", "type": { "coding": [ { "code": "SS", "display": "Social Security Number", "system": "http://terminology.hl7.org/CodeSystem/v2-0203" } ], "text": "Social Security Number" }, "value": "999-10-3430" } ], "maritalStatus": { "coding": [ { "code": "S", "display": "Never Married", "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus" } ], "text": "Never Married" }, "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-entity-Patient" ], "versionId": "MTcxOTUyMzQ2MzIwNzY1MDAwMA" }, "multipleBirthBoolean": false, "name": [ { "family": "Montemayor547", "given": [ "Sonia106" ], "use": "official" } ], "resourceType": "Patient", "telecom": [ { "system": "phone", "use": "home", "value": "555-302-8948" } ], "text": { "div": "div xmlns=http://www.w3.org/1999/xhtml Generated by https://github.com/synthetichealth/synthea Synthea. Version identifier: 6a640b4\n . Person seed: -8343380064104224231 Population seed: 1562179070288", "status": "generated" } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649", "resource": { "active": true, "address": [ { "city": "CAMBRIDGE", "country": "US", "line": [ "330 MOUNT AUBURN STREET" ], "postalCode": "02138", "state": "MA" } ], "gender": "female", "id": "d22d7490-0710-4190-bd23-43bc6bca2649", "identifier": [ { "system": "http://hl7.org/fhir/sid/us-npi", "value": "10" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "MTcxOTUyMzQ2MzQ0NDY3NTAwMA" }, "name": [ { "family": "Gleason633", "given": [ "Mariam937" ], "prefix": [ "Dr." ] } ], "resourceType": "Practitioner" } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Claim/d7628517-253d-47fa-951b-4057b71ca1fa", "resource": { "billablePeriod": { "end": "2015-03-02T17:06:14-08:00", "start": "2015-03-02T16:51:14-08:00" }, "created": "2015-03-02T17:06:14-08:00", "id": "d7628517-253d-47fa-951b-4057b71ca1fa", "insurance": [ { "coverage": { "display": "private" }, "focal": true, "sequence": 1 } ], "item": [ { "encounter": [ { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" } ], "productOrService": { "coding": [ { "code": "185349003", "display": "Encounter for check up (procedure)", "system": "http://snomed.info/sct" } ], "text": "Encounter for check up (procedure)" }, "sequence": 1 }, { "informationSequence": [ 1 ], "net": { "currency": "USD", "value": 140.52 }, "productOrService": { "coding": [ { "code": "140", "display": "Influenza, seasonal, injectable, preservative free", "system": "http://hl7.org/fhir/sid/cvx" } ], "text": "Influenza, seasonal, injectable, preservative free" }, "sequence": 2 } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "MTcxOTUyMzQ1MDIxMzU0MjAwMA" }, "patient": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "priority": { "coding": [ { "code": "normal", "system": "http://terminology.hl7.org/CodeSystem/processpriority" } ] }, "provider": { "reference": "Organization/69176529-fd1f-3b3f-abce-a0a3626769eb" }, "resourceType": "Claim", "status": "active", "supportingInfo": [ { "category": { "coding": [ { "code": "info", "system": "http://terminology.hl7.org/CodeSystem/claiminformationcategory" } ] }, "sequence": 1, "valueReference": { "reference": "Immunization/e0da797f-a3ef-4b90-9f41-3e650881e0ab" } } ], "total": { "currency": "USD", "value": 265.52 }, "type": { "coding": [ { "code": "institutional", "system": "http://terminology.hl7.org/CodeSystem/claim-type" } ] }, "use": "claim" } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/ExplanationOfBenefit/7c6f9e0c-9773-4cc4-ab9f-cf0670c49081", "resource": { "billablePeriod": { "end": "2016-03-02T17:06:14-08:00", "start": "2015-03-02T17:06:14-08:00" }, "careTeam": [ { "provider": { "reference": "Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649" }, "role": { "coding": [ { "code": "primary", "display": "Primary Care Practitioner", "system": "http://terminology.hl7.org/CodeSystem/claimcareteamrole" } ] }, "sequence": 1 } ], "claim": { "reference": "Claim/d7628517-253d-47fa-951b-4057b71ca1fa" }, "contained": [ { "id": "referral", "intent": "order", "performer": [ { "reference": "Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649" } ], "requester": { "reference": "Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649" }, "resourceType": "ServiceRequest", "status": "completed", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" } }, { "beneficiary": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "id": "coverage", "payor": [ { "display": "private" } ], "resourceType": "Coverage", "status": "active", "type": { "text": "private" } } ], "created": "2015-03-02T17:06:14-08:00", "id": "7c6f9e0c-9773-4cc4-ab9f-cf0670c49081", "identifier": [ { "system": "https://bluebutton.cms.gov/resources/variables/clm_id", "value": "d7628517-253d-47fa-951b-4057b71ca1fa" }, { "system": "https://bluebutton.cms.gov/resources/identifier/claim-group", "value": "99999999999" } ], "insurance": [ { "coverage": { "display": "private", "reference": "#coverage" }, "focal": true } ], "insurer": { "display": "private" }, "item": [ { "category": { "coding": [ { "code": "1", "display": "Medical care", "system": "https://bluebutton.cms.gov/resources/variables/line_cms_type_srvc_cd" } ] }, "encounter": [ { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" } ], "locationCodeableConcept": { "coding": [ { "code": "19", "display": "Off Campus-Outpatient Hospital", "system": "http://terminology.hl7.org/CodeSystem/ex-serviceplace" } ] }, "productOrService": { "coding": [ { "code": "185349003", "display": "Encounter for check up (procedure)", "system": "http://snomed.info/sct" } ], "text": "Encounter for check up (procedure)" }, "sequence": 1, "servicedPeriod": { "end": "2015-03-02T17:06:14-08:00", "start": "2015-03-02T16:51:14-08:00" } }, { "adjudication": [ { "amount": { "currency": "USD", "value": 28.104000000000003 }, "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_coinsrnc_amt", "display": "Line Beneficiary Coinsurance Amount", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } }, { "amount": { "currency": "USD", "value": 112.41600000000001 }, "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_prvdr_pmt_amt", "display": "Line Provider Payment Amount", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } }, { "amount": { "currency": "USD", "value": 140.52 }, "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_sbmtd_chrg_amt", "display": "Line Submitted Charge Amount", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } }, { "amount": { "currency": "USD", "value": 140.52 }, "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_alowd_chrg_amt", "display": "Line Allowed Charge Amount", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } }, { "amount": { "currency": "USD", "value": 0 }, "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_bene_ptb_ddctbl_amt", "display": "Line Beneficiary Part B Deductible Amount", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } }, { "category": { "coding": [ { "code": "https://bluebutton.cms.gov/resources/variables/line_prcsg_ind_cd", "display": "Line Processing Indicator Code", "system": "https://bluebutton.cms.gov/resources/codesystem/adjudication" } ] } } ], "category": { "coding": [ { "code": "1", "display": "Medical care", "system": "https://bluebutton.cms.gov/resources/variables/line_cms_type_srvc_cd" } ] }, "informationSequence": [ 1 ], "locationCodeableConcept": { "coding": [ { "code": "19", "display": "Off Campus-Outpatient Hospital", "system": "http://terminology.hl7.org/CodeSystem/ex-serviceplace" } ] }, "net": { "currency": "USD", "value": 140.52 }, "productOrService": { "coding": [ { "code": "140", "display": "Influenza, seasonal, injectable, preservative free", "system": "http://hl7.org/fhir/sid/cvx" } ], "text": "Influenza, seasonal, injectable, preservative free" }, "sequence": 2, "servicedPeriod": { "end": "2015-03-02T17:06:14-08:00", "start": "2015-03-02T16:51:14-08:00" } } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "MTcxOTUyMzQ1NTU2NDY5MjAwMA" }, "outcome": "complete", "patient": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "payment": { "amount": { "currency": "USD", "value": 112.41600000000001 } }, "provider": { "reference": "Practitioner/d22d7490-0710-4190-bd23-43bc6bca2649" }, "referral": { "reference": "#referral" }, "resourceType": "ExplanationOfBenefit", "status": "active", "total": [ { "amount": { "currency": "USD", "value": 265.52 }, "category": { "coding": [ { "code": "submitted", "display": "Submitted Amount", "system": "http://terminology.hl7.org/CodeSystem/adjudication" } ], "text": "Submitted Amount" } } ], "type": { "coding": [ { "code": "institutional", "system": "http://terminology.hl7.org/CodeSystem/claim-type" } ] }, "use": "claim" } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/622dc825-a1a5-4b84-8fa3-04b2544ac6bb", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "display": "vital-signs", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "39156-5", "display": "Body Mass Index", "system": "http://loinc.org" } ], "text": "Body Mass Index" }, "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "622dc825-a1a5-4b84-8fa3-04b2544ac6bb", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyMassIndex" ], "versionId": "MTcxOTUyMzQ2MjA1Nzg4MzAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "valueQuantity": { "code": "kg/m2", "system": "http://unitsofmeasure.org", "unit": "kg/m2", "value": 14.784260473706514 } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/20120688-2c8b-4e76-9e34-a484e32e9351", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "display": "vital-signs", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "8302-2", "display": "Body Height", "system": "http://loinc.org" } ], "text": "Body Height" }, "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "20120688-2c8b-4e76-9e34-a484e32e9351", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyHeight" ], "versionId": "MTcxOTUyMzQ2MjA0NDMwMDAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "valueQuantity": { "code": "cm", "system": "http://unitsofmeasure.org", "unit": "cm", "value": 120.50639269008305 } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/8100f70c-fa98-41b1-b23c-151cdea433b3", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "display": "vital-signs", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "29463-7", "display": "Body Weight", "system": "http://loinc.org" } ], "text": "Body Weight" }, "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "8100f70c-fa98-41b1-b23c-151cdea433b3", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyWeight" ], "versionId": "MTcxOTUyMzQ2MjA1MTc2MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "valueQuantity": { "code": "kg", "system": "http://unitsofmeasure.org", "unit": "kg", "value": 21.469393594558884 } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/df225fb0-7811-466f-bd5d-57c10059ce22", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "display": "vital-signs", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "72514-3", "display": "Pain severity - 0-10 verbal numeric rating [Score] - Reported", "system": "http://loinc.org" } ], "text": "Pain severity - 0-10 verbal numeric rating [Score] - Reported" }, "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "df225fb0-7811-466f-bd5d-57c10059ce22", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign" ], "versionId": "MTcxOTUyMzQ2MjA1MDkwOTAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "valueQuantity": { "code": "{score}", "system": "http://unitsofmeasure.org", "unit": "{score}", "value": 3.1080799298691533 } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/4415e34b-cec8-4316-98ae-fc29cea862b5", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "display": "vital-signs", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "55284-4", "display": "Blood Pressure", "system": "http://loinc.org" } ], "text": "Blood Pressure" }, "component": [ { "code": { "coding": [ { "code": "8462-4", "display": "Diastolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Diastolic Blood Pressure" }, "valueQuantity": { "code": "mm[Hg]", "system": "http://unitsofmeasure.org", "unit": "mm[Hg]", "value": 75.44894870094959 } }, { "code": { "coding": [ { "code": "8480-6", "display": "Systolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Systolic Blood Pressure" }, "valueQuantity": { "code": "mm[Hg]", "system": "http://unitsofmeasure.org", "unit": "mm[Hg]", "value": 119.00010973273238 } } ], "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "4415e34b-cec8-4316-98ae-fc29cea862b5", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure" ], "versionId": "MTcxOTUyMzQ2MjA1ODI5NDAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" } } }, { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Observation/f151e38c-c7bf-4c34-b015-6ef9e0a947bc", "resource": { "category": [ { "coding": [ { "code": "survey", "display": "survey", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "code": "72166-2", "display": "Tobacco smoking status NHIS", "system": "http://loinc.org" } ], "text": "Tobacco smoking status NHIS" }, "effectiveDateTime": "2015-03-02T16:51:14-08:00", "encounter": { "reference": "Encounter/c427ce3e-7677-400e-bc06-33a8cecfdd77" }, "id": "f151e38c-c7bf-4c34-b015-6ef9e0a947bc", "issued": "2015-03-02T16:51:14.816-08:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-finding-Observation" ], "versionId": "MTcxOTUyMzQ2MjA2NDIzNzAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/b0027145-32af-4030-bcb1-1f5b63d3f2e2" }, "valueCodeableConcept": { "coding": [ { "code": "266919005", "display": "Never smoker", "system": "http://snomed.info/sct" } ], "text": "Never smoker" } } } ], "total": 12 }
すべての患者コンパートメント リソースを取得
以下のサンプルは、特定の患者コンパートメント(DSTU2、STU3、R4)と関連付けられたすべてのリソースを取得する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.Patient-everything
をご覧ください。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 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/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" }
患者コンパートメント内のリソースを取得するには、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" }
タイプ別または日付別にフィルタリングした患者コンパートメント リソースを取得
以下のサンプルは、タイプのリストによりフィルタリングされ、指定された日時以降の特定の患者コンパートメント(R4)と関連付けられたすべてのリソースを取得する方法を示しています。詳細については、projects.locations.datasets.fhirStores.fhir.Patient-everything
をご覧ください。
以下の curl
と PowerShell のサンプルは、R4 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/Patient/PATIENT_ID /\$everything?_type=RESOURCE_TYPES &_since=DATE "
リクエストが成功すると、サーバーは指定された条件に一致するリソースを JSON 形式で返します。
指定されたタイプと指定された日付以降の患者コンパートメント内のリソースを取得するには、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 ストアで動作します。
次のサンプルは、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" }
次のサンプルは、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" }
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 ストアで動作します。
特定のバージョンの 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 } }
特定のバージョンの 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 } }
FHIR リソースの削除
次のサンプルは、projects.locations.datasets.fhirStores.fhir.delete
メソッドを呼び出して Observation FHIR リソースを削除する方法を示しています。
オペレーションが成功したか失敗したかにかかわらず、サーバーは200 OK
HTTP ステータスコードを返します。リソースが正常に削除されたことを確認するには、リソースを検索するか取得して、そのリソースが存在するかどうかを確認します。
以下の curl
と PowerShell のサンプルは、R4 FHIR ストアで動作します。Go、Java、Node.js、Python のサンプルは STU3 FHIR ストアで動作します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : Google Cloud プロジェクトの IDLOCATION : データセットの場所DATASET_ID : FHIR ストアの親データセットFHIR_STORE_ID : FHIR ストア IDOBSERVATION_ID : Observation リソース ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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 "
次のコマンドを実行します。
$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] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
次のような JSON レスポンスが返されます。
レスポンス
{}
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 リソースを照合して削除します。
projects.locations.datasets.fhirStores.fhir.conditionalDelete
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: FHIR ストアの親データセットDATASET_ID
: FHIR ストア IDFHIR_STORE_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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"
次のコマンドを実行します。
$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] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[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 ストアで動作します。
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 形式の空のレスポンス本文を返します。
{}
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 形式の空のレスポンス本文を返します。
{}