<?xml version="1.0" encoding="UTF-8"?>

<!--
This document contains Information protected by copyright.
Only American College of Cardiology may photocopy or reproduce any part of this document for training or use by American College of Cardiology employees.
Any other reproduction of this document or part of this document is prohibited unless American College of Cardiology has provided prior written consent.
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<xs:complexType name="value" abstract="true"/>
	<xs:complexType name="PQ">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="unit" type="xs:string"/>
				<xs:attribute name="value" type="xs:decimal"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="BL">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:boolean"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ST">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="FN">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MN">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LN">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DT">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:date"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TM">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:time"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TS">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:dateTime"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CD">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="codeSystem" type="xs:string" use="required"/>
				<xs:attribute name="codeSystemName" type="xs:string" use="optional"/>
				<xs:attribute name="code" type="xs:string" use="required"/>
				<xs:attribute name="displayName" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="NUM">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:decimal"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CTR">
		<xs:complexContent>
			<xs:extension base="value">
				<xs:attribute name="value" type="xs:integer"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="element">
		<xs:sequence>
			<xs:element name="value" type="value" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>
		<xs:attribute name="codeSystem" type="xs:string" use="required"/>
		<xs:attribute name="codeSystemName" type="xs:string" use="optional"/>
		<xs:attribute name="displayName" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="sectionContainer">
		<xs:sequence>
			<xs:element name="element" type="element" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="section" type="sectionContainer" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>
		<xs:attribute name="displayName" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="rootContainer">
		<xs:sequence>
			<xs:element name="section" type="sectionContainer" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="submissionInfoContainer">
		<xs:complexContent>
			<xs:extension base="rootContainer">
				<xs:attribute name="xmsnId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="episodeContainer">
		<xs:complexContent>
			<xs:extension base="rootContainer">
				<xs:attribute name="episodeKey" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="followupContainer">
		<xs:complexContent>
			<xs:extension base="rootContainer">
				<xs:attribute name="followupKey" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="patientContainer">
		<xs:complexContent>
			<xs:extension base="rootContainer">
				<xs:choice>
					<xs:element name="episode" type="episodeContainer" maxOccurs="unbounded"/>
					<xs:element name="followup" type="followupContainer" maxOccurs="unbounded"/>
				</xs:choice>
				<xs:attribute name="ncdrPatientId" type="xs:integer" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="registryDocument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="submission" type="submissionInfoContainer"/>
				<xs:element name="patient" type="patientContainer" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="schemaVersion" type="xs:decimal" use="required"/>
		</xs:complexType>
		<xs:unique name="uniquePatient">
			<xs:selector xpath="patient"/>
			<xs:field xpath="@ncdrPatientId"></xs:field>
		</xs:unique>
		<xs:unique name="uniqueEpisode">
			<xs:selector xpath="patient/episode"></xs:selector>
			<xs:field xpath="@episodeKey"></xs:field>
		</xs:unique>
		<xs:unique name="uniqueFollowup">
			<xs:selector xpath="patient/followup"></xs:selector>
			<xs:field xpath="@followupKey"></xs:field>
		</xs:unique>
	</xs:element>
</xs:schema>
