diff --git a/.gitignore b/.gitignore index fecc7e5b..50bd19a5 100644 --- a/.gitignore +++ b/.gitignore @@ -17,8 +17,7 @@ template/ output/ updateWebsite.sh nginx.conf -fhircast-template/content/.index.json -fhircast-template/content/assets/.index.json -fhircast-template/content/assets/ico/.index.json -fhircast-template/content/assets/images/.index.json -fhircast-template/includes/.index.json + +# Template temp files +fhircast-template/**/.index.json +fhircast-template/**/.index.db diff --git a/ebnf/_createAllEbnfPng.sh b/ebnf/_createAllEbnfPng.sh old mode 100644 new mode 100755 diff --git a/ebnf/_createEbnfPng.sh b/ebnf/_createEbnfPng.sh old mode 100644 new mode 100755 diff --git a/ebnf/diagram/EventName.png b/ebnf/diagram/EventName.png index 0cbd030e..d0af5bcb 100644 Binary files a/ebnf/diagram/EventName.png and b/ebnf/diagram/EventName.png differ diff --git a/ebnf/input/events.ebnf b/ebnf/input/events.ebnf index 94cc11cb..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/input/images/EventName.png b/input/images/EventName.png index 0cbd030e..d0af5bcb 100644 Binary files a/input/images/EventName.png and b/input/images/EventName.png differ diff --git a/input/pagecontent/2-3-Events.md b/input/pagecontent/2-3-Events.md index a6c95a45..459b8e75 100644 --- a/input/pagecontent/2-3-Events.md +++ b/input/pagecontent/2-3-Events.md @@ -28,27 +28,27 @@ 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. Implementers may define their own events. Such proprietary events SHALL be named with reverse domain notation (e.g. `org.example.patient_transmogrify`). Reverse domain notation SHALL NOT be used by a standard event catalog. Proprietary events SHALL NOT contain a dash ("-"). -When subscribing to FHIRcast events a list of events is added. These events may contain wild cards. Wild cards are expressed as a `*` replacing either the `FHIRresource` or `suffix` with `*` indicates any events that match the resulting definition are requested. The event `*` means the Subscriber subscribes to any event. The table below shows some typical examples. +When subscribing to FHIRcast events a list of events is added. These events may contain wild cards. Wild cards are expressed as a `*`. The use of a `*` indicates that any events that match the resulting definition are requested. The event `*` means the Subscriber subscribes to any event. The table below shows some typical examples. {:.grid} -| **Event** | **Description** | -|=======|=============| -| `*` | All events | -| `*-*` | All events with a FHIRcast defined postfix | +| **Event** | **Description** | +|=============|===================| +| `*` | All events | +| `*-*` | All events with a FHIRcast defined postfix | | `Patient-*` | All events that use the `Patient` FHIR resource | -| `*-update` | All update events | -| `*-select` | All select events | +| `*-update` | All update events | +| `*-select` | All select events | ### Context diff --git a/input/pagecontent/2-7-Conformance.md b/input/pagecontent/2-7-Conformance.md index d894a043..299e8fd6 100644 --- a/input/pagecontent/2-7-Conformance.md +++ b/input/pagecontent/2-7-Conformance.md @@ -12,9 +12,10 @@ 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 event names of the FHIRcast event 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. +`fhirVersion` | Required | string | The FHIR version the Hub supports, the value SHALL be a code (not display) from [FHIR versions](http://hl7.org/fhir/ValueSet/FHIR-version). `getCurrentSupport` | Optional | boolean | `true` or `false` indicating support for the "[Get Current Context](2-9-GetCurrentContext.html)" API. A field of `webhookSupport` SHALL be ignored. @@ -37,9 +38,10 @@ HTTP/1.1 200 OK Content-Type: application/json { - "eventsSupported": ["Patient-open", "Patient-close", "SyncError", "com.example.researchstudy-transmogrify"], + "eventsSupported": ["Patient-open", "Patient-open.v1.0", "Patient-close", "Patient-close.v1.0", "SyncError", "SyncError.v1.0", "com.example.researchstudy-transmogrify"], "websocketSupport": true, - "fhircastVersion": "STU3" + "fhircastVersion": "STU3", + "fhirVersion": "4.0.1" } ``` diff --git a/input/pagecontent/3-1-1-template.md b/input/pagecontent/3-1-1-template.md index a07581f0..9a979d8a 100644 --- a/input/pagecontent/3-1-1-template.md +++ b/input/pagecontent/3-1-1-template.md @@ -1,8 +1,12 @@ This section presents the template to use for defining new events. -### Event-name: [FHIR resource]-[suffix] -eventMaturity | [0 - Draft](3-1-2-eventmaturitymodel.html) +### Event-name: [FHIR resource]-[suffix]-[version] + +{:.grid} +| Event-maturity | [0 - Draft](3-1-2-eventmaturitymodel.html) | +| Version | | +| All Versions | | ### Workflow diff --git a/input/pagecontent/3-2-0-infrastructureevents.md b/input/pagecontent/3-2-0-infrastructureevents.md index edb45ad5..b74dc66c 100644 --- a/input/pagecontent/3-2-0-infrastructureevents.md +++ b/input/pagecontent/3-2-0-infrastructureevents.md @@ -2,7 +2,6 @@ Supporting events used in basic FHIRcast interactions. | **Infrastructure Events** | | [SyncError event](3-2-1-SyncError.html) | -| [Heartbeat event](3-2-2-Heartbeat.html) | | [UserLogout event](3-2-3-UserLogout.html) | | [UserHibernate event](3-2-4-UserHibernate.html) | diff --git a/input/pagecontent/3-2-1-SyncError.md b/input/pagecontent/3-2-1-SyncError.md index e04eaa9c..87ca55fe 100644 --- a/input/pagecontent/3-2-1-SyncError.md +++ b/input/pagecontent/3-2-1-SyncError.md @@ -1,6 +1,9 @@ ### Event-name: SyncError -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html) | +| Version | 1.1 +| All versions | [1.0](https://fhircast.hl7.org/events/syncerror/), [1.1](3-2-1-SyncError.html) | ### Workflow diff --git a/input/pagecontent/3-2-2-Heartbeat.md b/input/pagecontent/3-2-2-Heartbeat.md index 958c69e0..180cc930 100644 --- a/input/pagecontent/3-2-2-Heartbeat.md +++ b/input/pagecontent/3-2-2-Heartbeat.md @@ -2,7 +2,7 @@ ### Event-name: Heartbeat event -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +eventMaturity | [1 - Submitted](3-2-2-eventmaturitymodel.html) ### Workflow diff --git a/input/pagecontent/3-2-3-UserLogout.md b/input/pagecontent/3-2-3-UserLogout.md index b8fb425f..4132480c 100644 --- a/input/pagecontent/3-2-3-UserLogout.md +++ b/input/pagecontent/3-2-3-UserLogout.md @@ -1,6 +1,10 @@ ### Event-name: UserLogout -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) | +| Version | 2.0 | +| All Versions | [1.0](https://fhircast.hl7.org/events/userlogout/), [2.0](3-2-3-UserLogout.html) | + ### Workflow diff --git a/input/pagecontent/3-2-4-UserHibernate.md b/input/pagecontent/3-2-4-UserHibernate.md index 0348eb65..8b1a7699 100644 --- a/input/pagecontent/3-2-4-UserHibernate.md +++ b/input/pagecontent/3-2-4-UserHibernate.md @@ -1,6 +1,9 @@ ### Event-name: UserHibernate -eventMaturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [1 - Submitted](3-1-2-eventmaturitymodel.html) | +| Version | [1.0](3-2-4-UserHibernate.html) | +| All versions | [1.0](3-2-4-UserHibernate.html) | ### Workflow diff --git a/input/pagecontent/3-3-1-Patient-open.md b/input/pagecontent/3-3-1-Patient-open.md index bbd9a322..82708b0d 100644 --- a/input/pagecontent/3-3-1-Patient-open.md +++ b/input/pagecontent/3-3-1-Patient-open.md @@ -1,6 +1,9 @@ -### Event name: `Patient-open` +### Event name: Patient-open -eventMaturity | [3 - Considered](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [3 - Considered](3-1-2-eventmaturitymodel.html)| +| Version | 2.0 | +| All Versions | [1.0](https://fhircast.hl7.org/events/patient-open/), [2.0](3-3-1-Patient-open.html) | ### Workflow diff --git a/input/pagecontent/3-3-2-Patient-close.md b/input/pagecontent/3-3-2-Patient-close.md index 8206abb7..91a876e2 100644 --- a/input/pagecontent/3-3-2-Patient-close.md +++ b/input/pagecontent/3-3-2-Patient-close.md @@ -1,6 +1,9 @@ ### Event-name: Patient-close -eventMaturity | [3 - Considered](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [3 - Considered](3-1-2-eventmaturitymodel.html)| +| Version | 2.0 | +| All versions | [1.0](https://fhircast.hl7.org/events/patient-close/), [2.0](3-3-2-Patient-close.html) | ### Workflow diff --git a/input/pagecontent/3-4-1-Encounter-open.md b/input/pagecontent/3-4-1-Encounter-open.md index 8f690b94..1457edc6 100644 --- a/input/pagecontent/3-4-1-Encounter-open.md +++ b/input/pagecontent/3-4-1-Encounter-open.md @@ -1,6 +1,9 @@ -### Event-name: `Encounter-open` +### Event-name: Encounter-open -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html)| +| Version | [1.0](3-4-1-Encounter-open.html) | +| All versions | [1.0](3-4-1-Encounter-open.html) | ### Workflow diff --git a/input/pagecontent/3-4-2-Encounter-close.md b/input/pagecontent/3-4-2-Encounter-close.md index 56d1703f..f72b5ddf 100644 --- a/input/pagecontent/3-4-2-Encounter-close.md +++ b/input/pagecontent/3-4-2-Encounter-close.md @@ -1,6 +1,9 @@ ### Event-name: Encounter-close -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html)| +| Version | [1.0](3-4-2-Encounter-close.html) | +| All versions | [1.0](3-4-2-Encounter-close.html) | ### Workflow diff --git a/input/pagecontent/3-5-1-ImagingStudy-open.md b/input/pagecontent/3-5-1-ImagingStudy-open.md index 0a3b8c63..dbf42b33 100644 --- a/input/pagecontent/3-5-1-ImagingStudy-open.md +++ b/input/pagecontent/3-5-1-ImagingStudy-open.md @@ -1,6 +1,9 @@ ### Event-name: ImagingStudy-open -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html)| +| Version | 2.0 | +| All versions | [1.0](https://fhircast.hl7.org/events/imagingstudy-open/), [2.0](3-5-1-ImagingStudy-open.html) | ### Workflow diff --git a/input/pagecontent/3-5-2-ImagingStudy-close.md b/input/pagecontent/3-5-2-ImagingStudy-close.md index 077e5024..b62b487c 100644 --- a/input/pagecontent/3-5-2-ImagingStudy-close.md +++ b/input/pagecontent/3-5-2-ImagingStudy-close.md @@ -1,6 +1,9 @@ -### Event-name: ImagingStudy-close +### Event-name: `ImagingStudy-close` -eventMaturity | [2 - Tested](3-1-2-eventmaturitymodel.html) +{:.grid} +| Event-maturity | [2 - Tested](3-1-2-eventmaturitymodel.html)| +| Version | 2.0 | +| All versions | [1.0](https://fhircast.hl7.org/events/imagingstudy-close/), [2.0](3-5-2-ImagingStudy-close.html) | ### Workflow diff --git a/input/pagecontent/3-6-1-DiagnosticReport-open.md b/input/pagecontent/3-6-1-DiagnosticReport-open.md index 5fb25a77..6211825e 100644 --- a/input/pagecontent/3-6-1-DiagnosticReport-open.md +++ b/input/pagecontent/3-6-1-DiagnosticReport-open.md @@ -1,6 +1,9 @@ ### 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](3-6-1-DiagnosticReport-open.html) | +| All versions | [1.0](3-6-1-DiagnosticReport-open.html) | ### Workflow diff --git a/input/pagecontent/3-6-2-DiagnosticReport-close.md b/input/pagecontent/3-6-2-DiagnosticReport-close.md index 79b8251f..36e54624 100644 --- a/input/pagecontent/3-6-2-DiagnosticReport-close.md +++ b/input/pagecontent/3-6-2-DiagnosticReport-close.md @@ -1,6 +1,9 @@ ### 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](3-6-2-DiagnosticReport-close.html) | +| All versions | [1.0](3-6-2-DiagnosticReport-close.html) | ### Workflow diff --git a/input/pagecontent/3-6-3-DiagnosticReport-update.md b/input/pagecontent/3-6-3-DiagnosticReport-update.md index 08e5cfcd..dfe91d0c 100644 --- a/input/pagecontent/3-6-3-DiagnosticReport-update.md +++ b/input/pagecontent/3-6-3-DiagnosticReport-update.md @@ -1,6 +1,9 @@ ### 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](3-6-3-DiagnosticReport-update.html) | +| All versions | [1.0](3-6-3-DiagnosticReport-update.html) | 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 a to add, change, or remove exchanged information in the anchor context. For a `DiagnosticReport-update`, the anchor context (see: [`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. diff --git a/input/pagecontent/3-6-4-DiagnosticReport-select.md b/input/pagecontent/3-6-4-DiagnosticReport-select.md index 32249747..deb38e97 100644 --- a/input/pagecontent/3-6-4-DiagnosticReport-select.md +++ b/input/pagecontent/3-6-4-DiagnosticReport-select.md @@ -1,6 +1,9 @@ ### 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](3-6-4-DiagnosticReport-select.html) | +| All versions | [1.0](3-6-4-DiagnosticReport-select.html) | ### 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. diff --git a/input/pagecontent/3_Events.md b/input/pagecontent/3_Events.md index e5393bd3..3b276d23 100644 --- a/input/pagecontent/3_Events.md +++ b/input/pagecontent/3_Events.md @@ -12,9 +12,9 @@ The sections in this chapter are: | **3.2 Infrastructure Events** | | [3.2.1 SyncError event](3-2-1-SyncError.html) | -| [3.2.2 Heartbeat.html event](3-2-2-Heartbeat.html) | -| [3.2.3 UserLogout.html event](3-2-3-UserLogout.html) | -| [3.2.4 UserHibernate.html event](3-2-4-UserHibernate.html) | +| [3.2.2 Heartbeat event](3-2-2-Heartbeat.html) | +| [3.2.3 UserLogout event](3-2-3-UserLogout.html) | +| [3.2.4 UserHibernate event](3-2-4-UserHibernate.html) | | **3.3 Patient Events** | | [3.3.1 Patient-open event](3-3-1-Patient-open.html) | diff --git a/input/pagecontent/7_design-notes.md b/input/pagecontent/7_design-notes.md index 2a4ac380..a7bb1f48 100644 --- a/input/pagecontent/7_design-notes.md +++ b/input/pagecontent/7_design-notes.md @@ -11,3 +11,7 @@ Similarly, the conformance statement related to WebSocketsupport 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 diff --git a/sushi-config.yaml b/sushi-config.yaml index 4756a000..8628645d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -142,7 +142,6 @@ menu: Content Sharing: 2-10-ContentSharing.html Events: Introduction: 3_Events.html - FHIRcast Event Definitions: 3-1-0-eventstructures.html Event Template: 3-1-1-template.html Event Maturity Model: 3-1-2-eventmaturitymodel.html Infrastructure Events: 3-2-0-infrastructureevents.html