R6 Ballot (2nd Draft)

Publish-box (todo)

Examplescenario.shex

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for examplescenario

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

IMPORT <uri.shex>
IMPORT <code.shex>
IMPORT <string.shex>
IMPORT <Coding.shex>
IMPORT <boolean.shex>
IMPORT <dateTime.shex>
IMPORT <markdown.shex>
IMPORT <canonical.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <UsageContext.shex>
IMPORT <ContactDetail.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>


start=@<ExampleScenario> AND {fhir:nodeRole [fhir:treeRoot]}

# Example of workflow instance
<ExampleScenario> EXTENDS @<DomainResource> CLOSED {   

    a [fhir:ExampleScenario]?;
    fhir:nodeRole [fhir:treeRoot]?;

    fhir:url @<uri>?;                       # Canonical identifier for this 
                                            # example scenario, represented as a 
                                            # URI (globally unique) 
    fhir:identifier @<OneOrMore_Identifier>?;  # Additional identifier for the 
                                            # example scenario 
    fhir:version @<string>?;                # Business version of the example 
                                            # scenario 
    fhir:versionAlgorithm @<string>  OR 
    			@<Coding>  ?;  # How to compare versions
    fhir:name @<string>?;                   # To be removed?
    fhir:title @<string>?;                  # Name for this example scenario 
                                            # (human friendly) 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:publication-status};  # draft | active | retired | unknown
    fhir:experimental @<boolean>?;          # For testing purposes, not real 
                                            # usage 
    fhir:date @<dateTime>?;                 # Date last changed
    fhir:publisher @<string>?;              # Name of the publisher/steward 
                                            # (organization or individual) 
    fhir:contact @<OneOrMore_ContactDetail>?;  # Contact details for the publisher
    fhir:description @<markdown>?;          # Natural language description of 
                                            # the ExampleScenario 
    fhir:useContext @<OneOrMore_UsageContext>?;  # The context that the content is 
                                            # intended to support 
    fhir:jurisdiction @<OneOrMore_CodeableConcept>?;  # Intended jurisdiction for example 
                                            # scenario (if applicable) 
    fhir:purpose @<markdown>?;              # The purpose of the example, e.g. 
                                            # to illustrate a scenario 
    fhir:copyright @<markdown>?;            # Use and/or publishing restrictions
    fhir:copyrightLabel @<string>?;         # Copyright holder and year(s)
    fhir:actor @<OneOrMore_ExampleScenario.actor>?;  # Individual involved in exchange
    fhir:instance @<OneOrMore_ExampleScenario.instance>?;  # Data used in the scenario
    fhir:process @<OneOrMore_ExampleScenario.process>?;  # Major process within scenario
}  

# Data used in the scenario
<ExampleScenario.instance> EXTENDS @<BackboneElement> CLOSED {   
    fhir:key @<string>;                     # ID or acronym of the instance
    fhir:structureType @<Coding>;           # Data structure for example
    fhir:structureVersion @<string>?;       # E.g. 4.0.1
    fhir:structureProfile @<canonical>  OR 
    			@<uri>  ?;  # Rules instance adheres to
    fhir:title @<string>;                   # Label for instance
    fhir:description @<markdown>?;          # Human-friendly description of the 
                                            # instance 
    fhir:content @<Reference>?;             # Example instance data
    fhir:version @<OneOrMore_ExampleScenario.instance.version>?;  # Snapshot of instance that changes
    fhir:containedInstance @<OneOrMore_ExampleScenario.instance.containedInstance>?;  # Resources contained in the instance
}  

# Individual involved in exchange
<ExampleScenario.actor> EXTENDS @<BackboneElement> CLOSED {   
    fhir:key @<string>;                     # ID or acronym of the actor
    fhir:type @<code> AND
    	{fhir:v @fhirvs:examplescenario-actor-type};  # person | system
    fhir:title @<string>;                   # Label for actor when rendering
    fhir:description @<markdown>?;          # Details about actor
}  

# Snapshot of instance that changes
<ExampleScenario.instance.version> EXTENDS @<BackboneElement> CLOSED {   
    fhir:key @<string>;                     # ID or acronym of the version
    fhir:title @<string>;                   # Label for instance version
    fhir:description @<markdown>?;          # Details about version
    fhir:content @<Reference>?;             # Example instance version data
}  

# Resources contained in the instance
<ExampleScenario.instance.containedInstance> EXTENDS @<BackboneElement> CLOSED {   
    fhir:instanceReference @<string>;       # Key of contained instance
    fhir:versionReference @<string>?;       # Key of contained instance version
}  

# Major process within scenario
<ExampleScenario.process> EXTENDS @<BackboneElement> CLOSED {   
    fhir:title @<string>;                   # Label for procss
    fhir:description @<markdown>?;          # Human-friendly description of the 
                                            # process 
    fhir:preConditions @<markdown>?;        # Status before process starts
    fhir:postConditions @<markdown>?;       # Status after successful completion
    fhir:step @<OneOrMore_ExampleScenario.process.step>?;  # Event within of the process
}  

# Event within of the process
<ExampleScenario.process.step> EXTENDS @<BackboneElement> CLOSED {   
    fhir:number @<string>?;                 # Sequential number of the step
    fhir:process @<ExampleScenario.process>?;  # Step is nested process
    fhir:workflow @<canonical>?;            # Step is nested workflow
    fhir:operation @<ExampleScenario.process.step.operation>?;  # Step is simple action
    fhir:alternative @<OneOrMore_ExampleScenario.process.step.alternative>?;  # Alternate non-typical step action
    fhir:pause @<boolean>?;                 # Pause in the flow?
}  

# Step is simple action
<ExampleScenario.process.step.operation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<Coding>?;                   # Kind of action
    fhir:title @<string>;                   # Label for step
    fhir:initiator @<string>?;              # Who starts the operation
    fhir:receiver @<string>?;               # Who receives the operation
    fhir:description @<markdown>?;          # Human-friendly description of the 
                                            # operation 
    fhir:initiatorActive @<boolean>?;       # Initiator stays active?
    fhir:receiverActive @<boolean>?;        # Receiver stays active?
    fhir:request @<ExampleScenario.instance.containedInstance>?;  # Instance transmitted on invocation
    fhir:response @<ExampleScenario.instance.containedInstance>?;  # Instance transmitted on invocation 
                                            # response 
}  

# Alternate non-typical step action
<ExampleScenario.process.step.alternative> EXTENDS @<BackboneElement> CLOSED {   
    fhir:title @<string>;                   # Label for alternative
    fhir:description @<markdown>?;          # Human-readable description of 
                                            # option 
    fhir:step @<OneOrMore_ExampleScenario.process.step>?;  # Alternative action(s)
}  

#---------------------- Cardinality Types (OneOrMore) -------------------

<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}

<OneOrMore_ContactDetail> CLOSED {
    rdf:first @<ContactDetail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ContactDetail> 
}

<OneOrMore_UsageContext> CLOSED {
    rdf:first @<UsageContext>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_UsageContext> 
}

<OneOrMore_CodeableConcept> CLOSED {
    rdf:first @<CodeableConcept>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> 
}

<OneOrMore_ExampleScenario.actor> CLOSED {
    rdf:first @<ExampleScenario.actor>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.actor> 
}

<OneOrMore_ExampleScenario.instance> CLOSED {
    rdf:first @<ExampleScenario.instance>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.instance> 
}

<OneOrMore_ExampleScenario.process> CLOSED {
    rdf:first @<ExampleScenario.process>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.process> 
}

<OneOrMore_ExampleScenario.instance.version> CLOSED {
    rdf:first @<ExampleScenario.instance.version>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.instance.version> 
}

<OneOrMore_ExampleScenario.instance.containedInstance> CLOSED {
    rdf:first @<ExampleScenario.instance.containedInstance>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.instance.containedInstance> 
}

<OneOrMore_ExampleScenario.process.step> CLOSED {
    rdf:first @<ExampleScenario.process.step>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.process.step> 
}

<OneOrMore_ExampleScenario.process.step.alternative> CLOSED {
    rdf:first @<ExampleScenario.process.step.alternative>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ExampleScenario.process.step.alternative> 
}

#---------------------- Value Sets ------------------------

# The type of actor - system or human.
fhirvs:examplescenario-actor-type ["person" "system"]

# The lifecycle status of an artifact.
fhirvs:publication-status ["draft" "active" "retired" "unknown"]


Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.