<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="DetailedResults">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ValidationResultsOverview"/>
        <xs:element maxOccurs="unbounded" ref="ValidationResults"/>
        <xs:element ref="ValidationCounters"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ValidationResultsOverview">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Oid"/>
        <xs:element ref="ReferencedStandard"/>
        <xs:element ref="ValidationServiceName"/>
        <xs:element ref="ValidationServiceVersion"/>
        <xs:element ref="ValidationDate"/>
        <xs:element ref="ValidationTime"/>
        <xs:element ref="ValidationTestId"/>
        <xs:element ref="ValidationTestResult"/>
        <xs:element ref="ValidationServiceStatus" minOccurs="0" maxOccurs="1"/>
        
      
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ValidationServiceStatus">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Status"/>
        <xs:element name="AdditionalStatusInfo"  type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
    
  </xs:element>
  <xs:element name="Oid" type="xs:NMTOKEN"/>
  <xs:element name="ValidationServiceName" type="xs:string"/>
  <xs:element name="ValidationServiceVersion" type="xs:NMTOKEN"/>
  <xs:element name="ValidationDate" type="xs:string"/>
  <xs:element name="ValidationTime" type="xs:string"/>
  <xs:element name="ValidationTestId" type="xs:string"/>
  <xs:element name="ValidationTestResult" type="xs:string"/>
  <xs:element name="ValidationResults">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="ValidationDicomMessage"/>
        </xs:sequence>
        <xs:sequence ref=></xs:sequence>
      </xs:choice>
     
    </xs:complexType>
  </xs:element>
  <xs:element name="ValidationDicomMessage">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name"/>
        <xs:element maxOccurs="unbounded" ref="Module"/>
        <xs:element minOccurs="0" ref="Message"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="Status">
    <xs:simpleType>
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="OK"/>
        <xs:enumeration value="WARNING"/>
        <xs:enumeration value="ERROR"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  
  
  <xs:element name="ReferencedStandard">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="StandardName"/>
        <xs:element ref="StandardVersion"/>
        <xs:element ref="StandardExtension" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="StandardName" type="xs:string"/>
  <xs:element name="StandardVersion" type="xs:string"/>
  <xs:element name="StandardExtension" type="xs:string"  />
  <xs:element name="Name" type="xs:string"/>
  <xs:element name="Module">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Attribute"/>
      </xs:sequence>
      <xs:attribute name="Name" use="required"/>
      <xs:attribute name="Usage" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ValidationCounters">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="NrOfValidationErrors"/>
        <xs:element ref="NrOfValidationWarnings"/>
        <xs:element ref="ValidationTest"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NrOfValidationErrors" type="xs:integer"/>
  <xs:element name="NrOfValidationWarnings" type="xs:integer"/>
  <xs:element name="ValidationTest" type="xs:NCName"/>
  <xs:element name="Attribute">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Values"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Message"/>
      </xs:sequence>
      <xs:attribute name="Element" use="required" type="xs:NMTOKEN"/>
      <xs:attribute name="Group" use="required" type="xs:NMTOKEN"/>
      <xs:attribute name="Length" use="required" type="xs:NMTOKEN"/>
      <xs:attribute name="Name" use="required"/>
      <xs:attribute name="Present" use="required"/>
      <xs:attribute name="Type" use="required" type="xs:NMTOKEN"/>
      <xs:attribute name="VR" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Values">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Sequence"/>
        <xs:element minOccurs="0" ref="Value"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Message"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sequence">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Item"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Item">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Attribute"/>
      </xs:sequence>
      <xs:attribute name="Number" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Value" type="xs:string"/>
  <xs:element name="Message">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Id"/>
        <xs:element ref="Type"/>
        <xs:element ref="Meaning"/>
      </xs:sequence>
      <xs:attribute name="Index" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Id" type="xs:NMTOKEN"/>
  <xs:element name="Type" type="xs:NCName"/>
  <xs:element name="Meaning" type="xs:string"/>
</xs:schema>
