Technical Overview: Form Storage -- SDMX CrossSectional

From IHRIS Wiki

This is a form storage mechanism designed to read data from an SDMX-HD code list file. This form storage mechanism is present in version >= 4.0.5.

This is a read-only form storage mechanism.


Form Storage Options

The options specifying a SDMX Cross Sectional storage for $form are stored at:

/modules/forms/forms/$form/storage_options/SDMX_CrossSectional

It has the following structure:

  • file: Required scalar node. The SDMX file that the data should be read from. This can either be an absolutely given file path, or a relative file path. If it is a relative file path, then it uses the SDMXHD file search category.
  • namespace: Optional scalar node. defaults to 'ns'.
  • id: Optional parent node. The data defining how to associate an id <namespace:OBS_VALUE/>.
    • attribute: Optional scalar node. The name of the attribute which contains the id. If not set the id is the numeric document order of OBS_VALUE nodes starting at 1.
    • id_eval. Optional scalar node. If set it is a php function called on the id.
    • form_prepended: Optional scalar node. Defaults to true. If true, it means the form name (with a |) has been prepended to the id. If id_eval is also set, and this is true, the form is prepended before passing to the eval.
  • parent: optional parent node. The data defining how to associate a parent id per line of this file.
    • enabled: Optional scalar node. If present and evaluates to false, it means getParent() should return the trivial parent id, '0'.
    • index: If set, and use_header or has_header is false, it is the numeric index of the column that this data is saved in.
    • header: Applies if use_header and has_header are true. If set it is the header name of index of the column that this data is saved in. By default it is "parent"
  • fields: Optional parent node. Specifies how the data of the your form is associate to a row of your table. Each child of this node is the name of a field $field of your form. By default, all fields of a form are populated, and are all assumed to come from the column with that field name "$form+$field"
    • $field: Optional parent node with the following child nodes.
      • enabled: Optional scalar node. If present and evaluates to false, it means we should not populate this field.
      • index: If set, and use_header or has_header is false, it is the numeric index of the column that this data is saved in.
      • header: Applies if use_header and has_header are true. If set it is the header name of index of the column that this data is saved in. By default it is "$field"

Global Options

There are global options for SDMX-HD form storage. They are specified at:

/modules/forms/storage_options/SDMX-HD

This has the structure:

  • closeFile: defaults to false. If true, we close the file between access. Otherwise, we allow PHP to handle closing the file resource at the end of the script's call.

Form Definition

To use SDMX-HD storage for a form use the following configuration. Replace $form, $form_name, $file_location and $CL_ID with the appropriate values. <source lang="xml"> <configurationGroup name="$form">

 <displayName>SDMX-HD Code List: $form</displayName>
 <description>The SDMX-HD Code List: $form_name</description>
 <configuration name="class" values="single">
   <value>I2CE_SimpleList</value>
 </configuration>
 <configuration name="display" values="single" locale="en_US">
   <value>$form_name</value>
 </configuration>
 <configuration name="storage" values="single">
   <value>SDMXHD</value>
 </configuration>
 <configurationGroup name="storage_options" path="storage_options/SDMXHD">
   <configuration name="file" values="single">
     <values>$file_location</value>
   </configuration>
   <configuration name="CodeListID" values="single">
     <value>$CL_ID</value>
   </configuration>
 </configurationGroup>

</configurationGroup> </source>

An example for gender may be:

<source lang="xml"> <configurationGroup name="cl_gender">

 <displayName>SDMX-HD Code List: cl_gender</displayName>
 <description>The SDMX-HD Code List: Gender</description>
 <configuration name="class" values="single">
   <value>I2CE_SimpleList</value>
 </configuration>
 <configuration name="display" values="single" locale="en_US">
   <value>Gender</value>
 </configuration>
 <configuration name="storage" values="single">
   <value>SDMXHD</value>
 </configuration>
 <configurationGroup name="storage_options" path="storage_options/SDMXHD">
   <configuration name="file" values="single">
     <values>CL_GENDER+SDMX-HD+1.0.xml</value>
   </configuration>
   <configuration name="CodeListID" values="single">
     <value>CL_GENDER</value>
   </configuration>
 </configurationGroup>

</configurationGroup> </source>