Release 5

This page is part of the FHIR Specification (v5.0.0: R5 - STU). This is the current published version. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B

Subscriptiontopic.shex

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

Raw ShEx

ShEx statement for subscriptiontopic

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 <date.shex>
IMPORT <string.shex>
IMPORT <Coding.shex>
IMPORT <Period.shex>
IMPORT <boolean.shex>
IMPORT <dateTime.shex>
IMPORT <markdown.shex>
IMPORT <canonical.shex>
IMPORT <Identifier.shex>
IMPORT <UsageContext.shex>
IMPORT <ContactDetail.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>


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

# The definition of a specific topic for triggering events within the Subscriptions framework
<SubscriptionTopic> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:url @<uri>;                        # Canonical identifier for this 
                                            # subscription topic, represented as 
                                            # an absolute URI (globally unique) 
    fhir:identifier @<OneOrMore_Identifier>?;  # Business identifier for 
                                            # subscription topic 
    fhir:version @<string>?;                # Business version of the 
                                            # subscription topic 
    fhir:versionAlgorithm @<string>  OR 
    			@<Coding>  ?;  # How to compare versions
    fhir:name @<string>?;                   # Name for this subscription topic 
                                            # (computer friendly) 
    fhir:title @<string>?;                  # Name for this subscription topic 
                                            # (human friendly) 
    fhir:derivedFrom @<OneOrMore_canonical>?;  # Based on FHIR protocol or 
                                            # definition 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:publication-status};  # draft | active | retired | unknown
    fhir:experimental @<boolean>?;          # If for testing purposes, not real 
                                            # usage 
    fhir:date @<dateTime>?;                 # Date status first applied
    fhir:publisher @<string>?;              # The name of the individual or 
                                            # organization that published the 
                                            # SubscriptionTopic 
    fhir:contact @<OneOrMore_ContactDetail>?;  # Contact details for the publisher
    fhir:description @<markdown>?;          # Natural language description of 
                                            # the SubscriptionTopic 
    fhir:useContext @<OneOrMore_UsageContext>?;  # Content intends to support these 
                                            # contexts 
    fhir:jurisdiction @<OneOrMore_CodeableConcept>?;  # Intended jurisdiction of the 
                                            # SubscriptionTopic (if applicable) 
    fhir:purpose @<markdown>?;              # Why this SubscriptionTopic is 
                                            # defined 
    fhir:copyright @<markdown>?;            # Use and/or publishing restrictions
    fhir:copyrightLabel @<string>?;         # Copyright holder and year(s)
    fhir:approvalDate @<date>?;             # When SubscriptionTopic is/was 
                                            # approved by publisher 
    fhir:lastReviewDate @<date>?;           # Date the Subscription Topic was 
                                            # last reviewed by the publisher 
    fhir:effectivePeriod @<Period>?;        # The effective date range for the 
                                            # SubscriptionTopic 
    fhir:resourceTrigger @<OneOrMore_SubscriptionTopic.resourceTrigger>?;  # Definition of a resource-based 
                                            # trigger for the subscription topic 
    fhir:eventTrigger @<OneOrMore_SubscriptionTopic.eventTrigger>?;  # Event definitions the 
                                            # SubscriptionTopic 
    fhir:canFilterBy @<OneOrMore_SubscriptionTopic.canFilterBy>?;  # Properties by which a Subscription 
                                            # can filter notifications from the 
                                            # SubscriptionTopic 
    fhir:notificationShape @<OneOrMore_SubscriptionTopic.notificationShape>?;  # Properties for describing the 
                                            # shape of notifications generated 
                                            # by this topic 
}  

# Query based trigger rule
<SubscriptionTopic.resourceTrigger.queryCriteria> EXTENDS @<BackboneElement> CLOSED {   
    fhir:previous @<string>?;               # Rule applied to previous resource 
                                            # state 
    fhir:resultForCreate @<code> AND
    	{fhir:v @fhirvs:subscriptiontopic-cr-behavior}?;  # test-passes | test-fails
    fhir:current @<string>?;                # Rule applied to current resource 
                                            # state 
    fhir:resultForDelete @<code> AND
    	{fhir:v @fhirvs:subscriptiontopic-cr-behavior}?;  # test-passes | test-fails
    fhir:requireBoth @<boolean>?;           # Both must be true flag
}  

# Properties by which a Subscription can filter notifications from the SubscriptionTopic
<SubscriptionTopic.canFilterBy> EXTENDS @<BackboneElement> CLOSED {   
    fhir:description @<markdown>?;          # Description of this filter 
                                            # parameter 
    fhir:resource @<uri>?;                  # URL of the triggering Resource 
                                            # that this filter applies to 
    fhir:filterParameter @<string>;         # Human-readable and 
                                            # computation-friendly name for a 
                                            # filter parameter usable by 
                                            # subscriptions on this topic, via 
                                            # Subscription.filterBy.filterPara-
                                            # meter 
    fhir:filterDefinition @<uri>?;          # Canonical URL for a 
                                            # filterParameter definition 
    fhir:comparator @<OneOrMore_code> AND
    	{fhir:v @fhirvs:search-comparator}?;  # eq | ne | gt | lt | ge | le | sa | 
                                            # eb | ap 
    fhir:modifier @<OneOrMore_code> AND
    	{fhir:v @fhirvs:search-modifier-code}?;  # missing | exact | contains | not | 
                                            # text | in | not-in | below | above 
                                            # | type | identifier | of-type | 
                                            # code-text | text-advanced | 
                                            # iterate 
}  

# Properties for describing the shape of notifications generated by this topic
<SubscriptionTopic.notificationShape> EXTENDS @<BackboneElement> CLOSED {   
    fhir:resource @<uri>;                   # URL of the Resource that is the 
                                            # focus (main) resource in a 
                                            # notification shape 
    fhir:include @<OneOrMore_string>?;      # Include directives, rooted in the 
                                            # resource for this shape 
    fhir:revInclude @<OneOrMore_string>?;   # Reverse include directives, rooted 
                                            # in the resource for this shape 
}  

# Definition of a resource-based trigger for the subscription topic
<SubscriptionTopic.resourceTrigger> EXTENDS @<BackboneElement> CLOSED {   
    fhir:description @<markdown>?;          # Text representation of the 
                                            # resource trigger 
    fhir:resource @<uri>;                   # Data Type or Resource (reference 
                                            # to definition) for this trigger 
                                            # definition 
    fhir:supportedInteraction @<OneOrMore_code> AND
    	{fhir:v @fhirvs:interaction-trigger}?;  # create | update | delete
    fhir:queryCriteria @<SubscriptionTopic.resourceTrigger.queryCriteria>?;  # Query based trigger rule
    fhir:fhirPathCriteria @<string>?;       # FHIRPath based trigger rule
}  

# Event definitions the SubscriptionTopic
<SubscriptionTopic.eventTrigger> EXTENDS @<BackboneElement> CLOSED {   
    fhir:description @<markdown>?;          # Text representation of the event 
                                            # trigger 
    fhir:event @<CodeableConcept>;          # Event which can trigger a 
                                            # notification from the 
                                            # SubscriptionTopic 
    fhir:resource @<uri>;                   # Data Type or Resource (reference 
                                            # to definition) for this trigger 
                                            # definition 
}  

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

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

<OneOrMore_canonical> CLOSED {
    rdf:first @<canonical>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_canonical> 
}

<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_SubscriptionTopic.resourceTrigger> CLOSED {
    rdf:first @<SubscriptionTopic.resourceTrigger>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubscriptionTopic.resourceTrigger> 
}

<OneOrMore_SubscriptionTopic.eventTrigger> CLOSED {
    rdf:first @<SubscriptionTopic.eventTrigger>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubscriptionTopic.eventTrigger> 
}

<OneOrMore_SubscriptionTopic.canFilterBy> CLOSED {
    rdf:first @<SubscriptionTopic.canFilterBy>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubscriptionTopic.canFilterBy> 
}

<OneOrMore_SubscriptionTopic.notificationShape> CLOSED {
    rdf:first @<SubscriptionTopic.notificationShape>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubscriptionTopic.notificationShape> 
}

<OneOrMore_code> CLOSED {
    rdf:first @<code>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_code> 
}

<OneOrMore_string> CLOSED {
    rdf:first @<string>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_string> 
}

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

# FHIR RESTful interaction codes used for SubscriptionTopic trigger.
fhirvs:interaction-trigger ["create" "update" "delete"]

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

# What Search Comparator Codes are supported in search.
fhirvs:search-comparator ["eq" "ne" "gt" "lt" "ge" "le" "sa" "eb" "ap"]

# A supported modifier for a search parameter.
fhirvs:search-modifier-code ["missing" "exact" "contains" "not" "text" "in" "not-in" "below" "above" "type" "identifier" "of-type" "code-text" "text-advanced" "iterate"]

# Behavior a server can exhibit when a criteria state does not exist (e.g., state prior to a create or after a delete).
fhirvs:subscriptiontopic-cr-behavior ["test-passes" "test-fails"]


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.