<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-medicationrecommendation" />
  <url value="https://fhir.synapxe.sg/StructureDefinition/profile-medicationrecommendation" />
  <name value="MedicationRecommendation" />
  <title value="Medication Recommendation Profile" />
  <status value="active" />
  <publisher value="Synapxe" />
  <description value="Medication recommendation profile derived from Task resource for genomics-based medication recommendations." />
  <fhirVersion value="5.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Task" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Task" />
  <derivation value="constraint" />
  <differential>
    <element id="Task.identifier">
      <path value="Task.identifier" />
      <max value="0" />
    </element>
    <element id="Task.instantiatesCanonical">
      <path value="Task.instantiatesCanonical" />
      <max value="0" />
    </element>
    <element id="Task.instantiatesUri">
      <path value="Task.instantiatesUri" />
      <max value="0" />
    </element>
    <element id="Task.basedOn">
      <path value="Task.basedOn" />
      <max value="0" />
    </element>
    <element id="Task.groupIdentifier">
      <path value="Task.groupIdentifier" />
      <max value="0" />
    </element>
    <element id="Task.partOf">
      <path value="Task.partOf" />
      <max value="0" />
    </element>
    <element id="Task.statusReason">
      <path value="Task.statusReason" />
      <max value="0" />
    </element>
    <element id="Task.businessStatus">
      <path value="Task.businessStatus" />
      <max value="0" />
    </element>
    <element id="Task.priority">
      <path value="Task.priority" />
      <max value="0" />
    </element>
    <element id="Task.doNotPerform">
      <path value="Task.doNotPerform" />
      <max value="0" />
    </element>
    <element id="Task.code">
      <path value="Task.code" />
      <short value="Concept - reference to a terminology or just  text" />
      <definition value="A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text." />
      <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." />
      <type>
        <code value="CodeableConcept" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-codeableconcept" />
      </type>
      <binding>
        <strength value="required" />
        <valueSet value="https://fhir.synapxe.sg/ValueSet/medicationrecommendation-code" />
      </binding>
    </element>
    <element id="Task.code.coding.system">
      <path value="Task.code.coding.system" />
      <patternUri value="https://fhir.synapxe.sg/CodeSystem/medicationrecommendation-code" />
    </element>
    <element id="Task.focus">
      <path value="Task.focus" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/MedicationStatement" />
      </type>
    </element>
    <element id="Task.focus.reference">
      <path value="Task.focus.reference" />
      <max value="0" />
    </element>
    <element id="Task.focus.type">
      <path value="Task.focus.type" />
      <min value="1" />
      <patternUri value="MedicationStatement" />
    </element>
    <element id="Task.focus.identifier">
      <path value="Task.focus.identifier" />
      <min value="1" />
      <type>
        <code value="Identifier" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-identifier" />
      </type>
    </element>
    <element id="Task.focus.display">
      <path value="Task.focus.display" />
      <max value="0" />
    </element>
    <element id="Task.for">
      <path value="Task.for" />
      <max value="0" />
    </element>
    <element id="Task.encounter">
      <path value="Task.encounter" />
      <max value="0" />
    </element>
    <element id="Task.requestedPeriod">
      <path value="Task.requestedPeriod" />
      <max value="0" />
    </element>
    <element id="Task.executionPeriod">
      <path value="Task.executionPeriod" />
      <max value="0" />
    </element>
    <element id="Task.authoredOn">
      <path value="Task.authoredOn" />
      <max value="0" />
    </element>
    <element id="Task.lastModified">
      <path value="Task.lastModified" />
      <max value="0" />
    </element>
    <element id="Task.requester">
      <path value="Task.requester" />
      <max value="0" />
    </element>
    <element id="Task.requestedPerformer">
      <path value="Task.requestedPerformer" />
      <max value="0" />
    </element>
    <element id="Task.owner">
      <path value="Task.owner" />
      <max value="0" />
    </element>
    <element id="Task.performer">
      <path value="Task.performer" />
      <max value="0" />
    </element>
    <element id="Task.location">
      <path value="Task.location" />
      <max value="0" />
    </element>
    <element id="Task.reason">
      <path value="Task.reason" />
      <max value="0" />
    </element>
    <element id="Task.insurance">
      <path value="Task.insurance" />
      <max value="0" />
    </element>
    <element id="Task.note">
      <path value="Task.note" />
      <max value="0" />
    </element>
    <element id="Task.relevantHistory">
      <path value="Task.relevantHistory" />
      <max value="0" />
    </element>
    <element id="Task.restriction">
      <path value="Task.restriction" />
      <max value="0" />
    </element>
    <element id="Task.input">
      <path value="Task.input" />
      <max value="0" />
    </element>
    <element id="Task.output">
      <path value="Task.output" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>