이 페이지에서는 HL7v2 저장소에서 Cloud Storage로 HL7v2 메시지를 내보내는 방법을 설명합니다. 다운스트림 처리를 위해 HL7v2 메시지를 Cloud Storage로 일괄적으로 내보낼 수 있습니다.
시작하기 전에
Cloud Healthcare 서비스 에이전트 서비스 계정에 부여해야 하는 역할은 Cloud Storage에서 HL7v2 메시지 내보내기를 참조하세요.
HL7v2 메시지를 Cloud Storage로 내보내기
이 태스크에 필요한 권한
이 태스크를 수행하려면 다음 권한 또는 다음 Identity and Access Management(IAM) 역할을 부여 받아야 합니다.
권한
- 요청된 HL7v2 저장소에 대한
healthcare.hl7V2Stores.export
역할
관리자에게 이러한 Identity and Access Management 역할을 부여해 달라고 요청할 수 있습니다. 역할 부여에 대한 안내는 액세스 관리 또는 Cloud Healthcare API 리소스 액세스 제어를 참조하세요. 커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
Cloud Healthcare API는 각 HL7v2 메시지를 NDJSON .ndjson
파일의 줄로 내보냅니다. HL7v2 메시지는 sendTime
값에 따라 시간순으로 정렬됩니다.
HL7v2 메시지가 많은 경우 Cloud Healthcare API가 여러 NDJSON 파일을 만들 수 있으므로 객체가 아닌 Cloud Storage 버킷 또는 폴더로 내보냅니다.
존재하지 않는 Cloud Storage 폴더로 내보내면 폴더가 생성됩니다.
HL7v2 메시지를 Cloud Storage로 내보내려면 다음 단계를 완료합니다.
Google Cloud 콘솔에서 데이터 세트 페이지로 이동합니다.
HL7v2 메시지를 내보낼 HL7v2 저장소가 포함된 데이터 세트를 클릭합니다.
데이터 저장소 목록에 있는 HL7v2 저장소의 작업 목록에서 내보내기를 선택합니다.
HL7v2 메시지 내보내기 페이지가 나타납니다.
프로젝트 목록에서 Cloud Storage 프로젝트를 선택합니다.
위치 목록에서 Cloud Storage 버킷을 선택합니다.
내보내기를 클릭하여 HL7v2 인스턴스를 Cloud Storage의 정의된 위치로 내보냅니다.
- 작업 상태를 추적하려면 작업 탭을 클릭합니다. 작업이 완료되면 다음과 같은 표시가 나타납니다.
- 장기 실행 작업 상태 섹션의 확인 제목 아래에 녹색 체크표시가 있습니다.
- 개요 섹션에 작업 ID와 같은 행에 녹색 체크표시와 확인 표시기가 있습니다.
필터를 사용하여 HL7v2 메시지를 Cloud Storage로 내보내기
기본적으로 HL7v2 메시지를 Cloud Storage로 내보내면 HL7v2 저장소의 모든 HL7v2 메시지와 각 Message
객체의 모든 필드가 포함됩니다.
내보낸 HL7v2 메시지를 다음과 같이 필터링할 수 있습니다.
- 필터를 사용하여 필터 기준과 일치하는 HL7v2 메시지의 하위 집합을 내보냅니다. 자세한 내용은 필터를 사용하여 HL7v2 메시지의 하위 집합 내보내기를 참조하세요.
MessageView
객체를 사용하여 내보낼 각Message
의 필드를 선택합니다. 자세한 내용은Message
필드로 HL7v2 메시지 내보내기를 참조하세요.
필터를 사용하여 HL7v2 메시지의 하위 집합 내보내기
필터 기준에서 다음 필드를 사용할 수 있습니다.
filter
필드에서 필터 기준으로 다음 필터 매개변수를 지정할 수 있습니다. 필터 문법을 알아보고 쿼리를 구성하려면 쿼리 문자열을 참조하세요.
message_type
: MSH 9.1 필드에서 가져옵니다. 예를 들면NOT message_type = "ADT"
입니다.send_date
: 데이터 세트의 시간대에 지정된 MSH.7 세그먼트에서 메시지가 전송된YYYY-MM-DD
날짜입니다. 예를 들면send_date < "2017-01-02"
입니다.send_time
: 메일이 전송된 시점의 타임스탬프입니다. 이 매개변수는 메시지의 MSH.7 세그먼트에서 가져옵니다. 이 매개변수는 비교를 위해 RFC 3339 시간 형식을 사용합니다. 예를 들면send_time < "2017-01-02T00:00:00-05:00"
입니다.create_time
: 메시지가 Cloud Healthcare API에서 생성된 타임스탬프로, 비교를 위해 RFC 3339 시간 형식을 사용합니다. 예를 들면create_time < "2017-01-02T00:00:00-05:00"
입니다.send_facility
: MSH.4 세그먼트에서 메시지를 가져온 의료 센터입니다. 예를 들면send_facility = "ABC"
입니다.
다음 샘플에서는 ADT
유형의 HL7v2 메시지만 내보내도록 필터를 지정하는 방법을 보여줍니다.
hl7V2Stores.export
메서드를 사용하여 HL7v2 메시지를 내보냅니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
: Google Cloud 프로젝트의 IDPROJECT_ID
: 데이터 세트 위치LOCATION
: HL7v2 저장소의 상위 데이터 세트DATASET_ID
: HL7v2 스토어 IDHL7V2_STORE_ID
: 내보낸 HL7v2 메시지가 작성되는 Cloud Storage 버킷 또는 폴더의 이름CLOUD_STORAGE_LOCATION
JSON 요청 본문:
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" }요청을 보내려면 다음 옵션 중 하나를 선택합니다.
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" } EOF그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
curl -X POST \
-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 /hl7V2Stores/HL7V2_STORE_ID :export"요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" } '@ | 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/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :export" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.응답
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
: Google Cloud 프로젝트의 IDPROJECT_ID
: 데이터 세트 IDDATASET_ID
: 데이터 세트 위치LOCATION
: 장기 실행 작업에서 반환된 IDOPERATION_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 /operations/OPERATION_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 /operations/OPERATION_ID " | Select-Object -Expand Content메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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.hl7v2.Hl7V2Service.ExportMessages", "createTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
Message
필드로 HL7v2 메시지 내보내기
Cloud Healthcare API에서 HL7v2 메시지는 Message
리소스에 저장됩니다. MessageView
enum을 사용하여 내보낸 각 HL7v2 메시지에 포함된 Message
리소스의 필드를 확인할 수 있습니다.
다음 샘플에서는 MessageView
의 BASIC
값을 사용하여 내보낸 HL7v2 메시지에 name
필드만 포함하는 방법을 보여줍니다.
hl7V2Stores.export
메서드를 사용하여 HL7v2 메시지를 내보냅니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
: Google Cloud 프로젝트의 IDPROJECT_ID
: 데이터 세트 위치LOCATION
: HL7v2 저장소의 상위 데이터 세트DATASET_ID
: HL7v2 스토어 IDHL7V2_STORE_ID
: 내보낸 HL7v2 메시지가 작성되는 Cloud Storage 버킷 또는 폴더의 이름CLOUD_STORAGE_LOCATION
JSON 요청 본문:
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } }요청을 보내려면 다음 옵션 중 하나를 선택합니다.
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } } EOF그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
curl -X POST \
-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 /hl7V2Stores/HL7V2_STORE_ID :export"요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } } '@ | 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/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :export" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.응답
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
: Google Cloud 프로젝트의 IDPROJECT_ID
: 데이터 세트 IDDATASET_ID
: 데이터 세트 위치LOCATION
: 장기 실행 작업에서 반환된 IDOPERATION_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 /operations/OPERATION_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 /operations/OPERATION_ID " | Select-Object -Expand Content메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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.hl7v2.Hl7V2Service.ExportMessages", "createTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
HL7v2 내보내기 요청 문제 해결
HL7v2 메시지를 내보내는 중에 오류가 발생하면 오류가 Cloud Logging에 로깅됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.
장기 실행 작업이 오류를 반환하는 경우 장기 실행 작업 문제 해결을 참조하세요.