이 페이지에서는 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를 사용 설정합니다.
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" } } ]