Release 5 Ballot

This page is part of the FHIR Specification (v5.0.0-ballot: FHIR R5 Ballot Preview). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4

12.30 Resource ExampleScenario - Content

FHIR Infrastructure Work GroupMaturity Level: 1 Trial UseSecurity Category: Anonymous Compartments: Not linked to any defined compartments

Example of workflow instance.

This resource is expected to be 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 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.

  • Resource References: : and itself

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ExampleScenario TUDomainResourceExample of workflow instance
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
+ Rule: Must have actors if status is active or required
+ Rule: Must have processes if status is active or required
+ Rule: Actor keys must be unique
+ Rule: Actor titles must be unique
+ Rule: Instance keys must be unique
+ Rule: Instance titles must be unique
+ Rule: Process titles must be unique

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
Interfaces Implemented: CanonicalResource
... url ΣC0..1uriCanonical identifier for this example scenario, represented as a URI (globally unique)
+ Warning: URL should not contain | or # - these characters make processing canonical references problematic
... identifier Σ0..*IdentifierAdditional identifier for the example scenario

... version Σ0..1stringBusiness version of the example scenario
.... versionAlgorithmStringstring
.... versionAlgorithmCodingCoding
... name Σ0..1stringTo be removed?
... title Σ0..1stringName for this example scenario (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher/steward (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher

... description Σ0..1markdownNatural language description of the ExampleScenario
... useContext Σ0..*UsageContextThe context that the content is intended to support

... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for example scenario (if applicable)
Jurisdiction (Extensible)

... purpose 0..1markdownThe purpose of the example, e.g. to illustrate a scenario
... copyright 0..1markdownUse and/or publishing restrictions
... copyrightLabel 0..1stringCopyright holder and year(s)
... actor C0..*BackboneElementIndividual involved in exchange
+ Warning: Actor should be referenced in at least one operation
+ Rule: actor.key canot be 'OTHER'

.... key 1..1stringID or acronym of the actor
.... type 1..1codeperson | system
ExampleScenarioActorType (Required)
.... title 1..1stringLabel for actor when rendering
.... description 0..1markdownDetails about actor
... instance C0..*BackboneElementData used in the scenario
+ Rule: StructureVersion is required if structureType is not FHIR (but may still be present even if FHIR)
+ Rule: instance.content is only allowed if there are no instance.versions
+ Rule: Version keys must be unique within an instance
+ Rule: Version titles must be unique within an instance
+ Warning: Instance should be referenced in at least one location
+ Warning: Instance version should be referenced in at least one operation

.... key 1..1stringID or acronym of the instance
.... structureType 1..1CodingData structure for example
Example Scenario Resource Type (Extensible)
.... structureVersion C0..1stringE.g. 4.0.1
.... structureProfile[x] 0..1Rules instance adheres to
..... structureProfileCanonicalcanonical()
..... structureProfileUriuri
.... title 1..1stringLabel for instance
.... description 0..1markdownHuman-friendly description of the instance
.... content 0..1Reference()Example instance data
.... version 0..*BackboneElementSnapshot of instance that changes

..... key 1..1stringID or acronym of the version
..... description 0..1markdownDetails about version
..... content 0..1Reference()Example instance version data
.... containedInstance C0..*BackboneElementResources contained in the instance
+ Rule: InstanceReference must be a key of an instance defined in the ExampleScenario
+ Rule: versionReference must be specified if the referenced instance defines versions
+ Rule: versionReference must be a key of a version within the instance pointed to by instanceReference

..... instanceReference 1..1stringKey of contained instance
..... versionReference 0..1stringKey of contained instance version
... process C0..*BackboneElementMajor process within scenario
+ Rule: Processes must have steps if ExampleScenario status is active or required

.... title Σ1..1stringLabel for procss
.... description 0..1markdownHuman-friendly description of the process
.... preConditions 0..1markdownStatus before process starts
.... postConditions 0..1markdownStatus after successful completion
.... step C0..*BackboneElementEvent within of the process
+ Rule: Alternative titles must be unique within a step
+ Rule: Can have a process, a workflow, one or more operations or none of these, but cannot have a combination

..... number 0..1stringSequential number of the step
..... process 0..1see processStep is nested process
..... workflow 0..1canonical(ExampleScenario)Step is nested workflow
..... operation C0..1BackboneElementStep is simple action
+ Rule: If specified, initiator must be a key of an actor within the ExampleScenario
+ Rule: If specified, receiver must be a key of an actor within the ExampleScenario
...... type 0..1CodingKind of action
TestScriptOperationCode (Extensible)
...... title 1..1stringLabel for step
...... initiator 0..1stringWho starts the operation
...... receiver 0..1stringWho receives the operation
...... description 0..1markdownHuman-friendly description of the operation
...... initiatorActive 0..1booleanInitiator stays active?
...... receiverActive 0..1booleanReceiver stays active?
...... request 0..1see containedInstanceInstance transmitted on invocation
...... response 0..1see containedInstanceInstance transmitted on invocation response
..... alternative 0..*BackboneElementAlternate non-typical step action

...... title 1..1stringLabel for alternative
...... description 0..1markdownHuman-readable description of option
...... step 0..*see stepAlternative action(s)

..... pause 0..1booleanPause in the flow?

doco Documentation for this format

See the Extensions for this resource

UML Diagram (Legend)

ExampleScenario (DomainResource) +CanonicalResourceAn absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different serversurl : uri [0..1]A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]Indicates the mechanism used to compare versions to determine which is more currentversionAlgorithm[x] : DataType [0..1] « string|Coding; null (Strength=Extensible) VersionAlgorithm+ »Temporarily retained for tooling purposesname : string [0..1]A short, descriptive, user-friendly title for the ExampleScenariotitle : string [0..1]The status of this example scenario. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « null (Strength=Required)PublicationStatus! »A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usageexperimental : boolean [0..1]The date (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition')date : dateTime [0..1]The name of the organization or individual responsible for the release and ongoing maintenance of the example scenariopublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the ExampleScenario from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instancesuseContext : UsageContext [0..*]A legal or geographic region in which the example scenario is intended to be usedjurisdiction : CodeableConcept [0..*] « null (Strength=Extensible)Jurisdiction ValueSet+ »What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenariopurpose : markdown [0..1]A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenariocopyright : markdown [0..1]A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')copyrightLabel : string [0..1]ActorA unique string within the scenario that is used to reference the actorkey : string [1..1]The category of actor - person or systemtype : code [1..1] « null (Strength=Required)ExampleScenarioActorType! »The human-readable name for the actor used when rendering the scenariotitle : string [1..1]An explanation of who/what the actor is and its role in the scenariodescription : markdown [0..1]InstanceA unique string within the scenario that is used to reference the instancekey : string [1..1]A code indicating the kind of data structure (FHIR resource or some other standard) this is an instance ofstructureType : Coding [1..1] « null (Strength=Extensible)ExampleScenarioResourceType+ »Conveys the version of the data structure instantiated. I.e. what release of FHIR, X12, OpenEHR, etc. is instance compliant withstructureVersion : string [0..1] « This element has or is affected by some invariantsC »Refers to a profile, template or other ruleset the instance adheres tostructureProfile[x] : PrimitiveType [0..1] « canonical|uri »A short descriptive label the instance to be used in tables or diagramstitle : string [1..1]An explanation of what the instance contains and what it's fordescription : markdown [0..1]Points to an instance (typically an example) that shows the data that would corespond to this instancecontent : Reference [0..1] « »VersionA unique string within the instance that is used to reference the version of the instancekey : string [1..1]An explanation of what this specific version of the instance contains and representsdescription : markdown [0..1]Points to an instance (typically an example) that shows the data that would flow at this point in the scenariocontent : Reference [0..1] « »ContainedInstanceA reference to the key of an instance found within this oneinstanceReference : string [1..1]A reference to the key of a specific version of an instance in this instanceversionReference : string [0..1]ProcessA short descriptive label the process to be used in tables or diagramstitle : string [1..1]An explanation of what the process represents and what it doesdescription : markdown [0..1]Description of the initial state of the actors, environment and data before the process startspreConditions : markdown [0..1]Description of the final state of the actors, environment and data after the process has been successfully completedpostConditions : markdown [0..1]StepThe sequential number of the step, e.g. 1.2.5number : string [0..1]Indicates that the step is defined by a seaparate scenario instanceworkflow : canonical [0..1] « ExampleScenario »If true, indicates that, following this step, there is a pause in the flow and the subsequent step will occur at some later time (triggered by some event)pause : boolean [0..1]OperationThe standardized type of action (FHIR or otherwise)type : Coding [0..1] « null (Strength=Extensible)TestScriptOperationCode+ »A short descriptive label the step to be used in tables or diagramstitle : string [1..1]The system that invokes the action/transmits the datainitiator : string [0..1]The system on which the action is invoked/receives the datareceiver : string [0..1]An explanation of what the operation represents and what it doesdescription : markdown [0..1]If false, the initiator is deactivated right after the operationinitiatorActive : boolean [0..1]If false, the receiver is deactivated right after the operationreceiverActive : boolean [0..1]AlternativeThe label to display for the alternative that gives a sense of the circumstance in which the alternative should be invokedtitle : string [1..1]A human-readable description of the alternative explaining when the alternative should occur rather than the base stepdescription : markdown [0..1]A system or person who shares or receives an instance within the scenarioactor[0..*]Represents the instance as it was at a specific time-pointversion[0..*]References to other instances that can be found within this instance (e.g. the observations contained in a bundle)containedInstance[0..*]A single data collection that is shared as part of the scenarioinstance[0..*]Indicates that the step is a complex sub-process with its own stepsprocess[0..1]A reference to the instance that is transmitted from requester to receiver as part of the invocation of the operationrequest[0..1]A reference to the instance that is transmitted from receiver to requester as part of the operation's synchronous response (if any)response[0..1]The step represents a single operation invoked on receiver by senderoperation[0..1]Indicates the operation, sub-process or scenario that happens if the alternative option is selectedstep[0..*]Indicates an alternative step that can be taken instead of the sub-process, scenario or operation. E.g. to represent non-happy-path/exceptional/atypical circumstancesalternative[0..*]A significant action that occurs as part of the processstep[0..*]A group of operations that represents a significant step within a scenarioprocess[0..*]

XML Template

<ExampleScenario xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this example scenario, represented as a URI (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the example scenario --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the example scenario -->
 <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]>
 <name value="[string]"/><!-- 0..1 To be removed? -->
 <title value="[string]"/><!-- 0..1 Name for this example scenario (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the ExampleScenario -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for example scenario (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 The purpose of the example, e.g. to illustrate a scenario -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) -->
 <actor>  <!-- I 0..* Individual involved in exchange -->
  <key value="[string]"/><!-- 1..1 ID or acronym of the actor -->
  <type value="[code]"/><!-- 1..1 person | system -->
  <title value="[string]"/><!-- 1..1 Label for actor when rendering -->
  <description value="[markdown]"/><!-- 0..1 Details about actor -->
 </actor>
 <instance>  <!-- 0..* Data used in the scenario -->
  <key value="[string]"/><!-- 1..1 ID or acronym of the instance -->
  <structureType><!-- 1..1 Coding Data structure for example --></structureType>
  <structureVersion value="[string]"/><!-- I 0..1 E.g. 4.0.1 -->
  <structureProfile[x]><!-- 0..1 canonical|uri Rules instance adheres to --></structureProfile[x]>
  <title value="[string]"/><!-- 1..1 Label for instance -->
  <description value="[markdown]"/><!-- 0..1 Human-friendly description of the instance -->
  <content><!-- 0..1 Reference Example instance data --></content>
  <version>  <!-- 0..* Snapshot of instance that changes -->
   <key value="[string]"/><!-- 1..1 ID or acronym of the version -->
   <description value="[markdown]"/><!-- 0..1 Details about version -->
   <content><!-- 0..1 Reference Example instance version data --></content>
  </version>
  <containedInstance>  <!-- 0..* Resources contained in the instance -->
   <instanceReference value="[string]"/><!-- 1..1 Key of contained instance -->
   <versionReference value="[string]"/><!-- 0..1 Key of contained instance version -->
  </containedInstance>
 </instance>
 <process>  <!-- I 0..* Major process within scenario -->
  <title value="[string]"/><!-- 1..1 Label for procss -->
  <description value="[markdown]"/><!-- 0..1 Human-friendly description of the process -->
  <preConditions value="[markdown]"/><!-- 0..1 Status before process starts -->
  <postConditions value="[markdown]"/><!-- 0..1 Status after successful completion -->
  <step>  <!-- I 0..* Event within of the process -->
   <number value="[string]"/><!-- 0..1 Sequential number of the step -->
   <process><!-- 0..1 Content as for ExampleScenario.process Step is nested process --></process>
   <workflow><!-- 0..1 canonical(ExampleScenario) Step is nested workflow --></workflow>
   <operation>  <!-- 0..1 Step is simple action -->
    <type><!-- 0..1 Coding Kind of action --></type>
    <title value="[string]"/><!-- 1..1 Label for step -->
    <initiator value="[string]"/><!-- 0..1 Who starts the operation -->
    <receiver value="[string]"/><!-- 0..1 Who receives the operation -->
    <description value="[markdown]"/><!-- 0..1 Human-friendly description of the operation -->
    <initiatorActive value="[boolean]"/><!-- 0..1 Initiator stays active? -->
    <receiverActive value="[boolean]"/><!-- 0..1 Receiver stays active? -->
    <request><!-- 0..1 Content as for ExampleScenario.instance.containedInstance Instance transmitted on invocation --></request>
    <response><!-- 0..1 Content as for ExampleScenario.instance.containedInstance Instance transmitted on invocation response --></response>
   </operation>
   <alternative>  <!-- 0..* Alternate non-typical step action -->
    <title value="[string]"/><!-- 1..1 Label for alternative -->
    <description value="[markdown]"/><!-- 0..1 Human-readable description of option -->
    <step><!-- 0..* Content as for ExampleScenario.process.step Alternative action(s) --></step>
   </alternative>
   <pause value="[boolean]"/><!-- 0..1 Pause in the flow? -->
  </step>
 </process>
</ExampleScenario>

JSON Template

{doco
  "resourceType" : "ExampleScenario",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Canonical identifier for this example scenario, represented as a URI (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the example scenario
  "version" : "<string>", // Business version of the example scenario
  // versionAlgorithm[x]: How to compare versions. One of these 2:
  "versionAlgorithmString" : "<string>",
  "versionAlgorithmCoding" : { Coding },
  "name" : "<string>", // To be removed?
  "title" : "<string>", // Name for this example scenario (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date last changed
  "publisher" : "<string>", // Name of the publisher/steward (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the ExampleScenario
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for example scenario (if applicable)
  "purpose" : "<markdown>", // The purpose of the example, e.g. to illustrate a scenario
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "copyrightLabel" : "<string>", // Copyright holder and year(s)
  "actor" : [{ // I Individual involved in exchange
    "key" : "<string>", // R!  ID or acronym of the actor
    "type" : "<code>", // R!  person | system
    "title" : "<string>", // R!  Label for actor when rendering
    "description" : "<markdown>" // Details about actor
  }],
  "instance" : [{ // Data used in the scenario
    "key" : "<string>", // R!  ID or acronym of the instance
    "structureType" : { Coding }, // R!  Data structure for example
    "structureVersion" : "<string>", // I E.g. 4.0.1
    // structureProfile[x]: Rules instance adheres to. One of these 2:
    "structureProfileCanonical" : "<canonical>",
    "structureProfileUri" : "<uri>",
    "title" : "<string>", // R!  Label for instance
    "description" : "<markdown>", // Human-friendly description of the instance
    "content" : { Reference }, // Example instance data
    "version" : [{ // Snapshot of instance that changes
      "key" : "<string>", // R!  ID or acronym of the version
      "description" : "<markdown>", // Details about version
      "content" : { Reference } // Example instance version data
    }],
    "containedInstance" : [{ // Resources contained in the instance
      "instanceReference" : "<string>", // R!  Key of contained instance
      "versionReference" : "<string>" // Key of contained instance version
    }]
  }],
  "process" : [{ // I Major process within scenario
    "title" : "<string>", // R!  Label for procss
    "description" : "<markdown>", // Human-friendly description of the process
    "preConditions" : "<markdown>", // Status before process starts
    "postConditions" : "<markdown>", // Status after successful completion
    "step" : [{ // I Event within of the process
      "number" : "<string>", // Sequential number of the step
      "process" : { Content as for ExampleScenario.process }, // Step is nested process
      "workflow" : "<canonical(ExampleScenario)>", // Step is nested workflow
      "operation" : { // Step is simple action
        "type" : { Coding }, // Kind of action
        "title" : "<string>", // R!  Label for step
        "initiator" : "<string>", // Who starts the operation
        "receiver" : "<string>", // Who receives the operation
        "description" : "<markdown>", // Human-friendly description of the operation
        "initiatorActive" : <boolean>, // Initiator stays active?
        "receiverActive" : <boolean>, // Receiver stays active?
        "request" : { Content as for ExampleScenario.instance.containedInstance }, // Instance transmitted on invocation
        "response" : { Content as for ExampleScenario.instance.containedInstance } // Instance transmitted on invocation response
      },
      "alternative" : [{ // Alternate non-typical step action
        "title" : "<string>", // R!  Label for alternative
        "description" : "<markdown>", // Human-readable description of option
        "step" : [{ Content as for ExampleScenario.process.step }] // Alternative action(s)
      }],
      "pause" : <boolean> // Pause in the flow?
    }]
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:ExampleScenario;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:ExampleScenario.url [ uri ]; # 0..1 Canonical identifier for this example scenario, represented as a URI (globally unique)
  fhir:ExampleScenario.identifier [ Identifier ], ... ; # 0..* Additional identifier for the example scenario
  fhir:ExampleScenario.version [ string ]; # 0..1 Business version of the example scenario
  # ExampleScenario.versionAlgorithm[x] : 0..1 How to compare versions. One of these 2
    fhir:ExampleScenario.versionAlgorithmString [ string ]
    fhir:ExampleScenario.versionAlgorithmCoding [ Coding ]
  fhir:ExampleScenario.name [ string ]; # 0..1 To be removed?
  fhir:ExampleScenario.title [ string ]; # 0..1 Name for this example scenario (human friendly)
  fhir:ExampleScenario.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:ExampleScenario.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:ExampleScenario.date [ dateTime ]; # 0..1 Date last changed
  fhir:ExampleScenario.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual)
  fhir:ExampleScenario.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:ExampleScenario.description [ markdown ]; # 0..1 Natural language description of the ExampleScenario
  fhir:ExampleScenario.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:ExampleScenario.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for example scenario (if applicable)
  fhir:ExampleScenario.purpose [ markdown ]; # 0..1 The purpose of the example, e.g. to illustrate a scenario
  fhir:ExampleScenario.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:ExampleScenario.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s)
  fhir:ExampleScenario.actor [ # 0..* I Individual involved in exchange
    fhir:ExampleScenario.actor.key [ string ]; # 1..1 ID or acronym of the actor
    fhir:ExampleScenario.actor.type [ code ]; # 1..1 person | system
    fhir:ExampleScenario.actor.title [ string ]; # 1..1 Label for actor when rendering
    fhir:ExampleScenario.actor.description [ markdown ]; # 0..1 Details about actor
  ], ...;
  fhir:ExampleScenario.instance [ # 0..* Data used in the scenario
    fhir:ExampleScenario.instance.key [ string ]; # 1..1 ID or acronym of the instance
    fhir:ExampleScenario.instance.structureType [ Coding ]; # 1..1 Data structure for example
    fhir:ExampleScenario.instance.structureVersion [ string ]; # 0..1 I E.g. 4.0.1
    # ExampleScenario.instance.structureProfile[x] : 0..1 Rules instance adheres to. One of these 2
      fhir:ExampleScenario.instance.structureProfileCanonical [ canonical ]
      fhir:ExampleScenario.instance.structureProfileUri [ uri ]
    fhir:ExampleScenario.instance.title [ string ]; # 1..1 Label for instance
    fhir:ExampleScenario.instance.description [ markdown ]; # 0..1 Human-friendly description of the instance
    fhir:ExampleScenario.instance.content [ Reference ]; # 0..1 Example instance data
    fhir:ExampleScenario.instance.version [ # 0..* Snapshot of instance that changes
      fhir:ExampleScenario.instance.version.key [ string ]; # 1..1 ID or acronym of the version
      fhir:ExampleScenario.instance.version.description [ markdown ]; # 0..1 Details about version
      fhir:ExampleScenario.instance.version.content [ Reference ]; # 0..1 Example instance version data
    ], ...;
    fhir:ExampleScenario.instance.containedInstance [ # 0..* Resources contained in the instance
      fhir:ExampleScenario.instance.containedInstance.instanceReference [ string ]; # 1..1 Key of contained instance
      fhir:ExampleScenario.instance.containedInstance.versionReference [ string ]; # 0..1 Key of contained instance version
    ], ...;
  ], ...;
  fhir:ExampleScenario.process [ # 0..* I Major process within scenario
    fhir:ExampleScenario.process.title [ string ]; # 1..1 Label for procss
    fhir:ExampleScenario.process.description [ markdown ]; # 0..1 Human-friendly description of the process
    fhir:ExampleScenario.process.preConditions [ markdown ]; # 0..1 Status before process starts
    fhir:ExampleScenario.process.postConditions [ markdown ]; # 0..1 Status after successful completion
    fhir:ExampleScenario.process.step [ # 0..* I Event within of the process
      fhir:ExampleScenario.process.step.number [ string ]; # 0..1 Sequential number of the step
      fhir:ExampleScenario.process.step.process [ See ExampleScenario.process ]; # 0..1 Step is nested process
      fhir:ExampleScenario.process.step.workflow [ canonical(ExampleScenario) ]; # 0..1 Step is nested workflow
      fhir:ExampleScenario.process.step.operation [ # 0..1 Step is simple action
        fhir:ExampleScenario.process.step.operation.type [ Coding ]; # 0..1 Kind of action
        fhir:ExampleScenario.process.step.operation.title [ string ]; # 1..1 Label for step
        fhir:ExampleScenario.process.step.operation.initiator [ string ]; # 0..1 Who starts the operation
        fhir:ExampleScenario.process.step.operation.receiver [ string ]; # 0..1 Who receives the operation
        fhir:ExampleScenario.process.step.operation.description [ markdown ]; # 0..1 Human-friendly description of the operation
        fhir:ExampleScenario.process.step.operation.initiatorActive [ boolean ]; # 0..1 Initiator stays active?
        fhir:ExampleScenario.process.step.operation.receiverActive [ boolean ]; # 0..1 Receiver stays active?
        fhir:ExampleScenario.process.step.operation.request [ See ExampleScenario.instance.containedInstance ]; # 0..1 Instance transmitted on invocation
        fhir:ExampleScenario.process.step.operation.response [ See ExampleScenario.instance.containedInstance ]; # 0..1 Instance transmitted on invocation response
      ];
      fhir:ExampleScenario.process.step.alternative [ # 0..* Alternate non-typical step action
        fhir:ExampleScenario.process.step.alternative.title [ string ]; # 1..1 Label for alternative
        fhir:ExampleScenario.process.step.alternative.description [ markdown ]; # 0..1 Human-readable description of option
        fhir:ExampleScenario.process.step.alternative.step [ See ExampleScenario.process.step ], ... ; # 0..* Alternative action(s)
      ], ...;
      fhir:ExampleScenario.process.step.pause [ boolean ]; # 0..1 Pause in the flow?
    ], ...;
  ], ...;
]

Changes since R4

ExampleScenario
ExampleScenario.versionAlgorithm[x]
  • Added Element
ExampleScenario.title
  • Added Element
ExampleScenario.description
  • Added Element
ExampleScenario.copyrightLabel
  • Added Element
ExampleScenario.actor.key
  • Added Mandatory Element
ExampleScenario.actor.title
  • Added Mandatory Element
ExampleScenario.instance.key
  • Added Mandatory Element
ExampleScenario.instance.structureType
  • Added Mandatory Element
ExampleScenario.instance.structureVersion
  • Added Element
ExampleScenario.instance.structureProfile[x]
  • Added Element
ExampleScenario.instance.title
  • Added Mandatory Element
ExampleScenario.instance.content
  • Added Element
ExampleScenario.instance.version.key
  • Added Mandatory Element
ExampleScenario.instance.version.description
  • Min Cardinality changed from 1 to 0
  • Min Cardinality changed from 1 to 0
ExampleScenario.instance.version.content
  • Added Element
ExampleScenario.instance.containedInstance.instanceReference
  • Added Mandatory Element
ExampleScenario.instance.containedInstance.versionReference
  • Added Element
ExampleScenario.process.step.number
  • Added Element
ExampleScenario.process.step.process
  • Max Cardinality changed from * to 1
  • Max Cardinality changed from * to 1
ExampleScenario.process.step.workflow
  • Added Element
ExampleScenario.process.step.operation.type
  • Type changed from string to Coding
  • Add Binding http://hl7.org/fhir/ValueSet/testscript-operation-codes (extensible)
  • Add Binding http://hl7.org/fhir/ValueSet/testscript-operation-codes (extensible)
ExampleScenario.process.step.operation.title
  • Added Mandatory Element
ExampleScenario.actor.actorId
  • deleted
ExampleScenario.actor.name
  • deleted
ExampleScenario.instance.resourceId
  • deleted
ExampleScenario.instance.resourceType
  • deleted
ExampleScenario.instance.name
  • deleted
ExampleScenario.instance.version.versionId
  • deleted
ExampleScenario.instance.containedInstance.resourceId
  • deleted
ExampleScenario.instance.containedInstance.versionId
  • deleted
ExampleScenario.process.step.operation.number
  • deleted
ExampleScenario.process.step.operation.name
  • deleted
ExampleScenario.workflow
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ExampleScenario TUDomainResourceExample of workflow instance
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
+ Rule: Must have actors if status is active or required
+ Rule: Must have processes if status is active or required
+ Rule: Actor keys must be unique
+ Rule: Actor titles must be unique
+ Rule: Instance keys must be unique
+ Rule: Instance titles must be unique
+ Rule: Process titles must be unique

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
Interfaces Implemented: CanonicalResource
... url ΣC0..1uriCanonical identifier for this example scenario, represented as a URI (globally unique)
+ Warning: URL should not contain | or # - these characters make processing canonical references problematic
... identifier Σ0..*IdentifierAdditional identifier for the example scenario

... version Σ0..1stringBusiness version of the example scenario
.... versionAlgorithmStringstring
.... versionAlgorithmCodingCoding
... name Σ0..1stringTo be removed?
... title Σ0..1stringName for this example scenario (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher/steward (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher

... description Σ0..1markdownNatural language description of the ExampleScenario
... useContext Σ0..*UsageContextThe context that the content is intended to support

... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for example scenario (if applicable)
Jurisdiction (Extensible)

... purpose 0..1markdownThe purpose of the example, e.g. to illustrate a scenario
... copyright 0..1markdownUse and/or publishing restrictions
... copyrightLabel 0..1stringCopyright holder and year(s)
... actor C0..*BackboneElementIndividual involved in exchange
+ Warning: Actor should be referenced in at least one operation
+ Rule: actor.key canot be 'OTHER'

.... key 1..1stringID or acronym of the actor
.... type 1..1codeperson | system
ExampleScenarioActorType (Required)
.... title 1..1stringLabel for actor when rendering
.... description 0..1markdownDetails about actor
... instance C0..*BackboneElementData used in the scenario
+ Rule: StructureVersion is required if structureType is not FHIR (but may still be present even if FHIR)
+ Rule: instance.content is only allowed if there are no instance.versions
+ Rule: Version keys must be unique within an instance
+ Rule: Version titles must be unique within an instance
+ Warning: Instance should be referenced in at least one location
+ Warning: Instance version should be referenced in at least one operation

.... key 1..1stringID or acronym of the instance
.... structureType 1..1CodingData structure for example
Example Scenario Resource Type (Extensible)
.... structureVersion C0..1stringE.g. 4.0.1
.... structureProfile[x] 0..1Rules instance adheres to
..... structureProfileCanonicalcanonical()
..... structureProfileUriuri
.... title 1..1stringLabel for instance
.... description 0..1markdownHuman-friendly description of the instance
.... content 0..1Reference()Example instance data
.... version 0..*BackboneElementSnapshot of instance that changes

..... key 1..1stringID or acronym of the version
..... description 0..1markdownDetails about version
..... content 0..1Reference()Example instance version data
.... containedInstance C0..*BackboneElementResources contained in the instance
+ Rule: InstanceReference must be a key of an instance defined in the ExampleScenario
+ Rule: versionReference must be specified if the referenced instance defines versions
+ Rule: versionReference must be a key of a version within the instance pointed to by instanceReference

..... instanceReference 1..1stringKey of contained instance
..... versionReference 0..1stringKey of contained instance version
... process C0..*BackboneElementMajor process within scenario
+ Rule: Processes must have steps if ExampleScenario status is active or required

.... title Σ1..1stringLabel for procss
.... description 0..1markdownHuman-friendly description of the process
.... preConditions 0..1markdownStatus before process starts
.... postConditions 0..1markdownStatus after successful completion
.... step C0..*BackboneElementEvent within of the process
+ Rule: Alternative titles must be unique within a step
+ Rule: Can have a process, a workflow, one or more operations or none of these, but cannot have a combination

..... number 0..1stringSequential number of the step
..... process 0..1see processStep is nested process
..... workflow 0..1canonical(ExampleScenario)Step is nested workflow
..... operation C0..1BackboneElementStep is simple action
+ Rule: If specified, initiator must be a key of an actor within the ExampleScenario
+ Rule: If specified, receiver must be a key of an actor within the ExampleScenario
...... type 0..1CodingKind of action
TestScriptOperationCode (Extensible)
...... title 1..1stringLabel for step
...... initiator 0..1stringWho starts the operation
...... receiver 0..1stringWho receives the operation
...... description 0..1markdownHuman-friendly description of the operation
...... initiatorActive 0..1booleanInitiator stays active?
...... receiverActive 0..1booleanReceiver stays active?
...... request 0..1see containedInstanceInstance transmitted on invocation
...... response 0..1see containedInstanceInstance transmitted on invocation response
..... alternative 0..*BackboneElementAlternate non-typical step action

...... title 1..1stringLabel for alternative
...... description 0..1markdownHuman-readable description of option
...... step 0..*see stepAlternative action(s)

..... pause 0..1booleanPause in the flow?

doco Documentation for this format

See the Extensions for this resource

UML Diagram (Legend)

ExampleScenario (DomainResource) +CanonicalResourceAn absolute URI that is used to identify this example scenario when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this example scenario is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the example scenario is stored on different serversurl : uri [0..1]A formal identifier that is used to identify this example scenario when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the example scenario when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the example scenario author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]Indicates the mechanism used to compare versions to determine which is more currentversionAlgorithm[x] : DataType [0..1] « string|Coding; null (Strength=Extensible) VersionAlgorithm+ »Temporarily retained for tooling purposesname : string [0..1]A short, descriptive, user-friendly title for the ExampleScenariotitle : string [0..1]The status of this example scenario. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « null (Strength=Required)PublicationStatus! »A Boolean value to indicate that this example scenario is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usageexperimental : boolean [0..1]The date (and optionally time) when the example scenario was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the example scenario changes. (e.g. the 'content logical definition')date : dateTime [0..1]The name of the organization or individual responsible for the release and ongoing maintenance of the example scenariopublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the ExampleScenario from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate example scenario instancesuseContext : UsageContext [0..*]A legal or geographic region in which the example scenario is intended to be usedjurisdiction : CodeableConcept [0..*] « null (Strength=Extensible)Jurisdiction ValueSet+ »What the example scenario resource is created for. This should not be used to show the business purpose of the scenario itself, but the purpose of documenting a scenariopurpose : markdown [0..1]A copyright statement relating to the example scenario and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the example scenariocopyright : markdown [0..1]A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')copyrightLabel : string [0..1]ActorA unique string within the scenario that is used to reference the actorkey : string [1..1]The category of actor - person or systemtype : code [1..1] « null (Strength=Required)ExampleScenarioActorType! »The human-readable name for the actor used when rendering the scenariotitle : string [1..1]An explanation of who/what the actor is and its role in the scenariodescription : markdown [0..1]InstanceA unique string within the scenario that is used to reference the instancekey : string [1..1]A code indicating the kind of data structure (FHIR resource or some other standard) this is an instance ofstructureType : Coding [1..1] « null (Strength=Extensible)ExampleScenarioResourceType+ »Conveys the version of the data structure instantiated. I.e. what release of FHIR, X12, OpenEHR, etc. is instance compliant withstructureVersion : string [0..1] « This element has or is affected by some invariantsC »Refers to a profile, template or other ruleset the instance adheres tostructureProfile[x] : PrimitiveType [0..1] « canonical|uri »A short descriptive label the instance to be used in tables or diagramstitle : string [1..1]An explanation of what the instance contains and what it's fordescription : markdown [0..1]Points to an instance (typically an example) that shows the data that would corespond to this instancecontent : Reference [0..1] « »VersionA unique string within the instance that is used to reference the version of the instancekey : string [1..1]An explanation of what this specific version of the instance contains and representsdescription : markdown [0..1]Points to an instance (typically an example) that shows the data that would flow at this point in the scenariocontent : Reference [0..1] « »ContainedInstanceA reference to the key of an instance found within this oneinstanceReference : string [1..1]A reference to the key of a specific version of an instance in this instanceversionReference : string [0..1]ProcessA short descriptive label the process to be used in tables or diagramstitle : string [1..1]An explanation of what the process represents and what it doesdescription : markdown [0..1]Description of the initial state of the actors, environment and data before the process startspreConditions : markdown [0..1]Description of the final state of the actors, environment and data after the process has been successfully completedpostConditions : markdown [0..1]StepThe sequential number of the step, e.g. 1.2.5number : string [0..1]Indicates that the step is defined by a seaparate scenario instanceworkflow : canonical [0..1] « ExampleScenario »If true, indicates that, following this step, there is a pause in the flow and the subsequent step will occur at some later time (triggered by some event)pause : boolean [0..1]OperationThe standardized type of action (FHIR or otherwise)type : Coding [0..1] « null (Strength=Extensible)TestScriptOperationCode+ »A short descriptive label the step to be used in tables or diagramstitle : string [1..1]The system that invokes the action/transmits the datainitiator : string [0..1]The system on which the action is invoked/receives the datareceiver : string [0..1]An explanation of what the operation represents and what it doesdescription : markdown [0..1]If false, the initiator is deactivated right after the operationinitiatorActive : boolean [0..1]If false, the receiver is deactivated right after the operationreceiverActive : boolean [0..1]AlternativeThe label to display for the alternative that gives a sense of the circumstance in which the alternative should be invokedtitle : string [1..1]A human-readable description of the alternative explaining when the alternative should occur rather than the base stepdescription : markdown [0..1]A system or person who shares or receives an instance within the scenarioactor[0..*]Represents the instance as it was at a specific time-pointversion[0..*]References to other instances that can be found within this instance (e.g. the observations contained in a bundle)containedInstance[0..*]A single data collection that is shared as part of the scenarioinstance[0..*]Indicates that the step is a complex sub-process with its own stepsprocess[0..1]A reference to the instance that is transmitted from requester to receiver as part of the invocation of the operationrequest[0..1]A reference to the instance that is transmitted from receiver to requester as part of the operation's synchronous response (if any)response[0..1]The step represents a single operation invoked on receiver by senderoperation[0..1]Indicates the operation, sub-process or scenario that happens if the alternative option is selectedstep[0..*]Indicates an alternative step that can be taken instead of the sub-process, scenario or operation. E.g. to represent non-happy-path/exceptional/atypical circumstancesalternative[0..*]A significant action that occurs as part of the processstep[0..*]A group of operations that represents a significant step within a scenarioprocess[0..*]

XML Template

<ExampleScenario xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this example scenario, represented as a URI (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the example scenario --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the example scenario -->
 <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]>
 <name value="[string]"/><!-- 0..1 To be removed? -->
 <title value="[string]"/><!-- 0..1 Name for this example scenario (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the ExampleScenario -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for example scenario (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 The purpose of the example, e.g. to illustrate a scenario -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) -->
 <actor>  <!-- I 0..* Individual involved in exchange -->
  <key value="[string]"/><!-- 1..1 ID or acronym of the actor -->
  <type value="[code]"/><!-- 1..1 person | system -->
  <title value="[string]"/><!-- 1..1 Label for actor when rendering -->
  <description value="[markdown]"/><!-- 0..1 Details about actor -->
 </actor>
 <instance>  <!-- 0..* Data used in the scenario -->
  <key value="[string]"/><!-- 1..1 ID or acronym of the instance -->
  <structureType><!-- 1..1 Coding Data structure for example --></structureType>
  <structureVersion value="[string]"/><!-- I 0..1 E.g. 4.0.1 -->
  <structureProfile[x]><!-- 0..1 canonical|uri Rules instance adheres to --></structureProfile[x]>
  <title value="[string]"/><!-- 1..1 Label for instance -->
  <description value="[markdown]"/><!-- 0..1 Human-friendly description of the instance -->
  <content><!-- 0..1 Reference Example instance data --></content>
  <version>  <!-- 0..* Snapshot of instance that changes -->
   <key value="[string]"/><!-- 1..1 ID or acronym of the version -->
   <description value="[markdown]"/><!-- 0..1 Details about version -->
   <content><!-- 0..1 Reference Example instance version data --></content>
  </version>
  <containedInstance>  <!-- 0..* Resources contained in the instance -->
   <instanceReference value="[string]"/><!-- 1..1 Key of contained instance -->
   <versionReference value="[string]"/><!-- 0..1 Key of contained instance version -->
  </containedInstance>
 </instance>
 <process>  <!-- I 0..* Major process within scenario -->
  <title value="[string]"/><!-- 1..1 Label for procss -->
  <description value="[markdown]"/><!-- 0..1 Human-friendly description of the process -->
  <preConditions value="[markdown]"/><!-- 0..1 Status before process starts -->
  <postConditions value="[markdown]"/><!-- 0..1 Status after successful completion -->
  <step>  <!-- I 0..* Event within of the process -->
   <number value="[string]"/><!-- 0..1 Sequential number of the step -->
   <process><!-- 0..1 Content as for ExampleScenario.process Step is nested process --></process>
   <workflow><!-- 0..1 canonical(ExampleScenario) Step is nested workflow --></workflow>
   <operation>  <!-- 0..1 Step is simple action -->
    <type><!-- 0..1 Coding Kind of action --></type>
    <title value="[string]"/><!-- 1..1 Label for step -->
    <initiator value="[string]"/><!-- 0..1 Who starts the operation -->
    <receiver value="[string]"/><!-- 0..1 Who receives the operation -->
    <description value="[markdown]"/><!-- 0..1 Human-friendly description of the operation -->
    <initiatorActive value="[boolean]"/><!-- 0..1 Initiator stays active? -->
    <receiverActive value="[boolean]"/><!-- 0..1 Receiver stays active? -->
    <request><!-- 0..1 Content as for ExampleScenario.instance.containedInstance Instance transmitted on invocation --></request>
    <response><!-- 0..1 Content as for ExampleScenario.instance.containedInstance Instance transmitted on invocation response --></response>
   </operation>
   <alternative>  <!-- 0..* Alternate non-typical step action -->
    <title value="[string]"/><!-- 1..1 Label for alternative -->
    <description value="[markdown]"/><!-- 0..1 Human-readable description of option -->
    <step><!-- 0..* Content as for ExampleScenario.process.step Alternative action(s) --></step>
   </alternative>
   <pause value="[boolean]"/><!-- 0..1 Pause in the flow? -->
  </step>
 </process>
</ExampleScenario>

JSON Template

{doco
  "resourceType" : "ExampleScenario",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Canonical identifier for this example scenario, represented as a URI (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the example scenario
  "version" : "<string>", // Business version of the example scenario
  // versionAlgorithm[x]: How to compare versions. One of these 2:
  "versionAlgorithmString" : "<string>",
  "versionAlgorithmCoding" : { Coding },
  "name" : "<string>", // To be removed?
  "title" : "<string>", // Name for this example scenario (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date last changed
  "publisher" : "<string>", // Name of the publisher/steward (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the ExampleScenario
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for example scenario (if applicable)
  "purpose" : "<markdown>", // The purpose of the example, e.g. to illustrate a scenario
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "copyrightLabel" : "<string>", // Copyright holder and year(s)
  "actor" : [{ // I Individual involved in exchange
    "key" : "<string>", // R!  ID or acronym of the actor
    "type" : "<code>", // R!  person | system
    "title" : "<string>", // R!  Label for actor when rendering
    "description" : "<markdown>" // Details about actor
  }],
  "instance" : [{ // Data used in the scenario
    "key" : "<string>", // R!  ID or acronym of the instance
    "structureType" : { Coding }, // R!  Data structure for example
    "structureVersion" : "<string>", // I E.g. 4.0.1
    // structureProfile[x]: Rules instance adheres to. One of these 2:
    "structureProfileCanonical" : "<canonical>",
    "structureProfileUri" : "<uri>",
    "title" : "<string>", // R!  Label for instance
    "description" : "<markdown>", // Human-friendly description of the instance
    "content" : { Reference }, // Example instance data
    "version" : [{ // Snapshot of instance that changes
      "key" : "<string>", // R!  ID or acronym of the version
      "description" : "<markdown>", // Details about version
      "content" : { Reference } // Example instance version data
    }],
    "containedInstance" : [{ // Resources contained in the instance
      "instanceReference" : "<string>", // R!  Key of contained instance
      "versionReference" : "<string>" // Key of contained instance version
    }]
  }],
  "process" : [{ // I Major process within scenario
    "title" : "<string>", // R!  Label for procss
    "description" : "<markdown>", // Human-friendly description of the process
    "preConditions" : "<markdown>", // Status before process starts
    "postConditions" : "<markdown>", // Status after successful completion
    "step" : [{ // I Event within of the process
      "number" : "<string>", // Sequential number of the step
      "process" : { Content as for ExampleScenario.process }, // Step is nested process
      "workflow" : "<canonical(ExampleScenario)>", // Step is nested workflow
      "operation" : { // Step is simple action
        "type" : { Coding }, // Kind of action
        "title" : "<string>", // R!  Label for step
        "initiator" : "<string>", // Who starts the operation
        "receiver" : "<string>", // Who receives the operation
        "description" : "<markdown>", // Human-friendly description of the operation
        "initiatorActive" : <boolean>, // Initiator stays active?
        "receiverActive" : <boolean>, // Receiver stays active?
        "request" : { Content as for ExampleScenario.instance.containedInstance }, // Instance transmitted on invocation
        "response" : { Content as for ExampleScenario.instance.containedInstance } // Instance transmitted on invocation response
      },
      "alternative" : [{ // Alternate non-typical step action
        "title" : "<string>", // R!  Label for alternative
        "description" : "<markdown>", // Human-readable description of option
        "step" : [{ Content as for ExampleScenario.process.step }] // Alternative action(s)
      }],
      "pause" : <boolean> // Pause in the flow?
    }]
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:ExampleScenario;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:ExampleScenario.url [ uri ]; # 0..1 Canonical identifier for this example scenario, represented as a URI (globally unique)
  fhir:ExampleScenario.identifier [ Identifier ], ... ; # 0..* Additional identifier for the example scenario
  fhir:ExampleScenario.version [ string ]; # 0..1 Business version of the example scenario
  # ExampleScenario.versionAlgorithm[x] : 0..1 How to compare versions. One of these 2
    fhir:ExampleScenario.versionAlgorithmString [ string ]
    fhir:ExampleScenario.versionAlgorithmCoding [ Coding ]
  fhir:ExampleScenario.name [ string ]; # 0..1 To be removed?
  fhir:ExampleScenario.title [ string ]; # 0..1 Name for this example scenario (human friendly)
  fhir:ExampleScenario.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:ExampleScenario.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:ExampleScenario.date [ dateTime ]; # 0..1 Date last changed
  fhir:ExampleScenario.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual)
  fhir:ExampleScenario.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:ExampleScenario.description [ markdown ]; # 0..1 Natural language description of the ExampleScenario
  fhir:ExampleScenario.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:ExampleScenario.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for example scenario (if applicable)
  fhir:ExampleScenario.purpose [ markdown ]; # 0..1 The purpose of the example, e.g. to illustrate a scenario
  fhir:ExampleScenario.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:ExampleScenario.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s)
  fhir:ExampleScenario.actor [ # 0..* I Individual involved in exchange
    fhir:ExampleScenario.actor.key [ string ]; # 1..1 ID or acronym of the actor
    fhir:ExampleScenario.actor.type [ code ]; # 1..1 person | system
    fhir:ExampleScenario.actor.title [ string ]; # 1..1 Label for actor when rendering
    fhir:ExampleScenario.actor.description [ markdown ]; # 0..1 Details about actor
  ], ...;
  fhir:ExampleScenario.instance [ # 0..* Data used in the scenario
    fhir:ExampleScenario.instance.key [ string ]; # 1..1 ID or acronym of the instance
    fhir:ExampleScenario.instance.structureType [ Coding ]; # 1..1 Data structure for example
    fhir:ExampleScenario.instance.structureVersion [ string ]; # 0..1 I E.g. 4.0.1
    # ExampleScenario.instance.structureProfile[x] : 0..1 Rules instance adheres to. One of these 2
      fhir:ExampleScenario.instance.structureProfileCanonical [ canonical ]
      fhir:ExampleScenario.instance.structureProfileUri [ uri ]
    fhir:ExampleScenario.instance.title [ string ]; # 1..1 Label for instance
    fhir:ExampleScenario.instance.description [ markdown ]; # 0..1 Human-friendly description of the instance
    fhir:ExampleScenario.instance.content [ Reference ]; # 0..1 Example instance data
    fhir:ExampleScenario.instance.version [ # 0..* Snapshot of instance that changes
      fhir:ExampleScenario.instance.version.key [ string ]; # 1..1 ID or acronym of the version
      fhir:ExampleScenario.instance.version.description [ markdown ]; # 0..1 Details about version
      fhir:ExampleScenario.instance.version.content [ Reference ]; # 0..1 Example instance version data
    ], ...;
    fhir:ExampleScenario.instance.containedInstance [ # 0..* Resources contained in the instance
      fhir:ExampleScenario.instance.containedInstance.instanceReference [ string ]; # 1..1 Key of contained instance
      fhir:ExampleScenario.instance.containedInstance.versionReference [ string ]; # 0..1 Key of contained instance version
    ], ...;
  ], ...;
  fhir:ExampleScenario.process [ # 0..* I Major process within scenario
    fhir:ExampleScenario.process.title [ string ]; # 1..1 Label for procss
    fhir:ExampleScenario.process.description [ markdown ]; # 0..1 Human-friendly description of the process
    fhir:ExampleScenario.process.preConditions [ markdown ]; # 0..1 Status before process starts
    fhir:ExampleScenario.process.postConditions [ markdown ]; # 0..1 Status after successful completion
    fhir:ExampleScenario.process.step [ # 0..* I Event within of the process
      fhir:ExampleScenario.process.step.number [ string ]; # 0..1 Sequential number of the step
      fhir:ExampleScenario.process.step.process [ See ExampleScenario.process ]; # 0..1 Step is nested process
      fhir:ExampleScenario.process.step.workflow [ canonical(ExampleScenario) ]; # 0..1 Step is nested workflow
      fhir:ExampleScenario.process.step.operation [ # 0..1 Step is simple action
        fhir:ExampleScenario.process.step.operation.type [ Coding ]; # 0..1 Kind of action
        fhir:ExampleScenario.process.step.operation.title [ string ]; # 1..1 Label for step
        fhir:ExampleScenario.process.step.operation.initiator [ string ]; # 0..1 Who starts the operation
        fhir:ExampleScenario.process.step.operation.receiver [ string ]; # 0..1 Who receives the operation
        fhir:ExampleScenario.process.step.operation.description [ markdown ]; # 0..1 Human-friendly description of the operation
        fhir:ExampleScenario.process.step.operation.initiatorActive [ boolean ]; # 0..1 Initiator stays active?
        fhir:ExampleScenario.process.step.operation.receiverActive [ boolean ]; # 0..1 Receiver stays active?
        fhir:ExampleScenario.process.step.operation.request [ See ExampleScenario.instance.containedInstance ]; # 0..1 Instance transmitted on invocation
        fhir:ExampleScenario.process.step.operation.response [ See ExampleScenario.instance.containedInstance ]; # 0..1 Instance transmitted on invocation response
      ];
      fhir:ExampleScenario.process.step.alternative [ # 0..* Alternate non-typical step action
        fhir:ExampleScenario.process.step.alternative.title [ string ]; # 1..1 Label for alternative
        fhir:ExampleScenario.process.step.alternative.description [ markdown ]; # 0..1 Human-readable description of option
        fhir:ExampleScenario.process.step.alternative.step [ See ExampleScenario.process.step ], ... ; # 0..* Alternative action(s)
      ], ...;
      fhir:ExampleScenario.process.step.pause [ boolean ]; # 0..1 Pause in the flow?
    ], ...;
  ], ...;
]

Changes since Release 4

ExampleScenario
ExampleScenario.versionAlgorithm[x]
  • Added Element
ExampleScenario.title
  • Added Element
ExampleScenario.description
  • Added Element
ExampleScenario.copyrightLabel
  • Added Element
ExampleScenario.actor.key
  • Added Mandatory Element
ExampleScenario.actor.title
  • Added Mandatory Element
ExampleScenario.instance.key
  • Added Mandatory Element
ExampleScenario.instance.structureType
  • Added Mandatory Element
ExampleScenario.instance.structureVersion
  • Added Element
ExampleScenario.instance.structureProfile[x]
  • Added Element
ExampleScenario.instance.title
  • Added Mandatory Element
ExampleScenario.instance.content
  • Added Element
ExampleScenario.instance.version.key
  • Added Mandatory Element
ExampleScenario.instance.version.description
  • Min Cardinality changed from 1 to 0
  • Min Cardinality changed from 1 to 0
ExampleScenario.instance.version.content
  • Added Element
ExampleScenario.instance.containedInstance.instanceReference
  • Added Mandatory Element
ExampleScenario.instance.containedInstance.versionReference
  • Added Element
ExampleScenario.process.step.number
  • Added Element
ExampleScenario.process.step.process
  • Max Cardinality changed from * to 1
  • Max Cardinality changed from * to 1
ExampleScenario.process.step.workflow
  • Added Element
ExampleScenario.process.step.operation.type
  • Type changed from string to Coding
  • Add Binding http://hl7.org/fhir/ValueSet/testscript-operation-codes (extensible)
  • Add Binding http://hl7.org/fhir/ValueSet/testscript-operation-codes (extensible)
ExampleScenario.process.step.operation.title
  • Added Mandatory Element
ExampleScenario.actor.actorId
  • deleted
ExampleScenario.actor.name
  • deleted
ExampleScenario.instance.resourceId
  • deleted
ExampleScenario.instance.resourceType
  • deleted
ExampleScenario.instance.name
  • deleted
ExampleScenario.instance.version.versionId
  • deleted
ExampleScenario.instance.containedInstance.resourceId
  • deleted
ExampleScenario.instance.containedInstance.versionId
  • deleted
ExampleScenario.process.step.operation.number
  • deleted
ExampleScenario.process.step.operation.name
  • deleted
ExampleScenario.workflow
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

 

Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis

PathDefinitionTypeReference
ExampleScenario.versionAlgorithm[x]

Indicates the mechanism used to compare versions to determine which is more current.

ExtensibleVersionAlgorithm
ExampleScenario.status

The lifecycle status of an artifact.

RequiredPublicationStatus
ExampleScenario.jurisdiction

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 while the codes for "supra-national" regions are from UN Standard country or area codes for statistical use (M49) .

ExtensibleJurisdiction ValueSet
ExampleScenario.actor.type

The type of actor - system or human.

RequiredExampleScenarioActorType
ExampleScenario.instance.structureType

Types of resource structures that can be passed in or out of exchange operations. Not necessarily FHIR.

ExtensibleExampleScenarioResourceType
ExampleScenario.process.step.operation.type

This value set defines a set of codes that are used to indicate the supported operations of a testing engine or tool.

ExtensibleTestScriptOperationCode

UniqueKeyLevelLocationDescriptionExpression
 cnl-0Warning (base)Name should be usable as an identifier for the module by machine processing applications such as code generationname.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){1,254}')
 exs-1Rule ExampleScenario.instanceStructureVersion 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()
 cnl-1Warning ExampleScenario.urlURL should not contain | or # - these characters make processing canonical references problematicurl.matches('([^|#])*')
 exs-2Rule ExampleScenario.instanceinstance.content is only allowed if there are no instance.versionsinstance.content.exists() implies instance.version.empty()
 exs-3Rule (base)Must have actors if status is active or requiredstatus='active' or status='retired' implies actor.exists()
 exs-4Rule (base)Must have processes if status is active or requiredstatus='active' or status='retired' implies process.exists()
 exs-5Rule ExampleScenario.processProcesses must have steps if ExampleScenario status is active or required%resource.status='active' or %resource.status='retired' implies step.exists()
 exs-6Rule (base)Actor keys must be uniqueactor.key.count() = actor.key.distinct().count()
 exs-7Rule (base)Actor titles must be uniqueactor.title.count() = actor.title.distinct().count()
 exs-8Rule (base)Instance keys must be uniqueinstance.key.count() = instance.key.distinct().count()
 exs-9Rule (base)Instance titles must be uniqueinstance.title.count() = instance.title.distinct().count()
 exs-10Rule ExampleScenario.instanceVersion keys must be unique within an instanceversion.key.count() = version.key.distinct().count()
 exs-11Rule ExampleScenario.instanceVersion titles must be unique within an instanceversion.title.count() = version.title.distinct().count()
 exs-12Rule (base)Process titles must be uniqueprocess.title.count() = process.title.distinct().count()
 exs-13Rule ExampleScenario.process.stepAlternative titles must be unique within a stepalternative.title.count() = alternative.title.distinct().count()
 exs-14Rule ExampleScenario.instance.containedInstanceInstanceReference must be a key of an instance defined in the ExampleScenario%resource.instance.where(key=%context.instanceReference).exists()
 exs-15Rule ExampleScenario.instance.containedInstanceversionReference must be specified if the referenced instance defines versionsversionReference.empty() implies %resource.instance.where(key=%context.instanceReference).version.empty()
 exs-16Rule ExampleScenario.instance.containedInstanceversionReference must be a key of a version within the instance pointed to by instanceReferenceversionReference.exists() implies %resource.instance.where(key=%context.instanceReference).version.where(key=%context.versionReference).exists()
 exs-17Rule ExampleScenario.process.step.operationIf specified, initiator must be a key of an actor within the ExampleScenarioinitiator.exists() implies initator = 'OTHER' or %resource.actor.where(key=%context.initiator).exists()
 exs-18Rule ExampleScenario.process.step.operationIf specified, receiver must be a key of an actor within the ExampleScenarioreceiver.exists() implies receiver = 'OTHER' or %resource.actor.where(key=%context.receiver).exists()
 exs-19Warning ExampleScenario.actorActor should be referenced in at least one operation%resource.process.descendants().select(operation).where(initiator=%context.key or receiver=%context.key).exists()
 exs-20Warning ExampleScenario.instanceInstance should be referenced in at least one location%resource.process.descendants().select(instanceReference).where($this=%context.key).exists()
 exs-21Warning ExampleScenario.instanceInstance version should be referenced in at least one operationversion.exists() implies version.key.intersect(%resource.process.descendants().where(instanceReference = %context.key).versionReference).exists()
 exs-22Rule ExampleScenario.process.stepCan 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())
 exs-23Rule ExampleScenario.actoractor.key canot be 'OTHER'key != 'OTHER'

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
contexttokenA use context assigned to the example scenario(ExampleScenario.useContext.value as CodeableConcept)
context-quantityquantityA quantity- or range-valued use context assigned to the example scenario(ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range)
context-typetokenA type of use context assigned to the example scenarioExampleScenario.useContext.code
context-type-quantitycompositeA use context type and quantity- or range-based value assigned to the example scenarioOn ExampleScenario.useContext:
  context-type: code
  context-quantity: value.ofType(Quantity) | value.ofType(Range)
context-type-valuecompositeA use context type and value assigned to the example scenarioOn ExampleScenario.useContext:
  context-type: code
  context: value.ofType(CodeableConcept)
date NdateThe example scenario publication dateExampleScenario.date
identifiertokenExternal identifier for the example scenarioExampleScenario.identifier
jurisdictiontokenIntended jurisdiction for the example scenarioExampleScenario.jurisdiction
name NstringComputationally friendly name of the example scenarioExampleScenario.name
publisher NstringName of the publisher of the example scenarioExampleScenario.publisher
status NtokenThe current status of the example scenarioExampleScenario.status
url NuriThe uri that identifies the example scenarioExampleScenario.url
version NtokenThe business version of the example scenarioExampleScenario.version