<?xml version="1.0" encoding="UTF-8"?>
<resourceDefinitions xmlns="http://www.hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hl7.org/fhir definitions.xsd">
  <author>HL7</author>
  <resourceDefinition>
    <name>Animal</name>
    <elementDefinitions>
      <elementDefinition>
        <name>Animal</name>
        <cardinality>
          <minOccurs>1</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Mandatory</conformance>
        <condition></condition>
        <mustUnderstand>false</mustUnderstand>
        <definition>An animal that has relevance to the care process -usually this is for animals that are patients.</definition>
        <requirements>Need to be able to track animals - vetinary medicine is an active user of HL7 standards</requirements>
        <comments>Animals differ because you need to track species and strain, and also different kind of relationships - owners</comments>
        <rim>NonPersonLivingSubject(classCode=ANM, determinerCode=INST)</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.id</name>
        <cardinality>
          <minOccurs>1</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Mandatory</conformance>
        <condition></condition>
        <types>
          <type>id</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition>Master Resource Id, always first in all resources</definition>
        <requirements></requirements>
        <rim></rim>
        <todo>.id(scope=OBJ)</todo>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.identifier</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>unbounded</maxOccurs>
        </cardinality>
        <conformance></conformance>
        <condition></condition>
        <types>
          <type>HumanId</type>
        </types>
        <mustUnderstand>true</mustUnderstand>
        <definition>Identifier for the animal that is used to identify the person across multiple disparate systems and also for face to face identification of the person</definition>
        <requirements>Animals are known by a variety of ids. Some institutions maintain several, and most collect identifiers for exchange with other organizations concerning the animal</requirements>
        <rim>.scopes[Role](classCode=IDENT)</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.name</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>unbounded</maxOccurs>
        </cardinality>
        <conformance></conformance>
        <condition></condition>
        <types>
          <type>HumanName</type>
        </types>
        <mustUnderstand>true</mustUnderstand>
        <definition>A name associated with the animal. The use code maiden does not apply.</definition>
        <requirements>Some animals have names, which are assigned by humans for human reasons, and follow human naming patterns</requirements>
        <rim>.name</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.dob</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>dateTime</type>
        </types>
        <mustUnderstand>true</mustUnderstand>
        <definition>The birth date for the animal</definition>
        <requirements>Age of the animal drives many clinical processes.</requirements>
        <rim>.dateOfBirth</rim>
        <todo>RIM change to support human date (time only - but is this needed in this context?)</todo>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.species</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>CodeableConcept</type>
        </types>
        <conceptDomain>AnimalSpecies</conceptDomain>
        <mustUnderstand>true</mustUnderstand>
        <definition>Species for the animal</definition>
        <requirements>Need to know what kind of animal</requirements>
        <rim>.code</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.strain</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>CodeableConcept</type>
        </types>
        <conceptDomain>AnimalStrain</conceptDomain>
        <mustUnderstand>true</mustUnderstand>
        <definition>Strain for the animal</definition>
        <requirements>May need to know the specific kind within the species</requirements>
        <rim>.strainText</rim>
        <todo>Not sure why this is ED in the RIM.  Should probably change to SC.</todo>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.gender</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>CodeableConcept</type>
        </types>
        <conceptDomain>AnimalGender</conceptDomain>
        <mustUnderstand>true</mustUnderstand>
        <definition>Gender for the Animal</definition>
        <requirements>For managing the animal</requirements>
        <comments>Note that some animals have additional gender not encountered in humans?</comments>
        <rim>.administrativeGenderCode</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>unbounded</maxOccurs>
        </cardinality>
        <conformance></conformance>
        <condition></condition>
        <mustUnderstand>false</mustUnderstand>
        <definition>Kin, owner, care giver etc</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity.id</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>HumanId</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition>Identifier for the entity</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity.role</name>
        <cardinality>
          <minOccurs>1</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Mandatory</conformance>
        <condition></condition>
        <types>
          <type>CodeableConcept</type>
        </types>
        <conceptDomain>AnimalRelationship</conceptDomain>
        <mustUnderstand>false</mustUnderstand>
        <definition>Type of relationship</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity.name</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <types>
          <type>HumanName</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition>Name of the related entity</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity.address</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>unbounded</maxOccurs>
        </cardinality>
        <conformance></conformance>
        <condition></condition>
        <types>
          <type>Address</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition>An address (usually human, but may be kin)</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.relatedEntity.contact</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>unbounded</maxOccurs>
        </cardinality>
        <conformance></conformance>
        <condition></condition>
        <types>
          <type>Contact</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition>Contact details (usually for humans)</definition>
        <requirements></requirements>
        <rim></rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.extensions</name>
        <cardinality>
          <minOccurs>0</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Optional</conformance>
        <condition></condition>
        <mustUnderstand>false</mustUnderstand>
        <definition>See Extensions</definition>
        <requirements></requirements>
        <rim>[varies]</rim>
      </elementDefinition>
      <elementDefinition>
        <name>Animal.text</name>
        <cardinality>
          <minOccurs>1</minOccurs>
          <maxOccurs>1</maxOccurs>
        </cardinality>
        <conformance>Mandatory</conformance>
        <condition></condition>
        <types>
          <type>Narrative</type>
        </types>
        <mustUnderstand>false</mustUnderstand>
        <definition> </definition>
        <requirements></requirements>
        <rim></rim>
        <todo>.text</todo>
      </elementDefinition>
    </elementDefinitions>
  </resourceDefinition>
</resourceDefinitions>

