<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Log: sp_complex_types.xsd,v $
    Revision 1.1.1.1  2003/07/22 14:26:28  richard
    initial import

-->
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>

 <xsd:include schemaLocation="sp_simple_types.xsd"/>
 <xsd:include schemaLocation="sp_picklists.xsd"/>
 <xsd:include schemaLocation="sp_attrib_groups.xsd"/>
 <xsd:include schemaLocation="sp_service_provider.xsd"/>
 <xsd:include schemaLocation="sp_dynamic_content.xsd"/>

 <xsd:complexType name="clientType">
  <xsd:all>
   <xsd:element name="first_name"                   type="tok30Type"                    minOccurs='1' maxOccurs='1' nillable="false"/>
   <xsd:element name="last_name"                    type="tok30Type"                    minOccurs='1' maxOccurs='1' nillable="false"/>
   <xsd:element name="mi_initial"                   type="tok1Type"                     minOccurs='0' maxOccurs='1' nillable="true"/>
   <xsd:element name="soc_sec_no"                   type="ssnDashed"                    minOccurs='0' maxOccurs='1' nillable="true"/>
   
   <xsd:element name="goals"                        type="goalsListType"                minOccurs='0' maxOccurs='1'/>
   <xsd:element name="needs"                        type="needsListType"                minOccurs='0' maxOccurs='1'/>
   <xsd:element name="info_releases"                type="informationReleasesListType"  minOccurs='0' maxOccurs='1'/>
   <xsd:element name="infractions"                  type="infractionsListType"          minOccurs='0' maxOccurs='1'/>
   <xsd:element name="casemanagers"                 type="casemanagersListType"         minOccurs='0' maxOccurs='1'/>

   <xsd:element name="dynamic_content"              type="dynamicContentType"           minOccurs='0' maxOccurs='1'/>
  </xsd:all>
  <xsd:attributeGroup ref="entityIdentifierGroup"/>
 </xsd:complexType>

 <xsd:complexType name="needBaseType">
  <xsd:sequence>
   <xsd:element name="provider_id"                  type="legacyIDType"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="status"                       type="statusPickOption"             minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="code"                         type="serviceCodeType"              minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="date_set"                     type="xsd:dateTime"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="amount"                       type="positiveDecimalType"          minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="outcome"                      type="serviceoutcomePickOption"     minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="reason_unmet"                 type="reasonunmetneedPickOption"    minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="family_id"                    type="legacyIDType"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="need_notes"                   type="xsd:string"                   minOccurs="0" maxOccurs="1" nillable="true"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="needEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="needBaseType">
    <xsd:sequence>
     <xsd:element name="services"                  type="needServiceListType"          minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:complexType name="needsListType">
  <xsd:sequence>
   <xsd:element name="need"                        type="needEmbeddedType"            minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="needsServiceBaseType">
  <xsd:all>
   <xsd:element name="code"                        type="serviceCodeType"              minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="referto_provider_id"         type="legacyIDType"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="refer_date"                  type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="service_provided"            type="xsd:boolean"                  minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="provide_provider_id"         type="legacyIDType"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="provide_start_date"          type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="provide_end_date"            type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="cost1"                       type="positiveDecimalType"          minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="fund_source1"                type="fundsourcesPickOption"        minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="cost2"                       type="positiveDecimalType"          minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="fund_source2"                type="fundsourcesPickOption"        minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="projected_followup_date"     type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="followup_made"               type="xsd:boolean"                  minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="actual_followup_date"        type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="refer_reason_unmet"          type="reasonunmetneedPickOption"    minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="service_notes"               type="xsd:string"                   minOccurs="0" maxOccurs="1" nillable="true"/>
  </xsd:all>
 </xsd:complexType>

 <xsd:complexType name="needsServiceEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="needsServiceBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:complexType name="needServiceListType">
  <xsd:sequence>
   <xsd:element name="service"                      type="needsServiceEmbeddedType"    minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
 </xsd:complexType>

  <xsd:complexType name="goalBaseType">
   <xsd:sequence>
    <xsd:element name="provider_id"                 type="legacyIDType"                 minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_set"                    type="xsd:dateTime"                 minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="classification"              type="goalclassPickOption"          minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="type"                        type="goaltypePickOption"           minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="status"                      type="statusPickOption"             minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="target_date"                 type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="outcome"                     type="outcomePickOption"            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="outcome_date"                type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="projected_followup_date"     type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="followup_made"               type="xsd:boolean"                  minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="actual_followup_date"        type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="followup_outcome"            type="outcomePickOption"            minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:sequence>
  </xsd:complexType>

 <xsd:complexType name="goalEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="goalBaseType">
    <xsd:sequence>
     <xsd:element name="action_steps"               type="actionStepsListType"          minOccurs="0" maxOccurs="unbounded"/>
     <xsd:element name="case_notes"                 type="caseNotesListType"            minOccurs="0" maxOccurs="unbounded"/>

    </xsd:sequence>
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:complexType name="goalsListType">
  <xsd:sequence>
   <xsd:element name="goal"                         type="goalEmbeddedType"             minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="actionStepBaseType">
  <xsd:all>
   <xsd:element name="provider_id"                 type="legacyIDType"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="date_set"                    type="xsd:dateTime"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="description"                 type="xsd:string"                   minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="status"                      type="statusPickOption"             minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="target_date"                 type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="outcome"                     type="outcomePickOption"            minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="outcome_date"                type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="projected_followup_date"     type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="followup_made"               type="xsd:boolean"                  minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="actual_followup_date"        type="xsd:dateTime"                 minOccurs="0" maxOccurs="1" nillable="true"/>
   <xsd:element name="followup_outcome"            type="outcomePickOption"            minOccurs="0" maxOccurs="1" nillable="true"/>
  </xsd:all>
 </xsd:complexType>

 <xsd:complexType name="actionStepEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="actionStepBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

  <xsd:complexType name="actionStepsListType">
   <xsd:sequence>
    <xsd:element name="action_step"                  type="actionStepEmbeddedType"       minOccurs='0' maxOccurs='unbounded'/>
   </xsd:sequence>
  </xsd:complexType>

 <xsd:complexType name="caseNoteBaseType">
  <xsd:all>
   <xsd:element name="provider_id"                 type="legacyIDType"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="note_date"                   type="xsd:dateTime"                 minOccurs="1" maxOccurs="1" nillable="false"/>
   <xsd:element name="note"                        type="xsd:string"                   minOccurs="1" maxOccurs="1" nillable="false"/>
  </xsd:all>
 </xsd:complexType>

 <xsd:complexType name="caseNoteEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="caseNoteBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

  <xsd:complexType name="caseNotesListType">
   <xsd:sequence>
    <xsd:element name="case_note"                  type="caseNoteEmbeddedType"       minOccurs='0' maxOccurs='unbounded'/>
   </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="householdType">
   <xsd:all>
    <xsd:element name="type"                        type="familystatusPickOption"       minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="name"                        type="tok100Type"                   minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="members"                                                         minOccurs="1" maxOccurs="1" nillable="false">
     <xsd:complexType>
      <xsd:sequence>
       <xsd:element name="member"                   type="memberType"                   minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
   </xsd:all>
   <xsd:attributeGroup ref="entityIdentifierGroup"/>
  </xsd:complexType>

  <xsd:complexType name="memberType">
   <xsd:all>
    <xsd:element name="client_id"             type="legacyIDType"                           minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_entered"          type="xsd:dateTime"                           minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_ended"            type="xsd:dateTime"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="head_of_household"     type="xsd:boolean"                            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="relationship"          type="relationshipsPickOption"                minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:all>
   <xsd:attributeGroup ref="recordIdentifierGroup"/>
  </xsd:complexType>

  <xsd:complexType name="entryExitType">
   <xsd:all>
    <xsd:element name="type"                  type="entryExitTypePick"                      minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="provider_id"           type="legacyIDType"                           minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="entry_date"            type="xsd:dateTime"                           minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="household"             type="legacyIDType"                           minOccurs="0" maxOccurs="1" nillable="false"/>
    <xsd:element name="members"                                                             minOccurs="1" maxOccurs="1" nillable="false">
     <xsd:complexType>
      <xsd:sequence>
       <xsd:element name="member"             type="entryExitMemberType"                    minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
   </xsd:all>
   <xsd:attributeGroup ref="entityIdentifierGroup"/>
  </xsd:complexType>

  <xsd:complexType name="entryExitMemberType">
   <xsd:all>
    <xsd:element name="client_id"               type="legacyIDType"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="exit_date"               type="xsd:dateTime"                         minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="reason_leaving"          type="eereasonleavingPickOption"            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="reason_leaving_other"    type="xsd:string"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="destination"             type="eedestinationPickOption"              minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="destination_other"       type="xsd:string"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="notes"                   type="xsd:string"                           minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:all>
   <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
  </xsd:complexType>

  <xsd:complexType name="informationReleaseBaseType">
   <xsd:all>
    <xsd:element name="provider_id"             type="legacyIDType"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_started"            type="xsd:dateTime"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="permission"              type="xsd:boolean"                          minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_ended"              type="xsd:dateTime"                         minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="documentation"           type="roidocumentPickOption"                minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="witness"                 type="tok50Type"                            minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:all>
  </xsd:complexType>

 <xsd:complexType name="informationReleaseEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="informationReleaseBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

  <xsd:complexType name="informationReleasesListType">
   <xsd:sequence>
    <xsd:element name="info_release"            type="informationReleaseEmbeddedType"       minOccurs='0' maxOccurs='unbounded'/>
   </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="infractionBaseType">
   <xsd:all>
    <xsd:element name="provider_id"             type="legacyIDType"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="bar_start_date"          type="xsd:dateTime"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="bar_end_date"            type="xsd:dateTime"                         minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="infraction"              type="infractionPickOption"                 minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="staff_person"            type="tok100Type"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="bar_from_sites"          type="xsd:string"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="notes"                   type="xsd:string"                           minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="bar_code"                type="barcodePickOption"                    minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:all>
  </xsd:complexType>

 <xsd:complexType name="infractionEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="infractionBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

  <xsd:complexType name="infractionsListType">
   <xsd:sequence>
    <xsd:element name="infraction"              type="infractionEmbeddedType"               minOccurs='0' maxOccurs='unbounded'/>
   </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="casemanagerBaseType">
   <xsd:all>
    <xsd:element name="provider_id"             type="legacyIDType"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_started"            type="xsd:dateTime"                         minOccurs="1" maxOccurs="1" nillable="false"/>
    <xsd:element name="date_ended"              type="xsd:dateTime"                         minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="name"                    type="tok50Type"                            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="title"                   type="tok50Type"                            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="phone_number"            type="tok20Type"                            minOccurs="0" maxOccurs="1" nillable="true"/>
    <xsd:element name="email_address"           type="tok50Type"                            minOccurs="0" maxOccurs="1" nillable="true"/>
   </xsd:all>
  </xsd:complexType>

 <xsd:complexType name="casemanagerEmbeddedType">
  <xsd:complexContent>
   <xsd:extension base="casemanagerBaseType">
    <xsd:attributeGroup ref="weakEntityIdentifierGroup"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

  <xsd:complexType name="casemanagersListType">
   <xsd:sequence>
    <xsd:element name="casemanager"              type="casemanagerEmbeddedType"             minOccurs='0' maxOccurs='unbounded'/>
   </xsd:sequence>
  </xsd:complexType>


</xsd:schema>
