Cloud Storage를 사용하여 HL7v2 메시지 가져오기 및 내보내기

이 페이지에서는 projects.locations.datasets.hl7V2Stores.importprojects.locations.datasets.hl7V2Stores.export 메서드를 사용하여 Cloud Storage에서 HL7v2 메시지를 내보내고 가져오는 방법을 설명합니다.

Cloud Storage에서 HL7v2 메시지를 가져와 HL7v2 저장소에 많은 HL7v2 메시지를 더 쉽게 일괄 로드할 수 있습니다. 여러 HL7v2 메시지를 Cloud Storage에 개별적으로 저장할 필요 없이 Cloud Storage에 한 번에 내보낼 수 있습니다.

Cloud Storage 권한 설정

HL7v2 메시지를 Cloud Storage로 내보내고 가져오기 전에 Cloud Healthcare 서비스 에이전트 서비스 계정에 추가 권한을 부여해야 합니다. 자세한 내용은 HL7v2 저장소 Cloud Storage 권한을 참조하세요.

HL7v2 메시지 가져오기

HL7v2 메시지를 가져오려면 먼저 Cloud Storage에 메시지가 한 개 이상 포함된 줄바꿈으로 구분된 JSON (.ndjson) 파일을 하나 이상 만들어야 합니다. 파일의 각 줄은 base64로 인코딩된 HL7v2 메시지가 포함된 단일 Message 리소스입니다. 또한 Message 리소스에 선택적 라벨이 포함될 수 있습니다.

예를 들어 messages.ndjson이라는 다음 파일에는 HL7v2 메시지가 두 개 포함되어 있습니다. 두 번째 메시지에서 라벨을 정의합니다.

{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}

콘솔

Cloud Storage 버킷에서 HL7v2 메시지를 가져오려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 데이터 세트 페이지로 이동합니다.

    데이터 세트로 이동

  2. HL7v2 메시지를 가져오려는 HL7v2 저장소가 포함된 데이터 세트를 클릭합니다.

  3. 데이터 저장소 목록에 있는 HL7v2 저장소의 작업 목록에서 가져오기를 선택합니다.

    HL7v2 저장소로 가져오기 페이지가 표시됩니다.

  4. 프로젝트 목록에서 Cloud Storage 프로젝트를 선택합니다.

  5. 위치 목록에서 Cloud Storage 버킷을 선택합니다.

  6. 파일을 가져올 특정 위치를 설정하려면 다음을 수행합니다.

    1. 고급 옵션을 펼칩니다.
    2. Cloud Storage 경로 재정의를 선택합니다.
    3. 파일을 가져올 특정 소스를 설정하려면 위치 텍스트 상자에서 경로를 정의합니다. 와일드 카드를 사용하여 하나 이상의 디렉터리에서 여러 파일을 가져올 수 있습니다. 객체 이름 지정에 대한 자세한 내용은 객체 이름 지정 가이드라인을 참조하세요.

      다음 와일드 카드가 지원됩니다.
      • 구분 기호가 아닌 0자 이상의 일치하는 문자를 찾으려면 *를 사용합니다. 예를 들어 gs://BUCKET/DIRECTORY/Example*.ndjsonDIRECTORY의 Example.ndjson과 Example22 항목과 일치합니다.
      • 0자 이상의 일치하는 문자(구분 기호 포함)를 찾으려면 **를 사용합니다. 경로의 끝에 사용해야 하며 경로에 다른 와일드 카드가 없어야 합니다. 또한 지정된 디렉터리 및 하위 디렉터리에서 파일 이름 확장자가 있는 모든 파일을 가져오는 파일 이름 확장자 (예 : .ndjson)와 함께 사용할 수 있습니다. 예를 들어 gs://BUCKET/DIRECTORY/**.ndjsonDIRECTORY 및 하위 디렉터리에 파일명 확장자가 .ndjson인 파일을 모두 가져옵니다.
      • 일치하는 1개 문자를 찾으려면 ?를 사용합니다. 예를 들어 gs://BUCKET/DIRECTORY/Example?.ndjson는 Example1.ndjson과 일치하지만 Example.ndjson 또는 Example01.ndjson과 일치하지 않습니다.
  7. 가져오기를 클릭하여 정의된 소스에서 HL7v2 메시지를 가져옵니다.

  8. 작업 상태를 추적하려면 작업 탭을 클릭합니다. 작업이 완료되면 다음과 같은 표시가 나타납니다.
    • 장기 실행 작업 상태 섹션의 확인 제목 아래에 녹색 체크표시가 있습니다.
    • 개요 섹션에 작업 ID와 같은 행에 녹색 체크표시와 확인 표시기가 있습니다.
    오류가 발생하면 작업을 클릭한 다음 Cloud Logging에서 세부정보 보기를 클릭합니다.

API

다음 샘플에서는 projects.locations.datasets.hl7V2Stores.import 메서드를 사용하여 Cloud Storage에서 HL7v2 메시지를 가져오는 방법을 보여줍니다.

가져오기 작업을 호출할 때 다음 사항에 유의하세요.

  • 버킷 내 파일 위치는 임의로 지정되며 다음 샘플에 지정된 형식과 정확히 일치하지 않아도 됩니다.
  • Cloud Storage에서 HL7v2 메시지의 위치를 지정하면 와일드 카드를 사용하여 디렉터리 한 개 이상에서 파일을 여러 개 가져올 수 있습니다. 다음 와일드 카드가 지원됩니다.
    • 구분 기호가 아닌 0자 이상의 일치하는 문자를 찾으려면 *를 사용합니다. 예를 들어 gs://BUCKET/DIRECTORY/Example*.ndjsonDIRECTORY의 Example.ndjson과 Example22 항목과 일치합니다.
    • 0자 이상의 일치하는 문자(구분 기호 포함)를 찾으려면 **를 사용합니다. 경로의 끝에 사용해야 하며 경로에 다른 와일드 카드가 없어야 합니다. 또한 지정된 디렉터리 및 하위 디렉터리에서 파일 이름 확장자가 있는 모든 파일을 가져오는 파일 이름 확장자 (예 : .ndjson)와 함께 사용할 수 있습니다. 예를 들어 gs://BUCKET/DIRECTORY/**.ndjsonDIRECTORY 및 하위 디렉터리에 파일명 확장자가 .ndjson인 파일을 모두 가져옵니다.
    • 일치하는 1개 문자를 찾으려면 ?를 사용합니다. 예를 들어 gs://BUCKET/DIRECTORY/Example?.ndjson는 Example1.ndjson과 일치하지만 Example.ndjson 또는 Example01.ndjson과 일치하지 않습니다.

curl

HL7v2 메시지를 HL7v2 저장소로 가져오려면 POST 요청을 만들고 다음 정보를 지정합니다.

  • 상위 데이터 세트의 이름
  • HL7v2 저장소의 이름
  • Cloud Storage 버킷에 있는 객체의 위치
  • 액세스 토큰

다음 샘플은 curl를 사용하여 POST 요청을 사용하여 단일 파일을 가져오는 방법을 보여줍니다.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'gcsSource': {
        'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import"

요청이 성공하면 서버가 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 형식의 작업 상태가 포함된 응답을 반환합니다.

{
  "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.hl7v2.Hl7V2Service.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

PowerShell

HL7v2 메시지를 HL7v2 저장소로 가져오려면 POST 요청을 만들고 다음 정보를 지정합니다.

  • 상위 데이터 세트의 이름
  • HL7v2 저장소의 이름
  • Cloud Storage 버킷에 있는 객체의 위치
  • 액세스 토큰

다음 샘플에서는 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 "{
    'gcsSource': {
      'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import" | 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 형식의 작업 상태가 포함된 응답을 반환합니다.

{
  "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.hl7v2.Hl7V2Service.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

HL7v2 메시지 내보내기

HL7v2 저장소에서 HL7v2 메시지를 내보내면 HL7v2 저장소에 있는 모든 메시지가 내보내기 됩니다. 이러한 메시지의 하위 집합만 내보내려면 정의된 시간 범위 내에 전송된 메시지만 포함하도록 startTimeendTime 매개변수를 정의하면 됩니다. Message 리소스의 특정 부분만 내보내려면 MessageView를 설정합니다.

메시지를 내보내면 Cloud Healthcare API가 각 HL7v2 메시지에 대한 객체를 만듭니다. 각 객체는 각 행에 Message 리소스가 포함된 .ndjson 파일로 구성됩니다. sendTime(MSH.7)에 따라 메시지가 오름차순으로 내보내기 됩니다.

콘솔

HL7v2 메시지를 Cloud Storage로 내보내려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 데이터 세트 페이지로 이동합니다.

    데이터 세트로 이동

  2. HL7v2 메시지를 내보낼 HL7v2 저장소가 포함된 데이터 세트를 클릭합니다.

  3. 데이터 저장소 목록에 있는 HL7v2 저장소의 작업 목록에서 내보내기를 선택합니다.

    HL7v2 메시지 내보내기 페이지가 나타납니다.

  4. 프로젝트 목록에서 Cloud Storage 프로젝트를 선택합니다.

  5. 위치 목록에서 Cloud Storage 버킷을 선택합니다.

  6. 내보내기를 클릭하여 HL7v2 인스턴스를 Cloud Storage의 정의된 위치로 내보냅니다.

  7. 작업 상태를 추적하려면 작업 탭을 클릭합니다. 작업이 완료되면 다음과 같은 표시가 나타납니다.
    • 장기 실행 작업 상태 섹션의 확인 제목 아래에 녹색 체크표시가 있습니다.
    • 개요 섹션에 작업 ID와 같은 행에 녹색 체크표시와 확인 표시기가 있습니다.
    오류가 발생하면 작업을 클릭한 다음 Cloud Logging에서 세부정보 보기를 클릭합니다.

API

다음 샘플은 projects.locations.datasets.hl7V2Stores.messages.export 메서드를 사용하여 HL7v2 메시지를 Cloud Storage로 내보내는 방법을 보여줍니다.

내보내기 작업을 호출할 때 다음 사항에 유의하세요.

  • 메시지가 많은 경우 Cloud Healthcare API가 여러 개의 줄바꿈으로 구분된 JSON 파일을 만들 수 있으므로 객체가 아닌 Cloud Storage 버킷 또는 디렉터리에 씁니다. 각 JSON 파일에서 각 행은 HL7v2 메시지입니다.
  • 명령어가 존재하지 않는 디렉터리를 지정하면 디렉터리가 생성됩니다.

curl

HL7v2 메시지를 내보내려면 POST 요청을 수행하고 다음 정보를 지정합니다.

  • 상위 데이터 세트의 이름
  • HL7v2 저장소의 이름
  • 대상 Cloud Storage 버킷 또는 디렉터리입니다.
  • 액세스 토큰

다음 샘플은 curl을 사용하는 POST 요청을 보여줍니다.

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

요청이 성공하면 서버가 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 형식의 작업 상태가 포함된 응답을 반환합니다.

{
  "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.hl7v2.Hl7V2Service.ExportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "counter": {
      "success": "RESOURCE_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
  }
}

PowerShell

HL7v2 메시지를 내보내려면 POST 요청을 수행하고 다음 정보를 지정합니다.

  • 상위 데이터 세트의 이름
  • HL7v2 저장소의 이름
  • 대상 Cloud Storage 버킷 또는 디렉터리입니다.
  • 액세스 토큰

다음 샘플은 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 "{
    'gcsDestination': {
      'uriPrefix': 'gs://BUCKET/DIRECTORY'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export" | 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 형식의 작업 상태가 포함된 응답을 반환합니다.

{
  "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.hl7v2.Hl7V2Service.ExportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "counter": {
      "success": "RESOURCE_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
  }
}

HL7v2 가져오기 및 내보내기 요청 문제 해결

HL7v2 내보내기 요청 중에 오류가 발생하면 오류가 Cloud Logging에 기록됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.

작업이 오류를 반환하는 경우 장기 실행 작업 문제 해결을 참조하세요.