<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="cyehr-sd-druguse" />
  <url value="http://ig.ehealth4u.eu/fhir/StructureDefinition/cyehr-sd-druguse" />
  <name value="CYEHRSDDrugUse" />
  <title value="Cyprus EHR Drug Use profile" />
  <status value="draft" />
  <date value="2022-05-20" />
  <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-druguse-1" />
        <severity value="error" />
        <human value="If value is &quot;Does not misuse drugs&quot; or &quot;Has never misused drugs&quot; then the amount shall not be recorded." />
        <expression value="Observation.valueCodeableConcept.coding.where(code='228367002' or code='228368007').exists() implies Observation.component.code.coding.where(code='105590001' or code='260911001' or code='410675002').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-druguse" />
    </element>
    <element id="Observation.code">
      <path value="Observation.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;Finding relating to drug misuse behavior&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://snomed.info/sct" />
          <code value="228366006" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.effective[x]">
      <path value="Observation.effective[x]" />
      <min value="1" />
    </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-drugusestatus" />
      </binding>
    </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.component">
      <path value="Observation.component" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="code" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Observation.component:drugOrMedicationType">
      <path value="Observation.component" />
      <sliceName value="drugOrMedicationType" />
      <max value="1" />
    </element>
    <element id="Observation.component:drugOrMedicationType.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;Substance&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://snomed.info/sct" />
          <code value="105590001" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.component:drugOrMedicationType.value[x]">
      <path value="Observation.component.value[x]" />
      <short value="DrugOrMedicationType" />
      <definition value="Type of drug used by the patient." />
      <min value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://hl7.org/fhir/uv/ips/StructureDefinition/CodeableConcept-uv-ips" />
      </type>
      <binding>
        <strength value="extensible" />
        <valueSet value="http://ig.ehealth4u.eu/fhir/ValueSet/cyehr-vs-drugormedicationtype" />
      </binding>
    </element>
    <element id="Observation.component:drugOrMedicationType.value[x].coding.system">
      <path value="Observation.component.value[x].coding.system" />
      <min value="1" />
    </element>
    <element id="Observation.component:drugOrMedicationType.value[x].coding.code">
      <path value="Observation.component.value[x].coding.code" />
      <min value="1" />
    </element>
    <element id="Observation.component:drugOrMedicationType.value[x].coding.display">
      <path value="Observation.component.value[x].coding.display" />
      <min value="1" />
    </element>
    <element id="Observation.component:dailyDosage">
      <path value="Observation.component" />
      <sliceName value="dailyDosage" />
      <comment value="For a discussion on the ways Observations can be assembled in groups together see [Notes](observation.html#notes) below.&#xD;&#xA;&#xD;&#xA;CyprusEHR: We are currently recording the dosage in &quot;grams per day&quot; but in the future we need to allow entries into &quot;grams per month&quot; and &quot;grams per year&quot;. The &quot;grams per month&quot; and &quot;grams per year&quot; values will be automatically converted into &quot;per day&quot; dosage." />
      <max value="1" />
    </element>
    <element id="Observation.component:dailyDosage.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;Dosage&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://snomed.info/sct" />
          <code value="260911001" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.component:dailyDosage.value[x]">
      <path value="Observation.component.value[x]" />
      <min value="1" />
      <type>
        <code value="Quantity" />
      </type>
      <patternQuantity>
        <unit value="g/d" />
        <system value="http://unitsofmeasure.org" />
        <code value="g/d" />
      </patternQuantity>
      <binding>
        <strength value="extensible" />
        <valueSet value="http://ig.ehealth4u.eu/fhir/ValueSet/cyehr-vs-ehdsiunit" />
      </binding>
    </element>
    <element id="Observation.component:dailyDosage.value[x].value">
      <path value="Observation.component.value[x].value" />
      <min value="1" />
    </element>
    <element id="Observation.component:dailyDosage.value[x].unit">
      <path value="Observation.component.value[x].unit" />
      <min value="1" />
    </element>
    <element id="Observation.component:dailyDosage.value[x].system">
      <path value="Observation.component.value[x].system" />
      <min value="1" />
    </element>
    <element id="Observation.component:dailyDosage.value[x].code">
      <path value="Observation.component.value[x].code" />
      <min value="1" />
    </element>
    <element id="Observation.component:routeOfAdministration">
      <path value="Observation.component" />
      <sliceName value="routeOfAdministration" />
    </element>
    <element id="Observation.component:routeOfAdministration.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;Route of administration&quot;" />
      <patternCodeableConcept>
        <coding>
          <system value="http://snomed.info/sct" />
          <code value="410675002" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Observation.component:routeOfAdministration.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="extensible" />
        <valueSet value="http://ig.ehealth4u.eu/fhir/ValueSet/cyehr-vs-ehdsirouteofadministration" />
      </binding>
    </element>
    <element id="Observation.component:routeOfAdministration.value[x].coding">
      <path value="Observation.component.value[x].coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Observation.component:routeOfAdministration.value[x].coding.system">
      <path value="Observation.component.value[x].coding.system" />
      <min value="1" />
    </element>
    <element id="Observation.component:routeOfAdministration.value[x].coding.code">
      <path value="Observation.component.value[x].coding.code" />
      <min value="1" />
    </element>
    <element id="Observation.component:routeOfAdministration.value[x].coding.display">
      <path value="Observation.component.value[x].coding.display" />
      <min value="1" />
    </element>
  </differential>
</StructureDefinition>