diff --git a/ebnf/diagram/ContentSharingEventName.png b/ebnf/diagram/ContentSharingEventName.png index 9abc69ad..758d7fcb 100644 Binary files a/ebnf/diagram/ContentSharingEventName.png and b/ebnf/diagram/ContentSharingEventName.png differ diff --git a/ebnf/diagram/ContextEventName.png b/ebnf/diagram/ContextEventName.png index 0fe5de50..f826a4aa 100644 Binary files a/ebnf/diagram/ContextEventName.png and b/ebnf/diagram/ContextEventName.png differ diff --git a/ebnf/diagram/EventName.png b/ebnf/diagram/EventName.png index d496b2f8..d0af5bcb 100644 Binary files a/ebnf/diagram/EventName.png and b/ebnf/diagram/EventName.png differ diff --git a/ebnf/diagram/SelectionEventName.png b/ebnf/diagram/SelectionEventName.png index 529c1bff..2864aece 100644 Binary files a/ebnf/diagram/SelectionEventName.png and b/ebnf/diagram/SelectionEventName.png differ diff --git a/ebnf/input/contextchange.ebnf b/ebnf/input/contextchange.ebnf index 4446ab0b..0a626e74 100644 --- a/ebnf/input/contextchange.ebnf +++ b/ebnf/input/contextchange.ebnf @@ -1 +1 @@ -ContextEventName ::= ( FHIRresource ) '-' ( 'open' | 'close' ) \ No newline at end of file +ContextEventName ::= ( FHIRresource ) '-' ( 'open' | 'close' ) ( '.v' Version | '*')? \ No newline at end of file diff --git a/ebnf/input/events.ebnf b/ebnf/input/events.ebnf index 79378acc..4965d2b4 100644 --- a/ebnf/input/events.ebnf +++ b/ebnf/input/events.ebnf @@ -1 +1 @@ -EventName ::= (FHIRresource ) ('-') ( 'open' | 'close' | 'update' | 'select' ) +EventName ::= (FHIRresource | '*') ('-') ( 'open' | 'close' | 'update' | 'select' | '*' ) ( '.v' Version | '*')? diff --git a/ebnf/input/selection.ebnf b/ebnf/input/selection.ebnf index f494caf1..6251bbb3 100644 --- a/ebnf/input/selection.ebnf +++ b/ebnf/input/selection.ebnf @@ -1 +1 @@ -SelectionEventName ::= ( FHIRresource ) '-' ( select ) \ No newline at end of file +SelectionEventName ::= ( FHIRresource ) '-' ( select ) ( '.v' Version | '*')? \ No newline at end of file diff --git a/ebnf/input/update.ebnf b/ebnf/input/update.ebnf index 8dbe5570..148cbf92 100644 --- a/ebnf/input/update.ebnf +++ b/ebnf/input/update.ebnf @@ -1 +1 @@ -ContentSharingEventName ::= ( FHIRresource ) '-' ( update ) \ No newline at end of file +ContentSharingEventName ::= ( FHIRresource ) '-' ( update ) ( '.v' Version | '*')? \ No newline at end of file diff --git a/input/images/ContentSharingEventName.png b/input/images/ContentSharingEventName.png index 9abc69ad..758d7fcb 100644 Binary files a/input/images/ContentSharingEventName.png and b/input/images/ContentSharingEventName.png differ diff --git a/input/images/ContextEventName.png b/input/images/ContextEventName.png index 0fe5de50..f826a4aa 100644 Binary files a/input/images/ContextEventName.png and b/input/images/ContextEventName.png differ diff --git a/input/images/EventName.png b/input/images/EventName.png index d496b2f8..d0af5bcb 100644 Binary files a/input/images/EventName.png and b/input/images/EventName.png differ diff --git a/input/images/SelectionEventName.png b/input/images/SelectionEventName.png index 529c1bff..2864aece 100644 Binary files a/input/images/SelectionEventName.png and b/input/images/SelectionEventName.png differ diff --git a/input/pagecontent/2-3-Events.md b/input/pagecontent/2-3-Events.md index d78066f1..3bfa909f 100644 --- a/input/pagecontent/2-3-Events.md +++ b/input/pagecontent/2-3-Events.md @@ -30,12 +30,12 @@ The event name defines the event. Most FHIRcast events conform to an extensible Patterned after the SMART on FHIR scope syntax and expressed in EBNF notation, the FHIRcast syntax for context change related events is: ```ebnf -EventName ::= (FHIRresource) ('-') ( 'open' | 'close' | 'update' | 'select' ) +EventName ::= (FHIRresource | '*') ('-') ( 'open' | 'close' | 'update' | 'select' | '*' ) (('.v') Version)? ``` {% include img.html img="EventName.png" caption="Figure: Event-name specification" %} -The `FHIRresource` indicates the focus of the event; the `suffix` defines the type of event. +The `FHIRresource` indicates the focus of the event. The next part defines the type of event. The optional `Version` field allows specifying the version of the event. When this field is omitted, it refers to the most recent version of the event supported by the Hub. Hubs are RECOMMENDED to at least support the most recent version of the events defined in the [standard event catalog](3_Events.html). Event names are unique and case-insensitive. It is RECOMMENDED to use [Upper-Camel](https://en.wikipedia.org/wiki/Camel_case) case. @@ -71,7 +71,7 @@ The FHIRcast specification supports many different events. These events are defi FHIRcast context-change events that describe context changes SHALL conform to the following extensible syntax. Patterned after the SMART on FHIR scope syntax and expressed in EBNF notation, the FHIRcast syntax for context-change related event names is: ```ebnf -ContextChangeEventName ::= ( FHIRresource ) '-' ( 'open' | 'close' ) +ContextChangeEventName ::= ( FHIRresource ) '-' ( 'open' | 'close' ) (('.v') Version)? ``` {% include img.html img="ContextEventName.png" caption="Figure: Context Event-name specification" %} @@ -111,8 +111,7 @@ This event category contains events required to maintain a FHIRcast session. The Content sharing events use the suffix `update`. The format of content sharing event names is: ```ebnf -ContentSharingEventName ::= ( FHIRresource ) '-' ( 'update' ) -``` +ContentSharingEventName ::= ( FHIRresource ) '-' ( 'update' ) (('.v') Version)? {% include img.html img="ContentSharingEventName.png" caption="Figure: Content sharing event-name specification" %} @@ -128,7 +127,7 @@ FHIRcast supports all events that follow this format. The most common events def Selection events use the suffix `select`. The format of selection event names is: ```ebnf -SelectionEventName ::= ( FHIRresource ) '-' ( 'select' ) +SelectionEventName ::= ( FHIRresource ) '-' ( 'select' ) (('.v') Version)? ``` {% include img.html img="SelectionEventName.png" caption="Figure: Selection Event-name specification" %} diff --git a/input/pagecontent/2-7-Conformance.md b/input/pagecontent/2-7-Conformance.md index 0ae835bf..16c3ac6a 100644 --- a/input/pagecontent/2-7-Conformance.md +++ b/input/pagecontent/2-7-Conformance.md @@ -12,7 +12,7 @@ A simple JSON document is returned using the `application/json` mime type, with {:.grid} Field | Optionality | Type | Description ------------------ | ----------- | ----- | --- -`eventsSupported` | Required | array | Array of FHIRcast events supported by the Hub. +`eventsSupported` | Required | array | Array of FHIRcast events supported by the Hub. This array SHALL include both the versioned as well as the unversioned version of the events. `websocketSupport` | Required | boolean | SHALL have the static value: `true` - indicating support for websockets. `fhircastVersion` | Optional | string | `STU1`, `STU2`, or `STU3` - indicating support for a specific version of FHIRcast. Hubs SHOULD indicate the version of FHIRcast supported. `getCurrentSupport` | Optional | boolean | `true` or `false` - indicating support for the "[Get Current Context](2-9-GetCurrentContext.html)" API. diff --git a/input/pagecontent/3-1-1-template.md b/input/pagecontent/3-1-1-template.md index 66fe61d1..2698e59b 100644 --- a/input/pagecontent/3-1-1-template.md +++ b/input/pagecontent/3-1-1-template.md @@ -1,8 +1,10 @@ This section presents the template to use for defining new events. -### Event-name: [FHIR resource]-[suffix] +### Event-name: [FHIR resource]-[suffix]-[version] -eventMaturity | [0 - Draft](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [0 - Draft](3-1-2-eventmaturitymodel.html) | +| Version | | ### Workflow diff --git a/input/pagecontent/3-2-1-SyncError.md b/input/pagecontent/3-2-1-SyncError.md index 880dba18..638a19a4 100644 --- a/input/pagecontent/3-2-1-SyncError.md +++ b/input/pagecontent/3-2-1-SyncError.md @@ -1,6 +1,8 @@ ### Event-name: SyncError -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 2.1 ### Workflow @@ -80,6 +82,6 @@ The `context` array SHALL contain a single FHIR OperationOutcome based on the pr {:.grid} | Version | Description | | ------- | ------------- | -| 1.0 | Initial Release | -| 2.0 | Require id of event syncerror is about, in `OperationOutcome.details.coding.code` | +| [1.0](https://fhircast.hl7.org/events/syncerror/) | Initial Release | +| [2.0](https://hl7.org/fhir/uv/fhircast/2022May/3-2-1-syncerror.html) | Require id of event syncerror is about, in `OperationOutcome.details.coding.code` | | 2.1 | Clarify scenarios, make the OperationOutcome resource required, and specify explicit `severity` codes | diff --git a/input/pagecontent/3-2-2-UserLogout.md b/input/pagecontent/3-2-2-UserLogout.md index c4455624..cf23fa74 100644 --- a/input/pagecontent/3-2-2-UserLogout.md +++ b/input/pagecontent/3-2-2-UserLogout.md @@ -1,6 +1,8 @@ ### Event-name: UserLogout -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow diff --git a/input/pagecontent/3-2-3-UserHibernate.md b/input/pagecontent/3-2-3-UserHibernate.md index dfa25457..1ffee256 100644 --- a/input/pagecontent/3-2-3-UserHibernate.md +++ b/input/pagecontent/3-2-3-UserHibernate.md @@ -1,6 +1,8 @@ ### Event-name: UserHibernate -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow diff --git a/input/pagecontent/3-2-5-Home-open.md b/input/pagecontent/3-2-5-Home-open.md index c8b2bb70..2d357bf7 100644 --- a/input/pagecontent/3-2-5-Home-open.md +++ b/input/pagecontent/3-2-5-Home-open.md @@ -1,6 +1,8 @@ ### Home-open -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow diff --git a/input/pagecontent/3-3-1-Patient-open.md b/input/pagecontent/3-3-1-Patient-open.md index 77ac812f..8c454a88 100644 --- a/input/pagecontent/3-3-1-Patient-open.md +++ b/input/pagecontent/3-3-1-Patient-open.md @@ -1,6 +1,8 @@ ### Event name: Patient-open -eventMaturity | [3 - Considered](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [3 - Considered](3-1-2-eventmaturitymodel.html) | +| Version | 1.2 ### Workflow @@ -83,6 +85,6 @@ Other attributes of the Patient resource (or resource extensions) may be present {:.grid} | Version | Description | ---- | ---- -| 1.0 | Initial Release -| 1.1 | Deprecate encounter element in favor of dedicated `encounter-open` event -| 1.2 | Reference context resource profiles and update example to be compliant with the profiles +| [1.0](https://fhircast.hl7.org/events/patient-open/) | Initial Release +| [1.1](https://hl7.org/fhir/uv/fhircast/2022May/3-3-1-patient-open.html) | Deprecate encounter element in favor of dedicated `encounter-open` event +| [1.2](https://hl7.org/fhir/uv/fhircast/2024May/3-3-1-Patient-open.html) | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-3-2-Patient-close.md b/input/pagecontent/3-3-2-Patient-close.md index fdc0aad6..af9a4022 100644 --- a/input/pagecontent/3-3-2-Patient-close.md +++ b/input/pagecontent/3-3-2-Patient-close.md @@ -1,6 +1,8 @@ ### Event-name: Patient-close -eventMaturity | [3 - Considered](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [3 - Considered](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow @@ -65,6 +67,6 @@ Other attributes of the Patient resource (or resource extensions) may be present {:.grid} | Version | Description | ---- | ---- -| 1.0 | Initial Release -| 1.1 | Deprecate encounter element in favor of dedicated `encounter-close` event -| 1.2 | Reference context resource profiles and update example to be compliant with the profiles +| [1.0](https://fhircast.hl7.org/events/patient-close/) | Initial Release +| [1.1](https://hl7.org/fhir/uv/fhircast/2022May/3-3-1-patient-close.html) | Deprecate encounter element in favor of dedicated `encounter-close` event +| [1.2](https://hl7.org/fhir/uv/fhircast/2024May/3-3-1-Patient-close.html) | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-4-1-Encounter-open.md b/input/pagecontent/3-4-1-Encounter-open.md index dda9533b..5c7fa71b 100644 --- a/input/pagecontent/3-4-1-Encounter-open.md +++ b/input/pagecontent/3-4-1-Encounter-open.md @@ -1,6 +1,8 @@ ### Event-name: Encounter-open -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.1 ### Workflow @@ -107,5 +109,5 @@ Other attributes of the Encounter and Patient resources (or resource extensions) {:.grid} | Version | Description | ---- | ---- -| 1.0 | Initial Release +| [1.0](https://hl7.org/fhir/uv/fhircast/2022May/3-4-1-encounter-open.html) | Initial Release | 1.1 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-4-2-Encounter-close.md b/input/pagecontent/3-4-2-Encounter-close.md index e2381c84..4de47a48 100644 --- a/input/pagecontent/3-4-2-Encounter-close.md +++ b/input/pagecontent/3-4-2-Encounter-close.md @@ -1,6 +1,8 @@ ### Event-name: Encounter-close -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.1 ### Workflow @@ -89,5 +91,5 @@ Other attributes of the Encounter and Patient resources (or resource extensions) {:.grid} | Version | Description | ---- | ---- -| 1.0 | Initial Release +| [1.0](https://hl7.org/fhir/uv/fhircast/2022May/3-4-1-encounter-close.html) | Initial Release | 1.1 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-5-1-ImagingStudy-open.md b/input/pagecontent/3-5-1-ImagingStudy-open.md index 021bc94c..0a8738fb 100644 --- a/input/pagecontent/3-5-1-ImagingStudy-open.md +++ b/input/pagecontent/3-5-1-ImagingStudy-open.md @@ -1,6 +1,8 @@ ### Event-name: ImagingStudy-open -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2-Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.1 ### Workflow @@ -217,5 +219,5 @@ This is an example for FHIR R5 using the basedOn array for the accession {:.grid} | Version | Description | ------- | ---- -| 1.0 | Initial Release +| [1.0](https://fhircast.hl7.org/events/imagingstudy-open/) | Initial Release | 1.1 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-5-2-ImagingStudy-close.md b/input/pagecontent/3-5-2-ImagingStudy-close.md index 1e962d31..91cbe584 100644 --- a/input/pagecontent/3-5-2-ImagingStudy-close.md +++ b/input/pagecontent/3-5-2-ImagingStudy-close.md @@ -1,6 +1,8 @@ ### Event-name: ImagingStudy-close -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.1 ### Workflow @@ -182,5 +184,5 @@ This is an example for FHIR R5 using the basedOn array for the accession {:.grid} | Version | Description | ------- | ---- -| 1.0 | Initial Release +| [1.0](https://fhircast.hl7.org/events/imagingstudy-close/) | Initial Release | 1.1 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-6-1-DiagnosticReport-open.md b/input/pagecontent/3-6-1-DiagnosticReport-open.md index f73cc4e6..d1633e40 100644 --- a/input/pagecontent/3-6-1-DiagnosticReport-open.md +++ b/input/pagecontent/3-6-1-DiagnosticReport-open.md @@ -1,6 +1,8 @@ ### Event-name: DiagnosticReport-open -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow @@ -201,6 +203,6 @@ The event distributed by the Hub includes a context version in the `context.vers {:.grid} | Version | Description | ------- | ---- -| 0.1 | Initial draft +| [0.1](https://hl7.org/fhir/uv/fhircast/2022May/3-6-1-diagnosticreport-open.html) | Initial draft | 0.5 | Connectathon trials and initial fielded solutions based on draft STU3 | 1.0 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-6-2-DiagnosticReport-close.md b/input/pagecontent/3-6-2-DiagnosticReport-close.md index 35892ee4..4c9303c2 100644 --- a/input/pagecontent/3-6-2-DiagnosticReport-close.md +++ b/input/pagecontent/3-6-2-DiagnosticReport-close.md @@ -1,6 +1,8 @@ ### Event-name: DiagnosticReport-close -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow @@ -169,6 +171,6 @@ If a Hub supports content sharing, after it distributes the `DiagnosticReport-cl {:.grid} | Version | Description | ------- | ---- -| 0.1 | Initial draft +| [0.1](https://hl7.org/fhir/uv/fhircast/2022May/3-6-1-diagnosticreport-open.html) | Initial draft | 0.5 | Connectathon trials and initial fielded solutions based on draft STU3 | 1.0 | Reference context resource profiles and update example to be compliant with the profiles diff --git a/input/pagecontent/3-6-3-DiagnosticReport-update.md b/input/pagecontent/3-6-3-DiagnosticReport-update.md index 1a617e90..de698f82 100644 --- a/input/pagecontent/3-6-3-DiagnosticReport-update.md +++ b/input/pagecontent/3-6-3-DiagnosticReport-update.md @@ -1,6 +1,10 @@ ### Event-name: DiagnosticReport-update -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 + +#### Workflow The `DiagnosticReport-update` event is used by Subscribers to support content sharing in communication with a Hub which also supports content sharing. A `DiagnosticReport-update` request will be posted to the Hub when a Subscriber desires to add, change, or remove exchanged information in the anchor context. For a `DiagnosticReport-update`, the [`anchor context`](5_glossary.html) is the `DiagnosticReport` context established by the corresponding `DiagnosticReport-open`. One or more update requests MAY occur while the anchor context is open. @@ -292,5 +296,5 @@ The following example shows a request to delete an observation from a content sh {:.grid} | Version | Description | ------- | ---- -| 0.1 | Initial draft +| [0.1](https://hl7.org/fhir/uv/fhircast/2022May/3-6-1-diagnosticreport-open.html) | Initial draft | 1.0 | Updated for STU3 diff --git a/input/pagecontent/3-6-4-DiagnosticReport-select.md b/input/pagecontent/3-6-4-DiagnosticReport-select.md index c5510264..145a22ad 100644 --- a/input/pagecontent/3-6-4-DiagnosticReport-select.md +++ b/input/pagecontent/3-6-4-DiagnosticReport-select.md @@ -1,6 +1,8 @@ ### Event-name: DiagnosticReport-select -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.0 ### Workflow A `DiagnosticReport-select` request will be made to the Hub when a Subscriber desires to indicate that one or more FHIR resources contained in the DiagnosticReport context's content are to be made visible, in focus, or otherwise "selected". It is assumed that a FHIR resource (e.g., Observation) with the specified `id` is contained in the specified [`anchor context's`](5_glossary.html) content, the Hub MAY or MAY NOT provide validation of its presence. @@ -71,5 +73,5 @@ The following example shows the selection of a single Observation resource in an {:.grid} | Version | Description | ------- | ---- -| 0.1 | Initial draft +| [0.1](https://hl7.org/fhir/uv/fhircast/2022May/3-6-1-diagnosticreport-open.html) | Initial draft | 1.0 | Updated for STU3 diff --git a/input/pagecontent/7_design-notes.md b/input/pagecontent/7_design-notes.md index 2a4ac380..6c6741fc 100644 --- a/input/pagecontent/7_design-notes.md +++ b/input/pagecontent/7_design-notes.md @@ -6,8 +6,12 @@ Originally, FHIRcast supported a `webhook` channel (URL callbacks). As part of F The field `hub.channel.type` was used to indicate the channel type to use for event notification. This field has been retained in order to support backward compatibility as well as facilitate potentially adding new channels in the future. -Similarly, the conformance statement related to WebSocketsupport was retained. +Similarly, the conformance statement related to WebSocket support was retained. ### Content sharing approach Two base use cases for content-exchange were identified during use case analysis. One employs a transactional, event-based exchange mechanism while the second uses content sharing content persisted in a FHIR server. It is also possible to use both methods concurrently. A detailed description of these approaches is found in the content sharing section of the specification. + +### FHIRcast event versioning + +The event definitions can evolve independently of the specification. In some deployments, there might be a need to retain support of older event versions, especially in the case where there are breaking changes. In order to support deployments where older versions of events are used, a versioning scheme has been added to events. \ No newline at end of file