<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="MessageMetadata">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="SpecificValues" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="DataValueLocationItem" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Location">
                                            <xs:complexType>
                                                <xs:sequence>
                                                  <xs:element name="Segment">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Field">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Component" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="SubComponent" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:attribute name="Position"
                                                  type="xs:positiveInteger" use="required"/>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  <xs:attribute name="Position"
                                                  type="xs:positiveInteger" use="required"/>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  <xs:attribute name="Position"
                                                  type="xs:positiveInteger" use="required"/>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  <xs:attribute name="Name" type="xs:string"
                                                  use="required"/>
                                                  <xs:attribute name="InstanceNumber"
                                                  type="xs:positiveInteger" use="required"/>
                                                  </xs:complexType>
                                                  </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Value">
                                            <xs:complexType>
                                                <xs:choice>
                                                  <xs:element name="Present" type="xs:boolean">
                                                  <xs:annotation>
                                                  <xs:documentation>If this element is set to true, the declared fied/component/sub-component shall be present
If this element is set to false, the declared field/component/sub-component shall not be present</xs:documentation>
                                                  </xs:annotation>
                                                  </xs:element>
                                                  <xs:element name="ValueSet">
                                                  <xs:annotation>
                                                  <xs:documentation>A specific set of values in which the value of the specified field/component/sub-component must be</xs:documentation>
                                                  </xs:annotation>
                                                  <xs:complexType>
                                                  <xs:choice>
                                                  <xs:element name="OID" type="xs:string">
                                                  <xs:annotation>
                                                  <xs:documentation>Defines a value set available in our SVS repository</xs:documentation>
                                                  </xs:annotation>
                                                  </xs:element>
                                                  <xs:element maxOccurs="unbounded" name="PlainText"
                                                  type="xs:string">
                                                  <xs:annotation>
                                                  <xs:documentation>A list of strings in which the value must be</xs:documentation>
                                                  </xs:annotation>
                                                  </xs:element>
                                                  </xs:choice>
                                                  </xs:complexType>
                                                  </xs:element>
                                                </xs:choice>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="HL7Tables">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element maxOccurs="unbounded" name="HL7Table" type="xs:string">
                                <xs:annotation>
                                    <xs:documentation>reference to the HL7 table to use</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="All"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="UserTables">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="UserTable" type="xs:string">
                                <xs:annotation>
                                    <xs:documentation>reference to the user defined table to use</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
