curl 또는 Windows PowerShell을 사용한 빠른 시작

이 페이지에서는 curl 및 Windows PowerShell과 함께 Cloud Healthcare API를 사용하여 다음 태스크를 완료하는 방법을 보여줍니다.

  1. Cloud Healthcare API 데이터 세트를 만듭니다.
  2. 데이터 세트 내에 DICOM, FHIR 또는 HL7v2 저장소를 만듭니다.
  3. DICOM, FHIR 또는 HL7v2 저장소에 특정 유형의 의료 데이터를 저장하고 검사합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  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에서 의료 데이터를 보관하는 기본 컨테이너입니다. Cloud Healthcare API를 사용하려면 적어도 하나 이상의 데이터 세트를 만들어야 합니다.

curl

데이터 세트를 만들려면 POST 요청을 수행하고 데이터 세트의 이름과 위치를 제공합니다. 다음 샘플은 curl을 사용하는 POST 요청을 보여줍니다.

LOCATION 변수를 설정할 때 us-central1, us-west2, us-east4, europe-west2, europe-west3, europe-west4, europe-west6, northamerica-northeast1, southamerica-east1, asia-east2, asia-northeast1, asia-northeast3, asia-south1, asia-southeast1, australia-southeast1, 또는 us를 사용합니다. 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-central1, us-west2, us-east4, europe-west2, europe-west3, europe-west4, europe-west6, northamerica-northeast1, southamerica-east1, asia-east2, asia-northeast1, asia-northeast3, asia-south1, asia-southeast1, australia-southeast1, 또는 us를 사용합니다. 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 데이터 저장 및 보기

이 빠른 시작을 완료하려면 다음 섹션 중 하나를 선택하세요.

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 자의 모든 유니코드 문자열일 수 있습니다.

    다음 샘플은 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 자의 모든 유니코드 문자열일 수 있습니다.

    다음 샘플은 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 리소스를 보유합니다. projects.locations.datasets.fhirStores.create 메서드를 사용하여 FHIR 저장소를 만듭니다.

    curl

    FHIR 저장소를 만들려면 POST 요청을 수행하고 다음 정보를 지정합니다.

    • 상위 데이터 세트의 이름 및 위치
    • FHIR 저장소의 이름. FHIR 저장소 ID는 상위 데이터 세트 내에서 고유해야 합니다. 숫자, 문자, 밑줄, 대시, 마침표로 구성된 1~256 자의 모든 유니코드 문자열일 수 있습니다.
    • FHIR 저장소의 FHIR 버전입니다. 사용 가능한 옵션은 DSTU2, STU3, R4입니다. 이 빠른 시작에는 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': '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": "R4"
    }
    

    PowerShell

    FHIR 저장소를 만들려면 POST 요청을 수행하고 다음 정보를 지정합니다.

    • 상위 데이터 세트의 이름 및 위치
    • FHIR 저장소의 이름. FHIR 저장소 ID는 상위 데이터 세트 내에서 고유해야 합니다. 숫자, 문자, 밑줄, 대시, 마침표로 구성된 1~256 자의 모든 유니코드 문자열일 수 있습니다.
    • FHIR 저장소의 FHIR 버전: DSTU2, STU3, 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': '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": "R4"
    }
    

  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 저장소의 이름
    • 검색할 정보가 포함된 쿼리 문자열. 이 샘플에서는 환자의 성을 검색합니다.

    다음 샘플은 성이 'Smith'인 모든 환자를 검색하기 위해 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?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 저장소의 이름
    • 검색할 정보가 포함된 쿼리 문자열. 이 샘플에서는 환자의 성을 검색합니다.

    다음 샘플은 성이 'Smith'인 모든 환자를 검색하기 위해 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?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 메시지를 보관합니다. projects.locations.datasets.hl7V2Stores.create 메서드를 사용하여 HL7v2 저장소를 만듭니다.

    curl

    HL7v2 저장소를 만들려면 POST 요청을 수행하고 다음 정보를 지정합니다.

    • 상위 데이터 세트의 이름 및 위치
    • HL7v2 저장소의 이름입니다. HL7v2 저장소 ID는 상위 데이터 세트 내에서 고유해야 합니다. 숫자, 문자, 밑줄, 대시, 마침표로 구성된 1~256 자의 모든 유니코드 문자열일 수 있습니다.

    다음 샘플은 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 자의 모든 유니코드 문자열일 수 있습니다.

    다음 샘플은 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 메시지를 저장하는 두 가지 메서드인 만들기와 수집이 있습니다. 자세한 내용은 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 가이드로 진행하여 다음 주제를 검토하세요.