<?xml version="1.0" encoding="UTF-8"?>
<!--
	Historie:
	
	??.??.2017	-	??????		-	V 1.0				-	Erstausgabe
	10.04.2019	-	W.Scherer	-	V 1.1_DRAFT_011001	-	SVCLEAR-18	-	neuer Typ:		dialogfallversionType, 
																			neues Element:	dialogfall.version
															SVCLEAR-16	-	neuer Typ:		zustellungsgrundType, 
																			neues Element:	dialogfall.zustellungsgrund
	14.05.2019	-	W.Scherer	-	V 2.0_DRAFT_020001	-	SVCLEAR-42	-	EntfallElement: dialogfall.meldungInfo.dringend
																			neuer Typ:		dringlichkeitType, 
																			neues Element:	dialogfall.meldungInfo.dringlichkeit
																			neues Element:	dialogfall.meldungInfo.meldungStatus
																			neues Element:	dialogfall.meldungInfo.meldungStatusZusatz
																			neues Element:	dialogfall.meldungInfo.stornoMeldungZulaessig
	21.05.2019	-	W.Scherer	-	V 2.0_INCLMVB_DRAFT_020003 -		-	einbetten von MVB_2_0_0 in dialogfallType/meldung/inhalt
	29.05.2019	-	W.Scherer	-	V 2.0_INCLMVB_DRAFT_020004 -		-	Korrekturen:	xmlns:tns to online_2_0.elda.at/dgdialog
																							xmlns:ns1 eliminiert, da nur synonym for denselben namespace wie tns:
																							Kommentare reduziert
																			wertChoiceType um option "binaer" erweitert
																			clearingDatenExternType um datenParameterInhalt mit Typ wertChoiceType erweitert
	31.05.2019	-	W.Scherer	-	V 2.0.0_DRAFT_020005	-			-	nach Abstimmung DGDIALOG/WEBEKU/ELDA vom 31.05.2019:
																				"Payload" (mvb) soll weiter getrennt bleiben, um "Hülle" (dialogfall) auch für andere 
																					Inhalte verwenden zu können
																				MVB-Clearingfall-Spezifika sollen in MVB-Payload transferiert werden
																				BASE64-Encoding der "Payload" soll für 2020 beibehalten werden und
																					Meingungen seitens der LSWH bezüglich anderer Modellierung
																					abgestimmt werden (payload als type "any" in PCDATA Inklusion)
	12.06.2019	-	W.Scherer	-	V 2.0.0_DRAFT_020006	-			-	"dringlichkeit" "minOccurs=0" auch in Dokumentation gleich
																			dringlichkeitType: Dokumentation beschreibt "N" als Default-Wert
																			ACHTUNG: Dies ist NUR in der Dokumentation enthalten, da
																			XML-Schema keine Angabe eines Default-Werts gestattet, wenn das Element 
																			nicht vorhanden ist (das XSD-Attribut "default" trifft nur zu, wenn
																			das Element zwar vorhanden ist, aber keinen Wert beinhaltet
-->
<xs:schema	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
			xmlns:tns="https://online_2_0.elda.at/dgdialog/" 
			targetNamespace="https://online_2_0.elda.at/dgdialog/" >
	<xs:element name="dialogfallListe">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="dialogfall" type="tns:dialogfallType" minOccurs="1" maxOccurs="1000"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="zustellungsgrundType">
		<xs:annotation>
			<xs:documentation xml:lang="de"> 
				Grund der Zustellung des Dialogfalls, ab V 2.0
				
				DM-ORG, Kapitel J.1, Feld-Information:
				Nr.				- (siehe Element "zustellgrund")
				Name			- zustellungsgrund
				Anzahl min.		- 1
				Anzahl max.		- 1
				Länge			- 1
				Typ				- string
				Beschreibung	- "M" - Dialogfall gemeldet
								  "U" - Dialogfall urgiert
								  "O" - Dialogfall obsolet gesetzt
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			 <xs:annotation>
			 	<xs:documentation xml:lang="de"> Dialogfall gemeldet        </xs:documentation>
			 	<xs:documentation xml:lang="de"> Dialogfall urgiert         </xs:documentation> 
			 	<xs:documentation xml:lang="de"> Dialogfall obsolet gesetzt </xs:documentation>
			 </xs:annotation>
			<xs:enumeration value="M"/>
			<xs:enumeration value="U"/> 
			<xs:enumeration value="O"/> 
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="dringlichkeitType">
		<xs:annotation>
			<xs:documentation xml:lang="de">
				Dringlichkeit des Dialogfalls, ab V 2.0
				
				DM-ORG, Kapitel J.1, Feld-Information:
				Nr.				-	(siehe Element "dringlichkeit")
				Name			-	dringlichkeit
				Anzahl min.		-	0
				Anzahl max.		-	1
				Länge			-	1
				Typ				-	string
				Beschreibung	-	"D" - dringend
									"K"	- Kontrollfall
									"N" - nicht dringend
									Ist das Element im Datensatz nicht angegeben, so ist als Vorgabewert der Wert "N"
									für "nicht dringend" anzunehmen.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:annotation>
				<xs:documentation xml:lang="de"> Dialogfall ist dringend, Handlung nötig	</xs:documentation>
				<xs:documentation xml:lang="de"> Kontrollfall, Meldung kontrollieren		</xs:documentation>
				<xs:documentation xml:lang="de"> Dialogfall ist nicht dringend			</xs:documentation>
			</xs:annotation>
			<xs:enumeration value="D"/>
			<xs:enumeration value="K"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="dialogfallversionType">
		<xs:annotation>
			<xs:documentation xml:lang="de">
				Format-Version des Dialogfalls, ab V 2.0
				
				DM-ORG, Kapitel J.1, Feld-Information:
				Nr.				- (siehe Element "version")
				Name			- version
				Anzahl min.		- 1
				Anzahl max.		- 1
				Länge			- 7..70
				Typ				- string
				Beschreibung	- Version des Dialogfalls in der Form "ELDA_DIALOGFALL_major_minor"
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
		<xs:annotation>
				<xs:documentation xml:lang="de">
					Muster: ELDA_DIALOGFALL_&lt;majorVersion3stelligNumerisch&gt;_&lt;minorVersion3stelligNumerisch&gt;_&lt;updateVersion3stelligNumerisch&gt;
					Versionierungs-Semantik:
					- JEDE Instanz des Dialogfalls hat eine Versions-Information, bestehend aus:
						- der Information, um welche Daten es sich handelt: "ELDA_DIALOGFALL" in der Form
						  "&lt;IT-System&gt;_&lt;Datenbestand&gt;"
						  WICHTIG: die Kombination IT-System + Datenbestand muss eine eindeutige Type der Schnittstelle und
						  Bedeutung der über die Schnittstelle übertragenen Daten implizieren
						- einer MAJOR-Version
						- einer MINOR-Version, welche die MAJOR-Version hierarchisch unterteilt
						- Version 1.x.x wird dadurch gekennzeichnet, dass das Element "version" NICHT vorhanden ist
						- Ab Version 2.0.0 ist das Element "version" ZWINGEND immer vorhanden
					- eine Erhöhung der MAJOR-Version ist nötig, wenn die Verarbeitung des CF-Dokuments durch eine 
					  Software, die sich die niedrigere Version erwartet, zu einer Verfälschung des FACHLICHEN
					  Tatbestandes führt. Dies inkludiert z.B.:
						- Ein Element fällt weg
						- Ein Element kommt hinzu, dessen Verwendung zwingend notwendig für die fachlich richtige
						  Verarbeitung des Datensatzes ist
						- Ein Element bekommt einen anderen Namen
						- Ein Element erhält einen erweiterten Wertebereich
					- eine Erhöhung der MINOR-Version reicht aus, wenn die Verarbeitung des CF-Dokuments durch eine
					  Software, die sich die niedrigere Version erwartet, zu keiner Verfälschung des FACHLICHEN
					  Tatbestands führt.
					  Dies ist immer im Einzelfall zu betrachtet und inkludiert z.B.:
						- ein Element kommt hinzu, darf aber ignoriert werden, ohne FACHLICH falsche Verarbeitung zu erzeugen
						  ANM: es kann durchaus sein, dass das Ignorieren eines Elements BETRIEBLICH zu Problemen führt,
						  dies ist aber abhängig von der betrieblichen Logik es Empfänger-Systems des Clearingfalls
						  Ein Beispiel für einen solchen Fall ist das "version"-Element selbst:
							Ein Empfänger-System, das nur Version 1.x.x erwartet, darf das "version"-Element in 
							einem V 2.x.x-Datensatz ignorieren. Es könnte jedoch sein, dass der Parser des Empfänger-Systems
							das Dokument als invalide erkennt, da es Elemente enthält, die im Schema der Version 1.0
							nicht enthalten sind.
						  Ein anders gelagertes Beispiel ist das "zustellungsgrund"-Element in Version V 2.0:
							(Abgesehen von der Tatsache, dass ein validierender XML-Parser, der auf der V 1.0 basiert, das
							"zustellungsgrund"-Element als fehlerhaft erkennt)
							Wird das "zustellungsgrund"-Element ignoriert, erscheint ein CF, der auf Grund der Urgenz erneut
							zugestellt wird (siehe SVCLEAR-22) wie ein neuer CF, der allerdings identisch zum ursprünglichen CF
							ist.
							Die Semantik von Clearingfällen besagt, dass es zu einer Meldung nur EINEN CF gibt. Einen "neuen"
							CF kann es daher nicht geben. Es ist jedoch von der Logik im Empfängersystem abhängig, welche Auswirkungen
							diese Urgenz-Zustellung hat.
						- ein Element erhält einen VERRINGERTEN Wertebereich, ohne jedoch die fachliche Semantik des
						  vorhandenen Wertebereichs zu verändern
					- eine Erhöhung der UPDATE-Version reicht aus, wenn die physische Repräsentation der Dateninhalte (inklusive
					  Element-Namen) unverändert bleibt und auch keine Wertebereiche verändert werden sowie die FACHLICHE
					  Bedeutung der einzelne Werte erhalten bleibt.
					  Eine Erhöhung der UPDATE-Version ist durch eine editorielle Änderung der durch dieses Schema beschriebenen
					  Schnittstelle gerechtfertigt, d.h. wenn die INHALTE der "annotation"-Elemente z.B. aus dem Grunde der
					  Klarstellung geändert werden.
					  Ebenso ist eine Erhöhung der UPDATE-Version dann gerechtfertigt, wann sich in diesem Schema KEINE Änderung ergeben hat,
					  jedoch begleitende Dokumente, die z.B. den Wertevorrat von Datenfeldnern beschreiben, eine Änderung erfahren haben.
					  In diesen Dokumenten wird dann auf diejenige Version Bezug genommen.
					Die Version 2.0.0 ist die erste Version, die eine Versions-Kennung in Form des Felds "version" im
					Clearing-Datensatz trägt. Die Version 2.0.x wird mit der DM-ORG mit 01.12.2019 freigegeben.
					In der Version 2.0.0 ist der Inhalt des Felds "version" der Wert "ELDA_DIALOGFALL_2_0_0"
				</xs:documentation>
			</xs:annotation>
			<xs:minLength value="7"/>
			<xs:maxLength value="70"/>			
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="dialogfallType">
		<xs:sequence>
			<xs:element name="testkennzeichen" maxOccurs="1" minOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="version" type="tns:dialogfallversionType" minOccurs="1" maxOccurs="1">			<!-- ab V 2.0 zwingend -->
				<xs:annotation>
					<xs:documentation>
						DM-ORG, Kapitel J.1, Feld-Information:
						Nr.		- (nach "testkennzeichen")
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="zustellungsgrund" type="tns:zustellungsgrundType" minOccurs="1" maxOccurs="1">	<!-- ab V 2.0 zwingend -->
				<xs:annotation>
					<xs:documentation>
						DM-ORG, Kapitel J.1, Feld-Information:
						Nr.		- (nach "version")
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="meldungInfo" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="bereitstellungsdatum" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
						<xs:element name="dringlichkeit" type="tns:dringlichkeitType" minOccurs="0" maxOccurs="1">
							<xs:annotation>
								<xs:documentation>
									DM-ORG, Kapitel J.1, Feld-Information:
									Name	- "Dringlichkeit"
									Nr.		- (nach "bereitstellungsdatum")
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="traegercode" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="2"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="beitragskontonummer" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="referenzwert" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="40"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="versicherungsnummer" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="familienname" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="70"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="vorname" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="70"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="fachinformation" minOccurs="0" maxOccurs="10">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="typ" minOccurs="1" maxOccurs="1">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="70"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:element>
									<xs:element name="wert" type="tns:wertChoiceType" minOccurs="1" maxOccurs="1"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="projektCode" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="2"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="bestandBez" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="2"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="satzart" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="2"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="satzartBez" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="70"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="meldung" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="version" minOccurs="1" maxOccurs="1">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="20"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="inhalt" type="xs:base64Binary" minOccurs="1" maxOccurs="1"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="wertChoiceType">
		<xs:choice>
			<xs:element name="numerisch" type="xs:long"/>
			<xs:element name="alphaNumerisch">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="40"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="datum" type="xs:date"/>
		</xs:choice>
	</xs:complexType>
</xs:schema>
