<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:digst:samtykke:samtykkeerklaering:2026-03"
    targetNamespace="urn:digst:samtykke:samtykkeerklaering:2026-03"
    xmlns:tns="urn:digst:samtykke:samtykkeerklaering:2026-03"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:grp="urn:digst:samtykke:samtykkegruppe:2026-03"
    xmlns:sdt="urn:digst:samtykke:samtykkedatatyper:2026-03"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:import namespace="urn:digst:samtykke:samtykkegruppe:2026-03" schemaLocation="Samtykkegruppe.xsd"/>
    <xs:import namespace="urn:digst:samtykke:samtykkedatatyper:2026-03" schemaLocation="SamtykkeDatatyper.xsd"/>
    <xs:element name="SamtykkeErklaering">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="SamtykkeErklaeringUUID" type="sdt:UuidType">
                    <xs:annotation>
                        <xs:documentation>Unik offtentlig nøgle for samtykkeerklæringen</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Navn" type="sdt:Max200TekstType">
                    <xs:annotation>
                        <xs:documentation> Samtykkeerklæringens navn. </xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="LokalKontekst" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation> Her angives informationer, der er relevante for, at referere Samtykkeerklæringen til lokal anvendelse. Eks. Id'et i det lokale fagsystem.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="LokalFagsystemId" type="Max50Tegn" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>Id genereret af et Fagsystem. Bliver ikke brugt af Digitalt Samtykke.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="Sagskontekst" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>Her angives sagskonteksten. Den består af en sagsnummerkontekst, der fortæller hvor sagen eksisterer, og et eventuelt sagsnummer. Hvis sagskonteksten er angivet, vil det være muligt senere hen at ændre sagsnummeret. Hvis sagskonteksten ikke er angivet, vil det ikke være muligt at angive sagsnummer efter oprettelse af samtykkeerklæringen. </xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Sagsnummer" type="Max50Tegn" minOccurs="0"/>
                                        <xs:element name="Sagsnummerkontekst" type="IkkeTomStrengMax30Tegn"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Klassificeringer" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Klassifikation" minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                            <xs:attribute name="navn" type="sdt:IkkeTomStreng" use="required"/>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Afsender" type="AfsenderType"/>
                <xs:element name="Anmodning">
                    <xs:annotation>
                        <xs:documentation> Indeholder informationer om anmodningen, der resulterede i oprettelsen af denne samtykkeerklæring. </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Anmodningstidspunkt" type="xs:dateTime">
                                <xs:annotation>
                                    <xs:documentation>Tidspunktet anmodningen blev afsendt. Hvis tidszone ikke er angivet antages det, at tiden er angivet i UTC.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="AnmodetAf" type="sdt:MedarbejderType" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Givere">
                    <xs:annotation>
                        <xs:documentation> Her angives samtykkegiverne. Der kan kun være én, der har besvaret anmodningen, og én, der har bekræftet anmodningen. Der skal altid være en giver, som har besvaret. Bekræfteren er optionel. </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="BesvaretAf" type="GiverType"/>
                            <xs:element name="BekraeftetAf" type="GiverType" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                    <xs:unique name="uniktGiverCpr">
                        <xs:selector xpath="tns:BesvaretAf/tns:Person | tns:BekraeftetAf/tns:Person"/>
                        <xs:field xpath="tns:CPR"/>
                    </xs:unique>
                    <xs:unique name="uniktGiverCprUUID">
                        <xs:selector xpath="tns:BesvaretAf/tns:Person | tns:BekraeftetAf/tns:Person"/>
                        <xs:field xpath="tns:CprUUID"/>
                    </xs:unique>
                </xs:element>
                <xs:element name="Subjekt" type="SubjektType"/>
                <xs:element name="SkabelonReference" type="sdt:SamtykkeErklaeringSkabelonReferenceType">
                    <xs:annotation>
                        <xs:documentation>Her angives informationer om den skabelon og version som samtykkeerklæringen er baseret på. Disse kan bruges til at lave tværgående søgninger, for at finde alle samtykkeerklæringer, der er baseret på den samme skabelon samt version.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Medbetjent" type="sdt:MedbetjeningsType" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>Dette element skal angives, hvis samtykkeerklæringen er besvaret af en medarbejder på vegne af en borger. Hvis det ikke er angivet, har borgeren selv svaret gennem en selvbetjeningsløsning.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="OplysningsErklaering" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation> Beskriver hvordan borgens personoplysninger behandles. Skal angives hvis borger er blevet præsenteret for den.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="sdt:HtmlTekst"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="SamtykkegivervendtBeskrivelse">
                    <xs:complexType>
                        <xs:annotation>
                            <xs:documentation> Teksten samtykkegiveren blev præsenteret for, da de behandlede samtykkeerklæringsanmodningen.</xs:documentation>
                        </xs:annotation>
                        <xs:sequence>
                            <xs:element ref="sdt:HtmlTekst"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Samtykkegrupper">
                    <xs:annotation>
                        <xs:documentation> Liste med alle samtykkegrupper i samtykkeerklæringen. </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="grp:Samtykkegruppe" minOccurs="1" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                    <xs:unique name="uniktSamtykkegruppeUUID">
                        <xs:selector xpath="grp:Samtykkegruppe/grp:SamtykkegruppeHeader"/>
                        <xs:field xpath="grp:SamtykkegruppeUUID"/>
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="SubjektType">
        <xs:sequence>
            <xs:element name="Borger" type="BorgerType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GiverType">
        <xs:sequence>
            <xs:element name="TidspunktForHandling" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>Tidspunktet for handlingen. Hvis tidszone ikke er angivet antages det, at tiden er angivet i UTC.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Borger" type="BorgerType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BorgerType">
        <xs:annotation>
            <xs:documentation> Persontypen beskriver en borger. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Navn" type="sdt:IkkeTomStreng">
                <xs:annotation>
                    <xs:documentation>Personens fulde navn.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:choice>
                <xs:annotation>
                    <xs:documentation>Angiv enten borgerens personnummer eller personId </xs:documentation>
                </xs:annotation>
                <xs:element name="CPR" type="CprType">
                    <xs:annotation>
                        <xs:documentation>Borgerens personnummer</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="CprUUID" type="sdt:UuidType">
                    <xs:annotation>
                        <xs:documentation>Borgerens personId fra datafordeleren.</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="CprType">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{10}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="AfsenderType">
        <xs:sequence>
            <xs:element name="AfsenderUUID" type="sdt:UuidType"/>
            <xs:element name="Navn" type="sdt:IkkeTomStreng"/>
            <xs:element name="Telefonnummer" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="sdt:Adresse" minOccurs="0" maxOccurs="1"/>
            <xs:element name="DigitalPostKontaktPunktId" type="sdt:UuidType" minOccurs="0" maxOccurs="1"/>
            <xs:element name="Webadresse" type="sdt:UriType" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="IkkeTomStrengMax30Tegn">
        <xs:restriction base="sdt:IkkeTomStreng">
            <xs:maxLength value="30"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max50Tegn">
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>