Release 5 Preview #2

Substanceprotein.shex

Biomedical Research and Regulation Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Not linked to any defined compartments

Raw ShEx

ShEx statement for substanceprotein

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
BASE <http://hl7.org/fhir/shape/>

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


# A SubstanceProtein is defined as a single unit of a linear amino acid sequence, or a combination of subunits that are either covalently linked or have a defined invariant stoichiometric relationship. This includes all synthetic, recombinant and purified SubstanceProteins of defined sequence, whether the use is therapeutic or prophylactic. This set of elements will be used to describe albumins, coagulation factors, cytokines, growth factors, peptide/SubstanceProtein hormones, enzymes, toxins, toxoids, recombinant vaccines, and immunomodulators
<SubstanceProtein> CLOSED {
    a [fhir:SubstanceProtein];
    fhir:nodeRole [fhir:treeRoot]?;
    fhir:Resource.id @<id>?;                # Logical id of this artifact
    fhir:Resource.meta @<Meta>?;            # Metadata about the resource
    fhir:Resource.implicitRules @<uri>?;    # A set of rules under which this 
                                            # content was created 
    fhir:Resource.language @<code>?;        # Language of the resource content
    fhir:DomainResource.text @<Narrative>?;  # Text summary of the resource, for 
                                            # human interpretation 
    fhir:DomainResource.contained @<Resource>*;  # Contained, inline Resources
    fhir:DomainResource.extension @<Extension>*;  # Additional content defined by 
                                            # implementations 
    fhir:DomainResource.modifierExtension @<Extension>*;  # Extensions that cannot be ignored
    fhir:SubstanceProtein.sequenceType @<CodeableConcept>?;  # The SubstanceProtein descriptive 
                                            # elements will only be used when a 
                                            # complete or partial amino acid 
                                            # sequence is available or derivable 
                                            # from a nucleic acid sequence 
    fhir:SubstanceProtein.numberOfSubunits @<integer>?;  # Number of linear sequences of 
                                            # amino acids linked through peptide 
                                            # bonds. The number of subunits 
                                            # constituting the SubstanceProtein 
                                            # shall be described. It is possible 
                                            # that the number of subunits can be 
                                            # variable 
    fhir:SubstanceProtein.disulfideLinkage @<string>*;  # The disulphide bond between two 
                                            # cysteine residues either on the 
                                            # same subunit or on two different 
                                            # subunits shall be described. The 
                                            # position of the disulfide bonds in 
                                            # the SubstanceProtein shall be 
                                            # listed in increasing order of 
                                            # subunit number and position within 
                                            # subunit followed by the 
                                            # abbreviation of the amino acids 
                                            # involved. The disulfide linkage 
                                            # positions shall actually contain 
                                            # the amino acid Cysteine at the 
                                            # respective positions 
    fhir:SubstanceProtein.subunit @<SubstanceProtein.subunit>*;  # This subclause refers to the 
                                            # description of each subunit 
                                            # constituting the SubstanceProtein. 
                                            # A subunit is a linear sequence of 
                                            # amino acids linked through peptide 
                                            # bonds. The Subunit information 
                                            # shall be provided when the 
                                            # finished SubstanceProtein is a 
                                            # complex of multiple sequences; 
                                            # subunits are not used to delineate 
                                            # domains within a single sequence. 
                                            # Subunits are listed in order of 
                                            # decreasing length; sequences of 
                                            # the same length will be ordered by 
                                            # decreasing molecular weight; 
                                            # subunits that have identical 
                                            # sequences will be repeated 
                                            # multiple times 
    fhir:index xsd:integer?                 # Relative position in a list
}

# This subclause refers to the description of each subunit constituting the SubstanceProtein. A subunit is a linear sequence of amino acids linked through peptide bonds. The Subunit information shall be provided when the finished SubstanceProtein is a complex of multiple sequences; subunits are not used to delineate domains within a single sequence. Subunits are listed in order of decreasing length; sequences of the same length will be ordered by decreasing molecular weight; subunits that have identical sequences will be repeated multiple times
<SubstanceProtein.subunit> CLOSED {
    fhir:Element.id @<id>?;                 # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:BackboneElement.modifierExtension @<Extension>*;  # Extensions that cannot be ignored 
                                            # even if unrecognized 
    fhir:SubstanceProtein.subunit.subunit @<integer>?;  # Index of primary sequences of 
                                            # amino acids linked through peptide 
                                            # bonds in order of decreasing 
                                            # length. Sequences of the same 
                                            # length will be ordered by 
                                            # molecular weight. Subunits that 
                                            # have identical sequences will be 
                                            # repeated and have sequential 
                                            # subscripts 
    fhir:SubstanceProtein.subunit.sequence @<string>?;  # The sequence information shall be 
                                            # provided enumerating the amino 
                                            # acids from N- to C-terminal end 
                                            # using standard single-letter amino 
                                            # acid codes. Uppercase shall be 
                                            # used for L-amino acids and 
                                            # lowercase for D-amino acids. 
                                            # Transcribed SubstanceProteins will 
                                            # always be described using the 
                                            # translated sequence; for synthetic 
                                            # peptide containing amino acids 
                                            # that are not represented with a 
                                            # single letter code an X should be 
                                            # used within the sequence. The 
                                            # modified amino acids will be 
                                            # distinguished by their position in 
                                            # the sequence 
    fhir:SubstanceProtein.subunit.length @<integer>?;  # Length of linear sequences of 
                                            # amino acids contained in the 
                                            # subunit 
    fhir:SubstanceProtein.subunit.sequenceAttachment @<Attachment>?;  # The sequence information shall be 
                                            # provided enumerating the amino 
                                            # acids from N- to C-terminal end 
                                            # using standard single-letter amino 
                                            # acid codes. Uppercase shall be 
                                            # used for L-amino acids and 
                                            # lowercase for D-amino acids. 
                                            # Transcribed SubstanceProteins will 
                                            # always be described using the 
                                            # translated sequence; for synthetic 
                                            # peptide containing amino acids 
                                            # that are not represented with a 
                                            # single letter code an X should be 
                                            # used within the sequence. The 
                                            # modified amino acids will be 
                                            # distinguished by their position in 
                                            # the sequence 
    fhir:SubstanceProtein.subunit.nTerminalModificationId @<Identifier>?;  # Unique identifier for molecular 
                                            # fragment modification based on the 
                                            # ISO 11238 Substance ID 
    fhir:SubstanceProtein.subunit.nTerminalModification @<string>?;  # The name of the fragment modified 
                                            # at the N-terminal of the 
                                            # SubstanceProtein shall be 
                                            # specified 
    fhir:SubstanceProtein.subunit.cTerminalModificationId @<Identifier>?;  # Unique identifier for molecular 
                                            # fragment modification based on the 
                                            # ISO 11238 Substance ID 
    fhir:SubstanceProtein.subunit.cTerminalModification @<string>?;  # The modification at the C-terminal 
                                            # shall be specified 
    fhir:index xsd:integer?                 # Relative position in a list
}

#---------------------- Data Types -------------------

# Metadata about a resource
<Meta> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Meta.versionId @<id>?;             # Version specific identifier
    fhir:Meta.lastUpdated @<instant>?;      # When the resource version last 
                                            # changed 
    fhir:Meta.source @<uri>?;               # Identifies where the resource 
                                            # comes from 
    fhir:Meta.profile @<canonical>*;        # Profiles this resource claims to 
                                            # conform to 
    fhir:Meta.security @<Coding>*;          # Security Labels applied to this 
                                            # resource 
    fhir:Meta.tag @<Coding>*;               # Tags applied to this resource
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type code
<code> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for code
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type string
<string> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for string
    fhir:index xsd:integer?                 # Relative position in a list
}

# Base Resource
<Resource> {a .+;
    fhir:Resource.id @<id>?;                # Logical id of this artifact
    fhir:Resource.meta @<Meta>?;            # Metadata about the resource
    fhir:Resource.implicitRules @<uri>?;    # A set of rules under which this 
                                            # content was created 
    fhir:Resource.language @<code>?;        # Language of the resource content
    fhir:index xsd:integer?
}

# Content in a format defined elsewhere
<Attachment> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Attachment.contentType @<code> AND
    	{fhir:value @fhirvs:mimetypes}?;  # Mime type of the content, with 
                                            # charset etc. 
    fhir:Attachment.language @<code>?;      # Human language of the content 
                                            # (BCP-47) 
    fhir:Attachment.data @<base64Binary>?;  # Data inline, base64ed
    fhir:Attachment.url @<url>?;            # Uri where the data can be found
    fhir:Attachment.size @<integer64>?;     # Number of bytes of content (if url 
                                            # provided) 
    fhir:Attachment.hash @<base64Binary>?;  # Hash of the data (sha-1, base64ed)
    fhir:Attachment.title @<string>?;       # Label to display in place of the 
                                            # data 
    fhir:Attachment.creation @<dateTime>?;  # Date attachment was first created
    fhir:Attachment.height @<positiveInt>?;  # Height of the image in pixels 
                                            # (photo/video) 
    fhir:Attachment.width @<positiveInt>?;  # Width of the image in pixels 
                                            # (photo/video) 
    fhir:Attachment.frames @<positiveInt>?;  # Number of frames if > 1 (photo)
    fhir:Attachment.duration @<decimal>?;   # Length in seconds (audio / video)
    fhir:Attachment.pages @<positiveInt>?;  # Number of printed pages
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type integer
<integer> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<integer>?;                 # Primitive value for integer
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type uri
<uri> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<uri>?;                     # Primitive value for uri
    fhir:index xsd:integer?                 # Relative position in a list
}

# Optional Extensions Element
<Extension> CLOSED {
    fhir:Element.id @<string>?; 
    fhir:Element.extension @<Extension>*; 
    fhir:Extension.url @<uri>; 
    ( 
        fhir:Extension.valueBase64Binary @<base64Binary>  |
        fhir:Extension.valueBoolean @<boolean>  |
        fhir:Extension.valueCanonical @<canonical>  |
        fhir:Extension.valueCode @<code>  |
        fhir:Extension.valueDate @<date>  |
        fhir:Extension.valueDateTime @<dateTime>  |
        fhir:Extension.valueDecimal @<decimal>  |
        fhir:Extension.valueId @<id>  |
        fhir:Extension.valueInstant @<instant>  |
        fhir:Extension.valueInteger @<integer>  |
        fhir:Extension.valueInteger64 @<integer64>  |
        fhir:Extension.valueMarkdown @<markdown>  |
        fhir:Extension.valueOid @<oid>  |
        fhir:Extension.valuePositiveInt @<positiveInt>  |
        fhir:Extension.valueString @<string>  |
        fhir:Extension.valueTime @<time>  |
        fhir:Extension.valueUnsignedInt @<unsignedInt>  |
        fhir:Extension.valueUri @<uri>  |
        fhir:Extension.valueUrl @<url>  |
        fhir:Extension.valueUuid @<uuid>  |
        fhir:Extension.valueAddress @<Address>  |
        fhir:Extension.valueAge @<Age>  |
        fhir:Extension.valueAnnotation @<Annotation>  |
        fhir:Extension.valueAttachment @<Attachment>  |
        fhir:Extension.valueCodeableConcept @<CodeableConcept>  |
        fhir:Extension.valueCoding @<Coding>  |
        fhir:Extension.valueContactPoint @<ContactPoint>  |
        fhir:Extension.valueCount @<Count>  |
        fhir:Extension.valueDistance @<Distance>  |
        fhir:Extension.valueDuration @<Duration>  |
        fhir:Extension.valueHumanName @<HumanName>  |
        fhir:Extension.valueIdentifier @<Identifier>  |
        fhir:Extension.valueMoney @<Money>  |
        fhir:Extension.valuePeriod @<Period>  |
        fhir:Extension.valueQuantity @<Quantity>  |
        fhir:Extension.valueRange @<Range>  |
        fhir:Extension.valueRatio @<Ratio>  |
        fhir:Extension.valueReference @<Reference>  |
        fhir:Extension.valueSampledData @<SampledData>  |
        fhir:Extension.valueSignature @<Signature>  |
        fhir:Extension.valueTiming @<Timing>  |
        fhir:Extension.valueContactDetail @<ContactDetail>  |
        fhir:Extension.valueContributor @<Contributor>  |
        fhir:Extension.valueDataRequirement @<DataRequirement>  |
        fhir:Extension.valueExpression @<Expression>  |
        fhir:Extension.valueParameterDefinition @<ParameterDefinition>  |
        fhir:Extension.valueRelatedArtifact @<RelatedArtifact>  |
        fhir:Extension.valueTriggerDefinition @<TriggerDefinition>  |
        fhir:Extension.valueUsageContext @<UsageContext>  |
        fhir:Extension.valueDosage @<Dosage>  |
        fhir:Extension.valueMeta @<Meta> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# An identifier intended for computation
<Identifier> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Identifier.use @<code> AND
    	{fhir:value @fhirvs:identifier-use}?;  # usual | official | temp | 
                                            # secondary | old (If known) 
    fhir:Identifier.type @<CodeableConcept>?;  # Description of identifier
    fhir:Identifier.system @<uri>?;         # The namespace for the identifier 
                                            # value 
    fhir:Identifier.value @<string>?;       # The value that is unique
    fhir:Identifier.period @<Period>?;      # Time period when id is/was valid 
                                            # for use 
    fhir:Identifier.assigner @<Reference>?;  # Organization that issued id (may 
                                            # be just text) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Human-readable summary of the resource (essential clinical and business information)
<Narrative> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Narrative.status @<code> AND
    	{fhir:value @fhirvs:narrative-status};  # generated | extensions | 
                                            # additional | empty 
    fhir:Narrative.div xsd:string;          # Limited xhtml content
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type id
<id> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for id
    fhir:index xsd:integer?                 # Relative position in a list
}

# Concept - reference to a terminology or just  text
<CodeableConcept> CLOSED {
    a NONLITERAL*;
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:CodeableConcept.coding @<Coding>*;  # Code defined by a terminology 
                                            # system 
    fhir:CodeableConcept.text @<string>?;   # Plain text representation of the 
                                            # concept 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type date
<date> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<date>?;                    # Primitive value for date
    fhir:index xsd:integer?                 # Relative position in a list
}

# An address expressed using postal conventions (as opposed to GPS or other location definition formats)
<Address> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Address.use @<code> AND
    	{fhir:value @fhirvs:address-use}?;  # home | work | temp | old | billing 
                                            # - purpose of this address 
    fhir:Address.type @<code> AND
    	{fhir:value @fhirvs:address-type}?;  # postal | physical | both
    fhir:Address.text @<string>?;           # Text representation of the address
    fhir:Address.line @<string>*;           # Street name, number, direction & 
                                            # P.O. Box etc. 
    fhir:Address.city @<string>?;           # Name of city, town etc.
    fhir:Address.district @<string>?;       # District name (aka county)
    fhir:Address.state @<string>?;          # Sub-unit of country (abbreviations 
                                            # ok) 
    fhir:Address.postalCode @<string>?;     # Postal code for area
    fhir:Address.country @<string>?;        # Country (e.g. can be ISO 3166 2 or 
                                            # 3 letter code) 
    fhir:Address.period @<Period>?;         # Time period when address was/is in 
                                            # use 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A measured or measurable amount
<Count> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Describes a required data item
<DataRequirement> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:DataRequirement.type @<code> AND
    	{fhir:value @fhirvs:all-types};  # The type of the required data
    fhir:DataRequirement.profile @<canonical>*;  # The profile of the required data
    (                                       # E.g. Patient, Practitioner, 
                                            # RelatedPerson, Organization, 
                                            # Location, Device 
        fhir:DataRequirement.subjectCodeableConcept @<CodeableConcept>  |
        fhir:DataRequirement.subjectReference @<Reference> 
    )?;
    fhir:DataRequirement.mustSupport @<string>*;  # Indicates specific structure 
                                            # elements that are referenced by 
                                            # the knowledge module 
    fhir:DataRequirement.codeFilter @<DataRequirement.codeFilter>*;  # What codes are expected
    fhir:DataRequirement.dateFilter @<DataRequirement.dateFilter>*;  # What dates/date ranges are expected
    fhir:DataRequirement.limit @<positiveInt>?;  # Number of results
    fhir:DataRequirement.sort @<DataRequirement.sort>*;  # Order of the results
    fhir:index xsd:integer?                 # Relative position in a list
}

# How the medication is/was taken or should be taken
<Dosage> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:BackboneType.modifierExtension @<Extension>*;  # Extensions that cannot be ignored 
                                            # even if unrecognized 
    fhir:Dosage.sequence @<integer>?;       # The order of the dosage 
                                            # instructions 
    fhir:Dosage.text @<string>?;            # Free text dosage instructions e.g. 
                                            # SIG 
    fhir:Dosage.additionalInstruction @<CodeableConcept>*;  # Supplemental instruction or 
                                            # warnings to the patient - e.g. 
                                            # "with meals", "may cause 
                                            # drowsiness" 
    fhir:Dosage.patientInstruction @<string>?;  # Patient or consumer oriented 
                                            # instructions 
    fhir:Dosage.timing @<Timing>?;          # When medication should be 
                                            # administered 
    (                                       # Take "as needed" (for x)
        fhir:Dosage.asNeededBoolean @<boolean>  |
        fhir:Dosage.asNeededCodeableConcept @<CodeableConcept> 
    )?;
    fhir:Dosage.site @<CodeableConcept>?;   # Body site to administer to
    fhir:Dosage.route @<CodeableConcept>?;  # How drug should enter body
    fhir:Dosage.method @<CodeableConcept>?;  # Technique for administering 
                                            # medication 
    fhir:Dosage.doseAndRate @<Dosage.doseAndRate>*;  # Amount of medication administered
    fhir:Dosage.maxDosePerPeriod @<Ratio>?;  # Upper limit on medication per unit 
                                            # of time 
    fhir:Dosage.maxDosePerAdministration @<SimpleQuantity>?;  # Upper limit on medication per 
                                            # administration 
    fhir:Dosage.maxDosePerLifetime @<SimpleQuantity>?;  # Upper limit on medication per 
                                            # lifetime of the patient 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type uuid
<uuid> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for uuid
    fhir:index xsd:integer?                 # Relative position in a list
}

# A reference to a code defined by a terminology system
<Coding> CLOSED {
    a NONLITERAL?;
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Coding.system @<uri>?;             # Identity of the terminology system
    fhir:Coding.version @<string>?;         # Version of the system - if relevant
    fhir:Coding.code @<code>?;              # Symbol in syntax defined by the 
                                            # system 
    fhir:Coding.display @<string>?;         # Representation defined by the 
                                            # system 
    fhir:Coding.userSelected @<boolean>?;   # If this coding was chosen directly 
                                            # by the user 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A series of measurements taken by a device
<SampledData> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:SampledData.origin @<SimpleQuantity>;  # Zero value and units
    fhir:SampledData.period @<decimal>;     # Number of milliseconds between 
                                            # samples 
    fhir:SampledData.factor @<decimal>?;    # Multiply data by this before 
                                            # adding to origin 
    fhir:SampledData.lowerLimit @<decimal>?;  # Lower limit of detection
    fhir:SampledData.upperLimit @<decimal>?;  # Upper limit of detection
    fhir:SampledData.dimensions @<positiveInt>;  # Number of sample points at each 
                                            # time point 
    fhir:SampledData.data @<string>?;       # Decimal values with spaces, or "E" 
                                            # | "U" | "L" 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type positiveInt
<positiveInt> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for positiveInt
    fhir:index xsd:integer?                 # Relative position in a list
}

# A length - a value with a unit that is a physical distance
<Distance> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type integer64
<integer64> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<integer64>?;               # Primitive value for integer64
    fhir:index xsd:integer?                 # Relative position in a list
}

# Time range defined by start and end date/time
<Period> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Period.start @<dateTime>?;         # Starting time with inclusive 
                                            # boundary 
    fhir:Period.end @<dateTime>?;           # End time with inclusive boundary, 
                                            # if not ongoing 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A length of time
<Duration> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type canonical
<canonical> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for canonical
    fhir:index xsd:integer?                 # Relative position in a list
}

# Set of values bounded by low and high
<Range> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Range.low @<SimpleQuantity>?;      # Low limit
    fhir:Range.high @<SimpleQuantity>?;     # High limit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Related artifacts for a knowledge resource
<RelatedArtifact> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:RelatedArtifact.type @<code> AND
    	{fhir:value @fhirvs:related-artifact-type};  # documentation | justification | 
                                            # citation | predecessor | successor 
                                            # | derived-from | depends-on | 
                                            # composed-of 
    fhir:RelatedArtifact.label @<string>?;  # Short label
    fhir:RelatedArtifact.display @<string>?;  # Brief description of the related 
                                            # artifact 
    fhir:RelatedArtifact.citation @<markdown>?;  # Bibliographic citation for the 
                                            # artifact 
    fhir:RelatedArtifact.url @<url>?;       # Where the artifact can be accessed
    fhir:RelatedArtifact.document @<Attachment>?;  # What document is being referenced
    fhir:RelatedArtifact.resource @<canonical>?;  # What resource is being referenced
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type base64Binary
<base64Binary> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<base64Binary>?;            # Primitive value for base64Binary
    fhir:index xsd:integer?                 # Relative position in a list
}

# Describes the context of use for a conformance or knowledge resource
<UsageContext> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:UsageContext.code @<Coding>;       # Type of context being specified
    (                                       # Value that defines the context
        fhir:UsageContext.valueCodeableConcept @<CodeableConcept>  |
        fhir:UsageContext.valueQuantity @<Quantity>  |
        fhir:UsageContext.valueRange @<Range>  |
        fhir:UsageContext.valueReference @<Reference> 
    );
    fhir:index xsd:integer?                 # Relative position in a list
}

# A timing schedule that specifies an event that may occur multiple times
<Timing> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:BackboneType.modifierExtension @<Extension>*;  # Extensions that cannot be ignored 
                                            # even if unrecognized 
    fhir:Timing.event @<dateTime>*;         # When the event occurs
    fhir:Timing.repeat @<Timing.repeat>?;   # When the event is to occur
    fhir:Timing.code @<CodeableConcept>?;   # BID | TID | QID | AM | PM | QD | 
                                            # QOD | + 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type decimal
<decimal> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<decimal>?;                 # Primitive value for decimal
    fhir:index xsd:integer?                 # Relative position in a list
}

# Definition of a parameter to a module
<ParameterDefinition> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:ParameterDefinition.name @<code>?;  # Name used to access the parameter 
                                            # value 
    fhir:ParameterDefinition.use @<code> AND
    	{fhir:value @fhirvs:operation-parameter-use};  # in | out
    fhir:ParameterDefinition.min @<integer>?;  # Minimum cardinality
    fhir:ParameterDefinition.max @<string>?;  # Maximum cardinality (a number of *)
    fhir:ParameterDefinition.documentation @<string>?;  # A brief description of the 
                                            # parameter 
    fhir:ParameterDefinition.type @<code> AND
    	{fhir:value @fhirvs:all-types};  # What type of value
    fhir:ParameterDefinition.profile @<canonical>?;  # What profile the value is expected 
                                            # to be 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type dateTime
<dateTime> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<dateTime>?;                # Primitive value for dateTime
    fhir:index xsd:integer?                 # Relative position in a list
}

# Contributor information
<Contributor> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Contributor.type @<code> AND
    	{fhir:value @fhirvs:contributor-type};  # author | editor | reviewer | 
                                            # endorser 
    fhir:Contributor.name @<string>;        # Who contributed the content
    fhir:Contributor.contact @<ContactDetail>*;  # Contact details of the contributor
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type oid
<oid> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for oid
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type instant
<instant> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<instant>?;                 # Primitive value for instant
    fhir:index xsd:integer?                 # Relative position in a list
}

# Details of a Technology mediated contact point (phone, fax, email, etc.)
<ContactPoint> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:ContactPoint.system @<code> AND
    	{fhir:value @fhirvs:contact-point-system}?;  # phone | fax | email | pager | url 
                                            # | sms | other 
    fhir:ContactPoint.value @<string>?;     # The actual contact point details
    fhir:ContactPoint.use @<code> AND
    	{fhir:value @fhirvs:contact-point-use}?;  # home | work | temp | old | mobile 
                                            # - purpose of this contact point 
    fhir:ContactPoint.rank @<positiveInt>?;  # Specify preferred order of use (1 
                                            # = highest) 
    fhir:ContactPoint.period @<Period>?;    # Time period when the contact point 
                                            # was/is in use 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Name of a human - parts and usage
<HumanName> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:HumanName.use @<code> AND
    	{fhir:value @fhirvs:name-use}?;  # usual | official | temp | nickname 
                                            # | anonymous | old | maiden 
    fhir:HumanName.text @<string>?;         # Text representation of the full 
                                            # name 
    fhir:HumanName.family @<string>?;       # Family name (often called 
                                            # 'Surname') 
    fhir:HumanName.given @<string>*;        # Given names (not always 'first'). 
                                            # Includes middle names 
    fhir:HumanName.prefix @<string>*;       # Parts that come before the name
    fhir:HumanName.suffix @<string>*;       # Parts that come after the name
    fhir:HumanName.period @<Period>?;       # Time period when name was/is in use
    fhir:index xsd:integer?                 # Relative position in a list
}

# An amount of economic utility in some recognized currency
<Money> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Money.value @<decimal>?;           # Numerical value (with implicit 
                                            # precision) 
    fhir:Money.currency @<code> AND
    	{fhir:value @fhirvs:currencies}?;  # ISO 4217 Currency Code
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type markdown
<markdown> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for markdown
    fhir:index xsd:integer?                 # Relative position in a list
}

# A ratio of two Quantity values - a numerator and a denominator
<Ratio> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Ratio.numerator @<Quantity>?;      # Numerator value
    fhir:Ratio.denominator @<Quantity>?;    # Denominator value
    fhir:index xsd:integer?                 # Relative position in a list
}

# A duration of time during which an organism (or a process) has existed
<Age> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# A reference from one resource to another
<Reference> CLOSED {
    fhir:link IRI?;
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Reference.reference @<string>?;    # Literal reference, Relative, 
                                            # internal or absolute URL 
    fhir:Reference.type @<uri>?;            # Type the reference refers to (e.g. 
                                            # "Patient") 
    fhir:Reference.identifier @<Identifier>?;  # Logical reference, when literal 
                                            # reference is not known 
    fhir:Reference.display @<string>?;      # Text alternative for the resource
    fhir:index xsd:integer?                 # Relative position in a list
}

# Defines an expected trigger for a module
<TriggerDefinition> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:TriggerDefinition.type @<code> AND
    	{fhir:value @fhirvs:trigger-type};  # named-event | periodic | 
                                            # data-changed | data-added | 
                                            # data-modified | data-removed | 
                                            # data-accessed | data-access-ended 
    fhir:TriggerDefinition.name @<string>?;  # Name or URI that identifies the 
                                            # event 
    (                                       # Timing of the event
        fhir:TriggerDefinition.timingTiming @<Timing>  |
        fhir:TriggerDefinition.timingReference @<Reference>  |
        fhir:TriggerDefinition.timingDate @<date>  |
        fhir:TriggerDefinition.timingDateTime @<dateTime> 
    )?;
    fhir:TriggerDefinition.data @<DataRequirement>*;  # Triggering data of the event 
                                            # (multiple = 'and') 
    fhir:TriggerDefinition.condition @<Expression>?;  # Whether the event triggers 
                                            # (boolean expression) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A measured or measurable amount
<Quantity> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type url
<url> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for url
    fhir:index xsd:integer?                 # Relative position in a list
}

# Text node with attribution
<Annotation> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    (                                       # Individual responsible for the 
                                            # annotation 
        fhir:Annotation.authorReference @<Reference>  |
        fhir:Annotation.authorString @<string> 
    )?;
    fhir:Annotation.time @<dateTime>?;      # When the annotation was made
    fhir:Annotation.text @<markdown>;       # The annotation  - text content (as 
                                            # markdown) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Contact information
<ContactDetail> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:ContactDetail.name @<string>?;     # Name of an individual to contact
    fhir:ContactDetail.telecom @<ContactPoint>*;  # Contact details for individual or 
                                            # organization 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type boolean
<boolean> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<boolean>?;                 # Primitive value for boolean
    fhir:index xsd:integer?                 # Relative position in a list
}

# An expression that can be used to generate a value
<Expression> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Expression.description @<string>?;  # Natural language description of 
                                            # the condition 
    fhir:Expression.name @<id>?;            # Short name assigned to expression 
                                            # for reuse 
    fhir:Expression.language @<code>;       # text/cql | text/fhirpath | 
                                            # application/x-fhir-query | etc. 
    fhir:Expression.expression @<string>?;  # Expression in specified language
    fhir:Expression.reference @<uri>?;      # Where the expression is found
    fhir:index xsd:integer?                 # Relative position in a list
}

# A Signature - XML DigSig, JWS, Graphical image of signature, etc.
<Signature> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Signature.type @<Coding>+;         # Indication of the reason the 
                                            # entity signed the object(s) 
    fhir:Signature.when @<instant>;         # When the signature was created
    fhir:Signature.who @<Reference>;        # Who signed
    fhir:Signature.onBehalfOf @<Reference>?;  # The party represented
    fhir:Signature.targetFormat @<code> AND
    	{fhir:value @fhirvs:mimetypes}?;  # The technical format of the signed 
                                            # resources 
    fhir:Signature.sigFormat @<code> AND
    	{fhir:value @fhirvs:mimetypes}?;  # The technical format of the 
                                            # signature 
    fhir:Signature.data @<base64Binary>?;   # The actual signature content (XML 
                                            # DigSig. JWS, picture, etc.) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type unsignedInt
<unsignedInt> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<string>?;                  # Primitive value for unsignedInt
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type time
<time> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:value @<time>?;                    # Primitive value for time
    fhir:index xsd:integer?                 # Relative position in a list
}

# A fixed quantity (no comparator)
<SimpleQuantity> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Amount of medication administered
<Dosage.doseAndRate> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:Dosage.doseAndRate.type @<CodeableConcept>?;  # The kind of dose or rate specified
    (                                       # Amount of medication per dose
        fhir:Dosage.doseAndRate.doseRange @<Range>  |
        fhir:Dosage.doseAndRate.doseQuantity @<SimpleQuantity> 
    )?;
    (                                       # Amount of medication per unit of 
                                            # time 
        fhir:Dosage.doseAndRate.rateRatio @<Ratio>  |
        fhir:Dosage.doseAndRate.rateRange @<Range>  |
        fhir:Dosage.doseAndRate.rateQuantity @<SimpleQuantity> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# What codes are expected
<DataRequirement.codeFilter> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:DataRequirement.codeFilter.path @<string>?;  # A code-valued attribute to filter 
                                            # on 
    fhir:DataRequirement.codeFilter.searchParam @<string>?;  # A coded (token) parameter to 
                                            # search on 
    fhir:DataRequirement.codeFilter.valueSet @<canonical>?;  # Valueset for the filter
    fhir:DataRequirement.codeFilter.code @<Coding>*;  # What code is expected
    fhir:index xsd:integer?                 # Relative position in a list
}

# What dates/date ranges are expected
<DataRequirement.dateFilter> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:DataRequirement.dateFilter.path @<string>?;  # A date-valued attribute to filter 
                                            # on 
    fhir:DataRequirement.dateFilter.searchParam @<string>?;  # A date valued parameter to search 
                                            # on 
    (                                       # The value of the filter, as a 
                                            # Period, DateTime, or Duration 
                                            # value 
        fhir:DataRequirement.dateFilter.valueDateTime @<dateTime>  |
        fhir:DataRequirement.dateFilter.valuePeriod @<Period>  |
        fhir:DataRequirement.dateFilter.valueDuration @<Duration> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# Order of the results
<DataRequirement.sort> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:DataRequirement.sort.path @<string>;  # The name of the attribute to 
                                            # perform the sort 
    fhir:DataRequirement.sort.direction @<code> AND
    	{fhir:value @fhirvs:sort-direction};  # ascending | descending
    fhir:index xsd:integer?                 # Relative position in a list
}

# When the event is to occur
<Timing.repeat> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    (                                       # Length/Range of lengths, or (Start 
                                            # and/or end) limits 
        fhir:Timing.repeat.boundsDuration @<Duration>  |
        fhir:Timing.repeat.boundsRange @<Range>  |
        fhir:Timing.repeat.boundsPeriod @<Period> 
    )?;
    fhir:Timing.repeat.count @<positiveInt>?;  # Number of times to repeat
    fhir:Timing.repeat.countMax @<positiveInt>?;  # Maximum number of times to repeat
    fhir:Timing.repeat.duration @<decimal>?;  # How long when it happens
    fhir:Timing.repeat.durationMax @<decimal>?;  # How long when it happens (Max)
    fhir:Timing.repeat.durationUnit @<code> AND
    	{fhir:value @fhirvs:units-of-time}?;  # s | min | h | d | wk | mo | a - 
                                            # unit of time (UCUM) 
    fhir:Timing.repeat.frequency @<positiveInt>?;  # Event occurs frequency times per 
                                            # period 
    fhir:Timing.repeat.frequencyMax @<positiveInt>?;  # Event occurs up to frequencyMax 
                                            # times per period 
    fhir:Timing.repeat.period @<decimal>?;  # Event occurs frequency times per 
                                            # period 
    fhir:Timing.repeat.periodMax @<decimal>?;  # Upper limit of period (3-4 hours)
    fhir:Timing.repeat.periodUnit @<code> AND
    	{fhir:value @fhirvs:units-of-time}?;  # s | min | h | d | wk | mo | a - 
                                            # unit of time (UCUM) 
    fhir:Timing.repeat.dayOfWeek @<code> AND
    	{fhir:value @fhirvs:days-of-week}*;  # mon | tue | wed | thu | fri | sat 
                                            # | sun 
    fhir:Timing.repeat.timeOfDay @<time>*;  # Time of day for action
    fhir:Timing.repeat.when @<code> AND
    	{fhir:value @fhirvs:event-timing}*;  # Code for time period of occurrence
    fhir:Timing.repeat.offset @<unsignedInt>?;  # Minutes from event (before or 
                                            # after) 
    fhir:index xsd:integer?                 # Relative position in a list
}

#---------------------- Reference Types -------------------

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

# Use of contact point.
fhirvs:contact-point-use ["home" "work" "temp" "old" "mobile"]

# The use of a human name.
fhirvs:name-use ["usual" "official" "temp" "nickname" "anonymous" "old" "maiden"]

# Whether an operation parameter is an input or an output parameter.
fhirvs:operation-parameter-use ["in" "out"]

# Real world event relating to the schedule.
fhirvs:event-timing ["MORN" "MORN.early" "MORN.late" "NOON" "AFT" "AFT.early" "AFT.late" "EVE" "EVE.early" "EVE.late" "NIGHT" "PHS" "HS" "WAKE" "C" "CM" "CD" "CV" "AC" "ACM" "ACD" "ACV" "PC" "PCM" "PCD" "PCV"]

# The type of an address (physical / postal).
fhirvs:address-type ["postal" "physical" "both"]

# The type of contributor.
fhirvs:contributor-type ["author" "editor" "reviewer" "endorser"]

# A unit of time (units from UCUM).
fhirvs:units-of-time ["s" "min" "h" "d" "wk" "mo" "a"]

# The days of the week.
fhirvs:days-of-week ["mon" "tue" "wed" "thu" "fri" "sat" "sun"]

# A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types.
fhirvs:all-types ["Address" "Age" "Annotation" "Attachment" "BackboneElement" "BackboneType" "Base" "CodeableConcept" "CodeableReference" "Coding" "ContactDetail" "ContactPoint" "Contributor" "Count" "DataRequirement" "DataType" "Distance" "Dosage" "Duration" "Element" "ElementDefinition" "Expression" "Extension" "HumanName" "Identifier" "MarketingStatus" "Meta" "Money" "MoneyQuantity" "Narrative" "OrderedDistribution" "ParameterDefinition" "Period" "Population" "PrimitiveType" "ProdCharacteristic" "ProductShelfLife" "Quantity" "Range" "Ratio" "Reference" "RelatedArtifact" "SampledData" "Signature" "SimpleQuantity" "Statistic" "Timing" "TriggerDefinition" "UsageContext" "base64Binary" "boolean" "canonical" "code" "date" "dateTime" "decimal" "id" "instant" "integer" "integer64" "markdown" "oid" "positiveInt" "string" "time" "unsignedInt" "uri" "url" "uuid" "xhtml" "Account" "ActivityDefinition" "AdministrableProductDefinition" "AdverseEvent" "AllergyIntolerance" "Appointment" "AppointmentResponse" "AuditEvent" "Basic" "Binary" "BiologicallyDerivedProduct" "BodyStructure" "Bundle" "CapabilityStatement" "CapabilityStatement2" "CarePlan" "CareTeam" "CatalogEntry" "ChargeItem" "ChargeItemDefinition" "Citation" "Claim" "ClaimResponse" "ClinicalImpression" "ClinicalUseIssue" "CodeSystem" "Communication" "CommunicationRequest" "CompartmentDefinition" "Composition" "ConceptMap" "Condition" "ConditionDefinition" "Consent" "Contract" "Coverage" "CoverageEligibilityRequest" "CoverageEligibilityResponse" "DetectedIssue" "Device" "DeviceDefinition" "DeviceMetric" "DeviceRequest" "DeviceUseStatement" "DiagnosticReport" "DocumentManifest" "DocumentReference" "DomainResource" "Encounter" "Endpoint" "EnrollmentRequest" "EnrollmentResponse" "EpisodeOfCare" "EventDefinition" "Evidence" "EvidenceReport" "EvidenceVariable" "ExampleScenario" "ExplanationOfBenefit" "FamilyMemberHistory" "Flag" "Goal" "GraphDefinition" "Group" "GuidanceResponse" "HealthcareService" "ImagingStudy" "Immunization" "ImmunizationEvaluation" "ImmunizationRecommendation" "ImplementationGuide" "Ingredient" "InsurancePlan" "Invoice" "Library" "Linkage" "List" "Location" "ManufacturedItemDefinition" "Measure" "MeasureReport" "Medication" "MedicationAdministration" "MedicationDispense" "MedicationKnowledge" "MedicationRequest" "MedicationUsage" "MedicinalProductDefinition" "MessageDefinition" "MessageHeader" "MolecularSequence" "NamingSystem" "NutritionIntake" "NutritionOrder" "NutritionProduct" "Observation" "ObservationDefinition" "OperationDefinition" "OperationOutcome" "Organization" "OrganizationAffiliation" "PackagedProductDefinition" "Parameters" "Patient" "PaymentNotice" "PaymentReconciliation" "Permission" "Person" "PlanDefinition" "Practitioner" "PractitionerRole" "Procedure" "Provenance" "Questionnaire" "QuestionnaireResponse" "RegulatedAuthorization" "RelatedPerson" "RequestGroup" "ResearchStudy" "ResearchSubject" "Resource" "RiskAssessment" "Schedule" "SearchParameter" "ServiceRequest" "Slot" "Specimen" "SpecimenDefinition" "StructureDefinition" "StructureMap" "Subscription" "SubscriptionStatus" "SubscriptionTopic" "Substance" "SubstanceDefinition" "SubstanceNucleicAcid" "SubstancePolymer" "SubstanceProtein" "SubstanceReferenceInformation" "SubstanceSourceMaterial" "SupplyDelivery" "SupplyRequest" "Task" "TerminologyCapabilities" "TestReport" "TestScript" "ValueSet" "VerificationResult" "VisionPrescription" "Type" "Any"]

# This value set includes all possible codes from BCP-13 (http://tools.ietf.org/html/bcp13)
fhirvs:mimetypes EXTERNAL

# The type of trigger.
fhirvs:trigger-type ["named-event" "periodic" "data-changed" "data-added" "data-modified" "data-removed" "data-accessed" "data-access-ended"]

# The use of an address.
fhirvs:address-use ["home" "work" "temp" "old" "billing"]

# How the Quantity should be understood and represented.
fhirvs:quantity-comparator ["<" "<=" ">=" ">"]

# The type of relationship to the related artifact.
fhirvs:related-artifact-type ["documentation" "justification" "citation" "predecessor" "successor" "derived-from" "depends-on" "composed-of"]

# Telecommunications form for contact point.
fhirvs:contact-point-system ["phone" "fax" "email" "pager" "url" "sms" "other"]

# Currency codes from ISO 4217 (see https://www.iso.org/iso-4217-currency-codes.html)
fhirvs:currencies ["AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BOV" "BRL" "BSD" "BTN" "BWP" "BYN" "BZD" "CAD" "CDF" "CHE" "CHF" "CHW" "CLF" "CLP" "CNY" "COP" "COU" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRU" "MUR" "MVR" "MWK" "MXN" "MXV" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "SSP" "STN" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "USN" "UYI" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XBA" "XBB" "XBC" "XBD" "XCD" "XDR" "XOF" "XPD" "XPF" "XPT" "XSU" "XTS" "XUA" "XXX" "YER" "ZAR" "ZMW" "ZWL"]

# The possible sort directions, ascending or descending.
fhirvs:sort-direction ["ascending" "descending"]

# The status of a resource narrative.
fhirvs:narrative-status ["generated" "extensions" "additional" "empty"]

# Identifies the purpose for this identifier, if known .
fhirvs:identifier-use ["usual" "official" "temp" "secondary" "old"]

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.