HL7v2 메시지를 Pub/Sub로 내보내기

이 페이지에서는 projects.locations.datasets.hl7V2Stores.export 메서드를 사용하여 HL7v2 메시지를 Pub/Sub로 내보내는 방법을 설명합니다.

다운스트림 처리를 위해 HL7v2 메시지를 Pub/Sub로 내보낼 수 있습니다. 새 메시지가 HL7v2 스토어로 수집될 때 HL7v2 메시지를 변환하는 Dataflow 파이프라인이 있다고 가정해 보겠습니다. 파이프라인은 Pub/Sub 구독에서 읽고 새 HL7v2 메시지의 알림을 기다립니다. hl7V2Stores.import 메서드를 사용하여 HL7v2 메시지를 HL7v2 스토어로 가져오면 이 메서드는 Pub/Sub 알림을 전송하지 않습니다. 파이프라인을 트리거하려면 HL7v2 메시지를 가져온 다음 hl7v2Stores.export 메서드를 사용하여 Pub/Sub로 내보냅니다.

시작하기 전에

Pub/Sub API 사용 설정

Google Cloud 콘솔에서 Pub/Sub API를 사용 설정합니다.

API 사용 설정하기

Pub/Sub 권한 구성

HL7v2 저장소에서 Pub/Sub로 메시지를 내보내려면 프로젝트의 Cloud Healthcare 서비스 에이전트 서비스 계정pubsub.publisher 역할을 추가해야 합니다. 필요한 역할을 추가하는 단계는 DICOM, FHIR, HL7v2 저장소 Pub/Sub 권한을 참조하세요.

Pub/Sub 주제 만들기

주제를 만들려면 주제 만들기를 참조하세요.

개별 데이터 저장소에는 자체 Pub/Sub 주제가 있거나 여러 데이터 저장소가 동일한 주제를 공유할 수 있습니다.

Pub/Sub 주제를 지정할 때 다음 형식을 사용합니다.

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID는 Google Cloud 프로젝트 ID이고 TOPIC_NAME은 Pub/Sub 주제의 이름입니다.

HL7v2 메시지를 Pub/Sub로 내보내기

curl

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

  • 상위 데이터세트의 이름
  • HL7v2 저장소의 이름
  • 대상 Pub/Sub 주제

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

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      }
    }" "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"
  }
}

필터를 사용하여 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 메시지만 내보내도록 필터를 지정하는 방법을 보여줍니다.

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      },
      'filter': 'message_type = \"ADT\"'
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"

Pub/Sub에서 내보낸 HL7v2 메시지 보기

Pub/Sub에서 내보낸 HL7v2 메시지를 보려면 gcloud pubsub subscriptions pull 명령어를 실행합니다. 이 명령어는 --format=json 플래그를 사용하여 기본 YAML 대신 JSON으로 출력을 반환합니다.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID는 Google Cloud 프로젝트의 ID입니다.
  • PUBSUB_SUBSCRIPTION은 HL7v2 메시지를 내보낸 Pub/Sub 주제에 연결된 구독입니다.

출력은 다음과 같습니다.

[
  {
    "ackId": "ACK_ID",
    "message": {
      "attributes": {
        "msgType": "TYPE"
      },
      "data": "DATA",
      "messageId": "8076570784126536",
      "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
    }
  }
]