﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema version="1.30" id="MicrochipRegistration13" elementFormDefault="qualified" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="MicrochipRegistration">
    <xs:complexType>
      <xs:all>
        <xs:element name="Identification" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:all>
              <xs:element name="PracticeID" type="xs:string" minOccurs="1" maxOccurs="1" />
              <!-- Start added in 1.30-->
              <xs:element name="PinNo" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="10" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Source" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"  />
                    <xs:maxLength value="20" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <!-- End added in 1.30-->                
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="OwnerDetails" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:all>
              <xs:element name="Salutation" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="50"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Initials" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="15"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Forenames" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="50"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Surname" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="50"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Address" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Line1" minOccurs="1" maxOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:minLength value="1"/>
                          <xs:maxLength value="250"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="LineOther" minOccurs="0" maxOccurs="5">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:minLength value="1"/>
                          <xs:maxLength value="50"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="County_State" minOccurs="0" maxOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="35"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="PostalCode" minOccurs="0" maxOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:minLength value="5"/>
                          <xs:maxLength value="10"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Country" minOccurs="0" maxOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="50"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="DaytimePhone" type="PhoneType" minOccurs="0" maxOccurs="1" />
              <xs:element name="EveningPhone" type="PhoneType" minOccurs="0" maxOccurs="1" />
              <xs:element name="MobilePhone" type="PhoneType" minOccurs="0" maxOccurs="1" />
              <xs:element name="EmergencyPhone" type="PhoneType" minOccurs="0" maxOccurs="1" />
              <xs:element name="EmailAddress" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="6" />
                    <xs:maxLength value="100"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Fax" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="PetDetails" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:all>
              <xs:element name="Name" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="80"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Species" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="Canine"/>
                    <xs:enumeration value="Feline"/>
                    <xs:enumeration value="Avian"/>
                    <xs:enumeration value="Equine"/>
                    <xs:enumeration value="Reptilian"/>
                    <xs:enumeration value="Other"/>
                    <!-- Start added in 1.30-->
                    <xs:enumeration value="Fish" />
                    <xs:enumeration value="Fox" />
                    <xs:enumeration value="Rabbit" />
                    <xs:enumeration value="Tortoise" />
                    <xs:enumeration value="Pig" />
                    <xs:enumeration value="Sheep" />
                    <xs:enumeration value="Badger" />
                    <xs:enumeration value="Ferret" />
                    <xs:enumeration value="Goat" />
                    <xs:enumeration value="Camelid" />
                    <xs:enumeration value="Monkey" />
                    <xs:enumeration value="Miscellaneous" />
                    <xs:enumeration value="Elephant" />
                    <xs:enumeration value="Lemur" />
                    <xs:enumeration value="Deer" />
                    <xs:enumeration value="Racoon" />
                    <xs:enumeration value="Rodent" />
                    <xs:enumeration value="Wolf" />
                    <xs:enumeration value="Polecat" />
                    <xs:enumeration value="Donkey" />
                    <xs:enumeration value="Skunk" />
                    <!-- End added in 1.30 -->
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Breed" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                  <xs:choice>
                    <xs:element name="FreeText">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:minLength value="1"/>
                          <xs:maxLength value="255"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Code" type="VeNOM_Breed" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="DateOfBirth" type="xs:date" minOccurs="0" maxOccurs="1" />
              <xs:element name="Gender" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="M"/>
                    <xs:enumeration value="F"/>
                    <xs:enumeration value="U"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Colour" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Markings" type="xs:string" minOccurs="0" maxOccurs="1" />
              <xs:element name="Neutered" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="NotableConditions" type="xs:string" minOccurs="0" maxOccurs="1" />
            </xs:all>
          </xs:complexType>
        </xs:element>
        <!-- Changed to minOccurs = "1" in 1.30-->
        <xs:element name="MicrochipDetails" minOccurs="1" maxOccurs="1"> 
          <xs:complexType>
            <xs:all>
              <xs:element name="MicrochipNumber" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="16"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="ImplantDate" type="xs:date" minOccurs="0" maxOccurs="1" />
              <xs:element name="ImplanterName" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1"/>
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="ThirdPartyDisclosure" minOccurs="1" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="true"/>
              <xs:enumeration value="false"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <!-- Start Added in 1.30-->
        <xs:element name="ReceiveMail" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="true" />
              <xs:enumeration value="false" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="ReceiveEmail" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="true" />
              <xs:enumeration value="false" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="Authorisation" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="true" />
              <xs:enumeration value="false" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <!-- End Added in 1.3-->
        </xs:all>
      <xs:attribute name="version" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:complexType name="PhoneType">
    <xs:all>
      <xs:element name="Number" minOccurs="1" maxOccurs="1">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="5"/>
            <xs:maxLength value="20"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Note" minOccurs="0" maxOccurs="1">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="255"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:simpleType name="VeNOM_Breed">
	  <xs:restriction base="xs:string">
		<xs:minLength value="5"/>
		<xs:maxLength value="5"/>
	  </xs:restriction>
	</xs:simpleType>
</xs:schema>

