<?xml version="1.0" encoding="UTF-8"?>

<xs:schema targetNamespace="http://www.secu.lu/ciss/cns/common"
		   xmlns="http://www.secu.lu/ciss/cns/common"
		   xmlns:xs="http://www.w3.org/2001/XMLSchema"
		   elementFormDefault="qualified">
	
	<xs:simpleType name="T_IdentifiantUnique" >
		<xs:annotation>
			<xs:documentation>Format d'identifiant unique pour un patient</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="13"/>
			<xs:pattern value="[123456789]\p{Nd}{12}">
				<xs:annotation>
					<xs:documentation>Premier chiffre (1 à 9) suivi de 12 chiffres (0 à 9)</xs:documentation>
				</xs:annotation>
			</xs:pattern>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="T_CodePrestataire">
		<xs:annotation>
			<xs:documentation>Format pour un code Fournisseur à 8 positions</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:int">
			<xs:maxInclusive value="99999999"/>
			<xs:minInclusive value="10000000"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="referenceExterne">
		<xs:annotation>
			<xs:documentation>Identifiant provenant du prestatire qui a envoyé le document</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:maxLength value="200"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="UuidSecu" type="T_uuid">
		<xs:annotation>
			<xs:documentation>Identifiant provenant du CCSS document (à utilser pour annulation ou confimation)</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="T_uuid">
		<xs:annotation>
			<xs:documentation>uuid</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="T_Montant">
		<xs:annotation>
			<xs:documentation>Format pour un montant</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:fractionDigits value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="typeDocument">
		<xs:annotation>
			<xs:documentation>Type du document</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="DMMHRB"/>
				<xs:enumeration value="DMCMAL"/>
				<xs:enumeration value="DMCMAT"/>
				<xs:enumeration value="DMCRF"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:simpleType name="documentStatus">
		<xs:annotation>
			<xs:documentation>Statut du document</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="DEPOSITED"/>
			<xs:enumeration value="CONFIRMED"/>
			<xs:enumeration value="CANCELLED"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="T_PageRequest">
		<xs:annotation>
			<xs:documentation>Page de la requête</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="number">
				<xs:annotation>
					<xs:documentation>Numéro de page</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="0"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="size">
				<xs:annotation>
					<xs:documentation>Nombre d'éléments par page</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="1"/>
						<xs:maxInclusive value="100"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="order">
				<xs:annotation>
					<xs:documentation>
						ASC:ascending, DESC:Descending
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="ASC"/>
						<xs:enumeration value="DESC"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="sortAttribute">
				<xs:annotation>
					<xs:documentation>
						L'attribut de sortie par lequel il faut trier
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="statut"/>
						<xs:enumeration value="dateSoumissionDocument"/>
						<xs:enumeration value="acquitte"/>
						<xs:enumeration value="dateEtablissementDocument"/>
						<xs:enumeration value="identifiantPrestataire"/>
						<xs:enumeration value="typeDocument"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="T_PageInfo">
		<xs:sequence>
			<xs:element name="pageNumber">
				<xs:annotation>
					<xs:documentation>Numéro de la page</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer"></xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="pageSize">
				<xs:annotation>
					<xs:documentation>Nombre d'éléments par page</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer"></xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="numberOfElements">
				<xs:annotation>
					<xs:documentation>Nombre d'éléments sur cette page</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer"></xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="totalElements">
				<xs:annotation>
					<xs:documentation>Nombre total d'éléments</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer"></xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="totalPages">
				<xs:annotation>
					<xs:documentation>Nombre total de pages</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer"></xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="T_AttachmentList">
		<xs:annotation>
			<xs:documentation>Cet élément regroupe les différentes annexes</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="attachment" type="T_Attachment" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Cet élément représente une annexe</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="T_Attachment">
		<xs:annotation>
			<xs:documentation>Attachment</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="referenceExterne" minOccurs="0"/>
			<xs:element name="mimeType">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="application/pdf"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="attachmentContent">
				<xs:annotation>
					<xs:documentation>PDF and other attachments</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:base64Binary"/>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="T_Anomalie">
		<xs:annotation>
			<xs:documentation>Type composé pour une anomalie générique</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="type" type="xs:string">
				<xs:annotation>
					<xs:documentation>Type d'anomalie</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="code" type="xs:string">
				<xs:annotation>
					<xs:documentation>Code d'anomalie</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="motif" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Motif d'anomalie</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="TDocumentRetour">
		<xs:sequence>
			<xs:element ref="typeDocument"/>
			<xs:element name="subtype" type="xs:string" minOccurs="0"/>
			<xs:element name="identifiantExterneDocument" type="T_uuid"/>
			<xs:element name="identifiantUnique" type="T_IdentifiantUnique" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Identifiant unique de la personne</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="identifiantPrestataire" type="T_CodePrestataire">
				<xs:annotation>
					<xs:documentation>Code fournisseur du facturier</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="dateEtablissementDocument">
				<xs:annotation>
					<xs:documentation>La date du document</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:date"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name="dateSoumissionDocument">
				<xs:annotation>
					<xs:documentation>La date du document</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:date"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name="acquitte" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:boolean"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name="statut" type="documentStatus"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="TRelationshipMandate">
		<xs:sequence>
			<xs:element name="relativeSsn" type="xs:string"/>
			<xs:element name="relativeFirstName" type="xs:string"/>
			<xs:element name="relativeLastName" type="xs:string"/>
			<xs:element name="mandateStatus">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="LINK_CREATION_REQUESTED"/>
						<xs:enumeration value="IN_PROGRESS"/>
						<xs:enumeration value="CREATED"/>
						<xs:enumeration value="DELETED_BY_RELATIVE"/>
						<xs:enumeration value="DELETED_BY_OWNER"/>
						<xs:enumeration value="DELETED_BY_CNS"/>
						<xs:enumeration value="CANCELLED"/>
						<xs:enumeration value="EXPIRED"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="statusUpdateDate" type="xs:dateTime"/>
			<xs:element name="mandateCreationDate" type="xs:dateTime"/>
		</xs:sequence>
	</xs:complexType>

</xs:schema>
