You are here

The IMPReSS database can be accessed using Web Services based on SOAP technology. A Web Service is a machine-readable service for accessing data from a resource, and in this case, IMPReSS provides this interface in order to allow developers to extract all the relevant information about an experiment in order that they know what data is expected to be submitted and be able to check that it is valid.

The IMPReSS Web Service WSDL can be accessed at https://www.mousephenotype.org/impress/soap/server?wsdl and using any SOAP client program or relevant API, the database can be interrogated to return information.

The IMPReSS Web Service can be interrogated using these invocations/methods (snapshot from 30/10/2013):

  • getParameter
  • getParameterIncrements
  • getParameterKeys
  • getParameterOptions
  • getPipelineKeys
  • getProcedureKeys
  • getProcedureWeek
  • isValidParameter
  • isValidPipeline
  • isValidProcedure
  • pipelineHasProcedure
  • procedureHasParameter
  • getParameters
  • getProcedures
  • getProcedure
  • getPipeline
  • getParameterMPTerms
  • getParameterEQTerms
  • getWhenLastModified
  • getParameterOntologyOptions

The bootstrap invocation is getPipelineKeys(), which returns a list of the public Pipeline Keys in the database. From there on, for any of those Pipeline Keys, we can get the Procedures in a given Pipeline by using getProcedureKeys(arg0) and passing the Pipeline Key as an argument. And if we wanted to get the details of a Procedure, like what week it was carried out in, then the getProcedure(arg0, arg1) invocation can be called with the Procedure Key and Pipeline Key passed as arguments, so it will return the details of the Procedure as a hash. And we can go further to get the Parameters of a Procedure using getParameterKeys(arg0) by passing the Procedure Key as an argument, and for each Parameter we can get its details using the getParameter(arg0) invocation with the Parameter Key as an argument and accordingly invoke getParameterIncrements(arg0), getParameterOptions(arg0), getParameterMPTerms(arg0), getParameterEQTerms(arg0) and getParameterOntologyOptions(arg0) passing the Parameter Key as an argument in order to get those Parameter-associated items.

As a walk-through example, I will show how these things are invoked using the soapUI 4.5 Client application and what values are returned. It is highly recommended to try out the web service calls using soapUI before you use them in your project.

Getting a list of Pipelines

To get a list of Pipeline Keys we just call the getPipelineKeys() invocation without any arguments and it returns a simple string array of the Pipelines in the IMPReSS database.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getPipelineKeys/>
   </soapenv:Body>
</soapenv:Envelope>

Reponse:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns1:getPipelineKeysResponse>
         <getPipelineKeysResult>
            <item>IMPC_001</item>
            <item>HRWL_001</item>
            <item>TCP_001</item>
            <item>ICS_001</item>
            <item>JAX_001</item>
            <item>UCD_001</item>
            <item>HMGU_001</item>
            <item>ESLIM_001</item>
            <item>ESLIM_002</item>
            <item>GMC_001</item>
            <item>M-G-P_001</item>
            <item>ESLIM_003</item>
         </getPipelineKeysResult>
      </ns1:getPipelineKeysResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting the Procedures in the IMPC Pipeline

If we select the IMPC Pipeline and want to see what Procedures are present in it then we invoke getProcedureKeys(arg0)  with the IMPC Pipeline Key as an argument. This returns a simple string array of the Procedure Keys in the IMPC Pipeline:

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getProcedureKeys>
         <pipelineKey>IMPC_001</pipelineKey>
      </ser:getProcedureKeys>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns1:getProcedureKeysResponse>
         <getProcedureKeysResult>
            <item>IMPC_ELZ_001</item>
            <item>IMPC_BWT_001</item>
            <item>IMPC_FER_001</item>
            <item>IMPC_VIA_001</item>
            <item>IMPC_CSD_002</item>
            <item>IMPC_OFD_001</item>
            <item>IMPC_CSD_001</item>
            <item>IMPC_GRS_001</item>
            <item>IMPC_ACS_001</item>
            <item>IMPC_ACS_002</item>
            <item>IMPC_CAL_001</item>
            <item>IMPC_CAL_002</item>
            <item>IMPC_ECG_001</item>
            <item>IMPC_ECH_001</item>
            <item>IMPC_IPG_001</item>
            <item>IMPC_CHL_001</item>
            <item>IMPC_ABR_001</item>
            <item>IMPC_ABR_002</item>
            <item>IMPC_XRY_001</item>
            <item>IMPC_DXA_001</item>
            <item>IMPC_PAI_001</item>
            <item>IMPC_EYE_001</item>
            <item>IMPC_HEM_001</item>
            <item>IMPC_HEM_002</item>
            <item>IMPC_CBC_001</item>
            <item>IMPC_CBC_002</item>
            <item>IMPC_INS_001</item>
            <item>IMPC_INS_002</item>
            <item>IMPC_FAC_001</item>
            <item>IMPC_PAT_001</item>
            <item>IMPC_HWT_001</item>
            <item>IMPC_BLK_001</item>
            <item>IMPC_HIS_001</item>
            <item>IMPC_ALZ_001</item>
         </getProcedureKeysResult>
      </ns1:getProcedureKeysResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

If you want to get the details of each of the Procedures of a Pipeline then you should be using the getProcedures() function instead. This is described below.

Getting the Parameters of the Body Weight Procedure

The Body Weight Procedure has the key IMPC_BWT_001 and we can pass this as an argument to the getParameterKeys(arg0) invocation to get a list of the Parameter Keys in that Procedure:

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameterKeys>
         <procedureKey>IMPC_BWT_001</procedureKey>
      </ser:getParameterKeys>
   </soapenv:Body>
</soapenv:Envelope>

Reponse:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns1:getParameterKeysResponse>
         <getParameterKeysResult>
            <item>IMPC_BWT_001_001</item>
            <item>IMPC_BWT_002_001</item>
            <item>IMPC_BWT_003_001</item>
            <item>IMPC_BWT_004_001</item>
            <item>IMPC_BWT_005_001</item>
            <item>IMPC_BWT_006_001</item>
            <item>IMPC_BWT_007_001</item>
         </getParameterKeysResult>
      </ns1:getParameterKeysResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting Parameter details

Now that we have the keys for the Parameters we will need to look at the properties of individual Parameters. We can call the getParameter(arg0) invocation with a Parameter Key as an argument to get a hash-map of the properties of the parameter:

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameter>
         <parameterKey>IMPC_BWT_001_001</parameterKey>
      </ser:getParameter>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns1:getParameterResponse>
         <getParameterResult>
            <item>
               <key>parameter_id</key>
               <value>2100</value>
            </item>
            <item>
               <key>parameter_key</key>
               <value>IMPC_BWT_001_001</value>
            </item>
            <item>
               <key>type</key>
               <value>simpleParameter</value>
            </item>
            <item>
               <key>parameter_name</key>
               <value>Body weight</value>
            </item>
            <item>
               <key>major_version</key>
               <value>1</value>
            </item>
            <item>
               <key>minor_version</key>
               <value>3</value>
            </item>
            <item>
               <key>derivation</key>
               <value/>
            </item>
            <item>
               <key>description</key>
               <value>body_weight</value>
            </item>
            <item>
               <key>is_annotation</key>
               <value>false</value>
            </item>
            <item>
               <key>is_derived</key>
               <value>false</value>
            </item>
            <item>
               <key>is_increment</key>
               <value>false</value>
            </item>
            <item>
               <key>is_option</key>
               <value>false</value>
            </item>
            <item>
               <key>is_required</key>
               <value>true</value>
            </item>
            <item>
               <key>is_deprecated</key>
               <value>false</value>
            </item>
            <item>
               <key>unit</key>
               <value>g</value>
            </item>
            <item>
               <key>qc_check</key>
               <value>true</value>
            </item>
            <item>
               <key>qc_minimum</key>
               <value>0</value>
            </item>
            <item>
               <key>qc_maximum</key>
               <value>500</value>
            </item>
            <item>
               <key>qc_notes</key>
               <value/>
            </item>
            <item>
               <key>value_type</key>
               <value>FLOAT</value>
            </item>
            <item>
               <key>graph_type</key>
               <value>2D</value>
            </item>
            <item>
               <key>data_analysis_notes</key>
               <value/>
            </item>
            <item>
               <key>is_required_for_data_analysis</key>
               <value>false</value>
            </item>
         </getParameterResult>
      </ns1:getParameterResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Making fewer calls to the Webservice

It would require many invocation calls to the IMPReSS Web Services to get the details of all the Procedures in a Pipeline and all the Parameters in each of those Procedures using the method shown above and it would be very slow. There is a better way to get the details of all the Procedures and Parameters and their details and what these functions do is return an array of hash-maps with one invocation to the Web Service.

Making fewer calls: getProcedures()

Using get Procedures will return a list of all the Procedures in a Pipeline with all their details.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getProcedures>
         <pipelineKey>IMPC_001</pipelineKey>
      </ser:getProcedures>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getProceduresResponse>
         <getProceduresResult>
            <ns1:Map>
               <item>
                  <key>procedure_id</key>
                  <value>172</value>
               </item>
               <item>
                  <key>procedure_key</key>
                  <value>IMPC_ELZ_001</value>
               </item>
               <item>
                  <key>procedure_name</key>
                  <value>Embryo LacZ</value>
               </item>
               <item>
                  <key>major_version</key>
                  <value>1</value>
               </item>
               <item>
                  <key>minor_version</key>
                  <value>0</value>
               </item>
               <item>
                  <key>week</key>
                  <value>12</value>
               </item>
               <item>
                  <key>is_mandatory</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_deprecated</key>
                  <value>false</value>
               </item>
               <item>
                  <key>description</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>procedure_id</key>
                  <value>103</value>
               </item>
               <item>
                  <key>procedure_key</key>
                  <value>IMPC_BWT_001</value>
               </item>
               <item>
                  <key>procedure_name</key>
                  <value>Body Weight</value>
               </item>
               <item>
                  <key>major_version</key>
                  <value>1</value>
               </item>
               <item>
                  <key>minor_version</key>
                  <value>1</value>
               </item>
               <item>
                  <key>week</key>
                  <value>0</value>
               </item>
               <item>
                  <key>is_mandatory</key>
                  <value>true</value>
               </item>
               <item>
                  <key>is_deprecated</key>
                  <value>false</value>
               </item>
               <item>
                  <key>description</key>
                  <value>The body weight test measures the weight of the mouse in a time series, allowing monitoring of its evolution; also, it is required in many other procedures.</value>
               </item>
            </ns1:Map>
            <!-- ... etc ... -->
         </getProceduresResult>
      </ns2:getProceduresResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Please note that the Procedure "week" field, which is currently an integer, will be changing in future and will contain a string comprising of one letter to indicate it's stage (Embryonic: E, Adult: A, Mixed: M, Terminal: T) and the week or day it is carried out in; so the value will be like E12.5 or A9. This is still under discussion.

Making fewer calls: getParameters()

If you provide a Procedure Key to the getParameters() method it will return a hashmap array of all the Parameters in that Procedure:

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameters>
         <procedureKey>IMPC_BWT_001</procedureKey>
      </ser:getParameters>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParametersResponse>
         <getParametersResult>
            <ns1:Map>
               <item>
                  <key>parameter_id</key>
                  <value>2100</value>
               </item>
               <item>
                  <key>parameter_key</key>
                  <value>IMPC_BWT_001_001</value>
               </item>
               <item>
                  <key>type</key>
                  <value>simpleParameter</value>
               </item>
               <item>
                  <key>parameter_name</key>
                  <value>Body weight</value>
               </item>
               <item>
                  <key>major_version</key>
                  <value>1</value>
               </item>
               <item>
                  <key>minor_version</key>
                  <value>3</value>
               </item>
               <item>
                  <key>derivation</key>
                  <value/>
               </item>
               <item>
                  <key>description</key>
                  <value>body_weight</value>
               </item>
               <item>
                  <key>is_annotation</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_derived</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_increment</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_option</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_required</key>
                  <value>true</value>
               </item>
               <item>
                  <key>is_deprecated</key>
                  <value>false</value>
               </item>
               <item>
                  <key>unit</key>
                  <value>g</value>
               </item>
               <item>
                  <key>qc_check</key>
                  <value>true</value>
               </item>
               <item>
                  <key>qc_minimum</key>
                  <value>0</value>
               </item>
               <item>
                  <key>qc_maximum</key>
                  <value>500</value>
               </item>
               <item>
                  <key>qc_notes</key>
                  <value/>
               </item>
               <item>
                  <key>value_type</key>
                  <value>FLOAT</value>
               </item>
               <item>
                  <key>graph_type</key>
                  <value>2D</value>
               </item>
               <item>
                  <key>data_analysis_notes</key>
                  <value/>
               </item>
               <item>
                  <key>is_required_for_data_analysis</key>
                  <value>false</value>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>parameter_id</key>
                  <value>2101</value>
               </item>
               <item>
                  <key>parameter_key</key>
                  <value>IMPC_BWT_002_001</value>
               </item>
               <item>
                  <key>type</key>
                  <value>simpleParameter</value>
               </item>
               <item>
                  <key>parameter_name</key>
                  <value>General comments about the mouse</value>
               </item>
               <item>
                  <key>major_version</key>
                  <value>1</value>
               </item>
               <item>
                  <key>minor_version</key>
                  <value>0</value>
               </item>
               <item>
                  <key>derivation</key>
                  <value/>
               </item>
               <item>
                  <key>description</key>
                  <value>general_comments_about_the_mouse</value>
               </item>
               <item>
                  <key>is_annotation</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_derived</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_increment</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_option</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_required</key>
                  <value>false</value>
               </item>
               <item>
                  <key>is_deprecated</key>
                  <value>false</value>
               </item>
               <item>
                  <key>unit</key>
                  <value/>
               </item>
               <item>
                  <key>qc_check</key>
                  <value>false</value>
               </item>
               <item>
                  <key>qc_minimum</key>
                  <value>0</value>
               </item>
               <item>
                  <key>qc_maximum</key>
                  <value>0</value>
               </item>
               <item>
                  <key>qc_notes</key>
                  <value/>
               </item>
               <item>
                  <key>value_type</key>
                  <value>TEXT</value>
               </item>
               <item>
                  <key>graph_type</key>
                  <value/>
               </item>
               <item>
                  <key>data_analysis_notes</key>
                  <value/>
               </item>
               <item>
                  <key>is_required_for_data_analysis</key>
                  <value>false</value>
               </item>
            </ns1:Map>
            <!-- ... etc ... -->
         </getParametersResult>
      </ns2:getParametersResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting items related to a Parameter

Parameters have associated Increments, Options, Ontology Options and Ontologies (MPTerms and EQTerms) which can be recalled using the getParameterIncrements(), getParameterOptions(), getParameterOntologyOptions(), getParameterMPTerms() and getParameterEQTerms() by passing the Parameter Key as an argument. But before trying to get these it is best to check if the Parameter has/needs them first.

Notice above in the Parameter hash-map there are “is_increment” and “is_option” fields with a Boolean values. If the value is “false” for “is_increment” then there is no need to check the Parameter for Increments, and the same goes for Options. Ontologies have a similar flag – “is_annotation”, but Parameters can optionally have ontologies without the is_annotation flag explicitly stating so, and it is up to you whether to use these if the flag is set to false. OntologyOptions have no flag currently so you will have to check it each time but it is something that is only used in one or two Procedures such as the IMPC Gross Pathology and Tissue Collection Procedure. It is to your benefit to make as few calls to the Web Service as possible to reduce time spent waiting for responses, especially unnecessary ones.

 

Getting Parameter Options

Calling getParameterOptions(arg0) with the Parameter Key will return a bunch of options as an array of hash-maps with each array item being an option. Before calling this function you should check the is_option field of its parent Parameter.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameterOptions>
         <parameterKey>IMPC_BWT_004_001</parameterKey>
      </ser:getParameterOptions>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterOptionsResponse>
         <getParameterOptionsResult>
            <ns1:Map>
               <item>
                  <key>name</key>
                  <value>Ohaus</value>
               </item>
               <item>
                  <key>description</key>
                  <value/>
               </item>
               <item>
                  <key>parent_name</key>
                  <value/>
               </item>
               <item>
                  <key>is_active</key>
                  <value>true</value>
               </item>
               <item>
                  <key>parent_description</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>name</key>
                  <value>Denver Instrument</value>
               </item>
               <item>
                  <key>description</key>
                  <value/>
               </item>
               <item>
                  <key>parent_name</key>
                  <value/>
               </item>
               <item>
                  <key>is_active</key>
                  <value>true</value>
               </item>
               <item>
                  <key>parent_description</key>
                  <value/>
               </item>
            </ns1:Map>
            <!-- ... etc ... -->
         </getParameterOptionsResult>
      </ns2:getParameterOptionsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting Parameter Increments

Calling getParameterIncrements(arg0) with the Parameter Key will return one of two types of increment which can be checked-for using the “min” value:

A minimum number increment – one option is returned with the “min” field having a value of 1 or greater. This type of Option is for repeat values which are meant to be submitted together such as oxygen consumption over time. e.g.

Calling getParameterIncrements("IMPC_CAL_003_001") will issue the Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterIncrementsResponse>
         <getParameterIncrementsResult>
            <ns1:Map>
               <item>
                  <key>string</key>
                  <value/>
               </item>
               <item>
                  <key>type</key>
                  <value>datetime</value>
               </item>
               <item>
                  <key>unit</key>
                  <value>Time in hours relative to lights out</value>
               </item>
               <item>
                  <key>min</key>
                  <value>21</value>
               </item>
               <item>
                  <key>is_active</key>
                  <value>true</value>
               </item>
            </ns1:Map>
         </getParameterIncrementsResult>
      </ns2:getParameterIncrementsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Or…

A defined list of increments – The increment categories into which the values must be submitted are listed in the response. The “min” field will be 0 or empty for this type of increment. The title/category of the increment is the “string” field.

Calling getParameterIncrements("IMPC_OFD_001_001") will issue the Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterIncrementsResponse>
         <getParameterIncrementsResult>
            <ns1:Map>
               <item>
                  <key>string</key>
                  <value>5</value>
               </item>
               <item>
                  <key>type</key>
                  <value>float</value>
               </item>
               <item>
                  <key>unit</key>
                  <value>minutes</value>
               </item>
               <item>
                  <key>min</key>
                  <value>0</value>
               </item>
               <item>
                  <key>is_active</key>
                  <value>true</value>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>string</key>
                  <value>10</value>
               </item>
               <item>
                  <key>type</key>
                  <value>float</value>
               </item>
               <item>
                  <key>unit</key>
                  <value>minutes</value>
               </item>
               <item>
                  <key>min</key>
                  <value>0</value>
               </item>
               <item>
                  <key>is_active</key>
                  <value>true</value>
               </item>
            </ns1:Map>
            <!-- ... etc ... -->
         </getParameterIncrementsResult>
      </ns2:getParameterIncrementsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting Parameter Ontology Terms

Parameters in IMPReSS can be annotated with Single Ontology Terms such as found in MP, PATO or MA ontologies, or EQ-style Ontologies or both of those at the same time. There is no sure way to determine if a Parameter has ontologies associated with it without making invocations to both getParameterMPTerms(arg0) and getParameterEQTerms(arg0) with the Parameter Key as the argument.

With an MP Term request the result is relatively straight forward:

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameterMPTerms>
         <parameterKey>IMPC_BWT_001_001</parameterKey>
      </ser:getParameterMPTerms>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterMPTermsResponse>
         <getParameterMPTermsResult>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>INCREASED</value>
               </item>
               <item>
                  <key>mp_id</key>
                  <value>MP:0001260</value>
               </item>
               <item>
                  <key>mp_term</key>
                  <value>increased body weight</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>DECREASED</value>
               </item>
               <item>
                  <key>mp_id</key>
                  <value>MP:0001262</value>
               </item>
               <item>
                  <key>mp_term</key>
                  <value>decreased body weight</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>ABNORMAL</value>
               </item>
               <item>
                  <key>mp_id</key>
                  <value>MP:0001259</value>
               </item>
               <item>
                  <key>mp_term</key>
                  <value>abnormal body weight</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
            </ns1:Map>
         </getParameterMPTermsResult>
      </ns2:getParameterMPTermsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

But EQ Terms are a little more complex because they can have up to three entities and two qualities that are put together to describe a phenotype.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameterEQTerms>
         <parameterKey>ESLIM_002_001_002</parameterKey>
      </ser:getParameterEQTerms>
   </soapenv:Body>
</soapenv:Envelope>

Result:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterEQTermsResponse>
         <getParameterEQTermsResult>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>TRAIT</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
               <item>
                  <key>entity1_term</key>
                  <value>artery</value>
               </item>
               <item>
                  <key>entity1_id</key>
                  <value>MA:0000064</value>
               </item>
               <item>
                  <key>entity2_term</key>
                  <value>blood</value>
               </item>
               <item>
                  <key>entity2_id</key>
                  <value>MA:0000059</value>
               </item>
               <item>
                  <key>entity3_term</key>
                  <value/>
               </item>
               <item>
                  <key>entity3_id</key>
                  <value/>
               </item>
               <item>
                  <key>quality1_term</key>
                  <value>pressure</value>
               </item>
               <item>
                  <key>quality1_id</key>
                  <value>PATO:0001025</value>
               </item>
               <item>
                  <key>quality2_term</key>
                  <value/>
               </item>
               <item>
                  <key>quality2_id</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>DECREASED</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
               <item>
                  <key>entity1_term</key>
                  <value>artery</value>
               </item>
               <item>
                  <key>entity1_id</key>
                  <value>MA:0000064</value>
               </item>
               <item>
                  <key>entity2_term</key>
                  <value>blood</value>
               </item>
               <item>
                  <key>entity2_id</key>
                  <value>MA:0000059</value>
               </item>
               <item>
                  <key>entity3_term</key>
                  <value/>
               </item>
               <item>
                  <key>entity3_id</key>
                  <value/>
               </item>
               <item>
                  <key>quality1_term</key>
                  <value>decreased pressure</value>
               </item>
               <item>
                  <key>quality1_id</key>
                  <value>PATO:0001575</value>
               </item>
               <item>
                  <key>quality2_term</key>
                  <value/>
               </item>
               <item>
                  <key>quality2_id</key>
                  <value/>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>selection_outcome</key>
                  <value>INCREASED</value>
               </item>
               <item>
                  <key>sex</key>
                  <value/>
               </item>
               <item>
                  <key>option</key>
                  <value/>
               </item>
               <item>
                  <key>increment</key>
                  <value/>
               </item>
               <item>
                  <key>entity1_term</key>
                  <value>artery</value>
               </item>
               <item>
                  <key>entity1_id</key>
                  <value>MA:0000064</value>
               </item>
               <item>
                  <key>entity2_term</key>
                  <value>blood</value>
               </item>
               <item>
                  <key>entity2_id</key>
                  <value>MA:0000059</value>
               </item>
               <item>
                  <key>entity3_term</key>
                  <value/>
               </item>
               <item>
                  <key>entity3_id</key>
                  <value/>
               </item>
               <item>
                  <key>quality1_term</key>
                  <value>increased pressure</value>
               </item>
               <item>
                  <key>quality1_id</key>
                  <value>PATO:0001576</value>
               </item>
               <item>
                  <key>quality2_term</key>
                  <value/>
               </item>
               <item>
                  <key>quality2_id</key>
                  <value/>
               </item>
            </ns1:Map>
         </getParameterEQTermsResult>
      </ns2:getParameterEQTermsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Getting Parameter Ontology Options

Parameter Ontology Options are used in special situations where the value of a measured Parameter happens to be an ontology term. Many different ontologies are used. Ontology Options are used in the Gross Pathology and Tissue Collection Procedure. There is no way to identify if a Parameter has associated Ontology Options without using the getParameterOntologyOptions() function.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getParameterOntologyOptions>
         <parameterKey>IMPC_PAT_001_001</parameterKey>
      </ser:getParameterOntologyOptions>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.apache.org/xml-soap" xmlns:ns2="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns2:getParameterOntologyOptionsResponse>
         <getParameterOntologyOptionsResult>
            <ns1:Map>
               <item>
                  <key>ontology_id</key>
                  <value>MP:0002169</value>
               </item>
               <item>
                  <key>ontology_term</key>
                  <value>normal</value>
               </item>
            </ns1:Map>
            <ns1:Map>
               <item>
                  <key>ontology_id</key>
                  <value>MP:0002152</value>
               </item>
               <item>
                  <key>ontology_term</key>
                  <value>abnormal brain morphology</value>
               </item>
            </ns1:Map>
           <!-- ... etc ... -->
         </getParameterOntologyOptionsResult>
      </ns2:getParameterOntologyOptionsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Updating your data

The Web Service has a getWhenLastModified() function, which takes no arguments and returns a W3C compliant timestamp as a response. The point of this invocation is to give the Web Service user a way of identifying when the database was last updated so that if they are caching any of the responses from the Web Service, they can purge the cache and fetch the most up to date data from the Web Service. This function should be used on a regular basis.

Invocation:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.mousephenotype.org/impress/soap/server">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getWhenLastModified/>
   </soapenv:Body>
</soapenv:Envelope>

Response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.mousephenotype.org/impress/soap/server">
   <SOAP-ENV:Body>
      <ns1:getWhenLastModifiedResponse>
         <getWhenLastModifiedResult>2013-10-29T13:43:36+00:00</getWhenLastModifiedResult>
      </ns1:getWhenLastModifiedResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Other Web Service Invocations

Many of the other invocation methods not described above respond with a Boolean value of True or False and are there for checking individual items arbitrarily. For example, isValidPipeline(arg0) takes a Pipeline Key and checks for its existence in the database. If it exists it responds with "true" and if it doesn’t then it returns "false". You don’t need to call such invocations unless you are doing some arbitrary checking or debugging.

Some of the invocation methods take two arguments, such as pipelineHasProcedure(arg0, arg1), which takes a Pipeline Key and a Procedure Key for its arguments and answers the question of whether the given Procedure can be found in that Pipeline by returning a True or False response.

Feedback