<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.secu.lu/ciss/cns/DMMHRB"
           xmlns="http://www.secu.lu/ciss/cns/DMMHRB"
           xmlns:com="http://www.secu.lu/ciss/cns/common"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:import schemaLocation="edoc_commonTypes.xsd" namespace="http://www.secu.lu/ciss/cns/common"/>

    <xs:complexType name="T_MemoireHonoraires">
        <xs:annotation>
            <xs:documentation>Type composé pour un mémoire d'honoraire</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="entete" type="T_Entete">
                <xs:annotation>
                    <xs:documentation>Entête du mémoire d'honoraires</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="pages" type="T_Pages"/>
            <xs:element name="complementInformation" minOccurs="0" maxOccurs="unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(00[1-9]|01[0-4])"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Pages">
        <xs:annotation>
            <xs:documentation>Cet élément regroupe les pages.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="page" type="T_Page" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Cet élément représente une page du mémoire d'honoraire.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Page">
        <xs:annotation>
            <xs:documentation>Page de prestations</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="prestation" type="T_Prestation" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Détail des prestations.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="paiement" type="T_Paiement"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Entete">
        <xs:annotation>
            <xs:documentation>Type composé pour une entête du mémoire d'honoraire</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="idMemoireHonoraires">
                <xs:annotation>
                    <xs:documentation>Mémoire d’honoraires - Numéro généré par le prestataire </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="identifiantFacturier">
                <xs:annotation>
                    <xs:documentation>Code médecin (prestataire facturier)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="com:T_CodePrestataire"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="patient" type="T_Patient"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Patient">
        <xs:annotation>
            <xs:documentation>Type composé pour un patient</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice>
                <xs:element name="matricule">
                    <xs:annotation>
                        <xs:documentation>Matricule du patient</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                        <xs:restriction base="com:T_IdentifiantUnique"/>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="identifiantPatient" type="T_IdentifiantPatient"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_IdentifiantPatient">
    <xs:annotation>
        <xs:documentation>Type composé pour un identifiant d'un patient sans matricule</xs:documentation>
    </xs:annotation>
        <xs:sequence>
            <xs:element name="dateNaissance">
                <xs:annotation>
                    <xs:documentation>Date naissance du patient</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:date"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="nomPatient">
                <xs:annotation>
                    <xs:documentation>Nom du Paitient</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="150"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="prenomPatient">
                <xs:annotation>
                    <xs:documentation>Prénom du Patient</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="100"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Prestation">
        <xs:annotation>
            <xs:documentation>Type composé pour une prestation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="numeroSeance" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>numero de la seance</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="1"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="lieuExecution">
                <xs:annotation>
                    <xs:documentation>Lieu</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="([0][1-2]|[0][5-9]|[1-5][0-9]|60)"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="etablissementHospitalier" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="(A[1-3]|[B-C][1-4]|D[1-2]|[E-L]1)"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="codeExecutant" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Code médecin exécutant</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="com:T_CodePrestataire"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="periode" type="T_Periode">
                <xs:annotation>
                    <xs:documentation>Période</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="codeActe">
                <xs:annotation>
                    <xs:documentation>Code acte SANS préfixes ou suffixes</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="libelle" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Libellé/Objet de l'acte</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="1600"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dent" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Dent</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="3"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="prefix" minOccurs="0" maxOccurs="unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="3"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="suffix" minOccurs="0" maxOccurs="unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="3"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="face" minOccurs="0" maxOccurs="unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="6"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="nombreActe">
                <xs:annotation>
                    <xs:documentation>Nombre</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:integer">
                        <xs:minInclusive value="1"/>
                        <xs:maxInclusive value="99"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="montantActe" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="identifiantAutorisation" type="com:T_uuid" minOccurs="0"/>
            <xs:element name="numeroAutorisation" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="15"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="identifiantPrescripteur" type="com:T_CodePrestataire" minOccurs="0"/>
            <xs:element name="identifiantOrdonnance" type="com:T_uuid" minOccurs="0"/>
            <xs:element name="numeroOrdonnance" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dateOrdonnance" type="xs:date" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Periode">
        <xs:annotation>
            <xs:documentation>Type composé pour une periode de l'acte</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="dateDebut">
                <xs:annotation>
                    <xs:documentation>Date Début</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:date"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dateFin" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Date Fin</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:date"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="heure" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Heure</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:time"/>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="T_Paiement">
        <xs:annotation>
            <xs:documentation>Type composé pour un paiement</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="sousTotal" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="report" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="total">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="acompteADeduire" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="aPayer">
                <xs:simpleType>
                    <xs:restriction base="com:T_Montant"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="devise" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Code devise alphabétique selon ISO 4217 (ex. EUR)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:length value="3"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dateAcquittement" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:date"/>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>