<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="rdc-Observation-Report" />
  <url value="https://roche.com/fhir/iop/StructureDefinition/rdc-Observation-Report" />
  <version value="1.0.0" />
  <name value="RdcObservationReport" />
  <title value="RDC Observation Report" />
  <status value="active" />
  <publisher value="F. Hoffmann-La Roche AG" />
  <description value="A profile designed to capture Additional values from Observations as means, standard deviations, coefficients, percentages etc. for reporting." />
  <copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
  <fhirVersion value="5.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Observation" />
  <baseDefinition value="https://roche.com/fhir/iop/StructureDefinition/rdc-Observation-Additional" />
  <derivation value="constraint" />
  <differential>
    <element id="Observation">
      <path value="Observation" />
      <constraint>
        <key value="glucose-unit-rule" />
        <severity value="error" />
        <human value="Glucose unit rule for Report Observation Values" />
        <expression value="(code = '97507-8' or code = 'R4615-4' or code = 'R7533-3') implies (valueQuantity.code = 'mg/dL' or valueQuantity.code = 'mmol/L')" />
        <source value="http://example.org/StructureDefinition/rdc-Observation-Report" />
      </constraint>
      <constraint>
        <key value="percentage-unit-rule" />
        <severity value="error" />
        <human value="Percentage unit rule for Report Observation Values" />
        <expression value="(code = '97504-5' or code = '97506-0' or code = '104639-0' or code = '104640-8' or code = '97510-2' or code = '104641-6' or code = '104642-4' or code = 'R9599-2' or code = 'R4686-2' or code = 'R6599-5' or code = 'R4843-9' or code = 'R7925-1' or code = 'R5422-1' or code = 'R7572-1') implies (valueQuantity.code = '%')" />
        <source value="http://example.org/StructureDefinition/rdc-Observation-Report" />
      </constraint>
      <constraint>
        <key value="count-unit-rule" />
        <severity value="error" />
        <human value="Count unit rule for Report Observation Values" />
        <expression value="(code = 'R7534-3') implies (valueQuantity.code = '{count}')" />
        <source value="http://example.org/StructureDefinition/rdc-Observation-Report" />
      </constraint>
      <constraint>
        <key value="count-per-day-unit-rule" />
        <severity value="error" />
        <human value="Count per day unit rule for Report Observation Values" />
        <expression value="(code = 'R4614-4') implies (valueQuantity.code = '{count}/d')" />
        <source value="http://example.org/StructureDefinition/rdc-Observation-Report" />
      </constraint>
    </element>
    <element id="Observation.code">
      <path value="Observation.code" />
      <binding>
        <strength value="required" />
        <valueSet value="https://roche.com/fhir/iop/ValueSet/report-observation-codes" />
      </binding>
    </element>
    <element id="Observation.device">
      <path value="Observation.device" />
      <max value="0" />
    </element>
    <element id="Observation.component">
      <path value="Observation.component" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>