Pub/Sub 알림 구성

Pub/Sub를 사용하여 Cloud Healthcare API 데이터 저장소에서 임상 이벤트가 발생할 때 알림을 수신할 수 있습니다. 이러한 알림은 다음 상황을 알려줍니다.

  • DICOM 인스턴스는 dicomStores.dicomWeb.studies.storeInstances를 사용하여 DICOM 저장소에 저장됩니다. 하지만 DICOM 리소스를 Cloud Storage에서 가져올 때 알림은 전송되지 않습니다.
  • FHIR 리소스가 FHIR 저장소에서 생성, 업데이트 또는 삭제된 경우. 하지만 FHIR 리소스를 Cloud Storage에서 가져올 때 알림이 전송되지 않습니다.
  • HL7v2 메시지가 HL7v2 저장소에서 수집되거나 생성된 경우

이러한 이벤트 중 하나가 발생하면 Cloud Healthcare API는 주제라는 이름이 지정된 Pub/Sub 리소스에 메시지를 게시합니다. 그런 다음 이 주제를 구독하는 애플리케이션에서 메시지를 수신할 수 있습니다.

이러한 메시지는 개인 정보를 포함하지 않습니다. 다음 항목만 포함됩니다.

  • 생성된 메시지의 프로젝트
  • 메시지 ID
  • FHIR 메시지에서 메시지를 유발한 resourceType 및 작업
  • HL7v2 메시지의 HL7v2 메시지 유형

Cloud Healthcare API에서 Pub/Sub 알림 사용에 대한 개요는 Pub/Sub 알림을 참조하세요.

기본 요건

이 기능을 사용하려면 다음 섹션을 완료하세요.

Pub/Sub API 사용 설정

Pub/Sub API를 사용 설정하려면 다음 버튼을 클릭합니다.

API 사용 설정

Pub/Sub 권한 구성

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

Pub/Sub 주제 만들기

알림을 수신할 각 데이터 저장소에 대해 Pub/Sub 주제를 구성해야 합니다. 개별 데이터 저장소에는 자체 Pub/Sub 주제가 있거나 여러 데이터 저장소가 동일한 주제를 공유할 수 있습니다. Google Cloud Console 또는 gcloud 명령줄 도구를 사용하여 주제를 만들 수 있습니다.

주제를 만들거나 데이터 저장소 구성에서 주제를 참조할 때는 다음 형식의 정규화된 URI를 사용해야 합니다.

projects/PROJECT_ID/topics/TOPIC_NAME

여기서 PROJECT_ID는 Google Cloud 프로젝트 ID이고 TOPIC_NAME은 주제의 이름입니다.

주제를 만들려면 다음 단계를 완료합니다.

Console

  1. Cloud Console에서 Pub/Sub 주제 페이지로 이동합니다.

    Pub/Sub 주제 페이지로 이동

  2. 주제 만들기를 클릭합니다.

  3. URI와 함께 주제 이름을 입력합니다.

    projects/PROJECT_ID/topics/TOPIC_NAME

    여기서 PROJECT_ID는 Google Cloud 프로젝트 ID입니다.

  4. 만들기를 클릭합니다.

gcloud

주제를 만들려면 gcloud pubsub topics create 명령어를 실행합니다.

gcloud pubsub topics create projects/PROJECT_ID/topics/TOPIC_NAME

요청이 성공하면 명령어는 다음 출력을 반환합니다.

Created topic [projects/PROJECT_ID/topics/TOPIC_NAME].

Pub/Sub 구독 만들기

주제에 게시된 메시지를 받으려면 Pub/Sub 구독을 만들어야 합니다. 모든 Pub/Sub 주제에는 하나 이상의 Pub/Sub 구독이 있어야 합니다.

구독은 주제에 게시된 메시지를 수신하고 처리하는 구독자 애플리케이션과 주제를 연결합니다.

구독은 내보내기 모델이나 가져오기 모델을 이용하도록 구성할 수 있습니다.

구독을 만들려면 다음 단계를 완료하세요.

Console

  1. Cloud Console에서 Pub/Sub 주제 페이지로 이동합니다.

    Pub/Sub 주제 페이지로 이동

  2. 프로젝트 주제를 클릭합니다.

  3. 구독 만들기를 클릭합니다.

  4. 구독 이름을 입력합니다.

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME

    전송 유형가져오기로 설정합니다.

  5. 만들기를 클릭합니다.

gcloud

주제를 만들려면 gcloud pubsub subscriptions create 명령어를 실행합니다.

gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME

요청이 성공하면 명령어는 다음 출력을 반환합니다.

Created subscription [projects/PROJECT_ID/subscriptions/TOPIC_NAME].

DICOM 인스턴스

DicomStore 리소스에는 Pub/Sub 주제를 지정할 수 있는 notificationConfig 객체가 포함됩니다.

DICOM 인스턴스가 DICOM 저장소에 저장될 때는 DICOM 인스턴스가 존재하더라도 Cloud Healthcare API가 메시지를 DICOM 저장소의 Pub/Sub 주제에 게시합니다.

다음 다이어그램은 DICOM 인스턴스가 저장될 때 발생하는 알림의 흐름을 보여줍니다.

dicom_pubsub

  1. DICOM 인스턴스를 저장하기 위해 dicomStores.dicomWeb.studies.storeInstances 요청이 수행됩니다.
  2. DICOM 저장소가 인스턴스를 수신한 다음 Pub/Sub 주제에 메시지를 만들고 전송합니다.
  3. Pub/Sub이 메시지를 주제의 구독으로 전달합니다.
  4. 구독자는 구독에서 Pub/Sub 메시지의 형태로 알림을 받습니다. 각 구독에는 동시 로드 향상을 위해 하나 이상의 구독자가 있을 수 있습니다.

저장된 DICOM 인스턴스에 대한 알림을 보려면 다음 단계를 완료합니다.

  1. DICOM 저장소를 만들거나 수정하여 Pub/Sub 주제로 구성합니다.
  2. 프로젝트의 서비스 계정에 필요한 pubsub.publisher 역할을 추가합니다.
  3. DICOM 저장소에 인스턴스를 저장합니다. 이렇게 하면 Cloud Healthcare API가 메시지를 구성된 Pub/Sub 주제에 게시합니다.
  4. gcloud pubsub subscriptions pull 명령어를 실행하여 Pub/Sub 주제에 게시된 메시지를 확인합니다.

    gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
    

    이 명령어는 저장된 DICOM 인스턴스에 대해 다음 출력을 반환합니다.

    ┌----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┐
    |                                                                          DATA                                                                           |    MESSAGE_ID   | ATTRIBUTES |
    ├---------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|------------|
    | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID | 123456789012345 |            |
    └----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┘
    

FHIR 리소스

FhirStore 리소스에는 Pub/Sub 주제를 지정할 수 있는 notificationConfig 객체가 포함됩니다.

FHIR 저장소에서 FHIR 리소스가 생성, 업데이트, 삭제되면 Cloud Healthcare API가 메시지를 FHIR 저장소의 Pub/Sub 주제에 게시합니다.

다음 다이어그램은 FHIR 리소스가 생성, 업데이트 또는 삭제될 때 발생하는 알림 흐름을 보여줍니다.

fhir_pubsub

  1. FHIR 리소스를 수정하기 위해 fhirStores.fhir.update API 요청이 수행됩니다.
  2. 리소스가 포함된 FHIR 저장소는 Pub/Sub 메시지를 만들어 저장소의 Pub/Sub 주제로 보냅니다.
  3. Pub/Sub이 메시지를 주제의 구독으로 전달합니다.
  4. 구독자는 구독에서 Pub/Sub 메시지의 형태로 알림을 받습니다. 각 구독에는 동시 로드 향상을 위해 하나 이상의 구독자가 있을 수 있습니다.

생성된 FHIR 리소스의 알림을 보려면 다음 단계를 완료하세요.

  1. FHIR 저장소를 만들거나 수정하고 Pub/Sub 주제로 구성합니다.
  2. 프로젝트의 서비스 계정에 필요한 pubsub.publisher 역할을 추가합니다.
  3. FHIR 저장소에서 FHIR 리소스를 만듭니다. 이렇게 하면 Cloud Healthcare API가 메시지를 구성된 Pub/Sub 주제에 게시합니다.
  4. gcloud pubsub subscriptions pull 명령어를 실행하여 Pub/Sub 주제에 게시된 메시지를 확인합니다.

    gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
    

    이 명령어는 생성된 FHIR 리소스에 대한 다음 출력을 반환합니다.

    ┌----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┐
    |                                                      DATA                                                      |    MESSAGE_ID   |       ATTRIBUTES      |
    ├----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------|
    | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/resources/Patient/PATIENT_ID | 123456789012345 | action=CreateResource |
    |                                                                                                                |                 | resourceType=Patient  |
    └----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┘
    

HL7v2 메시지

Hl7V2Store 리소스에는 Pub/Sub 주제 및 필터링 기준을 지정할 수 있는 notificationConfigs 배열이 포함됩니다.

HL7v2 메시지가 HL7v2 저장소에서 수집되거나 생성되면 Cloud Healthcare API는 HL7v2 메시지와 일치하는 필터가 있는 Pub/Sub 주제에 메시지를 게시합니다.

다음 다이어그램은 HL7v2 메시지가 수집되거나 생성될 때 발생하는 알림의 흐름을 보여줍니다.

hl7v2_pubsub

  1. Cloud Healthcare API는 관리 시스템에서 HL7v2 메시지를 수집합니다.
  2. 메시지는 HL7v2 저장소에 저장됩니다.
  3. HL7v2 저장소는 Pub/Sub 메시지를 만들어 HL7v2 메시지와 일치하는 필터가 있는 저장소의 Pub/Sub 주제로 보냅니다.
  4. Pub/Sub는 Pub/Sub 메시지를 주제의 구독으로 전달합니다.
  5. 구독자는 구독에서 Pub/Sub 메시지의 형태로 알림을 받습니다. 각 구독에는 동시 로드 향상을 위해 하나 이상의 구독자가 있을 수 있습니다.

수집된 HL7v2 메시지의 알림을 보려면 다음 단계를 완료하세요.

  1. HL7v2 저장소를 만들거나 수정하고 Pub/Sub 주제로 구성합니다.
  2. 프로젝트의 서비스 계정에 필요한 pubsub.publisher 역할을 추가합니다.
  3. HL7v2 저장소에 HL7v2 메시지를 수집합니다. 이렇게 하면 Cloud Healthcare API가 메시지를 구성된 Pub/Sub 주제에 게시합니다.
  4. Pub/Sub 주제에 게시된 메시지를 보려면 gcloud pubsub subscriptions pull 명령어를 실행합니다.

    gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
    

    명령어는 수집된 HL7v2 메시지에 대한 다음 출력을 반환합니다.

    ┌--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┐
    |                                                                 DATA                                               |    MESSAGE_ID   |   ATTRIBUTES  |
    ├--------------------------------------------------------------------------------------------------------------------|-----------------|---------------|
    | projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=TYPE  |
    └--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
    

누락된 Pub/Sub 메시지 문제 해결

Pub/Sub에 알림을 게시할 수 없는 경우 Cloud Logging에 오류가 로깅됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.

오류 생성 속도가 한도를 초과하면 이 한도를 초과하는 오류는 Cloud Logging에 제출되지 않습니다.

다음 단계

Pub/Sub 주제를 구성하는 방법 알아보기: