FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions

Requirements.shex

Responsible Owner: FHIR Infrastructure Work GroupStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for requirements

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#> 

# ShEx Version 2.2
IMPORT <Id.shex>
IMPORT <Uri.shex>
IMPORT <Url.shex>
IMPORT <Code.shex>
IMPORT <Group.shex>
IMPORT <String.shex>
IMPORT <Coding.shex>
IMPORT <Device.shex>
IMPORT <Boolean.shex>
IMPORT <Patient.shex>
IMPORT <DateTime.shex>
IMPORT <Markdown.shex>
IMPORT <CareTeam.shex>
IMPORT <Canonical.shex>
IMPORT <Identifier.shex>
IMPORT <UsageContext.shex>
IMPORT <Organization.shex>
IMPORT <Practitioner.shex>
IMPORT <ContactDetail.shex>
IMPORT <RelatedPerson.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <HealthcareService.shex>

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

# A set of requirements - features of systems that are necessary
<Requirements> EXTENDS @<DomainResource> CLOSED {   
    a [fhir:Requirements]?;fhir:nodeRole [fhir:treeRoot]?;

    fhir:url @<Uri>?;                       # Canonical identifier for this 
                                            # Requirements, represented as a URI 
                                            # (globally unique) 
    fhir:identifier @<OneOrMore_Identifier>?;  # Additional identifier for the 
                                            # Requirements (business identifier) 
    fhir:version @<String>?;                # Business version of the 
                                            # Requirements 
    fhir:versionAlgorithm @<String>  OR 
    			@<Coding>  ?;  # How to compare versions
    fhir:name @<String>?;                   # Name for this Requirements 
                                            # (computer friendly) 
    fhir:title @<String>?;                  # Name for this Requirements (human 
                                            # friendly) 
    fhir:status @<Code> AND
    	{fhir:v @fhirvs:publication-status};  # draft | active | retired | unknown
    fhir:experimental @<Boolean>?;          # For testing only - never for 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 requirements 
    fhir:useContext @<OneOrMore_UsageContext>?;  # The context that the content is 
                                            # intended to support 
    fhir:jurisdiction @<OneOrMore_CodeableConcept>?;  # Jurisdiction of the authority that 
                                            # maintains the Requirements (if 
                                            # applicable) 
    fhir:purpose @<Markdown>?;              # Why this Requirements is defined
    fhir:copyright @<Markdown>?;            # Notice about intellectual property 
                                            # ownership, can include 
                                            # restrictions on use 
    fhir:copyrightLabel @<String>?;         # Copyright holder and year(s)
    fhir:derivedFrom @<OneOrMore_Canonical>?;  # Other set of Requirements this 
                                            # builds on 
    fhir:imports @<OneOrMore_Requirements.imports>?;  # External requirements that apply 
                                            # here 
    fhir:reference @<OneOrMore_Url>?;       # External artifact (rule/document 
                                            # etc. that) created this set of 
                                            # requirements 
    fhir:actor @<OneOrMore_Requirements.actor>?;  # Actor for these requirements
    fhir:statement @<OneOrMore_Requirements.statement>?;  # Conformance requirement statement
}  

# Actor for these requirements
<Requirements.actor> EXTENDS @<BackboneElement> CLOSED {   
    fhir:reference @<Canonical>;            # Actor referenced
    fhir:key @<Id>?;                        # Unique label for actor (used in 
                                            # statements) 
}  

# Another statement this is refining, tightening, or establishing more context for
<Requirements.statement.derivedFrom> EXTENDS @<BackboneElement> CLOSED {   
    fhir:reference @<Canonical>?;           # Pointer to Requirements instance
    fhir:key @<Id>;                         # Key of referenced statement
}  

# External requirements that apply here
<Requirements.imports> EXTENDS @<BackboneElement> CLOSED {   
    fhir:reference @<Canonical>;            # Source of imported statements
    fhir:key @<OneOrMore_Id>?;              # Statement key
}  

# Conformance requirement statement
<Requirements.statement> EXTENDS @<BackboneElement> CLOSED {   
    fhir:key @<Id>;                         # Key that identifies this statement
    fhir:label @<String>?;                  # Short Human label for this 
                                            # statement 
    fhir:conformance @<OneOrMore_Code> AND
    	{fhir:v @fhirvs:conformance-expectation}?;  # SHALL | SHOULD | MAY | SHOULD-NOT 
                                            # | SHALL-NOT 
    fhir:conditionality @<Boolean>?;        # Set to true if requirements 
                                            # statement is conditional 
    fhir:requirement @<Markdown>;           # The actual requirement
    fhir:derivedFrom @<Requirements.statement.derivedFrom>?;  # Another statement this is 
                                            # refining, tightening, or 
                                            # establishing more context for 
    fhir:partOf @<Requirements.statement.partOf>?;  # Higher-level requirement or 
                                            # statement which this is a logical 
                                            # sub-requirement of 
    fhir:satisfiedBy @<OneOrMore_Url>?;     # Design artifact that satisfies 
                                            # this requirement 
    fhir:reference @<OneOrMore_Url>?;       # External artifact (rule/document 
                                            # etc. that) created this 
                                            # requirement 
    fhir:source @<OneOrMore_Reference_CareTeam_OR_Device_OR_Group_OR_HealthcareService_OR_Organization_OR_Patient_OR_Practitioner_OR_PractitionerRole_OR_RelatedPerson>?;  # Who asked for this statement
    fhir:actor @<OneOrMore_Id>?;            # Key of relevant actor
}  

# Higher-level requirement or statement which this is a logical sub-requirement of
<Requirements.statement.partOf> EXTENDS @<BackboneElement> CLOSED {   
    fhir:reference @<Canonical>?;           # Pointer to Requirements instance
    fhir:key @<Id>;                         # Key of referenced statement
}  

#---------------------- 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_Canonical> CLOSED {
    rdf:first @<Canonical>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Canonical> 
}
<OneOrMore_Requirements.imports> CLOSED {
    rdf:first @<Requirements.imports>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Requirements.imports> 
}
<OneOrMore_Url> CLOSED {
    rdf:first @<Url>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Url> 
}
<OneOrMore_Requirements.actor> CLOSED {
    rdf:first @<Requirements.actor>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Requirements.actor> 
}
<OneOrMore_Requirements.statement> CLOSED {
    rdf:first @<Requirements.statement>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Requirements.statement> 
}
<OneOrMore_Id> CLOSED {
    rdf:first @<Id>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Id> 
}
<OneOrMore_Code> CLOSED {
    rdf:first @<Code>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Code> 
}
<OneOrMore_Reference_CareTeam_OR_Device_OR_Group_OR_HealthcareService_OR_Organization_OR_Patient_OR_Practitioner_OR_PractitionerRole_OR_RelatedPerson> CLOSED {
    rdf:first @<Reference> AND {fhir:l 
			@<CareTeam> OR 
			@<Device> OR 
			@<Group> OR 
			@<HealthcareService> OR 
			@<Organization> OR 
			@<Patient> OR 
			@<Practitioner> OR 
			@<PractitionerRole> OR 
			@<RelatedPerson> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_CareTeam_OR_Device_OR_Group_OR_HealthcareService_OR_Organization_OR_Patient_OR_Practitioner_OR_PractitionerRole_OR_RelatedPerson> 
}

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

# Description Needed Here
fhirvs:conformance-expectation ["SHALL" "SHOULD" "MAY" "SHOULD-NOT" "SHALL-NOT"]

# 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.