<?xml version="1.0" encoding="UTF-8"?>
<!--File version: 4 -->
<xs:schema xmlns:akl="xmlns://afsprakenstelsel.medmij.nl/Zorgaanbiederskoppellijst/release1/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="xmlns://afsprakenstelsel.medmij.nl/Zorgaanbiederskoppellijst/release1/"
    elementFormDefault="qualified">
    <!--Root element-->
    <xs:element name="Zorgaanbiederskoppellijst">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Tijdstempel" type="akl:DatumTijd"/>
                <xs:element name="Volgnummer" type="akl:Positiefnummer"/>
                <xs:element name="Zorgaanbieders" type="akl:Zorgaanbieders">
                    <xs:unique name="Unieke_Zorgaanbieder">
                        <xs:selector xpath="akl:Zorgaanbieder/akl:Zorgaanbiedernaam"/>
                        <xs:field xpath="."/>
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--Logische klassen-->
    <xs:complexType name="Zorgaanbieders">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="Zorgaanbieder" type="akl:Zorgaanbieder"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Zorgaanbieder">
        <xs:sequence>
            <xs:element name="Zorgaanbiedernaam" type="akl:Zorgaanbiedernaam"/>
            <xs:element maxOccurs="1" name="IdentificerendeKenmerken"
                type="akl:IdentificerendeKenmerken" minOccurs="1"/>
            <xs:element name="Gegevensdiensten" type="akl:Gegevensdiensten"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Gegevensdiensten">
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="Gegevensdienst" minOccurs="1" maxOccurs="unbounded"
                type="akl:Gegevensdienst"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Gegevensdienst">
        <xs:sequence>
            <xs:element name="GegevensdienstId" type="akl:GegevensdienstId"/>
            <xs:element name="Weergavenaam" type="akl:Weergavenaam"/>
            <xs:element name="Interfaceversies" type="akl:Interfaceversies"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Interfaceversies">
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="Interfaceversie" type="akl:Interfaceversie"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Interfaceversie">
        <xs:sequence>
            <xs:element name="InterfaceversieId" type="akl:InterfaceversieId"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="IdentificerendeKenmerken">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="IdentificerendKenmerk" type="akl:IdentificerendKenmerk"/>
        </xs:sequence>
    </xs:complexType>

    <!--Basisklassen-->
    <xs:complexType name="IdentificerendKenmerk">
        <xs:choice>
            <xs:element name="AGB" type="akl:IK_AGB" minOccurs="0"/>
            <xs:element name="URA" type="akl:IK_URA" minOccurs="0"/>
            <xs:element name="OIN" type="akl:IK_OIN" minOccurs="0"/>
            <xs:element name="HRN" type="akl:IK_HRN" minOccurs="0"/>
        </xs:choice>
    </xs:complexType>
    <xs:simpleType name="GegevensdienstId">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="30"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Zorgaanbiedernaam">
        <xs:restriction base="xs:string">
            <xs:minLength value="10"/>
            <xs:maxLength value="287"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="DatumTijd">
        <xs:restriction base="xs:dateTime">
            <xs:pattern value=".{20,}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Positiefnummer">
        <xs:restriction base="xs:positiveInteger"/>
    </xs:simpleType>
    <xs:simpleType name="Nietnegatiefgetal">
        <xs:restriction base="xs:nonNegativeInteger"/>
    </xs:simpleType>
    <xs:simpleType name="IK_AGB">
        <xs:restriction base="xs:string">
            <xs:minLength value="8"/>
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="IK_URA">
        <xs:restriction base="xs:string">
            <xs:minLength value="8"/>
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="IK_OIN">
        <xs:restriction base="xs:string">
            <xs:minLength value="20"/>
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="IK_HRN">
        <xs:restriction base="xs:string">
            <xs:minLength value="20"/>
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Weergavenaam">
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="InterfaceversieId">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="30"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
