Carequality Subscription Implementation Guide for Push Notifications
0.1.1 - CI Build

Carequality Subscription Implementation Guide for Push Notifications, published by Carequality. This guide is not an authorized publication; it is the continuous build for version 0.1.1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/Carequality/CEQSubscription/ and changes regularly. See the Directory of published versions

Resource Profile: Carequality Subscription Profile ( Experimental )

Official URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQsubscription Version: 0.1.1
Draft as of 2024-03-07 Realm: United States of America flag Computable Name: CEQsubscription

Extended Elements and Constraints Specific to the Carequality Use Case Carequality has defined a custom flow for a Subscription that removes the criteria use in favor of specific events defined as URIs. This adds requirements that the PatientID and an identifier be added to the resource. The identifier element is the endpoint id [Base]/fhir/Subscription/[identifier] A termination (Subscription.end) date is required and may not be more than 2 years from original date of subscription. A renewal may be submitted prior to expiry for a period of up to two additional years.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Subscription

NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... extension:searchParamName 1..1ExtensionExtension
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... value[x] 0..1codeValue of extension
Required Pattern: eq
... subscriptionTopic 1..*canonical()Backport R5 Subscription Topic Canonical
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/backport-topic-canonical
... criteria 1..1stringSimplified query string for Patient using ?id= or ?identifier=
... channel
.... type 1..1coderest-hook | websocket | email | sms | message
Fixed Value: rest-hook

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )
NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... Slices for extension 5..*ExtensionExtension
Slice: Unordered, Open by value:url
.... extension:subIdentifier S1..1ExtensionA Business Identifier
..... extension 0..0
..... url 1..1uri"subIdentifier"
.... extension:searchParamName 1..1ExtensionExtension
..... extension 0..0
..... url 1..1uri"searchParamName"
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... extension 0..0
..... url 1..1uri"searchModifier"
..... value[x] 0..1codeValue of extension
Required Pattern: eq
.... extension:endUser 1..1ExtensionEnd recipient of the notification
..... extension 0..0
..... url 1..1uri"endUser"
.... extension:CQOrganization 1..1ExtensionRecipient CQ Directory Reference
..... extension 0..0
..... url 1..1uri"CQOrganization"
.... url 1..1uri"https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension"
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1coderequested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.

... end Σ1..1instantWhen to automatically delete the subscription
... reason Σ1..1stringDescription of why this subscription was created
... criteria Σ1..1stringSimplified query string for Patient using ?id= or ?identifier=
... channel Σ1..1BackboneElementThe channel on which to report matches to the criteria
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type Σ1..1coderest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.


Fixed Value: rest-hook

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.statusrequiredSubscriptionStatus
http://hl7.org/fhir/ValueSet/subscription-status|4.0.1
from the FHIR Standard
Subscription.channel.typerequiredFixed Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 5..*ExtensionExtension
Slice: Unordered, Open by value:url
.... extension:subIdentifier S1..1ExtensionA Business Identifier
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"subIdentifier"
..... value[x] 0..1stringValue of extension
.... extension:searchParamName 1..1ExtensionExtension
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"searchParamName"
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"searchModifier"
..... value[x] 0..1codeValue of extension
Required Pattern: eq
.... extension:endUser 1..1ExtensionEnd recipient of the notification
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"endUser"
..... value[x] 0..1stringValue of extension
.... extension:CQOrganization 1..1ExtensionRecipient CQ Directory Reference
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"CQOrganization"
..... value[x] 0..1stringValue of extension
.... url 1..1uri"https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension"
... subscriptionTopic 1..*canonical()Backport R5 Subscription Topic Canonical
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/backport-topic-canonical
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1coderequested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.

... contact Σ0..*ContactPointContact details for source (e.g. troubleshooting)
... end Σ1..1instantWhen to automatically delete the subscription
... reason Σ1..1stringDescription of why this subscription was created
... criteria Σ1..1stringSimplified query string for Patient using ?id= or ?identifier=
... error Σ0..1stringLatest error note
... channel Σ1..1BackboneElementThe channel on which to report matches to the criteria
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type Σ1..1coderest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.


Fixed Value: rest-hook
.... endpoint Σ0..1urlWhere the channel points to
.... payload Σ0..1codeMIME type to send, or omit for no payload
Binding: Mime Types (required): The mime type of an attachment. Any valid mime type is allowed.

.... header Σ0..*stringUsage depends on the channel type

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Subscription.statusrequiredSubscriptionStatus
http://hl7.org/fhir/ValueSet/subscription-status|4.0.1
from the FHIR Standard
Subscription.channel.typerequiredFixed Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.1
from the FHIR Standard
Subscription.channel.payloadrequiredMime Types (a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from Subscription

Summary

Mandatory: 4 elements
Fixed Value: 1 element

Extensions

This structure refers to these extensions:

Differential View

This structure is derived from Subscription

NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... extension:searchParamName 1..1ExtensionExtension
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... value[x] 0..1codeValue of extension
Required Pattern: eq
... subscriptionTopic 1..*canonical()Backport R5 Subscription Topic Canonical
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/backport-topic-canonical
... criteria 1..1stringSimplified query string for Patient using ?id= or ?identifier=
... channel
.... type 1..1coderest-hook | websocket | email | sms | message
Fixed Value: rest-hook

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... Slices for extension 5..*ExtensionExtension
Slice: Unordered, Open by value:url
.... extension:subIdentifier S1..1ExtensionA Business Identifier
..... extension 0..0
..... url 1..1uri"subIdentifier"
.... extension:searchParamName 1..1ExtensionExtension
..... extension 0..0
..... url 1..1uri"searchParamName"
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... extension 0..0
..... url 1..1uri"searchModifier"
..... value[x] 0..1codeValue of extension
Required Pattern: eq
.... extension:endUser 1..1ExtensionEnd recipient of the notification
..... extension 0..0
..... url 1..1uri"endUser"
.... extension:CQOrganization 1..1ExtensionRecipient CQ Directory Reference
..... extension 0..0
..... url 1..1uri"CQOrganization"
.... url 1..1uri"https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension"
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1coderequested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.

... end Σ1..1instantWhen to automatically delete the subscription
... reason Σ1..1stringDescription of why this subscription was created
... criteria Σ1..1stringSimplified query string for Patient using ?id= or ?identifier=
... channel Σ1..1BackboneElementThe channel on which to report matches to the criteria
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type Σ1..1coderest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.


Fixed Value: rest-hook

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.statusrequiredSubscriptionStatus
http://hl7.org/fhir/ValueSet/subscription-status|4.0.1
from the FHIR Standard
Subscription.channel.typerequiredFixed Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Subscription C0..*SubscriptionServer push subscription criteria
CEQ-Param-Name: searchParamName shall be Patient or PatientID
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 2..*ExtensionExtension
Slice: Unordered, Open by value:url
... ceqPushExtension 1..1(Complex)Carequality Subscription Required Elements
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 5..*ExtensionExtension
Slice: Unordered, Open by value:url
.... extension:subIdentifier S1..1ExtensionA Business Identifier
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"subIdentifier"
..... value[x] 0..1stringValue of extension
.... extension:searchParamName 1..1ExtensionExtension
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"searchParamName"
..... value[x] 1..1stringValue of extension
.... extension:searchModifier 1..1ExtensionExtension
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"searchModifier"
..... value[x] 0..1codeValue of extension
Required Pattern: eq
.... extension:endUser 1..1ExtensionEnd recipient of the notification
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"endUser"
..... value[x] 0..1stringValue of extension
.... extension:CQOrganization 1..1ExtensionRecipient CQ Directory Reference
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..0
..... url 1..1uri"CQOrganization"
..... value[x] 0..1stringValue of extension
.... url 1..1uri"https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension"
... subscriptionTopic 1..*canonical()Backport R5 Subscription Topic Canonical
URL: https://sequoiaproject.org/fhir/push-r4/StructureDefinition/backport-topic-canonical
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1coderequested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.

... contact Σ0..*ContactPointContact details for source (e.g. troubleshooting)
... end Σ1..1instantWhen to automatically delete the subscription
... reason Σ1..1stringDescription of why this subscription was created
... criteria Σ1..1stringSimplified query string for Patient using ?id= or ?identifier=
... error Σ0..1stringLatest error note
... channel Σ1..1BackboneElementThe channel on which to report matches to the criteria
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type Σ1..1coderest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.


Fixed Value: rest-hook
.... endpoint Σ0..1urlWhere the channel points to
.... payload Σ0..1codeMIME type to send, or omit for no payload
Binding: Mime Types (required): The mime type of an attachment. Any valid mime type is allowed.

.... header Σ0..*stringUsage depends on the channel type

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Subscription.statusrequiredSubscriptionStatus
http://hl7.org/fhir/ValueSet/subscription-status|4.0.1
from the FHIR Standard
Subscription.channel.typerequiredFixed Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.1
from the FHIR Standard
Subscription.channel.payloadrequiredMime Types (a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
CEQ-Param-NameerrorSubscriptionsearchParamName shall be Patient or PatientID
: extension('https://sequoiaproject.org/fhir/push-r4/StructureDefinition/CEQextension').extension('searchParamName').value in ( 'Patient' | 'PatientID' )
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from Subscription

Summary

Mandatory: 4 elements
Fixed Value: 1 element

Extensions

This structure refers to these extensions:

 

Other representations of profile: CSV, Excel, Schematron