<!--
********************************************************
*
* dna_database.xsd
*
* Authors: The DNA team, http://www.dna.ac.uk
*
* Version: SId: dna_db.xsd,v 1.13 2005/12/13 12:21:36 svensson Exp S
*
********************************************************
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dna="http://www.dna.ac.uk/DNA_XMLSchema">


  <xsd:include schemaLocation="dna_common.xsd"/>
  <xsd:include schemaLocation="dna_gui.xsd"/>
  <xsd:include schemaLocation="ispyb.xsd"/>


  <xsd:complexType name="proposal_response">
    <xsd:sequence>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
      <xsd:element name="Proposal"
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="Proposal"/>
      <xsd:element name="Session"
                   minOccurs="0" 
                   maxOccurs="unbounded" 
                   type="Session"/>
    </xsd:sequence>
  </xsd:complexType>

  <!--  Example proposal_response:
  
  The response to a login is to return an xml document with the proposal and all
  the sessions associated with it.

  <?xml version="1.0"?>
  <proposal_response>
    <status>
      <code>ok</code>
      <message>testmessage</message>
    </status>
    <Proposal>
      <proposalId>10127</proposalId>
      <personId>0</personId>
      <code>MX</code>
      <number>415</number>
    </Proposal>
    <Session>
      <sessionId>21466</sessionId>
      <beamLineSetupId>0</beamLineSetupId>
      <proposalId>10127</proposalId>
      <startDate>2004-12-09</startDate>
      <endDate>2004-12-10</endDate>
      <beamLineName>ID14 3</beamLineName>
      <scheduled>1</scheduled>
      <nbShifts>3</nbShifts>
    </Session>
  </Proposal_response>

   -->   



  <xsd:complexType name="loaded_samples_request">
    <xsd:sequence>
      <xsd:element name="Proposal" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="Proposal"/>
      <xsd:element name="sample_reference" 
                   minOccurs="0" 
                   maxOccurs="unbounded" 
                   type="sample_reference"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="loaded_sample">
    <xsd:sequence>
      <xsd:element name="sample_reference" 
                   minOccurs="0" 
                   maxOccurs="1"
                   type="sample_reference"/>
      <xsd:element name="Protein" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="Protein"/>
      <xsd:element name="Crystal" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="Crystal"/>
      <xsd:element name="BLSample" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="BLSample"/>
      <xsd:element name="DiffractionPlan" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="DiffractionPlan"/>
      <xsd:element name="Container" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="Container"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="loaded_samples_response">
    <xsd:sequence>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
      <xsd:element name="loaded_sample" 
                   minOccurs="0" 
                   maxOccurs="unbounded" 
                   type="loaded_sample"/>
    </xsd:sequence>
  </xsd:complexType>


  <!--  Example loaded_samples_response:
  
  <?xml version="1.0"?>
    <loaded_samples_response>
      <loaded_sample>
        <Protein>
          <proteinId>2</proteinId>
        </Protein>
        <BLSample>
          <blSampleId>1</blSampleId>
          <crystalId>2</crystalId>
          <ContainerId>3</ContainerId>
          <name>myTest</name>
        </BLSample>
      </loaded_sample>
    <status>
      <code>ok</code>
      <message>testmessage</message>
    </status>
  </loaded_samples_response
   --> 



  <xsd:complexType name="screen_request">
    <xsd:sequence>
      <xsd:element name="sessionId" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:integer"/>
      <xsd:element name="characterize_crystal_request" 
                   minOccurs="1" 
                   maxOccurs="unbounded" 
                   type="characterize_crystal_request"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="screen_response">
    <xsd:sequence>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
    </xsd:sequence>
  </xsd:complexType>





  <xsd:complexType name="dataRank">
    <xsd:sequence>
      <xsd:element name="rankValue" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="xsd:double"/>
      <xsd:element name="rankEngine" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="rankInformation" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="dataCrystal">
    <xsd:sequence>
      <xsd:element name="proposal" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="Proposal"/>
      <xsd:element name="fileinfo" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="fileinfo"/>
      <xsd:element name="DNAScreeningOutput" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="DNAScreeningOutput"/>
      <xsd:element name="dataRank" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="dataRank"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="magDRProject">
    <xsd:sequence>
      <xsd:element name="objectID" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="objectVersion" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="objectName" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="dataCrystal" 
                   minOccurs="0" 
                   maxOccurs="unbounded" 
                   type="dataCrystal"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="dataRankProjectDNA">
    <xsd:sequence>
      <xsd:element name="magDRProject" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="magDRProject"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="rank_request">
    <xsd:sequence>
      <xsd:element name="rankEngine" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="dataRankProjectDNA" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="dataRankProjectDNA"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="rank_response">
    <xsd:sequence>
      <xsd:element name="dataRankProjectDNA" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="dataRankProjectDNA"/>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="get_rank_engine_request">
  </xsd:complexType>



  <xsd:complexType name="get_rank_engine_response">
    <xsd:sequence>
      <xsd:element name="rankEngineCurrent" 
                   minOccurs="0" 
                   maxOccurs="1" 
                   type="xsd:string"/>
      <xsd:element name="rankEngineAvailable" 
                   minOccurs="1" 
                   maxOccurs="unbounded" 
                   type="xsd:string"/>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="set_rank_engine_request">
    <xsd:sequence>
      <xsd:element name="rankEngine" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="set_rank_engine_response">
    <xsd:sequence>
      <xsd:element name="status" 
                   minOccurs="1" 
                   maxOccurs="1" 
                   type="status"/>
    </xsd:sequence>
  </xsd:complexType>


</xsd:schema>