~finished AD_PCHR_1.xml
authorThomas Gambet <tgambet@w3.org>
Thu, 15 Jul 2010 12:12:16 -0400
changeset 5 b70efe65b168
parent 4 135afb07b9fa
child 6 60a6e23e92b5
~finished AD_PCHR_1.xml
syntheticPatients/indivo-schemas/envelope.xsd
--- a/syntheticPatients/indivo-schemas/envelope.xsd	Thu Jul 15 12:10:33 2010 -0400
+++ b/syntheticPatients/indivo-schemas/envelope.xsd	Thu Jul 15 12:12:16 2010 -0400
@@ -4,146 +4,172 @@
 	xmlns:indivo="http://indivo.org/vocab/xml/documents#"
 	elementFormDefault="qualified">
 
-	<xs:include schemaLocation="contact.xsd" />
-	<xs:include schemaLocation="demographics.xsd" />
-	<xs:include schemaLocation="medication.xsd"></xs:include>
-	<xs:include schemaLocation="problem.xsd"></xs:include>
-	<xs:include schemaLocation="procedure.xsd"></xs:include>
-	<xs:include schemaLocation="allergy.xsd"></xs:include>
-	<xs:include schemaLocation="immunization.xsd"></xs:include>
+	<xs:include schemaLocation="contact.xsd"/>
+	<xs:include schemaLocation="demographics.xsd"/>
+	<xs:include schemaLocation="medication.xsd"/>
+	<xs:include schemaLocation="problem.xsd"/>
+	<xs:include schemaLocation="procedure.xsd"/>
+	<xs:include schemaLocation="allergy.xsd"/>
+	<xs:include schemaLocation="immunization.xsd"/>
+	<xs:include schemaLocation="vitals.xsd"/>
+	<xs:include schemaLocation="lab.xsd"/>
+	
+	<xs:element name="Envelope" type="indivo:EnvelopeType"/>
+	
+	<xs:complexType name="EnvelopeType">
+		<xs:sequence>
+			<xs:element name="CurrentStatus" type="indivo:CurrentStatusType"/>
+			<xs:element name="Encounters" type="indivo:EncountersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="CurrentStatusType">
+		<xs:sequence>
+			<xs:element name="Contact" type="indivo:ContactType"/>
+			<xs:element name="PrimaryCarePhysician" type="indivo:ContactType" minOccurs="0"/>
+			<xs:element name="Demographics" type="indivo:DemographicsType" minOccurs="0"/>
+			<xs:element name="Prescriptions" type="indivo:PrescriptionsType" minOccurs="0"/>
+			<xs:element name="Conditions" type="indivo:ConditionsType"/>
+			<xs:element name="Procedures" type="indivo:ProceduresType"/>
+			<xs:element name="Allergies" type="indivo:AllergiesType"/>
+			<xs:element name="Immunizations" type="indivo:ImmunizationsType"/>
+			<xs:element name="Lifestyle" type="indivo:LifestyleType"/>
+			<xs:element name="FamilyHistory" type="indivo:FamilyHistoryType"/>
+		</xs:sequence>
+	</xs:complexType>	
+	
 	<xs:complexType name="EncountersType">
 		<xs:sequence>
-			<xs:element name="Encounter" type="indivo:EncounterType" />
+			<xs:element name="Encounter" type="indivo:EncounterType" maxOccurs="unbounded"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="EncounterType">
 		<xs:sequence>
-			<xs:element name="Date" type="xs:dateTime"></xs:element>
-			<xs:element name="Physician" type="indivo:ContactRefType"
-				minOccurs="0" />
-			<xs:element name="Referral" type="xs:boolean"></xs:element>
-			<xs:element name="MedicalBaseline" type="xs:boolean"></xs:element>
-			<xs:element name="MedicalTest" type="xs:string"></xs:element>
-			<xs:element name="ReportedSymptoms" type="xs:boolean"></xs:element>
-			<xs:element name="WorkingDiagnosis" type="xs:boolean"></xs:element>
-			<xs:element name="PhysicianObservations" type="xs:string"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-
-
-	<xs:element name="Envelope" type="indivo:EnvelopeType"></xs:element>
-
-	<xs:complexType name="EnvelopeType">
-		<xs:sequence>
-			<xs:element name="CurrentStatus"
-				type="indivo:CurrentStatusType">
-			</xs:element>
-			<xs:element name="Encounters"
-				type="indivo:EncountersType">
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-
-	<xs:complexType name="CurrentStatusType">
-		<xs:sequence maxOccurs="1" minOccurs="1">
-			<xs:element name="PrimaryCarePhysician"
-				type="indivo:ContactType" maxOccurs="1" minOccurs="0">
-			</xs:element>
-			<xs:element name="Demographics"
-				type="indivo:DemographicsType" maxOccurs="1" minOccurs="0">
-			</xs:element>
-			<xs:element name="Prescriptions"
-				type="indivo:PrescriptionsType" maxOccurs="1" minOccurs="0">
-			</xs:element>
-			<xs:element name="Conditions" type="indivo:ProblemType">
-			</xs:element>
-			<xs:element name="Procedures" type="indivo:ProcedureType"></xs:element>
-			<xs:element name="Allergies" type="indivo:AllergyType"></xs:element>
-			<xs:element name="Immunizations"
-				type="indivo:ImmunizationType">
-			</xs:element>
-			<xs:element name="Lifestyle" type="indivo:LifestyleType"></xs:element>
-			<xs:element name="FamilyHistory" type="indivo:FamilyHistoryType"></xs:element>
+			<xs:element name="Date" type="xs:dateTime"/>
+			<xs:element name="Physician" type="indivo:ContactRefType" minOccurs="0"/>
+			<xs:element name="Referral" type="xs:boolean"/>
+			<xs:element name="MedicalBaseline" type="xs:boolean"/>
+			<xs:element name="MedicalTest" type="xs:string"/>
+			<xs:element name="ReportedSymptoms" type="xs:boolean"/>
+			<xs:element name="WorkingDiagnosis" type="xs:boolean"/>
+			<xs:element name="PhysicianObservations" type="indivo:PhysicianObservationsType" minOccurs="0"/>
+			<xs:element name="LabTests" type="indivo:LabTestsType" minOccurs="0"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="PrescriptionsType">
 		<xs:sequence>
-			<xs:element name="Medication"
-				type="indivo:MedicationType">
-			</xs:element>
+			<xs:element name="Prescription" type="indivo:Prescription" minOccurs="0" maxOccurs="unbounded"/>
 		</xs:sequence>
 	</xs:complexType>
 
+	<xs:complexType name="ConditionsType"> <!-- They decided to call a condition a "problem", why not call this element "Problems" -->
+		<xs:sequence>
+			<xs:element name="Problem" type="indivo:ProblemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="ProceduresType">
+		<xs:sequence>
+			<xs:element name="Procedure" type="indivo:ProcedureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="AllergiesType">
+		<xs:sequence>
+			<xs:element name="Allergy" type="indivo:AllergyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="ImmunizationsType">
+		<xs:sequence>
+			<xs:element name="Immunization" type="indivo:ImmunizationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
 
-	<xs:complexType name="MedicationType"></xs:complexType>
+	<xs:complexType name="PhysicianObservationsType">
+		<xs:sequence>
+			<xs:element name="VitalSign" type="indivo:VitalSignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="LabTestsType">
+		<xs:sequence>
+			<xs:element name="LabTest" type="indivo:LabTest" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
 
 	<xs:complexType name="LifestyleType">
 		<xs:sequence>
-			<xs:element name="AlcoholConsumption"
-				type="indivo:AlcoholConsumptionType">
-			</xs:element>
-			<xs:element name="Exercise" type="indivo:ExerciseType"></xs:element>
-			<xs:element name="Smoking" type="indivo:SmokingType"></xs:element>
-			<xs:element name="Diet" type="indivo:DietType"></xs:element>
+			<xs:element name="AlcoholConsumption" type="indivo:AlcoholConsumptionType"/>
+			<xs:element name="Exercise" type="indivo:ExerciseType"/>
+			<xs:element name="Smoking" type="indivo:SmokingType"/>
+			<xs:element name="Diet" type="indivo:DietType"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="AlcoholConsumptionType">
 		<xs:sequence>
-			<xs:element name="Frequency" type="xs:int"></xs:element>
-			<xs:element name="Units" type="xs:string"></xs:element>
-			<xs:element name="Quantity" type="xs:int"></xs:element>
-			<xs:element name="Date" type="xs:dateTime"></xs:element>
+			<xs:element name="Frequency" type="xs:int"/>
+			<xs:element name="Units" type="xs:string"/>
+			<xs:element name="Quantity" type="xs:int"/>
+			<xs:element name="Date" type="xs:dateTime"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="ExerciseType">
 		<xs:sequence maxOccurs="1" minOccurs="1">
-			<xs:element name="Frequency" type="xs:int"></xs:element>
-			<xs:element name="Units" type="xs:string"></xs:element>
-			<xs:element name="Duration" type="xs:int"></xs:element>
-			<xs:element name="Date" type="xs:dateTime"></xs:element>
+			<xs:element name="Frequency" type="xs:int"/>
+			<xs:element name="Units" type="xs:string"/>
+			<xs:element name="Duration" type="xs:int"/>
+			<xs:element name="Date" type="xs:dateTime"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="SmokingType">
 		<xs:sequence>
-			<xs:element name="PackYears" type="xs:int"></xs:element>
-			<xs:element name="History" type="xs:string"></xs:element>
-			<xs:element name="Date" type="xs:dateTime"></xs:element>
+			<xs:element name="PackYears" type="xs:int"/>
+			<xs:element name="History" type="xs:string"/>
+			<xs:element name="Date" type="xs:dateTime"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="DietType">
 		<xs:sequence>
-			<xs:element name="FruitVegetable" type="xs:int"></xs:element>
-			<xs:element name="WholeGrains" type="xs:int"></xs:element>
-			<xs:element name="Dairy" type="xs:int"></xs:element>
-			<xs:element name="Protein" type="xs:int"></xs:element>
-			<xs:element name="Fats" type="xs:int"></xs:element>
-			<xs:element name="JunkFood" type="xs:int"></xs:element>
-			<xs:element name="Date" type="xs:dateTime"></xs:element>
+			<xs:element name="FruitVegetable" type="xs:int"/>
+			<xs:element name="WholeGrains" type="xs:int"/>
+			<xs:element name="Dairy" type="xs:int"/>
+			<xs:element name="Protein" type="xs:int"/>
+			<xs:element name="Fats" type="xs:int"/>
+			<xs:element name="JunkFood" type="xs:int"/>
+			<xs:element name="Date" type="xs:dateTime"/>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="FamilyHistoryType">
 		<xs:sequence maxOccurs="unbounded" minOccurs="0">
-			<xs:element name="Relation" type="xs:string"></xs:element>
-			<xs:element name="Name" type="xs:string"></xs:element>
-			<xs:element name="Sex" type="xs:string"></xs:element>
-			<xs:element name="Alive" type="xs:boolean"></xs:element>
-			<xs:element name="AgeAtDeath" type="xs:int"></xs:element>
-			<xs:element name="Cancer" type="xs:string"></xs:element>
-			<xs:element name="CauseOfDeath" type="xs:string"></xs:element>
+			<xs:element name="Subject" type="indivo:SubjectType"/>
 		</xs:sequence>
 	</xs:complexType>
+	
+	<xs:complexType name="SubjectType">
+		<xs:sequence>
+			<xs:element name="Relation" type="xs:string"/>
+			<xs:element name="Name" type="xs:string"/>
+			<xs:element name="Sex" type="xs:string"/>
+			<xs:element name="Alive" type="xs:boolean"/>
+			<xs:element name="AgeAtDeath" type="xs:int"/>
+			<xs:element name="Cancer" type="xs:string"/>
+			<xs:element name="CauseOfDeath" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="id" type="xs:ID"/>
+	</xs:complexType>
 
 	<xs:complexType name="ContactRefType">
 		<xs:choice>
-			<xs:element name="Contact" type="indivo:ContactType"></xs:element>
-			<xs:element name="ContactRef" type="xs:anyURI"></xs:element>
+			<xs:element name="Contact" type="indivo:ContactType"/>
+			<xs:element name="ContactRef" type="xs:anyURI"/>
 		</xs:choice>
 	</xs:complexType>
 </xs:schema>