<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="cyehr-sd-tobaccouse" />
  <url value="http://ig.ehealth4u.eu/fhir/StructureDefinition/cyehr-sd-tobaccouse" />
  <name value="CYEHRSDTobaccoUse" />
  <title value="Cyprus EHR Tobacco Use profile" />
  <status value="draft" />
  <publisher value="eHealth4U" />
  <contact>
    <name value="eHealth Lab (University of Cyprus)" />
    <telecom>
      <system value="email" />
      <value value="ehealthl@ucy.ac.cy" />
      <use value="work" />
    </telecom>
  </contact>
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Observation" />
  <baseDefinition value="http://ig.ehealth4u.eu/fhir/StructureDefinition/cyehr-sd-socialhistory" />
  <derivation value="constraint" />
  <differential>
    <element id="Observation">
      <path value="Observation" />
      <constraint>
        <key value="cyehr-tobaccouse-1" />
        <severity value="error" />
        <human value="If the value defines that the patient is not currently smoking or it is unknown whether the patient is currently smoking then the &quot;tobaccoType&quot; and the &quot;packYears&quot; shall not be recorded." />
        <expression value="Observation.valueCodeableConcept.coding.where(code='LA15920-4' or code='LA18978-9' or code='LA18979-7' or 'LA18980-5').exists() implies Observation.component.exists().not()" />
      </constraint>
    </element>
    <element id="Observation.meta">
      <path value="Observation.meta" />
    </element>
    <element id="Observation.meta.profile">
      <path value="Observation.meta.profile" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Observation.meta.profile:CyprusEHRProfile">
      <path value="Observation.meta.profile" />
      <sliceName value="CyprusEHRProfile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="http://ig.ehealth4u.eu/fhir/StructureDefinition/cyehr-sd-tobaccouse" />
    </element>
    <element id="Observation.identifier.type.coding.display.extension:translation">
      <path value="Observation.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.identifier.assigner.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.identifier.assigner.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.identifier.assigner.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.identifier.assigner.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.basedOn.identifier.type.coding.display.extension:translation">
      <path value="Observation.basedOn.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.basedOn.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.basedOn.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.basedOn.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.basedOn.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.basedOn.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.basedOn.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.partOf.identifier.type.coding.display.extension:translation">
      <path value="Observation.partOf.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.partOf.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.partOf.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.partOf.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.partOf.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.partOf.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.partOf.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.status">
      <path value="Observation.status" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.category">
      <path value="Observation.category" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.category.coding.display.extension:translation">
      <path value="Observation.category.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.category.coding.display.extension:translation.extension">
      <path value="Observation.category.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.category:SHCat">
      <path value="Observation.category" />
      <sliceName value="SHCat" />
    </element>
    <element id="Observation.category:SHCat.coding.display.extension:translation">
      <path value="Observation.category.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.category:SHCat.coding.display.extension:translation.extension">
      <path value="Observation.category.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.code">
      <path value="Observation.code" />
      <short value="Code of Drug use" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: display: &quot;Tobacco use and exposure&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://loinc.org" />
          <code value="72166-2" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding">
      <path value="Observation.code.coding" />
      <min value="1" />
    </element>
    <element id="Observation.code.coding.code">
      <path value="Observation.code.coding.code" />
      <short value="Loinc code of cigarettes smoked current (pack per day) - Reported" />
    </element>
    <element id="Observation.code.coding.display.extension:translation">
      <path value="Observation.code.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.code.coding.display.extension:translation.extension">
      <path value="Observation.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.subject.reference">
      <path value="Observation.subject.reference" />
      <min value="1" />
    </element>
    <element id="Observation.subject.identifier.type.coding.display.extension:translation">
      <path value="Observation.subject.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.subject.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.subject.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.subject.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.subject.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.subject.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.subject.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.focus">
      <path value="Observation.focus" />
      <comment value="Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., &quot;Blood Glucose&quot;) and does not need to be represented separately using this element.  Use `specimen` if a reference to a specimen is required.  If a code is required instead of a resource use either  `bodysite` for bodysites or the standard extension [focusCode](extension-observation-focuscode.html).&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.focus.identifier.type.coding.display.extension:translation">
      <path value="Observation.focus.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.focus.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.focus.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.focus.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.focus.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.focus.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.focus.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.encounter">
      <path value="Observation.encounter" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Encounter" />
        <targetProfile value="https://simplifier.net/ehealth4u/files/cyehrsdencounter.structuredefinition.json" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.encounter.reference">
      <path value="Observation.encounter.reference" />
      <min value="1" />
    </element>
    <element id="Observation.encounter.identifier.type.coding.display.extension:translation">
      <path value="Observation.encounter.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.encounter.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.encounter.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.encounter.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.encounter.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.encounter.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.encounter.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.effective[x]">
      <path value="Observation.effective[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="At least a date should be present unless this observation is a historical report.  For recording imprecise or &quot;fuzzy&quot; times (For example, a blood glucose measurement taken &quot;after breakfast&quot;) use the [Timing](datatypes.html#timing) datatype which allow the measurement to be tied to regular life events.&#xA;&#xA;CyprusEHR: effectivePeriod shall be used for Cyprus EHR system. However, IPS requires dateTime. When sending an IPS for a Cyprus EHR registered patient, the effectivePeriod.start shall be used as effectiveDateTime. Accordingly, when receiving an IPS from a different organization, the effectivePeriod.start will be equal to the effectiveDateTime." />
      <type>
        <code value="dateTime" />
      </type>
      <type>
        <code value="Period" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.effective[x]:effectivePeriod">
      <path value="Observation.effective[x]" />
      <sliceName value="effectivePeriod" />
      <type>
        <code value="Period" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.effective[x]:effectiveDateTime">
      <path value="Observation.effective[x]" />
      <sliceName value="effectiveDateTime" />
      <comment value="At least a date should be present unless this observation is a historical report.  For recording imprecise or &quot;fuzzy&quot; times (For example, a blood glucose measurement taken &quot;after breakfast&quot;) use the [Timing](datatypes.html#timing) datatype which allow the measurement to be tied to regular life events.&#xA;&#xA;CyprusEHR: effectivePeriod shall be used for Cyprus EHR system. However, IPS requires dateTime. When sending an IPS for a Cyprus EHR registered patient, the effectivePeriod.start shall be used as effectiveDateTime. Accordingly, when receiving an IPS from a different organization, the effectivePeriod.start will be equal to the effectiveDateTime." />
      <type>
        <code value="dateTime" />
      </type>
    </element>
    <element id="Observation.performer">
      <path value="Observation.performer" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/PractitionerRole" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/CareTeam" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
        <targetProfile value="https://simplifier.net/ehealth4u/files/cyehrsdpractitionerrolehealthcareassociate.structuredefinition.json" />
      </type>
    </element>
    <element id="Observation.performer.reference">
      <path value="Observation.performer.reference" />
      <min value="1" />
    </element>
    <element id="Observation.performer.identifier.type.coding.display.extension:translation">
      <path value="Observation.performer.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.performer.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.performer.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.performer.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.performer.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.performer.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.performer.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.value[x]">
      <path value="Observation.value[x]" />
      <min value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://hl7.org/fhir/uv/ips/StructureDefinition/CodeableConcept-uv-ips" />
      </type>
      <binding>
        <strength value="required" />
        <valueSet value="http://ig.ehealth4u.eu/fhir/ValueSet/cyehr-vs-tobaccostatus" />
      </binding>
    </element>
    <element id="Observation.value[x].coding">
      <path value="Observation.value[x].coding" />
      <min value="1" />
    </element>
    <element id="Observation.value[x].coding.system">
      <path value="Observation.value[x].coding.system" />
      <min value="1" />
    </element>
    <element id="Observation.value[x].coding.code">
      <path value="Observation.value[x].coding.code" />
      <min value="1" />
    </element>
    <element id="Observation.value[x].coding.display">
      <path value="Observation.value[x].coding.display" />
      <min value="1" />
    </element>
    <element id="Observation.value[x].coding.display.extension:translation">
      <path value="Observation.value[x].coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.value[x].coding.display.extension:translation.extension">
      <path value="Observation.value[x].coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.dataAbsentReason">
      <path value="Observation.dataAbsentReason" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.dataAbsentReason.coding.display.extension:translation">
      <path value="Observation.dataAbsentReason.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.dataAbsentReason.coding.display.extension:translation.extension">
      <path value="Observation.dataAbsentReason.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.interpretation">
      <path value="Observation.interpretation" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.interpretation.coding.display.extension:translation">
      <path value="Observation.interpretation.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.interpretation.coding.display.extension:translation.extension">
      <path value="Observation.interpretation.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.note">
      <path value="Observation.note" />
      <comment value="May include general statements about the observation, or statements about significant, unexpected or unreliable results values, or information about its source when relevant to its interpretation.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.bodySite">
      <path value="Observation.bodySite" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.bodySite.coding.display.extension:translation">
      <path value="Observation.bodySite.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.bodySite.coding.display.extension:translation.extension">
      <path value="Observation.bodySite.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.method">
      <path value="Observation.method" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.method.coding.display.extension:translation">
      <path value="Observation.method.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.method.coding.display.extension:translation.extension">
      <path value="Observation.method.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.specimen">
      <path value="Observation.specimen" />
      <comment value="Should only be used if not implicit in code found in `Observation.code`.  Observations are not made on specimens themselves; they are made on a subject, but in many cases by the means of a specimen. Note that although specimens are often involved, they are not always tracked and reported explicitly. Also note that observation resources may be used in contexts that track the specimen explicitly (e.g. Diagnostic Report).&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.specimen.identifier.type.coding.display.extension:translation">
      <path value="Observation.specimen.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.specimen.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.specimen.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.specimen.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.specimen.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.specimen.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.specimen.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.device">
      <path value="Observation.device" />
      <comment value="Note that this is not meant to represent a device involved in the transmission of the result, e.g., a gateway.  Such devices may be documented using the Provenance resource where relevant.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.device.identifier.type.coding.display.extension:translation">
      <path value="Observation.device.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.device.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.device.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.device.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.device.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.device.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.device.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.referenceRange">
      <path value="Observation.referenceRange" />
      <comment value="Most observations only have one generic reference range. Systems MAY choose to restrict to only supplying the relevant reference range based on knowledge about the patient (e.g., specific to the patient's age, gender, weight and other factors), but this might not be possible or appropriate. Whenever more than one reference range is supplied, the differences between them SHOULD be provided in the reference range and/or age properties.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.referenceRange.appliesTo.coding.display.extension:translation">
      <path value="Observation.referenceRange.appliesTo.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.referenceRange.appliesTo.coding.display.extension:translation.extension">
      <path value="Observation.referenceRange.appliesTo.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.hasMember">
      <path value="Observation.hasMember" />
      <comment value="When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases.  For a discussion on the ways Observations can assembled in groups together, see [Notes](observation.html#obsgrouping) below.  Note that a system may calculate results from [QuestionnaireResponse](questionnaireresponse.html)  into a final score and represent the score as an Observation.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.hasMember.identifier.type.coding.display.extension:translation">
      <path value="Observation.hasMember.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.hasMember.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.hasMember.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.hasMember.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.hasMember.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.hasMember.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.hasMember.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.derivedFrom">
      <path value="Observation.derivedFrom" />
      <comment value="All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value.  The most common reference will be another Observation.  For a discussion on the ways Observations can assembled in groups together, see [Notes](observation.html#obsgrouping) below.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.derivedFrom.identifier.type.coding.display.extension:translation">
      <path value="Observation.derivedFrom.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.derivedFrom.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.derivedFrom.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.derivedFrom.identifier.assigner.identifier.type.coding.display.extension:translation">
      <path value="Observation.derivedFrom.identifier.assigner.identifier.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.derivedFrom.identifier.assigner.identifier.type.coding.display.extension:translation.extension">
      <path value="Observation.derivedFrom.identifier.assigner.identifier.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component">
      <path value="Observation.component" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <definition value="Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.&#xD;&#xA;&#xD;&#xA;CyprusEHR: When generating an IPS document, exclude the component element from the TobaccoUse Observation resource." />
    </element>
    <element id="Observation.component.code.coding.display.extension:translation">
      <path value="Observation.component.code.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component.code.coding.display.extension:translation.extension">
      <path value="Observation.component.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component.dataAbsentReason">
      <path value="Observation.component.dataAbsentReason" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.component.dataAbsentReason.coding.display.extension:translation">
      <path value="Observation.component.dataAbsentReason.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component.dataAbsentReason.coding.display.extension:translation.extension">
      <path value="Observation.component.dataAbsentReason.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component.interpretation">
      <path value="Observation.component.interpretation" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.component.interpretation.coding.display.extension:translation">
      <path value="Observation.component.interpretation.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component.interpretation.coding.display.extension:translation.extension">
      <path value="Observation.component.interpretation.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component.referenceRange">
      <path value="Observation.component.referenceRange" />
      <comment value="Most observations only have one generic reference range. Systems MAY choose to restrict to only supplying the relevant reference range based on knowledge about the patient (e.g., specific to the patient's age, gender, weight and other factors), but this might not be possible or appropriate. Whenever more than one reference range is supplied, the differences between them SHOULD be provided in the reference range and/or age properties.&#xD;&#xA;&#xD;&#xA;CyprusEHR: Not to be used in the context of Cyprus EHR." />
    </element>
    <element id="Observation.component.referenceRange.appliesTo.coding.display.extension:translation">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component.referenceRange.appliesTo.coding.display.extension:translation.extension">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:tobaccoType">
      <path value="Observation.component" />
      <sliceName value="tobaccoType" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:tobaccoType.code">
      <path value="Observation.component.code" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: display: &quot;Tobacco product&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://loinc.org" />
          <code value="81228-9" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.component:tobaccoType.code.coding">
      <path value="Observation.component.code.coding" />
      <min value="1" />
    </element>
    <element id="Observation.component:tobaccoType.code.coding.display.extension:translation">
      <path value="Observation.component.code.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:tobaccoType.code.coding.display.extension:translation.extension">
      <path value="Observation.component.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:tobaccoType.value[x]">
      <path value="Observation.component.value[x]" />
      <min value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://hl7.org/fhir/uv/ips/StructureDefinition/CodeableConcept-uv-ips" />
      </type>
      <binding>
        <strength value="required" />
        <valueSet value="http://ig.ehealth4u.eu/fhir/ValueSet/cyehr-vs-tobaccotype" />
      </binding>
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding">
      <path value="Observation.component.value[x].coding" />
      <min value="1" />
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding.system">
      <path value="Observation.component.value[x].coding.system" />
      <min value="1" />
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding.code">
      <path value="Observation.component.value[x].coding.code" />
      <min value="1" />
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding.display">
      <path value="Observation.component.value[x].coding.display" />
      <min value="1" />
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding.display.extension:translation">
      <path value="Observation.component.value[x].coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:tobaccoType.value[x].coding.display.extension:translation.extension">
      <path value="Observation.component.value[x].coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:tobaccoType.dataAbsentReason.coding.display.extension:translation">
      <path value="Observation.component.dataAbsentReason.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:tobaccoType.dataAbsentReason.coding.display.extension:translation.extension">
      <path value="Observation.component.dataAbsentReason.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:tobaccoType.interpretation.coding.display.extension:translation">
      <path value="Observation.component.interpretation.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:tobaccoType.interpretation.coding.display.extension:translation.extension">
      <path value="Observation.component.interpretation.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:tobaccoType.referenceRange.appliesTo.coding.display.extension:translation">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:tobaccoType.referenceRange.appliesTo.coding.display.extension:translation.extension">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:packYears">
      <path value="Observation.component" />
      <sliceName value="packYears" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:packYears.code">
      <path value="Observation.component.code" />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;CyprusEHR: display: &quot;Cigarette pack-years&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://snomed.info/sct" />
          <code value="401201003" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.component:packYears.code.coding">
      <path value="Observation.component.code.coding" />
      <min value="1" />
    </element>
    <element id="Observation.component:packYears.code.coding.display.extension:translation">
      <path value="Observation.component.code.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:packYears.code.coding.display.extension:translation.extension">
      <path value="Observation.component.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:packYears.value[x]">
      <path value="Observation.component.value[x]" />
      <definition value="The information determined as a result of making the observation, if the information has a simple value.&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;CyprusEHR: The unit indicating the smoker’s total exposure to tobacco smoke. For cigarettes, this is calculated using the number of smoked packs of cigarettes per day (one pack = 20 cigarettes) times the number of years of smoking. For other forms of tobacco, this is usually converted to an equivalent cigarette consumption. Often, only the number of pack years is estimated." />
      <min value="1" />
      <type>
        <code value="integer" />
      </type>
    </element>
    <element id="Observation.component:packYears.dataAbsentReason.coding.display.extension:translation">
      <path value="Observation.component.dataAbsentReason.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:packYears.dataAbsentReason.coding.display.extension:translation.extension">
      <path value="Observation.component.dataAbsentReason.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:packYears.interpretation.coding.display.extension:translation">
      <path value="Observation.component.interpretation.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:packYears.interpretation.coding.display.extension:translation.extension">
      <path value="Observation.component.interpretation.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Observation.component:packYears.referenceRange.appliesTo.coding.display.extension:translation">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Observation.component:packYears.referenceRange.appliesTo.coding.display.extension:translation.extension">
      <path value="Observation.component.referenceRange.appliesTo.coding.display.extension.extension" />
      <min value="2" />
    </element>
  </differential>
</StructureDefinition>