Notification Request Service

This profile set is created and maintained by the LRA project. Implementers should treat this Implementation Guide as the source of truth for the LRA Notification Request profile definitions, terminology bindings, and message structure.

Overview

The LRA Notification Request Service provides a generic FHIR messaging pattern for submitting notification requests to LRA.

The service is designed to support multiple notification use cases over time. Each use case defines the business payload, applicable resource profiles, processing rules, and examples required for that specific notification scenario.

A Notification Request is submitted to the LRA notification endpoint using a FHIR Bundle of type message. The generic message structure includes a MessageHeader that provides the event, routing, source, destination, and message focus information.

The remaining Bundle entries are use-case-specific and are defined by the applicable notification use case. For example, the BC Cancer notification use case uses CommunicationRequest, DocumentReference, and Patient resources to represent the notification request, related document, and notification recipient.

Conformance

  • The request SHALL be submitted as a FHIR R4 Bundle with Bundle.type = message.
  • Bundle.identifier SHALL be used as the message-level unique identifier for tracking and correlation.
  • The Bundle SHALL include a MessageHeader resource.
  • MessageHeader SHALL be used for routing, event identification, source/destination context, and identifying the focus of the message.
  • Use-case-specific payload resources SHALL be defined by the applicable notification use case.
  • All resources included in the Bundle SHALL conform to the applicable LRA Notification Request profiles defined in this Implementation Guide.

Processing conventions

  • The Notification Request Bundle is submitted to the LRA Notification endpoint using the $process-message operation.
  • MessageHeader is used for routing and message context.
  • The business payload is use-case-specific and may include request, recipient, document, or other supporting resources depending on the notification scenario.
  • Each notification use case SHALL define:
    • the required payload resources;
    • the expected MessageHeader.event;
    • the expected MessageHeader.focus;
    • the applicable resource profiles;
    • use-case-specific business rules; and
    • example Bundles.

Interaction Guidance

The Notification Request interaction supports the submission of notification request messages from source systems to LRA.

Submit Notification Request

The system SHALL support submission of a Notification Request Bundle to the LRA notification endpoint.

POST [baseURL]/notification/$process-message

The submitted Bundle SHALL conform to the applicable LRA Notification Request profile for the notification use case being implemented.

Generic Request Bundle Structure

The generic Notification Request Bundle structure contains the following:

FHIR Resource Cardinality Purpose
MessageHeader 1..1 Identifies the notification event, source, destination, routing context, and focus of the message.
Use-case-specific payload resources 1..* Represents the business payload required for a specific notification use case.

Use-case-specific resources are defined in the applicable use case section.


BC Cancer Notification Request Use Case

The BC Cancer Notification Request is one implementation of the generic LRA Notification Request Service.

In this use case, Health Gateway sends a Notification Request Bundle when a patient-facing notification should be sent for a BC Cancer document, such as a screening letter. The Bundle represents a single notification request and includes the message metadata, notification request, document reference, and patient recipient details.

BC Cancer Bundle Structure

The BC Cancer Notification Request Bundle contains the following resources:

FHIR Resource Cardinality Purpose
MessageHeader 1..1 Identifies the BC Cancer notification event and points to the primary request resource.
CommunicationRequest 1..1 Represents the request/order to notify the patient.
DocumentReference 1..1 Represents the BC Cancer document or letter that the notification is about.
Patient 1..1 Represents the patient/recipient of the notification.

BC Cancer Processing Rules

  • The Bundle SHALL conform to the LRA Notification Request Bundle profile.
  • MessageHeader.focus SHALL reference the CommunicationRequest.
  • CommunicationRequest.subject and CommunicationRequest.recipient SHALL reference the Patient.
  • CommunicationRequest.about SHALL reference the DocumentReference.
  • If CommunicationRequest.medium includes SMSWRIT, the Patient SHALL include a phone number.
  • If CommunicationRequest.medium includes EMAILWRIT, the Patient SHALL include an email address.
  • DocumentReference represents the BC Cancer document or letter that the notification is about.

Example Bundle: Example Bundle - BC Cancer Notification Request


Profiles Content

The LRA Notification Request profiles define the FHIR message structure currently used to support the BC Cancer Notification Request use case. As additional notification use cases are introduced, this documentation may be expanded to describe additional payload resources, constraints, processing rules, and examples.

  • Bundle

    The Bundle resource represents the complete Notification Request message submitted to LRA. The Bundle is constrained to type `message` and includes a message-level identifier used for tracking and correlation. For the BC Cancer notification use case, the Bundle contains the MessageHeader, CommunicationRequest, DocumentReference, and Patient resources required to process the notification request.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    id0..1string
    extensionC0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uriFixed Value
    valueS Σ1..1string
    periodΣ C0..1Period
    assignerΣ C0..1Reference(Organization)
    typeS Σ1..1codeBindingFixed Value
    timestampS Σ1..1instant
    totalΣ C0..1unsignedInt
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    relationΣ1..1string
    urlΣ1..1uri
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    fullUrlΣ0..1uri
    resourceΣ0..1Resource
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    fullUrlS Σ1..1uri
    resourceS Σ C1..1LRANotificationMessageHeader
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    fullUrlS Σ1..1uri
    resourceS Σ C1..1LRANotificationCommunicationRequest
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    fullUrlS Σ1..1uri
    resourceS Σ C1..1LRANotificationDocumentReference
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    fullUrlS Σ1..1uri
    resourceS Σ C1..1LRANotificationPatient
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    signatureΣ0..1Signature
  • MessageHeader

    The MessageHeader resource captures key metadata about the Notification Request message, including the event type, source system, destination endpoint, and focus of the message. For the BC Cancer notification use case, the MessageHeader identifies the message as a BC Cancer notification request and points to the CommunicationRequest resource that represents the primary business request.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionC0..*Extension
    modifierExtension?! C0..*Extension
    eventCodingCoding
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    nameΣ0..1string
    targetΣ C0..1Reference(Device)
    endpointS Σ1..1url
    receiverΣ C0..1Reference(Organization | Practitioner | PractitionerRole)
    senderΣ C0..1Reference(Organization | Practitioner | PractitionerRole)
    entererΣ C0..1Reference(Practitioner | PractitionerRole)
    authorΣ C0..1Reference(Practitioner | PractitionerRole)
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    nameS Σ1..1stringFixed Value
    softwareΣ0..1string
    versionΣ0..1string
    contactΣ C0..1ContactPoint
    endpointS Σ1..1urlFixed Value
    responsibleΣ C0..1Reference(Organization | Practitioner | PractitionerRole)
    reasonΣ0..1CodeableConcept
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    identifierΣ1..1id
    codeΣ1..1codeBinding
    detailsΣ C0..1Reference(OperationOutcome)
    focusS Σ C1..1Reference(LRANotificationCommunicationRequest)
    definitionΣ0..1canonical(MessageDefinition)
  • CommunicationRequest

    The CommunicationRequest resource represents the notification order/request for the BC Cancer notification use case. It identifies the patient to be notified, the notification medium such as SMS and/or email, the notification type, the related document, and the request creation time. This is the primary business resource in the BC Cancer Notification Request Bundle.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionC0..*Extension
    modifierExtension?! C0..*Extension
    id0..1string
    extensionC0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uriFixed Value
    valueS Σ1..1string
    periodΣ C0..1Period
    assignerΣ C0..1Reference(Organization)
    basedOnΣ C0..*Reference(Resource)
    replacesΣ C0..*Reference(CommunicationRequest)
    groupIdentifierΣ0..1Identifier
    statusS Σ ?!1..1codeBindingFixed Value
    statusReason0..1CodeableConcept
    id0..1string
    extensionC0..*Extension
    id0..1string
    extensionC0..*Extension
    systemS Σ1..1uriFixed Value
    versionΣ0..1string
    codeS Σ1..1code
    displayΣ0..1string
    userSelectedΣ0..1boolean
    textΣ0..1string
    priorityS Σ1..1codeBindingFixed Value
    doNotPerformΣ ?!0..1boolean
    id0..1string
    extensionC0..*Extension
    id0..1string
    extensionC0..*Extension
    systemS Σ1..1uriFixed Value
    versionΣ0..1string
    codeS Σ1..1code
    displayΣ0..1string
    userSelectedΣ0..1boolean
    textΣ0..1string
    subjectS C1..1Reference(LRANotificationPatient)
    aboutS C1..1Reference(LRANotificationDocumentReference)
    encounterΣ C0..1Reference(Encounter)
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    contentAttachmentAttachment
    contentReferenceReference(Resource)
    contentStringstring
    occurrenceDateTimedateTime
    occurrencePeriodPeriod
    authoredOnS Σ1..1dateTime
    requesterΣ C0..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
    recipientS C1..*Reference(LRANotificationPatient)
    id0..1string
    extensionC0..*Extension
    referenceΣ C0..1string
    typeΣ0..1uriBinding
    identifierΣ0..1Identifier
    displayS Σ1..1stringFixed Value
    reasonCodeΣ0..*CodeableConcept
    reasonReferenceΣ C0..*Reference(Condition | DiagnosticReport | DocumentReference | Observation)
    note0..*Annotation
  • DocumentReference

    The DocumentReference resource represents the BC Cancer document or letter that the notification is about. It includes the document identifier, document type, patient subject, author/program display, custodian, and document URL where available. For this use case, the custodian may be represented as BC Cancer.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionC0..*Extension
    modifierExtension?! C0..*Extension
    masterIdentifierΣ0..1Identifier
    id0..1string
    extensionC0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uriFixed Value
    valueS Σ1..1string
    periodΣ C0..1Period
    assignerΣ C0..1Reference(Organization)
    statusS Σ ?!1..1codeBindingFixed Value
    docStatusΣ0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    categoryΣ0..*CodeableConcept
    subjectS Σ C1..1Reference(LRANotificationPatient)
    dateΣ0..1instant
    id0..1string
    extensionC0..*Extension
    referenceΣ C0..1string
    typeΣ0..1uriBinding
    identifierΣ0..1Identifier
    displayS Σ1..1string
    authenticatorC0..1Reference(Organization | Practitioner | PractitionerRole)
    id0..1string
    extensionC0..*Extension
    referenceΣ C0..1string
    typeΣ0..1uriBinding
    identifierΣ0..1Identifier
    displayS Σ1..1stringFixed Value
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    codeΣ1..1codeBinding
    targetΣ C1..1Reference(DocumentReference)
    descriptionΣ0..1string
    securityLabelΣ0..*CodeableConceptBinding
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    id0..1string
    extensionC0..*Extension
    contentTypeΣ0..1codeBinding
    languageΣ0..1codeBinding
    data0..1base64Binary
    urlS Σ1..1url
    sizeΣ0..1unsignedInt
    hashΣ0..1base64Binary
    titleΣ0..1string
    creationΣ0..1dateTime
    formatΣ0..1CodingBinding
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    encounterC0..*Reference(Encounter | EpisodeOfCare)
    event0..*CodeableConcept
    periodΣ C0..1Period
    facilityType0..1CodeableConcept
    practiceSetting0..1CodeableConcept
    sourcePatientInfoC0..1Reference(Patient)
    relatedC0..*Reference(Resource)
  • Patient

    The Patient resource represents the recipient of the notification for the BC Cancer notification use case. It includes the patient identifier, including BC PHN where applicable, patient name, and contact details needed to support notification delivery by SMS and/or email.

    idS Σ1..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionC0..*Extension
    modifierExtension?! C0..*Extension
    id0..1string
    extensionC0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uriFixed Value
    valueS Σ1..1string
    periodΣ C0..1Period
    assignerΣ C0..1Reference(Organization)
    activeΣ ?!0..1boolean
    id0..1string
    extensionC0..*Extension
    useΣ ?!0..1codeBinding
    textΣ0..1string
    familyS Σ1..1string
    givenS Σ1..*string
    prefixΣ0..*string
    suffixΣ0..*string
    periodΣ C0..1Period
    id0..1string
    extensionC0..*Extension
    systemS Σ C1..1codeBinding
    valueS Σ1..1string
    useΣ ?!0..1codeBinding
    rankΣ0..1positiveInt
    periodΣ C0..1Period
    genderΣ0..1codeBinding
    birthDateΣ0..1date
    deceasedBooleanboolean
    deceasedDateTimedateTime
    addressΣ0..*Address
    maritalStatus0..1CodeableConceptBinding
    multipleBirthBooleanboolean
    multipleBirthIntegerinteger
    photoC0..*Attachment
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    relationship0..*CodeableConceptBinding
    name0..1HumanName
    telecomC0..*ContactPoint
    address0..1Address
    gender0..1codeBinding
    organizationC0..1Reference(Organization)
    periodC0..1Period
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    language1..1CodeableConceptBinding
    preferred0..1boolean
    generalPractitionerC0..*Reference(Organization | Practitioner | PractitionerRole)
    managingOrganizationΣ C0..1Reference(Organization)
    id0..1string
    extensionC0..*Extension
    modifierExtensionΣ ?! C0..*Extension
    otherΣ C1..1Reference(Patient | RelatedPerson)
    typeΣ1..1codeBinding