ExampleScenario
Introduction
Scope and Usage
ExampleScenario provides examples for how certain data exchange workflows might manifest. This resource is similar to ImplementationGuide, Requirements, ActorDefinition, and other resources that will typically only be exchanged as part of implementation guide packages and will be used by implementers to understand how to design systems rather than being used to share information between clinical systems.
This resource 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.
Boundaries and Relationships
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.
Background and Context
Provides additional detail on exactly how the resource is to be used
Notes
Example Scenarios help to make the expected behavior of a collection of systems adhering to a guide more concrete. It allows the author to say "Imagine you have a patient in situation X and Y needs to happen. This is what the exchanges between the various imaginary systems might look like for that specific patient."
Creating examples is a lot of work, and creating ExampleScenarios is often an order of magnitude more work, but being able to see the resulting diagrams of flows and click through to see the specific instances that are being exchanged can be extremely helpful in solidifying implementer understanding of the 'workflow' implied by an implementation guide.
In addition to the examples provided in the examples tab, you can also see some useful examples of ExampleScenario in the Physical Activity implementation guide.
Contained
There are two notions of 'contained' in this resource - the generic 'contained' element inherited from DomainResource that allows other resources to be nested inside this ExampleScenario (e.g. Provenance, structureProfiles, or instance or instance.version content). There is also a containedInstance element on ExampleScenario.instance. This latter element reflects the nesting of content within the data shared as part of a scenario. For example, highlighting that an instance initially received on its own (e.g. an Observation) is later conveyed in a Bundle (as a document, message or search response), or potentially a resource that was nested as a 'contained' resource in one instance is available in non-contained form or contained inside a different resource in a separate instance.
In short, 'ExampleScenario.contained' is for nesting resources inside the ExampleScenario. ExampleScenario.instance.containedInstance reflects the nesting of data being transmitted by an ExampleScenario operation as part of the scenario.
StructureDefinition
Elements (Simplified)
- ExampleScenario [0..*]: - A computable description of a set of actors and the interactions between those actors
- ExampleScenario.url [0..1]: uri Canonical identifier for this example scenario, represented as a URI (globally unique)
- ExampleScenario.identifier [0..*]: Identifier Additional identifier for the example scenario
- ExampleScenario.version [0..1]: string Business version of the example scenario
- ExampleScenario.versionAlgorithm[x] [0..1]: string, Coding extensible:version-algorithm How to compare versions
- ExampleScenario.name [0..1]: string Name for this example scenario (computer friendly)
- ExampleScenario.title [0..1]: string Name for this example scenario (human friendly)
- ExampleScenario.status [1..1]: code required:publication-status draft | active | retired | unknown
- ExampleScenario.experimental [0..1]: boolean For testing only - never for real usage
- ExampleScenario.date [0..1]: dateTime Date last changed
- ExampleScenario.publisher [0..1]: string Name of the publisher/steward (organization or individual)
- ExampleScenario.contact [0..*]: ContactDetail Contact details for the publisher
- ExampleScenario.description [0..1]: markdown Natural language description of the ExampleScenario
- ExampleScenario.useContext [0..*]: UsageContext The context that the content is intended to support
- ExampleScenario.jurisdiction [0..*]: CodeableConcept extensible:jurisdiction Jurisdiction of the authority that maintains the example scenario (if applicable)
- ExampleScenario.purpose [0..1]: markdown The purpose of the example, e.g. to illustrate a scenario
- ExampleScenario.copyright [0..1]: markdown Notice about intellectual property ownership, can include restrictions on use
- ExampleScenario.copyrightLabel [0..1]: string Copyright holder and year(s)
- ExampleScenario.actor [0..*]: BackboneElement Individual involved in exchange
- ExampleScenario.actor.key [1..1]: string ID or acronym of the actor
- ExampleScenario.actor.type [0..1]: code required:actordefinition-actor-type person | system | collective | other
- ExampleScenario.actor.title [1..1]: string Label for actor when rendering
- ExampleScenario.actor.description [0..1]: markdown Details about actor
- ExampleScenario.actor.definition [0..1]: canonical Formal definition of actor
- ExampleScenario.instance [0..*]: BackboneElement Data used in the scenario
- ExampleScenario.instance.key [1..1]: string ID or acronym of the instance
- ExampleScenario.instance.structureType [1..1]: Coding extensible:examplescenario-instance-type Data structure for example
- ExampleScenario.instance.structureVersion [0..1]: string E.g. 4.0.1
- ExampleScenario.instance.structureProfile[x] [0..1]: canonical, uri Rules instance adheres to
- ExampleScenario.instance.title [1..1]: string Label for instance
- ExampleScenario.instance.description [0..1]: markdown Human-friendly description of the instance
- ExampleScenario.instance.content [0..1]: Reference Example instance data
- ExampleScenario.instance.version [0..*]: BackboneElement Snapshot of instance that changes
- ExampleScenario.instance.version.key [1..1]: string ID or acronym of the version
- ExampleScenario.instance.version.title [1..1]: string Label for instance version
- ExampleScenario.instance.version.description [0..1]: markdown Details about version
- ExampleScenario.instance.version.content [0..1]: Reference Example instance version data
- ExampleScenario.instance.containedInstance [0..*]: BackboneElement Resources contained in the instance
- ExampleScenario.instance.containedInstance.instanceReference [1..1]: string Key of contained instance
- ExampleScenario.instance.containedInstance.versionReference [0..1]: string Key of contained instance version
- ExampleScenario.process [0..*]: BackboneElement Major process within scenario
- ExampleScenario.process.title [1..1]: string Label for procss
- ExampleScenario.process.description [0..1]: markdown Human-friendly description of the process
- ExampleScenario.process.preConditions [0..1]: markdown Status before process starts
- ExampleScenario.process.postConditions [0..1]: markdown Status after successful completion
- ExampleScenario.process.step [0..*]: BackboneElement Event within of the process
- ExampleScenario.process.step.number [0..1]: string Sequential number of the step
- ExampleScenario.process.step.process [0..1]: - Step is nested process
- ExampleScenario.process.step.workflow [0..1]: canonical Step is nested workflow
- ExampleScenario.process.step.operation [0..1]: BackboneElement Step is simple action
- ExampleScenario.process.step.operation.type [0..1]: Coding extensible:examplescenario-operation-codes Kind of action
- ExampleScenario.process.step.operation.title [1..1]: string Label for step
- ExampleScenario.process.step.operation.initiator [0..1]: string Who starts the operation
- ExampleScenario.process.step.operation.receiver [0..1]: string Who receives the operation
- ExampleScenario.process.step.operation.description [0..1]: markdown Human-friendly description of the operation
- ExampleScenario.process.step.operation.initiatorActive [0..1]: boolean Initiator stays active?
- ExampleScenario.process.step.operation.receiverActive [0..1]: boolean Receiver stays active?
- ExampleScenario.process.step.operation.request [0..1]: - Instance transmitted on invocation
- ExampleScenario.process.step.operation.response [0..1]: - Instance transmitted on invocation response
- ExampleScenario.process.step.alternative [0..*]: BackboneElement Alternate non-typical step action
- ExampleScenario.process.step.alternative.title [1..1]: string Label for alternative
- ExampleScenario.process.step.alternative.description [0..1]: markdown Human-readable description of option
- ExampleScenario.process.step.alternative.step [0..*]: - Alternative action(s)
- ExampleScenario.process.step.pause [0..1]: boolean Pause in the flow?
Mappings
- ExampleScenario Mappings — 14 mapping entries
Resource Packs
list-ExampleScenario-packs.xml
<?xml version="1.0" encoding="UTF-8"?>
<List xmlns="http://hl7.org/fhir">
<id value="ExampleScenario-packs"/>
<status value="current"/>
<mode value="working"/>
</List>
Search Parameters
- context — token — A use context assigned to the example scenario —
(ExampleScenario.useContext.value.ofType(CodeableConcept)) - 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)) - context-type — token — A type of use context assigned to the example scenario —
ExampleScenario.useContext.code - context-type-quantity — composite — A use context type and quantity- or range-based value assigned to the example scenario —
ExampleScenario.useContext - context-type-value — composite — A use context type and value assigned to the example scenario —
ExampleScenario.useContext - date — date — The example scenario publication date —
ExampleScenario.date - identifier — token — External identifier for the example scenario —
ExampleScenario.identifier - jurisdiction — token — Jurisdiction of the authority that maintains the the example scenario —
ExampleScenario.jurisdiction - name — string — Computationally friendly name of the example scenario —
ExampleScenario.name - publisher — string — Name of the publisher of the example scenario —
ExampleScenario.publisher - status — token — The current status of the example scenario —
ExampleScenario.status - url — uri — The uri that identifies the example scenario —
ExampleScenario.url - version — token — The business version of the example scenario —
ExampleScenario.version - experimental — token — Whether the ExampleScenario is experimental —
ExampleScenario.experimental
Examples
- example — examplescenario-example — Example of examplescenario
- example-laborder — examplescenario-example-laborder — Example of examplescenario - Lab order tracking with Task
- examplescenario-example — examplescenario-example
- examplescenario-example-laborder — examplescenario-example-laborder
- examplescenario-examples-header — examplescenario-examples-header
Mapping Exceptions
examplescenario-fivews-mapping-exceptions.xml
Divergent Elements
- FiveWs.what[x] → ExampleScenario.instance
Unmapped Elements
- FiveWs.author — Not relevant for this resource
- FiveWs.actor — Not relevant for this resource
- FiveWs.cause — Not relevant for this resource
- FiveWs.where — Not relevant for this resource
- FiveWs.context — Unknown
- FiveWs.init — Not relevant for this resource
- FiveWs.source — Not relevant for this resource
- FiveWs.grade — Not relevant for this resource
- FiveWs.planned — Not relevant for this resource
- FiveWs.done — Not relevant for this resource
- FiveWs.subject — Not relevant for this resource