Display Mapped Field From a Report

From IHRIS Wiki

This page is a work in progress

Some mapped fields may have a complicated view based on a tree view display that may take a long time to display when there is a lot of data and many different elements to display. This most often happens when you map to the facility form as a tree view allowing selection through country, region (state), district, etc. This How To will show you how to link this display to a report for faster display.

There are two options. One is to keep the tree view and link it to a report to build the tree from. The second is to use the report selector option to allow the user to view the entire report and select the value from the report itself which allows limits for easier selection. The report selection will not display when the field is used as a limit in another report however.

Using a Report to Build the Tree View

Two example modules have been created to use reports to build the tree view. ihris-manage-FacilityTree and ihris-manage-PositionTree.

Facility Tree Module

The facility tree report can be used for any field mapped to the facility form. The module does this for the position facility field. The default display for this field is set to facility+location:county:district:[region]:country. This tells iHRIS to build a tree view for this field so the user can select country, district, county and then the facility so the list isn't so large. The region must also be included, but is hidden by including it in brackets so it won't be shown in the list, but is required so iHRIS knows which country the district is in.

To replace this with a report query we need to set the display_report meta information for the field and build the report to be used.

Note: Don't forget to include version number if you're updating an existing module.

Here is the example from the Facility Tree module:

<source lang="xml">

   <configurationGroup name="facility_meta_tree" path="/modules/forms/formClasses/iHRIS_Position/fields/facility/meta/display_report/default">
     <configuration name="report" values="single">
       <value>facility_tree</value>
     </configuration>
     <configuration name="map" type="delimited" values="many">
       <value>facility+location:primary_form</value>
     </configuration>
   </configurationGroup>

</source>

First we set the report to be used to be facility_tree. Then we need to define what the form alias is in the relationship if it is different based on the display data. The display uses facility+location to link to the county (or district) forms. The report won't have this so we set the map meta data to link the facility+location information from the display the primary_form of the report. The others (county, district, region and country) already match the names used in the report.

The report view will also sort based on the default sort of the forms included. This means the districts will be sorted by region first since that is the default sort for districts. We can change this just for this field by adding the following to a module (this is already in the Facility Tree module):

<source lang="xml">

   <configurationGroup name="facility_meta_orders" path="/modules/forms/formClasses/iHRIS_Position/fields/facility/meta/display/orders/default">
     <configuration name="district" type="delimited">
       <value>0:name</value>
     </configuration>
   </configurationGroup>

</source>

Facility Tree Report

The report must also be defined. The Facility Tree module defines the relationship facilty_tree and the report facility_tree. Refer to the module for the specifics of this report.

A few things to note when creating this report:

  1. The i2ce_hidden fields must be included so the appropriate limit can be used for the display.
  2. Any other fields used when limiting the display also need to be included.
  3. The ID fields are included by default, but it is good practice to select them for the report so anyone looking at the report will see they are selected.
  4. Any fields used for linking should also be enabled, e.g. the region field for district.