<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://schemas.openehr.org/v2" targetNamespace="http://schemas.openehr.org/v2" elementFormDefault="qualified"
           id="Ehr.xsd" version="v1.0.2">
    <!-- dependencies -->
	<xs:include schemaLocation="DataStructures.xsd"/>
	<xs:complexType name="EHR">
		<xs:sequence>
			<xs:element name="system_id" type="HIER_OBJECT_ID"/>
			<xs:element name="ehr_id" type="HIER_OBJECT_ID"/>
			<xs:element name="time_created" type="DV_DATE_TIME"/>
			<xs:element name="contributions" type="OBJECT_REF" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ehr_access" type="OBJECT_REF"/>
			<xs:element name="ehr_status" type="OBJECT_REF"/>
			<xs:element name="directory" type="OBJECT_REF" minOccurs="0"/>
			<xs:element name="compositions" type="OBJECT_REF" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="VERSIONED_EHR_ACCESS">
		<xs:complexContent>
			<xs:extension base="VERSIONED_OBJECT"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EHR_ACCESS">
		<xs:complexContent>
			<xs:extension base="LOCATABLE">
				<xs:sequence>
					<xs:element name="settings" type="ACCESS_CONTROL_SETTINGS" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VERSIONED_EHR_STATUS">
		<xs:complexContent>
			<xs:extension base="VERSIONED_OBJECT"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EHR_STATUS">
		<xs:complexContent>
			<xs:extension base="LOCATABLE">
				<xs:sequence>
					<xs:element name="subject" type="PARTY_SELF"/>
					<xs:element name="is_queryable" type="xs:boolean"/>
					<xs:element name="is_modifiable" type="xs:boolean"/>
					<xs:element name="other_details" type="ITEM_STRUCTURE" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VERSIONED_COMPOSITION">
		<xs:complexContent>
			<xs:extension base="VERSIONED_OBJECT"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CONTENT_ITEM" abstract="true">
		<xs:complexContent>
			<xs:extension base="LOCATABLE"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SECTION">
		<xs:complexContent>
			<xs:extension base="CONTENT_ITEM">
				<xs:sequence>
					<xs:element name="items" type="CONTENT_ITEM" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="GENERIC_ENTRY">
		<xs:complexContent>
			<xs:extension base="CONTENT_ITEM">
				<xs:sequence>
					<xs:element name="data" type="ITEM_TREE"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ENTRY" abstract="true">
		<xs:complexContent>
			<xs:extension base="CONTENT_ITEM">
				<xs:sequence>
					<xs:element name="language" type="CODE_PHRASE"/>
					<xs:element name="encoding" type="CODE_PHRASE"/>
					<xs:element name="subject" type="PARTY_PROXY"/>
					<xs:element name="provider" type="PARTY_PROXY" minOccurs="0"/>
					<xs:element name="other_participations" type="PARTICIPATION" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element name="workflow_id" type="OBJECT_REF" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ADMIN_ENTRY">
		<xs:complexContent>
			<xs:extension base="ENTRY">
				<xs:sequence>
					<xs:element name="data" type="ITEM_STRUCTURE"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CARE_ENTRY" abstract="true">
		<xs:complexContent>
			<xs:extension base="ENTRY">
				<xs:sequence>
					<xs:element name="protocol" type="ITEM_STRUCTURE" minOccurs="0"/>
					<xs:element name="guideline_id" type="OBJECT_REF" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EVALUATION">
		<xs:complexContent>
			<xs:extension base="CARE_ENTRY">
				<xs:sequence>
					<xs:element name="data" type="ITEM_STRUCTURE"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="OBSERVATION">
		<xs:complexContent>
			<xs:extension base="CARE_ENTRY">
				<xs:sequence>
					<xs:element name="data" type="HISTORY"/>
					<xs:element name="state" type="HISTORY" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="INSTRUCTION">
		<xs:complexContent>
			<xs:extension base="CARE_ENTRY">
				<xs:sequence>
					<xs:element name="narrative" type="DV_TEXT"/>
					<xs:element name="expiry_time" type="DV_DATE_TIME" minOccurs="0"/>
					<xs:element name="wf_definition" type="DV_PARSABLE" minOccurs="0"/>
					<xs:element name="activities" type="ACTIVITY" minOccurs="0" maxOccurs="unbounded"/>			
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ACTION">
		<xs:complexContent>
			<xs:extension base="CARE_ENTRY">
				<xs:sequence>
					<xs:element name="time" type="DV_DATE_TIME"/>
					<xs:element name="description" type="ITEM_STRUCTURE"/>
					<xs:element name="ism_transition" type="ISM_TRANSITION"/>
					<xs:element name="instruction_details" type="INSTRUCTION_DETAILS" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ACTIVITY">
		<xs:complexContent>
			<xs:extension base="LOCATABLE">
				<xs:sequence>
					<xs:element name="description" type="ITEM_STRUCTURE"/>
					<xs:element name="timing" type="DV_PARSABLE"/>
					<xs:element name="action_archetype_id" type="NonEmptyString" default="/.*/"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="INSTRUCTION_DETAILS">
		<xs:sequence>
			<xs:element name="instruction_id" type="LOCATABLE_REF"/>
			<xs:element name="activity_id" type="atCode"/>
			<xs:element name="wf_details" type="ITEM_STRUCTURE" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ISM_TRANSITION">
		<xs:sequence>
			<xs:element name="current_state" type="DV_CODED_TEXT"/>
			<xs:element name="transition" type="DV_CODED_TEXT" minOccurs="0"/>
			<xs:element name="careflow_step" type="DV_CODED_TEXT" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="COMPOSITION">
		<xs:complexContent>
			<xs:extension base="LOCATABLE">
				<xs:sequence>
					<xs:element name="language" type="CODE_PHRASE"/>
					<xs:element name="territory" type="CODE_PHRASE"/>
					<xs:element name="category" type="DV_CODED_TEXT"/>
					<xs:element name="composer" type="PARTY_PROXY"/>
					<xs:element name="context" type="EVENT_CONTEXT" minOccurs="0"/>
					<xs:element name="content" type="CONTENT_ITEM" minOccurs="0"
								maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EVENT_CONTEXT">
		<xs:sequence>
			<xs:element name="start_time" type="DV_DATE_TIME"/>
			<xs:element name="end_time" type="DV_DATE_TIME" minOccurs="0"/>
			<xs:element name="location" type="NonEmptyString" minOccurs="0"/>
			<xs:element name="setting" type="DV_CODED_TEXT"/>
			<xs:element name="other_context" type="ITEM_STRUCTURE" minOccurs="0"/>
			<xs:element name="health_care_facility" type="PARTY_IDENTIFIED" minOccurs="0"/>
			<xs:element name="participations" type="PARTICIPATION" minOccurs="0"
						maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
