This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions
FHIR Infrastructure ![]() | Maturity Level: 1 | Trial Use | Security Category: Anonymous | Compartments: No defined compartments |
A computable description of the actors, interactions between those actors that would occur, and concrete examples of the data that would be exchanged in a specific hypothetical exchange, typically used to help demonstrate the interoperability expectations of a specification. This resource is used to illustrate a specific time-based exchange, not to define in general terms how exchanges can/should occur.
This resource is used in implementation guides or other specifications to provide examples for how certain workflows would manifest. It can be used to show how instances would evolve over time as well as the interplay of systems over time to accomplish a particular end-state. It will frequently be used to generate sequence diagrams, but also provides further information about all of the entities within the sequence diagrams, including the instances shared as part of the exchange.
This resource is most useful when documenting more complex flows rather than simple RESTful invocations or other request-response pairs.
PlanDefinitions also describe actors and sequences of interactions between them, including alternatives. However, PlanDefinition defines what's allowed, while ExampleScenario represents a potential pathway through what's allowed. While an ExampleScenario can define alternatives, it doesn't necessarily call out all of them. Instead, it highlights the path(s) of interest to help a reader understand what's possible or how a particular scenario might work. Any resource can be an 'example' in a specification. This resource is specifically about highlighting how those examples come together in a workflow - who exchanges them and under what circumstances.
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis
Path | ValueSet | Type | Documentation |
---|---|---|---|
ExampleScenario.versionAlgorithm[x] | VersionAlgorithm | Extensible | Indicates the mechanism used to compare versions to determine which is more current. |
ExampleScenario.status | PublicationStatus | Required | The lifecycle status of an artifact. |
ExampleScenario.jurisdiction | JurisdictionValueSet | Extensible | This value set defines a base set of codes for country, country subdivision and region for indicating where a resource is intended to be used. Note: The codes for countries and country subdivisions are taken from ISO 3166 |
ExampleScenario.actor.type | ActorDefinitionActorType | Required | The type of actor - system or human. |
ExampleScenario.instance.structureType | ExampleScenarioResourceType | Extensible | Types of resource structures that can be passed in or out of exchange operations. Not necessarily FHIR. |
ExampleScenario.process.step.operation.type | TestScriptOperationCode (a valid code from FHIR Restful Interactions) | Extensible | This value set defines a set of codes that are used to indicate the supported operations of a testing engine or tool. |
UniqueKey | Level | Location | Description | Expression |
![]() | Warning | (base) | Name should be usable as an identifier for the module by machine processing applications such as code generation | name.exists() implies name.matches('^[A-Z]([A-Za-z0-9_]){1,254}$') |
![]() | Rule | ExampleScenario.instance | StructureVersion is required if structureType is not FHIR (but may still be present even if FHIR) | structureType.exists() and structureType.memberOf('http://hl7.org/fhir/ValueSet/resource-types').not() implies structureVersion.exists() |
![]() | Warning | ExampleScenario.url | URL should not contain | or # - these characters make processing canonical references problematic | exists() implies matches('^[^|# ]+$') |
![]() | Rule | ExampleScenario.instance | instance.content is only allowed if there are no instance.versions | content.exists() implies version.empty() |
![]() | Rule | (base) | Must have actors if status is active or required | status='active' or status='retired' implies actor.exists() |
![]() | Rule | (base) | Must have processes if status is active or required | status='active' or status='retired' implies process.exists() |
![]() | Rule | ExampleScenario.process | Processes must have steps if ExampleScenario status is active or required | %resource.status='active' or %resource.status='retired' implies step.exists() |
![]() | Rule | (base) | Actor keys must be unique | actor.key.count() = actor.key.distinct().count() |
![]() | Rule | (base) | Actor titles must be unique | actor.title.count() = actor.title.distinct().count() |
![]() | Rule | (base) | Instance keys must be unique | instance.key.count() = instance.key.distinct().count() |
![]() | Rule | (base) | Instance titles must be unique | instance.title.count() = instance.title.distinct().count() |
![]() | Rule | ExampleScenario.instance | Version keys must be unique within an instance | version.key.count() = version.key.distinct().count() |
![]() | Rule | ExampleScenario.instance | Version titles must be unique within an instance | version.title.count() = version.title.distinct().count() |
![]() | Rule | (base) | Process titles must be unique | process.title.count() = process.title.distinct().count() |
![]() | Rule | ExampleScenario.process.step | Alternative titles must be unique within a step | alternative.title.count() = alternative.title.distinct().count() |
![]() | Rule | ExampleScenario.instance.containedInstance | InstanceReference must be a key of an instance defined in the ExampleScenario | %resource.instance.where(key=%context.instanceReference).exists() |
![]() | Rule | ExampleScenario.instance.containedInstance | versionReference must be specified if the referenced instance defines versions | versionReference.empty() implies %resource.instance.where(key=%context.instanceReference).version.empty() |
![]() | Rule | ExampleScenario.instance.containedInstance | versionReference must be a key of a version within the instance pointed to by instanceReference | versionReference.exists() implies %resource.instance.where(key=%context.instanceReference).version.where(key=%context.versionReference).exists() |
![]() | Rule | ExampleScenario.process.step.operation | If specified, initiator must be a key of an actor within the ExampleScenario | initiator.exists() implies initiator = 'OTHER' or %resource.actor.where(key=%context.initiator).exists() |
![]() | Rule | ExampleScenario.process.step.operation | If specified, receiver must be a key of an actor within the ExampleScenario | receiver.exists() implies receiver = 'OTHER' or %resource.actor.where(key=%context.receiver).exists() |
![]() | Warning | ExampleScenario.actor | Actor should be referenced in at least one operation | %resource.process.descendants().select(operation).where(initiator=%context.key or receiver=%context.key).exists() |
![]() | Warning | ExampleScenario.instance | Instance should be referenced in at least one location | %resource.process.descendants().select(instanceReference).where($this=%context.key).exists() |
![]() | Warning | ExampleScenario.instance | Instance version should be referenced in at least one operation | version.exists() implies version.key.intersect(%resource.process.descendants().where(instanceReference = %context.key).versionReference).exists() |
![]() | Rule | ExampleScenario.process.step | Can have a process, a workflow, one or more operations or none of these, but cannot have a combination | (process.exists() implies workflow.empty() and operation.empty()) and (workflow.exists() implies operation.empty()) |
![]() | Rule | ExampleScenario.actor | actor.key canot be 'OTHER' | key != 'OTHER' |
![]() | Rule | ExampleScenario.actor | actor SHALL have either a type or a definition but not both | type.exists() xor definition.exists() |
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.
Name | Type | Description | Expression | In Common |
context | token | A use context assigned to the example scenario | (ExampleScenario.useContext.value.ofType(CodeableConcept)) | 30 Resources |
context-quantity | quantity | A quantity- or range-valued use context assigned to the example scenario | (ExampleScenario.useContext.value.ofType(Quantity)) | (ExampleScenario.useContext.value.ofType(Range)) | 30 Resources |
context-type | token | A type of use context assigned to the example scenario | ExampleScenario.useContext.code | 30 Resources |
context-type-quantity | composite | A use context type and quantity- or range-based value assigned to the example scenario | On ExampleScenario.useContext: context-type: code context-quantity: value.ofType(Quantity) | value.ofType(Range) |
30 Resources |
context-type-value | composite | A use context type and value assigned to the example scenario | On ExampleScenario.useContext: context-type: code context: value.ofType(CodeableConcept) |
30 Resources |
date | date | The example scenario publication date | ExampleScenario.date | 31 Resources |
identifier | token | External identifier for the example scenario | ExampleScenario.identifier | 35 Resources |
jurisdiction | token | Intended jurisdiction for the example scenario | ExampleScenario.jurisdiction | 27 Resources |
name | string | Computationally friendly name of the example scenario | ExampleScenario.name | 28 Resources |
publisher | string | Name of the publisher of the example scenario | ExampleScenario.publisher | 31 Resources |
status | token | The current status of the example scenario | ExampleScenario.status | 35 Resources |
url | uri | The uri that identifies the example scenario | ExampleScenario.url | 34 Resources |
version | token | The business version of the example scenario | ExampleScenario.version | 32 Resources |