<?xml version="1.0" encoding="UTF-8"?>

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="CR"/>
  <text>
    <status value="generated"/><div xmlns="http://www.w3.org/1999/xhtml">
      <p>A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;.</p>
    </div>
  </text>
  <extension url="http://hl7.org/fhir/tools/StructureDefinition/logical-target">
    <valueBoolean>
      <extension url="http://hl7.org/fhir/StructureDefinition/data-absent-reason">
        <valueCode value="not-applicable"/>
      </extension>
    </valueBoolean>
  </extension>
  <extension url="http://hl7.org/fhir/tools/StructureDefinition/xml-namespace">
    <valueUri value="urn:hl7-org:v3"/>
  </extension>
  <extension url="http://hl7.org/fhir/tools/StructureDefinition/logical-container">
    <valueUri value="http://hl7.org/cda/stds/core/StructureDefinition/ClinicalDocument"/>
  </extension>
  <url value="http://hl7.org/cda/stds/core/StructureDefinition/CR"/>
  <version value="2.0.2-sd"/>
  <name value="CR"/>
  <title value="CR: ConceptRole (V3 Data Type)"/>
  <status value="active"/>
  <experimental value="false"/>
  <date value="2025-12-12T15:29:54+11:00"/>
  <publisher value="Health Level 7"/>
  <contact>
    <name value="HL7 International - Structured Documents"/>
    <telecom>
      <system value="url"/>
      <value value="http://www.hl7.org/Special/committees/structure"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="structdog@lists.HL7.org"/>
    </telecom>
  </contact>
  <description value="A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system of the CD containing the concept qualifier. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;."/>
  <fhirVersion value="5.0.0"/>
  <mapping>
    <identity value="rim"/>
    <uri value="http://hl7.org/v3"/>
    <name value="RIM Mapping"/>
  </mapping>
  <kind value="logical"/>
  <abstract value="false"/>
  <type value="http://hl7.org/cda/stds/core/StructureDefinition/CR"/>
  <baseDefinition value="http://hl7.org/cda/stds/core/StructureDefinition/ANY"/>
  <derivation value="specialization"/>
  <snapshot>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version">
      <valueString value="2.0.2-sd"/>
    </extension>
    <element id="CR">
      <path value="CR"/>
      <short value="Base for all types and resources"/>
      <definition value="A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;."/>
      <min value="1"/>
      <max value="*"/>
      <base>
        <path value="Base"/>
        <min value="0"/>
        <max value="*"/>
      </base>
      <constraint>
        <key value="value-null-cr"/>
        <severity value="error"/>
        <human value="Must contain value or nullFlavor. If nullFlavor is present, name and value must not be present."/>
        <expression value="(value.exists() or nullFlavor.exists()) and (nullFlavor.exists() implies (name | value).empty())"/>
      </constraint>
      <isModifier value="false"/>
      <mapping>
        <identity value="rim"/>
        <map value="n/a"/>
      </mapping>
    </element>
    <element id="CR.nullFlavor">
      <path value="CR.nullFlavor"/>
      <representation value="xmlAttr"/>
      <label value="Exceptional Value Detail"/>
      <definition value="If a value is an exceptional value (NULL-value), this specifies in what way and why proper information is missing."/>
      <min value="0"/>
      <max value="1"/>
      <base>
        <path value="ANY.nullFlavor"/>
        <min value="0"/>
        <max value="1"/>
      </base>
      <type>
        <code value="code"/>
        <profile value="http://hl7.org/cda/stds/core/StructureDefinition/cs-simple"/>
      </type>
      <binding>
        <strength value="required"/>
        <valueSet value="http://hl7.org/cda/stds/core/ValueSet/CDANullFlavor"/>
      </binding>
    </element>
    <element id="CR.inverted">
      <path value="CR.inverted"/>
      <representation value="xmlAttr"/>
      <label value="Inversion Indicator"/>
      <definition value="Indicates if the sense of the role name is inverted. This can be used in cases where the underlying code system defines inversion but does not provide reciprocal pairs of role names. By default, inverted is false."/>
      <min value="0"/>
      <max value="1"/>
      <base>
        <path value="CR.inverted"/>
        <min value="0"/>
        <max value="1"/>
      </base>
      <type>
        <code value="boolean"/>
        <profile value="http://hl7.org/cda/stds/core/StructureDefinition/bn"/>
      </type>
    </element>
    <element id="CR.name">
      <path value="CR.name"/>
      <label value="Name"/>
      <definition value="Specifies the manner in which the concept role value contributes to the meaning of a code phrase. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;. In this example &quot;has-laterality&quot; is the CR.name."/>
      <min value="0"/>
      <max value="1"/>
      <base>
        <path value="CR.name"/>
        <min value="0"/>
        <max value="1"/>
      </base>
      <type>
        <code value="http://hl7.org/cda/stds/core/StructureDefinition/CV"/>
      </type>
    </element>
    <element id="CR.value">
      <path value="CR.value"/>
      <label value="Value"/>
      <definition value="The concept that modifies the primary code of a code phrase through the role relation. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows adding the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;. In this example &quot;left&quot; is the CR.value."/>
      <min value="0"/>
      <max value="1"/>
      <base>
        <path value="CR.value"/>
        <min value="0"/>
        <max value="1"/>
      </base>
      <type>
        <code value="http://hl7.org/cda/stds/core/StructureDefinition/CD"/>
      </type>
    </element>
  </snapshot>
  <differential>
    <element id="CR">
      <path value="CR"/>
      <definition value="A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;."/>
      <min value="1"/>
      <max value="*"/>
      <constraint>
        <key value="value-null-cr"/>
        <severity value="error"/>
        <human value="Must contain value or nullFlavor. If nullFlavor is present, name and value must not be present."/>
        <expression value="(value.exists() or nullFlavor.exists()) and (nullFlavor.exists() implies (name | value).empty())"/>
      </constraint>
    </element>
    <element id="CR.inverted">
      <path value="CR.inverted"/>
      <representation value="xmlAttr"/>
      <label value="Inversion Indicator"/>
      <definition value="Indicates if the sense of the role name is inverted. This can be used in cases where the underlying code system defines inversion but does not provide reciprocal pairs of role names. By default, inverted is false."/>
      <min value="0"/>
      <max value="1"/>
      <type>
        <code value="boolean"/>
        <profile value="http://hl7.org/cda/stds/core/StructureDefinition/bn"/>
      </type>
    </element>
    <element id="CR.name">
      <path value="CR.name"/>
      <label value="Name"/>
      <definition value="Specifies the manner in which the concept role value contributes to the meaning of a code phrase. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows to add the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;. In this example &quot;has-laterality&quot; is the CR.name."/>
      <min value="0"/>
      <max value="1"/>
      <type>
        <code value="http://hl7.org/cda/stds/core/StructureDefinition/CV"/>
      </type>
    </element>
    <element id="CR.value">
      <path value="CR.value"/>
      <label value="Value"/>
      <definition value="The concept that modifies the primary code of a code phrase through the role relation. For example, if SNOMED RT defines a concept &quot;leg&quot;, a role relation &quot;has-laterality&quot;, and another concept &quot;left&quot;, the concept role relation allows adding the qualifier &quot;has-laterality: left&quot; to a primary code &quot;leg&quot; to construct the meaning &quot;left leg&quot;. In this example &quot;left&quot; is the CR.value."/>
      <min value="0"/>
      <max value="1"/>
      <type>
        <code value="http://hl7.org/cda/stds/core/StructureDefinition/CD"/>
      </type>
    </element>
  </differential>
</StructureDefinition>