<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.RecordsForLiving.com/Schemas/2006-04/PHR-Model" targetNamespace="http://www.RecordsForLiving.com/Schemas/2006-04/PHR-Model" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation>This XSD defines the contents of an HealthFrame PHR document, and is the format of an Export file for HealthFrame 2.0</xs:documentation>
	</xs:annotation>
	<!--
	IMPORTANT TODO:
		POST 2.0:
			Get rid of stuff like 
			 	CommunicationTypeEnumeration,
			 	MessageDirectionTypeEnumeration,
			 	PhoneTypeEnumeration,
			 	TestResultTypeEnumeration,
			and most similar enumerations - and replace them wih use of ConceptType.
			
			Revise docs on all elements of type ConceptType- to clearly state preferred values, and SemanticType used in UMLS (or HF coding) system.
	-->
	<xs:simpleType name="CurrencyCode">
		<xs:annotation>
			<xs:documentation>
				ISO-4217 3-letter currency codes,
				as defined at
				http://www.xe.com/iso4217.htm
				Only a subset are defined here.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:length value="3"/>
			<xs:enumeration value="AUD"/>
			<xs:enumeration value="BRL"/>
			<xs:enumeration value="CAD"/>
			<xs:enumeration value="CNY"/>
			<xs:enumeration value="EUR"/>
			<xs:enumeration value="GBP"/>
			<xs:enumeration value="JPY"/>
			<xs:enumeration value="USD"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="MoneyType">
		<xs:simpleContent>
			<xs:extension base="xs:decimal">
				<xs:attribute name="CurrencyCode" type="CurrencyCode" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ConceptType">
		<xs:annotation>
			<xs:documentation>For HeatlhFrame 2.0, we will allow for bogus KEY values, since that is (basically) how we support user-defined entries (for 2.0). But - in future versions (3.0) - we will be more strict about the allowable values in the KEY</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Key" type="xs:string">
				<xs:annotation>
					<xs:documentation>a unique identifier - roughly in the format - Hxxx, Cxxx - as UMLS codes. (to be specified in more detail for 3.0)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="PrintName" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Nearly always have exactly one of these - in english, but allow for supporting more in different language. One exception is an empty key will have no print name.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="lang" type="xs:language" use="optional" default="en"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="AuxiliaryCode" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CodeSet" type="xs:string">
							<xs:annotation>
								<xs:documentation>Name of a given code - eg. UMLS; enumeration of names is identical to that in CCR 1.0 (spreadsheet)</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Value">
							<xs:annotation>
								<xs:documentation>This is the value of the code, as a string.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Version" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Version of the codeset</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="ImageTypeEnumeration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="png"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DateWithOptionalTime">
		<xs:union memberTypes="xs:date xs:dateTime"/>
	</xs:simpleType>
	<xs:simpleType name="DateCustomizationFilterType">
		<xs:annotation>
			<xs:documentation/>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Any"/>
			<xs:enumeration value="Last30Days"/>
			<xs:enumeration value="Last6Months"/>
			<xs:enumeration value="LastYear"/>
			<xs:enumeration value="Last2Years"/>
			<xs:enumeration value="SpecifiedDateRange"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="AddressType">
		<xs:annotation>
			<xs:documentation>A physical address (currently US-centric)</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Line1" type="xs:string" minOccurs="0"/>
			<xs:element name="Line2" type="xs:string" minOccurs="0"/>
			<xs:element name="City" type="xs:string" minOccurs="0"/>
			<xs:element name="State" type="xs:string" minOccurs="0"/>
			<xs:element name="Country" type="xs:string" minOccurs="0"/>
			<xs:element name="ZipCode" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="NillableBase64">
		<xs:union memberTypes="xs:base64Binary">
			<xs:simpleType>
				<xs:restriction base="xs:token">
					<xs:enumeration value=""/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="DataObjectType">
		<xs:annotation>
			<xs:documentation>Objects with IDs - that can be refered to via link (LinkType) objects. This is a power mechanism to create relationships between objects, like conditions and medications etc.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="id" type="xs:ID" use="required"/>
	</xs:complexType>
	<xs:complexType name="AttachmentType">
		<xs:annotation>
			<xs:documentation>Logically - we want this to be inherit from both NillableBase64 and DataObjectType, but I haven't found the syntax for this multiple inheritance</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="NillableBase64">
				<xs:attribute name="id" type="xs:ID" use="required"/>
				<xs:attribute name="FileName" type="xs:string" use="optional"/>
				<xs:attribute name="ExternalLink" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ContactInfoType">
		<xs:sequence>
			<xs:element name="PersonName" type="PersonNameType"/>
			<xs:element name="Locations" type="LocationListType" minOccurs="0"/>
			<xs:element name="PhoneNumbers" type="PhoneNumberListType" minOccurs="0"/>
			<xs:element name="EMailAddresses" type="EMailAddressListType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ContactType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="ContactInfo" type="ContactInfoType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DateRangeType">
		<xs:sequence>
			<xs:annotation>
				<xs:documentation>This is used for an event which may take several days (like the span of a disease). If it takes one day - simply set Start and End to be the same value. To indicate a Start date - where the associated item has not yet terminated - omit the optional End date. The start date can also be omitted - indicating that it is not known.</xs:documentation>
			</xs:annotation>
			<xs:element name="Start" type="xs:date" minOccurs="0"/>
			<xs:element name="End" type="xs:date" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DateTimeRangeType">
		<xs:sequence>
			<xs:annotation>
				<xs:documentation>This is used for an event which may take several days (like the span of a disease). If it takes one day - simply set Start and End to be the same value. To indicate a Start date - where the associated item has not yet terminated - omit the optional End date. The start date can also be omitted - indicating that it is not known.</xs:documentation>
			</xs:annotation>
			<xs:element name="Start" type="DateWithOptionalTime" minOccurs="0"/>
			<xs:element name="End" type="DateWithOptionalTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="EMailAddressListType">
		<xs:sequence>
			<xs:element name="EMailAddress" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ImageType">
		<xs:simpleContent>
			<xs:extension base="NillableBase64">
				<xs:attribute name="ImageFormat" type="ImageTypeEnumeration" use="required"/>
				<xs:attribute name="ImageName" type="xs:string" use="optional"/>
				<xs:attribute name="ExternalLink" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ImageListType">
		<xs:sequence>
			<xs:element name="Image" type="ImageType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="LocationType">
		<xs:annotation>
			<xs:documentation>Locations contain a pretty name, together with an associated address</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Name" type="xs:string">
						<xs:annotation>
							<xs:documentation>Note that this name is NOT a key. It is a shorthand whcih maybe helpful in the context in whcih its shown. For example "office" for a Providers Location record.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Address" type="AddressType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LocationListType">
		<xs:sequence>
			<xs:element name="Location" type="LocationType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PhoneNumberListType">
		<xs:sequence>
			<xs:element name="PhoneNumber" type="PhoneNumberType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PhoneNumberType">
		<xs:sequence>
			<xs:element name="PhoneType">
				<xs:simpleType>
					<xs:union memberTypes="PhoneTypeEnumeration xs:string"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Number" type="xs:string"/>
			<xs:element name="Extension" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PersonNameType">
		<xs:sequence>
			<xs:element name="FirstName" type="xs:string" minOccurs="0"/>
			<xs:element name="MiddleNames" type="xs:string" minOccurs="0"/>
			<xs:element name="LastName" type="xs:string" minOccurs="0"/>
			<xs:element name="NamePrefix" type="xs:string" minOccurs="0"/>
			<xs:element name="NameSuffix" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="BirthInfoType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Date" type="xs:date" minOccurs="0"/>
					<xs:element name="Place" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Address" type="AddressType"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Hospital" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="idref" type="xs:IDREF" use="required"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Physician" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="idref" type="xs:IDREF" use="required"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Weight" minOccurs="0"/>
					<xs:element name="Weight_UNIT" type="ConceptType" minOccurs="0"/>
					<xs:element name="Length" minOccurs="0"/>
					<xs:element name="Length_UNIT" type="ConceptType" minOccurs="0"/>
					<xs:element name="PerinatalProblems" minOccurs="0"/>
					<xs:element name="ApgarScore" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ProviderOrOrganizationRefType">
		<xs:annotation>
			<xs:documentation>Sometimes something can be associated with either a provider or a provider organization (e.g. a test).</xs:documentation>
		</xs:annotation>
		<xs:attribute name="idref" type="xs:IDREF" use="required"/>
	</xs:complexType>
	<xs:complexType name="SymptomType">
		<xs:sequence>
			<xs:element name="Type" type="ConceptType"/>
			<xs:element name="BodyPart" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Body part associated with the symptom</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Description" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ActivityType">
		<xs:annotation>
			<xs:documentation>An activity is an event which the user engages in periodcally - like swimminmg, biking, smoking, or alcohol consumption - that is kept track of in the PHR - and is health-relevant.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="DateRange" type="DateRangeType"/>
					<xs:element name="Comment" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="AdvanceDirectivesType">
		<xs:annotation>
			<xs:documentation>Advance directives capture. This will change dramtically for 3.0, but hopefully this allows us to capture enough informatoin for the 2.0 life cycle to be useful. This will probably end up mirroring what is done in CCR over the next year, or other existing advance directive forms/standards.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="OrganDonorStatus" type="xs:string" minOccurs="0"/>
					<xs:element name="LivingWillStatus" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SummaryConditionType">
		<xs:sequence>
			<xs:element name="Type" type="ConceptType"/>
			<xs:element name="Comment" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ConditionType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="DateRange" type="DateRangeType"/>
					<xs:element name="Symptoms" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Symptom" type="SymptomType" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Comment" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CommunicationType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type">
						<xs:annotation>
							<xs:documentation>Union of CommunicationTypeEnumeration xs:string</xs:documentation>
						</xs:annotation>
						<xs:simpleType>
							<xs:union memberTypes="CommunicationTypeEnumeration xs:string"/>
						</xs:simpleType>
					</xs:element>
					<xs:element name="ProviderOrOrganizationRef" type="ProviderOrOrganizationRefType"/>
					<xs:element name="MessageDirection" type="MessageDirectionTypeEnumeration"/>
					<xs:element name="DateTime" type="DateWithOptionalTime"/>
					<xs:element name="Summary" type="xs:string" minOccurs="0"/>
					<xs:element name="Body" type="xs:string" minOccurs="0"/>
					<xs:element name="Responses" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="CommunicationRef" minOccurs="0" maxOccurs="unbounded">
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="AllergyType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Allergen" type="ConceptType"/>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
					<xs:element name="Reaction" type="xs:string" minOccurs="0"/>
					<xs:element name="DateRange" type="DateRangeType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DeviceType">
		<xs:annotation>
			<xs:documentation>This is for a medical device, such as eyeglasses, a heart-implant, a nebulizer, or any other medical device you want to track (for reasons of expenses or showing on medical reports or whatever)</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
					<xs:element name="DateRange" type="DateRangeType"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ExpenseType">
		<xs:annotation>
			<xs:documentation>
				Note - its common to use expenses with links (LinkType) to link expenses to the thing they are an expense for (e.g. Medical Device, visit, etc)
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>This could be soemthing like CoPay, or ??? - need list - need new ConceptCategory for this!</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Date" type="xs:date"/>
					<xs:element name="Amount" type="MoneyType"/>
					<xs:element name="Payee" minOccurs="0">
						<xs:complexType>
							<xs:simpleContent>
								<xs:extension base="xs:string">
									<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
								</xs:extension>
							</xs:simpleContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="Memo" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="JournalType">
		<xs:annotation>
			<xs:documentation>
				Journals are logically collection of journal entries. The JournalEntires associated with a given journal are aggregated using 'aggregates' link relationships.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Title" type="xs:string" minOccurs="0"/>
					<xs:element name="Summary" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="JournalEntryType">
		<xs:annotation>
			<xs:documentation>
				To find the owning journal, lookup the (sole/unique) link relationship which aggregates this object. It should be of type Journal.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="DateTime" type="DateWithOptionalTime"/>
					<xs:element name="RTFBLOB" minOccurs="0">
						<xs:complexType>
							<xs:simpleContent>
								<xs:extension base="NillableBase64">
									<xs:attribute name="ExternalLink" type="xs:string" use="optional"/>
								</xs:extension>
							</xs:simpleContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="Summary" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LinkType">
		<xs:annotation>
			<xs:documentation>
				A 'Link' object is meant to specify an arbitrary relationship between two objects in the PHR (or between one object in the PHR and one external object). N-ary relationships can be represented via multiple link objects.
				
				The L1 element is - in some sense - primary - in that it must refer to an element of this PHR. L2 can either be an object in this PHR, or an external object.
				
				When deleting objects, the links must also be deleted to assure referential integrity. If the link relationship is Aggregates (UMLS C0332621) - then when object L1 is deleted, object L2 will be silently deleted as well. 
				
				In either case, you must delete any links that refer to objects that have been deleted.

				As an example, a VisitObject might create a link to an Expense object with relationship 'Aggregates' for the COPAY - and then when the visit is deleted - you would delete the co-pay expense a the same time.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="L1">
				<xs:annotation>
					<xs:documentation>
							This end of the link must be an internla link - an IDREF to an element that extends DataObjectType.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="idref" type="xs:IDREF" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="L2">
				<xs:annotation>
					<xs:documentation>
							This end of the link can be either an internla link - an IDREF to an element that extends DataObjectType - or it can be a url (for external links).
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:annotation>
						<xs:documentation>
								EITHER an idref or a url - but not both - and not neither.
							</xs:documentation>
					</xs:annotation>
					<xs:attribute name="idref" type="xs:IDREF" use="optional"/>
					<xs:attribute name="url" type="xs:string" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="Relationship" type="ConceptType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
								For now 'owns' or 'owns-sub-object' - but we can extend this to more types later.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MedicationType">
		<xs:annotation>
			<xs:documentation>Note that the fullfillment history is currently (2006-01-24) as related Expense objects. This neglects SOME information that might be useful to keep track of for fullfillment, but appears to be adequate for HealthFrame 2.0.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="DateRange" type="DateRangeType"/>
					<xs:element name="UnitStrength" type="xs:string" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Amount per pill (or solution strength if liquid).</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Refills" type="xs:int" minOccurs="0"/>
					<xs:element name="RxNumber" type="xs:string" minOccurs="0"/>
					<xs:element name="Instructions" type="xs:string" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Addiitional Instructions  (e.g. take with food, take as needed, etc)</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Prescriber" minOccurs="0">
						<xs:annotation>
							<xs:documentation>IDREF points to a Provider</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:attribute name="idref" type="xs:IDREF" use="required"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Prescription" type="xs:boolean">
						<xs:annotation>
							<xs:documentation>Boolean flag to indicate if this medicine was prescribed. Note - even if this is false - Prescriber can be set to indicate the doctor recomending this 	non-	prescription medicine.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Dosage" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Amount which should be taken per day.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Frequency" type="ConceptType" minOccurs="0"/>
					<xs:element name="Route" type="ConceptType" minOccurs="0"/>
					<xs:element name="ReasonDiscontinued" type="xs:string" minOccurs="0"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TestType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="LocationRef" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Optional reference to location (from among list in PrividerOrOrganizationRef</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:attribute name="idref" type="xs:IDREF" use="required"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Ordered" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="DuringVisitRef" minOccurs="0">
									<xs:annotation>
										<xs:documentation/>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="By" minOccurs="0">
									<xs:annotation>
										<xs:documentation/>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="Date" type="xs:date" minOccurs="0"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Administered" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The Dates record almost always will contain a start/DATE the same as the endDate (though the time part maybe different and maybe omitted). The entire Dates section must be omitted if the DuringVisitRef is specified (and then the date from that visit is used). If the Administered section is eliminated (or just its date portion) - then get teh date from the Ordered element.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="DuringVisitRef" minOccurs="0">
									<xs:annotation>
										<xs:documentation/>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="By" minOccurs="0">
									<xs:annotation>
										<xs:documentation/>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="Dates" type="DateTimeRangeType" minOccurs="0"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResultType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Union of TestResultTypeEnumeration xs:string. I THINK THIS IS UNUSED - and could be delted, or re-thought.</xs:documentation>
						</xs:annotation>
						<xs:simpleType>
							<xs:union memberTypes="TestResultTypeEnumeration xs:string"/>
						</xs:simpleType>
					</xs:element>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
					<xs:element name="Details" minOccurs="0">
						<xs:annotation>
							<xs:documentation>These are all measurements - (LIST SEMANTIC TYPE OF NAME BELOW).</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Detail" minOccurs="0" maxOccurs="unbounded">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Name" type="ConceptType"/>
											<xs:element name="Value">
												<xs:simpleType>
													<xs:restriction base="xs:string"/>
												</xs:simpleType>
											</xs:element>
											<xs:element name="Units" type="ConceptType" minOccurs="0"/>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CalendarEventType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="DateTime" type="DateWithOptionalTime"/>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ImmunizationType">
		<xs:annotation>
			<xs:documentation>Consider adding underneath this object - a Provider/ProviderOrganization for who administered the immunization (optionally)</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Date" type="xs:date" minOccurs="0"/>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="ProviderOrOrganizationRef" type="ProviderOrOrganizationRefType" minOccurs="0"/>
					<xs:element name="VisitRef" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Optional reference to visit where test performed (or ordered)</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:attribute name="idref" type="xs:IDREF" use="required"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TreatmentType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="DateRange" type="DateRangeType"/>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
					<xs:element name="ProviderOrOrganizationRef" type="ProviderOrOrganizationRefType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="FamilyMemberType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="PersonName" type="PersonNameType"/>
					<xs:element name="Relationship" type="ConceptType"/>
					<xs:element name="Gender" type="ConceptType"/>
					<xs:element name="LinkToPHR" type="xs:string" minOccurs="0"/>
					<xs:element name="BirthDate" type="xs:date" minOccurs="0"/>
					<xs:element name="DeathDate" type="xs:date" minOccurs="0"/>
					<xs:element name="SummaryConditions" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="SummaryCondition" type="SummaryConditionType" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="OverallHealthStatus" type="ConceptType">
						<xs:annotation>
							<xs:documentation>preferred values are good,excellent,fair,poor,dead (MUST REVISE THIS ONCE WEVE INTEGRATED WITH NEW UMLS STUFF)</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="InsurancePolicyType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="CarrierName" type="xs:string"/>
					<xs:element name="PolicyType" type="xs:string"/>
					<xs:element name="PolicyNumber" type="xs:string" minOccurs="0"/>
					<xs:element name="Address" type="AddressType" minOccurs="0"/>
					<xs:element name="PhoneNumber" type="PhoneNumberType" minOccurs="0"/>
					<xs:element name="PlanName" type="xs:string" minOccurs="0"/>
					<xs:element name="PlanID" type="xs:string" minOccurs="0"/>
					<xs:element name="Subscriber" type="xs:string" minOccurs="0"/>
					<xs:element name="RelationshipToSubscriber" type="ConceptType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>relationship of phr owner to the subscriber</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="GroupName" type="xs:string" minOccurs="0"/>
					<xs:element name="PolicyID" type="xs:string" minOccurs="0"/>
					<xs:element name="DateRange" type="DateRangeType" minOccurs="0"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ProviderType">
		<xs:annotation>
			<xs:documentation>A Provider is any person who provides medical care (e.g. doctor, nurse, etc).
			Note that even though by XSD checking - the supported roles CAN be empty, its strongly recomended to include a supported role. The only reason
			we allow for it being empty is to facilitate mapping of imported XML sources that might not have a reasonable (required) supported role.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ContactType">
				<xs:sequence>
					<xs:element name="SupportedRoles" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Role" type="ConceptType" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="MemberOrganizations" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="OrganizationRef" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>This is a reference to a ProviderOrganization</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
					<xs:element name="DateRange" type="DateRangeType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ProviderOrganizationType">
		<xs:annotation>
			<xs:documentation>A ProviderOrganizationis any organization whcih provides medical care (e.g. hospital, HMO, etc)</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="Name" type="xs:string"/>
					<xs:element name="Type" type="ConceptType"/>
					<xs:element name="Description" type="xs:string" minOccurs="0"/>
					<xs:element name="Notes" type="xs:string" minOccurs="0"/>
					<xs:element name="DateRange" type="DateRangeType" minOccurs="0"/>
					<xs:element name="Locations" type="LocationListType" minOccurs="0"/>
					<xs:element name="PhoneNumbers" type="PhoneNumberListType" minOccurs="0"/>
					<xs:element name="EMailAddresses" type="EMailAddressListType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VisitType">
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="ProviderOrOrganizationRef" type="ProviderOrOrganizationRefType" minOccurs="0"/>
					<xs:element name="VisitDateTime" type="DateWithOptionalTime"/>
					<xs:element name="VisitType" type="ConceptType"/>
					<xs:element name="ReasonForVisit" type="xs:string" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Freeform description of reason for visit</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PreparationNotes" type="xs:string" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Freeform notes to prepare for doctor visit (e.g. list of things to ask)</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="AfterVisitNotes" type="xs:string" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Notes taken after the visit - probably relating to PreparationNotes and about future things to do</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="VisitLocation" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The VisitLocation is selected from among the various Provider (ProviderRef)'s owned Locations.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="LocationRef">
									<xs:complexType>
										<xs:attribute name="idref" type="xs:IDREF" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PageCustomizationType">
		<xs:annotation>
			<xs:documentation/>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="xs:string" minOccurs="0"/>
			<xs:element name="DateFilter">
				<xs:annotation>
					<xs:documentation>Start/End date apply iff Type=SpecifiedDateRange</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Type" type="DateCustomizationFilterType"/>
						<xs:element name="Start" type="xs:date" minOccurs="0"/>
						<xs:element name="End" type="xs:date" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Filters" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Name" type="xs:string"/>
									<xs:element name="Value" type="xs:string"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Options" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Name" type="xs:string"/>
									<xs:element name="Value" type="xs:string"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PageCustomizationsType">
		<xs:annotation>
			<xs:documentation>ID is URL (or id/name) of the page for which these customizations apply. Note - this is not necessarily (or likely) a user-visible, displayable name.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="DataObjectType">
				<xs:sequence>
					<xs:element name="DefaultCustomization" type="PageCustomizationType"/>
					<xs:element name="NamedCustomizations" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="NamedCustomization" type="PageCustomizationType" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EmergencyContactType">
		<xs:annotation>
			<xs:documentation>Relationship code should be (not required) concept of type EmergencyContactRelationship</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ContactType">
				<xs:sequence>
					<xs:element name="Relationship" type="ConceptType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="BasicInformationType">
		<xs:complexContent>
			<xs:extension base="ContactType">
				<xs:sequence>
					<xs:element name="AdvanceDirectives" type="AdvanceDirectivesType" minOccurs="0"/>
					<xs:element name="Gender" type="ConceptType" minOccurs="0"/>
					<xs:element name="Race" type="ConceptType" minOccurs="0"/>
					<xs:element name="EmploymentStatus" type="ConceptType" minOccurs="0"/>
					<xs:element name="EyeColor" type="ConceptType" minOccurs="0"/>
					<xs:element name="HairColor" type="ConceptType" minOccurs="0"/>
					<xs:element name="BloodType" type="ConceptType" minOccurs="0"/>
					<xs:element name="MaritalStatus" type="ConceptType" minOccurs="0"/>
					<xs:element name="PreferredLanguage" type="ConceptType" minOccurs="0"/>
					<xs:element name="BirthInfo" type="BirthInfoType" minOccurs="0"/>
					<xs:element name="ReligiousPreference" type="ConceptType" minOccurs="0"/>
					<xs:element name="SocialSecurityNumber" type="xs:string" minOccurs="0"/>
					<xs:element name="EmergencyContacts" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="EmergencyContact" type="EmergencyContactType" minOccurs="0" maxOccurs="unbounded"/>
								<!--
									See SPR#333 - for how we might appraoch shared emergency (or other) contact information Post 2.0
								-->
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurrentImages" type="ImageListType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Current images of the PHR owner. Historical images can be retrieved through the change/history mechanism.????? Or not?</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="PHRModel">
		<xs:annotation>
			<xs:documentation>Top level record for the PHR (Personal Heath Record)</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="BasicInformation" type="BasicInformationType"/>
				<xs:element name="Calendar">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Events" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Event" type="CalendarEventType" minOccurs="0" maxOccurs="unbounded"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="FamilyMembers">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="FamilyMember" type="FamilyMemberType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ProviderOrganizations">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ProviderOrganization" type="ProviderOrganizationType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Providers">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Provider" type="ProviderType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Activities">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Activity" type="ActivityType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Allergies">
					<xs:complexType>
						<xs:choice>
							<xs:element name="NoAllergiesDeclaration" minOccurs="0">
								<xs:annotation>
									<xs:documentation>This is if the user afirmatively declares he has no allergies, so we can distinguish between that case and simply not having had any entered into the list yet.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Allergy" type="AllergyType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
				<xs:element name="Attachments">
					<xs:annotation>
						<xs:documentation>All attachements are stored in one big group with references to them managed by LinkType relationships. As for HF 2.0b9 - they are 'owned' via Aggregates relationships</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Attachment" type="AttachmentType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Communications">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Communication" type="CommunicationType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Conditions">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Condition" type="ConditionType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Devices">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Device" type="DeviceType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Expenses">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Expense" type="ExpenseType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="InsurancePolicies">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="InsurancePolicy" type="InsurancePolicyType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Journals">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Journal" type="JournalType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="JournalEntries" minOccurs="0">
					<xs:annotation>
						<xs:documentation>All journal entries are stored in one big group with references to them managed by LinkType relationships. As for HF 2.0b9 - they are 'owned' by Journal objects via Aggregates relationships</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="JournalEntry" type="JournalEntryType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Links">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Link" type="LinkType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Medications">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Medication" type="MedicationType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Tests">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Test" type="TestType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Treatments">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Treatment" type="TreatmentType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Immunizations">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Immunization" type="ImmunizationType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Visits">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Visit" type="VisitType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="PageCustomizations">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Page" type="PageCustomizationsType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--
		*****************************************   Below is stuff that should eventually be obsoleted (before 3.0) ****************************************
	-->
	<xs:simpleType name="CommunicationTypeEnumeration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="phone"/>
			<xs:enumeration value="email"/>
			<xs:enumeration value="PaperMail"/>
			<xs:enumeration value="InPerson"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="MessageDirectionTypeEnumeration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="fromProvider"/>
			<xs:enumeration value="toProvider"/>
			<xs:enumeration value="withProvider"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PhoneTypeEnumeration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="home"/>
			<xs:enumeration value="work"/>
			<xs:enumeration value="mobile"/>
			<xs:enumeration value="pager"/>
			<xs:enumeration value="FAX"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TestResultTypeEnumeration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="passed"/>
			<xs:enumeration value="failed"/>
			<xs:enumeration value="indeterminate"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
