<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns:core="http://schema.omg.org/spec/CTS2/1.0/Core"
	xmlns:entity="http://schema.omg.org/spec/CTS2/1.0/Entity"
	xmlns:coreservice="http://schema.omg.org/spec/CTS2/1.0/CoreService"
	xmlns="http://schema.omg.org/spec/CTS2/1.0/EntityDescriptionServices"
	targetNamespace="http://schema.omg.org/spec/CTS2/1.0/EntityDescriptionServices" elementFormDefault="qualified">
	<xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/Core" schemaLocation="http://informatics.mayo.edu/svn/trunk/cts2/spec/psm/rest/schema/Core.xsd"/>
	<xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/Entity" schemaLocation="http://informatics.mayo.edu/svn/trunk/cts2/spec/psm/rest/schema/Entity.xsd"/>
	<xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/CoreService" schemaLocation="http://informatics.mayo.edu/svn/trunk/cts2/spec/psm/rest/serviceSchema/CoreService.xsd" />
	
	<xs:element name="EntityDescriptionHistoryService" type="EntityDescriptionHistoryService"/>
	<xs:complexType name="EntityDescriptionHistoryService">
		<xs:complexContent>
			<xs:extension base="coreservice:HistoryService">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:element name="EntityDescriptionMaintenanceService" type="EntityDescriptionMaintenanceService"/>
	<xs:complexType name="EntityDescriptionMaintenanceService">
		<xs:complexContent>
			<xs:extension base="coreservice:BaseMaintenanceService">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:element name="UpdateEntityDescriptionRequest" type="UpdateEntityDescriptionRequest"/>
	<xs:complexType name="UpdateEntityDescriptionRequest">
		<xs:sequence>
			<xs:element name="definition" type="core:Definition" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="designation" type="entity:Designation" minOccurs="1" maxOccurs="unbounded"/>
			<xs:element name="note" type="core:Comment" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="parent" type="coreservice:EntityNameOrURI" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="property" type="core:Property" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="resourceType" type="coreservice:EntityNameOrURI" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:element name="EntityDescriptionReadService" type="EntityDescriptionReadService"/>
	<xs:complexType name="EntityDescriptionReadService">
		<xs:complexContent>
			<xs:extension base="coreservice:BaseReadService">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:element name="EntityDescriptionQueryService" type="EntityDescriptionQueryService"/>
	<xs:complexType name="EntityDescriptionQueryService">
		<xs:complexContent>
			<xs:extension base="coreservice:BaseQueryService">
				<xs:sequence>

					<xs:element name="knownCodeSystem" type="core:CodeSystemVersionReference" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element name="knownCodeSystemVersion" type="core:CodeSystemVersionReference" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="entities" type="core:EntityDirectoryURI" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	
	<!-- Maintenance Exceptions  -->
	<xs:element name="EntityIDMustBeSupplied" type="EntityIDMustBeSupplied"/>
	<xs:complexType name="EntityIDMustBeSupplied">
		<xs:annotation>
			<xs:documentation>The service requires that the scoped entity name be provided</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="coreservice:CTS2Exception">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:element name="EntityIDMustBeGeneratedByService" type="EntityIDMustBeGeneratedByService"/>
	<xs:complexType name="EntityIDMustBeGeneratedByService">
		<xs:annotation>
			<xs:documentation>The service expects to automatically generate the entityID for the supplied code system.  It cannot be supplied in the API call.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="coreservice:CTS2Exception">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:element name="EntityMaintenanceExceptions" type="EntityMaintenanceExceptions"/>
	<xs:complexType name="EntityMaintenanceExceptions">
		<xs:annotation>
			<xs:documentation>A common set of exceptions that can occur on any entity authoring create call.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="entityAlreadyExists" type="EntityAlreadyExists" minOccurs="1" maxOccurs="1"/>
			<xs:element name="entityIDMustBeGeneratedByService" type="EntityIDMustBeGeneratedByService" minOccurs="1" maxOccurs="1"/>
			<xs:element name="entityIDMustBeSupplied" type="EntityIDMustBeSupplied" minOccurs="1" maxOccurs="1"/>
			<xs:element name="changeSetIsNotOpen" type="coreservice:ChangeSetIsNotOpen" minOccurs="1" maxOccurs="1"/>
			<xs:element name="unknownChangeSet" type="coreservice:UnknownChangeSet" minOccurs="1" maxOccurs="1"/>
			<xs:element name="unknownCodeSystemVersion" type="coreservice:UnknownCodeSystemVersion" minOccurs="1" maxOccurs="1"/>
			<xs:element name="unsupportedNamespaceName" type="coreservice:UnsupportedNamespaceName" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:element name="EntityAlreadyExists" type="EntityAlreadyExists"/>
	<xs:complexType name="EntityAlreadyExists">
		<xs:annotation>
			<xs:documentation>A description of the named entity already exists in the code system version</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="coreservice:CTS2Exception">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- End Maintenance Exceptions  -->
	
</xs:schema>
