FHIR Pub/Sub 알림

이 페이지에서는 FHIR 저장소에서 임상 이벤트가 발생할 때 Pub/Sub를 사용하여 알림을 받는 방법을 설명합니다.

다운스트림 처리 트리거 또는 새 데이터 분석 등 다양한 사용 사례에 Pub/Sub 알림을 사용할 수 있습니다. 예를 들어 머신러닝 모델은 새 데이터를 학습에 사용할 수 있을 때 알림을 받고 환자 치료를 개선하기 위한 통계나 예측을 생성할 수 있습니다.

개요

FHIR 저장소에서 FHIR 리소스가 생성, 업데이트, 패치 또는 삭제될 때 Pub/Sub 알림을 받을 수 있습니다. Cloud Healthcare API는 Cloud Storage에서 FHIR 리소스를 가져올 때 알림을 전송하지 않습니다.

알림을 받으려면 Pub/Sub 주제 및 구독을 만든 후 주제로 알림을 보내도록 FHIR 저장소를 구성해야 합니다.

다음 다이어그램은 fhir.create 메서드를 사용하여 FHIR 저장소에 FHIR 리소스를 만들 때 Pub/Sub 알림이 생성되고 전송되는 방법을 보여줍니다. FHIR 리소스가 업데이트, 패치 또는 삭제될 때 단계는 동일합니다.

FHIR Pub/Sub 알림

그림 1. FHIR 저장소의 변경사항에 Pub/Sub 알림 사용

그림 1은 다음 단계를 보여줍니다.

  1. 호출자가 fhirStores.fhir.create 요청을 수행하여 FHIR 리소스를 만듭니다.
  2. FHIR 저장소는 요청을 수신하고 Pub/Sub 메시지를 생성하여 FHIR 저장소에 구성된 Pub/Sub 주제로 전송합니다.
  3. Pub/Sub는 메시지를 주제에 연결된 구독으로 전달합니다.
  4. 구독자는 구독에서 Pub/Sub 메시지의 형태로 알림을 받습니다. 각 구독에는 동시 로드 향상을 위해 하나 이상의 구독자가 있을 수 있습니다.

알림 구성

FHIR 저장소의 FhirNotificationConfig 객체에 Pub/Sub 알림 및 동작을 구성할 수 있습니다. 각 FHIR 저장소에 하나의 FhirNotificationConfig를 구성할 수 있습니다.

다음 표에서는 FhirNotificationConfig 객체의 필드를 설명합니다.

필드 설명
pubsubTopic FHIR 저장소에 연결할 Pub/Sub 주제 지정된 주제로 알림이 전송됩니다. projects/my-project/topics/my-topic
sendFullResource 생성, 업데이트 또는 패치된 FHIR 리소스의 전체 콘텐츠를 알림에 포함할지 여부입니다. 이 필드는 FHIR 리소스가 삭제될 때 전송되는 알림에 영향을 주지 않습니다. 삭제된 리소스의 전체 콘텐츠를 포함하려면 sendPreviousResourceOnDeletetrue로 설정합니다. true
sendPreviousResourceOnDelete 삭제된 FHIR 리소스의 전체 콘텐츠를 알림에 포함할지 여부입니다. 이 필드는 FHIR 리소스가 생성, 업데이트 또는 패치될 때 전송되는 알림에 영향을 미치지 않습니다. true

알림 형식 및 콘텐츠

각 Pub/Sub 알림에는 임상 이벤트 정보가 포함된 message 객체가 포함됩니다. message 객체는 다음과 유사합니다.

{
  "message": {
    "attributes": {
      "action": "ACTION",
      "lastUpdatedTime": "RFC_1123_FORMAT_DATETIME",
      "payloadType": "PAYLOAD_TYPE",
      "resourceType": "FHIR_RESOURCE_TYPE",
      "storeName": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "versionId": "VERSION_ID"
    },
    "data": "BASE_64_ENCODED_DATA",
    "messageId": "MESSAGE_ID",
    "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
  }
}

각 Pub/Sub 메시지에 포함된 추가 필드에 대한 자세한 내용은 ReceivedMessagePubsubMessage를 참조하세요.

다음 표에서는 attributes 객체의 각 필드를 설명합니다.

속성 설명
action FHIR 리소스에서 발생한 작업입니다. 가능한 값은 다음과 같습니다.
  • CreateResource
  • PatchResource
  • UpdateResource
  • DeleteResource
CreateResource
resourceType 수정된 FHIR 리소스 유형 가능한 값은 Cloud Healthcare API에서 지원되는 모든 FHIR 리소스 유형을 포함합니다. Patient
payloadType 메시지의 페이로드 유형, NameOnly 또는 FullResource 중 하나 FullResource
storeName 작업이 발생한 FHIR 저장소의 전체 리소스 이름입니다. projects/my-project/locations/us/datasets/my-dataset/fhirStores/my-fhir-store
lastUpdatedTime FHIR 리소스가 수정된 가장 최근 시간의 타임스탬프입니다. 타임스탬프는 RFC 1123 형식을 사용합니다. Mon, 01 Jan 2020 00:00:00 UTC
versionId 작업이 발생한 FHIR 리소스의 최신 버전 ID입니다. 버전 ID에 대한 자세한 내용은 FHIR 리소스 버전 나열을 참조하세요. MTY4MzA2MDQzOTI5NjIxMDAwMA

다음 표에서는 message 객체의 나머지 필드를 설명합니다.

필드 설명
data FhirNotificationConfig에 지정된 값에 따라 FHIR 리소스 이름 또는 FHIR 리소스 콘텐츠의 base64 인코딩 문자열입니다.
messageId Pub/Sub 메시지의 식별자입니다.
publishTime Pub/Sub 서버가 메시지를 게시한 시간입니다.

알림에 포함할 정보 지정

알림 형식 및 콘텐츠에 설명된 대로 Pub/Sub 알림에는 표준 필드 집합이 포함됩니다. 각 알림에 전체 FHIR 리소스 또는 해당 이름만 포함할 수 있습니다. 리소스 이름에는 리소스의 전체 경로와 리소스 ID가 다음 형식으로 포함됩니다.

projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID

FHIR 리소스 정보는 base 64로 인코딩된 문자열로 data 필드에 저장됩니다.

FHIR 리소스의 전체 콘텐츠를 포함하면 리소스 세부정보를 위해 Pub/Sub 및 Cloud Healthcare API를 별도로 쿼리할 필요가 없습니다.

FHIR 리소스 이름 가져오기

리소스를 생성, 업데이트 또는 패치할 때 FHIR 리소스의 이름만 포함하려면 sendFullResourcefalse로 설정합니다. FHIR 리소스를 삭제할 때 이름만 포함하려면 sendPreviousResourceOnDeletefalse로 설정합니다.

알림을 볼 때 message 객체는 다음과 유사합니다.

{
  "message": {
    "attributes": {
      "action": "{CreateResource|PatchResource|UpdateResource|DeleteResource}",
      "lastUpdatedTime": "RFC_1123_FORMAT_DATETIME",
      "payloadType": "NameOnly",
      "resourceType": "FHIR_RESOURCE_TYPE",
      "storeName": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "versionId": "VERSION_ID"
    },
    "data": "BASE64_ENCODED_FHIR_RESOURCE_NAME",
    "messageId": "MESSAGE_ID",
    "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
  }
}

알림에서 다음 사항에 유의하세요.

  • payloadType 필드가 NameOnly로 설정되어 요청에 대해 다음을 나타냅니다,

    • 만들기, 업데이트, 패치 작업의 경우 sendFullResourcefalse로 설정됩니다.
    • 삭제 작업의 경우 sendPreviousResourceOnDeletefalse로 설정됩니다.
  • data 필드에는 FHIR 리소스 이름만 포함됩니다. 이름은 base 64로 인코딩된 문자열로 인코딩됩니다.

생성, 업데이트 또는 패치된 FHIR 리소스 콘텐츠 가져오기

리소스를 생성, 업데이트 또는 패치할 때 FHIR 리소스의 전체 콘텐츠를 포함하려면 sendFullResourcetrue로 설정합니다.

FHIR 리소스를 삭제하는 경우에는 이 동작이 적용되지 않습니다. FHIR 리소스를 삭제한 경우 sendFullResourcetrue로 설정되었지만 sendPreviousResourceOnDeletefalse로 설정된 경우 알림은 FHIR 리소스 이름만 검색할 때와 동일합니다. FHIR 리소스를 삭제할 때 FHIR 리소스 콘텐츠를 포함하려면 삭제된 FHIR 리소스 콘텐츠 가져오기를 참조하세요.

알림을 볼 때 message 객체는 다음과 유사합니다.

{
  "message": {
    "attributes": {
      "action": "{CreateResource|PatchResource|UpdateResource}",
      "lastUpdatedTime": "RFC_1123_FORMAT_DATETIME",
      "payloadType": "FullResource",
      "resourceType": "FHIR_RESOURCE_TYPE",
      "storeName": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "versionId": "VERSION_ID"
    },
    "data": "BASE64_ENCODED_FHIR_RESOURCE_CONTENTS",
    "messageId": "MESSAGE_ID",
    "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
  }
}

알림에서 다음 사항에 유의하세요.

  • payloadTypeFullResource로 설정되어 sendFullResourcetrue로 설정되었음을 나타냅니다. FHIR 리소스의 전체 콘텐츠는 data 필드에 base 64로 인코딩된 문자열로 포함됩니다.
  • data 필드에는 FHIR 리소스 콘텐츠가 base64로 인코딩된 문자열로 포함됩니다.

삭제된 FHIR 리소스 콘텐츠 가져오기

FHIR 리소스를 삭제할 때 전체 콘텐츠를 포함하려면 sendPreviousResourceOnDeletetrue로 설정합니다.

알림을 볼 때 message 객체는 다음과 유사합니다.

{
  "message": {
    "attributes": {
      "action": "DeleteResource",
      "lastUpdatedTime": "RFC_1123_FORMAT_DATETIME",
      "payloadType": "FullResource",
      "resourceType": "FHIR_RESOURCE_TYPE",
      "storeName": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "versionId": "VERSION_ID"
    },
    "data": "BASE64_ENCODED_FHIR_RESOURCE_CONTENTS",
    "messageId": "MESSAGE_ID",
    "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
  }
}

다음 필드의 값을 확인합니다.

  • sendFullResourcefalse로 설정된 경우에도 payloadTypeFullResource로 설정됩니다.

    FHIR 리소스의 전체 콘텐츠는 data 필드에 base 64로 인코딩된 문자열로 포함됩니다.

  • data 필드에는 리소스가 삭제되기 전 FHIR 리소스의 콘텐츠가 base 64로 인코딩된 문자열로 포함됩니다.

FHIR 알림 구성 및 보기

다음 예시에서는 FHIR 저장소에서 FHIR 리소스가 생성될 때 생성된 Pub/Sub 알림을 보는 방법을 보여줍니다.

시작하기 전에

Pub/Sub 알림을 구성하고 사용하기 전에 다음 섹션을 완료하세요.

Pub/Sub 할당량 검토

Pub/Sub 할당량 및 한도를 숙지하세요. 할당량 확인 및 추가 할당량 요청 방법과 할당량이 부족할 때 발생하는 결과에 대한 자세한 내용은 할당량 작업을 참조하세요.

Pub/Sub API 사용 설정

Google Cloud 콘솔에서 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 주제를 지정할 때 다음 형식을 사용합니다.

projects/PROJECT_ID/topics/TOPIC_NAME

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

Pub/Sub 구독 만들기

주제에 게시된 메시지를 받으려면 Pub/Sub 구독을 만들어야 합니다. 모든 Pub/Sub 주제에는 하나 이상의 Pub/Sub 구독이 필요합니다. 구독은 주제에 게시된 메시지를 수신하고 처리하는 구독자 애플리케이션과 주제를 연결합니다.

구독을 만들고 Pub/Sub 주제에 연결하려면 구독 만들기를 참조하세요.

FHIR 저장소 만들기 또는 수정

구성된 FhirNotificationConfig 객체로 FHIR 저장소를 만들거나 수정합니다.

다음 샘플은 기존 FHIR 저장소를 수정하는 방법을 보여줍니다. sendFullResourcesendPreviousResourceOnDelete 필드는 true로 설정됩니다. 즉, 리소스가 생성, 업데이트, 패치, 삭제될 때 알림에 전체 FHIR 리소스 콘텐츠가 포함됩니다.

REST

FHIR 저장소를 만들려면 projects.locations.datasets.fhirStores.patch 메서드를 사용합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: 데이터 세트 위치
  • DATASET_ID: FHIR 저장소의 상위 데이터 세트
  • FHIR_STORE_ID: FHIR 저장소 ID
  • PUBSUB_TOPIC_ID: Pub/Sub 주제 ID

JSON 요청 본문:

{
  "notificationConfigs": [
    {
      "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID",
      "sendFullResource": true,
      "sendPreviousResourceOnDelete": true
    }
  ]
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

cat > request.json << 'EOF'
{
  "notificationConfigs": [
    {
      "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID",
      "sendFullResource": true,
      "sendPreviousResourceOnDelete": true
    }
  ]
}
EOF

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

curl -X PATCH \
-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/fhirStores/FHIR_STORE_ID?updateMask=notificationConfigs"

PowerShell

요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

@'
{
  "notificationConfigs": [
    {
      "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID",
      "sendFullResource": true,
      "sendPreviousResourceOnDelete": true
    }
  ]
}
'@  | Out-File -FilePath request.json -Encoding utf8

그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-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/fhirStores/FHIR_STORE_ID?updateMask=notificationConfigs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

FHIR 리소스 만들기

FHIR 저장소에서 FHIR 리소스를 만듭니다. 요청이 Cloud Healthcare API에서 메시지를 구성된 Pub/Sub 주제에 게시합니다.

Pub/Sub 알림 보기

Pub/Sub 주제에 게시된 메시지를 확인합니다. 다음 메시지는 FHIR 저장소에 환자 리소스가 생성되었을 때 생성되었습니다.

샘플 출력에서 FHIR 리소스의 콘텐츠는 data 필드의 base64 인코딩 문자열에 있습니다. 콘텐츠를 가져오려면 base64로 인코딩된 값을 디코딩해야 합니다. 대부분의 플랫폼과 운영체제에는 base64 텍스트를 디코딩하는 도구가 있습니다.

REST

Pub/Sub 주제에 게시된 메시지를 보려면 projects.subscriptions.pull 메서드를 사용합니다. 다음 샘플은 ?maxMessages=10 쿼리 매개변수를 사용하여 요청에서 반환할 최대 메시지 수를 지정합니다. 필요에 맞게 값을 조정할 수 있습니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • PUBSUB_SUBSCRIPTION_ID: FHIR 저장소에 구성된 Pub/Sub 주제에 연결된 구독의 ID입니다.

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_ID:pull?maxMessages=10"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_ID:pull?maxMessages=10" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

gcloud

Pub/Sub 주제에 게시된 메시지를 보려면 gcloud pubsub subscriptions pull 명령어를 실행합니다.

이 샘플은 다음 Google Cloud CLI 플래그를 사용합니다.

  • --format=json: 출력을 JSON으로 렌더링합니다.
  • --auto-ack: 가져온 모든 메시지를 자동으로 확인합니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • PUBSUB_SUBSCRIPTION_ID: FHIR 저장소에 구성된 Pub/Sub 주제에 연결된 구독의 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud pubsub subscriptions pull \
    projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_ID \
    --auto-ack \
    --format=json

Windows(PowerShell)

gcloud pubsub subscriptions pull `
    projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_ID `
    --auto-ack `
    --format=json

Windows(cmd.exe)

gcloud pubsub subscriptions pull ^
    projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION_ID ^
    --auto-ack ^
    --format=json

다음과 비슷한 응답이 표시됩니다.

[
  {
    "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUaAggUBXx9cEFLdVhUcGhRDRlyfWB9bQ5GAgpGWixfURsHaE5tdR",
    "ackStatus": "SUCCESS",
    "message": {
      "attributes": {
        "action": "CreateResource",
        "lastUpdatedTime": "Mon, 01 Jan 2020 00:00:00 UTC",
        "payloadType": "FullResource",
        "resourceType": "Patient",
        "storeName": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
        "versionId": "MTY4MzA2MDQzOTI5NjIxMDAwMA"
      },
      "data": "wogICJiaXJ0aERhdGUiOiAiMTk3MC0wMS0wMSIsCiAgImdlbmRlciI6ICJmZW1hbGUiLAogICJpZCI6ICIyYmMwODg4Yi00MGRmLTQwYzctOWRhYi0wMzc4YTFiZWE0MGIiLAogICJtZXRhIjogewogICAgImxhc3RVcGRhdGVkIjogIjIwMjMtMDUtMDJUMjA6NDc6MTkuMjk2MjEwKzAwOjAwIiwKICAgICJ2ZXJzaW9uSWQiOiAiTVRZNE16QTJNRFF6T1RJNU5qSXhNREF3TUEiCiAgfSwKICAibmFtZSI6IFsKICAgIHsKICAgICAgImZhbWlseSI6ICJTbWl0aCIsCiAgICAgICJnaXZlbiI6IFsKICAgICAgICAiRGFyY3kiCiAgICAgIF0sCiAgICAgICJ1c2UiOiAib2ZmaWNpYWwiCiAgICB9CiAgXSwKICAicmVzb3VyY2VUeXBlIjogIlBhdGllbnQiCn0=",
      "messageId": "7586159156345265",
      "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
    }
  }
]

FHIR 리소스가 너무 크거나 트래픽이 높은 경우의 동작

FHIR 리소스 크기가 너무 크거나 Cloud Healthcare API 서버에 높은 트래픽이 발생하는 경우 attributes 필드에는 전체 리소스 콘텐츠 대신 리소스 이름만 포함될 수 있습니다. 이 동작은 sendFullResourcesendPreviousResourceOnDeletetrue로 설정된 경우에도 발생합니다.

Pub/Sub 알림에 전체 FHIR 리소스가 포함되어 있는지 확인하려면 알림 보기의 응답에서 payloadType 필드를 확인합니다. payloadTypenameOnly로 설정된 경우 attributes 필드가 FHIR 리소스 데이터를 완전히 채우지 않았습니다. 그런 다음 Pub/Sub 메시지 대신 FHIR 저장소에서 FHIR 리소스의 콘텐츠를 수동으로 가져와야 합니다.

Cloud Healthcare API 및 Pub/Sub 메시지 스토리지 정책

Cloud Healthcare API 데이터와 Pub/Sub 메시지의 관련 데이터가 동일한 리전에 있는지 확인하려면 Pub/Sub 메시지 스토리지 정책을 설정해야 합니다.

데이터가 동일한 리전에 유지되도록 하려면 데이터 스토어에 구성된 Pub/Sub 주제에 메시지 스토리지 정책을 명시적으로 설정해야 합니다. 예를 들어 Cloud Healthcare API 데이터 세트 및 FHIR 저장소가 us-central1에 있으면 메시지 스토리지 정책에서 us-central1 리전만 허용해야 합니다.

메시지 스토리지 정책을 구성하려면 메시지 저장소 정책 구성을 참조하세요.

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

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

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

NotificationConfig 구성을 사용하여 FHIR 알림 보기(지원 중단됨)

FhirStore 리소스에는 Pub/Sub 주제를 지정할 수 있는 NotificationConfig 객체가 포함됩니다. FHIR 리소스의 변경사항에는 항상 Pub/Sub 메시지의 data 필드에 있는 다음 식별자가 포함됩니다.

projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID

다음 키:값 쌍 집합이 항상 메시지의 attributes 필드에 포함됩니다.

속성 이름 가능한 값 설명
action
  • CreateResource
  • PatchResource
  • UpdateResource
  • DeleteResource
CreateResource 방금 발생한 이벤트의 유형
resourceType 모든 FHIR 리소스 유형 Patient 수정된 리소스 유형

다음 단계