<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Turbo XML 2.4.0.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xsd:schema xmlns="http://ns.medbiq.org/activitymodel/v1/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ns.medbiq.org/activitymodel/v1/" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!--Copyright © 2009 MedBiquitous Consortium. All Rights Reserved. http://www.medbiq.org-->
	<!--Users are bound by the terms of the MedBiquitous Consortium XML Public License and Terms of Use-->
	<!--Modified 5 August 2009-->
	<xsd:element name="ActivityModel" type="ActivityModelType"/>
	<xsd:simpleType name="NonNullString">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="RelationsType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="eq"/>
			<xsd:enumeration value="neq"/>
			<xsd:enumeration value="leq"/>
			<xsd:enumeration value="lt"/>
			<xsd:enumeration value="geq"/>
			<xsd:enumeration value="gt"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="RuleFunctionType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="stop"/>
			<xsd:enumeration value="showMessageOnly"/>
			<xsd:enumeration value="restart"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="OnOffType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="on"/>
			<xsd:enumeration value="off"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="TimerDirectionType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="up"/>
			<xsd:enumeration value="down"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="CounterOperatorType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="+"/>
			<xsd:enumeration value="-"/>
			<xsd:enumeration value="="/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="WeightingType">
		<xsd:restriction base="xsd:integer">
			<xsd:maxInclusive value="100"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ContentType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\s*/DataAvailabilityModel/DAMNode\[@id\s?=\s?'[^']+'\]\s*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ActivityNodeXpathType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\s*/ActivityModel/ActivityNodes/NodeSection/ActivityNode\[@id\s?=\s?'[^']+'\]\s*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="CounterPathType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\s*/ActivityModel/Properties/Counters/Counter\[@id\s?=\s?'[^']+'\]\s*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="ActivityModelType">
		<xsd:sequence>
			<xsd:element name="Properties" type="PropertiesType" minOccurs="0"/>
			<xsd:element name="ActivityNodes" type="ActivityNodesType"/>
			<xsd:element name="Links" type="LinksType" minOccurs="0"/>
			<xsd:element name="XtensibleInfo" type="XtensibleInfoType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PropertiesType">
		<xsd:sequence>
			<xsd:element name="Counters" type="CountersType" minOccurs="0"/>
			<xsd:element name="Timer" type="TimerType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ActivityNodesType">
		<xsd:sequence>
			<xsd:element name="NodeSection" type="NodeSectionType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LinksType">
		<xsd:sequence>
			<xsd:element name="Link" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="LinkType"/>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CountersType">
		<xsd:sequence>
			<xsd:element name="Counter" type="CounterType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CounterType">
		<xsd:sequence>
			<xsd:element name="CounterLabel" type="NonNullString"/>
			<xsd:element name="CounterUnitsSuffix" type="NonNullString" minOccurs="0"/>
			<xsd:element name="CounterUnitsPrefix" type="NonNullString" minOccurs="0"/>
			<xsd:element name="CounterInitValue" type="xsd:integer"/>
			<xsd:element name="CounterRules" type="CounterRulesType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string" use="required"/>
		<xsd:attribute name="isVisible" type="xsd:boolean" default="true"/>
	</xsd:complexType>
	<xsd:complexType name="CounterRulesType">
		<xsd:sequence>
			<xsd:element name="Rule" type="RuleType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="RuleType">
		<xsd:sequence>
			<xsd:element name="Relation" type="RelationsType"/>
			<xsd:element name="Value" type="xsd:integer"/>
			<xsd:element name="RuleRedirect" type="ActivityNodeXpathType" minOccurs="0"/>
			<xsd:element name="RuleMessage" type="NonNullString" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="TimerType">
		<xsd:sequence>
			<xsd:element name="TimerDeltaSeconds" type="xsd:integer"/>
			<xsd:element name="TimerDirection" type="TimerDirectionType"/>
			<xsd:element name="TimerRules" type="CounterRulesType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="isVisible" type="xsd:boolean" default="true"/>
	</xsd:complexType>
	<xsd:complexType name="ActivityNodeType">
		<xsd:sequence>
			<xsd:element name="Content" type="ContentType"/>
			<xsd:element name="Rules" type="RulesType" minOccurs="0"/>
			<xsd:element name="Services" type="ServicesType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:string" use="required"/>
		<xsd:attribute name="label" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="NodeSectionType">
		<xsd:choice>
			<xsd:element name="NodeSection" type="NodeSectionType" maxOccurs="unbounded"/>
			<xsd:element name="ActivityNode" type="ActivityNodeType" maxOccurs="unbounded"/>
		</xsd:choice>
		<xsd:attribute name="id" type="xsd:string" use="required"/>
		<xsd:attribute name="label" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="RulesType">
		<xsd:sequence>
			<xsd:element name="CounterActionRule" type="CounterActionRuleType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Probability" type="OnOffType" minOccurs="0"/>
			<xsd:element name="ConditionalRule" type="ConditionalRuleType" minOccurs="0"/>
			<xsd:element name="NavigateGlobal" type="OnOffType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CounterActionRuleType">
		<xsd:sequence>
			<xsd:element name="CounterOperator" type="CounterOperatorType"/>
			<xsd:element name="CounterRuleValue" type="xsd:integer"/>
			<xsd:element name="CounterPath" type="CounterPathType"/>
			<xsd:element name="CounterRuleEnabled" type="OnOffType" default="on" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ServicesType">
		<xsd:sequence>
			<xsd:element name="Timer" type="TimerType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LinkType">
		<xsd:sequence>
			<xsd:element name="ActivityNodeA" type="ActivityNodeXpathType"/>
			<xsd:element name="ActivityNodeB" type="ActivityNodeXpathType"/>
			<xsd:element name="Weighting" type="WeightingType" minOccurs="0"/>
			<xsd:element name="CounterActionRule" type="CounterActionRuleType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="label" type="xsd:string"/>
		<xsd:attribute name="display" type="xsd:boolean" default="true"/>
	</xsd:complexType>
	<xsd:complexType name="XtensibleInfoType">
		<xsd:sequence>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ConditionalRuleType">
		<xsd:sequence>
			<xsd:element name="Operator" type="OperatorType"/>
			<xsd:element name="RuleRedirect" type="ActivityNodeXpathType" minOccurs="0"/>
			<xsd:element name="RuleMessage" type="NonNullString" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="OperatorType">
		<xsd:choice>
			<xsd:element name="And" type="ConditionType" minOccurs="0"/>
			<xsd:element name="Or" type="ConditionType" minOccurs="0"/>
			<xsd:element name="Nand" type="ConditionType" minOccurs="0"/>
			<xsd:element name="Nor" type="ConditionType" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="ConditionType">
		<xsd:sequence>
			<xsd:element name="Operand" type="NonNullString" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="And" type="ConditionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Or" type="ConditionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Nand" type="ConditionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Nor" type="ConditionType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
