--- 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>