This
page
is
part
of
the
Continuous
Integration
Build
of
FHIR
Specification
(v5.0.0:
R5
-
STU
).
This
is
the
current
published
version
in
it's
permanent
home
(it
will
always
(will
be
available
incorrect/inconsistent
at
this
URL).
For
a
full
list
of
available
versions,
see
times).
See
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
Responsible
Owner:
FHIR
Infrastructure
Work
Group
|
|
Security Category : Business | Compartments : No defined compartments |
The SubscriptionStatus resource describes the state of a Subscription during notifications.
This
document
contains
information
about
the
SubscriptionStatus
resource
and
details
specific
to
options
in
it.
See
Subscriptions
for
general
information
about
using
Subscriptions
in
FHIR.
The
SubscriptionStatus
resource
is
used
to
convey
information
about
the
current
state
of
a
Subscription
during
client
notifications.
It
is
not
persisted
or
allowed
to
be
referenced
by
other
resources
except
as
described
below.
The
SubscriptionStatus
resource
is
used
in
the
Subscriptions
Framework
.
Information
about
the
Boundaries
and
Relationships
both
within
the
Subscriptions
Framework
and
to
other
areas
of
the
FHIR
specification
can
be
found
here
.
No references for this Resource.
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
|---|---|---|---|---|
|
|
DomainResource |
Status
information
about
a
Subscription
provided
during
event
notification
+ Rule: Event notifications must contain events + Rule: Status messages must contain status Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ C | 0..1 | code |
requested
|
active
|
error
|
off
|
entered-in-error
Binding: Subscription Status ( Required ) |
|
?! Σ C | 1..1 | code |
handshake
|
heartbeat
|
event-notification
|
query-status
|
query-event
Binding: Subscription Notification Type ( Required ) |
|
Σ | 0..1 | integer64 |
Events
since
the
Subscription
was
created
|
|
C | 0..* | BackboneElement |
Detailed
information
about
any
events
relevant
to
this
notification
|
|
Σ | 1..1 | integer64 |
Sequencing
index
of
this
event
|
| 0..* | CodeableConcept |
Event
that
triggered
this
notification
| |
![]() ![]() ![]() |
0..1 | instant |
The
instant
this
event
occurred
|
|
|
0..1 | Reference ( Any ) |
Reference
to
the
primary
resource
or
information
of
this
event
|
|
|
0..* | Reference ( Any ) |
References
related
to
the
focus
resource
and/or
context
of
this
event
|
|
| Σ | 0..* | BackboneElement |
Query
describing
data
relevant
to
this
notification
|
![]() ![]()
|
Σ | 0..1 | Coding |
Coded
information
describing
the
type
of
data
this
query
provides
|
![]() ![]() ![]() ![]() | Σ | 1..1 | string |
Query
to
perform
|
![]() ![]() ![]() | 0..* | BackboneElement |
Authorization
information
relevant
to
a
notification
| |
![]() ![]() ![]() ![]() | 1..1 | Coding |
Classification
of
the
authorization
hint,
e.g.,
'oAuthChallengeToken'
| |
![]() ![]() ![]() ![]() | 0..1 | string |
Authorization
value,
as
defined
by
the
'authorizationType'
| |
![]() ![]() | Σ | 1..1 | Reference ( Subscription ) |
Reference
to
the
Subscription
responsible
for
this
notification
|
|
Σ | 0..1 | canonical ( SubscriptionTopic ) |
Reference
to
the
SubscriptionTopic
this
notification
relates
to
|
|
Σ | 0..* | CodeableConcept |
List
of
errors
on
the
subscription
Binding: Subscription Error Codes ( Example ) |
Documentation
for
this
format
|
||||
See the Extensions for this resource
UML Diagram ( Legend )
XML Template
<SubscriptionStatus xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <status value="[code]"/><!-- I 0..1 requested | active | error | off | entered-in-error --> <type value="[code]"/><!-- I 1..1 handshake | heartbeat | event-notification | query-status | query-event --> <eventsSinceSubscriptionStart value="[integer64]"/><!-- 0..1 Events since the Subscription was created --> <notificationEvent> <!-- I 0..* Detailed information about any events relevant to this notification --> <eventNumber value="[integer64]"/><!-- 1..1 Sequencing index of this event --> <triggerEvent><!-- 0..* CodeableConcept Event that triggered this notification --></triggerEvent> <timestamp value="[instant]"/><!-- 0..1 The instant this event occurred --> <focus><!-- 0..1 Reference(Any) Reference to the primary resource or information of this event --></focus>
<</additionalContext><additionalContext><!-- 0..* Reference(Any) References related to the focus resource and/or context of this event --></additionalContext> <relatedQuery> <!-- 0..* Query describing data relevant to this notification --> <queryType><!-- 0..1 Coding Coded information describing the type of data this query provides --></queryType> <query value="[string]"/><!-- 1..1 Query to perform --> </relatedQuery> <authorizationHint> <!-- 0..* Authorization information relevant to a notification --> <authorizationType><!-- 1..1 Coding Classification of the authorization hint, e.g., 'oAuthChallengeToken' --></authorizationType> <value value="[string]"/><!-- 0..1 Authorization value, as defined by the 'authorizationType' --> </authorizationHint> </notificationEvent> <subscription><!-- 1..1 Reference(Subscription) Reference to the Subscription responsible for this notification --></subscription> <topic><!-- 0..1 canonical(SubscriptionTopic) Reference to the SubscriptionTopic this notification relates to --></topic> <error><!-- 0..* CodeableConcept List of errors on the subscription --></error> </SubscriptionStatus>
JSON Template
{
"resourceType" : "SubscriptionStatus",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"status" : "<code>", // I requested | active | error | off | entered-in-error
"type" : "<code>", // I R! handshake | heartbeat | event-notification | query-status | query-event
"eventsSinceSubscriptionStart" : "<integer64>", // Events since the Subscription was created
"notificationEvent" : [{ // I Detailed information about any events relevant to this notification
"eventNumber" : "<integer64>", // R! Sequencing index of this event
"triggerEvent" : [{ CodeableConcept }], // Event that triggered this notification
"timestamp" : "<instant>", // The instant this event occurred
"focus" : { Reference(Any) }, // Reference to the primary resource or information of this event
"
"additionalContext" : [{ Reference(Any) }], // References related to the focus resource and/or context of this event
"relatedQuery" : [{ // Query describing data relevant to this notification
"queryType" : { Coding }, // Coded information describing the type of data this query provides
"query" : "<string>" // R! Query to perform
}],
"authorizationHint" : [{ // Authorization information relevant to a notification
"authorizationType" : { Coding }, // R! Classification of the authorization hint, e.g., 'oAuthChallengeToken'
"value" : "<string>" // Authorization value, as defined by the 'authorizationType'
}]
}],
"subscription" : { Reference(Subscription) }, // R! Reference to the Subscription responsible for this notification
"topic" : "<canonical(SubscriptionTopic)>", // Reference to the SubscriptionTopic this notification relates to
"error" : [{ CodeableConcept }] // List of errors on the subscription
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:SubscriptionStatus; fhir:nodeRole fhir:treeRoot; # if this is the parser root
# from # from# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:status [ code ] ; # 0..1 I requested | active | error | off | entered-in-error fhir:type [ code ] ; # 1..1 I handshake | heartbeat | event-notification | query-status | query-event fhir:eventsSinceSubscriptionStart [ integer64 ] ; # 0..1 Events since the Subscription was created fhir:notificationEvent ( [ # 0..* I Detailed information about any events relevant to this notification fhir:eventNumber [ integer64 ] ; # 1..1 Sequencing index of this event fhir:triggerEvent ( [ CodeableConcept ] ... ) ; # 0..* Event that triggered this notification fhir:timestamp [ instant ] ; # 0..1 The instant this event occurred fhir:focus [ Reference(Any) ] ; # 0..1 Reference to the primary resource or information of this eventfhir:fhir:additionalContext ( [ Reference(Any) ] ... ) ; # 0..* References related to the focus resource and/or context of this event fhir:relatedQuery ( [ # 0..* Query describing data relevant to this notification fhir:queryType [ Coding ] ; # 0..1 Coded information describing the type of data this query provides fhir:query [ string ] ; # 1..1 Query to perform ] ... ) ; fhir:authorizationHint ( [ # 0..* Authorization information relevant to a notification fhir:authorizationType [ Coding ] ; # 1..1 Classification of the authorization hint, e.g., 'oAuthChallengeToken' fhir:value [ string ] ; # 0..1 Authorization value, as defined by the 'authorizationType' ] ... ) ; ] ... ) ; fhir:subscription [ Reference(Subscription) ] ; # 1..1 Reference to the Subscription responsible for this notification fhir:topic [ canonical(SubscriptionTopic) ] ; # 0..1 Reference to the SubscriptionTopic this notification relates to fhir:error ( [ CodeableConcept ] ... ) ; # 0..* List of errors on the subscription ]
Changes from both R4 and R4B
This resource did not exist in Release R4
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON .
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
|---|---|---|---|---|
|
|
DomainResource |
Status
information
about
a
Subscription
provided
during
event
notification
+ Rule: Event notifications must contain events + Rule: Status messages must contain status Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ C | 0..1 | code |
requested
|
active
|
error
|
off
|
entered-in-error
Binding: Subscription Status ( Required ) |
|
?! Σ C | 1..1 | code |
handshake
|
heartbeat
|
event-notification
|
query-status
|
query-event
Binding: Subscription Notification Type ( Required ) |
|
Σ | 0..1 | integer64 |
Events
since
the
Subscription
was
created
|
|
C | 0..* | BackboneElement |
Detailed
information
about
any
events
relevant
to
this
notification
|
|
Σ | 1..1 | integer64 |
Sequencing
index
of
this
event
|
| 0..* | CodeableConcept |
Event
that
triggered
this
notification
| |
![]() ![]() ![]() |
0..1 | instant |
The
instant
this
event
occurred
|
|
|
0..1 | Reference ( Any ) |
Reference
to
the
primary
resource
or
information
of
this
event
|
|
|
0..* | Reference ( Any ) |
References
related
to
the
focus
resource
and/or
context
of
this
event
|
|
| Σ | 0..* | BackboneElement |
Query
describing
data
relevant
to
this
notification
|
![]() ![]()
|
Σ | 0..1 | Coding |
Coded
information
describing
the
type
of
data
this
query
provides
|
![]() ![]() ![]() ![]() | Σ | 1..1 | string |
Query
to
perform
|
![]() ![]() ![]() | 0..* | BackboneElement |
Authorization
information
relevant
to
a
notification
| |
![]() ![]() ![]() ![]() | 1..1 | Coding |
Classification
of
the
authorization
hint,
e.g.,
'oAuthChallengeToken'
| |
![]() ![]() ![]() ![]() | 0..1 | string |
Authorization
value,
as
defined
by
the
'authorizationType'
| |
![]() ![]() | Σ | 1..1 | Reference ( Subscription ) |
Reference
to
the
Subscription
responsible
for
this
notification
|
|
Σ | 0..1 | canonical ( SubscriptionTopic ) |
Reference
to
the
SubscriptionTopic
this
notification
relates
to
|
|
Σ | 0..* | CodeableConcept |
List
of
errors
on
the
subscription
Binding: Subscription Error Codes ( Example ) |
Documentation
for
this
format
|
||||
See the Extensions for this resource
XML Template
<SubscriptionStatus xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <status value="[code]"/><!-- I 0..1 requested | active | error | off | entered-in-error --> <type value="[code]"/><!-- I 1..1 handshake | heartbeat | event-notification | query-status | query-event --> <eventsSinceSubscriptionStart value="[integer64]"/><!-- 0..1 Events since the Subscription was created --> <notificationEvent> <!-- I 0..* Detailed information about any events relevant to this notification --> <eventNumber value="[integer64]"/><!-- 1..1 Sequencing index of this event --> <triggerEvent><!-- 0..* CodeableConcept Event that triggered this notification --></triggerEvent> <timestamp value="[instant]"/><!-- 0..1 The instant this event occurred --> <focus><!-- 0..1 Reference(Any) Reference to the primary resource or information of this event --></focus>
<</additionalContext><additionalContext><!-- 0..* Reference(Any) References related to the focus resource and/or context of this event --></additionalContext> <relatedQuery> <!-- 0..* Query describing data relevant to this notification --> <queryType><!-- 0..1 Coding Coded information describing the type of data this query provides --></queryType> <query value="[string]"/><!-- 1..1 Query to perform --> </relatedQuery> <authorizationHint> <!-- 0..* Authorization information relevant to a notification --> <authorizationType><!-- 1..1 Coding Classification of the authorization hint, e.g., 'oAuthChallengeToken' --></authorizationType> <value value="[string]"/><!-- 0..1 Authorization value, as defined by the 'authorizationType' --> </authorizationHint> </notificationEvent> <subscription><!-- 1..1 Reference(Subscription) Reference to the Subscription responsible for this notification --></subscription> <topic><!-- 0..1 canonical(SubscriptionTopic) Reference to the SubscriptionTopic this notification relates to --></topic> <error><!-- 0..* CodeableConcept List of errors on the subscription --></error> </SubscriptionStatus>
JSON Template
{
"resourceType" : "SubscriptionStatus",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"status" : "<code>", // I requested | active | error | off | entered-in-error
"type" : "<code>", // I R! handshake | heartbeat | event-notification | query-status | query-event
"eventsSinceSubscriptionStart" : "<integer64>", // Events since the Subscription was created
"notificationEvent" : [{ // I Detailed information about any events relevant to this notification
"eventNumber" : "<integer64>", // R! Sequencing index of this event
"triggerEvent" : [{ CodeableConcept }], // Event that triggered this notification
"timestamp" : "<instant>", // The instant this event occurred
"focus" : { Reference(Any) }, // Reference to the primary resource or information of this event
"
"additionalContext" : [{ Reference(Any) }], // References related to the focus resource and/or context of this event
"relatedQuery" : [{ // Query describing data relevant to this notification
"queryType" : { Coding }, // Coded information describing the type of data this query provides
"query" : "<string>" // R! Query to perform
}],
"authorizationHint" : [{ // Authorization information relevant to a notification
"authorizationType" : { Coding }, // R! Classification of the authorization hint, e.g., 'oAuthChallengeToken'
"value" : "<string>" // Authorization value, as defined by the 'authorizationType'
}]
}],
"subscription" : { Reference(Subscription) }, // R! Reference to the Subscription responsible for this notification
"topic" : "<canonical(SubscriptionTopic)>", // Reference to the SubscriptionTopic this notification relates to
"error" : [{ CodeableConcept }] // List of errors on the subscription
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:SubscriptionStatus; fhir:nodeRole fhir:treeRoot; # if this is the parser root
# from # from# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:status [ code ] ; # 0..1 I requested | active | error | off | entered-in-error fhir:type [ code ] ; # 1..1 I handshake | heartbeat | event-notification | query-status | query-event fhir:eventsSinceSubscriptionStart [ integer64 ] ; # 0..1 Events since the Subscription was created fhir:notificationEvent ( [ # 0..* I Detailed information about any events relevant to this notification fhir:eventNumber [ integer64 ] ; # 1..1 Sequencing index of this event fhir:triggerEvent ( [ CodeableConcept ] ... ) ; # 0..* Event that triggered this notification fhir:timestamp [ instant ] ; # 0..1 The instant this event occurred fhir:focus [ Reference(Any) ] ; # 0..1 Reference to the primary resource or information of this eventfhir:fhir:additionalContext ( [ Reference(Any) ] ... ) ; # 0..* References related to the focus resource and/or context of this event fhir:relatedQuery ( [ # 0..* Query describing data relevant to this notification fhir:queryType [ Coding ] ; # 0..1 Coded information describing the type of data this query provides fhir:query [ string ] ; # 1..1 Query to perform ] ... ) ; fhir:authorizationHint ( [ # 0..* Authorization information relevant to a notification fhir:authorizationType [ Coding ] ; # 1..1 Classification of the authorization hint, e.g., 'oAuthChallengeToken' fhir:value [ string ] ; # 0..1 Authorization value, as defined by the 'authorizationType' ] ... ) ; ] ... ) ; fhir:subscription [ Reference(Subscription) ] ; # 1..1 Reference to the Subscription responsible for this notification fhir:topic [ canonical(SubscriptionTopic) ] ; # 0..1 Reference to the SubscriptionTopic this notification relates to fhir:error ( [ CodeableConcept ] ... ) ; # 0..* List of errors on the subscription ]
Changes from both R4 and R4B
This resource did not exist in Release R4
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON .
Additional definitions: Master Definition XML + JSON , XML Schema / Schematron + JSON Schema , ShEx (for Turtle ) + see the extensions , the spreadsheet version & the dependency analysis
| Path | ValueSet | Type | Documentation |
|---|---|---|---|
| SubscriptionStatus.status | SubscriptionStatusCodes (a valid code from Subscription Status ) | Required |
State values for FHIR Subscriptions. |
| SubscriptionStatus.type | SubscriptionNotificationType | Required |
The type of notification represented by the status message. |
| SubscriptionStatus.error | SubscriptionErrorCodes | Example |
Codes to represent subscription error details |
| UniqueKey | Level | Location | Description | Expression |
sst-1
|
Rule | (base) | Event notifications must contain events | (type = 'event-notification' or type = 'query-event') implies notificationEvent.exists() |
sst-2
|
Rule | (base) | Status messages must contain status | type = 'query-status' implies status.exists() |
This
resource
is
used
to
communicate
information
about
a
Subscription
and
the
events
represented
by
a
notification
bundle.
The
process
of
sending
a
notification
(e.g.,
a
notification
this
status
is
included
with)
can
change
the
status
of
that
subscription.
Servers
SHALL
populate
elements
with
the
most
recent
information
at
the
time
of
generation
(e.g.,
when
a
notification
is
created)
and
receivers
SHOULD
be
aware
that
this
information
might
not
be
current
at
the
time
a
notification
is
processed
(e.g.,
a
subscription
was
active
but
has
subsequently
moved
to
an
error
state).
Subscription
notifications
MAY
contain
PHI.
Applications
are
responsible
for
following
FHIR
security
guidance
and
compliance
with
relevant
security
requirements
(e.g.,
corporate
policy,
government
regulation,
etc.).
Hinting
for
the
allowed
amount
of
PHI
is
available
in
the
relevant
Subscription
resource,
via
the
channel
and
payload
information.
Since Subscription Topic definitions contain human-readable descriptions and definitions, the purpose of a topic may be understood by viewing the resource. Given that canonical links to topics are intended to be resolvable and/or searchable (e.g., indexed in a registry), it is assumed that anyone with a link to a topic also knows what that topic is about. Thus, topics MAY be considered PHI and SHOULD be reviewed before inclusion in a notification.
Hinting about when a canonical topic URL may be included with a notification can be derived from a subscription's payload level. E.g.:
empty
:
SHOULD
NOT
be
present
id-only
:
MAY
be
present
full-resource
:
SHOULD
be
present
The
SubscriptionStatus.subscription
element
contains
a
reference
to
the
Subscription
resource
responsible
for
the
notification.
In
most
cases,
this
reference
will
resolve
to
an
accessible
Subscription
resource
on
the
server.
However,
in
some
workflows,
particularly
those
involving
implicit
or
server-controlled
subscriptions,
the
Subscription
resource
might
not
be
externally
accessible
or
shared.
In
such
cases,
the
Reference
may
use
Reference.identifier
to
represent
an
identifier
or
placeholder
known
only
to
the
sender,
or
even
Reference.display
for
a
relevant
literal
(e.g.,
friendly-name
that
can
be
referenced
in
support
requests).
Implementers
SHOULD
be
aware
that
resolution
of
this
reference
might
not
be
possible
on
the
receiving
end.
Since this specification does not currently define any channel types that guarantee client receipt of notifications, a monotonically-increasing event number is critical to detecting several classes of delivery errors (more information is available at Detecting Delivery Errors ). However, with the availability of custom-defined channels , notifications can be sent across channels that provide guaranteed delivery (e.g., a message queue), which removes the need for global tracking of event numbers.
For
channels
that
do
not
need
event
numbers,
it
is
still
desireable
desirable
for
clients
to
have
an
index
for
the
events
present
in
a
notification.
In
all
cases,
a
value
for
SubscriptionStatus.notificationEvent.eventNumber
is
required
-
either
the
number
in-sequence
based
on
the
total
number
of
events
on
a
subscription
or
a
notification-bundle
relative
index
(e.g.,
1,
2,
3,
etc.).
| Element | Delivery Type | Optionality | Notes |
|---|---|---|---|
| SubscriptionStatus.eventsSinceSubscriptionStart | Best Effort | Required |
Servers
SHALL
include
this
value
when
sending
event
notifications
in
order
to
allow
clients
to
detect
missing
events.
This value is inclusive of this notification (e.g., the first event notification sent would include one (1) in this element). |
| SubscriptionStatus.eventsSinceSubscriptionStart | Guaranteed | Optional | Servers MAY include this value when sending event notifications. |
| SubscriptionStatus.notificationEvent.eventNumber | Best Effort | Required |
Event
numbers
SHALL
match
the
index
in
the
subscription
event
sequence.
E.g.,
the
highest-numbered
event
in
the
notification
will
match
the
number
in
eventsSinceSubscriptionStart
.
|
| SubscriptionStatus.notificationEvent.eventNumber | Guaranteed | Required | A relative index of events in a single notification, e.g., 1, 2, 3, etc.. |
This specification describes five distinct outbound notification types: Event , Handshake , Heartbeat , Query Status , and Query Event . For each, the notification body is a subscription-notification Bundle with a SubscriptionStatus resource used to convey Subscription and notification details.
The primary notification bundle type is a notification about an event.
| Element | Optionality | Notes |
|---|---|---|
| SubscriptionStatus.status | Recommended |
Current
status
of
the
relevant
subscription
(e.g.,
active
).
|
| SubscriptionStatus.type | Required |
SHALL
be
event-notification
|
| SubscriptionStatus.eventsSinceSubscriptionStart | Special | Required for subscriptions with best-effort delivery, optional for subscriptions with guaranteed delivery. See Event Numbering for details. |
| SubscriptionStatus.notificationEvent | Required | For notifications that include events, this element SHALL be present. Details about specific elements within this structure are included in this table. |
| SubscriptionStatus.notificationEvent.eventNumber | Special | Required for subscriptions with best-effort delivery, optional for subscriptions with guaranteed delivery. See Event Numbering for details. |
| SubscriptionStatus.notificationEvent.timestamp | Recommended |
So
that
clients
can
discover
when
an
event
actually
occurred,
timestamp
is
recommended.
|
| SubscriptionStatus.notificationEvent.focus | Special |
Links
contained
in
the
focus
element
contain
resource
IDs,
so
will
or
will
not
be
present
based
on
the
payload
level
relevant
to
the
notification:
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.notificationEvent.additionalContext | Special |
Links
contained
in
the
additionalContext
element
contain
resource
IDs
and
MAY
or
MAY
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.topic | Optional | See Content and PHI . |
When a connection to an Endpoint is established or re-established, a server MAY send a Handshake notification to the endpoint.
The
client
expectations
upon
receipt
of
a
Handshake
notification
differ
for
each
channel
type
(e.g.,
for
the
rest-hook
channel
type,
a
client
endpoint
responds
to
event
notifications
with
standard
HTTP
response
codes).
| Element | Optionality | Notes |
|---|---|---|
| SubscriptionStatus.status | Recommended |
Current
status
of
the
relevant
subscription
(e.g.,
active
).
|
| SubscriptionStatus.type | Required |
SHALL
be
handshake
|
| SubscriptionStatus.eventsSinceSubscriptionStart | Optional |
For
a
new
Subscription,
if
this
value
is
present
it
SHALL
be
zero
(0).
A sender MAY send a handshake with a non-zero number of events, for example as process for re-establishing communication after an error state. Note: this value SHALL NOT be incremented by sending a
handshake
notification.
|
| SubscriptionStatus.notificationEvent | Special |
A
server
MAY
include
historical
events
for
a
client
with
a
handshake
,
if
any
exist.
For
example,
during
a
reconnection
process,
a
server
MAY
opt
to
include
all
events
since
the
last
successful
transmission
to
the
client.
Details
about
specific
elements
within
this
structure
are
included
in
this
table.
|
| SubscriptionStatus.notificationEvent.eventNumber | Special | Required for subscriptions with best-effort delivery, optional for subscriptions with guaranteed delivery. See Event Numbering for details. |
| SubscriptionStatus.notificationEvent.timestamp | Special |
If
a
server
is
including
prior
events,
timestamp
is
recommended,
so
that
clients
can
process
historical
events
with
proper
context.
|
| SubscriptionStatus.notificationEvent.focus | Special |
Links
contained
in
the
focus
element
contain
resource
IDs,
so
will
or
will
not
be
present
based
on
the
payload
level
relevant
to
the
notification:
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.notificationEvent.additionalContext | Special |
Links
contained
in
the
additionalContext
element
contain
resource
IDs
and
MAY
or
MAY
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.topic | Optional | See Content and PHI . |
The client is not expected to take any special action in receipt of a Handshake notification beyond the channel-specific requirement for receiving an event notification.
A
heartbeat
notification
is
a
subscription-notification
Bundle
of
type
heartbeat
sent
without
incrementing
the
subscription
event
count,
though
servers
MAY
include
the
most
recent
event
in
the
notification.
For
servers,
heartbeat
notifications
allow
systems
to
ensure
that
the
connection
is
still
alive
and
valid.
For
clients,
heartbeat
notifications
serve
as
a
method
to
detect
errors
in
communication.
Note
that
a
client
is
not
required
to
take
any
action
in
receipt
of
a
heartbeat
beyond
the
channel-specific
requirement
for
receiving
an
event
notification
(e.g.,
accepting
the
notification
bundle
with
an
HTTP
200).
Heartbeat
intervals
are
negotiated
while
creating
a
Subscription.
If
accepted,
servers
SHOULD
send
one
a
heartbeat
notification
whenever
the
channel
has
been
inactive
for
the
specified
amount
of
time.
For
example,
if
the
heartbeat
per
interval
on
is
60
seconds,
the
accepted
subscription.
expectation
is
that
there
is
never
a
period
of
60
seconds
that
passes
without
sending
at
least
one
notification
(either
event-notification
or
heartbeat
).
Note
that
this
is
a
minimum
requirement
-
servers
have
discretion
on
how
to
implement
testing:
for
example
by
resetting
a
timer
when
sending
any
notification,
always
sending
a
heartbeat
on
a
fixed
timer,
etc..
Clients
SHALL
be
able
to
handle
receiving
heartbeat
notifications
more
often
than
required,
and
SHOULD
account
for
miniscule
differences
timing
(e.g.,
clock
drift).
| Element | Optionality | Notes |
|---|---|---|
| SubscriptionStatus.status | Recommended |
Current
status
of
the
relevant
subscription
(e.g.,
active
).
|
| SubscriptionStatus.type | Required |
SHALL
be
heartbeat
|
| SubscriptionStatus.eventsSinceSubscriptionStart | Recommended |
The
presence
of
this
value
allows
clients
to
detect
missing
notifications.
Recommended
for
subscriptions
with
best-effort
delivery,
optional
for
subscriptions
with
guaranteed
delivery.
Note: this value SHALL NOT be incremented by sending a
heartbeat
notification.
|
| SubscriptionStatus.notificationEvent | Special |
A
server
MAY
include
historical
events
for
a
client
with
a
heartbeat
,
if
any
exist.
For
example,
a
server
MAY
opt
to
include
the
most
recent
event
since
the
last
successful
transmission
to
the
client.
Details
about
specific
elements
within
this
structure
are
included
in
this
table.
|
| SubscriptionStatus.notificationEvent.eventNumber | Special | If a server is including any prior events, this element is required for subscriptions with best-effort delivery and optional for subscriptions with guaranteed delivery. See Event Numbering for details. |
| SubscriptionStatus.notificationEvent.timestamp | Special |
If
a
server
is
including
any
prior
events,
timestamp
is
recommended,
so
that
clients
can
process
historical
events
with
proper
context.
|
| SubscriptionStatus.notificationEvent.focus | Special |
Links
contained
in
the
focus
element
contain
resource
IDs,
so
will
or
will
not
be
present
based
on
the
payload
level
relevant
to
the
notification:
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.notificationEvent.additionalContext | Special |
Links
contained
in
the
additionalContext
element
contain
resource
IDs
and
MAY
or
MAY
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.topic | Optional | See Content and PHI . |
Clients can ask a server at any time for the current status of a Subscription, for example via the $status operation .
Since
the
$status
operation
is
part
of
the
FHIR
REST
API,
the
guidance
below
assumes
that
a
user
has
been
authenticated
and
is
allowed
access
to
all
relevant
resources.
| Element | Optionality | Notes |
|---|---|---|
| SubscriptionStatus.status | Required |
Current
status
of
the
relevant
subscription
(e.g.,
active
).
|
| SubscriptionStatus.type | Required |
SHALL
be
query-status
|
| SubscriptionStatus.eventsSinceSubscriptionStart | Special |
Required
for
subscriptions
with
best-effort
delivery,
optional
for
subscriptions
with
guaranteed
delivery.
See
Event
Numbering
for
details.
Note: this value SHALL NOT be incremented by sending a
query-status
notification.
|
| SubscriptionStatus.notificationEvent | Special |
A
query-status
notification
MAY
contain
recent
notifications.
|
| SubscriptionStatus.topic | Recommended | See Content and PHI , but note that guidance will vary since there is an active user session. |
Some servers may allow clients to ask for events which have already occurred, for example via the $events operation .
Since
the
$events
operation
is
part
of
the
FHIR
REST
API,
the
guidance
below
assumes
that
a
user
has
been
authenticated
and
the
server
has
filtered
any
results
according
to
what
the
user
is
allowed
access.
| Element | Optionality | Notes |
|---|---|---|
| SubscriptionStatus.status | Recommended |
Current
status
of
the
relevant
subscription
(e.g.,
active
).
|
| SubscriptionStatus.type | Required |
SHALL
be
query-event
.
|
| SubscriptionStatus.eventsSinceSubscriptionStart | Recommended |
This
value
is
allows
clients
to
know
if
they
are
missing
notifications.
Recommended
for
subscriptions
with
best-effort
delivery
and
optional
for
subscriptions
with
guaranteed
delivery.
Note: this value SHALL NOT be incremented by sending a
query-event
bundle.
See Event Numbering for more information. |
| SubscriptionStatus.notificationEvent | Required | For notifications that include events, this element SHALL be present. Details about specific elements within this structure are included in this table. |
| SubscriptionStatus.notificationEvent.eventNumber | Special | Required for subscriptions with best-effort delivery, optional for subscriptions with guaranteed delivery. See Event Numbering for details. |
| SubscriptionStatus.notificationEvent.timestamp | Recommended |
So
that
clients
can
discover
when
an
event
actually
occurred,
timestamp
is
recommended.
|
| SubscriptionStatus.notificationEvent.focus | Special |
Links
contained
in
the
focus
element
contain
resource
IDs,
so
will
or
will
not
be
present
based
on
the
payload
level
relevant
to
the
notification:
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.notificationEvent.additionalContext | Special |
Links
contained
in
the
additionalContext
element
contain
resource
IDs
and
MAY
or
MAY
Reference.type
element
if
if
the
type
is
not
specified
in
Reference.reference
|
| SubscriptionStatus.topic | Recommended | See Content and PHI , but note that guidance will vary since there is an active user session. |
The
SubscriptionStatus
resource
is
key
in
detecting
various
errors
in
communication
and
processing.
For
more
information,
see
Managing
Subscriptions
and
Errors
in
the
Subscriptions
Framework
page.
Search parameters for this resource. See also the full list of search parameters for this resource , and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
(No search parameters for this resource)