Value Set MIF 2.2 Definition

From HL7Wiki
Revision as of 14:03, 1 August 2016 by TedKlein (talk | contribs) (→‎Schema Excerpt)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

MIF 2.2 Excerpt of Value Set Definition Syntax (HL7 VSD)

This is an excerpt of the HL7 MIF 2.2 schema which can be used for reference when reading the Value Set Definition STU document.


Schema Excerpt

<xs:complexType name="ValueSet">
   <xs:annotation>
     <xs:documentation>Information about a value set that drawn from one or more code systems.</xs:documentation>
     <xs:documentation>UML: A stereotype on Package</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:extension base="ModelElement">
       <xs:sequence>
         <xs:group ref="BusinessName"/>
         <xs:element name="annotations" type="ValueSetAnnotations" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Descriptive information about this value set.</xs:documentation>
             <xs:documentation>UML: A collector for the comments and constraints associated with a Value Set.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="statusInfo" type="VocabularyItemStatus" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Identifies status information for this value set over time</xs:documentation>
             <xs:documentation>UML: A tag on ConceptDomain stereotype</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="version" type="ValueSetVersion" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Identifies a specific version of the value set</xs:documentation>
             <xs:documentation>UML: A contained package within the ValueSet stereotype</xs:documentation>
           </xs:annotation>
         </xs:element>
       </xs:sequence>
       <xs:attribute name="id" type="Oid" use="required">
         <xs:annotation>
           <xs:documentation>A unique identifier for the value-set.</xs:documentation>
           <xs:documentation>UML: Corresponds to Package.name</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attribute name="isImmutable" type="xs:boolean" use="optional" default="false">
         <xs:annotation>
           <xs:documentation>If true, indicates that the value set cannot be revised</xs:documentation>
           <xs:documentation>UML: Tag on ValueSet stereotype</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attribute name="isPostCoordinationProhibited" type="xs:boolean" use="optional" default="false">
         <xs:annotation>
           <xs:documentation>If true, indicates that post-coordinated expressions are excluded as members of the value set.  This acts as a final filter on the results of the value set expansion.  I.e. Peform expansion of the value set as usual.  Then, if this flag is true, remove all post-coordinated expressions from the expansion to arrive at the "final" expansion.</xs:documentation>
           <xs:documentation>UML: Tag on ValueSet stereotype</xs:documentation>
           <xs:documentation>Alpha</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attribute name="name" type="LongDescriptiveName" use="optional">
         <xs:annotation>
           <xs:documentation>A unique descriptive name for the value set</xs:documentation>
           <xs:documentation>UML: Tag on ValueSet stereotype</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attribute name="use" type="ValueSetUseKinds" default="exchange">
         <xs:annotation>
           <xs:documentation>Identifies the expected purpose(s) of this value set.  Also determines what useKinds will be included when an expressional value set is enumerated.</xs:documentation>
           <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
           <xs:documentation>Beta</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attributeGroup ref="SortKeyOptional"/>
     </xs:extension>
   </xs:complexContent>
 </xs:complexType>
 <xs:simpleType name="ValueSetUseKinds">
   <xs:annotation>
     <xs:documentation>Allows a value set to have multiple uses.</xs:documentation>
     <xs:documentation>UML: Enumerated tag with upper cardinality greater than 1</xs:documentation>
     <xs:documentation>Beta</xs:documentation>
   </xs:annotation>
   <xs:list itemType="ValueSetUseKind"/>
 </xs:simpleType>
 <xs:complexType name="ValueSetAnnotations">
   <xs:annotation>
     <xs:documentation>Descriptive information about the containing ValueSet.</xs:documentation>
     <xs:documentation>UML: A collector for the comments and constraints associated with a ValueSet.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Annotations">
       <xs:sequence>
         <xs:element name="documentation" type="ValueSetDocumentation" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Documentation related to the ValueSet</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="appInfo" type="ValueSetAppInfo" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Supporting programmatic information related to the ValueSet which has descriptive componenents</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ValueSetDocumentation">
   <xs:annotation>
     <xs:documentation>Contains 'plain' comments relating to a ValueSet.  (Plain comments are those with no additional XML elements, except possibly one which identifies the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'plain' commments associated with a ValueSet.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Documentation">
       <xs:sequence>
         <xs:choice minOccurs="0">
           <xs:group ref="Description"/>
         </xs:choice>
         <xs:group ref="UsageConstraint" minOccurs="0"/>
         <xs:group ref="UsageNotes" minOccurs="0"/>
         <xs:group ref="Rationale" minOccurs="0"/>
         <xs:group ref="Requirements" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Beta</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="DesignComment" minOccurs="0"/>
         <xs:group ref="StabilityRemarks" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Beta</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="OtherAnnotation" minOccurs="0"/>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ValueSetAppInfo">
   <xs:annotation>
     <xs:documentation>Contains complex comments relating to a ValueSet.  (Complex comments are those with additional XML elements, above and beyond the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'complex' commments associated with a ValueSet.</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="AppInfo">
       <xs:sequence>
         <xs:group ref="OpenIssue" minOccurs="0"/>
         <xs:group ref="BallotComment" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Alpha</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="ChangeRequest" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Alpha</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="DeprecationInfo" minOccurs="0"/>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ValueSetVersion">
   <xs:annotation>
     <xs:documentation>Identifes a specific version of a given value set</xs:documentation>
     <xs:documentation>UML: Stereotype on Package</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:extension base="ModelElement">
       <xs:sequence>
         <xs:element name="usesCodeSystemSupplement" type="Oid" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Lists code system extensions used by this value-set</xs:documentation>
             <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
             <xs:documentation>Beta</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="usesCodeSystem" type="SupportedCodeSystem" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Lists code systems used by this value-set</xs:documentation>
             <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
             <xs:documentation>Derived: Extract the list of code systems referenced by content</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="supportedLanguage" type="SupportedLanguage" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Lists languages fully supported (print names for all concepts exist in the language) used by this value-set</xs:documentation>
             <xs:documentation>UML: Tag on stereotype</xs:documentation>
             <xs:documentation>Derived: Extract the list of languages that have print names for all concepts</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="associatedConceptProperty" type="SimpleConceptProperty" minOccurs="0" maxOccurs="unbounded">
           <xs:annotation>
             <xs:documentation>Concept Properties that are associated with this Value Set Version because the property is DECLARED as value-set associatable by the Code System from which this value set draws its enumerated content.</xs:documentation>
             <xs:documentation>UML: Tag on stereotype</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="content" type="ContentDefinition">
           <xs:annotation>
             <xs:documentation>Defines the codes from a given code system allowed as part of the value set version</xs:documentation>
             <xs:documentation>UML: Identifies what EnumerationItems should be imported into this Package</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="nonSelectableContent" type="ContentDefinition" minOccurs="0">
           <xs:annotation>
             <xs:documentation>If present, overrides the default "selectable" characteristic of the codes defined by 'content' such that all codes are selectable with the exception of those found within this value-set.</xs:documentation>
             <xs:documentation>UML: Tag on stereotype</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="enumeratedContent" type="VocabularyCodeRefs" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Provides an explicit enumeration of the codes from a given code system associated with the value set version based on its definition</xs:documentation>
             <xs:documentation>UML: Identifies what EnumerationItems have been imported into this Package</xs:documentation>
             <xs:documentation>Derive: Todo - explicit enumeration of all codes in this value set version based on the expressions within 'content'</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="exampleContent" type="VocabularyCodeRefs" minOccurs="0">
           <xs:annotation>
             <xs:documentation>A subset of the content of the value-set for publication purposes to provide an example of the codes available in the value-set</xs:documentation>
             <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
           </xs:annotation>
         </xs:element>
       </xs:sequence>
       <xs:attribute name="versionDate" type="xs:date" use="required">
         <xs:annotation>
           <xs:documentation>The date on which this particular value set version came into being</xs:documentation>
           <xs:documentation>UML: Corresponds to Package.name</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attribute name="versionTime" type="xs:time" default="00:00:00">
         <xs:annotation>
           <xs:documentation>The time on which this particular value set version came into being.  Only needed when multiple versions of a value-set are created on a given day.</xs:documentation>
           <xs:documentation>UML: Corresponds to Package.name</xs:documentation>
         </xs:annotation>
       </xs:attribute>
     </xs:extension>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinition">
   <xs:annotation>
     <xs:documentation>Represents a value set built up of the inclusion, exclusion and/or union of multiple other value sets.  If no constraints are specified, then the content is the complete set of codes in the referenced code system.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="annotations" type="ContentDefinitionAnnotations" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Descriptive information about the content definition.</xs:documentation>
         <xs:documentation>UML: A collector for the comments and constraints associated with a vocabulary model.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="drawnFromCodeSystem" type="CodeSystemUsage" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Identifies the code system used for this value set.  Must not be specified if the content definition applies to multiple code systems.  Child content definitions must be consistent with the declared code system.</xs:documentation>
         <xs:documentation>UML: Package the enumeration items are drawn from</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="usesCodeSystemSupplement" type="Oid" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Lists code system extensions used by this value-set</xs:documentation>
         <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
         <xs:documentation>Beta</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:choice minOccurs="0">
       <xs:element name="combinedContent" type="CombinedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived from multiple other value sets</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="codeBasedContent" type="CodeBasedContentDefinition" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>Content based on a code and its related codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="propertyBasedContent" type="PropertyBasedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through constraints on the properties of allowed codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="relationshipBasedContent" type="RelationshipBasedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through constraints on the relationships held by allowed codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="codeFilterContent" type="CodeFilterContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through explic filters on code mnemonics</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="nonComputableContent" type="TranslatableText">
         <xs:annotation>
           <xs:documentation>Defines a value-set in a non-computable manner (or at least a manner that is not supported by MIF representation).  This may include free-hand descriptions, pseudo-expressions or even formal expressions against some local terminology data model.  NOTE: It is an error for structural domains and attributes to be bound to a value-set with non-computable content.</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="valueSetRef" type="VocabularyValueSetRef">
         <xs:annotation>
           <xs:documentation>Content imported from another value set reference</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
     </xs:choice>
     <xs:element name="allowedRepresentation" type="Representation" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>If present, identifies representation or representations from the specified code system are allowed to be exposed.  If not specified, then the default 'preferred' representations for each representation kind will be used.</xs:documentation>
         <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="allowedQualifiers" type="QualifierRelationshipBasedContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies any constraints on qualifiers for codes associated with this value-set.  (The default set of qualifiers is all of those supported by the code system.  Presence of this element reduces those allowed to only those allowed by the value-set, though rules about what qualifiers apply for which codes are still valid.)</xs:documentation>
         <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
         <xs:documentation>Alpha</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="areBaseQualifiersUnlimited" type="xs:boolean" default="false">
     <xs:annotation>
       <xs:documentation>If true, indicates that there are no constraints on qualifiers.  If false, only those qualifiers found in allowedQualifiers with an upper cardinality greater than 0 are permitted.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
       <xs:documentation>Beta</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="postCoordinationPreference" type="PostCoordinationPreferenceKind" use="optional">
     <xs:annotation>
       <xs:documentation>Indicates how decisions between post-coordinated and pre-coordinated representations should be handled.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
       <xs:documentation>Alpha</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="QualifierRelationshipBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Alpha</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:extension base="RelationshipBasedContentDefinition">
       <xs:attribute name="postCoordinationPreference" type="PostCoordinationPreferenceKind" use="optional">
         <xs:annotation>
           <xs:documentation>Indicates how decisions between post-coordinated and pre-coordinated representations for this specific qualifier relationship should be handled.</xs:documentation>
           <xs:documentation>UML: Part of a complex tag</xs:documentation>
           <xs:documentation>Alpha</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attributeGroup ref="SortKeyOptional">
         <xs:annotation>
           <xs:documentation>Identifies the order in which qualfiers can be specified</xs:documentation>
         </xs:annotation>
       </xs:attributeGroup>
     </xs:extension>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionAnnotations">
   <xs:annotation>
     <xs:documentation>Descriptive information about the containing ContentDefinition.</xs:documentation>
     <xs:documentation>UML: A collector for the comments and constraints associated with a ContentDefinition.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Annotations">
       <xs:sequence>
         <xs:element name="documentation" type="ContentDefinitionDocumentation" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Documentation related to the ContentDefinition</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="appInfo" type="ContentDefinitionAppInfo" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Supporting programmatic information related to the ContentDefinition which has descriptive componenents</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionDocumentation">
   <xs:annotation>
     <xs:documentation>Contains 'plain' comments relating to a ContentDefinition.  (Plain comments are those with no additional XML elements, except possibly one which identifies the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'plain' commments associated with a ContentDefinition.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Documentation">
       <xs:sequence>
         <xs:choice minOccurs="0">
           <xs:group ref="Description"/>
         </xs:choice>
         <xs:group ref="DesignComment" minOccurs="0"/>
         <xs:group ref="StabilityRemarks" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Beta</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="OtherAnnotation" minOccurs="0"/>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionAppInfo">
   <xs:annotation>
     <xs:documentation>Contains complex comments relating to a ContentDefinition.  (Complex comments are those with additional XML elements, above and beyond the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'complex' commments associated with a ContentDefinition.</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="AppInfo">
       <xs:sequence>
         <xs:group ref="OpenIssue" minOccurs="0"/>
         <xs:group ref="ChangeRequest" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Alpha</xs:documentation>
           </xs:annotation>
         </xs:group>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="CodeSystemUsage">
   <xs:annotation>
     <xs:documentation>Identifies the code system (and any partitions) that are being used</xs:documentation>
     <xs:documentation>UML: Reference to a package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="usesCodeSystemPartition" type="LongDescriptiveName" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies the code system partitions that are leveraged as part of the value set definition.  If a code system is partitioned and no partitions are listed, then the assumption is that only the base code system is supported</xs:documentation>
         <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
         <xs:documentation>Beta</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="codeSystem" type="Oid" use="required">
     <xs:annotation>
       <xs:documentation>The code system from which the codes are drawn.</xs:documentation>
       <xs:documentation>UML: References the package from which the EnumerationItems should be imported</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="versionDate" type="xs:date" use="optional">
     <xs:annotation>
       <xs:documentation>If present, identifies the code system version from which the codes are drawn.  If not specified, the current version of the code system is assumed.</xs:documentation>
       <xs:documentation>UML: References the package from which the EnumerationItems should be imported</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="descriptiveName" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Used as a descriptive label for publication purposes in situations where the OID cannot be resolved to a code system name</xs:documentation>
       <xs:documentation>UML: Tag on complex object.</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="CombinedContentDefinition">
   <xs:annotation>
     <xs:documentation>Allows a content definition to be expressed as a complex relationship of multiple other content definitions</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="unionWithContent" type="ContentDefinition" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies that the referenced content definitions are all considered to be part of this content definition</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="intersectionWithContent" type="ContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the overall content definition should be considered to be the combination of all "unioned" value sets intersected with each of the 'intersection with' content definitions</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="excludeContent" type="ContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies codes that should be removed from the set of codes resulting from the previous unions and intersections</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
 </xs:complexType>
 <xs:complexType name="CodeBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Identifies a specific code to include, possibly with related codes</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="headCodes" type="ContentDefinition" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Defines the "set" of codes for which related codes should be included.  May only appear (and must appear) if "code" does not appear.  Used when you want to walk a particular relationship type from a whole group of codes rather than just a single code.</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="includeRelatedCodes" type="IncludeRelatedCodes" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies relationship types from the current code to other codes that should also be included</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="includeHeadCode" type="xs:boolean" use="optional" default="true">
     <xs:annotation>
       <xs:documentation>If true, the code or codes listed in headCodes and @code should be included in the value set, if false, only related codes should be included</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="code" type="ShortDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies the specific code to be included in the value set.  Note: Codes for synonyms must be explicitly listed to be considered part of the value set.</xs:documentation>
       <xs:documentation>UML: References a specific Enumeration Item</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="codeLabel" type="ShortDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Provides a descriptive label to be used for value set publishing purposes when the actual display name of the referenced code cannot be resolved.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attributeGroup ref="SortKeyOptional">
     <xs:annotation>
       <xs:documentation>This is used to indicate a preferred sort order for display of concepts in enumerated value sets</xs:documentation>
     </xs:annotation>
   </xs:attributeGroup>
 </xs:complexType>
 <xs:complexType name="IncludeRelatedCodes">
   <xs:annotation>
     <xs:documentation>Defines related codes to be included in a valueset</xs:documentation>
     <xs:documentation>UML: Part of complex tag</xs:documentation>
   </xs:annotation>
   <xs:attribute name="relationshipName" type="FormalProperName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies the type of relationship to trace when including codes</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="relationshipTraversal" type="RelationshipTraversalKind" use="required">
     <xs:annotation>
       <xs:documentation>Identifies what set of codes to include when traversing the relationship</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="PropertyBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Filters the codes to include based on properties.  If includeProperties are specified, only those having all of the 'included' properties and not having any of the 'excluded' properties are included.  Otherwise all those codes without any of the 'excluded' properties are included.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="includeWithProperty" type="ConceptPropertyRef" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the value set should be filtered to only include concepts from the code system with the specified property</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="excludeWithProperty" type="ConceptPropertyRef" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the value set should be filtered to only concepts from the code system that do not have the specified property</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
 </xs:complexType>
 <xs:complexType name="ConceptPropertyRef">
   <xs:annotation>
     <xs:documentation>Used to reference a coded concept property, possibly with a specific value or matching a given expression.  If neither value nor expresson are specified, the reference will match all concepts with the specified property regardless of value.</xs:documentation>
     <xs:documentation>UML: Reference to a stereotype property</xs:documentation>
   </xs:annotation>
   <xs:attribute name="name" type="ShortDescriptiveName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies the name of the property being referenced</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="value" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies the value the referenced property must have.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="expression" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies a regular expression that must be matched by the referenced property</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="RelationshipBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Allows referencing a relationship to a code or group of codes</xs:documentation>
     <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="targetConcepts" type="ContentDefinition" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Identifies the list of codes where at least one of the codes must exist for the relationship to be true.  If not specified, then the valueset is considered unbounded.  I.e. The relationship may exist for any code.</xs:documentation>
         <xs:documentation>UML: Defines a set of code enumerations at the end of the dependency</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="relationshipName" type="BasicFormalName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies what kind of relationship is being referenced</xs:documentation>
       <xs:documentation>UML: Specialization of the dependency stereotype</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attributeGroup ref="MultiplicityRangeOptional">
     <xs:annotation>
       <xs:documentation>Identifies the minimum and/or maximum number of times this type of qualifier is allowed.  (Set max to 0 to prohibit a qualifier from being specified)</xs:documentation>
     </xs:annotation>
   </xs:attributeGroup>
 </xs:complexType>
 <xs:complexType name="CodeFilterContentDefinition">
   <xs:annotation>
     <xs:documentation>Identifies the codes to be included by describing characteristics of the code mnemonic.  Codes must match all of the characteristics specified.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="expression" type="xs:anyType">
       <xs:annotation>
         <xs:documentation>Defines a regular expression that must be true when applied to a code for it to be included in the allowed content.  Content MUST be a valid regular expression, as used in 23c schema definition.</xs:documentation>
         <xs:documentation>UML: Part of a complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="expressionType" type="CodeFilterExpressionKind" use="required">
     <xs:annotation>
       <xs:documentation>Indicates the type of expression to be used to select the codes.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="Representation">
   <xs:annotation>
     <xs:documentation>Allows reference to a particular concept representation</xs:documentation>
     <xs:documentation>UML: Part of a complex tag</xs:documentation>
   </xs:annotation>
   <xs:attribute name="name" type="ShortDescriptiveName" use="required">
     <xs:annotation>
       <xs:documentation>The name of the supported concept representation being referenced</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="ContentDefinition">
   <xs:annotation>
     <xs:documentation>Represents a value set built up of the inclusion, exclusion and/or union of multiple other value sets.  If no constraints are specified, then the content is the complete set of codes in the referenced code system.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="annotations" type="ContentDefinitionAnnotations" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Descriptive information about the content definition.</xs:documentation>
         <xs:documentation>UML: A collector for the comments and constraints associated with a vocabulary model.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="drawnFromCodeSystem" type="CodeSystemUsage" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Identifies the code system used for this value set.  Must not be specified if the content definition applies to multiple code systems.  Child content definitions must be consistent with the declared code system.</xs:documentation>
         <xs:documentation>UML: Package the enumeration items are drawn from</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="usesCodeSystemSupplement" type="Oid" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Lists code system extensions used by this value-set</xs:documentation>
         <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
         <xs:documentation>Beta</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:choice minOccurs="0">
       <xs:element name="combinedContent" type="CombinedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived from multiple other value sets</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="codeBasedContent" type="CodeBasedContentDefinition" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>Content based on a code and its related codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="propertyBasedContent" type="PropertyBasedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through constraints on the properties of allowed codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="relationshipBasedContent" type="RelationshipBasedContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through constraints on the relationships held by allowed codes</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="codeFilterContent" type="CodeFilterContentDefinition">
         <xs:annotation>
           <xs:documentation>Content derived through explic filters on code mnemonics</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="nonComputableContent" type="TranslatableText">
         <xs:annotation>
           <xs:documentation>Defines a value-set in a non-computable manner (or at least a manner that is not supported by MIF representation).  This may include free-hand descriptions, pseudo-expressions or even formal expressions against some local terminology data model.  NOTE: It is an error for structural domains and attributes to be bound to a value-set with non-computable content.</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
       <xs:element name="valueSetRef" type="VocabularyValueSetRef">
         <xs:annotation>
           <xs:documentation>Content imported from another value set reference</xs:documentation>
           <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
         </xs:annotation>
       </xs:element>
     </xs:choice>
     <xs:element name="allowedRepresentation" type="Representation" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>If present, identifies representation or representations from the specified code system are allowed to be exposed.  If not specified, then the default 'preferred' representations for each representation kind will be used.</xs:documentation>
         <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="allowedQualifiers" type="QualifierRelationshipBasedContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies any constraints on qualifiers for codes associated with this value-set.  (The default set of qualifiers is all of those supported by the code system.  Presence of this element reduces those allowed to only those allowed by the value-set, though rules about what qualifiers apply for which codes are still valid.)</xs:documentation>
         <xs:documentation>UML: Tag on complex stereotype</xs:documentation>
         <xs:documentation>Alpha</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="areBaseQualifiersUnlimited" type="xs:boolean" default="false">
     <xs:annotation>
       <xs:documentation>If true, indicates that there are no constraints on qualifiers.  If false, only those qualifiers found in allowedQualifiers with an upper cardinality greater than 0 are permitted.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
       <xs:documentation>Beta</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="postCoordinationPreference" type="PostCoordinationPreferenceKind" use="optional">
     <xs:annotation>
       <xs:documentation>Indicates how decisions between post-coordinated and pre-coordinated representations should be handled.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
       <xs:documentation>Alpha</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="QualifierRelationshipBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Alpha</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:extension base="RelationshipBasedContentDefinition">
       <xs:attribute name="postCoordinationPreference" type="PostCoordinationPreferenceKind" use="optional">
         <xs:annotation>
           <xs:documentation>Indicates how decisions between post-coordinated and pre-coordinated representations for this specific qualifier relationship should be handled.</xs:documentation>
           <xs:documentation>UML: Part of a complex tag</xs:documentation>
           <xs:documentation>Alpha</xs:documentation>
         </xs:annotation>
       </xs:attribute>
       <xs:attributeGroup ref="SortKeyOptional">
         <xs:annotation>
           <xs:documentation>Identifies the order in which qualfiers can be specified</xs:documentation>
         </xs:annotation>
       </xs:attributeGroup>
     </xs:extension>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionAnnotations">
   <xs:annotation>
     <xs:documentation>Descriptive information about the containing ContentDefinition.</xs:documentation>
     <xs:documentation>UML: A collector for the comments and constraints associated with a ContentDefinition.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Annotations">
       <xs:sequence>
         <xs:element name="documentation" type="ContentDefinitionDocumentation" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Documentation related to the ContentDefinition</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
         <xs:element name="appInfo" type="ContentDefinitionAppInfo" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Supporting programmatic information related to the ContentDefinition which has descriptive componenents</xs:documentation>
             <xs:documentation>UML: Component of the Annotation object</xs:documentation>
           </xs:annotation>
         </xs:element>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionDocumentation">
   <xs:annotation>
     <xs:documentation>Contains 'plain' comments relating to a ContentDefinition.  (Plain comments are those with no additional XML elements, except possibly one which identifies the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'plain' commments associated with a ContentDefinition.  (Consider rendering the definition or description annotation into ModelElement.documentation)</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="Documentation">
       <xs:sequence>
         <xs:choice minOccurs="0">
           <xs:group ref="Description"/>
         </xs:choice>
         <xs:group ref="DesignComment" minOccurs="0"/>
         <xs:group ref="StabilityRemarks" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Beta</xs:documentation>
           </xs:annotation>
         </xs:group>
         <xs:group ref="OtherAnnotation" minOccurs="0"/>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="ContentDefinitionAppInfo">
   <xs:annotation>
     <xs:documentation>Contains complex comments relating to a ContentDefinition.  (Complex comments are those with additional XML elements, above and beyond the 'type' of comment.)</xs:documentation>
     <xs:documentation>UML: A collector for 'complex' commments associated with a ContentDefinition.</xs:documentation>
   </xs:annotation>
   <xs:complexContent>
     <xs:restriction base="AppInfo">
       <xs:sequence>
         <xs:group ref="OpenIssue" minOccurs="0"/>
         <xs:group ref="ChangeRequest" minOccurs="0">
           <xs:annotation>
             <xs:documentation>Alpha</xs:documentation>
           </xs:annotation>
         </xs:group>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
 </xs:complexType>
 <xs:complexType name="CodeSystemUsage">
   <xs:annotation>
     <xs:documentation>Identifies the code system (and any partitions) that are being used</xs:documentation>
     <xs:documentation>UML: Reference to a package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="usesCodeSystemPartition" type="LongDescriptiveName" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies the code system partitions that are leveraged as part of the value set definition.  If a code system is partitioned and no partitions are listed, then the assumption is that only the base code system is supported</xs:documentation>
         <xs:documentation>UML: packages that have elements imported into this package</xs:documentation>
         <xs:documentation>Beta</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="codeSystem" type="Oid" use="required">
     <xs:annotation>
       <xs:documentation>The code system from which the codes are drawn.</xs:documentation>
       <xs:documentation>UML: References the package from which the EnumerationItems should be imported</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="versionDate" type="xs:date" use="optional">
     <xs:annotation>
       <xs:documentation>If present, identifies the code system version from which the codes are drawn.  If not specified, the current version of the code system is assumed.</xs:documentation>
       <xs:documentation>UML: References the package from which the EnumerationItems should be imported</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="descriptiveName" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Used as a descriptive label for publication purposes in situations where the OID cannot be resolved to a code system name</xs:documentation>
       <xs:documentation>UML: Tag on complex object.</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="CombinedContentDefinition">
   <xs:annotation>
     <xs:documentation>Allows a content definition to be expressed as a complex relationship of multiple other content definitions</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="unionWithContent" type="ContentDefinition" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies that the referenced content definitions are all considered to be part of this content definition</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="intersectionWithContent" type="ContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the overall content definition should be considered to be the combination of all "unioned" value sets intersected with each of the 'intersection with' content definitions</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="excludeContent" type="ContentDefinition" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies codes that should be removed from the set of codes resulting from the previous unions and intersections</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
 </xs:complexType>
 <xs:complexType name="CodeBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Identifies a specific code to include, possibly with related codes</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="headCodes" type="ContentDefinition" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Defines the "set" of codes for which related codes should be included.  May only appear (and must appear) if "code" does not appear.  Used when you want to walk a particular relationship type from a whole group of codes rather than just a single code.</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="includeRelatedCodes" type="IncludeRelatedCodes" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Identifies relationship types from the current code to other codes that should also be included</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="includeHeadCode" type="xs:boolean" use="optional" default="true">
     <xs:annotation>
       <xs:documentation>If true, the code or codes listed in headCodes and @code should be included in the value set, if false, only related codes should be included</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="code" type="ShortDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies the specific code to be included in the value set.  Note: Codes for synonyms must be explicitly listed to be considered part of the value set.</xs:documentation>
       <xs:documentation>UML: References a specific Enumeration Item</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="codeLabel" type="ShortDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Provides a descriptive label to be used for value set publishing purposes when the actual display name of the referenced code cannot be resolved.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attributeGroup ref="SortKeyOptional">
     <xs:annotation>
       <xs:documentation>This is used to indicate a preferred sort order for display of concepts in enumerated value sets</xs:documentation>
     </xs:annotation>
   </xs:attributeGroup>
 </xs:complexType>
 <xs:complexType name="IncludeRelatedCodes">
   <xs:annotation>
     <xs:documentation>Defines related codes to be included in a valueset</xs:documentation>
     <xs:documentation>UML: Part of complex tag</xs:documentation>
   </xs:annotation>
   <xs:attribute name="relationshipName" type="FormalProperName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies the type of relationship to trace when including codes</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="relationshipTraversal" type="RelationshipTraversalKind" use="required">
     <xs:annotation>
       <xs:documentation>Identifies what set of codes to include when traversing the relationship</xs:documentation>
       <xs:documentation>UML: Part of complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="PropertyBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Filters the codes to include based on properties.  If includeProperties are specified, only those having all of the 'included' properties and not having any of the 'excluded' properties are included.  Otherwise all those codes without any of the 'excluded' properties are included.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="includeWithProperty" type="ConceptPropertyRef" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the value set should be filtered to only include concepts from the code system with the specified property</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
     <xs:element name="excludeWithProperty" type="ConceptPropertyRef" minOccurs="0" maxOccurs="unbounded">
       <xs:annotation>
         <xs:documentation>Indicates that the value set should be filtered to only concepts from the code system that do not have the specified property</xs:documentation>
         <xs:documentation>UML: Part of complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
 </xs:complexType>
 <xs:complexType name="ConceptPropertyRef">
   <xs:annotation>
     <xs:documentation>Used to reference a coded concept property, possibly with a specific value or matching a given expression.  If neither value nor expresson are specified, the reference will match all concepts with the specified property regardless of value.</xs:documentation>
     <xs:documentation>UML: Reference to a stereotype property</xs:documentation>
   </xs:annotation>
   <xs:attribute name="name" type="ShortDescriptiveName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies the name of the property being referenced</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="value" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies the value the referenced property must have.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attribute name="expression" type="LongDescriptiveName" use="optional">
     <xs:annotation>
       <xs:documentation>Identifies a regular expression that must be matched by the referenced property</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="RelationshipBasedContentDefinition">
   <xs:annotation>
     <xs:documentation>Allows referencing a relationship to a code or group of codes</xs:documentation>
     <xs:documentation>UML: Mechanism for defining imported contents</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="targetConcepts" type="ContentDefinition" minOccurs="0">
       <xs:annotation>
         <xs:documentation>Identifies the list of codes where at least one of the codes must exist for the relationship to be true.  If not specified, then the valueset is considered unbounded.  I.e. The relationship may exist for any code.</xs:documentation>
         <xs:documentation>UML: Defines a set of code enumerations at the end of the dependency</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="relationshipName" type="BasicFormalName" use="required">
     <xs:annotation>
       <xs:documentation>Identifies what kind of relationship is being referenced</xs:documentation>
       <xs:documentation>UML: Specialization of the dependency stereotype</xs:documentation>
     </xs:annotation>
   </xs:attribute>
   <xs:attributeGroup ref="MultiplicityRangeOptional">
     <xs:annotation>
       <xs:documentation>Identifies the minimum and/or maximum number of times this type of qualifier is allowed.  (Set max to 0 to prohibit a qualifier from being specified)</xs:documentation>
     </xs:annotation>
   </xs:attributeGroup>
 </xs:complexType>
 <xs:complexType name="CodeFilterContentDefinition">
   <xs:annotation>
     <xs:documentation>Identifies the codes to be included by describing characteristics of the code mnemonic.  Codes must match all of the characteristics specified.</xs:documentation>
     <xs:documentation>UML: Defines the code enumerations imported into this package</xs:documentation>
   </xs:annotation>
   <xs:sequence>
     <xs:element name="expression" type="xs:anyType">
       <xs:annotation>
         <xs:documentation>Defines a regular expression that must be true when applied to a code for it to be included in the allowed content.  Content MUST be a valid regular expression, as used in 23c schema definition.</xs:documentation>
         <xs:documentation>UML: Part of a complex tag</xs:documentation>
       </xs:annotation>
     </xs:element>
   </xs:sequence>
   <xs:attribute name="expressionType" type="CodeFilterExpressionKind" use="required">
     <xs:annotation>
       <xs:documentation>Indicates the type of expression to be used to select the codes.</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>
 <xs:complexType name="Representation">
   <xs:annotation>
     <xs:documentation>Allows reference to a particular concept representation</xs:documentation>
     <xs:documentation>UML: Part of a complex tag</xs:documentation>
   </xs:annotation>
   <xs:attribute name="name" type="ShortDescriptiveName" use="required">
     <xs:annotation>
       <xs:documentation>The name of the supported concept representation being referenced</xs:documentation>
       <xs:documentation>UML: Part of a complex tag</xs:documentation>
     </xs:annotation>
   </xs:attribute>
 </xs:complexType>