Release 5 Preview #3

Medicinalproductdefinition.shex

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

Raw ShEx

ShEx statement for medicinalproductdefinition

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=@<MedicinalProductDefinition> AND {fhir:nodeRole [fhir:treeRoot]}


# Detailed definition of a medicinal product, typically for uses other than direct patient care (e.g. regulatory use, drug catalogs)
<MedicinalProductDefinition> CLOSED {
    a [fhir:MedicinalProductDefinition];
    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:MedicinalProductDefinition.identifier @<Identifier>*;  # Business identifier for this 
                                            # product. Could be an MPID 
    fhir:MedicinalProductDefinition.type @<CodeableConcept>?;  # Regulatory type, e.g. 
                                            # Investigational or Authorized 
    fhir:MedicinalProductDefinition.domain @<CodeableConcept>?;  # If this medicine applies to human 
                                            # or veterinary uses 
    fhir:MedicinalProductDefinition.version @<string>?;  # A business identifier relating to 
                                            # a specific version of the product, 
                                            # this is commonly used to support 
                                            # revisions to an existing product 
    fhir:MedicinalProductDefinition.status @<CodeableConcept>?;  # The status within the lifecycle of 
                                            # this product record. A high-level 
                                            # status, this is not intended to 
                                            # duplicate details carried 
                                            # elsewhere such as legal status, or 
                                            # authorization status 
    fhir:MedicinalProductDefinition.statusDate @<dateTime>?;  # The date at which the given status 
                                            # became applicable 
    fhir:MedicinalProductDefinition.description @<markdown>?;  # General description of this product
    fhir:MedicinalProductDefinition.combinedPharmaceuticalDoseForm @<CodeableConcept>?;  # The dose form for a single part 
                                            # product, or combined form of a 
                                            # multiple part product 
    fhir:MedicinalProductDefinition.indication @<markdown>?;  # Description of indication(s) for 
                                            # this product, used when structured 
                                            # indications are not required. In 
                                            # cases where structured indications 
                                            # are required, they are captured 
                                            # using the ClinicalUseIssue 
                                            # resource. An indication is a 
                                            # medical situation for which using 
                                            # the product is appropriate 
    fhir:MedicinalProductDefinition.legalStatusOfSupply @<CodeableConcept>?;  # The legal status of supply of the 
                                            # medicinal product as classified by 
                                            # the regulator 
    fhir:MedicinalProductDefinition.additionalMonitoringIndicator @<CodeableConcept>?;  # Whether the Medicinal Product is 
                                            # subject to additional monitoring 
                                            # for regulatory reasons 
    fhir:MedicinalProductDefinition.specialMeasures @<CodeableConcept>*;  # Whether the Medicinal Product is 
                                            # subject to special measures for 
                                            # regulatory reasons 
    fhir:MedicinalProductDefinition.paediatricUseIndicator @<CodeableConcept>?;  # If authorised for use in children
    fhir:MedicinalProductDefinition.classification @<CodeableConcept>*;  # Allows the product to be 
                                            # classified by various systems 
    fhir:MedicinalProductDefinition.characteristic @<CodeableConcept>*;  # Allows the key product features to 
                                            # be recorded, such as "sugar free", 
                                            # "modified release", "parallel 
                                            # import" 
    fhir:MedicinalProductDefinition.marketingStatus @<MarketingStatus>*;  # Marketing status of the medicinal 
                                            # product, in contrast to marketing 
                                            # authorization 
    fhir:MedicinalProductDefinition.packagedMedicinalProduct @<CodeableReference>*;  # Package representation for the 
                                            # product 
    fhir:MedicinalProductDefinition.ingredient @<CodeableReference>*;  # The ingredients of this medicinal 
                                            # product - when not detailed in 
                                            # other resources. This is only 
                                            # needed if the ingredients are not 
                                            # specified by the 
                                            # AdministrableProductDefinition or 
                                            # via the PackagedProductDefinition 
                                            # references above. In cases where 
                                            # those levels of detail are not 
                                            # used, the ingredients may be 
                                            # specified directly here 
    fhir:MedicinalProductDefinition.impurity @<Reference>*;  # Any component of the drug product 
                                            # which is not the chemical entity 
                                            # defined as the drug substance or 
                                            # an excipient in the drug product. 
                                            # This includes process-related 
                                            # impurities and contaminants, 
                                            # product-related impurities 
                                            # including degradation products 
    fhir:MedicinalProductDefinition.attachedDocument @<Reference>*;  # Additional information or 
                                            # supporting documentation about the 
                                            # medicinal product 
    fhir:MedicinalProductDefinition.masterFile @<Reference>*;  # A master file for to the medicinal 
                                            # product (e.g. Pharmacovigilance 
                                            # System Master File) 
    fhir:MedicinalProductDefinition.contact @<MedicinalProductDefinition.contact>*;  # A product specific contact, person 
                                            # (in a role), or an organization 
    fhir:MedicinalProductDefinition.clinicalTrial @<Reference>*;  # Clinical trials or studies that 
                                            # this product is involved in 
    fhir:MedicinalProductDefinition.name @<MedicinalProductDefinition.name>+;  # The product's name, including full 
                                            # name and possibly coded parts 
    fhir:MedicinalProductDefinition.crossReference @<MedicinalProductDefinition.crossReference>*;  # Reference to another product, e.g. 
                                            # for linking authorised to 
                                            # investigational product 
    fhir:MedicinalProductDefinition.operation @<MedicinalProductDefinition.operation>*;  # A manufacturing or administrative 
                                            # process or step associated with 
                                            # (or performed on) the medicinal 
                                            # product 
    fhir:MedicinalProductDefinition.administrableProduct @<MedicinalProductDefinition.administrableProduct>*;  # The product in its final form, 
                                            # mixed from its components if 
                                            # necessary, and ready to be 
                                            # administered to the patient. Also 
                                            # known as the 'Pharmaceutical 
                                            # Product'. Can repeat, for cases 
                                            # where the product has components 
                                            # that result in more than one 
                                            # administrable item 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A product specific contact, person (in a role), or an organization
<MedicinalProductDefinition.contact> 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:MedicinalProductDefinition.contact.type @<CodeableConcept>?;  # Allows the contact to be 
                                            # classified, for example QPPV, 
                                            # Pharmacovigilance Enquiry 
                                            # Information 
    fhir:MedicinalProductDefinition.contact.contact @<Reference>;  # A product specific contact, person 
                                            # (in a role), or an organization 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Reference to another product, e.g. for linking authorised to investigational product
<MedicinalProductDefinition.crossReference> 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:MedicinalProductDefinition.crossReference.product @<CodeableReference>;  # Reference to another product, e.g. 
                                            # for linking authorised to 
                                            # investigational product 
    fhir:MedicinalProductDefinition.crossReference.type @<CodeableConcept>?;  # The type of relationship, for 
                                            # instance branded to generic, 
                                            # product to development product 
                                            # (investigational), parallel import 
                                            # version 
    fhir:index xsd:integer?                 # Relative position in a list
}

# The product in its final form, mixed from its components if necessary, and ready to be administered to the patient. Also known as the 'Pharmaceutical Product'. Can repeat, for cases where the product has components that result in more than one administrable item
<MedicinalProductDefinition.administrableProduct> 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:MedicinalProductDefinition.administrableProduct.route @<CodeableConcept>*;  # The path by which the product is 
                                            # taken into or makes contact with 
                                            # the body. In some regions this is 
                                            # referred to as the licenced or 
                                            # approved route 
    fhir:MedicinalProductDefinition.administrableProduct.product @<Reference>?;  # Full description of the 
                                            # administrable product 
    fhir:index xsd:integer?                 # Relative position in a list
}

# The product's name, including full name and possibly coded parts
<MedicinalProductDefinition.name> 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:MedicinalProductDefinition.name.productName @<string>;  # The full product name
    fhir:MedicinalProductDefinition.name.type @<CodeableConcept>?;  # Type of product name, such as 
                                            # rINN, BAN, Proprietary, 
                                            # Non-Proprietary 
    fhir:MedicinalProductDefinition.name.namePart @<MedicinalProductDefinition.name.namePart>*;  # Coding words or phrases of the name
    fhir:MedicinalProductDefinition.name.countryLanguage @<MedicinalProductDefinition.name.countryLanguage>*;  # Country where the name applies
    fhir:index xsd:integer?                 # Relative position in a list
}

# A manufacturing or administrative process or step associated with (or performed on) the medicinal product
<MedicinalProductDefinition.operation> 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:MedicinalProductDefinition.operation.type @<CodeableReference>?;  # The type of manufacturing 
                                            # operation e.g. manufacturing 
                                            # itself, re-packaging. This may be 
                                            # a subtype of some other wider 
                                            # scope of authorized operation, 
                                            # referenced by the authorization 
                                            # attribute 
    fhir:MedicinalProductDefinition.operation.effectiveDate @<Period>?;  # Date range of applicability
    fhir:MedicinalProductDefinition.operation.organization @<Reference>*;  # The organization or establishment 
                                            # responsible for (or associated 
                                            # with) the particular process or 
                                            # step, examples include the 
                                            # manufacturer, importer, agent 
    fhir:MedicinalProductDefinition.operation.authorization @<Reference>?;  # An authorization for this process, 
                                            # either as a logical reference, 
                                            # holding just an identifier, or a 
                                            # full reference to a resource that 
                                            # captures the details. The 
                                            # authorization may possibly apply 
                                            # to several products or a wider 
                                            # scope of process of which this is 
                                            # a part 
    fhir:MedicinalProductDefinition.operation.confidentialityIndicator @<CodeableConcept>?;  # Specifies whether this particular 
                                            # business or manufacturing process 
                                            # is considered proprietary or 
                                            # confidential 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Coding words or phrases of the name
<MedicinalProductDefinition.name.namePart> 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:MedicinalProductDefinition.name.namePart.part @<string>;  # A fragment of a product name
    fhir:MedicinalProductDefinition.name.namePart.type @<CodeableConcept>;  # Identifying type for this part of 
                                            # the name (e.g. strength part) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Country where the name applies
<MedicinalProductDefinition.name.countryLanguage> 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:MedicinalProductDefinition.name.countryLanguage.country @<CodeableConcept>;  # Country code for where this name 
                                            # applies 
    fhir:MedicinalProductDefinition.name.countryLanguage.jurisdiction @<CodeableConcept>?;  # Jurisdiction code for where this 
                                            # name applies 
    fhir:MedicinalProductDefinition.name.countryLanguage.language @<CodeableConcept>;  # Language code for this name
    fhir:index xsd:integer?                 # Relative position in a list
}

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

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

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

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

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

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

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

# The marketing status describes the date when a medicinal product is actually put on the market or the date as of which it is no longer available
<MarketingStatus> 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:MarketingStatus.country @<CodeableConcept>?;  # The country in which the marketing 
                                            # authorisation has been granted 
                                            # shall be specified It should be 
                                            # specified using the ISO 3166 ‑ 1 
                                            # alpha-2 code elements 
    fhir:MarketingStatus.jurisdiction @<CodeableConcept>?;  # Where a Medicines Regulatory 
                                            # Agency has granted a marketing 
                                            # authorisation for which specific 
                                            # provisions within a jurisdiction 
                                            # apply, the jurisdiction can be 
                                            # specified using an appropriate 
                                            # controlled terminology The 
                                            # controlled term and the controlled 
                                            # term identifier shall be specified 
    fhir:MarketingStatus.status @<CodeableConcept>;  # This attribute provides 
                                            # information on the status of the 
                                            # marketing of the medicinal product 
                                            # See ISO/TS 20443 for more 
                                            # information and examples 
    fhir:MarketingStatus.dateRange @<Period>?;  # The date when the Medicinal 
                                            # Product is placed on the market by 
                                            # the Marketing Authorisation Holder 
                                            # (or where applicable, the 
                                            # manufacturer/distributor) in a 
                                            # country and/or jurisdiction shall 
                                            # be provided A complete date 
                                            # consisting of day, month and year 
                                            # shall be specified using the ISO 
                                            # 8601 date format NOTE “Placed on 
                                            # the market” refers to the release 
                                            # of the Medicinal Product into the 
                                            # distribution chain 
    fhir:MarketingStatus.restoreDate @<dateTime>?;  # The date when the Medicinal 
                                            # Product is placed on the market by 
                                            # the Marketing Authorisation Holder 
                                            # (or where applicable, the 
                                            # manufacturer/distributor) in a 
                                            # country and/or jurisdiction shall 
                                            # be provided A complete date 
                                            # consisting of day, month and year 
                                            # shall be specified using the ISO 
                                            # 8601 date format NOTE “Placed on 
                                            # the market” refers to the release 
                                            # of the Medicinal Product into the 
                                            # distribution chain 
    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
}

# Reference to a resource or a concept
<CodeableReference> CLOSED {
    fhir:Element.id @<string>?;             # Unique id for inter-element 
                                            # referencing 
    fhir:Element.extension @<Extension>*;   # Additional content defined by 
                                            # implementations 
    fhir:CodeableReference.concept @<CodeableConcept>?;  # Reference to a concept (by class)
    fhir:CodeableReference.reference @<Reference>?;  # Reference to a resource (by 
                                            # instance) 
    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
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# 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" "CanonicalResource" "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" "InventoryReport" "Invoice" "Library" "Linkage" "List" "Location" "ManufacturedItemDefinition" "Measure" "MeasureReport" "Medication" "MedicationAdministration" "MedicationDispense" "MedicationKnowledge" "MedicationRequest" "MedicationUsage" "MedicinalProductDefinition" "MessageDefinition" "MessageHeader" "MetadataResource" "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"]

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

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

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

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

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

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

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

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

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

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

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

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

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

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