curl または Windows PowerShell を使用したクイックスタート

このページでは、curl と Windows PowerShell で Cloud Healthcare API を使用して、次のタスクを行う方法について説明します。

  1. Cloud Healthcare API データセットを作成します。
  2. データセット内に DICOM、FHIR、または HL7v2 ストアを作成します。
  3. DICOM、FHIR、または HL7v2 ストアに特定の種類の医療データを保存し、検査します。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud Healthcare API を有効にします。

    API を有効にする

  5. Cloud SDK をインストールして初期化します。
  6. gcloud コマンドライン ツールを使用して認証環境をテストします。次のコマンドが、エラーなしでテキスト文字列を出力することを確認します。
    gcloud auth application-default print-access-token

ヒント: コマンド プロンプトが必要な場合は、Google Cloud Shell を使用できます。Google Cloud Shell は、Google Cloud SDK がすでに含まれているコマンドライン環境であるため、インストールする必要はありません (Google Cloud SDK も Google Compute Engine の仮想マシンにプリインストールされています)。

データセットの作成

データセットは、Google Cloud で医療データを保持する基本的なコンテナです。

curl

データセットを作成するには、POST リクエストを行い、データセットの名前と場所を指定します。次のサンプルは、curl を使用した POST リクエストを示しています。

LOCATION 変数を設定するときは、us-central1us-west2us-east4europe-west2europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-southeast1australia-southeast1、または us を使用します。

curl -X POST \
    --data "" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"

リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。レスポンスには、長時間実行オペレーションの識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでにかなりの時間がかかる場合に返されます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
}

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの 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/operations/OPERATION_ID"

リクエストが成功すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。レスポンスに "done": true が含まれると、オペレーションが終了したことがわかります。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

PowerShell

データセットを作成するには、POST リクエストを行い、データセットの名前と場所を指定します。次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

LOCATION 変数を設定するときは、us-central1us-west2us-east4europe-west2europe-west4europe-west6northamerica-northeast1southamerica-east1asia-east2asia-northeast1asia-southeast1australia-southeast1、または us を使用します。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand Content

リクエストが成功すると、サーバーは JSON 形式でレスポンスを返します。レスポンスには、長時間実行オペレーションの識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでにかなりの時間がかかる場合に返されます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
}

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get メソッドを使用します。

$cred = gcloud auth application-default 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/operations/OPERATION_ID" | Select-Object -Expand Content

リクエストが成功すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。レスポンスに "done": true が含まれると、オペレーションが終了したことがわかります。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

DICOM、FHIR、HL7v2 データの保存と表示

このクイックスタートを行うには、次のセクションから 1 つ選択します。

DICOM インスタンスの保存と表示

このセクションでは、次のタスクを行う方法を示しています。

  1. DICOM ストアの作成
  2. DICOM ストアでの DICOM インスタンスの保存。
  3. DICOM インスタンスのメタデータの表示

Cloud Healthcare API は、医療画像データを保存してアクセスするための DICOMweb 標準を実装しています。

  1. DICOM ストアはデータセット内に存在し、DICOM インスタンスを保持します。projects.locations.datasets.dicomStores.create メソッドを使用して DICOM ストアを作成できます。

    curl

    DICOM ストアを作成するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前。DICOM ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
        --data "" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID"
    

    リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

    PowerShell

    DICOM ストアを作成するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前。DICOM ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

  2. サンプル DICOM インスタンス ファイルをマシンにダウンロードします。このファイルには、匿名化された患者の X 線が含まれています。

  3. 次のコマンドを実行して、作成した DICOM ストアに DICOM インスタンスを保存します。

    curl

    DICOM インスタンスを保存するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前
    • マシン上の DICOM インスタンス ファイルのファイル名と場所

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
        -H "Content-Type: application/dicom" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        --data-binary @dicom_00000001_000.dcm \
        https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies
    

    リクエストが成功すると、サーバーは XML 形式の次のレスポンスを返します。

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

    PowerShell

    DICOM インスタンスを保存するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前
    • マシン上の DICOM インスタンス ファイルのファイル名と場所

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile dicom_00000001_000.dcm `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは XML 形式の次のレスポンスを返します。

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

  4. DICOM ストア内のインスタンスを検索して、保存したインスタンスのメタデータを表示します。

    curl

    保存した DICOM インスタンスのメタデータを表示するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前

    次のサンプルは、curl を使用して DICOM ストア内のインスタンスを検索する 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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    [
      {
        "00080016": {
          "vr": "UI",
          "Value": [
            "1.2.840.10008.5.1.4.1.1.7"
          ]
        },
        "00080018": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480"
          ]
        },
        "00080060": {
          "vr": "CS",
          "Value": [
            "DX"
          ]
        },
        "00100020": {
          "vr": "LO",
          "Value": [
            "1"
          ]
        },
        "00100040": {
          "vr": "CS",
          "Value": [
            "M"
          ]
        },
        "0020000D": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604"
          ]
        },
        "0020000E": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724"
          ]
        },
        "00280010": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280011": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280100": {
          "vr": "US",
          "Value": [
            8
          ]
        }
      }
    ]
    
    

    PowerShell

    保存した DICOM インスタンスのメタデータを表示するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • DICOM ストアの名前

    次のサンプルは、Windows PowerShell を使用して DICOM ストア内のインスタンスを検索する 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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    [
      {
        "00080016": {
          "vr": "UI",
          "Value": [
            "1.2.840.10008.5.1.4.1.1.7"
          ]
        },
        "00080018": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480"
          ]
        },
        "00080060": {
          "vr": "CS",
          "Value": [
            "DX"
          ]
        },
        "00100020": {
          "vr": "LO",
          "Value": [
            "1"
          ]
        },
        "00100040": {
          "vr": "CS",
          "Value": [
            "M"
          ]
        },
        "0020000D": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604"
          ]
        },
        "0020000E": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724"
          ]
        },
        "00280010": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280011": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280100": {
          "vr": "US",
          "Value": [
            8
          ]
        }
      }
    ]
    

これで、Cloud Healthcare API で DICOM インスタンスを保存して表示できました。引き続き、次のステップで次のステップについて確認してください。

FHIR リソースの保存と表示

このセクションでは、次のタスクを行う方法を示しています。

  1. FHIR ストアの作成
  2. FHIR ストアに FHIR リソースを保存します。
  3. FHIR リソースのデータの表示。

Cloud Healthcare API は、FHIR データを保存してアクセスするための FHIR 仕様標準を実装しています。

  1. FHIR ストアはデータセット内に存在し、FHIR データを保持します。FHIR ストアは、projects.locations.datasets.fhirStores.create メソッドを使用して作成できます。

    curl

    FHIR ストアを作成するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前DICOM ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。
    • FHIR ストアの FHIR バージョン: DSTU2STU3、または R4

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          'version': '{DSTU2|STU3|R4}'
        }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"
    

    リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "FHIR_STORE_VERSION"
    }
    

    PowerShell

    FHIR ストアを作成するには、POST リクエストを送信して次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前DICOM ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。
    • FHIR ストアの FHIR バージョン: DSTU2STU3、または R4

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body "{
          'version': '{DSTU2|STU3|R4}'
      }" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "FHIR_STORE_VERSION"
    }
    

  2. サンプル JSON FHIR リソース ファイルを保存します。ファイルには、患者リソースの基本データが含まれています。

  3. 次のコマンドを実行して、作成した FHIR ストアに患者リソースを保存します。

    curl

    サンプル ファイルから患者リソースを作成するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前
    • マシン上の FHIR リソース ファイルのファイル名と場所

    次のサンプルは、curl を使用して POST リクエストを送信し、患者リソースを作成する方法を示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/fhir+json; charset=utf-8" \
        --data @Patient.json \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
    

    リクエストが成功すると、サーバーは次のレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

    PowerShell

    サンプル ファイルから患者リソースを作成するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前
    • マシン上の FHIR リソース ファイルのファイル名と場所

    次の例は、Windows PowerShell を使用して POST リクエストを送信し、患者リソースを作成する方法を示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile Patient.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
    

    リクエストが成功すると、サーバーは次のレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

  4. FHIR ストアでリソースを検索して、患者に関する情報を表示します。

    curl

    患者リソースを検索してその詳細を表示するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前
    • 検索対象の情報を含むクエリ文字列このサンプルでは、患者の姓を検索します。

    次のサンプルは、curl を使用して姓が「Smith」のすべての患者を検索する 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?family:exact=Smith"
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    患者リソースを検索してその詳細を表示するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • FHIR ストアの名前
    • 検索対象の情報を含むクエリ文字列このサンプルでは、患者の姓を検索します。

    次のサンプルは、Windows PowerShell を使用して姓が「Smith」のすべての患者を検索する 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?family:exact=Smith" | ConvertTo-Json
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

これで、Cloud Healthcare API で FHIR リソースを保存して表示できました。引き続き、次のステップで次のステップについて確認してください。

HL7v2 メッセージの保存と表示

このセクションでは、次のタスクを行う方法を示しています。

  1. HL7v2 ストアの作成。
  2. HL7v2 メッセージを HL7v2 ストアに保存する。
  3. HL7v2 メッセージのデータを表示する。

Cloud Healthcare API の HL7v2 実装は、HL7v2 標準に準拠しています。

  1. HL7v2 ストアはデータセット内に存在し、HL7v2 メッセージを保持します。HL7v2 ストアを作成するには、projects.locations.datasets.hl7V2Stores.create メソッドを使用します。

    curl

    HL7v2 ストアを作成するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。HL7v2 ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
        --data "" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"
    

    リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
    }
    

    PowerShell

    HL7v2 ストアを作成するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。HL7v2 ストア ID は、その親データセット内で一意である必要があります。数字、文字、アンダースコア、ダッシュ、ピリオドで構成される、1~256 文字の Unicode 文字列を使用できます。

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
    }
    

  2. サンプル HL7v2 メッセージ ファイルをマシンにダウンロードします。メッセージには、次の基本的な情報が含まれます。ここでは、サンプル ファイルの data フィールドに base-64 でエンコードされています。

    MSH|^~\&|A|SEND_FACILITY|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII
    EVN|A00|20180101040000
    PID||14^111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR
    
  3. HL7v2 メッセージを保存するには、作成と取り込みの 2 つの方法があります。詳細については、HL7v2 メッセージの作成と取り込みの概要をご覧ください。このサンプルでは、create メソッドを使用して HL7v2 メッセージを保存します。これは、ingest メソッドでは通常、治療センターからの HL7v2 メッセージが利用されるためです。

    次のコマンドを実行して、作成した HL7v2 ストアに HL7v2 メッセージを保存します。

    curl

    HL7v2 メッセージを保存するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。
    • マシン上の HL7v2 メッセージ ファイルの名前と場所

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         -H "Content-Type: application/json; charset=utf-8" \
         --data-binary @hl7v2-sample.json \
         "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
    

    リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

    PowerShell

    HL7v2 メッセージを保存するには、POST リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。
    • マシン上の HL7v2 メッセージ ファイルの名前と場所

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile hl7v2-sample.json `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは JSON 形式の次のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

  4. メッセージを作成したときに受信したレスポンスの MESSAGE_ID を使用して、次のコマンドを実行しメッセージの詳細を表示します。

    curl

    HL7v2 メッセージの内容を取得するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。
    • メッセージ 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/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

    PowerShell

    HL7v2 メッセージの内容を取得するには、GET リクエストを行い、次の情報を指定します。

    • 親データセットの名前と場所
    • HL7v2 ストアの名前。
    • メッセージ ID

    次のサンプルは、Windows PowerShell を使用した GET リクエストを示しています。

    $cred = gcloud auth application-default 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/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" | Select-Object -Expand Content
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

これで、Cloud Healthcare API で HL7v2 メッセージを保存して表示できました。引き続き、次のステップで次のステップについて確認してください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud で作成したリソースをクリーンアップします。 このチュートリアル用に新しいプロジェクトを作成した場合は、プロジェクトの削除の手順に従ってください。それ以外の場合は、データセットの削除の手順に従ってください。

プロジェクトの削除

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

データセットの削除

このクイックスタートで作成したデータセットが不要になった場合は、削除できます。データセットを完全に削除すると、データセットと、データセットに含まれる FHIR ストア、HL7v2 ストア、または DICOM ストアが完全に削除されます。

curl

データセットを削除するには、名前と場所を指定して DELETE リクエストを行います。次のサンプルは、curl を使用した DELETE リクエストを示しています。

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"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{}

PowerShell

データセットを削除するには、データセットの名前と場所を指定して DELETE リクエストを行います。次のサンプルは、Windows PowerShell を使用した DELETE リクエストを示しています。

$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" | Select-Object -Expand Content

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{}

いかがでしたか

次のステップ

Cloud Healthcare API に関する一般情報と、Cloud Console および gcloud コマンドライン ツールを使用してタスクを実行する方法については、以下のセクションをご覧ください。

DICOM

DICOM ガイドに進み、以下のようなトピックを確認する。

Cloud Healthcare API が DICOMweb 標準を実装する方法について、DICOM 適合性宣言で確認する。

FHIR

FHIR ガイドに進んで次のようなトピックを確認する。

Cloud Healthcare API で FHIR 標準を実装する方法について、FHIR 適合性ステートメントで確認する。

HL7v2

HL7v2 ガイドに進んで、次のようなトピックを確認する。