[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1474: Work in progress on embedded help function. Finished data-web-maintenance-dataadmin module.

revision-diff.txt (36.4 KB)

Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
see the transformer getting some exercise. And a great consequence of
the move to docbook. Its hard to imagine how we could have linked
this up to our original word documentation.

···

On 23 February 2010 19:47, <noreply@launchpad.net> wrote:

------------------------------------------------------------
revno: 1474
committer: Lars Helge Oeverland <larshelge@gmail.com>
branch nick: trunk
timestamp: Tue 2010-02-23 20:44:51 +0100
message:
Work in progress on embedded help function. Finished data-web-maintenance-dataadmin module.
modified:
dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
dhis-2/dhis-options/src/main/resources/help_content.xml
dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm

--
lp:dhis2
trunk : Code : DHIS

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.

=== modified file 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
--- dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 19:44:51 +0000
@@ -48,11 +48,9 @@
{
try
{
- TransformerFactory factory = TransformerFactory.newInstance();
-
Source stylesheet = new StreamSource( new ClassPathResource( "help_stylesheet.xsl" ).getInputStream() );

- Transformer transformer = factory.newTransformer( stylesheet );
+ Transformer transformer = TransformerFactory.newInstance().newTransformer( stylesheet );

        transformer\.setParameter\( &quot;sectionId&quot;, id \);

=== modified file 'dhis-2/dhis-options/src/main/resources/help_content.xml'
--- dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 19:44:51 +0000
@@ -1,40 +1,276 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<chapter>
- <title>Data Quality</title>
- <para>The data quality module provides means to improve the quality of the data in the system. This can be done through validation rules and various statistical checks.</para>
- <section id="learningObjectives">
- <title>Learning Objectives</title>
- <para>After reading this module you will be able to understand:</para>
- <orderedlist>
- <listitem>
- <para>What is data quality and its importance for HMIS.</para>
- </listitem>
- <listitem>
- <para>How to do data quality check at point of data entry.</para>
- </listitem>
- <listitem>
- <para>How to create data validation rules.</para>
- </listitem>
- <listitem>
- <para>How to carry out data triangulation.</para>
- </listitem>
- <listitem>
- <para>How to analyze data status.</para>
- </listitem>
- </orderedlist>
- <para>This stuff is in a paragraph</para>
- </section>
- <section id="overview">
- <title>Overview of data quality check</title>
- <para>Ensuring data quality is a key concern in building an effective HMIS. Data quality has different dimensions including:</para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Correctness:</emphasis> Data should be within the normal range for data collected at that facility. There should be no gross discrepancies when compared with data from related data elements.</para>
- </listitem>
- <listitem>
- <para><emphasis>Completeness:</emphasis> Data for all data elements for all health facilities/blocks/Taluka/districts should have been submitted.</para>
- </listitem>
- </itemizedlist>
- <para>This stuff is in a paragraph</para>
- </section>
-</chapter>
+<?xml version='1.0' encoding='UTF-8'?>
+<?xml-stylesheet type="text/xsl" href="find.xsl"?>
+<book>
+ <chapter>
+ <title>Data Administration in DHIS 2</title>
+ <para>The data administration module provides a range of functions to ensure that the data stored in the DHIS2 database is integral and that the database performance is optimised. These functions should be executed on a regular basis by a data administrator to ensure that the quality of the data stored is optimal. </para>
+ <section id="dataBrowser">
+ <title>Data browser</title>
+ <para>The data browser maintenance module allows the user to produce a summary of the data contained in the DHIS2 database. This summary provides the number of data element values that have been recorded for a given time interval and then grouped by the following options:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Data sets</para>
+ </listitem>
+ <listitem>
+ <para>Data element groups</para>
+ </listitem>
+ <listitem>
+ <para>Organisational unit groups</para>
+ </listitem>
+ <listitem>
+ <para>Organisational units</para>
+ </listitem>
+ </itemizedlist>
+ <para>Each of these options can be accessed by selecting the desired option from <guilabel>&quot;Browse by&quot; </guilabel>drop-down menu. </para>
+ <para>In order to produce a summary of submitted data for a given period and grouped by data sets, the user should follow this procedure. Begin by selecting a given periodicity type (e.g. Weekly, monthly, yearly, etc) and then a time interval (e.g. January 2009 to March 2009). Select the type of summary to be produced (e.g. Dataset) from the &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot; button to view the summary. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="70%" align="center" fileref="resources/images/maintainence/data_browser1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>A summary of the number of data element values that have been submitted over the user selected time period is shown below. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browsing_data_sets.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para> By clicking on the name of the individual dataset, a more detailed summary of each data element can be obtained as shown below. A cross-tab table summarising each time period will be shown. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browser_dataset_detail.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The functionality of the grouping by Datasets, Data element groups, and Organisational groups is essentially the same. </para>
+ <para>The functionality of grouping by organisation units will be discussed below. Begin by selecting &quot;Organisation units&quot; from the &quot;Browse by&quot; drop-down menu. The organisational hierarchy present in the database will now be displayed. Organisational units can be expanded by clicking on the plus symbol in the organisational tree view.</para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_org_unit1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para> By clicking on an organisational unit, and the clicking the &quot;Browse&quot; button, a summary of submitted data elements present in the database is returned for all immediate children of the selected organisational as shown below</para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2a.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>By clicking on one of the organisational units, a detailed list of data elements is presented by each time period as shown below. <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot></para>
+ <para>For each of the data browser summaries, a PDF export can be produced by specifying a filename in the &quot;Filename&quot; field, selecting a font size, a page layout (Landscape or Portrait) and pressing the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will then be prompted to select a location to save the file to, which can then be viewed with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
+ </section>
+ <section id="dataIntegrity">
+ <title>Data integrity</title>
+ <para>DHIS2 can perform a wide range of data integrity checks on the data contained in the database. Identifying and correcting data integrity issues is extremely important for ensuring that the data used for analysis purposes is valid. Each of the data integrity checks that are performed by the system will be described, along with general procedures that can be performed to resolve these issues. </para>
+ <section>
+ <title>Data elements without data set</title>
+ <para>Each data element must be assigned to a data set. Values for data elements will not be able to be entered into the system if a data element is not assigned to a data set. Choose Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the &quot;orphaned&quot; data element to the appropriate data set. </para>
+ </section>
+ <section>
+ <title>Data elements without groups</title>
+ <para>Some Data Elements have been allocated to several Data Element Groups. This is currently not allowed, because it will result in duplication of linked data records in the PivotSource recordsets that `feed` the pivot tables. Go to Maintenance -&gt; Data Element Groups to review each Data Element identified and remove the incorrect Group allocations.</para>
+ </section>
+ <section>
+ <title>Data elements assigned to data sets with different period types</title>
+ <para>Data Elements should not be assigned to two separate data sets whose period types differ. The recommended approach would be to create two separate data elements (for instance a monthly and yearly data element) and assign these to respective datasets. </para>
+ </section>
+ <section>
+ <title>Data sets not assigned to organisation units</title>
+ <para>All data sets should be assigned to at least one organisation unit. </para>
+ </section>
+ <section>
+ <title>Indicators with identical formulas</title>
+ <para>Although this rule will not affect data quality, it generally does not make sense to have two indicators with the exact same definition. Review the identified indicators and their formulas and delete or modify any indicator that appears to be the duplicate.</para>
+ </section>
+ <section>
+ <title>Indicators without groups</title>
+ <para>All Data Elements and Indicators must be assigned to at least one group, so these Indicators need to be allocated to their correct Data Element and Indicator Group. Go to Maintenance -&gt; Indicator Groups, and allocate each of the `Orphaned` Indicators to its correct group.</para>
+ </section>
+ <section>
+ <title>Invalid indicator numerators</title>
+ <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the numerator definition. </para>
+ </section>
+ <section>
+ <title>Invalid indicator denominators</title>
+ <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the denominator definition. </para>
+ </section>
+ <section>
+ <title> Organisation units with cyclic references</title>
+ <para>Organisation units cannot be both parent and children of each other, directly nor indirectly.</para>
+ </section>
+ <section>
+ <title>Orphaned organisation units</title>
+ <para>All organisation units must exist within the organisation unit hierarchy. Go to Organisation-&gt;Hierarchy Operations and move the offending organisation unit into the proper position in the hierarchy. </para>
+ </section>
+ <section>
+ <title>Organisation units without groups</title>
+ <para>All organisation units <emphasis>must</emphasis> be allocated to at least <emphasis>one</emphasis> group. The problem might either be that you have not defined any `compulsory` OrgUnit Group Set at all, or that there are violations of the `compulsory` rule for some OrgUnits . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then you must first define them by going to Maintenance -&gt; Organisation units-&gt;Organisation unit group sets and define at least one `compulsory` Group Set (the group set `OrgUnitType` are nearly universally relevant). If you have the relevant group sets, go to Maintenance -&gt; OrgUnit Groups to review each OrgUnit identified and add the relevant Group allocation.</para>
+ </section>
+ <section>
+ <title>Organisation units violating compulsory group sets</title>
+ <para>These organisation units have not been assigned to the any organisation unit group within one of the <emphasis>compulsory</emphasis> organisation unit group sets. When a group set is defined as `compulsory`, it means that an organisation unit must be allocated to at least one organisation unit group within that group set. For instance, all organisation units must belong to one of the groups in the `organisation unitType` group set. It might belong to the `Hospital` or the `Clinic` or any other `type` group - but it must belong to exactly one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Allocate all organisation units to exactly one group. </para>
+ </section>
+ <section>
+ <title>Organisation units violating exclusive group sets</title>
+ <para>Some organisation units have been allocated to several organisation unit groups that are members of the same exclusive organisation unit group set. When a group set is defined as exclusive, it means that an organisation unit can <emphasis>only</emphasis> be allocated to <emphasis>one</emphasis> organisation unit group within that Group Set. For instance, one organisation unit cannot normally belong to the both the &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to only to one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Remove the organisation unit from all groups except the one that it should be allocated to. </para>
+ </section>
+ <section>
+ <title> Organisation unit groups without group sets</title>
+ <para>The organisation unit groups listed here have not been allocated to a group set. Go to Maintenance-&gt;Organisation unit-&gt;Organisation unit group sets and allocate the Organisation unit group to the appropriate group set. </para>
+ </section>
+ <section>
+ <title>Validation rules without groups</title>
+ <para>All validation rules must be assigned to a group. Go to <command>Services-&gt;Data quality-&gt;Validation rule group</command> and assign the offending validation rule to a group. </para>
+ </section>
+ <section>
+ <title>Invalid validation rule left side expressions</title>
+ <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit left side&quot; and make the corrections that are required. </para>
+ </section>
+ <section>
+ <title>Invalid validation rule right side expressions</title>
+ <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit right side&quot; and make the corrections that are required.</para>
+ </section>
+ </section>
+ <section id="maintenance">
+ <title>Maintenance</title>
+ <para>The data maintenance module has five options, each described below. </para>
+ <itemizedlist>
+ <listitem>
+ <para>Clear hierarchy history</para>
+ <para>DHIS 2 maintains an audit trail of changes to the organisation unit hierarchy for aggregation purposes. This function clears the hierarchy history.</para>
+ </listitem>
+ <listitem>
+ <para>Clear data mart (aggregated datavalues)</para>
+ <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated data element values.</para>
+ </listitem>
+ <listitem>
+ <para>Clear data mart (aggregated indicatorvalues)</para>
+ <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated indicator values.</para>
+ </listitem>
+ <listitem>
+ <para>Clear zero values</para>
+ <para>This function removes zero data values from the database. Values registered for data elements with aggregation operator <emphasis role="italic">average</emphasis> is not removed, as such values will be significant when aggregating the data, contrary to values registered for data elements with aggregation operator <emphasis role="italic">sum</emphasis>. Reducing the number of data values will improve system performance.</para>
+ </listitem>
+ <listitem>
+ <para>Clear dataset completeness</para>
+ <para>This function removes aggregated dataset completeness values. This data is produced and used by report tables.</para>
+ </listitem>
+ <listitem>
+ <para>Prune periods</para>
+ <para>This function removes all periods which have no registered data values. Reducing the number of periods will improve system performance.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="resourceTables">
+ <title>Resource tables</title>
+ <para>Resource tables are supporting tables that are used during analysis of data. One would typically join the contents of these tables with the data value table when doing queries from third-party applications like Microsoft Excel. Simply select the tables that should be regenerated and press &quot;Generate tables&quot;. Regeneration of the resource tables should only be done once all data integrity issues are resolved. </para>
+ <itemizedlist>
+ <listitem>
+ <para>Organisation unit structure (orgunitstructure)</para>
+ <para>This table should be regenerated any time there have been any changes made to the organisational unit hierarchy. This table provides information about the organisation unit hierarchy. It has one row for each organisation unit, one column for each organisation unit level and the organisation unit identifiers for all parents in the lineage as values.</para>
+ </listitem>
+ <listitem>
+ <para>Exclusive organisation unit groupset structure normalized (orgunitgroupsetstructure)</para>
+ <para>This table provides information about the which organisation units are member of which organisation unit group sets.</para>
+ </listitem>
+ <listitem>
+ <para>Data element group set structure (_dataelementgroupsetstructure)</para>
+ <para>This table provides information about which data elements are members of which data element group sets. The table has one row for each data element, one column for each data element group set and the names of the data element group as values.</para>
+ </listitem>
+ <listitem>
+ <para>Indicator group set structure (_indicatorgroupsetstructure)</para>
+ <para>This table provides information about which indicators are members of which indicator group sets. The table has one row for each indicator, one column for each indicator group set and the names of the indicator group as values.</para>
+ </listitem>
+ <listitem>
+ <para>Organisation unit group set structure (_organisationunitgroupsetstructure)</para>
+ <para>This table provides information about which organisation units are members of which organisation unit group sets. The table has one row for each organisation unit, one column for each organisation unit group set and the names of the organisation unit groups as values.</para>
+ </listitem>
+ <listitem>
+ <para>Category structure (_categorystructure)</para>
+ <para>This table provides information about which data elements are members of which categories. The table has one row for each data element, one column for each category and the names of the category options as values.</para>
+ </listitem>
+ <listitem>
+ <para>Data element category option combo name (categoryoptioncomboname)</para>
+ <para>This table should be regenerated any time there have been changes made to the category combination names. It contains readable names for the various combinations of categories.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="organisationUnitMerge">
+ <title>Organisation unit merge</title>
+ <para>This function is useful when two organisation units need to be merged, eg. it is decided that one facility will be shut down and its services will be provided by a nearby facility.</para>
+ <para>Start by selecting the organisation unit to eliminate from the tree and click <emphasis role="italic">confirm</emphasis>. Then select the organisation unit to keep and click <emphasis role="italic">confirm</emphasis> again. Finally, verify the selection and click <emphasis role="italic">merge</emphasis>. </para>
+ <para>In the sitation where data exist for the organisation unit to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both organisation units, the data will be summarized and moved to the one to keep. When data exists only for the one to keep, no action is taken. The organisation unit to eliminate will eventually be deleted.</para>
+ </section>
+ <section id="duplicateDataElimination">
+ <title>Duplicate data elimination</title>
+ <para>This function is useful when data has been entered mistakenly for two data elements which represents the same phenomena.</para>
+ <para>Start by selecting the data element to eliminate from the list and click confirm. Then select the data element to keep and click confirm again. Finally, verify the selection and click merge.</para>
+ <para>In the situation where data exists for the data element to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both data elements, the data which was updated last will be used. When data exists only for the one to keep, no action will be taken. The data element to eliminate will eventually be deleted, except when it is a multidimensional data element and has other data registered.</para>
+ </section>
+ <section id="dataStatistics">
+ <title>Data statistics</title>
+ <para>The data statistics module provides an overview of the number of objects stored in the DHIS2 database. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The total number of each type of object is presented in a table, as well as a graph. </para>
+ </section>
+ <section id="dataLocking">
+ <title>Data locking</title>
+ <para>This module gives users the privilege of locking certain datasets for chosen organisation units. This encourages timely data entry and prevents unwanted to changes to the data once it has been entered. When the ‘Data Administration’ option is chosen the data locking interface is displayed. The user has to select the periodicity of the report e.g. monthly, quarterly or
+ yearly for which the data is to be locked. The month, quarter or year for which the reports are to be locked is then specified. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The unlocked data sets for the period are displayed and the user will then have to choose the data sets to be locked.
+ </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>After choosing the datasets to be locked, double click on each one by one to display the organisation unit tree in the field below. Click on the organisation unit to lock the dataset.
+ </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select3.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The <guibutton>Apply Locks on All</guibutton> button locks the dataset for all the organisation units to which that dataset has been assigned. <guibutton>‘Remove locks on All’</guibutton> removes all locks put on the organisation units corresponding to the selected dataset. After the operations are completed the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Lock at level’</guibutton> button locks datasets at a particular level that the user chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks that have been put on the organisation units corresponding to the selected dataset at the selected level. After the operations are completed, the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Save’</guibutton> button will also lock those organisation unit datasets that have been specified by the user.
+ </para>
+ </section>
+ <section id="zeroValueStorage">
+ <title>Zero value storage</title>
+ <para>The zero value storage function makes it possible to define for which data elements the system should store zero values. In most cases zeros are significant only for a subset of the data elements in the database. Zero values will be ignored during data entry for selected data elements.</para>
+ </section>
+ <section id="cacheStatistics">
+ <title>Cache Statistics </title>
+ <para>This option is for system administrators only to use. The cache statistics shows the status of the application level cache. The application level cache refers to the objects and query results that the application is caching in order to speed up performance. If the database has been modified directly the application cache needs to be cleared for it to take effect.</para>
+ </section>
+ </chapter>
+</book>
\ No newline at end of file

=== modified file 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
--- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 19:44:51 +0000
@@ -28,7 +28,7 @@
</xsl:template>

<xsl:template match="/">
- <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
+ <xsl:apply-templates select="book/chapter/section[@id=$sectionId]"/>
</xsl:template>

</xsl:stylesheet>

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 18:58:09 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 19:44:51 +0000
@@ -18,6 +18,7 @@
padding-right: 15px;
padding-top: 9px;
padding-bottom: 9px;
+ overflow: auto;
}

#hideRightBar

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
Binary files dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2009-04-20 14:54:22 +0000 and dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2010-02-23 19:44:51 +0000 differ
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2009-11-02 18:13:58 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2010-02-23 19:44:51 +0000
@@ -91,7 +91,7 @@
#end

#macro( openHelp $id )
-<a href="javascript:openHelpForm('${id}')" title="$i18n.getString( 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
+<a href="javascript:getHelpContent('${id}')" title="$i18n.getString( 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
#end

#macro( introListItem $action $objectKey )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2009-10-28 12:38:33 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "data_browser" )</h3>
+<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser" )</h3>

<form method="get" action="searchResult.action" onsubmit="return validate()">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-01 15:30:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-23 19:44:51 +0000
@@ -6,7 +6,7 @@

#end

-<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
+<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp( "dataIntegrity" )</h3>

#parse( "dhis-web-commons/loader/loader.vm" )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-04 12:29:22 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
+<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp( "duplicateDataElimination" )</h3>

<div>
<label>$i18n.getString( "filter" ):</label><br>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2009-12-29 07:14:28 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2010-02-23 19:44:51 +0000
@@ -1,4 +1,4 @@
-<h3>$i18n.getString( "data_locking_form" )</h3>
+<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking" )</h3>

<span id="message"></span>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2009-12-17 09:22:20 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "maintenance" )</h3>
+<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>

<p>
<input type="checkbox" id="hierarchyHistory">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-01-25 11:54:22 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "organisation_unit_merge" )</h3>
+<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp( "organisationUnitMerge" )</h3>

<div id="selectionTree" style="width:500px; height:200px"></div>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-01-15 11:32:18 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "resource_table" )</h3>
+<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables" )</h3>

<p>
<input type="checkbox" id="organisationUnit">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2010-02-23 19:44:51 +0000
@@ -9,7 +9,7 @@
}
</style>

-<h3>$i18n.getString( "cache_statistics" )</h3>
+<h3>$i18n.getString( "cache_statistics" ) #openHelp( "cacheStatistics" )</h3>

<p><input type="button" style="width:150px" value="$i18n.getString( 'clear_cache' )" onclick="window.location.href='clearCache.action'"></p>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2009-10-07 18:53:11 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "data_statistics" )</h3>
+<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics" )</h3>

<table>
<tr>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-01-28 09:50:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-02-23 19:44:51 +0000
@@ -1,4 +1,5 @@
-<h3>$i18n.getString( "zero_storage_management" )</h3>
+
+<h3>$i18n.getString( "zero_storage_management" ) #openHelp( "zeroValueStorage" )</h3>
<br>
<form id="ZeroDataValueManagement" method="POST" action="updateZeroIsSignificantForDataElements.action">
<table>

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

A very nasty XSL perhaps? :slight_smile:

Good stuff, and even more reason to continue to document....

···

On Tue, Feb 23, 2010 at 10:36 PM, Bob Jolliffe <bobjolliffe@gmail.com> wrote:

Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
see the transformer getting some exercise. And a great consequence of
the move to docbook. Its hard to imagine how we could have linked
this up to our original word documentation.

On 23 February 2010 19:47, <noreply@launchpad.net> wrote:

------------------------------------------------------------
revno: 1474
committer: Lars Helge Oeverland <larshelge@gmail.com>
branch nick: trunk
timestamp: Tue 2010-02-23 20:44:51 +0100
message:
Work in progress on embedded help function. Finished data-web-maintenance-dataadmin module.
modified:
dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
dhis-2/dhis-options/src/main/resources/help_content.xml
dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm

--
lp:dhis2
trunk : Code : DHIS

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.

=== modified file 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
--- dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 19:44:51 +0000
@@ -48,11 +48,9 @@
{
try
{
- TransformerFactory factory = TransformerFactory.newInstance();
-
Source stylesheet = new StreamSource( new ClassPathResource( "help_stylesheet.xsl" ).getInputStream() );

- Transformer transformer = factory.newTransformer( stylesheet );
+ Transformer transformer = TransformerFactory.newInstance().newTransformer( stylesheet );

        transformer\.setParameter\( &quot;sectionId&quot;, id \);

=== modified file 'dhis-2/dhis-options/src/main/resources/help_content.xml'
--- dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 19:44:51 +0000
@@ -1,40 +1,276 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<chapter>
- <title>Data Quality</title>
- <para>The data quality module provides means to improve the quality of the data in the system. This can be done through validation rules and various statistical checks.</para>
- <section id="learningObjectives">
- <title>Learning Objectives</title>
- <para>After reading this module you will be able to understand:</para>
- <orderedlist>
- <listitem>
- <para>What is data quality and its importance for HMIS.</para>
- </listitem>
- <listitem>
- <para>How to do data quality check at point of data entry.</para>
- </listitem>
- <listitem>
- <para>How to create data validation rules.</para>
- </listitem>
- <listitem>
- <para>How to carry out data triangulation.</para>
- </listitem>
- <listitem>
- <para>How to analyze data status.</para>
- </listitem>
- </orderedlist>
- <para>This stuff is in a paragraph</para>
- </section>
- <section id="overview">
- <title>Overview of data quality check</title>
- <para>Ensuring data quality is a key concern in building an effective HMIS. Data quality has different dimensions including:</para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Correctness:</emphasis> Data should be within the normal range for data collected at that facility. There should be no gross discrepancies when compared with data from related data elements.</para>
- </listitem>
- <listitem>
- <para><emphasis>Completeness:</emphasis> Data for all data elements for all health facilities/blocks/Taluka/districts should have been submitted.</para>
- </listitem>
- </itemizedlist>
- <para>This stuff is in a paragraph</para>
- </section>
-</chapter>
+<?xml version='1.0' encoding='UTF-8'?>
+<?xml-stylesheet type="text/xsl" href="find.xsl"?>
+<book>
+ <chapter>
+ <title>Data Administration in DHIS 2</title>
+ <para>The data administration module provides a range of functions to ensure that the data stored in the DHIS2 database is integral and that the database performance is optimised. These functions should be executed on a regular basis by a data administrator to ensure that the quality of the data stored is optimal. </para>
+ <section id="dataBrowser">
+ <title>Data browser</title>
+ <para>The data browser maintenance module allows the user to produce a summary of the data contained in the DHIS2 database. This summary provides the number of data element values that have been recorded for a given time interval and then grouped by the following options:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Data sets</para>
+ </listitem>
+ <listitem>
+ <para>Data element groups</para>
+ </listitem>
+ <listitem>
+ <para>Organisational unit groups</para>
+ </listitem>
+ <listitem>
+ <para>Organisational units</para>
+ </listitem>
+ </itemizedlist>
+ <para>Each of these options can be accessed by selecting the desired option from <guilabel>&quot;Browse by&quot; </guilabel>drop-down menu. </para>
+ <para>In order to produce a summary of submitted data for a given period and grouped by data sets, the user should follow this procedure. Begin by selecting a given periodicity type (e.g. Weekly, monthly, yearly, etc) and then a time interval (e.g. January 2009 to March 2009). Select the type of summary to be produced (e.g. Dataset) from the &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot; button to view the summary. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="70%" align="center" fileref="resources/images/maintainence/data_browser1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>A summary of the number of data element values that have been submitted over the user selected time period is shown below. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browsing_data_sets.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para> By clicking on the name of the individual dataset, a more detailed summary of each data element can be obtained as shown below. A cross-tab table summarising each time period will be shown. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browser_dataset_detail.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The functionality of the grouping by Datasets, Data element groups, and Organisational groups is essentially the same. </para>
+ <para>The functionality of grouping by organisation units will be discussed below. Begin by selecting &quot;Organisation units&quot; from the &quot;Browse by&quot; drop-down menu. The organisational hierarchy present in the database will now be displayed. Organisational units can be expanded by clicking on the plus symbol in the organisational tree view.</para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_org_unit1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para> By clicking on an organisational unit, and the clicking the &quot;Browse&quot; button, a summary of submitted data elements present in the database is returned for all immediate children of the selected organisational as shown below</para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2a.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>By clicking on one of the organisational units, a detailed list of data elements is presented by each time period as shown below. <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot></para>
+ <para>For each of the data browser summaries, a PDF export can be produced by specifying a filename in the &quot;Filename&quot; field, selecting a font size, a page layout (Landscape or Portrait) and pressing the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will then be prompted to select a location to save the file to, which can then be viewed with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
+ </section>
+ <section id="dataIntegrity">
+ <title>Data integrity</title>
+ <para>DHIS2 can perform a wide range of data integrity checks on the data contained in the database. Identifying and correcting data integrity issues is extremely important for ensuring that the data used for analysis purposes is valid. Each of the data integrity checks that are performed by the system will be described, along with general procedures that can be performed to resolve these issues. </para>
+ <section>
+ <title>Data elements without data set</title>
+ <para>Each data element must be assigned to a data set. Values for data elements will not be able to be entered into the system if a data element is not assigned to a data set. Choose Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the &quot;orphaned&quot; data element to the appropriate data set. </para>
+ </section>
+ <section>
+ <title>Data elements without groups</title>
+ <para>Some Data Elements have been allocated to several Data Element Groups. This is currently not allowed, because it will result in duplication of linked data records in the PivotSource recordsets that `feed` the pivot tables. Go to Maintenance -&gt; Data Element Groups to review each Data Element identified and remove the incorrect Group allocations.</para>
+ </section>
+ <section>
+ <title>Data elements assigned to data sets with different period types</title>
+ <para>Data Elements should not be assigned to two separate data sets whose period types differ. The recommended approach would be to create two separate data elements (for instance a monthly and yearly data element) and assign these to respective datasets. </para>
+ </section>
+ <section>
+ <title>Data sets not assigned to organisation units</title>
+ <para>All data sets should be assigned to at least one organisation unit. </para>
+ </section>
+ <section>
+ <title>Indicators with identical formulas</title>
+ <para>Although this rule will not affect data quality, it generally does not make sense to have two indicators with the exact same definition. Review the identified indicators and their formulas and delete or modify any indicator that appears to be the duplicate.</para>
+ </section>
+ <section>
+ <title>Indicators without groups</title>
+ <para>All Data Elements and Indicators must be assigned to at least one group, so these Indicators need to be allocated to their correct Data Element and Indicator Group. Go to Maintenance -&gt; Indicator Groups, and allocate each of the `Orphaned` Indicators to its correct group.</para>
+ </section>
+ <section>
+ <title>Invalid indicator numerators</title>
+ <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the numerator definition. </para>
+ </section>
+ <section>
+ <title>Invalid indicator denominators</title>
+ <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the denominator definition. </para>
+ </section>
+ <section>
+ <title> Organisation units with cyclic references</title>
+ <para>Organisation units cannot be both parent and children of each other, directly nor indirectly.</para>
+ </section>
+ <section>
+ <title>Orphaned organisation units</title>
+ <para>All organisation units must exist within the organisation unit hierarchy. Go to Organisation-&gt;Hierarchy Operations and move the offending organisation unit into the proper position in the hierarchy. </para>
+ </section>
+ <section>
+ <title>Organisation units without groups</title>
+ <para>All organisation units <emphasis>must</emphasis> be allocated to at least <emphasis>one</emphasis> group. The problem might either be that you have not defined any `compulsory` OrgUnit Group Set at all, or that there are violations of the `compulsory` rule for some OrgUnits . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then you must first define them by going to Maintenance -&gt; Organisation units-&gt;Organisation unit group sets and define at least one `compulsory` Group Set (the group set `OrgUnitType` are nearly universally relevant). If you have the relevant group sets, go to Maintenance -&gt; OrgUnit Groups to review each OrgUnit identified and add the relevant Group allocation.</para>
+ </section>
+ <section>
+ <title>Organisation units violating compulsory group sets</title>
+ <para>These organisation units have not been assigned to the any organisation unit group within one of the <emphasis>compulsory</emphasis> organisation unit group sets. When a group set is defined as `compulsory`, it means that an organisation unit must be allocated to at least one organisation unit group within that group set. For instance, all organisation units must belong to one of the groups in the `organisation unitType` group set. It might belong to the `Hospital` or the `Clinic` or any other `type` group - but it must belong to exactly one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Allocate all organisation units to exactly one group. </para>
+ </section>
+ <section>
+ <title>Organisation units violating exclusive group sets</title>
+ <para>Some organisation units have been allocated to several organisation unit groups that are members of the same exclusive organisation unit group set. When a group set is defined as exclusive, it means that an organisation unit can <emphasis>only</emphasis> be allocated to <emphasis>one</emphasis> organisation unit group within that Group Set. For instance, one organisation unit cannot normally belong to the both the &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to only to one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Remove the organisation unit from all groups except the one that it should be allocated to. </para>
+ </section>
+ <section>
+ <title> Organisation unit groups without group sets</title>
+ <para>The organisation unit groups listed here have not been allocated to a group set. Go to Maintenance-&gt;Organisation unit-&gt;Organisation unit group sets and allocate the Organisation unit group to the appropriate group set. </para>
+ </section>
+ <section>
+ <title>Validation rules without groups</title>
+ <para>All validation rules must be assigned to a group. Go to <command>Services-&gt;Data quality-&gt;Validation rule group</command> and assign the offending validation rule to a group. </para>
+ </section>
+ <section>
+ <title>Invalid validation rule left side expressions</title>
+ <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit left side&quot; and make the corrections that are required. </para>
+ </section>
+ <section>
+ <title>Invalid validation rule right side expressions</title>
+ <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit right side&quot; and make the corrections that are required.</para>
+ </section>
+ </section>
+ <section id="maintenance">
+ <title>Maintenance</title>
+ <para>The data maintenance module has five options, each described below. </para>
+ <itemizedlist>
+ <listitem>
+ <para>Clear hierarchy history</para>
+ <para>DHIS 2 maintains an audit trail of changes to the organisation unit hierarchy for aggregation purposes. This function clears the hierarchy history.</para>
+ </listitem>
+ <listitem>
+ <para>Clear data mart (aggregated datavalues)</para>
+ <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated data element values.</para>
+ </listitem>
+ <listitem>
+ <para>Clear data mart (aggregated indicatorvalues)</para>
+ <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated indicator values.</para>
+ </listitem>
+ <listitem>
+ <para>Clear zero values</para>
+ <para>This function removes zero data values from the database. Values registered for data elements with aggregation operator <emphasis role="italic">average</emphasis> is not removed, as such values will be significant when aggregating the data, contrary to values registered for data elements with aggregation operator <emphasis role="italic">sum</emphasis>. Reducing the number of data values will improve system performance.</para>
+ </listitem>
+ <listitem>
+ <para>Clear dataset completeness</para>
+ <para>This function removes aggregated dataset completeness values. This data is produced and used by report tables.</para>
+ </listitem>
+ <listitem>
+ <para>Prune periods</para>
+ <para>This function removes all periods which have no registered data values. Reducing the number of periods will improve system performance.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="resourceTables">
+ <title>Resource tables</title>
+ <para>Resource tables are supporting tables that are used during analysis of data. One would typically join the contents of these tables with the data value table when doing queries from third-party applications like Microsoft Excel. Simply select the tables that should be regenerated and press &quot;Generate tables&quot;. Regeneration of the resource tables should only be done once all data integrity issues are resolved. </para>
+ <itemizedlist>
+ <listitem>
+ <para>Organisation unit structure (orgunitstructure)</para>
+ <para>This table should be regenerated any time there have been any changes made to the organisational unit hierarchy. This table provides information about the organisation unit hierarchy. It has one row for each organisation unit, one column for each organisation unit level and the organisation unit identifiers for all parents in the lineage as values.</para>
+ </listitem>
+ <listitem>
+ <para>Exclusive organisation unit groupset structure normalized (orgunitgroupsetstructure)</para>
+ <para>This table provides information about the which organisation units are member of which organisation unit group sets.</para>
+ </listitem>
+ <listitem>
+ <para>Data element group set structure (_dataelementgroupsetstructure)</para>
+ <para>This table provides information about which data elements are members of which data element group sets. The table has one row for each data element, one column for each data element group set and the names of the data element group as values.</para>
+ </listitem>
+ <listitem>
+ <para>Indicator group set structure (_indicatorgroupsetstructure)</para>
+ <para>This table provides information about which indicators are members of which indicator group sets. The table has one row for each indicator, one column for each indicator group set and the names of the indicator group as values.</para>
+ </listitem>
+ <listitem>
+ <para>Organisation unit group set structure (_organisationunitgroupsetstructure)</para>
+ <para>This table provides information about which organisation units are members of which organisation unit group sets. The table has one row for each organisation unit, one column for each organisation unit group set and the names of the organisation unit groups as values.</para>
+ </listitem>
+ <listitem>
+ <para>Category structure (_categorystructure)</para>
+ <para>This table provides information about which data elements are members of which categories. The table has one row for each data element, one column for each category and the names of the category options as values.</para>
+ </listitem>
+ <listitem>
+ <para>Data element category option combo name (categoryoptioncomboname)</para>
+ <para>This table should be regenerated any time there have been changes made to the category combination names. It contains readable names for the various combinations of categories.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="organisationUnitMerge">
+ <title>Organisation unit merge</title>
+ <para>This function is useful when two organisation units need to be merged, eg. it is decided that one facility will be shut down and its services will be provided by a nearby facility.</para>
+ <para>Start by selecting the organisation unit to eliminate from the tree and click <emphasis role="italic">confirm</emphasis>. Then select the organisation unit to keep and click <emphasis role="italic">confirm</emphasis> again. Finally, verify the selection and click <emphasis role="italic">merge</emphasis>. </para>
+ <para>In the sitation where data exist for the organisation unit to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both organisation units, the data will be summarized and moved to the one to keep. When data exists only for the one to keep, no action is taken. The organisation unit to eliminate will eventually be deleted.</para>
+ </section>
+ <section id="duplicateDataElimination">
+ <title>Duplicate data elimination</title>
+ <para>This function is useful when data has been entered mistakenly for two data elements which represents the same phenomena.</para>
+ <para>Start by selecting the data element to eliminate from the list and click confirm. Then select the data element to keep and click confirm again. Finally, verify the selection and click merge.</para>
+ <para>In the situation where data exists for the data element to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both data elements, the data which was updated last will be used. When data exists only for the one to keep, no action will be taken. The data element to eliminate will eventually be deleted, except when it is a multidimensional data element and has other data registered.</para>
+ </section>
+ <section id="dataStatistics">
+ <title>Data statistics</title>
+ <para>The data statistics module provides an overview of the number of objects stored in the DHIS2 database. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The total number of each type of object is presented in a table, as well as a graph. </para>
+ </section>
+ <section id="dataLocking">
+ <title>Data locking</title>
+ <para>This module gives users the privilege of locking certain datasets for chosen organisation units. This encourages timely data entry and prevents unwanted to changes to the data once it has been entered. When the ‘Data Administration’ option is chosen the data locking interface is displayed. The user has to select the periodicity of the report e.g. monthly, quarterly or
+ yearly for which the data is to be locked. The month, quarter or year for which the reports are to be locked is then specified. </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The unlocked data sets for the period are displayed and the user will then have to choose the data sets to be locked.
+ </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>After choosing the datasets to be locked, double click on each one by one to display the organisation unit tree in the field below. Click on the organisation unit to lock the dataset.
+ </para>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select3.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The <guibutton>Apply Locks on All</guibutton> button locks the dataset for all the organisation units to which that dataset has been assigned. <guibutton>‘Remove locks on All’</guibutton> removes all locks put on the organisation units corresponding to the selected dataset. After the operations are completed the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Lock at level’</guibutton> button locks datasets at a particular level that the user chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks that have been put on the organisation units corresponding to the selected dataset at the selected level. After the operations are completed, the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Save’</guibutton> button will also lock those organisation unit datasets that have been specified by the user.
+ </para>
+ </section>
+ <section id="zeroValueStorage">
+ <title>Zero value storage</title>
+ <para>The zero value storage function makes it possible to define for which data elements the system should store zero values. In most cases zeros are significant only for a subset of the data elements in the database. Zero values will be ignored during data entry for selected data elements.</para>
+ </section>
+ <section id="cacheStatistics">
+ <title>Cache Statistics </title>
+ <para>This option is for system administrators only to use. The cache statistics shows the status of the application level cache. The application level cache refers to the objects and query results that the application is caching in order to speed up performance. If the database has been modified directly the application cache needs to be cleared for it to take effect.</para>
+ </section>
+ </chapter>
+</book>
\ No newline at end of file

=== modified file 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
--- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 17:10:02 +0000
+++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 19:44:51 +0000
@@ -28,7 +28,7 @@
</xsl:template>

<xsl:template match="/">
- <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
+ <xsl:apply-templates select="book/chapter/section[@id=$sectionId]"/>
</xsl:template>

</xsl:stylesheet>

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 18:58:09 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 19:44:51 +0000
@@ -18,6 +18,7 @@
padding-right: 15px;
padding-top: 9px;
padding-bottom: 9px;
+ overflow: auto;
}

#hideRightBar

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
Binary files dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2009-04-20 14:54:22 +0000 and dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2010-02-23 19:44:51 +0000 differ
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2009-11-02 18:13:58 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2010-02-23 19:44:51 +0000
@@ -91,7 +91,7 @@
#end

#macro( openHelp $id )
-<a href="javascript:openHelpForm('${id}')" title="$i18n.getString( 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
+<a href="javascript:getHelpContent('${id}')" title="$i18n.getString( 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
#end

#macro( introListItem $action $objectKey )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2009-10-28 12:38:33 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "data_browser" )</h3>
+<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser" )</h3>

<form method="get" action="searchResult.action" onsubmit="return validate()">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-01 15:30:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-23 19:44:51 +0000
@@ -6,7 +6,7 @@

#end

-<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
+<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp( "dataIntegrity" )</h3>

#parse( "dhis-web-commons/loader/loader.vm" )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-04 12:29:22 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
+<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp( "duplicateDataElimination" )</h3>

<div>
<label>$i18n.getString( "filter" ):</label><br>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2009-12-29 07:14:28 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2010-02-23 19:44:51 +0000
@@ -1,4 +1,4 @@
-<h3>$i18n.getString( "data_locking_form" )</h3>
+<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking" )</h3>

<span id="message"></span>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2009-12-17 09:22:20 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "maintenance" )</h3>
+<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>

<p>
<input type="checkbox" id="hierarchyHistory">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-01-25 11:54:22 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "organisation_unit_merge" )</h3>
+<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp( "organisationUnitMerge" )</h3>

<div id="selectionTree" style="width:500px; height:200px"></div>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-01-15 11:32:18 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "resource_table" )</h3>
+<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables" )</h3>

<p>
<input type="checkbox" id="organisationUnit">

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2010-02-23 19:44:51 +0000
@@ -9,7 +9,7 @@
}
</style>

-<h3>$i18n.getString( "cache_statistics" )</h3>
+<h3>$i18n.getString( "cache_statistics" ) #openHelp( "cacheStatistics" )</h3>

<p><input type="button" style="width:150px" value="$i18n.getString( 'clear_cache' )" onclick="window.location.href='clearCache.action'"></p>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2009-10-07 18:53:11 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2010-02-23 19:44:51 +0000
@@ -1,5 +1,5 @@

-<h3>$i18n.getString( "data_statistics" )</h3>
+<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics" )</h3>

<table>
<tr>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-01-28 09:50:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-02-23 19:44:51 +0000
@@ -1,4 +1,5 @@
-<h3>$i18n.getString( "zero_storage_management" )</h3>
+
+<h3>$i18n.getString( "zero_storage_management" ) #openHelp( "zeroValueStorage" )</h3>
<br>
<form id="ZeroDataValueManagement" method="POST" action="updateZeroIsSignificantForDataElements.action">
<table>

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

Just gave it a spin. Lars that’s just too cool for words :slight_smile: Nice to

see the transformer getting some exercise. And a great consequence of

the move to docbook. Its hard to imagine how we could have linked

this up to our original word documentation.

Happy you liked it… Also starting to like xslt, consider me a member of the club:-)

···

On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe bobjolliffe@gmail.com wrote:

On 23 February 2010 19:47, noreply@launchpad.net wrote:


revno: 1474

committer: Lars Helge Oeverland larshelge@gmail.com

branch nick: trunk

timestamp: Tue 2010-02-23 20:44:51 +0100

message:

Work in progress on embedded help function. Finished data-web-maintenance-dataadmin module.

modified:

dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

dhis-2/dhis-options/src/main/resources/help_content.xml

dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm

lp:dhis2

https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.

To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription.

=== modified file ‘dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java’

— dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java 2010-02-23 19:44:51 +0000

@@ -48,11 +48,9 @@

{
    try
    {
  •        TransformerFactory factory = TransformerFactory.newInstance();
    
        Source stylesheet = new StreamSource( new ClassPathResource( "help_stylesheet.xsl" ).getInputStream() );
  •        Transformer transformer = factory.newTransformer( stylesheet );
    
  •        Transformer transformer = TransformerFactory.newInstance().newTransformer( stylesheet );
    
        transformer.setParameter( "sectionId", id );

=== modified file ‘dhis-2/dhis-options/src/main/resources/help_content.xml’

— dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_content.xml 2010-02-23 19:44:51 +0000

@@ -1,40 +1,276 @@

-<?xml version='1.0' encoding='UTF-8'?>

-

  • Data Quality
  • The data quality module provides means to improve the quality of the data in the system. This can be done through validation rules and various statistical checks.
  • Learning Objectives
  • After reading this module you will be able to understand:
  •  <orderedlist>
    
  •    <listitem>
    
  •      <para>What is data quality and its importance for HMIS.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to do data quality check at point of data entry.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to create data validation rules.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to carry out data triangulation.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to analyze data status.</para>
    
  •    </listitem>
    
  •  </orderedlist>
    
  •   <para>This stuff is in a paragraph</para>
    
  • Overview of data quality check
  • Ensuring data quality is a key concern in building an effective HMIS. Data quality has different dimensions including:
  •  <itemizedlist>
    
  •    <listitem>
    
  •      <para><emphasis>Correctness:</emphasis> Data should be within the normal range for data collected at that facility. There should be no gross discrepancies when compared with data from related data elements.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para><emphasis>Completeness:</emphasis> Data for all data elements for all health facilities/blocks/Taluka/districts should have been submitted.</para>
    
  •    </listitem>
    
  •  </itemizedlist>
    
  •   <para>This stuff is in a paragraph</para>
    

-

+<?xml version='1.0' encoding='UTF-8'?>

+<?xml-stylesheet type="text/xsl" href="find.xsl"?>

+

  • Data Administration in DHIS 2
  •  <para>The data administration module provides a range of functions to ensure that the data stored in the DHIS2 database is integral and that the database performance is optimised. These functions should be executed on a regular basis by a data administrator to ensure that the quality of the data stored is optimal. </para>
    
  •  <section id="dataBrowser">
    
  •    <title>Data browser</title>
    
  •    <para>The data browser maintenance module allows the user to produce a summary of the data contained in the DHIS2 database. This summary provides the number of data element values that have been recorded for a given time interval and then grouped by the following options:</para>
    
  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Data sets</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational unit groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational units</para>
    
  •      </listitem>
    
  •    </itemizedlist>
    
  •    <para>Each of these options can be accessed by selecting the desired option from  <guilabel>&quot;Browse by&quot; </guilabel>drop-down menu. </para>
    
  •    <para>In order to produce a summary of submitted data for a given period and grouped by data sets, the user should follow this procedure. Begin by selecting a given periodicity type (e.g. Weekly, monthly, yearly, etc) and then a time interval (e.g. January 2009 to March 2009). Select the type of summary to be produced (e.g. Dataset) from the &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot; button to view the summary. </para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="70%" align="center" fileref="resources/images/maintainence/data_browser1.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>A summary of the number  of data element values that have been submitted over the user selected time period is shown below. </para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browsing_data_sets.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on the name of the individual dataset, a more detailed summary of each data element can be obtained as shown below.  A cross-tab table summarising each time period will be shown. </para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_browser_dataset_detail.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The functionality of the grouping by Datasets, Data element groups, and Organisational groups is essentially the same. </para>
    
  •    <para>The functionality of grouping by organisation units will be discussed below. Begin by selecting &quot;Organisation units&quot; from the &quot;Browse by&quot; drop-down menu. The organisational hierarchy present in the database will now be displayed. Organisational units can be expanded by clicking on the plus symbol in the organisational tree view.</para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_org_unit1.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on an organisational unit, and the clicking the &quot;Browse&quot; button, a summary of submitted data elements present in the database is returned for all immediate children of the selected organisational as shown below</para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2a.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>By clicking on one of the organisational units, a detailed list of data elements is presented by each time period as shown below. <screenshot>
    
  •        <mediaobject>
    
  •          <imageobject>
    
  •            <imagedata width="60%" align="center" fileref="resources/images/maintainence/data_browser_orgunit2.png" format="PNG"/>
    
  •          </imageobject>
    
  •        </mediaobject>
    
  •      </screenshot></para>
    
  •    <para>For each of the data browser summaries, a PDF export can be produced by specifying a filename in the &quot;Filename&quot; field, selecting a font size, a page layout (Landscape or Portrait) and pressing  the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will then be prompted to select a location to save the file to, which can then be viewed with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
    
  •  </section>
    
  •  <section id="dataIntegrity">
    
  •    <title>Data integrity</title>
    
  •    <para>DHIS2 can perform a wide range of data integrity checks on the data contained in the database. Identifying and correcting data integrity issues is extremely important for ensuring that the data used for analysis purposes is valid. Each of the data integrity checks that are performed by the system will be described, along with general procedures that can be performed to resolve these issues. </para>
    
  •    <section>
    
  •      <title>Data elements without data set</title>
    
  •      <para>Each data element must be assigned to a data set. Values for data elements will not be able to be entered into the system if a data element is not assigned to a data set. Choose Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the &quot;orphaned&quot; data element to the appropriate data set. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Data elements without groups</title>
    
  •      <para>Some Data Elements have been allocated to several Data Element Groups. This is currently not allowed, because it will result in duplication of linked data records in the PivotSource recordsets that `feed` the pivot tables. Go to Maintenance -&gt; Data Element Groups to review each Data Element identified and remove the incorrect Group allocations.</para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Data elements assigned to data sets with different period types</title>
    
  •      <para>Data Elements should not be assigned to two separate data sets whose period types differ. The recommended approach would be to create two separate data elements (for instance a monthly and yearly data element) and assign these to respective datasets. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Data sets not assigned to organisation units</title>
    
  •      <para>All data sets should be assigned to at least one organisation unit. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Indicators with identical formulas</title>
    
  •      <para>Although this rule will not affect data quality, it generally does not make sense to have two indicators with the exact same definition. Review the identified indicators and their formulas and delete or modify  any indicator that appears to be the duplicate.</para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Indicators without groups</title>
    
  •      <para>All Data Elements and Indicators must be assigned to at least one group, so these Indicators need to be allocated to their correct Data Element and Indicator Group. Go to Maintenance -&gt; Indicator Groups, and allocate each of the `Orphaned` Indicators to its correct group.</para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator numerators</title>
    
  •      <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the numerator definition. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator denominators</title>
    
  •      <para>Violations of this rule may be caused by an incorrect reference to a deleted or modified data element. Review the indicator and make corrections to the denominator definition. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title> Organisation units with cyclic references</title>
    
  •      <para>Organisation units cannot be both parent and children of each other, directly nor indirectly.</para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Orphaned organisation units</title>
    
  •      <para>All organisation units must exist within the organisation unit hierarchy. Go to Organisation-&gt;Hierarchy Operations and move the offending organisation unit into the proper position in the hierarchy. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Organisation units without groups</title>
    
  •      <para>All organisation units <emphasis>must</emphasis> be allocated to at least <emphasis>one</emphasis> group. The problem might either be that you have not defined any `compulsory` OrgUnit Group Set at all, or that there are violations of the `compulsory` rule for some OrgUnits . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then you must first define them by going to  Maintenance -&gt; Organisation units-&gt;Organisation unit group sets and define at least one `compulsory` Group Set (the group set `OrgUnitType` are nearly universally relevant). If you have the relevant group sets, go to Maintenance -&gt; OrgUnit Groups to review each OrgUnit identified and add the relevant Group allocation.</para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating compulsory group sets</title>
    
  •      <para>These organisation units have not been assigned to the any organisation unit group within one of the  <emphasis>compulsory</emphasis> organisation unit group sets. When a group set is defined as `compulsory`, it means that an organisation unit must be allocated to at least one organisation unit group within that group set. For instance, all organisation units must belong to one of the groups in the `organisation unitType` group set. It might belong to  the `Hospital` or the `Clinic` or any other `type` group - but it must belong to exactly one of them.  Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Allocate all organisation units to exactly one group. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating exclusive group sets</title>
    
  •      <para>Some organisation units have been allocated to several organisation unit groups that are members of the same exclusive organisation unit group set. When a group set is defined as exclusive, it means that an organisation unit can <emphasis>only</emphasis> be allocated to <emphasis>one</emphasis> organisation unit group within that Group Set. For instance, one organisation unit cannot normally belong to the both the &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to only to one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit groups to review each organisation unit identified in the integrity check. Remove the organisation unit from all groups except the one that it should be allocated to. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title> Organisation unit groups without group sets</title>
    
  •      <para>The organisation unit groups listed here have not been allocated to a group set. Go to Maintenance-&gt;Organisation unit-&gt;Organisation unit group sets and allocate the Organisation unit group to the appropriate group set. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Validation rules without groups</title>
    
  •      <para>All validation rules must be assigned to a group. Go to <command>Services-&gt;Data quality-&gt;Validation rule group</command> and assign the offending validation rule to a group. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule left side expressions</title>
    
  •      <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit left side&quot; and make the corrections that are required. </para>
    
  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule right side expressions</title>
    
  •      <para>An error exists in the left-side validation rule definition. Go to <command>Services-&gt;Data quality-&gt;Validation rule</command> and click the &quot;Edit&quot; icon on the offending rule. Press &quot;Edit right side&quot; and make the corrections that are required.</para>
    
  •    </section>
    
  •  </section>
    
  •  <section id="maintenance">
    
  •    <title>Maintenance</title>
    
  •    <para>The data maintenance module has five options, each described below. </para>
    
  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Clear hierarchy history</para>
    
  •        <para>DHIS 2 maintains an audit trail of changes to the organisation unit hierarchy for aggregation purposes. This function clears the hierarchy history.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated datavalues)</para>
    
  •        <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated data element values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated indicatorvalues)</para>
    
  •        <para>The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function clears the database table which contains aggregated indicator  values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear zero values</para>
    
  •        <para>This function removes zero data values from the database. Values registered for data elements with aggregation operator <emphasis role="italic">average</emphasis> is not removed, as such values will be significant when aggregating the data, contrary to values registered for data elements with aggregation operator <emphasis role="italic">sum</emphasis>. Reducing the number of data values will improve system performance.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear dataset completeness</para>
    
  •        <para>This function removes aggregated dataset completeness values. This data is produced and used by report tables.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Prune periods</para>
    
  •        <para>This function removes all periods which have no registered data values. Reducing the number of periods will improve system performance.</para>
    
  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="resourceTables">
    
  •    <title>Resource tables</title>
    
  •    <para>Resource tables are supporting tables that are used during analysis of data. One would typically join the contents of these tables with the data value table when doing queries from third-party applications like Microsoft Excel. Simply select the tables that should be regenerated and press &quot;Generate tables&quot;. Regeneration of the resource tables should only be done once all data integrity issues are resolved. </para>
    
  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Organisation unit structure (orgunitstructure)</para>
    
  •        <para>This table should be regenerated any time there have been any changes made to the organisational unit hierarchy. This table provides information about the organisation unit hierarchy. It has one row for each organisation unit, one  column for each organisation unit level and the organisation unit identifiers for all parents in the lineage as values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Exclusive organisation unit groupset structure normalized (orgunitgroupsetstructure)</para>
    
  •        <para>This table provides information about the which organisation units are member of which organisation unit group sets.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element group set structure (_dataelementgroupsetstructure)</para>
    
  •        <para>This table provides information about which data elements are members of which data element group sets. The table has one row for each data element,  one column for each data element group set and the names of the data element group as values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Indicator group set structure (_indicatorgroupsetstructure)</para>
    
  •        <para>This table provides information about which indicators are members of which indicator group sets. The table has one row for each indicator, one column for each indicator group set and the names of the indicator group as values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisation unit group set structure (_organisationunitgroupsetstructure)</para>
    
  •        <para>This table provides information about which organisation units are members of which organisation unit group sets. The table has one row for each organisation unit, one column for each organisation unit group set and the names of the organisation unit groups as values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Category structure (_categorystructure)</para>
    
  •        <para>This table provides information about which data elements are members of which categories. The table has one row for each data element, one column for each category and the names of the category options as values.</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element category option combo name (categoryoptioncomboname)</para>
    
  •        <para>This table should be regenerated any time there have been changes made to the category combination names. It contains readable names for the various combinations of categories.</para>
    
  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="organisationUnitMerge">
    
  •    <title>Organisation unit merge</title>
    
  •    <para>This function is useful when two organisation units need to be merged, eg. it is decided that one facility will be shut down and its services will be provided by a nearby facility.</para>
    
  •    <para>Start by selecting the organisation unit to eliminate from the tree and click <emphasis role="italic">confirm</emphasis>.  Then select the organisation unit to keep and click <emphasis role="italic">confirm</emphasis> again. Finally, verify the selection and click <emphasis role="italic">merge</emphasis>.  </para>
    
  •    <para>In the sitation where data exist  for the organisation unit to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both organisation units, the data will be summarized and moved to the one to keep. When data exists only for the one to keep, no action is taken. The organisation unit to eliminate will eventually be deleted.</para>
    
  •  </section>
    
  •  <section id="duplicateDataElimination">
    
  •    <title>Duplicate data elimination</title>
    
  •    <para>This function is useful when data has been entered mistakenly for two data elements which represents the same phenomena.</para>
    
  •    <para>Start by selecting the data element to eliminate from the list and click confirm. Then select the data element to keep and click confirm again. Finally, verify the selection and click merge.</para>
    
  •    <para>In the situation where data exists for the data element to eliminate and not for the one to keep, the data will be moved to the one to keep. When data exists for both data elements, the data which was updated last will be used. When data exists only for the one to keep, no action will be taken. The data element to eliminate will eventually be deleted, except when it is a multidimensional data element and has other data registered.</para>
    
  •  </section>
    
  •  <section id="dataStatistics">
    
  •    <title>Data statistics</title>
    
  •    <para>The data statistics module provides an overview of the number of objects stored in the DHIS2 database. </para>
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The total number of each type of object is presented in a table, as well as a graph. </para>
    
  •  </section>
    
  •  <section id="dataLocking">
    
  •    <title>Data locking</title>
    
  •    <para>This module gives users the privilege of locking certain datasets for chosen organisation units. This encourages timely data entry and prevents unwanted to changes to the data once it has been entered. When the ‘Data Administration’ option is chosen the data locking interface is displayed. The user has to select the periodicity of the report e.g. monthly, quarterly or
    
  • yearly for which the data is to be locked. The month, quarter or year for which the reports are to be locked is then specified.
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select1.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The unlocked data sets for the period are displayed and the user will then have to choose the data sets to be locked.
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select2.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>After choosing the datasets to be locked, double click on each one by one to display the organisation unit tree in the field below. Click on the organisation unit to lock the dataset.
    
  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center" fileref="resources/images/maintainence/data_locking_select3.png" format="PNG"/>
    
  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The <guibutton>Apply Locks on All</guibutton> button locks the dataset for all the organisation units to which that dataset has been assigned. <guibutton>‘Remove locks on All’</guibutton> removes all locks put on the organisation units corresponding to the selected dataset. After the operations are completed the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Lock at level’</guibutton> button locks datasets at a particular level that the user chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks that have been put on the organisation units corresponding to the selected dataset at the selected level. After the operations are completed, the user must click <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Save’</guibutton> button will also lock those organisation unit datasets that have been specified by the user.
    
  •  </section>
    
  •  <section id="zeroValueStorage">
    
  •    <title>Zero value storage</title>
    
  •    <para>The zero value storage function makes it possible to define for which data elements the system should store zero values. In most cases zeros are significant only for a subset of the data elements in the database. Zero values will be ignored during data entry for selected data elements.</para>
    
  •  </section>
    
  •  <section id="cacheStatistics">
    
  •    <title>Cache Statistics </title>
    
  •    <para>This option is for system administrators only to use. The cache statistics shows the status of the application level cache. The application level cache refers to the objects and query results that the application is caching in order to speed up performance. If the database has been modified directly the application cache needs to be cleared for it to take effect.</para>
    
  •  </section>
    

+

\ No newline at end of file

=== modified file ‘dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl’

— dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl 2010-02-23 19:44:51 +0000

@@ -28,7 +28,7 @@

</xsl:template>

<xsl:template match=“/”>

  • <xsl:apply-templates select=“chapter/section[@id=$sectionId]”/>
  • <xsl:apply-templates select=“book/chapter/section[@id=$sectionId]”/>

</xsl:template>

</xsl:stylesheet>

=== modified file ‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css’

— dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 18:58:09 +0000

+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css 2010-02-23 19:44:51 +0000

@@ -18,6 +18,7 @@

padding-right: 15px;

padding-top: 9px;

padding-bottom: 9px;

  • overflow: auto;

}

#hideRightBar

=== modified file ‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png’

Binary files dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2009-04-20 14:54:22 +0000 and dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png 2010-02-23 19:44:51 +0000 differ

=== modified file ‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm’

— dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2009-11-02 18:13:58 +0000

+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm 2010-02-23 19:44:51 +0000

@@ -91,7 +91,7 @@

#end

#macro( openHelp $id )

-$i18n.getString( 'help' )

+$i18n.getString( 'help' )

#end

#macro( introListItem $action $objectKey )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2009-10-28 12:38:33 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “data_browser” )

+

$i18n.getString( “data_browser” ) #openHelp( “dataBrowser” )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-01 15:30:27 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm 2010-02-23 19:44:51 +0000

@@ -6,7 +6,7 @@

#end

-

$i18n.getString( “data_integrity_checks_performed” )

+

$i18n.getString( “data_integrity_checks_performed” ) #openHelp( “dataIntegrity” )

#parse( “dhis-web-commons/loader/loader.vm” )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-04 12:29:22 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “duplicate_data_elimination” )

+

$i18n.getString( “duplicate_data_elimination” ) #openHelp( “duplicateDataElimination” )

   <label>$i18n.getString( "filter" ):</label><br>

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2009-12-29 07:14:28 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm 2010-02-23 19:44:51 +0000

@@ -1,4 +1,4 @@

-

$i18n.getString( “data_locking_form” )

+

$i18n.getString( “data_locking_form” ) #openHelp( “dataLocking” )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2009-12-17 09:22:20 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “maintenance” )

+

$i18n.getString( “maintenance” ) #openHelp( “maintenance” )

   <input type="checkbox" id="hierarchyHistory">

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-01-25 11:54:22 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “organisation_unit_merge” )

+

$i18n.getString( “organisation_unit_merge” ) #openHelp( “organisationUnitMerge” )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-01-15 11:32:18 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “resource_table” )

+

$i18n.getString( “resource_table” )#openHelp( “resourceTables” )

<input type="checkbox" id="organisationUnit">

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2009-03-03 16:46:36 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm 2010-02-23 19:44:51 +0000

@@ -9,7 +9,7 @@

   }

-

$i18n.getString( “cache_statistics” )

+

$i18n.getString( “cache_statistics” ) #openHelp( “cacheStatistics” )

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2009-10-07 18:53:11 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm 2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “data_statistics” )

+

$i18n.getString( “data_statistics” ) #openHelp( “dataStatistics” )

   <tr>

=== modified file ‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm’

— dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-01-28 09:50:27 +0000

+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm 2010-02-23 19:44:51 +0000

@@ -1,4 +1,5 @@

-

$i18n.getString( “zero_storage_management” )

+

$i18n.getString( “zero_storage_management” ) #openHelp( “zeroValueStorage” )



Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when
typically my head is clearer. I am just wondering about the best way
to do this. The DocBocX maven plugin is actually capable of applying a
custom XSL to the DocBook XML source files. So, I am wondering if
there is a need to have this code in DHIS, instead of relying on the
documentation build process itself to output the required format (XML,
XHTML). I am wondering about this a bit, as at some point the
documents may be upgraded to DocBook 5.0, which might require further
changes to the code itself inside of DHIS2. Since we have decided to
keep the documentation branch separate from the main branch (which I
think is actually the right thing to do), I am wondering what happens
when maybe we upgrade to 5.0, or another version. The DocBkX maven
plugin should provide the functionality required to output essentially
any format, even if there needs to be a separate plugin built to
export XML. I am not totally sure I understand all the mojo
terminology here http://docbkx-tools.sourceforge.net/ but it would
seem that the plugin is actually built from the DocBook XSL sources
themselves, which are under constant development themselves
(http://docbook.sourceforge.net/release/xsl/current/\). It would seem
good to reuse as much as we can from there, so as to insulate DHIS
from different versions of DocBook.

My other question would be, is the transformation from XML really
necessary? If a browser renderable format such as XHTML was rendered
properly and included with DHIS, would it be necessary to render the
DocBook source at runtime? If appropriate <id> tags were used at
sections in the document, it should be possible to find this directly
in an XHTML document, as opposed to having to transform the document
from XML source and into another format each time the user needs help.
It would then be someones responsibility to map the ids in the docbook
source, back to a specific URL of the application.

Best regards,
Jason

Anyway, some early morning thoughts..

···

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:

On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe <bobjolliffe@gmail.com> wrote:

Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
see the transformer getting some exercise. And a great consequence of
the move to docbook. Its hard to imagine how we could have linked
this up to our original word documentation.

Happy you liked it.. Also starting to like xslt, consider me a member of the
club:-)

On 23 February 2010 19:47, <noreply@launchpad.net> wrote:
> ------------------------------------------------------------
> revno: 1474
> committer: Lars Helge Oeverland <larshelge@gmail.com>
> branch nick: trunk
> timestamp: Tue 2010-02-23 20:44:51 +0100
> message:
> Work in progress on embedded help function. Finished
> data-web-maintenance-dataadmin module.
> modified:
>
> dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
> dhis-2/dhis-options/src/main/resources/help_content.xml
> dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>
>
> --
> lp:dhis2
> trunk : Code : DHIS
>
> Your team DHIS 2 developers is subscribed to branch lp:dhis2.
> To unsubscribe from this branch go to
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.
>
> === modified file
> 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
> ---
> dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
> 2010-02-23 17:10:02 +0000
> +++
> dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
> 2010-02-23 19:44:51 +0000
> @@ -48,11 +48,9 @@
> {
> try
> {
> - TransformerFactory factory =
> TransformerFactory.newInstance();
> -
> Source stylesheet = new StreamSource( new ClassPathResource(
> "help_stylesheet.xsl" ).getInputStream() );
>
> - Transformer transformer = factory.newTransformer(
> stylesheet );
> + Transformer transformer =
> TransformerFactory.newInstance().newTransformer( stylesheet );
>
> transformer.setParameter( "sectionId", id );
>
>
> === modified file
> 'dhis-2/dhis-options/src/main/resources/help_content.xml'
> --- dhis-2/dhis-options/src/main/resources/help_content.xml
> 2010-02-23 17:10:02 +0000
> +++ dhis-2/dhis-options/src/main/resources/help_content.xml
> 2010-02-23 19:44:51 +0000
> @@ -1,40 +1,276 @@
> -<?xml version='1.0' encoding='UTF-8'?>
> -<chapter>
> - <title>Data Quality</title>
> - <para>The data quality module provides means to improve the quality
> of the data in the system. This can be done through validation rules and
> various statistical checks.</para>
> - <section id="learningObjectives">
> - <title>Learning Objectives</title>
> - <para>After reading this module you will be able to
> understand:</para>
> - <orderedlist>
> - <listitem>
> - <para>What is data quality and its importance for
> HMIS.</para>
> - </listitem>
> - <listitem>
> - <para>How to do data quality check at point of data
> entry.</para>
> - </listitem>
> - <listitem>
> - <para>How to create data validation rules.</para>
> - </listitem>
> - <listitem>
> - <para>How to carry out data triangulation.</para>
> - </listitem>
> - <listitem>
> - <para>How to analyze data status.</para>
> - </listitem>
> - </orderedlist>
> - <para>This stuff is in a paragraph</para>
> - </section>
> - <section id="overview">
> - <title>Overview of data quality check</title>
> - <para>Ensuring data quality is a key concern in building an
> effective HMIS. Data quality has different dimensions including:</para>
> - <itemizedlist>
> - <listitem>
> - <para><emphasis>Correctness:</emphasis> Data should be within
> the normal range for data collected at that facility. There should be no
> gross discrepancies when compared with data from related data
> elements.</para>
> - </listitem>
> - <listitem>
> - <para><emphasis>Completeness:</emphasis> Data for all data
> elements for all health facilities/blocks/Taluka/districts should have been
> submitted.</para>
> - </listitem>
> - </itemizedlist>
> - <para>This stuff is in a paragraph</para>
> - </section>
> -</chapter>
> +<?xml version='1.0' encoding='UTF-8'?>
> +<?xml-stylesheet type="text/xsl" href="find.xsl"?>
> +<book>
> + <chapter>
> + <title>Data Administration in DHIS 2</title>
> + <para>The data administration module provides a range of
> functions to ensure that the data stored in the DHIS2 database is integral
> and that the database performance is optimised. These functions should be
> executed on a regular basis by a data administrator to ensure that the
> quality of the data stored is optimal. </para>
> + <section id="dataBrowser">
> + <title>Data browser</title>
> + <para>The data browser maintenance module allows the user to
> produce a summary of the data contained in the DHIS2 database. This summary
> provides the number of data element values that have been recorded for a
> given time interval and then grouped by the following options:</para>
> + <itemizedlist>
> + <listitem>
> + <para>Data sets</para>
> + </listitem>
> + <listitem>
> + <para>Data element groups</para>
> + </listitem>
> + <listitem>
> + <para>Organisational unit groups</para>
> + </listitem>
> + <listitem>
> + <para>Organisational units</para>
> + </listitem>
> + </itemizedlist>
> + <para>Each of these options can be accessed by selecting the
> desired option from <guilabel>&quot;Browse by&quot; </guilabel>drop-down
> menu. </para>
> + <para>In order to produce a summary of submitted data for a
> given period and grouped by data sets, the user should follow this
> procedure. Begin by selecting a given periodicity type (e.g. Weekly,
> monthly, yearly, etc) and then a time interval (e.g. January 2009 to March
> 2009). Select the type of summary to be produced (e.g. Dataset) from the
> &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot; button to
> view the summary. </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="70%" align="center"
> fileref="resources/images/maintainence/data_browser1.png" format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>A summary of the number of data element values that have
> been submitted over the user selected time period is shown below. </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_browsing_data_sets.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para> By clicking on the name of the individual dataset, a
> more detailed summary of each data element can be obtained as shown below.
> A cross-tab table summarising each time period will be shown. </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_browser_dataset_detail.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>The functionality of the grouping by Datasets, Data
> element groups, and Organisational groups is essentially the same. </para>
> + <para>The functionality of grouping by organisation units will
> be discussed below. Begin by selecting &quot;Organisation units&quot; from
> the &quot;Browse by&quot; drop-down menu. The organisational hierarchy
> present in the database will now be displayed. Organisational units can be
> expanded by clicking on the plus symbol in the organisational tree
> view.</para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="60%" align="center"
> fileref="resources/images/maintainence/data_browser_org_unit1.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para> By clicking on an organisational unit, and the clicking
> the &quot;Browse&quot; button, a summary of submitted data elements present
> in the database is returned for all immediate children of the selected
> organisational as shown below</para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="60%" align="center"
> fileref="resources/images/maintainence/data_browser_orgunit2a.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>By clicking on one of the organisational units, a
> detailed list of data elements is presented by each time period as shown
> below. <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="60%" align="center"
> fileref="resources/images/maintainence/data_browser_orgunit2.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot></para>
> + <para>For each of the data browser summaries, a PDF export can
> be produced by specifying a filename in the &quot;Filename&quot; field,
> selecting a font size, a page layout (Landscape or Portrait) and pressing
> the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will then be
> prompted to select a location to save the file to, which can then be viewed
> with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
> + </section>
> + <section id="dataIntegrity">
> + <title>Data integrity</title>
> + <para>DHIS2 can perform a wide range of data integrity checks
> on the data contained in the database. Identifying and correcting data
> integrity issues is extremely important for ensuring that the data used for
> analysis purposes is valid. Each of the data integrity checks that are
> performed by the system will be described, along with general procedures
> that can be performed to resolve these issues. </para>
> + <section>
> + <title>Data elements without data set</title>
> + <para>Each data element must be assigned to a data set.
> Values for data elements will not be able to be entered into the system if a
> data element is not assigned to a data set. Choose
> Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the
> &quot;orphaned&quot; data element to the appropriate data set. </para>
> + </section>
> + <section>
> + <title>Data elements without groups</title>
> + <para>Some Data Elements have been allocated to several Data
> Element Groups. This is currently not allowed, because it will result in
> duplication of linked data records in the PivotSource recordsets that `feed`
> the pivot tables. Go to Maintenance -&gt; Data Element Groups to review each
> Data Element identified and remove the incorrect Group allocations.</para>
> + </section>
> + <section>
> + <title>Data elements assigned to data sets with different
> period types</title>
> + <para>Data Elements should not be assigned to two separate
> data sets whose period types differ. The recommended approach would be to
> create two separate data elements (for instance a monthly and yearly data
> element) and assign these to respective datasets. </para>
> + </section>
> + <section>
> + <title>Data sets not assigned to organisation units</title>
> + <para>All data sets should be assigned to at least one
> organisation unit. </para>
> + </section>
> + <section>
> + <title>Indicators with identical formulas</title>
> + <para>Although this rule will not affect data quality, it
> generally does not make sense to have two indicators with the exact same
> definition. Review the identified indicators and their formulas and delete
> or modify any indicator that appears to be the duplicate.</para>
> + </section>
> + <section>
> + <title>Indicators without groups</title>
> + <para>All Data Elements and Indicators must be assigned to at
> least one group, so these Indicators need to be allocated to their correct
> Data Element and Indicator Group. Go to Maintenance -&gt; Indicator Groups,
> and allocate each of the `Orphaned` Indicators to its correct group.</para>
> + </section>
> + <section>
> + <title>Invalid indicator numerators</title>
> + <para>Violations of this rule may be caused by an incorrect
> reference to a deleted or modified data element. Review the indicator and
> make corrections to the numerator definition. </para>
> + </section>
> + <section>
> + <title>Invalid indicator denominators</title>
> + <para>Violations of this rule may be caused by an incorrect
> reference to a deleted or modified data element. Review the indicator and
> make corrections to the denominator definition. </para>
> + </section>
> + <section>
> + <title> Organisation units with cyclic references</title>
> + <para>Organisation units cannot be both parent and children
> of each other, directly nor indirectly.</para>
> + </section>
> + <section>
> + <title>Orphaned organisation units</title>
> + <para>All organisation units must exist within the
> organisation unit hierarchy. Go to Organisation-&gt;Hierarchy Operations and
> move the offending organisation unit into the proper position in the
> hierarchy. </para>
> + </section>
> + <section>
> + <title>Organisation units without groups</title>
> + <para>All organisation units <emphasis>must</emphasis> be
> allocated to at least <emphasis>one</emphasis> group. The problem might
> either be that you have not defined any `compulsory` OrgUnit Group Set at
> all, or that there are violations of the `compulsory` rule for some OrgUnits
> . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then you
> must first define them by going to Maintenance -&gt; Organisation
> units-&gt;Organisation unit group sets and define at least one `compulsory`
> Group Set (the group set `OrgUnitType` are nearly universally relevant). If
> you have the relevant group sets, go to Maintenance -&gt; OrgUnit Groups to
> review each OrgUnit identified and add the relevant Group allocation.</para>
> + </section>
> + <section>
> + <title>Organisation units violating compulsory group
> sets</title>
> + <para>These organisation units have not been assigned to the
> any organisation unit group within one of the
> <emphasis>compulsory</emphasis> organisation unit group sets. When a group
> set is defined as `compulsory`, it means that an organisation unit must be
> allocated to at least one organisation unit group within that group set. For
> instance, all organisation units must belong to one of the groups in the
> `organisation unitType` group set. It might belong to the `Hospital` or the
> `Clinic` or any other `type` group - but it must belong to exactly one of
> them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit
> groups to review each organisation unit identified in the integrity check.
> Allocate all organisation units to exactly one group. </para>
> + </section>
> + <section>
> + <title>Organisation units violating exclusive group
> sets</title>
> + <para>Some organisation units have been allocated to several
> organisation unit groups that are members of the same exclusive organisation
> unit group set. When a group set is defined as exclusive, it means that an
> organisation unit can <emphasis>only</emphasis> be allocated to
> <emphasis>one</emphasis> organisation unit group within that Group Set. For
> instance, one organisation unit cannot normally belong to the both the
> &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to only to
> one of them. Go to Maintenance -&gt; organisation unit-&gt;Organisation unit
> groups to review each organisation unit identified in the integrity check.
> Remove the organisation unit from all groups except the one that it should
> be allocated to. </para>
> + </section>
> + <section>
> + <title> Organisation unit groups without group sets</title>
> + <para>The organisation unit groups listed here have not been
> allocated to a group set. Go to Maintenance-&gt;Organisation
> unit-&gt;Organisation unit group sets and allocate the Organisation unit
> group to the appropriate group set. </para>
> + </section>
> + <section>
> + <title>Validation rules without groups</title>
> + <para>All validation rules must be assigned to a group. Go to
> <command>Services-&gt;Data quality-&gt;Validation rule group</command> and
> assign the offending validation rule to a group. </para>
> + </section>
> + <section>
> + <title>Invalid validation rule left side expressions</title>
> + <para>An error exists in the left-side validation rule
> definition. Go to <command>Services-&gt;Data quality-&gt;Validation
> rule</command> and click the &quot;Edit&quot; icon on the offending rule.
> Press &quot;Edit left side&quot; and make the corrections that are required.
> </para>
> + </section>
> + <section>
> + <title>Invalid validation rule right side expressions</title>
> + <para>An error exists in the left-side validation rule
> definition. Go to <command>Services-&gt;Data quality-&gt;Validation
> rule</command> and click the &quot;Edit&quot; icon on the offending rule.
> Press &quot;Edit right side&quot; and make the corrections that are
> required.</para>
> + </section>
> + </section>
> + <section id="maintenance">
> + <title>Maintenance</title>
> + <para>The data maintenance module has five options, each
> described below. </para>
> + <itemizedlist>
> + <listitem>
> + <para>Clear hierarchy history</para>
> + <para>DHIS 2 maintains an audit trail of changes to the
> organisation unit hierarchy for aggregation purposes. This function clears
> the hierarchy history.</para>
> + </listitem>
> + <listitem>
> + <para>Clear data mart (aggregated datavalues)</para>
> + <para>The data mart is where DHIS 2 stores aggregated data
> produced during the export to data mart process. This function clears the
> database table which contains aggregated data element values.</para>
> + </listitem>
> + <listitem>
> + <para>Clear data mart (aggregated indicatorvalues)</para>
> + <para>The data mart is where DHIS 2 stores aggregated data
> produced during the export to data mart process. This function clears the
> database table which contains aggregated indicator values.</para>
> + </listitem>
> + <listitem>
> + <para>Clear zero values</para>
> + <para>This function removes zero data values from the
> database. Values registered for data elements with aggregation operator
> <emphasis role="italic">average</emphasis> is not removed, as such values
> will be significant when aggregating the data, contrary to values registered
> for data elements with aggregation operator <emphasis
> role="italic">sum</emphasis>. Reducing the number of data values will
> improve system performance.</para>
> + </listitem>
> + <listitem>
> + <para>Clear dataset completeness</para>
> + <para>This function removes aggregated dataset completeness
> values. This data is produced and used by report tables.</para>
> + </listitem>
> + <listitem>
> + <para>Prune periods</para>
> + <para>This function removes all periods which have no
> registered data values. Reducing the number of periods will improve system
> performance.</para>
> + </listitem>
> + </itemizedlist>
> + </section>
> + <section id="resourceTables">
> + <title>Resource tables</title>
> + <para>Resource tables are supporting tables that are used
> during analysis of data. One would typically join the contents of these
> tables with the data value table when doing queries from third-party
> applications like Microsoft Excel. Simply select the tables that should be
> regenerated and press &quot;Generate tables&quot;. Regeneration of the
> resource tables should only be done once all data integrity issues are
> resolved. </para>
> + <itemizedlist>
> + <listitem>
> + <para>Organisation unit structure (orgunitstructure)</para>
> + <para>This table should be regenerated any time there have
> been any changes made to the organisational unit hierarchy. This table
> provides information about the organisation unit hierarchy. It has one row
> for each organisation unit, one column for each organisation unit level and
> the organisation unit identifiers for all parents in the lineage as
> values.</para>
> + </listitem>
> + <listitem>
> + <para>Exclusive organisation unit groupset structure
> normalized (orgunitgroupsetstructure)</para>
> + <para>This table provides information about the which
> organisation units are member of which organisation unit group sets.</para>
> + </listitem>
> + <listitem>
> + <para>Data element group set structure
> (_dataelementgroupsetstructure)</para>
> + <para>This table provides information about which data
> elements are members of which data element group sets. The table has one row
> for each data element, one column for each data element group set and the
> names of the data element group as values.</para>
> + </listitem>
> + <listitem>
> + <para>Indicator group set structure
> (_indicatorgroupsetstructure)</para>
> + <para>This table provides information about which
> indicators are members of which indicator group sets. The table has one row
> for each indicator, one column for each indicator group set and the names of
> the indicator group as values.</para>
> + </listitem>
> + <listitem>
> + <para>Organisation unit group set structure
> (_organisationunitgroupsetstructure)</para>
> + <para>This table provides information about which
> organisation units are members of which organisation unit group sets. The
> table has one row for each organisation unit, one column for each
> organisation unit group set and the names of the organisation unit groups as
> values.</para>
> + </listitem>
> + <listitem>
> + <para>Category structure (_categorystructure)</para>
> + <para>This table provides information about which data
> elements are members of which categories. The table has one row for each
> data element, one column for each category and the names of the category
> options as values.</para>
> + </listitem>
> + <listitem>
> + <para>Data element category option combo name
> (categoryoptioncomboname)</para>
> + <para>This table should be regenerated any time there have
> been changes made to the category combination names. It contains readable
> names for the various combinations of categories.</para>
> + </listitem>
> + </itemizedlist>
> + </section>
> + <section id="organisationUnitMerge">
> + <title>Organisation unit merge</title>
> + <para>This function is useful when two organisation units need
> to be merged, eg. it is decided that one facility will be shut down and its
> services will be provided by a nearby facility.</para>
> + <para>Start by selecting the organisation unit to eliminate
> from the tree and click <emphasis role="italic">confirm</emphasis>. Then
> select the organisation unit to keep and click <emphasis
> role="italic">confirm</emphasis> again. Finally, verify the selection and
> click <emphasis role="italic">merge</emphasis>. </para>
> + <para>In the sitation where data exist for the organisation
> unit to eliminate and not for the one to keep, the data will be moved to the
> one to keep. When data exists for both organisation units, the data will be
> summarized and moved to the one to keep. When data exists only for the one
> to keep, no action is taken. The organisation unit to eliminate will
> eventually be deleted.</para>
> + </section>
> + <section id="duplicateDataElimination">
> + <title>Duplicate data elimination</title>
> + <para>This function is useful when data has been entered
> mistakenly for two data elements which represents the same phenomena.</para>
> + <para>Start by selecting the data element to eliminate from the
> list and click confirm. Then select the data element to keep and click
> confirm again. Finally, verify the selection and click merge.</para>
> + <para>In the situation where data exists for the data element
> to eliminate and not for the one to keep, the data will be moved to the one
> to keep. When data exists for both data elements, the data which was updated
> last will be used. When data exists only for the one to keep, no action will
> be taken. The data element to eliminate will eventually be deleted, except
> when it is a multidimensional data element and has other data
> registered.</para>
> + </section>
> + <section id="dataStatistics">
> + <title>Data statistics</title>
> + <para>The data statistics module provides an overview of the
> number of objects stored in the DHIS2 database. </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>The total number of each type of object is presented in a
> table, as well as a graph. </para>
> + </section>
> + <section id="dataLocking">
> + <title>Data locking</title>
> + <para>This module gives users the privilege of locking certain
> datasets for chosen organisation units. This encourages timely data entry
> and prevents unwanted to changes to the data once it has been entered. When
> the ‘Data Administration’ option is chosen the data locking interface is
> displayed. The user has to select the periodicity of the report e.g.
> monthly, quarterly or
> + yearly for which the data is to be locked. The month, quarter or year
> for which the reports are to be locked is then specified. </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_locking_select1.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>The unlocked data sets for the period are displayed and
> the user will then have to choose the data sets to be locked.
> + </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_locking_select2.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>After choosing the datasets to be locked, double click on
> each one by one to display the organisation unit tree in the field below.
> Click on the organisation unit to lock the dataset.
> + </para>
> + <screenshot>
> + <mediaobject>
> + <imageobject>
> + <imagedata width="80%" align="center"
> fileref="resources/images/maintainence/data_locking_select3.png"
> format="PNG"/>
> + </imageobject>
> + </mediaobject>
> + </screenshot>
> + <para>The <guibutton>Apply Locks on All</guibutton> button
> locks the dataset for all the organisation units to which that dataset has
> been assigned. <guibutton>‘Remove locks on All’</guibutton> removes all
> locks put on the organisation units corresponding to the selected dataset.
> After the operations are completed the user must click
> <guibutton>‘Save’</guibutton> to apply the settings. The <guibutton>‘Lock at
> level’</guibutton> button locks datasets at a particular level that the user
> chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks that have
> been put on the organisation units corresponding to the selected dataset at
> the selected level. After the operations are completed, the user must click
> <guibutton>‘Save’</guibutton> to apply the settings. The
> <guibutton>‘Save’</guibutton> button will also lock those organisation unit
> datasets that have been specified by the user.
> + </para>
> + </section>
> + <section id="zeroValueStorage">
> + <title>Zero value storage</title>
> + <para>The zero value storage function makes it possible to
> define for which data elements the system should store zero values. In most
> cases zeros are significant only for a subset of the data elements in the
> database. Zero values will be ignored during data entry for selected data
> elements.</para>
> + </section>
> + <section id="cacheStatistics">
> + <title>Cache Statistics </title>
> + <para>This option is for system administrators only to use. The
> cache statistics shows the status of the application level cache. The
> application level cache refers to the objects and query results that the
> application is caching in order to speed up performance. If the database has
> been modified directly the application cache needs to be cleared for it to
> take effect.</para>
> + </section>
> + </chapter>
> +</book>
> \ No newline at end of file
>
> === modified file
> 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
> --- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
> 2010-02-23 17:10:02 +0000
> +++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
> 2010-02-23 19:44:51 +0000
> @@ -28,7 +28,7 @@
> </xsl:template>
>
> <xsl:template match="/">
> - <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
> + <xsl:apply-templates select="book/chapter/section[@id=$sectionId]"/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
> ---
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
> 2010-02-23 18:58:09 +0000
> +++
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
> 2010-02-23 19:44:51 +0000
> @@ -18,6 +18,7 @@
> padding-right: 15px;
> padding-top: 9px;
> padding-bottom: 9px;
> + overflow: auto;
> }
>
> #hideRightBar
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
> Binary files
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
> 2009-04-20 14:54:22 +0000 and
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
> 2010-02-23 19:44:51 +0000 differ
> === modified file
> 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
> --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
> 2009-11-02 18:13:58 +0000
> +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
> 2010-02-23 19:44:51 +0000
> @@ -91,7 +91,7 @@
> #end
>
> #macro( openHelp $id )
> -<a href="javascript:openHelpForm('${id}')" title="$i18n.getString(
> 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
> +<a href="javascript:getHelpContent('${id}')" title="$i18n.getString(
> 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help' )"></a>
> #end
>
> #macro( introListItem $action $objectKey )
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
> 2009-10-28 12:38:33 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "data_browser" )</h3>
> +<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser" )</h3>
>
> <form method="get" action="searchResult.action" onsubmit="return
> validate()">
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
> 2010-02-01 15:30:27 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -6,7 +6,7 @@
>
> #end
>
> -<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
> +<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp(
> "dataIntegrity" )</h3>
>
> #parse( "dhis-web-commons/loader/loader.vm" )
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
> 2010-02-04 12:29:22 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
> +<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp(
> "duplicateDataElimination" )</h3>
>
> <div>
> <label>$i18n.getString( "filter" ):</label><br>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
> 2009-12-29 07:14:28 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,4 +1,4 @@
> -<h3>$i18n.getString( "data_locking_form" )</h3>
> +<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking"
> )</h3>
>
> <span id="message"></span>
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
> 2009-12-17 09:22:20 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "maintenance" )</h3>
> +<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>
>
> <p>
> <input type="checkbox" id="hierarchyHistory">
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
> 2010-01-25 11:54:22 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "organisation_unit_merge" )</h3>
> +<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp(
> "organisationUnitMerge" )</h3>
>
> <div id="selectionTree" style="width:500px; height:200px"></div>
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
> 2010-01-15 11:32:18 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "resource_table" )</h3>
> +<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables"
> )</h3>
>
> <p>
> <input type="checkbox" id="organisationUnit">
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
> 2009-03-03 16:46:36 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
> 2010-02-23 19:44:51 +0000
> @@ -9,7 +9,7 @@
> }
> </style>
>
> -<h3>$i18n.getString( "cache_statistics" )</h3>
> +<h3>$i18n.getString( "cache_statistics" ) #openHelp( "cacheStatistics"
> )</h3>
>
> <p><input type="button" style="width:150px" value="$i18n.getString(
> 'clear_cache' )" onclick="window.location.href='clearCache.action'"></p>
>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
> 2009-10-07 18:53:11 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,5 +1,5 @@
>
> -<h3>$i18n.getString( "data_statistics" )</h3>
> +<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics"
> )</h3>
>
> <table>
> <tr>
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
> ---
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
> 2010-01-28 09:50:27 +0000
> +++
> dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
> 2010-02-23 19:44:51 +0000
> @@ -1,4 +1,5 @@
> -<h3>$i18n.getString( "zero_storage_management" )</h3>
> +
> +<h3>$i18n.getString( "zero_storage_management" ) #openHelp(
> "zeroValueStorage" )</h3>
> <br>
> <form id="ZeroDataValueManagement" method="POST"
> action="updateZeroIsSignificantForDataElements.action">
> <table>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help : https://help.launchpad.net/ListHelp
>
>

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help : https://help.launchpad.net/ListHelp

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when

typically my head is clearer. I am just wondering about the best way

to do this. The DocBocX maven plugin is actually capable of applying a

custom XSL to the DocBook XML source files. So, I am wondering if

there is a need to have this code in DHIS, instead of relying on the

documentation build process itself to output the required format (XML,

XHTML). I am wondering about this a bit, as at some point the

documents may be upgraded to DocBook 5.0, which might require further

changes to the code itself inside of DHIS2. Since we have decided to

keep the documentation branch separate from the main branch (which I

think is actually the right thing to do), I am wondering what happens

when maybe we upgrade to 5.0, or another version. The DocBkX maven

plugin should provide the functionality required to output essentially

any format, even if there needs to be a separate plugin built to

export XML. I am not totally sure I understand all the mojo

terminology here http://docbkx-tools.sourceforge.net/ but it would

seem that the plugin is actually built from the DocBook XSL sources

themselves, which are under constant development themselves

(http://docbook.sourceforge.net/release/xsl/current/). It would seem

good to reuse as much as we can from there, so as to insulate DHIS

from different versions of DocBook.

My other question would be, is the transformation from XML really

necessary? If a browser renderable format such as XHTML was rendered

properly and included with DHIS, would it be necessary to render the

DocBook source at runtime? If appropriate tags were used at

sections in the document, it should be possible to find this directly

in an XHTML document, as opposed to having to transform the document

from XML source and into another format each time the user needs help.

It would then be someones responsibility to map the ids in the docbook

source, back to a specific URL of the application.

Best regards,

Jason

Hi,

thanks for providing feedback on this. First I am open for suggestions on improvements. Using XHTML as basis might very well be sensible.

They way I see it the xslt still gives you a few advantages:

  • you can pick and choose the elements you need from the docbook file, eg omitting screenshots which we don’t want in the help text

  • only loading the part of the docbook file relevant for the current help text from the server, not the whole document.

  • easily locating the right section.

I might be missing something from your suggestion though…

cheers

Lars

···

2010/2/24 Jason Pickering jason.p.pickering@gmail.com

Anyway, some early morning thoughts…

2010/2/24 Lars Helge Øverland larshelge@gmail.com:

On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe bobjolliffe@gmail.com wrote:

Just gave it a spin. Lars that’s just too cool for words :slight_smile: Nice to

see the transformer getting some exercise. And a great consequence of

the move to docbook. Its hard to imagine how we could have linked

this up to our original word documentation.

Happy you liked it… Also starting to like xslt, consider me a member of the

club:-)

On 23 February 2010 19:47, noreply@launchpad.net wrote:


revno: 1474

committer: Lars Helge Oeverland larshelge@gmail.com

branch nick: trunk

timestamp: Tue 2010-02-23 20:44:51 +0100

message:

Work in progress on embedded help function. Finished

data-web-maintenance-dataadmin module.

modified:

dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

dhis-2/dhis-options/src/main/resources/help_content.xml

dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm

lp:dhis2

https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.

To unsubscribe from this branch go to

https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription.

=== modified file

‘dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java’


dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

   2010-02-23 17:10:02 +0000

+++

dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

   2010-02-23 19:44:51 +0000

@@ -48,11 +48,9 @@

{
    try
    {
  •        TransformerFactory factory =
    

TransformerFactory.newInstance();

        Source stylesheet = new StreamSource( new ClassPathResource(

“help_stylesheet.xsl” ).getInputStream() );

  •        Transformer transformer = factory.newTransformer(
    

stylesheet );

  •        Transformer transformer =
    

TransformerFactory.newInstance().newTransformer( stylesheet );

        transformer.setParameter( "sectionId", id );

=== modified file

‘dhis-2/dhis-options/src/main/resources/help_content.xml’

— dhis-2/dhis-options/src/main/resources/help_content.xml

2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_content.xml

2010-02-23 19:44:51 +0000

@@ -1,40 +1,276 @@

-<?xml version='1.0' encoding='UTF-8'?>

-

  • Data Quality
  • The data quality module provides means to improve the quality

of the data in the system. This can be done through validation rules and

various statistical checks.

  • Learning Objectives
  • After reading this module you will be able to

understand:

  •  <orderedlist>
    
  •    <listitem>
    
  •      <para>What is data quality and its importance for
    

HMIS.

  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to do data quality check at point of data
    

entry.

  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to create data validation rules.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to carry out data triangulation.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to analyze data status.</para>
    
  •    </listitem>
    
  •  </orderedlist>
    
  •   <para>This stuff is in a paragraph</para>
    
  • Overview of data quality check
  • Ensuring data quality is a key concern in building an

effective HMIS. Data quality has different dimensions including:

  •  <itemizedlist>
    
  •    <listitem>
    
  •      <para><emphasis>Correctness:</emphasis> Data should be within
    

the normal range for data collected at that facility. There should be no

gross discrepancies when compared with data from related data

elements.

  •    </listitem>
    
  •    <listitem>
    
  •      <para><emphasis>Completeness:</emphasis> Data for all data
    

elements for all health facilities/blocks/Taluka/districts should have been

submitted.

  •    </listitem>
    
  •  </itemizedlist>
    
  •   <para>This stuff is in a paragraph</para>
    

-

+<?xml version='1.0' encoding='UTF-8'?>

+<?xml-stylesheet type="text/xsl" href="find.xsl"?>

+

  • Data Administration in DHIS 2
  •  <para>The data administration module provides a range of
    

functions to ensure that the data stored in the DHIS2 database is integral

and that the database performance is optimised. These functions should be

executed on a regular basis by a data administrator to ensure that the

quality of the data stored is optimal.

  •  <section id="dataBrowser">
    
  •    <title>Data browser</title>
    
  •    <para>The data browser maintenance module allows the user to
    

produce a summary of the data contained in the DHIS2 database. This summary

provides the number of data element values that have been recorded for a

given time interval and then grouped by the following options:

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Data sets</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational unit groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational units</para>
    
  •      </listitem>
    
  •    </itemizedlist>
    
  •    <para>Each of these options can be accessed by selecting the
    

desired option from "Browse by" drop-down

menu.

  •    <para>In order to produce a summary of submitted data for a
    

given period and grouped by data sets, the user should follow this

procedure. Begin by selecting a given periodicity type (e.g. Weekly,

monthly, yearly, etc) and then a time interval (e.g. January 2009 to March

2009). Select the type of summary to be produced (e.g. Dataset) from the

"Browse by" drop-down menu. Click the "Browse" button to

view the summary.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="70%" align="center"
    

fileref=“resources/images/maintainence/data_browser1.png” format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>A summary of the number  of data element values that have
    

been submitted over the user selected time period is shown below.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_browsing_data_sets.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on the name of the individual dataset, a
    

more detailed summary of each data element can be obtained as shown below.

A cross-tab table summarising each time period will be shown.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_browser_dataset_detail.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The functionality of the grouping by Datasets, Data
    

element groups, and Organisational groups is essentially the same.

  •    <para>The functionality of grouping by organisation units will
    

be discussed below. Begin by selecting "Organisation units" from

the "Browse by" drop-down menu. The organisational hierarchy

present in the database will now be displayed. Organisational units can be

expanded by clicking on the plus symbol in the organisational tree

view.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_org_unit1.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on an organisational unit, and the clicking
    

the "Browse" button, a summary of submitted data elements present

in the database is returned for all immediate children of the selected

organisational as shown below

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_orgunit2a.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>By clicking on one of the organisational units, a
    

detailed list of data elements is presented by each time period as shown

below.

  •        <mediaobject>
    
  •          <imageobject>
    
  •            <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_orgunit2.png”

format=“PNG”/>

  •          </imageobject>
    
  •        </mediaobject>
    
  •      </screenshot></para>
    
  •    <para>For each of the data browser summaries, a PDF export can
    

be produced by specifying a filename in the "Filename" field,

selecting a font size, a page layout (Landscape or Portrait) and pressing

the "Export PDF" button. You will then be

prompted to select a location to save the file to, which can then be viewed

with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc).

  •  </section>
    
  •  <section id="dataIntegrity">
    
  •    <title>Data integrity</title>
    
  •    <para>DHIS2 can perform a wide range of data integrity checks
    

on the data contained in the database. Identifying and correcting data

integrity issues is extremely important for ensuring that the data used for

analysis purposes is valid. Each of the data integrity checks that are

performed by the system will be described, along with general procedures

that can be performed to resolve these issues.

  •    <section>
    
  •      <title>Data elements without data set</title>
    
  •      <para>Each data element must be assigned to a data set.
    

Values for data elements will not be able to be entered into the system if a

data element is not assigned to a data set. Choose

Maintenance->Datasets->Edit from the main menu and then add the

"orphaned" data element to the appropriate data set.

  •    </section>
    
  •    <section>
    
  •      <title>Data elements without groups</title>
    
  •      <para>Some Data Elements have been allocated to several Data
    

Element Groups. This is currently not allowed, because it will result in

duplication of linked data records in the PivotSource recordsets that feed

the pivot tables. Go to Maintenance -> Data Element Groups to review each

Data Element identified and remove the incorrect Group allocations.

  •    </section>
    
  •    <section>
    
  •      <title>Data elements assigned to data sets with different
    

period types

  •      <para>Data Elements should not be assigned to two separate
    

data sets whose period types differ. The recommended approach would be to

create two separate data elements (for instance a monthly and yearly data

element) and assign these to respective datasets.

  •    </section>
    
  •    <section>
    
  •      <title>Data sets not assigned to organisation units</title>
    
  •      <para>All data sets should be assigned to at least one
    

organisation unit.

  •    </section>
    
  •    <section>
    
  •      <title>Indicators with identical formulas</title>
    
  •      <para>Although this rule will not affect data quality, it
    

generally does not make sense to have two indicators with the exact same

definition. Review the identified indicators and their formulas and delete

or modify any indicator that appears to be the duplicate.

  •    </section>
    
  •    <section>
    
  •      <title>Indicators without groups</title>
    
  •      <para>All Data Elements and Indicators must be assigned to at
    

least one group, so these Indicators need to be allocated to their correct

Data Element and Indicator Group. Go to Maintenance -> Indicator Groups,

and allocate each of the Orphaned Indicators to its correct group.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator numerators</title>
    
  •      <para>Violations of this rule may be caused by an incorrect
    

reference to a deleted or modified data element. Review the indicator and

make corrections to the numerator definition.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator denominators</title>
    
  •      <para>Violations of this rule may be caused by an incorrect
    

reference to a deleted or modified data element. Review the indicator and

make corrections to the denominator definition.

  •    </section>
    
  •    <section>
    
  •      <title> Organisation units with cyclic references</title>
    
  •      <para>Organisation units cannot be both parent and children
    

of each other, directly nor indirectly.

  •    </section>
    
  •    <section>
    
  •      <title>Orphaned organisation units</title>
    
  •      <para>All organisation units must exist within the
    

organisation unit hierarchy. Go to Organisation->Hierarchy Operations and

move the offending organisation unit into the proper position in the

hierarchy.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units without groups</title>
    
  •      <para>All organisation units <emphasis>must</emphasis> be
    

allocated to at least one group. The problem might

either be that you have not defined any compulsory OrgUnit Group Set at

all, or that there are violations of the compulsory rule for some OrgUnits

. NOTE: If you have defined no compulsory OrgUnit Group Sets, then you

must first define them by going to Maintenance -> Organisation

units->Organisation unit group sets and define at least one compulsory

Group Set (the group set OrgUnitType are nearly universally relevant). If

you have the relevant group sets, go to Maintenance -> OrgUnit Groups to

review each OrgUnit identified and add the relevant Group allocation.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating compulsory group
    

sets

  •      <para>These organisation units have not been assigned to the
    

any organisation unit group within one of the

compulsory organisation unit group sets. When a group

set is defined as compulsory, it means that an organisation unit must be

allocated to at least one organisation unit group within that group set. For

instance, all organisation units must belong to one of the groups in the

organisation unitType group set. It might belong to the Hospital or the

Clinic or any other type group - but it must belong to exactly one of

them. Go to Maintenance -> organisation unit->Organisation unit

groups to review each organisation unit identified in the integrity check.

Allocate all organisation units to exactly one group.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating exclusive group
    

sets

  •      <para>Some organisation units have been allocated to several
    

organisation unit groups that are members of the same exclusive organisation

unit group set. When a group set is defined as exclusive, it means that an

organisation unit can only be allocated to

one organisation unit group within that Group Set. For

instance, one organisation unit cannot normally belong to the both the

'Hospital' and 'Clinic' groups , but rather to only to

one of them. Go to Maintenance -> organisation unit->Organisation unit

groups to review each organisation unit identified in the integrity check.

Remove the organisation unit from all groups except the one that it should

be allocated to.

  •    </section>
    
  •    <section>
    
  •      <title> Organisation unit groups without group sets</title>
    
  •      <para>The organisation unit groups listed here have not been
    

allocated to a group set. Go to Maintenance->Organisation

unit->Organisation unit group sets and allocate the Organisation unit

group to the appropriate group set.

  •    </section>
    
  •    <section>
    
  •      <title>Validation rules without groups</title>
    
  •      <para>All validation rules must be assigned to a group. Go to
    

Services->Data quality->Validation rule group and

assign the offending validation rule to a group.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule left side expressions</title>
    
  •      <para>An error exists in the left-side validation rule
    

definition. Go to Services->Data quality->Validation

rule and click the "Edit" icon on the offending rule.

Press "Edit left side" and make the corrections that are required.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule right side expressions</title>
    
  •      <para>An error exists in the left-side validation rule
    

definition. Go to Services->Data quality->Validation

rule and click the "Edit" icon on the offending rule.

Press "Edit right side" and make the corrections that are

required.

  •    </section>
    
  •  </section>
    
  •  <section id="maintenance">
    
  •    <title>Maintenance</title>
    
  •    <para>The data maintenance module has five options, each
    

described below.

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Clear hierarchy history</para>
    
  •        <para>DHIS 2 maintains an audit trail of changes to the
    

organisation unit hierarchy for aggregation purposes. This function clears

the hierarchy history.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated datavalues)</para>
    
  •        <para>The data mart is where DHIS 2 stores aggregated data
    

produced during the export to data mart process. This function clears the

database table which contains aggregated data element values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated indicatorvalues)</para>
    
  •        <para>The data mart is where DHIS 2 stores aggregated data
    

produced during the export to data mart process. This function clears the

database table which contains aggregated indicator values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear zero values</para>
    
  •        <para>This function removes zero data values from the
    

database. Values registered for data elements with aggregation operator

average is not removed, as such values

will be significant when aggregating the data, contrary to values registered

for data elements with aggregation operator <emphasis

role=“italic”>sum. Reducing the number of data values will

improve system performance.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear dataset completeness</para>
    
  •        <para>This function removes aggregated dataset completeness
    

values. This data is produced and used by report tables.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Prune periods</para>
    
  •        <para>This function removes all periods which have no
    

registered data values. Reducing the number of periods will improve system

performance.

  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="resourceTables">
    
  •    <title>Resource tables</title>
    
  •    <para>Resource tables are supporting tables that are used
    

during analysis of data. One would typically join the contents of these

tables with the data value table when doing queries from third-party

applications like Microsoft Excel. Simply select the tables that should be

regenerated and press "Generate tables". Regeneration of the

resource tables should only be done once all data integrity issues are

resolved.

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Organisation unit structure (orgunitstructure)</para>
    
  •        <para>This table should be regenerated any time there have
    

been any changes made to the organisational unit hierarchy. This table

provides information about the organisation unit hierarchy. It has one row

for each organisation unit, one column for each organisation unit level and

the organisation unit identifiers for all parents in the lineage as

values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Exclusive organisation unit groupset structure
    

normalized (orgunitgroupsetstructure)

  •        <para>This table provides information about the which
    

organisation units are member of which organisation unit group sets.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element group set structure
    

(_dataelementgroupsetstructure)

  •        <para>This table provides information about which data
    

elements are members of which data element group sets. The table has one row

for each data element, one column for each data element group set and the

names of the data element group as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Indicator group set structure
    

(_indicatorgroupsetstructure)

  •        <para>This table provides information about which
    

indicators are members of which indicator group sets. The table has one row

for each indicator, one column for each indicator group set and the names of

the indicator group as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisation unit group set structure
    

(_organisationunitgroupsetstructure)

  •        <para>This table provides information about which
    

organisation units are members of which organisation unit group sets. The

table has one row for each organisation unit, one column for each

organisation unit group set and the names of the organisation unit groups as

values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Category structure (_categorystructure)</para>
    
  •        <para>This table provides information about which data
    

elements are members of which categories. The table has one row for each

data element, one column for each category and the names of the category

options as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element category option combo name
    

(categoryoptioncomboname)

  •        <para>This table should be regenerated any time there have
    

been changes made to the category combination names. It contains readable

names for the various combinations of categories.

  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="organisationUnitMerge">
    
  •    <title>Organisation unit merge</title>
    
  •    <para>This function is useful when two organisation units need
    

to be merged, eg. it is decided that one facility will be shut down and its

services will be provided by a nearby facility.

  •    <para>Start by selecting the organisation unit to eliminate
    

from the tree and click confirm. Then

select the organisation unit to keep and click <emphasis

role=“italic”>confirm again. Finally, verify the selection and

click merge.

  •    <para>In the sitation where data exist  for the organisation
    

unit to eliminate and not for the one to keep, the data will be moved to the

one to keep. When data exists for both organisation units, the data will be

summarized and moved to the one to keep. When data exists only for the one

to keep, no action is taken. The organisation unit to eliminate will

eventually be deleted.

  •  </section>
    
  •  <section id="duplicateDataElimination">
    
  •    <title>Duplicate data elimination</title>
    
  •    <para>This function is useful when data has been entered
    

mistakenly for two data elements which represents the same phenomena.

  •    <para>Start by selecting the data element to eliminate from the
    

list and click confirm. Then select the data element to keep and click

confirm again. Finally, verify the selection and click merge.

  •    <para>In the situation where data exists for the data element
    

to eliminate and not for the one to keep, the data will be moved to the one

to keep. When data exists for both data elements, the data which was updated

last will be used. When data exists only for the one to keep, no action will

be taken. The data element to eliminate will eventually be deleted, except

when it is a multidimensional data element and has other data

registered.

  •  </section>
    
  •  <section id="dataStatistics">
    
  •    <title>Data statistics</title>
    
  •    <para>The data statistics module provides an overview of the
    

number of objects stored in the DHIS2 database.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_stats.png” format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The total number of each type of object is presented in a
    

table, as well as a graph.

  •  </section>
    
  •  <section id="dataLocking">
    
  •    <title>Data locking</title>
    
  •    <para>This module gives users the privilege of locking certain
    

datasets for chosen organisation units. This encourages timely data entry

and prevents unwanted to changes to the data once it has been entered. When

the ‘Data Administration’ option is chosen the data locking interface is

displayed. The user has to select the periodicity of the report e.g.

monthly, quarterly or

  • yearly for which the data is to be locked. The month, quarter or year

for which the reports are to be locked is then specified.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select1.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The unlocked data sets for the period are displayed and
    

the user will then have to choose the data sets to be locked.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select2.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>After choosing the datasets to be locked, double click on
    

each one by one to display the organisation unit tree in the field below.

Click on the organisation unit to lock the dataset.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select3.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The <guibutton>Apply Locks on All</guibutton> button
    

locks the dataset for all the organisation units to which that dataset has

been assigned. ‘Remove locks on All’ removes all

locks put on the organisation units corresponding to the selected dataset.

After the operations are completed the user must click

‘Save’ to apply the settings. The ‘Lock at

level’ button locks datasets at a particular level that the user

chooses. . ‘Unlock at Level’ removes locks that have

been put on the organisation units corresponding to the selected dataset at

the selected level. After the operations are completed, the user must click

‘Save’ to apply the settings. The

‘Save’ button will also lock those organisation unit

datasets that have been specified by the user.

  •  </section>
    
  •  <section id="zeroValueStorage">
    
  •    <title>Zero value storage</title>
    
  •    <para>The zero value storage function makes it possible to
    

define for which data elements the system should store zero values. In most

cases zeros are significant only for a subset of the data elements in the

database. Zero values will be ignored during data entry for selected data

elements.

  •  </section>
    
  •  <section id="cacheStatistics">
    
  •    <title>Cache Statistics </title>
    
  •    <para>This option is for system administrators only to use. The
    

cache statistics shows the status of the application level cache. The

application level cache refers to the objects and query results that the

application is caching in order to speed up performance. If the database has

been modified directly the application cache needs to be cleared for it to

take effect.

  •  </section>
    

+

\ No newline at end of file

=== modified file

‘dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl’

— dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

2010-02-23 19:44:51 +0000

@@ -28,7 +28,7 @@

</xsl:template>

<xsl:template match=“/”>

  • <xsl:apply-templates select=“chapter/section[@id=$sectionId]”/>
  • <xsl:apply-templates select=“book/chapter/section[@id=$sectionId]”/>

</xsl:template>

</xsl:stylesheet>

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css’


dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

2010-02-23 18:58:09 +0000

+++

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

2010-02-23 19:44:51 +0000

@@ -18,6 +18,7 @@

padding-right: 15px;

padding-top: 9px;

padding-bottom: 9px;

  • overflow: auto;

}

#hideRightBar

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png’

Binary files

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

2009-04-20 14:54:22 +0000 and

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

 2010-02-23 19:44:51 +0000 differ

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm’

— dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

   2009-11-02 18:13:58 +0000

+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

   2010-02-23 19:44:51 +0000

@@ -91,7 +91,7 @@

#end

#macro( openHelp $id )

-<a href=“javascript:openHelpForm(‘${id}’)” title="$i18n.getString(

‘help’ )">$i18n.getString( 'help' )

+<a href=“javascript:getHelpContent(‘${id}’)” title="$i18n.getString(

‘help’ )">$i18n.getString( 'help' )

#end

#macro( introListItem $action $objectKey )

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

  2009-10-28 12:38:33 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

  2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “data_browser” )

+

$i18n.getString( “data_browser” ) #openHelp( “dataBrowser” )

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

  2009-12-17 09:22:20 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

  2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “maintenance” )

+

$i18n.getString( “maintenance” ) #openHelp( “maintenance” )

   <input type="checkbox" id="hierarchyHistory">

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

2010-01-25 11:54:22 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “organisation_unit_merge” )

+

$i18n.getString( “organisation_unit_merge” ) #openHelp(

“organisationUnitMerge” )

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

2010-01-15 11:32:18 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “resource_table” )

+

$i18n.getString( “resource_table” )#openHelp( “resourceTables”

)

<input type="checkbox" id="organisationUnit">

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

2009-03-03 16:46:36 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

2010-02-23 19:44:51 +0000

@@ -9,7 +9,7 @@

   }

-

$i18n.getString( “cache_statistics” )

+

$i18n.getString( “cache_statistics” ) #openHelp( “cacheStatistics”

)

<input type="button" style="width:150px" value="$i18n.getString( </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>‘clear_cache’ )" onclick=“window.location.href=‘clearCache.action’”></p></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>=== modified file</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm’</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <hr> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <pre><code> 2009-10-07 18:53:11 +0000 </code></pre> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>+++</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <pre><code> 2010-02-23 19:44:51 +0000 </code></pre> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>@@ -1,5 +1,5 @@</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>-<h3>$i18n.getString( “data_statistics” )</h3></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>+<h3>$i18n.getString( “data_statistics” ) #openHelp( “dataStatistics”</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>)</h3></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <table> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <pre><code> <tr> </code></pre> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>=== modified file</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm’</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <hr> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>2010-01-28 09:50:27 +0000</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>+++</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>2010-02-23 19:44:51 +0000</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>@@ -1,4 +1,5 @@</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>-<h3>$i18n.getString( “zero_storage_management” )</h3></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <ul> <li></li> </ul> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>+<h3>$i18n.getString( “zero_storage_management” ) #openHelp(</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p>“zeroValueStorage” )</h3></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <br> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <form id="ZeroDataValueManagement" method="POST"

action=“updateZeroIsSignificantForDataElements.action”>


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Hi Lars

I must admit that I was thinking along similar lines to Jason. The
translation from docbook elements to (x)html elements does seem to be
a bit redundant. Assuming that we were to include the full xhtml
transform of the documentation with dhis anyway, then your online help
can reference that as easily as the docbook source.

But I do agree with all your points regarding locating and filtering
the right content. So you might still use a transformation to do it.
But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.
The transform would be a bit simpler - still locating the section by
id (we need to just ensure that those ids are in the docbook src and
they percolate through to the xhtml). The main difference would be
that you wouldn't need to transform the elements in any way - just
select and filter them.

The way you might do this is to apply the identity transformation
which simply copies input tree to output tree. Then you filter as
appropriate. Very roughly speaking you might have something like this
(assuming h3 tags had ids for help sections - as you know the key() is
optional - I just cut and pasted):

    <xsl:param name="sectionId">learningObjectives</xsl:param>

    <xsl:key name="sections" match="/xhtml/body/h3" use="@id" />

<!-- this will override the more general match -->
    <xsl:template match="h3">
        <xsl:copy>
<!-- only process paras and lists from here-->
            <xsl:apply-templates select="p|ul|ol"/>
        </xsl:copy>
    </xsl:template>

    <!-- identity template
        in the absence of any more specific instructions - just copy all to all
    -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/">
          <xsl:apply-templates select="key('sections',$sectionId)"/>
    </xsl:template>

And I guess the source document needn't come from the docbook file in
resources but from a url like http://localhost/docs/manual.xhtml\. Or
the file in resources - up to you.

What do you think?

Bob.

PS. on an aside I am now more unsure that I have located the
LocationManagerResolver in the wrong package. Here already there
might be need for an additional resolver (ResourcesResolver).
Currently if your xslt was any more complex and called an import() or
document() function its going to resolve relative references via the
locationmanager, which wouldn't be what you want. I think I should
possibly make a uri resolvers package in import export module.

···

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:

2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when
typically my head is clearer. I am just wondering about the best way
to do this. The DocBocX maven plugin is actually capable of applying a
custom XSL to the DocBook XML source files. So, I am wondering if
there is a need to have this code in DHIS, instead of relying on the
documentation build process itself to output the required format (XML,
XHTML). I am wondering about this a bit, as at some point the
documents may be upgraded to DocBook 5.0, which might require further
changes to the code itself inside of DHIS2. Since we have decided to
keep the documentation branch separate from the main branch (which I
think is actually the right thing to do), I am wondering what happens
when maybe we upgrade to 5.0, or another version. The DocBkX maven
plugin should provide the functionality required to output essentially
any format, even if there needs to be a separate plugin built to
export XML. I am not totally sure I understand all the mojo
terminology here http://docbkx-tools.sourceforge.net/ but it would
seem that the plugin is actually built from the DocBook XSL sources
themselves, which are under constant development themselves
(http://docbook.sourceforge.net/release/xsl/current/\). It would seem
good to reuse as much as we can from there, so as to insulate DHIS
from different versions of DocBook.

My other question would be, is the transformation from XML really
necessary? If a browser renderable format such as XHTML was rendered
properly and included with DHIS, would it be necessary to render the
DocBook source at runtime? If appropriate <id> tags were used at
sections in the document, it should be possible to find this directly
in an XHTML document, as opposed to having to transform the document
from XML source and into another format each time the user needs help.
It would then be someones responsibility to map the ids in the docbook
source, back to a specific URL of the application.

Best regards,
Jason

Hi,
thanks for providing feedback on this. First I am open for suggestions on
improvements. Using XHTML as basis might very well be sensible.
They way I see it the xslt still gives you a few advantages:
- you can pick and choose the elements you need from the docbook file, eg
omitting screenshots which we don't want in the help text
- only loading the part of the docbook file relevant for the current help
text from the server, not the whole document.
- easily locating the right section.
I might be missing something from your suggestion though...
cheers
Lars

Anyway, some early morning thoughts..

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:
>
>
> On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe <bobjolliffe@gmail.com> >> > wrote:
>>
>> Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
>> see the transformer getting some exercise. And a great consequence of
>> the move to docbook. Its hard to imagine how we could have linked
>> this up to our original word documentation.
>>
>
> Happy you liked it.. Also starting to like xslt, consider me a member of
> the
> club:-)
>
>>
>> On 23 February 2010 19:47, <noreply@launchpad.net> wrote:
>> > ------------------------------------------------------------
>> > revno: 1474
>> > committer: Lars Helge Oeverland <larshelge@gmail.com>
>> > branch nick: trunk
>> > timestamp: Tue 2010-02-23 20:44:51 +0100
>> > message:
>> > Work in progress on embedded help function. Finished
>> > data-web-maintenance-dataadmin module.
>> > modified:
>> >
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > dhis-2/dhis-options/src/main/resources/help_content.xml
>> > dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> >
>> >
>> > --
>> > lp:dhis2
>> > trunk : Code : DHIS
>> >
>> > Your team DHIS 2 developers is subscribed to branch lp:dhis2.
>> > To unsubscribe from this branch go to
>> >
>> > https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
>> > ---
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 17:10:02 +0000
>> > +++
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 19:44:51 +0000
>> > @@ -48,11 +48,9 @@
>> > {
>> > try
>> > {
>> > - TransformerFactory factory =
>> > TransformerFactory.newInstance();
>> > -
>> > Source stylesheet = new StreamSource( new
>> > ClassPathResource(
>> > "help_stylesheet.xsl" ).getInputStream() );
>> >
>> > - Transformer transformer = factory.newTransformer(
>> > stylesheet );
>> > + Transformer transformer =
>> > TransformerFactory.newInstance().newTransformer( stylesheet );
>> >
>> > transformer.setParameter( "sectionId", id );
>> >
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_content.xml'
>> > --- dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,40 +1,276 @@
>> > -<?xml version='1.0' encoding='UTF-8'?>
>> > -<chapter>
>> > - <title>Data Quality</title>
>> > - <para>The data quality module provides means to improve the
>> > quality
>> > of the data in the system. This can be done through validation rules
>> > and
>> > various statistical checks.</para>
>> > - <section id="learningObjectives">
>> > - <title>Learning Objectives</title>
>> > - <para>After reading this module you will be able to
>> > understand:</para>
>> > - <orderedlist>
>> > - <listitem>
>> > - <para>What is data quality and its importance for
>> > HMIS.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to do data quality check at point of data
>> > entry.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to create data validation rules.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to carry out data triangulation.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to analyze data status.</para>
>> > - </listitem>
>> > - </orderedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > - <section id="overview">
>> > - <title>Overview of data quality check</title>
>> > - <para>Ensuring data quality is a key concern in building an
>> > effective HMIS. Data quality has different dimensions
>> > including:</para>
>> > - <itemizedlist>
>> > - <listitem>
>> > - <para><emphasis>Correctness:</emphasis> Data should be
>> > within
>> > the normal range for data collected at that facility. There should be
>> > no
>> > gross discrepancies when compared with data from related data
>> > elements.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para><emphasis>Completeness:</emphasis> Data for all data
>> > elements for all health facilities/blocks/Taluka/districts should
>> > have been
>> > submitted.</para>
>> > - </listitem>
>> > - </itemizedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > -</chapter>
>> > +<?xml version='1.0' encoding='UTF-8'?>
>> > +<?xml-stylesheet type="text/xsl" href="find.xsl"?>
>> > +<book>
>> > + <chapter>
>> > + <title>Data Administration in DHIS 2</title>
>> > + <para>The data administration module provides a range of
>> > functions to ensure that the data stored in the DHIS2 database is
>> > integral
>> > and that the database performance is optimised. These functions
>> > should be
>> > executed on a regular basis by a data administrator to ensure that
>> > the
>> > quality of the data stored is optimal. </para>
>> > + <section id="dataBrowser">
>> > + <title>Data browser</title>
>> > + <para>The data browser maintenance module allows the user to
>> > produce a summary of the data contained in the DHIS2 database. This
>> > summary
>> > provides the number of data element values that have been recorded
>> > for a
>> > given time interval and then grouped by the following options:</para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Data sets</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational unit groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational units</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + <para>Each of these options can be accessed by selecting the
>> > desired option from <guilabel>&quot;Browse by&quot;
>> > </guilabel>drop-down
>> > menu. </para>
>> > + <para>In order to produce a summary of submitted data for a
>> > given period and grouped by data sets, the user should follow this
>> > procedure. Begin by selecting a given periodicity type (e.g. Weekly,
>> > monthly, yearly, etc) and then a time interval (e.g. January 2009 to
>> > March
>> > 2009). Select the type of summary to be produced (e.g. Dataset) from
>> > the
>> > &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot;
>> > button to
>> > view the summary. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="70%" align="center"
>> > fileref="resources/images/maintainence/data_browser1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>A summary of the number of data element values that
>> > have
>> > been submitted over the user selected time period is shown below.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_browsing_data_sets.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on the name of the individual dataset, a
>> > more detailed summary of each data element can be obtained as shown
>> > below.
>> > A cross-tab table summarising each time period will be shown.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> >
>> > fileref="resources/images/maintainence/data_browser_dataset_detail.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The functionality of the grouping by Datasets, Data
>> > element groups, and Organisational groups is essentially the same.
>> > </para>
>> > + <para>The functionality of grouping by organisation units
>> > will
>> > be discussed below. Begin by selecting &quot;Organisation units&quot;
>> > from
>> > the &quot;Browse by&quot; drop-down menu. The organisational
>> > hierarchy
>> > present in the database will now be displayed. Organisational units
>> > can be
>> > expanded by clicking on the plus symbol in the organisational tree
>> > view.</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_org_unit1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on an organisational unit, and the
>> > clicking
>> > the &quot;Browse&quot; button, a summary of submitted data elements
>> > present
>> > in the database is returned for all immediate children of the
>> > selected
>> > organisational as shown below</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2a.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>By clicking on one of the organisational units, a
>> > detailed list of data elements is presented by each time period as
>> > shown
>> > below. <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot></para>
>> > + <para>For each of the data browser summaries, a PDF export
>> > can
>> > be produced by specifying a filename in the &quot;Filename&quot;
>> > field,
>> > selecting a font size, a page layout (Landscape or Portrait) and
>> > pressing
>> > the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will
>> > then be
>> > prompted to select a location to save the file to, which can then be
>> > viewed
>> > with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
>> > + </section>
>> > + <section id="dataIntegrity">
>> > + <title>Data integrity</title>
>> > + <para>DHIS2 can perform a wide range of data integrity
>> > checks
>> > on the data contained in the database. Identifying and correcting
>> > data
>> > integrity issues is extremely important for ensuring that the data
>> > used for
>> > analysis purposes is valid. Each of the data integrity checks that
>> > are
>> > performed by the system will be described, along with general
>> > procedures
>> > that can be performed to resolve these issues. </para>
>> > + <section>
>> > + <title>Data elements without data set</title>
>> > + <para>Each data element must be assigned to a data set.
>> > Values for data elements will not be able to be entered into the
>> > system if a
>> > data element is not assigned to a data set. Choose
>> > Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the
>> > &quot;orphaned&quot; data element to the appropriate data set.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements without groups</title>
>> > + <para>Some Data Elements have been allocated to several
>> > Data
>> > Element Groups. This is currently not allowed, because it will result
>> > in
>> > duplication of linked data records in the PivotSource recordsets that
>> > `feed`
>> > the pivot tables. Go to Maintenance -&gt; Data Element Groups to
>> > review each
>> > Data Element identified and remove the incorrect Group
>> > allocations.</para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements assigned to data sets with different
>> > period types</title>
>> > + <para>Data Elements should not be assigned to two separate
>> > data sets whose period types differ. The recommended approach would
>> > be to
>> > create two separate data elements (for instance a monthly and yearly
>> > data
>> > element) and assign these to respective datasets. </para>
>> > + </section>
>> > + <section>
>> > + <title>Data sets not assigned to organisation
>> > units</title>
>> > + <para>All data sets should be assigned to at least one
>> > organisation unit. </para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators with identical formulas</title>
>> > + <para>Although this rule will not affect data quality, it
>> > generally does not make sense to have two indicators with the exact
>> > same
>> > definition. Review the identified indicators and their formulas and
>> > delete
>> > or modify any indicator that appears to be the duplicate.</para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators without groups</title>
>> > + <para>All Data Elements and Indicators must be assigned to
>> > at
>> > least one group, so these Indicators need to be allocated to their
>> > correct
>> > Data Element and Indicator Group. Go to Maintenance -&gt; Indicator
>> > Groups,
>> > and allocate each of the `Orphaned` Indicators to its correct
>> > group.</para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator numerators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the numerator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator denominators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the denominator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation units with cyclic references</title>
>> > + <para>Organisation units cannot be both parent and
>> > children
>> > of each other, directly nor indirectly.</para>
>> > + </section>
>> > + <section>
>> > + <title>Orphaned organisation units</title>
>> > + <para>All organisation units must exist within the
>> > organisation unit hierarchy. Go to Organisation-&gt;Hierarchy
>> > Operations and
>> > move the offending organisation unit into the proper position in the
>> > hierarchy. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units without groups</title>
>> > + <para>All organisation units <emphasis>must</emphasis> be
>> > allocated to at least <emphasis>one</emphasis> group. The problem
>> > might
>> > either be that you have not defined any `compulsory` OrgUnit Group
>> > Set at
>> > all, or that there are violations of the `compulsory` rule for some
>> > OrgUnits
>> > . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then
>> > you
>> > must first define them by going to Maintenance -&gt; Organisation
>> > units-&gt;Organisation unit group sets and define at least one
>> > `compulsory`
>> > Group Set (the group set `OrgUnitType` are nearly universally
>> > relevant). If
>> > you have the relevant group sets, go to Maintenance -&gt; OrgUnit
>> > Groups to
>> > review each OrgUnit identified and add the relevant Group
>> > allocation.</para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating compulsory group
>> > sets</title>
>> > + <para>These organisation units have not been assigned to
>> > the
>> > any organisation unit group within one of the
>> > <emphasis>compulsory</emphasis> organisation unit group sets. When a
>> > group
>> > set is defined as `compulsory`, it means that an organisation unit
>> > must be
>> > allocated to at least one organisation unit group within that group
>> > set. For
>> > instance, all organisation units must belong to one of the groups in
>> > the
>> > `organisation unitType` group set. It might belong to the `Hospital`
>> > or the
>> > `Clinic` or any other `type` group - but it must belong to exactly
>> > one of
>> > them. Go to Maintenance -&gt; organisation unit-&gt;Organisation
>> > unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Allocate all organisation units to exactly one group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating exclusive group
>> > sets</title>
>> > + <para>Some organisation units have been allocated to
>> > several
>> > organisation unit groups that are members of the same exclusive
>> > organisation
>> > unit group set. When a group set is defined as exclusive, it means
>> > that an
>> > organisation unit can <emphasis>only</emphasis> be allocated to
>> > <emphasis>one</emphasis> organisation unit group within that Group
>> > Set. For
>> > instance, one organisation unit cannot normally belong to the both
>> > the
>> > &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to
>> > only to
>> > one of them. Go to Maintenance -&gt; organisation
>> > unit-&gt;Organisation unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Remove the organisation unit from all groups except the one that it
>> > should
>> > be allocated to. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation unit groups without group
>> > sets</title>
>> > + <para>The organisation unit groups listed here have not
>> > been
>> > allocated to a group set. Go to Maintenance-&gt;Organisation
>> > unit-&gt;Organisation unit group sets and allocate the Organisation
>> > unit
>> > group to the appropriate group set. </para>
>> > + </section>
>> > + <section>
>> > + <title>Validation rules without groups</title>
>> > + <para>All validation rules must be assigned to a group. Go
>> > to
>> > <command>Services-&gt;Data quality-&gt;Validation rule
>> > group</command> and
>> > assign the offending validation rule to a group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule left side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit left side&quot; and make the corrections that are
>> > required.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule right side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit right side&quot; and make the corrections that are
>> > required.</para>
>> > + </section>
>> > + </section>
>> > + <section id="maintenance">
>> > + <title>Maintenance</title>
>> > + <para>The data maintenance module has five options, each
>> > described below. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Clear hierarchy history</para>
>> > + <para>DHIS 2 maintains an audit trail of changes to the
>> > organisation unit hierarchy for aggregation purposes. This function
>> > clears
>> > the hierarchy history.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated datavalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated data element values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated
>> > indicatorvalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated indicator values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear zero values</para>
>> > + <para>This function removes zero data values from the
>> > database. Values registered for data elements with aggregation
>> > operator
>> > <emphasis role="italic">average</emphasis> is not removed, as such
>> > values
>> > will be significant when aggregating the data, contrary to values
>> > registered
>> > for data elements with aggregation operator <emphasis
>> > role="italic">sum</emphasis>. Reducing the number of data values will
>> > improve system performance.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear dataset completeness</para>
>> > + <para>This function removes aggregated dataset
>> > completeness
>> > values. This data is produced and used by report tables.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Prune periods</para>
>> > + <para>This function removes all periods which have no
>> > registered data values. Reducing the number of periods will improve
>> > system
>> > performance.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="resourceTables">
>> > + <title>Resource tables</title>
>> > + <para>Resource tables are supporting tables that are used
>> > during analysis of data. One would typically join the contents of
>> > these
>> > tables with the data value table when doing queries from third-party
>> > applications like Microsoft Excel. Simply select the tables that
>> > should be
>> > regenerated and press &quot;Generate tables&quot;. Regeneration of
>> > the
>> > resource tables should only be done once all data integrity issues
>> > are
>> > resolved. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Organisation unit structure
>> > (orgunitstructure)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been any changes made to the organisational unit hierarchy. This
>> > table
>> > provides information about the organisation unit hierarchy. It has
>> > one row
>> > for each organisation unit, one column for each organisation unit
>> > level and
>> > the organisation unit identifiers for all parents in the lineage as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Exclusive organisation unit groupset structure
>> > normalized (orgunitgroupsetstructure)</para>
>> > + <para>This table provides information about the which
>> > organisation units are member of which organisation unit group
>> > sets.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element group set structure
>> > (_dataelementgroupsetstructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which data element group sets. The table has
>> > one row
>> > for each data element, one column for each data element group set
>> > and the
>> > names of the data element group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Indicator group set structure
>> > (_indicatorgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > indicators are members of which indicator group sets. The table has
>> > one row
>> > for each indicator, one column for each indicator group set and the
>> > names of
>> > the indicator group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisation unit group set structure
>> > (_organisationunitgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > organisation units are members of which organisation unit group sets.
>> > The
>> > table has one row for each organisation unit, one column for each
>> > organisation unit group set and the names of the organisation unit
>> > groups as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Category structure (_categorystructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which categories. The table has one row for
>> > each
>> > data element, one column for each category and the names of the
>> > category
>> > options as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element category option combo name
>> > (categoryoptioncomboname)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been changes made to the category combination names. It contains
>> > readable
>> > names for the various combinations of categories.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="organisationUnitMerge">
>> > + <title>Organisation unit merge</title>
>> > + <para>This function is useful when two organisation units
>> > need
>> > to be merged, eg. it is decided that one facility will be shut down
>> > and its
>> > services will be provided by a nearby facility.</para>
>> > + <para>Start by selecting the organisation unit to eliminate
>> > from the tree and click <emphasis role="italic">confirm</emphasis>.
>> > Then
>> > select the organisation unit to keep and click <emphasis
>> > role="italic">confirm</emphasis> again. Finally, verify the selection
>> > and
>> > click <emphasis role="italic">merge</emphasis>. </para>
>> > + <para>In the sitation where data exist for the organisation
>> > unit to eliminate and not for the one to keep, the data will be moved
>> > to the
>> > one to keep. When data exists for both organisation units, the data
>> > will be
>> > summarized and moved to the one to keep. When data exists only for
>> > the one
>> > to keep, no action is taken. The organisation unit to eliminate will
>> > eventually be deleted.</para>
>> > + </section>
>> > + <section id="duplicateDataElimination">
>> > + <title>Duplicate data elimination</title>
>> > + <para>This function is useful when data has been entered
>> > mistakenly for two data elements which represents the same
>> > phenomena.</para>
>> > + <para>Start by selecting the data element to eliminate from
>> > the
>> > list and click confirm. Then select the data element to keep and
>> > click
>> > confirm again. Finally, verify the selection and click merge.</para>
>> > + <para>In the situation where data exists for the data
>> > element
>> > to eliminate and not for the one to keep, the data will be moved to
>> > the one
>> > to keep. When data exists for both data elements, the data which was
>> > updated
>> > last will be used. When data exists only for the one to keep, no
>> > action will
>> > be taken. The data element to eliminate will eventually be deleted,
>> > except
>> > when it is a multidimensional data element and has other data
>> > registered.</para>
>> > + </section>
>> > + <section id="dataStatistics">
>> > + <title>Data statistics</title>
>> > + <para>The data statistics module provides an overview of the
>> > number of objects stored in the DHIS2 database. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The total number of each type of object is presented
>> > in a
>> > table, as well as a graph. </para>
>> > + </section>
>> > + <section id="dataLocking">
>> > + <title>Data locking</title>
>> > + <para>This module gives users the privilege of locking
>> > certain
>> > datasets for chosen organisation units. This encourages timely data
>> > entry
>> > and prevents unwanted to changes to the data once it has been
>> > entered. When
>> > the ‘Data Administration’ option is chosen the data locking interface
>> > is
>> > displayed. The user has to select the periodicity of the report e.g.
>> > monthly, quarterly or
>> > + yearly for which the data is to be locked. The month, quarter or
>> > year
>> > for which the reports are to be locked is then specified. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The unlocked data sets for the period are displayed
>> > and
>> > the user will then have to choose the data sets to be locked.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>After choosing the datasets to be locked, double click
>> > on
>> > each one by one to display the organisation unit tree in the field
>> > below.
>> > Click on the organisation unit to lock the dataset.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select3.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The <guibutton>Apply Locks on All</guibutton> button
>> > locks the dataset for all the organisation units to which that
>> > dataset has
>> > been assigned. <guibutton>‘Remove locks on All’</guibutton> removes
>> > all
>> > locks put on the organisation units corresponding to the selected
>> > dataset.
>> > After the operations are completed the user must click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Lock at
>> > level’</guibutton> button locks datasets at a particular level that
>> > the user
>> > chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks
>> > that have
>> > been put on the organisation units corresponding to the selected
>> > dataset at
>> > the selected level. After the operations are completed, the user must
>> > click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Save’</guibutton> button will also lock those
>> > organisation unit
>> > datasets that have been specified by the user.
>> > + </para>
>> > + </section>
>> > + <section id="zeroValueStorage">
>> > + <title>Zero value storage</title>
>> > + <para>The zero value storage function makes it possible to
>> > define for which data elements the system should store zero values.
>> > In most
>> > cases zeros are significant only for a subset of the data elements in
>> > the
>> > database. Zero values will be ignored during data entry for selected
>> > data
>> > elements.</para>
>> > + </section>
>> > + <section id="cacheStatistics">
>> > + <title>Cache Statistics </title>
>> > + <para>This option is for system administrators only to use.
>> > The
>> > cache statistics shows the status of the application level cache. The
>> > application level cache refers to the objects and query results that
>> > the
>> > application is caching in order to speed up performance. If the
>> > database has
>> > been modified directly the application cache needs to be cleared for
>> > it to
>> > take effect.</para>
>> > + </section>
>> > + </chapter>
>> > +</book>
>> > \ No newline at end of file
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
>> > --- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 19:44:51 +0000
>> > @@ -28,7 +28,7 @@
>> > </xsl:template>
>> >
>> > <xsl:template match="/">
>> > - <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
>> > + <xsl:apply-templates
>> > select="book/chapter/section[@id=$sectionId]"/>
>> > </xsl:template>
>> >
>> > </xsl:stylesheet>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 18:58:09 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 19:44:51 +0000
>> > @@ -18,6 +18,7 @@
>> > padding-right: 15px;
>> > padding-top: 9px;
>> > padding-bottom: 9px;
>> > + overflow: auto;
>> > }
>> >
>> > #hideRightBar
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
>> > Binary files
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2009-04-20 14:54:22 +0000 and
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2010-02-23 19:44:51 +0000 differ
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
>> > ---
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2009-11-02 18:13:58 +0000
>> > +++
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -91,7 +91,7 @@
>> > #end
>> >
>> > #macro( openHelp $id )
>> > -<a href="javascript:openHelpForm('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > +<a href="javascript:getHelpContent('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > #end
>> >
>> > #macro( introListItem $action $objectKey )
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2009-10-28 12:38:33 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_browser" )</h3>
>> > +<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser"
>> > )</h3>
>> >
>> > <form method="get" action="searchResult.action" onsubmit="return
>> > validate()">
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-01 15:30:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -6,7 +6,7 @@
>> >
>> > #end
>> >
>> > -<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
>> > +<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp(
>> > "dataIntegrity" )</h3>
>> >
>> > #parse( "dhis-web-commons/loader/loader.vm" )
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-04 12:29:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
>> > +<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp(
>> > "duplicateDataElimination" )</h3>
>> >
>> > <div>
>> > <label>$i18n.getString( "filter" ):</label><br>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2009-12-29 07:14:28 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,4 @@
>> > -<h3>$i18n.getString( "data_locking_form" )</h3>
>> > +<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking"
>> > )</h3>
>> >
>> > <span id="message"></span>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2009-12-17 09:22:20 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "maintenance" )</h3>
>> > +<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="hierarchyHistory">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-01-25 11:54:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "organisation_unit_merge" )</h3>
>> > +<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp(
>> > "organisationUnitMerge" )</h3>
>> >
>> > <div id="selectionTree" style="width:500px; height:200px"></div>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-01-15 11:32:18 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "resource_table" )</h3>
>> > +<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables"
>> > )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="organisationUnit">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2009-03-03 16:46:36 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -9,7 +9,7 @@
>> > }
>> > </style>
>> >
>> > -<h3>$i18n.getString( "cache_statistics" )</h3>
>> > +<h3>$i18n.getString( "cache_statistics" ) #openHelp(
>> > "cacheStatistics"
>> > )</h3>
>> >
>> > <p><input type="button" style="width:150px" value="$i18n.getString(
>> > 'clear_cache' )"
>> > onclick="window.location.href='clearCache.action'"></p>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2009-10-07 18:53:11 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_statistics" )</h3>
>> > +<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics"
>> > )</h3>
>> >
>> > <table>
>> > <tr>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-01-28 09:50:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,5 @@
>> > -<h3>$i18n.getString( "zero_storage_management" )</h3>
>> > +
>> > +<h3>$i18n.getString( "zero_storage_management" ) #openHelp(
>> > "zeroValueStorage" )</h3>
>> > <br>
>> > <form id="ZeroDataValueManagement" method="POST"
>> > action="updateZeroIsSignificantForDataElements.action">
>> > <table>
>> >
>> >
>> > _______________________________________________
>> > Mailing list: https://launchpad.net/~dhis2-devs
>> > Post to : dhis2-devs@lists.launchpad.net
>> > Unsubscribe : https://launchpad.net/~dhis2-devs
>> > More help : https://help.launchpad.net/ListHelp
>> >
>> >
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to : dhis2-devs@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help : https://help.launchpad.net/ListHelp
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help : https://help.launchpad.net/ListHelp
>
>

Hi Lars,
I think Bob and I are seeing essentially the same pathway here. Let me
try and elaborate a bit more.

Using the htmlCustomization property in the document pom.xml file,
along with a custom stylesheet, it should be possible to output a
custom x(html) from the documentation source build, for example
stripping out the screenshots and other ornaments that might not be
necessary for the inline help function. Look at the current pom and
see how I reference a custom stylesheet for the PDF transformation
(which actually needs work).

<foCustomization>${docbook.source}/en/resources/xsl/fop-cust.xsl</foCustomization>

I would think that we could produce a separate output during the build
something like this, but not sure this is exactly valid...

<executions>
          <execution>
            <id>inline-help-xhtml</id>
             <phase>package</phase>
               <goals>
                <goal>generate-xhtml</goal>
               </goals>
            <configuration>
         <htmlCustomization>${docbook.source}/en/resources/xsl/inline-cust.xsl</htmlCustomization>
          <postProcess>
            <copy todir="${dhis2_help.docs}/en/">
              <fileset dir="target/docbkx/">
                <include name="**/*.html" />
              </fileset>
            </copy>
          </postProcess>
        </configuration>
       </execution>

the dhis2_help variable would need to be defined obviously, and the
correct directory would need to be set. So during the packaging, the
docs would be generated first, then the web portal would package the
revised document up. This is what I was thinking anyway...

Hope this is more clear.

Best regards,
Jason

···

2010/2/24 Bob Jolliffe <bobjolliffe@gmail.com>:

Hi Lars

I must admit that I was thinking along similar lines to Jason. The
translation from docbook elements to (x)html elements does seem to be
a bit redundant. Assuming that we were to include the full xhtml
transform of the documentation with dhis anyway, then your online help
can reference that as easily as the docbook source.

But I do agree with all your points regarding locating and filtering
the right content. So you might still use a transformation to do it.
But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.
The transform would be a bit simpler - still locating the section by
id (we need to just ensure that those ids are in the docbook src and
they percolate through to the xhtml). The main difference would be
that you wouldn't need to transform the elements in any way - just
select and filter them.

The way you might do this is to apply the identity transformation
which simply copies input tree to output tree. Then you filter as
appropriate. Very roughly speaking you might have something like this
(assuming h3 tags had ids for help sections - as you know the key() is
optional - I just cut and pasted):

<xsl:param name="sectionId">learningObjectives</xsl:param>

<xsl:key name="sections" match="/xhtml/body/h3" use="@id" />

<!-- this will override the more general match -->
<xsl:template match="h3">
<xsl:copy>
<!-- only process paras and lists from here-->
<xsl:apply-templates select="p|ul|ol"/>
</xsl:copy>
</xsl:template>

<!-- identity template
in the absence of any more specific instructions - just copy all to all
-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/">
<xsl:apply-templates select="key('sections',$sectionId)"/>
</xsl:template>

And I guess the source document needn't come from the docbook file in
resources but from a url like http://localhost/docs/manual.xhtml\. Or
the file in resources - up to you.

What do you think?

Bob.

PS. on an aside I am now more unsure that I have located the
LocationManagerResolver in the wrong package. Here already there
might be need for an additional resolver (ResourcesResolver).
Currently if your xslt was any more complex and called an import() or
document() function its going to resolve relative references via the
locationmanager, which wouldn't be what you want. I think I should
possibly make a uri resolvers package in import export module.

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:

2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when
typically my head is clearer. I am just wondering about the best way
to do this. The DocBocX maven plugin is actually capable of applying a
custom XSL to the DocBook XML source files. So, I am wondering if
there is a need to have this code in DHIS, instead of relying on the
documentation build process itself to output the required format (XML,
XHTML). I am wondering about this a bit, as at some point the
documents may be upgraded to DocBook 5.0, which might require further
changes to the code itself inside of DHIS2. Since we have decided to
keep the documentation branch separate from the main branch (which I
think is actually the right thing to do), I am wondering what happens
when maybe we upgrade to 5.0, or another version. The DocBkX maven
plugin should provide the functionality required to output essentially
any format, even if there needs to be a separate plugin built to
export XML. I am not totally sure I understand all the mojo
terminology here http://docbkx-tools.sourceforge.net/ but it would
seem that the plugin is actually built from the DocBook XSL sources
themselves, which are under constant development themselves
(http://docbook.sourceforge.net/release/xsl/current/\). It would seem
good to reuse as much as we can from there, so as to insulate DHIS
from different versions of DocBook.

My other question would be, is the transformation from XML really
necessary? If a browser renderable format such as XHTML was rendered
properly and included with DHIS, would it be necessary to render the
DocBook source at runtime? If appropriate <id> tags were used at
sections in the document, it should be possible to find this directly
in an XHTML document, as opposed to having to transform the document
from XML source and into another format each time the user needs help.
It would then be someones responsibility to map the ids in the docbook
source, back to a specific URL of the application.

Best regards,
Jason

Hi,
thanks for providing feedback on this. First I am open for suggestions on
improvements. Using XHTML as basis might very well be sensible.
They way I see it the xslt still gives you a few advantages:
- you can pick and choose the elements you need from the docbook file, eg
omitting screenshots which we don't want in the help text
- only loading the part of the docbook file relevant for the current help
text from the server, not the whole document.
- easily locating the right section.
I might be missing something from your suggestion though...
cheers
Lars

Anyway, some early morning thoughts..

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:
>
>
> On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe <bobjolliffe@gmail.com> >>> > wrote:
>>
>> Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
>> see the transformer getting some exercise. And a great consequence of
>> the move to docbook. Its hard to imagine how we could have linked
>> this up to our original word documentation.
>>
>
> Happy you liked it.. Also starting to like xslt, consider me a member of
> the
> club:-)
>
>>
>> On 23 February 2010 19:47, <noreply@launchpad.net> wrote:
>> > ------------------------------------------------------------
>> > revno: 1474
>> > committer: Lars Helge Oeverland <larshelge@gmail.com>
>> > branch nick: trunk
>> > timestamp: Tue 2010-02-23 20:44:51 +0100
>> > message:
>> > Work in progress on embedded help function. Finished
>> > data-web-maintenance-dataadmin module.
>> > modified:
>> >
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > dhis-2/dhis-options/src/main/resources/help_content.xml
>> > dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> >
>> >
>> > --
>> > lp:dhis2
>> > trunk : Code : DHIS
>> >
>> > Your team DHIS 2 developers is subscribed to branch lp:dhis2.
>> > To unsubscribe from this branch go to
>> >
>> > https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
>> > ---
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 17:10:02 +0000
>> > +++
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 19:44:51 +0000
>> > @@ -48,11 +48,9 @@
>> > {
>> > try
>> > {
>> > - TransformerFactory factory =
>> > TransformerFactory.newInstance();
>> > -
>> > Source stylesheet = new StreamSource( new
>> > ClassPathResource(
>> > "help_stylesheet.xsl" ).getInputStream() );
>> >
>> > - Transformer transformer = factory.newTransformer(
>> > stylesheet );
>> > + Transformer transformer =
>> > TransformerFactory.newInstance().newTransformer( stylesheet );
>> >
>> > transformer.setParameter( "sectionId", id );
>> >
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_content.xml'
>> > --- dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,40 +1,276 @@
>> > -<?xml version='1.0' encoding='UTF-8'?>
>> > -<chapter>
>> > - <title>Data Quality</title>
>> > - <para>The data quality module provides means to improve the
>> > quality
>> > of the data in the system. This can be done through validation rules
>> > and
>> > various statistical checks.</para>
>> > - <section id="learningObjectives">
>> > - <title>Learning Objectives</title>
>> > - <para>After reading this module you will be able to
>> > understand:</para>
>> > - <orderedlist>
>> > - <listitem>
>> > - <para>What is data quality and its importance for
>> > HMIS.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to do data quality check at point of data
>> > entry.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to create data validation rules.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to carry out data triangulation.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to analyze data status.</para>
>> > - </listitem>
>> > - </orderedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > - <section id="overview">
>> > - <title>Overview of data quality check</title>
>> > - <para>Ensuring data quality is a key concern in building an
>> > effective HMIS. Data quality has different dimensions
>> > including:</para>
>> > - <itemizedlist>
>> > - <listitem>
>> > - <para><emphasis>Correctness:</emphasis> Data should be
>> > within
>> > the normal range for data collected at that facility. There should be
>> > no
>> > gross discrepancies when compared with data from related data
>> > elements.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para><emphasis>Completeness:</emphasis> Data for all data
>> > elements for all health facilities/blocks/Taluka/districts should
>> > have been
>> > submitted.</para>
>> > - </listitem>
>> > - </itemizedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > -</chapter>
>> > +<?xml version='1.0' encoding='UTF-8'?>
>> > +<?xml-stylesheet type="text/xsl" href="find.xsl"?>
>> > +<book>
>> > + <chapter>
>> > + <title>Data Administration in DHIS 2</title>
>> > + <para>The data administration module provides a range of
>> > functions to ensure that the data stored in the DHIS2 database is
>> > integral
>> > and that the database performance is optimised. These functions
>> > should be
>> > executed on a regular basis by a data administrator to ensure that
>> > the
>> > quality of the data stored is optimal. </para>
>> > + <section id="dataBrowser">
>> > + <title>Data browser</title>
>> > + <para>The data browser maintenance module allows the user to
>> > produce a summary of the data contained in the DHIS2 database. This
>> > summary
>> > provides the number of data element values that have been recorded
>> > for a
>> > given time interval and then grouped by the following options:</para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Data sets</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational unit groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational units</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + <para>Each of these options can be accessed by selecting the
>> > desired option from <guilabel>&quot;Browse by&quot;
>> > </guilabel>drop-down
>> > menu. </para>
>> > + <para>In order to produce a summary of submitted data for a
>> > given period and grouped by data sets, the user should follow this
>> > procedure. Begin by selecting a given periodicity type (e.g. Weekly,
>> > monthly, yearly, etc) and then a time interval (e.g. January 2009 to
>> > March
>> > 2009). Select the type of summary to be produced (e.g. Dataset) from
>> > the
>> > &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot;
>> > button to
>> > view the summary. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="70%" align="center"
>> > fileref="resources/images/maintainence/data_browser1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>A summary of the number of data element values that
>> > have
>> > been submitted over the user selected time period is shown below.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_browsing_data_sets.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on the name of the individual dataset, a
>> > more detailed summary of each data element can be obtained as shown
>> > below.
>> > A cross-tab table summarising each time period will be shown.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> >
>> > fileref="resources/images/maintainence/data_browser_dataset_detail.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The functionality of the grouping by Datasets, Data
>> > element groups, and Organisational groups is essentially the same.
>> > </para>
>> > + <para>The functionality of grouping by organisation units
>> > will
>> > be discussed below. Begin by selecting &quot;Organisation units&quot;
>> > from
>> > the &quot;Browse by&quot; drop-down menu. The organisational
>> > hierarchy
>> > present in the database will now be displayed. Organisational units
>> > can be
>> > expanded by clicking on the plus symbol in the organisational tree
>> > view.</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_org_unit1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on an organisational unit, and the
>> > clicking
>> > the &quot;Browse&quot; button, a summary of submitted data elements
>> > present
>> > in the database is returned for all immediate children of the
>> > selected
>> > organisational as shown below</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2a.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>By clicking on one of the organisational units, a
>> > detailed list of data elements is presented by each time period as
>> > shown
>> > below. <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot></para>
>> > + <para>For each of the data browser summaries, a PDF export
>> > can
>> > be produced by specifying a filename in the &quot;Filename&quot;
>> > field,
>> > selecting a font size, a page layout (Landscape or Portrait) and
>> > pressing
>> > the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will
>> > then be
>> > prompted to select a location to save the file to, which can then be
>> > viewed
>> > with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
>> > + </section>
>> > + <section id="dataIntegrity">
>> > + <title>Data integrity</title>
>> > + <para>DHIS2 can perform a wide range of data integrity
>> > checks
>> > on the data contained in the database. Identifying and correcting
>> > data
>> > integrity issues is extremely important for ensuring that the data
>> > used for
>> > analysis purposes is valid. Each of the data integrity checks that
>> > are
>> > performed by the system will be described, along with general
>> > procedures
>> > that can be performed to resolve these issues. </para>
>> > + <section>
>> > + <title>Data elements without data set</title>
>> > + <para>Each data element must be assigned to a data set.
>> > Values for data elements will not be able to be entered into the
>> > system if a
>> > data element is not assigned to a data set. Choose
>> > Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the
>> > &quot;orphaned&quot; data element to the appropriate data set.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements without groups</title>
>> > + <para>Some Data Elements have been allocated to several
>> > Data
>> > Element Groups. This is currently not allowed, because it will result
>> > in
>> > duplication of linked data records in the PivotSource recordsets that
>> > `feed`
>> > the pivot tables. Go to Maintenance -&gt; Data Element Groups to
>> > review each
>> > Data Element identified and remove the incorrect Group
>> > allocations.</para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements assigned to data sets with different
>> > period types</title>
>> > + <para>Data Elements should not be assigned to two separate
>> > data sets whose period types differ. The recommended approach would
>> > be to
>> > create two separate data elements (for instance a monthly and yearly
>> > data
>> > element) and assign these to respective datasets. </para>
>> > + </section>
>> > + <section>
>> > + <title>Data sets not assigned to organisation
>> > units</title>
>> > + <para>All data sets should be assigned to at least one
>> > organisation unit. </para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators with identical formulas</title>
>> > + <para>Although this rule will not affect data quality, it
>> > generally does not make sense to have two indicators with the exact
>> > same
>> > definition. Review the identified indicators and their formulas and
>> > delete
>> > or modify any indicator that appears to be the duplicate.</para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators without groups</title>
>> > + <para>All Data Elements and Indicators must be assigned to
>> > at
>> > least one group, so these Indicators need to be allocated to their
>> > correct
>> > Data Element and Indicator Group. Go to Maintenance -&gt; Indicator
>> > Groups,
>> > and allocate each of the `Orphaned` Indicators to its correct
>> > group.</para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator numerators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the numerator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator denominators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the denominator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation units with cyclic references</title>
>> > + <para>Organisation units cannot be both parent and
>> > children
>> > of each other, directly nor indirectly.</para>
>> > + </section>
>> > + <section>
>> > + <title>Orphaned organisation units</title>
>> > + <para>All organisation units must exist within the
>> > organisation unit hierarchy. Go to Organisation-&gt;Hierarchy
>> > Operations and
>> > move the offending organisation unit into the proper position in the
>> > hierarchy. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units without groups</title>
>> > + <para>All organisation units <emphasis>must</emphasis> be
>> > allocated to at least <emphasis>one</emphasis> group. The problem
>> > might
>> > either be that you have not defined any `compulsory` OrgUnit Group
>> > Set at
>> > all, or that there are violations of the `compulsory` rule for some
>> > OrgUnits
>> > . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then
>> > you
>> > must first define them by going to Maintenance -&gt; Organisation
>> > units-&gt;Organisation unit group sets and define at least one
>> > `compulsory`
>> > Group Set (the group set `OrgUnitType` are nearly universally
>> > relevant). If
>> > you have the relevant group sets, go to Maintenance -&gt; OrgUnit
>> > Groups to
>> > review each OrgUnit identified and add the relevant Group
>> > allocation.</para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating compulsory group
>> > sets</title>
>> > + <para>These organisation units have not been assigned to
>> > the
>> > any organisation unit group within one of the
>> > <emphasis>compulsory</emphasis> organisation unit group sets. When a
>> > group
>> > set is defined as `compulsory`, it means that an organisation unit
>> > must be
>> > allocated to at least one organisation unit group within that group
>> > set. For
>> > instance, all organisation units must belong to one of the groups in
>> > the
>> > `organisation unitType` group set. It might belong to the `Hospital`
>> > or the
>> > `Clinic` or any other `type` group - but it must belong to exactly
>> > one of
>> > them. Go to Maintenance -&gt; organisation unit-&gt;Organisation
>> > unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Allocate all organisation units to exactly one group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating exclusive group
>> > sets</title>
>> > + <para>Some organisation units have been allocated to
>> > several
>> > organisation unit groups that are members of the same exclusive
>> > organisation
>> > unit group set. When a group set is defined as exclusive, it means
>> > that an
>> > organisation unit can <emphasis>only</emphasis> be allocated to
>> > <emphasis>one</emphasis> organisation unit group within that Group
>> > Set. For
>> > instance, one organisation unit cannot normally belong to the both
>> > the
>> > &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to
>> > only to
>> > one of them. Go to Maintenance -&gt; organisation
>> > unit-&gt;Organisation unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Remove the organisation unit from all groups except the one that it
>> > should
>> > be allocated to. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation unit groups without group
>> > sets</title>
>> > + <para>The organisation unit groups listed here have not
>> > been
>> > allocated to a group set. Go to Maintenance-&gt;Organisation
>> > unit-&gt;Organisation unit group sets and allocate the Organisation
>> > unit
>> > group to the appropriate group set. </para>
>> > + </section>
>> > + <section>
>> > + <title>Validation rules without groups</title>
>> > + <para>All validation rules must be assigned to a group. Go
>> > to
>> > <command>Services-&gt;Data quality-&gt;Validation rule
>> > group</command> and
>> > assign the offending validation rule to a group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule left side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit left side&quot; and make the corrections that are
>> > required.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule right side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit right side&quot; and make the corrections that are
>> > required.</para>
>> > + </section>
>> > + </section>
>> > + <section id="maintenance">
>> > + <title>Maintenance</title>
>> > + <para>The data maintenance module has five options, each
>> > described below. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Clear hierarchy history</para>
>> > + <para>DHIS 2 maintains an audit trail of changes to the
>> > organisation unit hierarchy for aggregation purposes. This function
>> > clears
>> > the hierarchy history.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated datavalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated data element values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated
>> > indicatorvalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated indicator values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear zero values</para>
>> > + <para>This function removes zero data values from the
>> > database. Values registered for data elements with aggregation
>> > operator
>> > <emphasis role="italic">average</emphasis> is not removed, as such
>> > values
>> > will be significant when aggregating the data, contrary to values
>> > registered
>> > for data elements with aggregation operator <emphasis
>> > role="italic">sum</emphasis>. Reducing the number of data values will
>> > improve system performance.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear dataset completeness</para>
>> > + <para>This function removes aggregated dataset
>> > completeness
>> > values. This data is produced and used by report tables.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Prune periods</para>
>> > + <para>This function removes all periods which have no
>> > registered data values. Reducing the number of periods will improve
>> > system
>> > performance.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="resourceTables">
>> > + <title>Resource tables</title>
>> > + <para>Resource tables are supporting tables that are used
>> > during analysis of data. One would typically join the contents of
>> > these
>> > tables with the data value table when doing queries from third-party
>> > applications like Microsoft Excel. Simply select the tables that
>> > should be
>> > regenerated and press &quot;Generate tables&quot;. Regeneration of
>> > the
>> > resource tables should only be done once all data integrity issues
>> > are
>> > resolved. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Organisation unit structure
>> > (orgunitstructure)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been any changes made to the organisational unit hierarchy. This
>> > table
>> > provides information about the organisation unit hierarchy. It has
>> > one row
>> > for each organisation unit, one column for each organisation unit
>> > level and
>> > the organisation unit identifiers for all parents in the lineage as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Exclusive organisation unit groupset structure
>> > normalized (orgunitgroupsetstructure)</para>
>> > + <para>This table provides information about the which
>> > organisation units are member of which organisation unit group
>> > sets.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element group set structure
>> > (_dataelementgroupsetstructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which data element group sets. The table has
>> > one row
>> > for each data element, one column for each data element group set
>> > and the
>> > names of the data element group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Indicator group set structure
>> > (_indicatorgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > indicators are members of which indicator group sets. The table has
>> > one row
>> > for each indicator, one column for each indicator group set and the
>> > names of
>> > the indicator group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisation unit group set structure
>> > (_organisationunitgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > organisation units are members of which organisation unit group sets.
>> > The
>> > table has one row for each organisation unit, one column for each
>> > organisation unit group set and the names of the organisation unit
>> > groups as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Category structure (_categorystructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which categories. The table has one row for
>> > each
>> > data element, one column for each category and the names of the
>> > category
>> > options as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element category option combo name
>> > (categoryoptioncomboname)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been changes made to the category combination names. It contains
>> > readable
>> > names for the various combinations of categories.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="organisationUnitMerge">
>> > + <title>Organisation unit merge</title>
>> > + <para>This function is useful when two organisation units
>> > need
>> > to be merged, eg. it is decided that one facility will be shut down
>> > and its
>> > services will be provided by a nearby facility.</para>
>> > + <para>Start by selecting the organisation unit to eliminate
>> > from the tree and click <emphasis role="italic">confirm</emphasis>.
>> > Then
>> > select the organisation unit to keep and click <emphasis
>> > role="italic">confirm</emphasis> again. Finally, verify the selection
>> > and
>> > click <emphasis role="italic">merge</emphasis>. </para>
>> > + <para>In the sitation where data exist for the organisation
>> > unit to eliminate and not for the one to keep, the data will be moved
>> > to the
>> > one to keep. When data exists for both organisation units, the data
>> > will be
>> > summarized and moved to the one to keep. When data exists only for
>> > the one
>> > to keep, no action is taken. The organisation unit to eliminate will
>> > eventually be deleted.</para>
>> > + </section>
>> > + <section id="duplicateDataElimination">
>> > + <title>Duplicate data elimination</title>
>> > + <para>This function is useful when data has been entered
>> > mistakenly for two data elements which represents the same
>> > phenomena.</para>
>> > + <para>Start by selecting the data element to eliminate from
>> > the
>> > list and click confirm. Then select the data element to keep and
>> > click
>> > confirm again. Finally, verify the selection and click merge.</para>
>> > + <para>In the situation where data exists for the data
>> > element
>> > to eliminate and not for the one to keep, the data will be moved to
>> > the one
>> > to keep. When data exists for both data elements, the data which was
>> > updated
>> > last will be used. When data exists only for the one to keep, no
>> > action will
>> > be taken. The data element to eliminate will eventually be deleted,
>> > except
>> > when it is a multidimensional data element and has other data
>> > registered.</para>
>> > + </section>
>> > + <section id="dataStatistics">
>> > + <title>Data statistics</title>
>> > + <para>The data statistics module provides an overview of the
>> > number of objects stored in the DHIS2 database. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The total number of each type of object is presented
>> > in a
>> > table, as well as a graph. </para>
>> > + </section>
>> > + <section id="dataLocking">
>> > + <title>Data locking</title>
>> > + <para>This module gives users the privilege of locking
>> > certain
>> > datasets for chosen organisation units. This encourages timely data
>> > entry
>> > and prevents unwanted to changes to the data once it has been
>> > entered. When
>> > the ‘Data Administration’ option is chosen the data locking interface
>> > is
>> > displayed. The user has to select the periodicity of the report e.g.
>> > monthly, quarterly or
>> > + yearly for which the data is to be locked. The month, quarter or
>> > year
>> > for which the reports are to be locked is then specified. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The unlocked data sets for the period are displayed
>> > and
>> > the user will then have to choose the data sets to be locked.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>After choosing the datasets to be locked, double click
>> > on
>> > each one by one to display the organisation unit tree in the field
>> > below.
>> > Click on the organisation unit to lock the dataset.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select3.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The <guibutton>Apply Locks on All</guibutton> button
>> > locks the dataset for all the organisation units to which that
>> > dataset has
>> > been assigned. <guibutton>‘Remove locks on All’</guibutton> removes
>> > all
>> > locks put on the organisation units corresponding to the selected
>> > dataset.
>> > After the operations are completed the user must click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Lock at
>> > level’</guibutton> button locks datasets at a particular level that
>> > the user
>> > chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks
>> > that have
>> > been put on the organisation units corresponding to the selected
>> > dataset at
>> > the selected level. After the operations are completed, the user must
>> > click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Save’</guibutton> button will also lock those
>> > organisation unit
>> > datasets that have been specified by the user.
>> > + </para>
>> > + </section>
>> > + <section id="zeroValueStorage">
>> > + <title>Zero value storage</title>
>> > + <para>The zero value storage function makes it possible to
>> > define for which data elements the system should store zero values.
>> > In most
>> > cases zeros are significant only for a subset of the data elements in
>> > the
>> > database. Zero values will be ignored during data entry for selected
>> > data
>> > elements.</para>
>> > + </section>
>> > + <section id="cacheStatistics">
>> > + <title>Cache Statistics </title>
>> > + <para>This option is for system administrators only to use.
>> > The
>> > cache statistics shows the status of the application level cache. The
>> > application level cache refers to the objects and query results that
>> > the
>> > application is caching in order to speed up performance. If the
>> > database has
>> > been modified directly the application cache needs to be cleared for
>> > it to
>> > take effect.</para>
>> > + </section>
>> > + </chapter>
>> > +</book>
>> > \ No newline at end of file
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
>> > --- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 19:44:51 +0000
>> > @@ -28,7 +28,7 @@
>> > </xsl:template>
>> >
>> > <xsl:template match="/">
>> > - <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
>> > + <xsl:apply-templates
>> > select="book/chapter/section[@id=$sectionId]"/>
>> > </xsl:template>
>> >
>> > </xsl:stylesheet>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 18:58:09 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 19:44:51 +0000
>> > @@ -18,6 +18,7 @@
>> > padding-right: 15px;
>> > padding-top: 9px;
>> > padding-bottom: 9px;
>> > + overflow: auto;
>> > }
>> >
>> > #hideRightBar
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
>> > Binary files
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2009-04-20 14:54:22 +0000 and
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2010-02-23 19:44:51 +0000 differ
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
>> > ---
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2009-11-02 18:13:58 +0000
>> > +++
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -91,7 +91,7 @@
>> > #end
>> >
>> > #macro( openHelp $id )
>> > -<a href="javascript:openHelpForm('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > +<a href="javascript:getHelpContent('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > #end
>> >
>> > #macro( introListItem $action $objectKey )
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2009-10-28 12:38:33 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_browser" )</h3>
>> > +<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser"
>> > )</h3>
>> >
>> > <form method="get" action="searchResult.action" onsubmit="return
>> > validate()">
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-01 15:30:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -6,7 +6,7 @@
>> >
>> > #end
>> >
>> > -<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
>> > +<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp(
>> > "dataIntegrity" )</h3>
>> >
>> > #parse( "dhis-web-commons/loader/loader.vm" )
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-04 12:29:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
>> > +<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp(
>> > "duplicateDataElimination" )</h3>
>> >
>> > <div>
>> > <label>$i18n.getString( "filter" ):</label><br>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2009-12-29 07:14:28 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,4 @@
>> > -<h3>$i18n.getString( "data_locking_form" )</h3>
>> > +<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking"
>> > )</h3>
>> >
>> > <span id="message"></span>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2009-12-17 09:22:20 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "maintenance" )</h3>
>> > +<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="hierarchyHistory">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-01-25 11:54:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "organisation_unit_merge" )</h3>
>> > +<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp(
>> > "organisationUnitMerge" )</h3>
>> >
>> > <div id="selectionTree" style="width:500px; height:200px"></div>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-01-15 11:32:18 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "resource_table" )</h3>
>> > +<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables"
>> > )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="organisationUnit">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2009-03-03 16:46:36 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -9,7 +9,7 @@
>> > }
>> > </style>
>> >
>> > -<h3>$i18n.getString( "cache_statistics" )</h3>
>> > +<h3>$i18n.getString( "cache_statistics" ) #openHelp(
>> > "cacheStatistics"
>> > )</h3>
>> >
>> > <p><input type="button" style="width:150px" value="$i18n.getString(
>> > 'clear_cache' )"
>> > onclick="window.location.href='clearCache.action'"></p>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2009-10-07 18:53:11 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_statistics" )</h3>
>> > +<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics"
>> > )</h3>
>> >
>> > <table>
>> > <tr>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-01-28 09:50:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,5 @@
>> > -<h3>$i18n.getString( "zero_storage_management" )</h3>
>> > +
>> > +<h3>$i18n.getString( "zero_storage_management" ) #openHelp(
>> > "zeroValueStorage" )</h3>
>> > <br>
>> > <form id="ZeroDataValueManagement" method="POST"
>> > action="updateZeroIsSignificantForDataElements.action">
>> > <table>
>> >
>> >
>> > _______________________________________________
>> > Mailing list: https://launchpad.net/~dhis2-devs
>> > Post to : dhis2-devs@lists.launchpad.net
>> > Unsubscribe : https://launchpad.net/~dhis2-devs
>> > More help : https://help.launchpad.net/ListHelp
>> >
>> >
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to : dhis2-devs@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help : https://help.launchpad.net/ListHelp
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help : https://help.launchpad.net/ListHelp
>
>

Hi Lars

I must admit that I was thinking along similar lines to Jason. The

translation from docbook elements to (x)html elements does seem to be

a bit redundant. Assuming that we were to include the full xhtml

transform of the documentation with dhis anyway, then your online help

can reference that as easily as the docbook source.

That’s just fine with me…

But I do agree with all your points regarding locating and filtering

the right content. So you might still use a transformation to do it.

But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.

The transform would be a bit simpler - still locating the section by

id (we need to just ensure that those ids are in the docbook src and

they percolate through to the xhtml). The main difference would be

that you wouldn’t need to transform the elements in any way - just

select and filter them.

The way you might do this is to apply the identity transformation

which simply copies input tree to output tree. Then you filter as

appropriate. Very roughly speaking you might have something like this

(assuming h3 tags had ids for help sections - as you know the key() is

optional - I just cut and pasted):

<xsl:param name="sectionId">learningObjectives</xsl:param>



<xsl:key name="sections" match="/xhtml/body/h3" use="@id" />
<xsl:template match="h3">

    <xsl:copy>
        <xsl:apply-templates select="p|ul|ol"/>

    </xsl:copy>

</xsl:template>





<!-- identity template

    in the absence of any more specific instructions - just copy all to all

-->

<xsl:template match="@*|node()">

    <xsl:copy>

        <xsl:apply-templates select="@*|node()"/>

    </xsl:copy>

</xsl:template>

<xsl:template match="/">

<xsl:apply-templates select=“key(‘sections’,$sectionId)”/>

</xsl:template>

OK will have a closer look at this.

And I guess the source document needn’t come from the docbook file in

resources but from a url like http://localhost/docs/manual.xhtml. Or

the file in resources - up to you.

What do you think?

Bob.

PS. on an aside I am now more unsure that I have located the

LocationManagerResolver in the wrong package. Here already there

might be need for an additional resolver (ResourcesResolver).

Currently if your xslt was any more complex and called an import() or

document() function its going to resolve relative references via the

locationmanager, which wouldn’t be what you want. I think I should

possibly make a uri resolvers package in import export module.

OK that sounds sensible. We might wait with that until we need it though…

Thanks for the input.

···

2010/2/24 Bob Jolliffe bobjolliffe@gmail.com

2010/2/24 Lars Helge Øverland larshelge@gmail.com:

2010/2/24 Jason Pickering jason.p.pickering@gmail.com

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when

typically my head is clearer. I am just wondering about the best way

to do this. The DocBocX maven plugin is actually capable of applying a

custom XSL to the DocBook XML source files. So, I am wondering if

there is a need to have this code in DHIS, instead of relying on the

documentation build process itself to output the required format (XML,

XHTML). I am wondering about this a bit, as at some point the

documents may be upgraded to DocBook 5.0, which might require further

changes to the code itself inside of DHIS2. Since we have decided to

keep the documentation branch separate from the main branch (which I

think is actually the right thing to do), I am wondering what happens

when maybe we upgrade to 5.0, or another version. The DocBkX maven

plugin should provide the functionality required to output essentially

any format, even if there needs to be a separate plugin built to

export XML. I am not totally sure I understand all the mojo

terminology here http://docbkx-tools.sourceforge.net/ but it would

seem that the plugin is actually built from the DocBook XSL sources

themselves, which are under constant development themselves

(http://docbook.sourceforge.net/release/xsl/current/). It would seem

good to reuse as much as we can from there, so as to insulate DHIS

from different versions of DocBook.

My other question would be, is the transformation from XML really

necessary? If a browser renderable format such as XHTML was rendered

properly and included with DHIS, would it be necessary to render the

DocBook source at runtime? If appropriate tags were used at

sections in the document, it should be possible to find this directly

in an XHTML document, as opposed to having to transform the document

from XML source and into another format each time the user needs help.

It would then be someones responsibility to map the ids in the docbook

source, back to a specific URL of the application.

Best regards,

Jason

Hi,

thanks for providing feedback on this. First I am open for suggestions on

improvements. Using XHTML as basis might very well be sensible.

They way I see it the xslt still gives you a few advantages:

  • you can pick and choose the elements you need from the docbook file, eg

omitting screenshots which we don’t want in the help text

  • only loading the part of the docbook file relevant for the current help

text from the server, not the whole document.

  • easily locating the right section.

I might be missing something from your suggestion though…

cheers

Lars

Anyway, some early morning thoughts…

2010/2/24 Lars Helge Øverland larshelge@gmail.com:

On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe bobjolliffe@gmail.com > > >> > wrote:

Just gave it a spin. Lars that’s just too cool for words :slight_smile: Nice to

see the transformer getting some exercise. And a great consequence of

the move to docbook. Its hard to imagine how we could have linked

this up to our original word documentation.

Happy you liked it… Also starting to like xslt, consider me a member of

the

club:-)

On 23 February 2010 19:47, noreply@launchpad.net wrote:


revno: 1474

committer: Lars Helge Oeverland larshelge@gmail.com

branch nick: trunk

timestamp: Tue 2010-02-23 20:44:51 +0100

message:

Work in progress on embedded help function. Finished

data-web-maintenance-dataadmin module.

modified:

dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

dhis-2/dhis-options/src/main/resources/help_content.xml

dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm

lp:dhis2

https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.

To unsubscribe from this branch go to

https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription.

=== modified file

‘dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java’


dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

   2010-02-23 17:10:02 +0000

+++

dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java

   2010-02-23 19:44:51 +0000

@@ -48,11 +48,9 @@

{
    try
    {
  •        TransformerFactory factory =
    

TransformerFactory.newInstance();

        Source stylesheet = new StreamSource( new

ClassPathResource(

“help_stylesheet.xsl” ).getInputStream() );

  •        Transformer transformer = factory.newTransformer(
    

stylesheet );

  •        Transformer transformer =
    

TransformerFactory.newInstance().newTransformer( stylesheet );

        transformer.setParameter( "sectionId", id );

=== modified file

‘dhis-2/dhis-options/src/main/resources/help_content.xml’

— dhis-2/dhis-options/src/main/resources/help_content.xml

2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_content.xml

2010-02-23 19:44:51 +0000

@@ -1,40 +1,276 @@

-<?xml version='1.0' encoding='UTF-8'?>

-

  • Data Quality
  • The data quality module provides means to improve the

quality

of the data in the system. This can be done through validation rules

and

various statistical checks.

  • Learning Objectives
  • After reading this module you will be able to

understand:

  •  <orderedlist>
    
  •    <listitem>
    
  •      <para>What is data quality and its importance for
    

HMIS.

  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to do data quality check at point of data
    

entry.

  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to create data validation rules.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to carry out data triangulation.</para>
    
  •    </listitem>
    
  •    <listitem>
    
  •      <para>How to analyze data status.</para>
    
  •    </listitem>
    
  •  </orderedlist>
    
  •   <para>This stuff is in a paragraph</para>
    
  • Overview of data quality check
  • Ensuring data quality is a key concern in building an

effective HMIS. Data quality has different dimensions

including:

  •  <itemizedlist>
    
  •    <listitem>
    
  •      <para><emphasis>Correctness:</emphasis> Data should be
    

within

the normal range for data collected at that facility. There should be

no

gross discrepancies when compared with data from related data

elements.

  •    </listitem>
    
  •    <listitem>
    
  •      <para><emphasis>Completeness:</emphasis> Data for all data
    

elements for all health facilities/blocks/Taluka/districts should

have been

submitted.

  •    </listitem>
    
  •  </itemizedlist>
    
  •   <para>This stuff is in a paragraph</para>
    

-

+<?xml version='1.0' encoding='UTF-8'?>

+<?xml-stylesheet type="text/xsl" href="find.xsl"?>

+

  • Data Administration in DHIS 2
  •  <para>The data administration module provides a range of
    

functions to ensure that the data stored in the DHIS2 database is

integral

and that the database performance is optimised. These functions

should be

executed on a regular basis by a data administrator to ensure that

the

quality of the data stored is optimal.

  •  <section id="dataBrowser">
    
  •    <title>Data browser</title>
    
  •    <para>The data browser maintenance module allows the user to
    

produce a summary of the data contained in the DHIS2 database. This

summary

provides the number of data element values that have been recorded

for a

given time interval and then grouped by the following options:

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Data sets</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational unit groups</para>
    
  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisational units</para>
    
  •      </listitem>
    
  •    </itemizedlist>
    
  •    <para>Each of these options can be accessed by selecting the
    

desired option from "Browse by"

drop-down

menu.

  •    <para>In order to produce a summary of submitted data for a
    

given period and grouped by data sets, the user should follow this

procedure. Begin by selecting a given periodicity type (e.g. Weekly,

monthly, yearly, etc) and then a time interval (e.g. January 2009 to

March

2009). Select the type of summary to be produced (e.g. Dataset) from

the

"Browse by" drop-down menu. Click the "Browse"

button to

view the summary.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="70%" align="center"
    

fileref=“resources/images/maintainence/data_browser1.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>A summary of the number  of data element values that
    

have

been submitted over the user selected time period is shown below.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_browsing_data_sets.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on the name of the individual dataset, a
    

more detailed summary of each data element can be obtained as shown

below.

A cross-tab table summarising each time period will be shown.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_browser_dataset_detail.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The functionality of the grouping by Datasets, Data
    

element groups, and Organisational groups is essentially the same.

  •    <para>The functionality of grouping by organisation units
    

will

be discussed below. Begin by selecting "Organisation units"

from

the "Browse by" drop-down menu. The organisational

hierarchy

present in the database will now be displayed. Organisational units

can be

expanded by clicking on the plus symbol in the organisational tree

view.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_org_unit1.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para> By clicking on an organisational unit, and the
    

clicking

the "Browse" button, a summary of submitted data elements

present

in the database is returned for all immediate children of the

selected

organisational as shown below

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_orgunit2a.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>By clicking on one of the organisational units, a
    

detailed list of data elements is presented by each time period as

shown

below.

  •        <mediaobject>
    
  •          <imageobject>
    
  •            <imagedata width="60%" align="center"
    

fileref=“resources/images/maintainence/data_browser_orgunit2.png”

format=“PNG”/>

  •          </imageobject>
    
  •        </mediaobject>
    
  •      </screenshot></para>
    
  •    <para>For each of the data browser summaries, a PDF export
    

can

be produced by specifying a filename in the "Filename"

field,

selecting a font size, a page layout (Landscape or Portrait) and

pressing

the "Export PDF" button. You will

then be

prompted to select a location to save the file to, which can then be

viewed

with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc).

  •  </section>
    
  •  <section id="dataIntegrity">
    
  •    <title>Data integrity</title>
    
  •    <para>DHIS2 can perform a wide range of data integrity
    

checks

on the data contained in the database. Identifying and correcting

data

integrity issues is extremely important for ensuring that the data

used for

analysis purposes is valid. Each of the data integrity checks that

are

performed by the system will be described, along with general

procedures

that can be performed to resolve these issues.

  •    <section>
    
  •      <title>Data elements without data set</title>
    
  •      <para>Each data element must be assigned to a data set.
    

Values for data elements will not be able to be entered into the

system if a

data element is not assigned to a data set. Choose

Maintenance->Datasets->Edit from the main menu and then add the

"orphaned" data element to the appropriate data set.

  •    </section>
    
  •    <section>
    
  •      <title>Data elements without groups</title>
    
  •      <para>Some Data Elements have been allocated to several
    

Data

Element Groups. This is currently not allowed, because it will result

in

duplication of linked data records in the PivotSource recordsets that

feed

the pivot tables. Go to Maintenance -> Data Element Groups to

review each

Data Element identified and remove the incorrect Group

allocations.

  •    </section>
    
  •    <section>
    
  •      <title>Data elements assigned to data sets with different
    

period types

  •      <para>Data Elements should not be assigned to two separate
    

data sets whose period types differ. The recommended approach would

be to

create two separate data elements (for instance a monthly and yearly

data

element) and assign these to respective datasets.

  •    </section>
    
  •    <section>
    
  •      <title>Data sets not assigned to organisation
    

units

  •      <para>All data sets should be assigned to at least one
    

organisation unit.

  •    </section>
    
  •    <section>
    
  •      <title>Indicators with identical formulas</title>
    
  •      <para>Although this rule will not affect data quality, it
    

generally does not make sense to have two indicators with the exact

same

definition. Review the identified indicators and their formulas and

delete

or modify any indicator that appears to be the duplicate.

  •    </section>
    
  •    <section>
    
  •      <title>Indicators without groups</title>
    
  •      <para>All Data Elements and Indicators must be assigned to
    

at

least one group, so these Indicators need to be allocated to their

correct

Data Element and Indicator Group. Go to Maintenance -> Indicator

Groups,

and allocate each of the Orphaned Indicators to its correct

group.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator numerators</title>
    
  •      <para>Violations of this rule may be caused by an
    

incorrect

reference to a deleted or modified data element. Review the indicator

and

make corrections to the numerator definition.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid indicator denominators</title>
    
  •      <para>Violations of this rule may be caused by an
    

incorrect

reference to a deleted or modified data element. Review the indicator

and

make corrections to the denominator definition.

  •    </section>
    
  •    <section>
    
  •      <title> Organisation units with cyclic references</title>
    
  •      <para>Organisation units cannot be both parent and
    

children

of each other, directly nor indirectly.

  •    </section>
    
  •    <section>
    
  •      <title>Orphaned organisation units</title>
    
  •      <para>All organisation units must exist within the
    

organisation unit hierarchy. Go to Organisation->Hierarchy

Operations and

move the offending organisation unit into the proper position in the

hierarchy.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units without groups</title>
    
  •      <para>All organisation units <emphasis>must</emphasis> be
    

allocated to at least one group. The problem

might

either be that you have not defined any compulsory OrgUnit Group

Set at

all, or that there are violations of the compulsory rule for some

OrgUnits

. NOTE: If you have defined no compulsory OrgUnit Group Sets, then

you

must first define them by going to Maintenance -> Organisation

units->Organisation unit group sets and define at least one

compulsory

Group Set (the group set OrgUnitType are nearly universally

relevant). If

you have the relevant group sets, go to Maintenance -> OrgUnit

Groups to

review each OrgUnit identified and add the relevant Group

allocation.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating compulsory group
    

sets

  •      <para>These organisation units have not been assigned to
    

the

any organisation unit group within one of the

compulsory organisation unit group sets. When a

group

set is defined as compulsory, it means that an organisation unit

must be

allocated to at least one organisation unit group within that group

set. For

instance, all organisation units must belong to one of the groups in

the

organisation unitType group set. It might belong to the Hospital

or the

Clinic or any other type group - but it must belong to exactly

one of

them. Go to Maintenance -> organisation unit->Organisation

unit

groups to review each organisation unit identified in the integrity

check.

Allocate all organisation units to exactly one group.

  •    </section>
    
  •    <section>
    
  •      <title>Organisation units violating exclusive group
    

sets

  •      <para>Some organisation units have been allocated to
    

several

organisation unit groups that are members of the same exclusive

organisation

unit group set. When a group set is defined as exclusive, it means

that an

organisation unit can only be allocated to

one organisation unit group within that Group

Set. For

instance, one organisation unit cannot normally belong to the both

the

'Hospital' and 'Clinic' groups , but rather to

only to

one of them. Go to Maintenance -> organisation

unit->Organisation unit

groups to review each organisation unit identified in the integrity

check.

Remove the organisation unit from all groups except the one that it

should

be allocated to.

  •    </section>
    
  •    <section>
    
  •      <title> Organisation unit groups without group
    

sets

  •      <para>The organisation unit groups listed here have not
    

been

allocated to a group set. Go to Maintenance->Organisation

unit->Organisation unit group sets and allocate the Organisation

unit

group to the appropriate group set.

  •    </section>
    
  •    <section>
    
  •      <title>Validation rules without groups</title>
    
  •      <para>All validation rules must be assigned to a group. Go
    

to

Services->Data quality->Validation rule

group and

assign the offending validation rule to a group.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule left side
    

expressions

  •      <para>An error exists in the left-side validation rule
    

definition. Go to Services->Data quality->Validation

rule and click the "Edit" icon on the offending

rule.

Press "Edit left side" and make the corrections that are

required.

  •    </section>
    
  •    <section>
    
  •      <title>Invalid validation rule right side
    

expressions

  •      <para>An error exists in the left-side validation rule
    

definition. Go to Services->Data quality->Validation

rule and click the "Edit" icon on the offending

rule.

Press "Edit right side" and make the corrections that are

required.

  •    </section>
    
  •  </section>
    
  •  <section id="maintenance">
    
  •    <title>Maintenance</title>
    
  •    <para>The data maintenance module has five options, each
    

described below.

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Clear hierarchy history</para>
    
  •        <para>DHIS 2 maintains an audit trail of changes to the
    

organisation unit hierarchy for aggregation purposes. This function

clears

the hierarchy history.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated datavalues)</para>
    
  •        <para>The data mart is where DHIS 2 stores aggregated
    

data

produced during the export to data mart process. This function clears

the

database table which contains aggregated data element values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear data mart (aggregated
    

indicatorvalues)

  •        <para>The data mart is where DHIS 2 stores aggregated
    

data

produced during the export to data mart process. This function clears

the

database table which contains aggregated indicator values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear zero values</para>
    
  •        <para>This function removes zero data values from the
    

database. Values registered for data elements with aggregation

operator

average is not removed, as such

values

will be significant when aggregating the data, contrary to values

registered

for data elements with aggregation operator <emphasis

role=“italic”>sum. Reducing the number of data values will

improve system performance.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Clear dataset completeness</para>
    
  •        <para>This function removes aggregated dataset
    

completeness

values. This data is produced and used by report tables.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Prune periods</para>
    
  •        <para>This function removes all periods which have no
    

registered data values. Reducing the number of periods will improve

system

performance.

  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="resourceTables">
    
  •    <title>Resource tables</title>
    
  •    <para>Resource tables are supporting tables that are used
    

during analysis of data. One would typically join the contents of

these

tables with the data value table when doing queries from third-party

applications like Microsoft Excel. Simply select the tables that

should be

regenerated and press "Generate tables". Regeneration of

the

resource tables should only be done once all data integrity issues

are

resolved.

  •    <itemizedlist>
    
  •      <listitem>
    
  •        <para>Organisation unit structure
    

(orgunitstructure)

  •        <para>This table should be regenerated any time there
    

have

been any changes made to the organisational unit hierarchy. This

table

provides information about the organisation unit hierarchy. It has

one row

for each organisation unit, one column for each organisation unit

level and

the organisation unit identifiers for all parents in the lineage as

values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Exclusive organisation unit groupset structure
    

normalized (orgunitgroupsetstructure)

  •        <para>This table provides information about the which
    

organisation units are member of which organisation unit group

sets.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element group set structure
    

(_dataelementgroupsetstructure)

  •        <para>This table provides information about which data
    

elements are members of which data element group sets. The table has

one row

for each data element, one column for each data element group set

and the

names of the data element group as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Indicator group set structure
    

(_indicatorgroupsetstructure)

  •        <para>This table provides information about which
    

indicators are members of which indicator group sets. The table has

one row

for each indicator, one column for each indicator group set and the

names of

the indicator group as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Organisation unit group set structure
    

(_organisationunitgroupsetstructure)

  •        <para>This table provides information about which
    

organisation units are members of which organisation unit group sets.

The

table has one row for each organisation unit, one column for each

organisation unit group set and the names of the organisation unit

groups as

values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Category structure (_categorystructure)</para>
    
  •        <para>This table provides information about which data
    

elements are members of which categories. The table has one row for

each

data element, one column for each category and the names of the

category

options as values.

  •      </listitem>
    
  •      <listitem>
    
  •        <para>Data element category option combo name
    

(categoryoptioncomboname)

  •        <para>This table should be regenerated any time there
    

have

been changes made to the category combination names. It contains

readable

names for the various combinations of categories.

  •      </listitem>
    
  •    </itemizedlist>
    
  •  </section>
    
  •  <section id="organisationUnitMerge">
    
  •    <title>Organisation unit merge</title>
    
  •    <para>This function is useful when two organisation units
    

need

to be merged, eg. it is decided that one facility will be shut down

and its

services will be provided by a nearby facility.

  •    <para>Start by selecting the organisation unit to eliminate
    

from the tree and click confirm.

Then

select the organisation unit to keep and click <emphasis

role=“italic”>confirm again. Finally, verify the selection

and

click merge.

  •    <para>In the sitation where data exist  for the organisation
    

unit to eliminate and not for the one to keep, the data will be moved

to the

one to keep. When data exists for both organisation units, the data

will be

summarized and moved to the one to keep. When data exists only for

the one

to keep, no action is taken. The organisation unit to eliminate will

eventually be deleted.

  •  </section>
    
  •  <section id="duplicateDataElimination">
    
  •    <title>Duplicate data elimination</title>
    
  •    <para>This function is useful when data has been entered
    

mistakenly for two data elements which represents the same

phenomena.

  •    <para>Start by selecting the data element to eliminate from
    

the

list and click confirm. Then select the data element to keep and

click

confirm again. Finally, verify the selection and click merge.

  •    <para>In the situation where data exists for the data
    

element

to eliminate and not for the one to keep, the data will be moved to

the one

to keep. When data exists for both data elements, the data which was

updated

last will be used. When data exists only for the one to keep, no

action will

be taken. The data element to eliminate will eventually be deleted,

except

when it is a multidimensional data element and has other data

registered.

  •  </section>
    
  •  <section id="dataStatistics">
    
  •    <title>Data statistics</title>
    
  •    <para>The data statistics module provides an overview of the
    

number of objects stored in the DHIS2 database.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_stats.png” format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The total number of each type of object is presented
    

in a

table, as well as a graph.

  •  </section>
    
  •  <section id="dataLocking">
    
  •    <title>Data locking</title>
    
  •    <para>This module gives users the privilege of locking
    

certain

datasets for chosen organisation units. This encourages timely data

entry

and prevents unwanted to changes to the data once it has been

entered. When

the ‘Data Administration’ option is chosen the data locking interface

is

displayed. The user has to select the periodicity of the report e.g.

monthly, quarterly or

  • yearly for which the data is to be locked. The month, quarter or

year

for which the reports are to be locked is then specified.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select1.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The unlocked data sets for the period are displayed
    

and

the user will then have to choose the data sets to be locked.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select2.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>After choosing the datasets to be locked, double click
    

on

each one by one to display the organisation unit tree in the field

below.

Click on the organisation unit to lock the dataset.

  •    <screenshot>
    
  •      <mediaobject>
    
  •        <imageobject>
    
  •          <imagedata width="80%" align="center"
    

fileref=“resources/images/maintainence/data_locking_select3.png”

format=“PNG”/>

  •        </imageobject>
    
  •      </mediaobject>
    
  •    </screenshot>
    
  •    <para>The <guibutton>Apply Locks on All</guibutton> button
    

locks the dataset for all the organisation units to which that

dataset has

been assigned. ‘Remove locks on All’ removes

all

locks put on the organisation units corresponding to the selected

dataset.

After the operations are completed the user must click

‘Save’ to apply the settings. The

‘Lock at

level’ button locks datasets at a particular level that

the user

chooses. . ‘Unlock at Level’ removes locks

that have

been put on the organisation units corresponding to the selected

dataset at

the selected level. After the operations are completed, the user must

click

‘Save’ to apply the settings. The

‘Save’ button will also lock those

organisation unit

datasets that have been specified by the user.

  •  </section>
    
  •  <section id="zeroValueStorage">
    
  •    <title>Zero value storage</title>
    
  •    <para>The zero value storage function makes it possible to
    

define for which data elements the system should store zero values.

In most

cases zeros are significant only for a subset of the data elements in

the

database. Zero values will be ignored during data entry for selected

data

elements.

  •  </section>
    
  •  <section id="cacheStatistics">
    
  •    <title>Cache Statistics </title>
    
  •    <para>This option is for system administrators only to use.
    

The

cache statistics shows the status of the application level cache. The

application level cache refers to the objects and query results that

the

application is caching in order to speed up performance. If the

database has

been modified directly the application cache needs to be cleared for

it to

take effect.

  •  </section>
    

+

\ No newline at end of file

=== modified file

‘dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl’

— dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

2010-02-23 17:10:02 +0000

+++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl

2010-02-23 19:44:51 +0000

@@ -28,7 +28,7 @@

</xsl:template>

<xsl:template match=“/”>

  • <xsl:apply-templates select=“chapter/section[@id=$sectionId]”/>
  • <xsl:apply-templates

select=“book/chapter/section[@id=$sectionId]”/>

</xsl:template>

</xsl:stylesheet>

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css’


dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

2010-02-23 18:58:09 +0000

+++

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css

2010-02-23 19:44:51 +0000

@@ -18,6 +18,7 @@

padding-right: 15px;

padding-top: 9px;

padding-bottom: 9px;

  • overflow: auto;

}

#hideRightBar

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png’

Binary files

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

2009-04-20 14:54:22 +0000 and

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png

 2010-02-23 19:44:51 +0000 differ

=== modified file

‘dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm’


dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

   2009-11-02 18:13:58 +0000

+++

dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm

   2010-02-23 19:44:51 +0000

@@ -91,7 +91,7 @@

#end

#macro( openHelp $id )

-<a href=“javascript:openHelpForm(‘${id}’)” title="$i18n.getString(

‘help’ )“><img src=”…/images/help.png" alt="$i18n.getString( ‘help’

)">

+<a href=“javascript:getHelpContent(‘${id}’)” title="$i18n.getString(

‘help’ )“><img src=”…/images/help.png" alt="$i18n.getString( ‘help’

)">

#end

#macro( introListItem $action $objectKey )

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

  2009-10-28 12:38:33 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm

  2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “data_browser” )

+

$i18n.getString( “data_browser” ) #openHelp( “dataBrowser”

)

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

  2009-12-17 09:22:20 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm

  2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “maintenance” )

+

$i18n.getString( “maintenance” ) #openHelp( “maintenance” )

   <input type="checkbox" id="hierarchyHistory">

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

2010-01-25 11:54:22 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm

2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “organisation_unit_merge” )

+

$i18n.getString( “organisation_unit_merge” ) #openHelp(

“organisationUnitMerge” )

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

2010-01-15 11:32:18 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm

2010-02-23 19:44:51 +0000

@@ -1,5 +1,5 @@

-

$i18n.getString( “resource_table” )

+

$i18n.getString( “resource_table” )#openHelp( “resourceTables”

)

<input type="checkbox" id="organisationUnit">

=== modified file

‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm’


dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

2009-03-03 16:46:36 +0000

+++

dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm

2010-02-23 19:44:51 +0000

@@ -9,7 +9,7 @@

   }

-

$i18n.getString( “cache_statistics” )

+

$i18n.getString( “cache_statistics” ) #openHelp(

“cacheStatistics”

)

<input type="button" style="width:150px" value="$i18n.getString( </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>‘clear_cache’ )"</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>onclick=“window.location.href=‘clearCache.action’”></p></p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>=== modified file</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm’</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <hr> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <pre><code> 2009-10-07 18:53:11 +0000 </code></pre> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>+++</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <pre><code> 2010-02-23 19:44:51 +0000 </code></pre> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>@@ -1,5 +1,5 @@</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>-<h3>$i18n.getString( “data_statistics” )</h3></p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>+<h3>$i18n.getString( “data_statistics” ) #openHelp( “dataStatistics”</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>)</h3></p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <table> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <pre><code> <tr> </code></pre> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>=== modified file</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>‘dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm’</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <hr> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>2010-01-28 09:50:27 +0000</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>+++</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote></blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>2010-02-23 19:44:51 +0000</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>@@ -1,4 +1,5 @@</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>-<h3>$i18n.getString( “zero_storage_management” )</h3></p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <ul> <li></li> </ul> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>+<h3>$i18n.getString( “zero_storage_management” ) #openHelp(</p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p>“zeroValueStorage” )</h3></p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <br> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <form id="ZeroDataValueManagement" method="POST"

action=“updateZeroIsSignificantForDataElements.action”>


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Hi Lars,

I think Bob and I are seeing essentially the same pathway here. Let me

try and elaborate a bit more.

Using the htmlCustomization property in the document pom.xml file,

along with a custom stylesheet, it should be possible to output a

custom x(html) from the documentation source build, for example

stripping out the screenshots and other ornaments that might not be

necessary for the inline help function. Look at the current pom and

see how I reference a custom stylesheet for the PDF transformation

(which actually needs work).

${docbook.source}/en/resources/xsl/fop-cust.xsl

I would think that we could produce a separate output during the build

something like this, but not sure this is exactly valid…

      <execution>

        <id>inline-help-xhtml</id>

         <phase>package</phase>

           <goals>

            <goal>generate-xhtml</goal>

           </goals>

        <configuration>

     <htmlCustomization>${docbook.source}/en/resources/xsl/inline-cust.xsl</htmlCustomization>

      <postProcess>

        <copy todir="${dhis2_help.docs}/en/">

          <fileset dir="target/docbkx/">

            <include name="**/*.html" />

          </fileset>

        </copy>

      </postProcess>

    </configuration>

   </execution>

OK I was actually just giving this a shot but it seems there is no specific goal for generate-xhtml in the plugin… This link suggests a work-around but I couldn’t make it work…

http://groups.google.com/group/docbkx-tools-users/browse_thread/thread/d321fb26a435874d

Maybe you can have a look at it if you have time…

···

2010/2/24 Jason Pickering jason.p.pickering@gmail.com

the dhis2_help variable would need to be defined obviously, and the

correct directory would need to be set. So during the packaging, the

docs would be generated first, then the web portal would package the

revised document up. This is what I was thinking anyway…

Hope this is more clear.

Best regards,

Jason

2010/2/24 Bob Jolliffe bobjolliffe@gmail.com:

Hi Lars

I must admit that I was thinking along similar lines to Jason. The

translation from docbook elements to (x)html elements does seem to be

a bit redundant. Assuming that we were to include the full xhtml

transform of the documentation with dhis anyway, then your online help

can reference that as easily as the docbook source.

But I do agree with all your points regarding locating and filtering

the right content. So you might still use a transformation to do it.

But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.

The transform would be a bit simpler - still locating the section by

id (we need to just ensure that those ids are in the docbook src and

they percolate through to the xhtml). The main difference would be

that you wouldn’t need to transform the elements in any way - just

select and filter them.

The way you might do this is to apply the identity transformation

which simply copies input tree to output tree. Then you filter as

appropriate. Very roughly speaking you might have something like this

(assuming h3 tags had ids for help sections - as you know the key() is

optional - I just cut and pasted):

<xsl:param name=“sectionId”>learningObjectives</xsl:param>

<xsl:key name=“sections” match=“/xhtml/body/h3” use=“@id” />

<xsl:template match=“h3”>

   <xsl:copy>
       <xsl:apply-templates select="p|ul|ol"/>
   </xsl:copy>

</xsl:template>

Hi Lars,
I think Bob and I are seeing essentially the same pathway here. Let me
try and elaborate a bit more.

Almost but not entirely. Why do you want to customize an xhtml build
just for this? We're trying to do more with less here. I am just
proposing that Lars could use the xhtml that is already generated as
part of a standard xhtml build, such as what might for example be
included as an online manual. Not that we need to make a special
version of it for this.

Otherwise his existing approach suffices. There isn't any need to
strip images and things in the maven customized target. He can
lightly skip over them with his xslt anyway.

Cheers
Bob

···

2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>:

Using the htmlCustomization property in the document pom.xml file,
along with a custom stylesheet, it should be possible to output a
custom x(html) from the documentation source build, for example
stripping out the screenshots and other ornaments that might not be
necessary for the inline help function. Look at the current pom and
see how I reference a custom stylesheet for the PDF transformation
(which actually needs work).

<foCustomization>${docbook.source}/en/resources/xsl/fop-cust.xsl</foCustomization>

I would think that we could produce a separate output during the build
something like this, but not sure this is exactly valid...

<executions>
<execution>
<id>inline-help-xhtml</id>
<phase>package</phase>
<goals>
<goal>generate-xhtml</goal>
</goals>
<configuration>
<htmlCustomization>${docbook.source}/en/resources/xsl/inline-cust.xsl</htmlCustomization>
<postProcess>
<copy todir="${dhis2_help.docs}/en/">
<fileset dir="target/docbkx/">
<include name="**/*.html" />
</fileset>
</copy>
</postProcess>
</configuration>
</execution>

the dhis2_help variable would need to be defined obviously, and the
correct directory would need to be set. So during the packaging, the
docs would be generated first, then the web portal would package the
revised document up. This is what I was thinking anyway...

Hope this is more clear.

Best regards,
Jason

2010/2/24 Bob Jolliffe <bobjolliffe@gmail.com>:

Hi Lars

I must admit that I was thinking along similar lines to Jason. The
translation from docbook elements to (x)html elements does seem to be
a bit redundant. Assuming that we were to include the full xhtml
transform of the documentation with dhis anyway, then your online help
can reference that as easily as the docbook source.

But I do agree with all your points regarding locating and filtering
the right content. So you might still use a transformation to do it.
But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.
The transform would be a bit simpler - still locating the section by
id (we need to just ensure that those ids are in the docbook src and
they percolate through to the xhtml). The main difference would be
that you wouldn't need to transform the elements in any way - just
select and filter them.

The way you might do this is to apply the identity transformation
which simply copies input tree to output tree. Then you filter as
appropriate. Very roughly speaking you might have something like this
(assuming h3 tags had ids for help sections - as you know the key() is
optional - I just cut and pasted):

<xsl:param name="sectionId">learningObjectives</xsl:param>

<xsl:key name="sections" match="/xhtml/body/h3" use="@id" />

<!-- this will override the more general match -->
<xsl:template match="h3">
<xsl:copy>
<!-- only process paras and lists from here-->
<xsl:apply-templates select="p|ul|ol"/>
</xsl:copy>
</xsl:template>

<!-- identity template
in the absence of any more specific instructions - just copy all to all
-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/">
<xsl:apply-templates select="key('sections',$sectionId)"/>
</xsl:template>

And I guess the source document needn't come from the docbook file in
resources but from a url like http://localhost/docs/manual.xhtml\. Or
the file in resources - up to you.

What do you think?

Bob.

PS. on an aside I am now more unsure that I have located the
LocationManagerResolver in the wrong package. Here already there
might be need for an additional resolver (ResourcesResolver).
Currently if your xslt was any more complex and called an import() or
document() function its going to resolve relative references via the
locationmanager, which wouldn't be what you want. I think I should
possibly make a uri resolvers package in import export module.

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:

2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>

Hi Lars and company,

I am just sitting here early in the morning with a cup of coffee, when
typically my head is clearer. I am just wondering about the best way
to do this. The DocBocX maven plugin is actually capable of applying a
custom XSL to the DocBook XML source files. So, I am wondering if
there is a need to have this code in DHIS, instead of relying on the
documentation build process itself to output the required format (XML,
XHTML). I am wondering about this a bit, as at some point the
documents may be upgraded to DocBook 5.0, which might require further
changes to the code itself inside of DHIS2. Since we have decided to
keep the documentation branch separate from the main branch (which I
think is actually the right thing to do), I am wondering what happens
when maybe we upgrade to 5.0, or another version. The DocBkX maven
plugin should provide the functionality required to output essentially
any format, even if there needs to be a separate plugin built to
export XML. I am not totally sure I understand all the mojo
terminology here http://docbkx-tools.sourceforge.net/ but it would
seem that the plugin is actually built from the DocBook XSL sources
themselves, which are under constant development themselves
(http://docbook.sourceforge.net/release/xsl/current/\). It would seem
good to reuse as much as we can from there, so as to insulate DHIS
from different versions of DocBook.

My other question would be, is the transformation from XML really
necessary? If a browser renderable format such as XHTML was rendered
properly and included with DHIS, would it be necessary to render the
DocBook source at runtime? If appropriate <id> tags were used at
sections in the document, it should be possible to find this directly
in an XHTML document, as opposed to having to transform the document
from XML source and into another format each time the user needs help.
It would then be someones responsibility to map the ids in the docbook
source, back to a specific URL of the application.

Best regards,
Jason

Hi,
thanks for providing feedback on this. First I am open for suggestions on
improvements. Using XHTML as basis might very well be sensible.
They way I see it the xslt still gives you a few advantages:
- you can pick and choose the elements you need from the docbook file, eg
omitting screenshots which we don't want in the help text
- only loading the part of the docbook file relevant for the current help
text from the server, not the whole document.
- easily locating the right section.
I might be missing something from your suggestion though...
cheers
Lars

Anyway, some early morning thoughts..

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:
>
>
> On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe <bobjolliffe@gmail.com> >>>> > wrote:
>>
>> Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice to
>> see the transformer getting some exercise. And a great consequence of
>> the move to docbook. Its hard to imagine how we could have linked
>> this up to our original word documentation.
>>
>
> Happy you liked it.. Also starting to like xslt, consider me a member of
> the
> club:-)
>
>>
>> On 23 February 2010 19:47, <noreply@launchpad.net> wrote:
>> > ------------------------------------------------------------
>> > revno: 1474
>> > committer: Lars Helge Oeverland <larshelge@gmail.com>
>> > branch nick: trunk
>> > timestamp: Tue 2010-02-23 20:44:51 +0100
>> > message:
>> > Work in progress on embedded help function. Finished
>> > data-web-maintenance-dataadmin module.
>> > modified:
>> >
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > dhis-2/dhis-options/src/main/resources/help_content.xml
>> > dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> >
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> >
>> >
>> > --
>> > lp:dhis2
>> > trunk : Code : DHIS
>> >
>> > Your team DHIS 2 developers is subscribed to branch lp:dhis2.
>> > To unsubscribe from this branch go to
>> >
>> > https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
>> > ---
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 17:10:02 +0000
>> > +++
>> >
>> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>> > 2010-02-23 19:44:51 +0000
>> > @@ -48,11 +48,9 @@
>> > {
>> > try
>> > {
>> > - TransformerFactory factory =
>> > TransformerFactory.newInstance();
>> > -
>> > Source stylesheet = new StreamSource( new
>> > ClassPathResource(
>> > "help_stylesheet.xsl" ).getInputStream() );
>> >
>> > - Transformer transformer = factory.newTransformer(
>> > stylesheet );
>> > + Transformer transformer =
>> > TransformerFactory.newInstance().newTransformer( stylesheet );
>> >
>> > transformer.setParameter( "sectionId", id );
>> >
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_content.xml'
>> > --- dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_content.xml
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,40 +1,276 @@
>> > -<?xml version='1.0' encoding='UTF-8'?>
>> > -<chapter>
>> > - <title>Data Quality</title>
>> > - <para>The data quality module provides means to improve the
>> > quality
>> > of the data in the system. This can be done through validation rules
>> > and
>> > various statistical checks.</para>
>> > - <section id="learningObjectives">
>> > - <title>Learning Objectives</title>
>> > - <para>After reading this module you will be able to
>> > understand:</para>
>> > - <orderedlist>
>> > - <listitem>
>> > - <para>What is data quality and its importance for
>> > HMIS.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to do data quality check at point of data
>> > entry.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to create data validation rules.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to carry out data triangulation.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para>How to analyze data status.</para>
>> > - </listitem>
>> > - </orderedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > - <section id="overview">
>> > - <title>Overview of data quality check</title>
>> > - <para>Ensuring data quality is a key concern in building an
>> > effective HMIS. Data quality has different dimensions
>> > including:</para>
>> > - <itemizedlist>
>> > - <listitem>
>> > - <para><emphasis>Correctness:</emphasis> Data should be
>> > within
>> > the normal range for data collected at that facility. There should be
>> > no
>> > gross discrepancies when compared with data from related data
>> > elements.</para>
>> > - </listitem>
>> > - <listitem>
>> > - <para><emphasis>Completeness:</emphasis> Data for all data
>> > elements for all health facilities/blocks/Taluka/districts should
>> > have been
>> > submitted.</para>
>> > - </listitem>
>> > - </itemizedlist>
>> > - <para>This stuff is in a paragraph</para>
>> > - </section>
>> > -</chapter>
>> > +<?xml version='1.0' encoding='UTF-8'?>
>> > +<?xml-stylesheet type="text/xsl" href="find.xsl"?>
>> > +<book>
>> > + <chapter>
>> > + <title>Data Administration in DHIS 2</title>
>> > + <para>The data administration module provides a range of
>> > functions to ensure that the data stored in the DHIS2 database is
>> > integral
>> > and that the database performance is optimised. These functions
>> > should be
>> > executed on a regular basis by a data administrator to ensure that
>> > the
>> > quality of the data stored is optimal. </para>
>> > + <section id="dataBrowser">
>> > + <title>Data browser</title>
>> > + <para>The data browser maintenance module allows the user to
>> > produce a summary of the data contained in the DHIS2 database. This
>> > summary
>> > provides the number of data element values that have been recorded
>> > for a
>> > given time interval and then grouped by the following options:</para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Data sets</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational unit groups</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisational units</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + <para>Each of these options can be accessed by selecting the
>> > desired option from <guilabel>&quot;Browse by&quot;
>> > </guilabel>drop-down
>> > menu. </para>
>> > + <para>In order to produce a summary of submitted data for a
>> > given period and grouped by data sets, the user should follow this
>> > procedure. Begin by selecting a given periodicity type (e.g. Weekly,
>> > monthly, yearly, etc) and then a time interval (e.g. January 2009 to
>> > March
>> > 2009). Select the type of summary to be produced (e.g. Dataset) from
>> > the
>> > &quot;Browse by&quot; drop-down menu. Click the &quot;Browse&quot;
>> > button to
>> > view the summary. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="70%" align="center"
>> > fileref="resources/images/maintainence/data_browser1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>A summary of the number of data element values that
>> > have
>> > been submitted over the user selected time period is shown below.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_browsing_data_sets.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on the name of the individual dataset, a
>> > more detailed summary of each data element can be obtained as shown
>> > below.
>> > A cross-tab table summarising each time period will be shown.
>> > </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> >
>> > fileref="resources/images/maintainence/data_browser_dataset_detail.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The functionality of the grouping by Datasets, Data
>> > element groups, and Organisational groups is essentially the same.
>> > </para>
>> > + <para>The functionality of grouping by organisation units
>> > will
>> > be discussed below. Begin by selecting &quot;Organisation units&quot;
>> > from
>> > the &quot;Browse by&quot; drop-down menu. The organisational
>> > hierarchy
>> > present in the database will now be displayed. Organisational units
>> > can be
>> > expanded by clicking on the plus symbol in the organisational tree
>> > view.</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_org_unit1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para> By clicking on an organisational unit, and the
>> > clicking
>> > the &quot;Browse&quot; button, a summary of submitted data elements
>> > present
>> > in the database is returned for all immediate children of the
>> > selected
>> > organisational as shown below</para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2a.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>By clicking on one of the organisational units, a
>> > detailed list of data elements is presented by each time period as
>> > shown
>> > below. <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="60%" align="center"
>> > fileref="resources/images/maintainence/data_browser_orgunit2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot></para>
>> > + <para>For each of the data browser summaries, a PDF export
>> > can
>> > be produced by specifying a filename in the &quot;Filename&quot;
>> > field,
>> > selecting a font size, a page layout (Landscape or Portrait) and
>> > pressing
>> > the <guibutton>&quot;Export PDF&quot;</guibutton> button. You will
>> > then be
>> > prompted to select a location to save the file to, which can then be
>> > viewed
>> > with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc). </para>
>> > + </section>
>> > + <section id="dataIntegrity">
>> > + <title>Data integrity</title>
>> > + <para>DHIS2 can perform a wide range of data integrity
>> > checks
>> > on the data contained in the database. Identifying and correcting
>> > data
>> > integrity issues is extremely important for ensuring that the data
>> > used for
>> > analysis purposes is valid. Each of the data integrity checks that
>> > are
>> > performed by the system will be described, along with general
>> > procedures
>> > that can be performed to resolve these issues. </para>
>> > + <section>
>> > + <title>Data elements without data set</title>
>> > + <para>Each data element must be assigned to a data set.
>> > Values for data elements will not be able to be entered into the
>> > system if a
>> > data element is not assigned to a data set. Choose
>> > Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add the
>> > &quot;orphaned&quot; data element to the appropriate data set.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements without groups</title>
>> > + <para>Some Data Elements have been allocated to several
>> > Data
>> > Element Groups. This is currently not allowed, because it will result
>> > in
>> > duplication of linked data records in the PivotSource recordsets that
>> > `feed`
>> > the pivot tables. Go to Maintenance -&gt; Data Element Groups to
>> > review each
>> > Data Element identified and remove the incorrect Group
>> > allocations.</para>
>> > + </section>
>> > + <section>
>> > + <title>Data elements assigned to data sets with different
>> > period types</title>
>> > + <para>Data Elements should not be assigned to two separate
>> > data sets whose period types differ. The recommended approach would
>> > be to
>> > create two separate data elements (for instance a monthly and yearly
>> > data
>> > element) and assign these to respective datasets. </para>
>> > + </section>
>> > + <section>
>> > + <title>Data sets not assigned to organisation
>> > units</title>
>> > + <para>All data sets should be assigned to at least one
>> > organisation unit. </para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators with identical formulas</title>
>> > + <para>Although this rule will not affect data quality, it
>> > generally does not make sense to have two indicators with the exact
>> > same
>> > definition. Review the identified indicators and their formulas and
>> > delete
>> > or modify any indicator that appears to be the duplicate.</para>
>> > + </section>
>> > + <section>
>> > + <title>Indicators without groups</title>
>> > + <para>All Data Elements and Indicators must be assigned to
>> > at
>> > least one group, so these Indicators need to be allocated to their
>> > correct
>> > Data Element and Indicator Group. Go to Maintenance -&gt; Indicator
>> > Groups,
>> > and allocate each of the `Orphaned` Indicators to its correct
>> > group.</para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator numerators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the numerator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid indicator denominators</title>
>> > + <para>Violations of this rule may be caused by an
>> > incorrect
>> > reference to a deleted or modified data element. Review the indicator
>> > and
>> > make corrections to the denominator definition. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation units with cyclic references</title>
>> > + <para>Organisation units cannot be both parent and
>> > children
>> > of each other, directly nor indirectly.</para>
>> > + </section>
>> > + <section>
>> > + <title>Orphaned organisation units</title>
>> > + <para>All organisation units must exist within the
>> > organisation unit hierarchy. Go to Organisation-&gt;Hierarchy
>> > Operations and
>> > move the offending organisation unit into the proper position in the
>> > hierarchy. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units without groups</title>
>> > + <para>All organisation units <emphasis>must</emphasis> be
>> > allocated to at least <emphasis>one</emphasis> group. The problem
>> > might
>> > either be that you have not defined any `compulsory` OrgUnit Group
>> > Set at
>> > all, or that there are violations of the `compulsory` rule for some
>> > OrgUnits
>> > . NOTE: If you have defined no `compulsory` OrgUnit Group Sets, then
>> > you
>> > must first define them by going to Maintenance -&gt; Organisation
>> > units-&gt;Organisation unit group sets and define at least one
>> > `compulsory`
>> > Group Set (the group set `OrgUnitType` are nearly universally
>> > relevant). If
>> > you have the relevant group sets, go to Maintenance -&gt; OrgUnit
>> > Groups to
>> > review each OrgUnit identified and add the relevant Group
>> > allocation.</para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating compulsory group
>> > sets</title>
>> > + <para>These organisation units have not been assigned to
>> > the
>> > any organisation unit group within one of the
>> > <emphasis>compulsory</emphasis> organisation unit group sets. When a
>> > group
>> > set is defined as `compulsory`, it means that an organisation unit
>> > must be
>> > allocated to at least one organisation unit group within that group
>> > set. For
>> > instance, all organisation units must belong to one of the groups in
>> > the
>> > `organisation unitType` group set. It might belong to the `Hospital`
>> > or the
>> > `Clinic` or any other `type` group - but it must belong to exactly
>> > one of
>> > them. Go to Maintenance -&gt; organisation unit-&gt;Organisation
>> > unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Allocate all organisation units to exactly one group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Organisation units violating exclusive group
>> > sets</title>
>> > + <para>Some organisation units have been allocated to
>> > several
>> > organisation unit groups that are members of the same exclusive
>> > organisation
>> > unit group set. When a group set is defined as exclusive, it means
>> > that an
>> > organisation unit can <emphasis>only</emphasis> be allocated to
>> > <emphasis>one</emphasis> organisation unit group within that Group
>> > Set. For
>> > instance, one organisation unit cannot normally belong to the both
>> > the
>> > &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather to
>> > only to
>> > one of them. Go to Maintenance -&gt; organisation
>> > unit-&gt;Organisation unit
>> > groups to review each organisation unit identified in the integrity
>> > check.
>> > Remove the organisation unit from all groups except the one that it
>> > should
>> > be allocated to. </para>
>> > + </section>
>> > + <section>
>> > + <title> Organisation unit groups without group
>> > sets</title>
>> > + <para>The organisation unit groups listed here have not
>> > been
>> > allocated to a group set. Go to Maintenance-&gt;Organisation
>> > unit-&gt;Organisation unit group sets and allocate the Organisation
>> > unit
>> > group to the appropriate group set. </para>
>> > + </section>
>> > + <section>
>> > + <title>Validation rules without groups</title>
>> > + <para>All validation rules must be assigned to a group. Go
>> > to
>> > <command>Services-&gt;Data quality-&gt;Validation rule
>> > group</command> and
>> > assign the offending validation rule to a group. </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule left side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit left side&quot; and make the corrections that are
>> > required.
>> > </para>
>> > + </section>
>> > + <section>
>> > + <title>Invalid validation rule right side
>> > expressions</title>
>> > + <para>An error exists in the left-side validation rule
>> > definition. Go to <command>Services-&gt;Data quality-&gt;Validation
>> > rule</command> and click the &quot;Edit&quot; icon on the offending
>> > rule.
>> > Press &quot;Edit right side&quot; and make the corrections that are
>> > required.</para>
>> > + </section>
>> > + </section>
>> > + <section id="maintenance">
>> > + <title>Maintenance</title>
>> > + <para>The data maintenance module has five options, each
>> > described below. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Clear hierarchy history</para>
>> > + <para>DHIS 2 maintains an audit trail of changes to the
>> > organisation unit hierarchy for aggregation purposes. This function
>> > clears
>> > the hierarchy history.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated datavalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated data element values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear data mart (aggregated
>> > indicatorvalues)</para>
>> > + <para>The data mart is where DHIS 2 stores aggregated
>> > data
>> > produced during the export to data mart process. This function clears
>> > the
>> > database table which contains aggregated indicator values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear zero values</para>
>> > + <para>This function removes zero data values from the
>> > database. Values registered for data elements with aggregation
>> > operator
>> > <emphasis role="italic">average</emphasis> is not removed, as such
>> > values
>> > will be significant when aggregating the data, contrary to values
>> > registered
>> > for data elements with aggregation operator <emphasis
>> > role="italic">sum</emphasis>. Reducing the number of data values will
>> > improve system performance.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Clear dataset completeness</para>
>> > + <para>This function removes aggregated dataset
>> > completeness
>> > values. This data is produced and used by report tables.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Prune periods</para>
>> > + <para>This function removes all periods which have no
>> > registered data values. Reducing the number of periods will improve
>> > system
>> > performance.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="resourceTables">
>> > + <title>Resource tables</title>
>> > + <para>Resource tables are supporting tables that are used
>> > during analysis of data. One would typically join the contents of
>> > these
>> > tables with the data value table when doing queries from third-party
>> > applications like Microsoft Excel. Simply select the tables that
>> > should be
>> > regenerated and press &quot;Generate tables&quot;. Regeneration of
>> > the
>> > resource tables should only be done once all data integrity issues
>> > are
>> > resolved. </para>
>> > + <itemizedlist>
>> > + <listitem>
>> > + <para>Organisation unit structure
>> > (orgunitstructure)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been any changes made to the organisational unit hierarchy. This
>> > table
>> > provides information about the organisation unit hierarchy. It has
>> > one row
>> > for each organisation unit, one column for each organisation unit
>> > level and
>> > the organisation unit identifiers for all parents in the lineage as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Exclusive organisation unit groupset structure
>> > normalized (orgunitgroupsetstructure)</para>
>> > + <para>This table provides information about the which
>> > organisation units are member of which organisation unit group
>> > sets.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element group set structure
>> > (_dataelementgroupsetstructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which data element group sets. The table has
>> > one row
>> > for each data element, one column for each data element group set
>> > and the
>> > names of the data element group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Indicator group set structure
>> > (_indicatorgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > indicators are members of which indicator group sets. The table has
>> > one row
>> > for each indicator, one column for each indicator group set and the
>> > names of
>> > the indicator group as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Organisation unit group set structure
>> > (_organisationunitgroupsetstructure)</para>
>> > + <para>This table provides information about which
>> > organisation units are members of which organisation unit group sets.
>> > The
>> > table has one row for each organisation unit, one column for each
>> > organisation unit group set and the names of the organisation unit
>> > groups as
>> > values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Category structure (_categorystructure)</para>
>> > + <para>This table provides information about which data
>> > elements are members of which categories. The table has one row for
>> > each
>> > data element, one column for each category and the names of the
>> > category
>> > options as values.</para>
>> > + </listitem>
>> > + <listitem>
>> > + <para>Data element category option combo name
>> > (categoryoptioncomboname)</para>
>> > + <para>This table should be regenerated any time there
>> > have
>> > been changes made to the category combination names. It contains
>> > readable
>> > names for the various combinations of categories.</para>
>> > + </listitem>
>> > + </itemizedlist>
>> > + </section>
>> > + <section id="organisationUnitMerge">
>> > + <title>Organisation unit merge</title>
>> > + <para>This function is useful when two organisation units
>> > need
>> > to be merged, eg. it is decided that one facility will be shut down
>> > and its
>> > services will be provided by a nearby facility.</para>
>> > + <para>Start by selecting the organisation unit to eliminate
>> > from the tree and click <emphasis role="italic">confirm</emphasis>.
>> > Then
>> > select the organisation unit to keep and click <emphasis
>> > role="italic">confirm</emphasis> again. Finally, verify the selection
>> > and
>> > click <emphasis role="italic">merge</emphasis>. </para>
>> > + <para>In the sitation where data exist for the organisation
>> > unit to eliminate and not for the one to keep, the data will be moved
>> > to the
>> > one to keep. When data exists for both organisation units, the data
>> > will be
>> > summarized and moved to the one to keep. When data exists only for
>> > the one
>> > to keep, no action is taken. The organisation unit to eliminate will
>> > eventually be deleted.</para>
>> > + </section>
>> > + <section id="duplicateDataElimination">
>> > + <title>Duplicate data elimination</title>
>> > + <para>This function is useful when data has been entered
>> > mistakenly for two data elements which represents the same
>> > phenomena.</para>
>> > + <para>Start by selecting the data element to eliminate from
>> > the
>> > list and click confirm. Then select the data element to keep and
>> > click
>> > confirm again. Finally, verify the selection and click merge.</para>
>> > + <para>In the situation where data exists for the data
>> > element
>> > to eliminate and not for the one to keep, the data will be moved to
>> > the one
>> > to keep. When data exists for both data elements, the data which was
>> > updated
>> > last will be used. When data exists only for the one to keep, no
>> > action will
>> > be taken. The data element to eliminate will eventually be deleted,
>> > except
>> > when it is a multidimensional data element and has other data
>> > registered.</para>
>> > + </section>
>> > + <section id="dataStatistics">
>> > + <title>Data statistics</title>
>> > + <para>The data statistics module provides an overview of the
>> > number of objects stored in the DHIS2 database. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_stats.png" format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The total number of each type of object is presented
>> > in a
>> > table, as well as a graph. </para>
>> > + </section>
>> > + <section id="dataLocking">
>> > + <title>Data locking</title>
>> > + <para>This module gives users the privilege of locking
>> > certain
>> > datasets for chosen organisation units. This encourages timely data
>> > entry
>> > and prevents unwanted to changes to the data once it has been
>> > entered. When
>> > the ‘Data Administration’ option is chosen the data locking interface
>> > is
>> > displayed. The user has to select the periodicity of the report e.g.
>> > monthly, quarterly or
>> > + yearly for which the data is to be locked. The month, quarter or
>> > year
>> > for which the reports are to be locked is then specified. </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select1.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The unlocked data sets for the period are displayed
>> > and
>> > the user will then have to choose the data sets to be locked.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select2.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>After choosing the datasets to be locked, double click
>> > on
>> > each one by one to display the organisation unit tree in the field
>> > below.
>> > Click on the organisation unit to lock the dataset.
>> > + </para>
>> > + <screenshot>
>> > + <mediaobject>
>> > + <imageobject>
>> > + <imagedata width="80%" align="center"
>> > fileref="resources/images/maintainence/data_locking_select3.png"
>> > format="PNG"/>
>> > + </imageobject>
>> > + </mediaobject>
>> > + </screenshot>
>> > + <para>The <guibutton>Apply Locks on All</guibutton> button
>> > locks the dataset for all the organisation units to which that
>> > dataset has
>> > been assigned. <guibutton>‘Remove locks on All’</guibutton> removes
>> > all
>> > locks put on the organisation units corresponding to the selected
>> > dataset.
>> > After the operations are completed the user must click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Lock at
>> > level’</guibutton> button locks datasets at a particular level that
>> > the user
>> > chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks
>> > that have
>> > been put on the organisation units corresponding to the selected
>> > dataset at
>> > the selected level. After the operations are completed, the user must
>> > click
>> > <guibutton>‘Save’</guibutton> to apply the settings. The
>> > <guibutton>‘Save’</guibutton> button will also lock those
>> > organisation unit
>> > datasets that have been specified by the user.
>> > + </para>
>> > + </section>
>> > + <section id="zeroValueStorage">
>> > + <title>Zero value storage</title>
>> > + <para>The zero value storage function makes it possible to
>> > define for which data elements the system should store zero values.
>> > In most
>> > cases zeros are significant only for a subset of the data elements in
>> > the
>> > database. Zero values will be ignored during data entry for selected
>> > data
>> > elements.</para>
>> > + </section>
>> > + <section id="cacheStatistics">
>> > + <title>Cache Statistics </title>
>> > + <para>This option is for system administrators only to use.
>> > The
>> > cache statistics shows the status of the application level cache. The
>> > application level cache refers to the objects and query results that
>> > the
>> > application is caching in order to speed up performance. If the
>> > database has
>> > been modified directly the application cache needs to be cleared for
>> > it to
>> > take effect.</para>
>> > + </section>
>> > + </chapter>
>> > +</book>
>> > \ No newline at end of file
>> >
>> > === modified file
>> > 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
>> > --- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 17:10:02 +0000
>> > +++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>> > 2010-02-23 19:44:51 +0000
>> > @@ -28,7 +28,7 @@
>> > </xsl:template>
>> >
>> > <xsl:template match="/">
>> > - <xsl:apply-templates select="chapter/section[@id=$sectionId]"/>
>> > + <xsl:apply-templates
>> > select="book/chapter/section[@id=$sectionId]"/>
>> > </xsl:template>
>> >
>> > </xsl:stylesheet>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 18:58:09 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>> > 2010-02-23 19:44:51 +0000
>> > @@ -18,6 +18,7 @@
>> > padding-right: 15px;
>> > padding-top: 9px;
>> > padding-bottom: 9px;
>> > + overflow: auto;
>> > }
>> >
>> > #hideRightBar
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
>> > Binary files
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2009-04-20 14:54:22 +0000 and
>> >
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>> > 2010-02-23 19:44:51 +0000 differ
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
>> > ---
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2009-11-02 18:13:58 +0000
>> > +++
>> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -91,7 +91,7 @@
>> > #end
>> >
>> > #macro( openHelp $id )
>> > -<a href="javascript:openHelpForm('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > +<a href="javascript:getHelpContent('${id}')" title="$i18n.getString(
>> > 'help' )"><img src="../images/help.png" alt="$i18n.getString( 'help'
>> > )"></a>
>> > #end
>> >
>> > #macro( introListItem $action $objectKey )
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2009-10-28 12:38:33 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_browser" )</h3>
>> > +<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser"
>> > )</h3>
>> >
>> > <form method="get" action="searchResult.action" onsubmit="return
>> > validate()">
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-01 15:30:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -6,7 +6,7 @@
>> >
>> > #end
>> >
>> > -<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
>> > +<h3>$i18n.getString( "data_integrity_checks_performed" ) #openHelp(
>> > "dataIntegrity" )</h3>
>> >
>> > #parse( "dhis-web-commons/loader/loader.vm" )
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-04 12:29:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
>> > +<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp(
>> > "duplicateDataElimination" )</h3>
>> >
>> > <div>
>> > <label>$i18n.getString( "filter" ):</label><br>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2009-12-29 07:14:28 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,4 @@
>> > -<h3>$i18n.getString( "data_locking_form" )</h3>
>> > +<h3>$i18n.getString( "data_locking_form" ) #openHelp( "dataLocking"
>> > )</h3>
>> >
>> > <span id="message"></span>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2009-12-17 09:22:20 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "maintenance" )</h3>
>> > +<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance" )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="hierarchyHistory">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-01-25 11:54:22 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "organisation_unit_merge" )</h3>
>> > +<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp(
>> > "organisationUnitMerge" )</h3>
>> >
>> > <div id="selectionTree" style="width:500px; height:200px"></div>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-01-15 11:32:18 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "resource_table" )</h3>
>> > +<h3>$i18n.getString( "resource_table" )#openHelp( "resourceTables"
>> > )</h3>
>> >
>> > <p>
>> > <input type="checkbox" id="organisationUnit">
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2009-03-03 16:46:36 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -9,7 +9,7 @@
>> > }
>> > </style>
>> >
>> > -<h3>$i18n.getString( "cache_statistics" )</h3>
>> > +<h3>$i18n.getString( "cache_statistics" ) #openHelp(
>> > "cacheStatistics"
>> > )</h3>
>> >
>> > <p><input type="button" style="width:150px" value="$i18n.getString(
>> > 'clear_cache' )"
>> > onclick="window.location.href='clearCache.action'"></p>
>> >
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2009-10-07 18:53:11 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,5 +1,5 @@
>> >
>> > -<h3>$i18n.getString( "data_statistics" )</h3>
>> > +<h3>$i18n.getString( "data_statistics" ) #openHelp( "dataStatistics"
>> > )</h3>
>> >
>> > <table>
>> > <tr>
>> >
>> > === modified file
>> >
>> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
>> > ---
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-01-28 09:50:27 +0000
>> > +++
>> >
>> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>> > 2010-02-23 19:44:51 +0000
>> > @@ -1,4 +1,5 @@
>> > -<h3>$i18n.getString( "zero_storage_management" )</h3>
>> > +
>> > +<h3>$i18n.getString( "zero_storage_management" ) #openHelp(
>> > "zeroValueStorage" )</h3>
>> > <br>
>> > <form id="ZeroDataValueManagement" method="POST"
>> > action="updateZeroIsSignificantForDataElements.action">
>> > <table>
>> >
>> >
>> > _______________________________________________
>> > Mailing list: https://launchpad.net/~dhis2-devs
>> > Post to : dhis2-devs@lists.launchpad.net
>> > Unsubscribe : https://launchpad.net/~dhis2-devs
>> > More help : https://help.launchpad.net/ListHelp
>> >
>> >
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to : dhis2-devs@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help : https://help.launchpad.net/ListHelp
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help : https://help.launchpad.net/ListHelp
>
>

It suspect it has to do with the version of the plugin that is
available from the public maven repository. I did not have a chance to
test today, but you can get the snapshot version of the docbkx maven
plugin from

svn checkout http://docbkx-tools.googlecode.com/svn/trunk/
docbkx-tools-read-only

You can then deploy this to you local maven repository, and comment
out that line in the pom.xml that refers to the snapshot version. I
bet it will work then, if you add that stuff below to the pom as a new
goal.

I commented out that section, as the latest version 2.0.10 has not
been deployed yet to a repository. It would be good if they could push
this out at some point, as right now we have have to hack the version
of the DocBook (4.4) that is able to be rendered by version 2.0.9 of
the plugin. Serna produced DocBook 4.5 by default, so if you create a
new document in Serna, and try an render it with the dockx plugin, it
will not work, without manually hacking the version. If you use the
snapshot version, it will work. :frowning:

Regards,
Jason

···

2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:

2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>

Hi Lars,
I think Bob and I are seeing essentially the same pathway here. Let me
try and elaborate a bit more.

Using the htmlCustomization property in the document pom.xml file,
along with a custom stylesheet, it should be possible to output a
custom x(html) from the documentation source build, for example
stripping out the screenshots and other ornaments that might not be
necessary for the inline help function. Look at the current pom and
see how I reference a custom stylesheet for the PDF transformation
(which actually needs work).

<foCustomization>${docbook.source}/en/resources/xsl/fop-cust.xsl</foCustomization>

I would think that we could produce a separate output during the build
something like this, but not sure this is exactly valid...

<executions>
<execution>
<id>inline-help-xhtml</id>
<phase>package</phase>
<goals>
<goal>generate-xhtml</goal>
</goals>
<configuration>

<htmlCustomization>${docbook.source}/en/resources/xsl/inline-cust.xsl</htmlCustomization>
<postProcess>
<copy todir="${dhis2_help.docs}/en/">
<fileset dir="target/docbkx/">
<include name="**/*.html" />
</fileset>
</copy>
</postProcess>
</configuration>
</execution>

OK I was actually just giving this a shot but it seems there is no specific
goal for generate-xhtml in the plugin.. This link suggests a work-around but
I couldn't make it work...
http://groups.google.com/group/docbkx-tools-users/browse_thread/thread/d321fb26a435874d
Maybe you can have a look at it if you have time...

the dhis2_help variable would need to be defined obviously, and the
correct directory would need to be set. So during the packaging, the
docs would be generated first, then the web portal would package the
revised document up. This is what I was thinking anyway...

Hope this is more clear.

Best regards,
Jason

2010/2/24 Bob Jolliffe <bobjolliffe@gmail.com>:
> Hi Lars
>
> I must admit that I was thinking along similar lines to Jason. The
> translation from docbook elements to (x)html elements does seem to be
> a bit redundant. Assuming that we were to include the full xhtml
> transform of the documentation with dhis anyway, then your online help
> can reference that as easily as the docbook source.
>
> But I do agree with all your points regarding locating and filtering
> the right content. So you might still use a transformation to do it.
> But you would apply it to doc-xhtml.xml rather than doc-docbk.xml.
> The transform would be a bit simpler - still locating the section by
> id (we need to just ensure that those ids are in the docbook src and
> they percolate through to the xhtml). The main difference would be
> that you wouldn't need to transform the elements in any way - just
> select and filter them.
>
> The way you might do this is to apply the identity transformation
> which simply copies input tree to output tree. Then you filter as
> appropriate. Very roughly speaking you might have something like this
> (assuming h3 tags had ids for help sections - as you know the key() is
> optional - I just cut and pasted):
>
> <xsl:param name="sectionId">learningObjectives</xsl:param>
>
> <xsl:key name="sections" match="/xhtml/body/h3" use="@id" />
>
> <!-- this will override the more general match -->
> <xsl:template match="h3">
> <xsl:copy>
> <!-- only process paras and lists from here-->
> <xsl:apply-templates select="p|ul|ol"/>
> </xsl:copy>
> </xsl:template>
>
>
> <!-- identity template
> in the absence of any more specific instructions - just copy all
> to all
> -->
> <xsl:template match="@*|node()">
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match="/">
> <xsl:apply-templates select="key('sections',$sectionId)"/>
> </xsl:template>
>
> And I guess the source document needn't come from the docbook file in
> resources but from a url like http://localhost/docs/manual.xhtml\. Or
> the file in resources - up to you.
>
> What do you think?
>
> Bob.
>
> PS. on an aside I am now more unsure that I have located the
> LocationManagerResolver in the wrong package. Here already there
> might be need for an additional resolver (ResourcesResolver).
> Currently if your xslt was any more complex and called an import() or
> document() function its going to resolve relative references via the
> locationmanager, which wouldn't be what you want. I think I should
> possibly make a uri resolvers package in import export module.
>
>
> 2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:
>>
>>
>> 2010/2/24 Jason Pickering <jason.p.pickering@gmail.com>
>>>
>>> Hi Lars and company,
>>>
>>> I am just sitting here early in the morning with a cup of coffee, when
>>> typically my head is clearer. I am just wondering about the best way
>>> to do this. The DocBocX maven plugin is actually capable of applying a
>>> custom XSL to the DocBook XML source files. So, I am wondering if
>>> there is a need to have this code in DHIS, instead of relying on the
>>> documentation build process itself to output the required format (XML,
>>> XHTML). I am wondering about this a bit, as at some point the
>>> documents may be upgraded to DocBook 5.0, which might require further
>>> changes to the code itself inside of DHIS2. Since we have decided to
>>> keep the documentation branch separate from the main branch (which I
>>> think is actually the right thing to do), I am wondering what happens
>>> when maybe we upgrade to 5.0, or another version. The DocBkX maven
>>> plugin should provide the functionality required to output essentially
>>> any format, even if there needs to be a separate plugin built to
>>> export XML. I am not totally sure I understand all the mojo
>>> terminology here http://docbkx-tools.sourceforge.net/ but it would
>>> seem that the plugin is actually built from the DocBook XSL sources
>>> themselves, which are under constant development themselves
>>> (http://docbook.sourceforge.net/release/xsl/current/\). It would seem
>>> good to reuse as much as we can from there, so as to insulate DHIS
>>> from different versions of DocBook.
>>>
>>> My other question would be, is the transformation from XML really
>>> necessary? If a browser renderable format such as XHTML was rendered
>>> properly and included with DHIS, would it be necessary to render the
>>> DocBook source at runtime? If appropriate <id> tags were used at
>>> sections in the document, it should be possible to find this directly
>>> in an XHTML document, as opposed to having to transform the document
>>> from XML source and into another format each time the user needs help.
>>> It would then be someones responsibility to map the ids in the docbook
>>> source, back to a specific URL of the application.
>>>
>>> Best regards,
>>> Jason
>>>
>>>
>>>
>> Hi,
>> thanks for providing feedback on this. First I am open for suggestions
>> on
>> improvements. Using XHTML as basis might very well be sensible.
>> They way I see it the xslt still gives you a few advantages:
>> - you can pick and choose the elements you need from the docbook file,
>> eg
>> omitting screenshots which we don't want in the help text
>> - only loading the part of the docbook file relevant for the current
>> help
>> text from the server, not the whole document.
>> - easily locating the right section.
>> I might be missing something from your suggestion though...
>> cheers
>> Lars
>>
>>>
>>> Anyway, some early morning thoughts..
>>>
>>> 2010/2/24 Lars Helge Øverland <larshelge@gmail.com>:
>>> >
>>> >
>>> > On Tue, Feb 23, 2010 at 9:36 PM, Bob Jolliffe >> >>> > <bobjolliffe@gmail.com> >> >>> > wrote:
>>> >>
>>> >> Just gave it a spin. Lars that's just too cool for words :slight_smile: Nice
>>> >> to
>>> >> see the transformer getting some exercise. And a great consequence
>>> >> of
>>> >> the move to docbook. Its hard to imagine how we could have linked
>>> >> this up to our original word documentation.
>>> >>
>>> >
>>> > Happy you liked it.. Also starting to like xslt, consider me a
>>> > member of
>>> > the
>>> > club:-)
>>> >
>>> >>
>>> >> On 23 February 2010 19:47, <noreply@launchpad.net> wrote:
>>> >> > ------------------------------------------------------------
>>> >> > revno: 1474
>>> >> > committer: Lars Helge Oeverland <larshelge@gmail.com>
>>> >> > branch nick: trunk
>>> >> > timestamp: Tue 2010-02-23 20:44:51 +0100
>>> >> > message:
>>> >> > Work in progress on embedded help function. Finished
>>> >> > data-web-maintenance-dataadmin module.
>>> >> > modified:
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>>> >> > dhis-2/dhis-options/src/main/resources/help_content.xml
>>> >> > dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>>> >> >
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>>> >> >
>>> >> >
>>> >> > --
>>> >> > lp:dhis2
>>> >> > trunk : Code : DHIS
>>> >> >
>>> >> > Your team DHIS 2 developers is subscribed to branch lp:dhis2.
>>> >> > To unsubscribe from this branch go to
>>> >> >
>>> >> >
>>> >> > https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription\.
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>>> >> > 2010-02-23 17:10:02 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/help/DefaultHelpManager.java
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -48,11 +48,9 @@
>>> >> > {
>>> >> > try
>>> >> > {
>>> >> > - TransformerFactory factory =
>>> >> > TransformerFactory.newInstance();
>>> >> > -
>>> >> > Source stylesheet = new StreamSource( new
>>> >> > ClassPathResource(
>>> >> > "help_stylesheet.xsl" ).getInputStream() );
>>> >> >
>>> >> > - Transformer transformer = factory.newTransformer(
>>> >> > stylesheet );
>>> >> > + Transformer transformer =
>>> >> > TransformerFactory.newInstance().newTransformer( stylesheet );
>>> >> >
>>> >> > transformer.setParameter( "sectionId", id );
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> > 'dhis-2/dhis-options/src/main/resources/help_content.xml'
>>> >> > --- dhis-2/dhis-options/src/main/resources/help_content.xml
>>> >> > 2010-02-23 17:10:02 +0000
>>> >> > +++ dhis-2/dhis-options/src/main/resources/help_content.xml
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,40 +1,276 @@
>>> >> > -<?xml version='1.0' encoding='UTF-8'?>
>>> >> > -<chapter>
>>> >> > - <title>Data Quality</title>
>>> >> > - <para>The data quality module provides means to improve the
>>> >> > quality
>>> >> > of the data in the system. This can be done through validation
>>> >> > rules
>>> >> > and
>>> >> > various statistical checks.</para>
>>> >> > - <section id="learningObjectives">
>>> >> > - <title>Learning Objectives</title>
>>> >> > - <para>After reading this module you will be able to
>>> >> > understand:</para>
>>> >> > - <orderedlist>
>>> >> > - <listitem>
>>> >> > - <para>What is data quality and its importance for
>>> >> > HMIS.</para>
>>> >> > - </listitem>
>>> >> > - <listitem>
>>> >> > - <para>How to do data quality check at point of data
>>> >> > entry.</para>
>>> >> > - </listitem>
>>> >> > - <listitem>
>>> >> > - <para>How to create data validation rules.</para>
>>> >> > - </listitem>
>>> >> > - <listitem>
>>> >> > - <para>How to carry out data triangulation.</para>
>>> >> > - </listitem>
>>> >> > - <listitem>
>>> >> > - <para>How to analyze data status.</para>
>>> >> > - </listitem>
>>> >> > - </orderedlist>
>>> >> > - <para>This stuff is in a paragraph</para>
>>> >> > - </section>
>>> >> > - <section id="overview">
>>> >> > - <title>Overview of data quality check</title>
>>> >> > - <para>Ensuring data quality is a key concern in building an
>>> >> > effective HMIS. Data quality has different dimensions
>>> >> > including:</para>
>>> >> > - <itemizedlist>
>>> >> > - <listitem>
>>> >> > - <para><emphasis>Correctness:</emphasis> Data should be
>>> >> > within
>>> >> > the normal range for data collected at that facility. There
>>> >> > should be
>>> >> > no
>>> >> > gross discrepancies when compared with data from related data
>>> >> > elements.</para>
>>> >> > - </listitem>
>>> >> > - <listitem>
>>> >> > - <para><emphasis>Completeness:</emphasis> Data for all
>>> >> > data
>>> >> > elements for all health facilities/blocks/Taluka/districts should
>>> >> > have been
>>> >> > submitted.</para>
>>> >> > - </listitem>
>>> >> > - </itemizedlist>
>>> >> > - <para>This stuff is in a paragraph</para>
>>> >> > - </section>
>>> >> > -</chapter>
>>> >> > +<?xml version='1.0' encoding='UTF-8'?>
>>> >> > +<?xml-stylesheet type="text/xsl" href="find.xsl"?>
>>> >> > +<book>
>>> >> > + <chapter>
>>> >> > + <title>Data Administration in DHIS 2</title>
>>> >> > + <para>The data administration module provides a range of
>>> >> > functions to ensure that the data stored in the DHIS2 database is
>>> >> > integral
>>> >> > and that the database performance is optimised. These functions
>>> >> > should be
>>> >> > executed on a regular basis by a data administrator to ensure
>>> >> > that
>>> >> > the
>>> >> > quality of the data stored is optimal. </para>
>>> >> > + <section id="dataBrowser">
>>> >> > + <title>Data browser</title>
>>> >> > + <para>The data browser maintenance module allows the
>>> >> > user to
>>> >> > produce a summary of the data contained in the DHIS2 database.
>>> >> > This
>>> >> > summary
>>> >> > provides the number of data element values that have been
>>> >> > recorded
>>> >> > for a
>>> >> > given time interval and then grouped by the following
>>> >> > options:</para>
>>> >> > + <itemizedlist>
>>> >> > + <listitem>
>>> >> > + <para>Data sets</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Data element groups</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Organisational unit groups</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Organisational units</para>
>>> >> > + </listitem>
>>> >> > + </itemizedlist>
>>> >> > + <para>Each of these options can be accessed by selecting
>>> >> > the
>>> >> > desired option from <guilabel>&quot;Browse by&quot;
>>> >> > </guilabel>drop-down
>>> >> > menu. </para>
>>> >> > + <para>In order to produce a summary of submitted data
>>> >> > for a
>>> >> > given period and grouped by data sets, the user should follow
>>> >> > this
>>> >> > procedure. Begin by selecting a given periodicity type (e.g.
>>> >> > Weekly,
>>> >> > monthly, yearly, etc) and then a time interval (e.g. January 2009
>>> >> > to
>>> >> > March
>>> >> > 2009). Select the type of summary to be produced (e.g. Dataset)
>>> >> > from
>>> >> > the
>>> >> > &quot;Browse by&quot; drop-down menu. Click the
>>> >> > &quot;Browse&quot;
>>> >> > button to
>>> >> > view the summary. </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="70%" align="center"
>>> >> > fileref="resources/images/maintainence/data_browser1.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>A summary of the number of data element values
>>> >> > that
>>> >> > have
>>> >> > been submitted over the user selected time period is shown below.
>>> >> > </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> >
>>> >> > fileref="resources/images/maintainence/data_browsing_data_sets.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para> By clicking on the name of the individual
>>> >> > dataset, a
>>> >> > more detailed summary of each data element can be obtained as
>>> >> > shown
>>> >> > below.
>>> >> > A cross-tab table summarising each time period will be shown.
>>> >> > </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> >
>>> >> >
>>> >> > fileref="resources/images/maintainence/data_browser_dataset_detail.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>The functionality of the grouping by Datasets,
>>> >> > Data
>>> >> > element groups, and Organisational groups is essentially the
>>> >> > same.
>>> >> > </para>
>>> >> > + <para>The functionality of grouping by organisation
>>> >> > units
>>> >> > will
>>> >> > be discussed below. Begin by selecting &quot;Organisation
>>> >> > units&quot;
>>> >> > from
>>> >> > the &quot;Browse by&quot; drop-down menu. The organisational
>>> >> > hierarchy
>>> >> > present in the database will now be displayed. Organisational
>>> >> > units
>>> >> > can be
>>> >> > expanded by clicking on the plus symbol in the organisational
>>> >> > tree
>>> >> > view.</para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="60%" align="center"
>>> >> >
>>> >> > fileref="resources/images/maintainence/data_browser_org_unit1.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para> By clicking on an organisational unit, and the
>>> >> > clicking
>>> >> > the &quot;Browse&quot; button, a summary of submitted data
>>> >> > elements
>>> >> > present
>>> >> > in the database is returned for all immediate children of the
>>> >> > selected
>>> >> > organisational as shown below</para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="60%" align="center"
>>> >> >
>>> >> > fileref="resources/images/maintainence/data_browser_orgunit2a.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>By clicking on one of the organisational units, a
>>> >> > detailed list of data elements is presented by each time period
>>> >> > as
>>> >> > shown
>>> >> > below. <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="60%" align="center"
>>> >> > fileref="resources/images/maintainence/data_browser_orgunit2.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot></para>
>>> >> > + <para>For each of the data browser summaries, a PDF
>>> >> > export
>>> >> > can
>>> >> > be produced by specifying a filename in the &quot;Filename&quot;
>>> >> > field,
>>> >> > selecting a font size, a page layout (Landscape or Portrait) and
>>> >> > pressing
>>> >> > the <guibutton>&quot;Export PDF&quot;</guibutton> button. You
>>> >> > will
>>> >> > then be
>>> >> > prompted to select a location to save the file to, which can then
>>> >> > be
>>> >> > viewed
>>> >> > with any PDF reader (e.g. Adobe Acrobat Reader, xpdf, etc).
>>> >> > </para>
>>> >> > + </section>
>>> >> > + <section id="dataIntegrity">
>>> >> > + <title>Data integrity</title>
>>> >> > + <para>DHIS2 can perform a wide range of data integrity
>>> >> > checks
>>> >> > on the data contained in the database. Identifying and correcting
>>> >> > data
>>> >> > integrity issues is extremely important for ensuring that the
>>> >> > data
>>> >> > used for
>>> >> > analysis purposes is valid. Each of the data integrity checks
>>> >> > that
>>> >> > are
>>> >> > performed by the system will be described, along with general
>>> >> > procedures
>>> >> > that can be performed to resolve these issues. </para>
>>> >> > + <section>
>>> >> > + <title>Data elements without data set</title>
>>> >> > + <para>Each data element must be assigned to a data
>>> >> > set.
>>> >> > Values for data elements will not be able to be entered into the
>>> >> > system if a
>>> >> > data element is not assigned to a data set. Choose
>>> >> > Maintenance-&gt;Datasets-&gt;Edit from the main menu and then add
>>> >> > the
>>> >> > &quot;orphaned&quot; data element to the appropriate data set.
>>> >> > </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Data elements without groups</title>
>>> >> > + <para>Some Data Elements have been allocated to
>>> >> > several
>>> >> > Data
>>> >> > Element Groups. This is currently not allowed, because it will
>>> >> > result
>>> >> > in
>>> >> > duplication of linked data records in the PivotSource recordsets
>>> >> > that
>>> >> > `feed`
>>> >> > the pivot tables. Go to Maintenance -&gt; Data Element Groups to
>>> >> > review each
>>> >> > Data Element identified and remove the incorrect Group
>>> >> > allocations.</para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Data elements assigned to data sets with
>>> >> > different
>>> >> > period types</title>
>>> >> > + <para>Data Elements should not be assigned to two
>>> >> > separate
>>> >> > data sets whose period types differ. The recommended approach
>>> >> > would
>>> >> > be to
>>> >> > create two separate data elements (for instance a monthly and
>>> >> > yearly
>>> >> > data
>>> >> > element) and assign these to respective datasets. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Data sets not assigned to organisation
>>> >> > units</title>
>>> >> > + <para>All data sets should be assigned to at least one
>>> >> > organisation unit. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Indicators with identical formulas</title>
>>> >> > + <para>Although this rule will not affect data quality,
>>> >> > it
>>> >> > generally does not make sense to have two indicators with the
>>> >> > exact
>>> >> > same
>>> >> > definition. Review the identified indicators and their formulas
>>> >> > and
>>> >> > delete
>>> >> > or modify any indicator that appears to be the duplicate.</para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Indicators without groups</title>
>>> >> > + <para>All Data Elements and Indicators must be
>>> >> > assigned to
>>> >> > at
>>> >> > least one group, so these Indicators need to be allocated to
>>> >> > their
>>> >> > correct
>>> >> > Data Element and Indicator Group. Go to Maintenance -&gt;
>>> >> > Indicator
>>> >> > Groups,
>>> >> > and allocate each of the `Orphaned` Indicators to its correct
>>> >> > group.</para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Invalid indicator numerators</title>
>>> >> > + <para>Violations of this rule may be caused by an
>>> >> > incorrect
>>> >> > reference to a deleted or modified data element. Review the
>>> >> > indicator
>>> >> > and
>>> >> > make corrections to the numerator definition. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Invalid indicator denominators</title>
>>> >> > + <para>Violations of this rule may be caused by an
>>> >> > incorrect
>>> >> > reference to a deleted or modified data element. Review the
>>> >> > indicator
>>> >> > and
>>> >> > make corrections to the denominator definition. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title> Organisation units with cyclic
>>> >> > references</title>
>>> >> > + <para>Organisation units cannot be both parent and
>>> >> > children
>>> >> > of each other, directly nor indirectly.</para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Orphaned organisation units</title>
>>> >> > + <para>All organisation units must exist within the
>>> >> > organisation unit hierarchy. Go to Organisation-&gt;Hierarchy
>>> >> > Operations and
>>> >> > move the offending organisation unit into the proper position in
>>> >> > the
>>> >> > hierarchy. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Organisation units without groups</title>
>>> >> > + <para>All organisation units <emphasis>must</emphasis>
>>> >> > be
>>> >> > allocated to at least <emphasis>one</emphasis> group. The problem
>>> >> > might
>>> >> > either be that you have not defined any `compulsory` OrgUnit
>>> >> > Group
>>> >> > Set at
>>> >> > all, or that there are violations of the `compulsory` rule for
>>> >> > some
>>> >> > OrgUnits
>>> >> > . NOTE: If you have defined no `compulsory` OrgUnit Group Sets,
>>> >> > then
>>> >> > you
>>> >> > must first define them by going to Maintenance -&gt;
>>> >> > Organisation
>>> >> > units-&gt;Organisation unit group sets and define at least one
>>> >> > `compulsory`
>>> >> > Group Set (the group set `OrgUnitType` are nearly universally
>>> >> > relevant). If
>>> >> > you have the relevant group sets, go to Maintenance -&gt; OrgUnit
>>> >> > Groups to
>>> >> > review each OrgUnit identified and add the relevant Group
>>> >> > allocation.</para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Organisation units violating compulsory group
>>> >> > sets</title>
>>> >> > + <para>These organisation units have not been assigned
>>> >> > to
>>> >> > the
>>> >> > any organisation unit group within one of the
>>> >> > <emphasis>compulsory</emphasis> organisation unit group sets.
>>> >> > When a
>>> >> > group
>>> >> > set is defined as `compulsory`, it means that an organisation
>>> >> > unit
>>> >> > must be
>>> >> > allocated to at least one organisation unit group within that
>>> >> > group
>>> >> > set. For
>>> >> > instance, all organisation units must belong to one of the groups
>>> >> > in
>>> >> > the
>>> >> > `organisation unitType` group set. It might belong to the
>>> >> > `Hospital`
>>> >> > or the
>>> >> > `Clinic` or any other `type` group - but it must belong to
>>> >> > exactly
>>> >> > one of
>>> >> > them. Go to Maintenance -&gt; organisation unit-&gt;Organisation
>>> >> > unit
>>> >> > groups to review each organisation unit identified in the
>>> >> > integrity
>>> >> > check.
>>> >> > Allocate all organisation units to exactly one group. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Organisation units violating exclusive group
>>> >> > sets</title>
>>> >> > + <para>Some organisation units have been allocated to
>>> >> > several
>>> >> > organisation unit groups that are members of the same exclusive
>>> >> > organisation
>>> >> > unit group set. When a group set is defined as exclusive, it
>>> >> > means
>>> >> > that an
>>> >> > organisation unit can <emphasis>only</emphasis> be allocated to
>>> >> > <emphasis>one</emphasis> organisation unit group within that
>>> >> > Group
>>> >> > Set. For
>>> >> > instance, one organisation unit cannot normally belong to the
>>> >> > both
>>> >> > the
>>> >> > &apos;Hospital&apos; and &apos;Clinic&apos; groups , but rather
>>> >> > to
>>> >> > only to
>>> >> > one of them. Go to Maintenance -&gt; organisation
>>> >> > unit-&gt;Organisation unit
>>> >> > groups to review each organisation unit identified in the
>>> >> > integrity
>>> >> > check.
>>> >> > Remove the organisation unit from all groups except the one that
>>> >> > it
>>> >> > should
>>> >> > be allocated to. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title> Organisation unit groups without group
>>> >> > sets</title>
>>> >> > + <para>The organisation unit groups listed here have
>>> >> > not
>>> >> > been
>>> >> > allocated to a group set. Go to Maintenance-&gt;Organisation
>>> >> > unit-&gt;Organisation unit group sets and allocate the
>>> >> > Organisation
>>> >> > unit
>>> >> > group to the appropriate group set. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Validation rules without groups</title>
>>> >> > + <para>All validation rules must be assigned to a
>>> >> > group. Go
>>> >> > to
>>> >> > <command>Services-&gt;Data quality-&gt;Validation rule
>>> >> > group</command> and
>>> >> > assign the offending validation rule to a group. </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Invalid validation rule left side
>>> >> > expressions</title>
>>> >> > + <para>An error exists in the left-side validation rule
>>> >> > definition. Go to <command>Services-&gt;Data
>>> >> > quality-&gt;Validation
>>> >> > rule</command> and click the &quot;Edit&quot; icon on the
>>> >> > offending
>>> >> > rule.
>>> >> > Press &quot;Edit left side&quot; and make the corrections that
>>> >> > are
>>> >> > required.
>>> >> > </para>
>>> >> > + </section>
>>> >> > + <section>
>>> >> > + <title>Invalid validation rule right side
>>> >> > expressions</title>
>>> >> > + <para>An error exists in the left-side validation rule
>>> >> > definition. Go to <command>Services-&gt;Data
>>> >> > quality-&gt;Validation
>>> >> > rule</command> and click the &quot;Edit&quot; icon on the
>>> >> > offending
>>> >> > rule.
>>> >> > Press &quot;Edit right side&quot; and make the corrections that
>>> >> > are
>>> >> > required.</para>
>>> >> > + </section>
>>> >> > + </section>
>>> >> > + <section id="maintenance">
>>> >> > + <title>Maintenance</title>
>>> >> > + <para>The data maintenance module has five options, each
>>> >> > described below. </para>
>>> >> > + <itemizedlist>
>>> >> > + <listitem>
>>> >> > + <para>Clear hierarchy history</para>
>>> >> > + <para>DHIS 2 maintains an audit trail of changes to
>>> >> > the
>>> >> > organisation unit hierarchy for aggregation purposes. This
>>> >> > function
>>> >> > clears
>>> >> > the hierarchy history.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Clear data mart (aggregated datavalues)</para>
>>> >> > + <para>The data mart is where DHIS 2 stores
>>> >> > aggregated
>>> >> > data
>>> >> > produced during the export to data mart process. This function
>>> >> > clears
>>> >> > the
>>> >> > database table which contains aggregated data element
>>> >> > values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Clear data mart (aggregated
>>> >> > indicatorvalues)</para>
>>> >> > + <para>The data mart is where DHIS 2 stores
>>> >> > aggregated
>>> >> > data
>>> >> > produced during the export to data mart process. This function
>>> >> > clears
>>> >> > the
>>> >> > database table which contains aggregated indicator
>>> >> > values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Clear zero values</para>
>>> >> > + <para>This function removes zero data values from
>>> >> > the
>>> >> > database. Values registered for data elements with aggregation
>>> >> > operator
>>> >> > <emphasis role="italic">average</emphasis> is not removed, as
>>> >> > such
>>> >> > values
>>> >> > will be significant when aggregating the data, contrary to values
>>> >> > registered
>>> >> > for data elements with aggregation operator <emphasis
>>> >> > role="italic">sum</emphasis>. Reducing the number of data values
>>> >> > will
>>> >> > improve system performance.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Clear dataset completeness</para>
>>> >> > + <para>This function removes aggregated dataset
>>> >> > completeness
>>> >> > values. This data is produced and used by report tables.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Prune periods</para>
>>> >> > + <para>This function removes all periods which have
>>> >> > no
>>> >> > registered data values. Reducing the number of periods will
>>> >> > improve
>>> >> > system
>>> >> > performance.</para>
>>> >> > + </listitem>
>>> >> > + </itemizedlist>
>>> >> > + </section>
>>> >> > + <section id="resourceTables">
>>> >> > + <title>Resource tables</title>
>>> >> > + <para>Resource tables are supporting tables that are
>>> >> > used
>>> >> > during analysis of data. One would typically join the contents of
>>> >> > these
>>> >> > tables with the data value table when doing queries from
>>> >> > third-party
>>> >> > applications like Microsoft Excel. Simply select the tables that
>>> >> > should be
>>> >> > regenerated and press &quot;Generate tables&quot;. Regeneration
>>> >> > of
>>> >> > the
>>> >> > resource tables should only be done once all data integrity
>>> >> > issues
>>> >> > are
>>> >> > resolved. </para>
>>> >> > + <itemizedlist>
>>> >> > + <listitem>
>>> >> > + <para>Organisation unit structure
>>> >> > (orgunitstructure)</para>
>>> >> > + <para>This table should be regenerated any time
>>> >> > there
>>> >> > have
>>> >> > been any changes made to the organisational unit hierarchy. This
>>> >> > table
>>> >> > provides information about the organisation unit hierarchy. It
>>> >> > has
>>> >> > one row
>>> >> > for each organisation unit, one column for each organisation
>>> >> > unit
>>> >> > level and
>>> >> > the organisation unit identifiers for all parents in the lineage
>>> >> > as
>>> >> > values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Exclusive organisation unit groupset structure
>>> >> > normalized (orgunitgroupsetstructure)</para>
>>> >> > + <para>This table provides information about the
>>> >> > which
>>> >> > organisation units are member of which organisation unit group
>>> >> > sets.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Data element group set structure
>>> >> > (_dataelementgroupsetstructure)</para>
>>> >> > + <para>This table provides information about which
>>> >> > data
>>> >> > elements are members of which data element group sets. The table
>>> >> > has
>>> >> > one row
>>> >> > for each data element, one column for each data element group
>>> >> > set
>>> >> > and the
>>> >> > names of the data element group as values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Indicator group set structure
>>> >> > (_indicatorgroupsetstructure)</para>
>>> >> > + <para>This table provides information about which
>>> >> > indicators are members of which indicator group sets. The table
>>> >> > has
>>> >> > one row
>>> >> > for each indicator, one column for each indicator group set and
>>> >> > the
>>> >> > names of
>>> >> > the indicator group as values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Organisation unit group set structure
>>> >> > (_organisationunitgroupsetstructure)</para>
>>> >> > + <para>This table provides information about which
>>> >> > organisation units are members of which organisation unit group
>>> >> > sets.
>>> >> > The
>>> >> > table has one row for each organisation unit, one column for each
>>> >> > organisation unit group set and the names of the organisation
>>> >> > unit
>>> >> > groups as
>>> >> > values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Category structure (_categorystructure)</para>
>>> >> > + <para>This table provides information about which
>>> >> > data
>>> >> > elements are members of which categories. The table has one row
>>> >> > for
>>> >> > each
>>> >> > data element, one column for each category and the names of the
>>> >> > category
>>> >> > options as values.</para>
>>> >> > + </listitem>
>>> >> > + <listitem>
>>> >> > + <para>Data element category option combo name
>>> >> > (categoryoptioncomboname)</para>
>>> >> > + <para>This table should be regenerated any time
>>> >> > there
>>> >> > have
>>> >> > been changes made to the category combination names. It contains
>>> >> > readable
>>> >> > names for the various combinations of categories.</para>
>>> >> > + </listitem>
>>> >> > + </itemizedlist>
>>> >> > + </section>
>>> >> > + <section id="organisationUnitMerge">
>>> >> > + <title>Organisation unit merge</title>
>>> >> > + <para>This function is useful when two organisation
>>> >> > units
>>> >> > need
>>> >> > to be merged, eg. it is decided that one facility will be shut
>>> >> > down
>>> >> > and its
>>> >> > services will be provided by a nearby facility.</para>
>>> >> > + <para>Start by selecting the organisation unit to
>>> >> > eliminate
>>> >> > from the tree and click <emphasis
>>> >> > role="italic">confirm</emphasis>.
>>> >> > Then
>>> >> > select the organisation unit to keep and click <emphasis
>>> >> > role="italic">confirm</emphasis> again. Finally, verify the
>>> >> > selection
>>> >> > and
>>> >> > click <emphasis role="italic">merge</emphasis>. </para>
>>> >> > + <para>In the sitation where data exist for the
>>> >> > organisation
>>> >> > unit to eliminate and not for the one to keep, the data will be
>>> >> > moved
>>> >> > to the
>>> >> > one to keep. When data exists for both organisation units, the
>>> >> > data
>>> >> > will be
>>> >> > summarized and moved to the one to keep. When data exists only
>>> >> > for
>>> >> > the one
>>> >> > to keep, no action is taken. The organisation unit to eliminate
>>> >> > will
>>> >> > eventually be deleted.</para>
>>> >> > + </section>
>>> >> > + <section id="duplicateDataElimination">
>>> >> > + <title>Duplicate data elimination</title>
>>> >> > + <para>This function is useful when data has been entered
>>> >> > mistakenly for two data elements which represents the same
>>> >> > phenomena.</para>
>>> >> > + <para>Start by selecting the data element to eliminate
>>> >> > from
>>> >> > the
>>> >> > list and click confirm. Then select the data element to keep and
>>> >> > click
>>> >> > confirm again. Finally, verify the selection and click
>>> >> > merge.</para>
>>> >> > + <para>In the situation where data exists for the data
>>> >> > element
>>> >> > to eliminate and not for the one to keep, the data will be moved
>>> >> > to
>>> >> > the one
>>> >> > to keep. When data exists for both data elements, the data which
>>> >> > was
>>> >> > updated
>>> >> > last will be used. When data exists only for the one to keep, no
>>> >> > action will
>>> >> > be taken. The data element to eliminate will eventually be
>>> >> > deleted,
>>> >> > except
>>> >> > when it is a multidimensional data element and has other data
>>> >> > registered.</para>
>>> >> > + </section>
>>> >> > + <section id="dataStatistics">
>>> >> > + <title>Data statistics</title>
>>> >> > + <para>The data statistics module provides an overview of
>>> >> > the
>>> >> > number of objects stored in the DHIS2 database. </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> > fileref="resources/images/maintainence/data_stats.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>The total number of each type of object is
>>> >> > presented
>>> >> > in a
>>> >> > table, as well as a graph. </para>
>>> >> > + </section>
>>> >> > + <section id="dataLocking">
>>> >> > + <title>Data locking</title>
>>> >> > + <para>This module gives users the privilege of locking
>>> >> > certain
>>> >> > datasets for chosen organisation units. This encourages timely
>>> >> > data
>>> >> > entry
>>> >> > and prevents unwanted to changes to the data once it has been
>>> >> > entered. When
>>> >> > the ‘Data Administration’ option is chosen the data locking
>>> >> > interface
>>> >> > is
>>> >> > displayed. The user has to select the periodicity of the report
>>> >> > e.g.
>>> >> > monthly, quarterly or
>>> >> > + yearly for which the data is to be locked. The month, quarter
>>> >> > or
>>> >> > year
>>> >> > for which the reports are to be locked is then specified. </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> > fileref="resources/images/maintainence/data_locking_select1.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>The unlocked data sets for the period are
>>> >> > displayed
>>> >> > and
>>> >> > the user will then have to choose the data sets to be locked.
>>> >> > + </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> > fileref="resources/images/maintainence/data_locking_select2.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>After choosing the datasets to be locked, double
>>> >> > click
>>> >> > on
>>> >> > each one by one to display the organisation unit tree in the
>>> >> > field
>>> >> > below.
>>> >> > Click on the organisation unit to lock the dataset.
>>> >> > + </para>
>>> >> > + <screenshot>
>>> >> > + <mediaobject>
>>> >> > + <imageobject>
>>> >> > + <imagedata width="80%" align="center"
>>> >> > fileref="resources/images/maintainence/data_locking_select3.png"
>>> >> > format="PNG"/>
>>> >> > + </imageobject>
>>> >> > + </mediaobject>
>>> >> > + </screenshot>
>>> >> > + <para>The <guibutton>Apply Locks on All</guibutton>
>>> >> > button
>>> >> > locks the dataset for all the organisation units to which that
>>> >> > dataset has
>>> >> > been assigned. <guibutton>‘Remove locks on All’</guibutton>
>>> >> > removes
>>> >> > all
>>> >> > locks put on the organisation units corresponding to the selected
>>> >> > dataset.
>>> >> > After the operations are completed the user must click
>>> >> > <guibutton>‘Save’</guibutton> to apply the settings. The
>>> >> > <guibutton>‘Lock at
>>> >> > level’</guibutton> button locks datasets at a particular level
>>> >> > that
>>> >> > the user
>>> >> > chooses. . <guibutton>‘Unlock at Level’</guibutton> removes locks
>>> >> > that have
>>> >> > been put on the organisation units corresponding to the selected
>>> >> > dataset at
>>> >> > the selected level. After the operations are completed, the user
>>> >> > must
>>> >> > click
>>> >> > <guibutton>‘Save’</guibutton> to apply the settings. The
>>> >> > <guibutton>‘Save’</guibutton> button will also lock those
>>> >> > organisation unit
>>> >> > datasets that have been specified by the user.
>>> >> > + </para>
>>> >> > + </section>
>>> >> > + <section id="zeroValueStorage">
>>> >> > + <title>Zero value storage</title>
>>> >> > + <para>The zero value storage function makes it possible
>>> >> > to
>>> >> > define for which data elements the system should store zero
>>> >> > values.
>>> >> > In most
>>> >> > cases zeros are significant only for a subset of the data
>>> >> > elements in
>>> >> > the
>>> >> > database. Zero values will be ignored during data entry for
>>> >> > selected
>>> >> > data
>>> >> > elements.</para>
>>> >> > + </section>
>>> >> > + <section id="cacheStatistics">
>>> >> > + <title>Cache Statistics </title>
>>> >> > + <para>This option is for system administrators only to
>>> >> > use.
>>> >> > The
>>> >> > cache statistics shows the status of the application level cache.
>>> >> > The
>>> >> > application level cache refers to the objects and query results
>>> >> > that
>>> >> > the
>>> >> > application is caching in order to speed up performance. If the
>>> >> > database has
>>> >> > been modified directly the application cache needs to be cleared
>>> >> > for
>>> >> > it to
>>> >> > take effect.</para>
>>> >> > + </section>
>>> >> > + </chapter>
>>> >> > +</book>
>>> >> > \ No newline at end of file
>>> >> >
>>> >> > === modified file
>>> >> > 'dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl'
>>> >> > --- dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>>> >> > 2010-02-23 17:10:02 +0000
>>> >> > +++ dhis-2/dhis-options/src/main/resources/help_stylesheet.xsl
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -28,7 +28,7 @@
>>> >> > </xsl:template>
>>> >> >
>>> >> > <xsl:template match="/">
>>> >> > - <xsl:apply-templates
>>> >> > select="chapter/section[@id=$sectionId]"/>
>>> >> > + <xsl:apply-templates
>>> >> > select="book/chapter/section[@id=$sectionId]"/>
>>> >> > </xsl:template>
>>> >> >
>>> >> > </xsl:stylesheet>
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>>> >> > 2010-02-23 18:58:09 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/css/widgets.css
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -18,6 +18,7 @@
>>> >> > padding-right: 15px;
>>> >> > padding-top: 9px;
>>> >> > padding-bottom: 9px;
>>> >> > + overflow: auto;
>>> >> > }
>>> >> >
>>> >> > #hideRightBar
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png'
>>> >> > Binary files
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>>> >> > 2009-04-20 14:54:22 +0000 and
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/help.png
>>> >> > 2010-02-23 19:44:51 +0000 differ
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm'
>>> >> > ---
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>>> >> > 2009-11-02 18:13:58 +0000
>>> >> > +++
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/macros.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -91,7 +91,7 @@
>>> >> > #end
>>> >> >
>>> >> > #macro( openHelp $id )
>>> >> > -<a href="javascript:openHelpForm('${id}')"
>>> >> > title="$i18n.getString(
>>> >> > 'help' )"><img src="../images/help.png" alt="$i18n.getString(
>>> >> > 'help'
>>> >> > )"></a>
>>> >> > +<a href="javascript:getHelpContent('${id}')"
>>> >> > title="$i18n.getString(
>>> >> > 'help' )"><img src="../images/help.png" alt="$i18n.getString(
>>> >> > 'help'
>>> >> > )"></a>
>>> >> > #end
>>> >> >
>>> >> > #macro( introListItem $action $objectKey )
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>>> >> > 2009-10-28 12:38:33 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataBrowserForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "data_browser" )</h3>
>>> >> > +<h3>$i18n.getString( "data_browser" ) #openHelp( "dataBrowser"
>>> >> > )</h3>
>>> >> >
>>> >> > <form method="get" action="searchResult.action" onsubmit="return
>>> >> > validate()">
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>>> >> > 2010-02-01 15:30:27 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -6,7 +6,7 @@
>>> >> >
>>> >> > #end
>>> >> >
>>> >> > -<h3>$i18n.getString( "data_integrity_checks_performed" )</h3>
>>> >> > +<h3>$i18n.getString( "data_integrity_checks_performed" )
>>> >> > #openHelp(
>>> >> > "dataIntegrity" )</h3>
>>> >> >
>>> >> > #parse( "dhis-web-commons/loader/loader.vm" )
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>>> >> > 2010-02-04 12:29:22 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "duplicate_data_elimination" )</h3>
>>> >> > +<h3>$i18n.getString( "duplicate_data_elimination" ) #openHelp(
>>> >> > "duplicateDataElimination" )</h3>
>>> >> >
>>> >> > <div>
>>> >> > <label>$i18n.getString( "filter" ):</label><br>
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>>> >> > 2009-12-29 07:14:28 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/lockingForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,4 +1,4 @@
>>> >> > -<h3>$i18n.getString( "data_locking_form" )</h3>
>>> >> > +<h3>$i18n.getString( "data_locking_form" ) #openHelp(
>>> >> > "dataLocking"
>>> >> > )</h3>
>>> >> >
>>> >> > <span id="message"></span>
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>>> >> > 2009-12-17 09:22:20 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/maintenanceForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "maintenance" )</h3>
>>> >> > +<h3>$i18n.getString( "maintenance" ) #openHelp( "maintenance"
>>> >> > )</h3>
>>> >> >
>>> >> > <p>
>>> >> > <input type="checkbox" id="hierarchyHistory">
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>>> >> > 2010-01-25 11:54:22 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/organisationUnitMergeForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "organisation_unit_merge" )</h3>
>>> >> > +<h3>$i18n.getString( "organisation_unit_merge" ) #openHelp(
>>> >> > "organisationUnitMerge" )</h3>
>>> >> >
>>> >> > <div id="selectionTree" style="width:500px; height:200px"></div>
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>>> >> > 2010-01-15 11:32:18 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/resourceTableForm.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "resource_table" )</h3>
>>> >> > +<h3>$i18n.getString( "resource_table" )#openHelp(
>>> >> > "resourceTables"
>>> >> > )</h3>
>>> >> >
>>> >> > <p>
>>> >> > <input type="checkbox" id="organisationUnit">
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>>> >> > 2009-03-03 16:46:36 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/showcache.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -9,7 +9,7 @@
>>> >> > }
>>> >> > </style>
>>> >> >
>>> >> > -<h3>$i18n.getString( "cache_statistics" )</h3>
>>> >> > +<h3>$i18n.getString( "cache_statistics" ) #openHelp(
>>> >> > "cacheStatistics"
>>> >> > )</h3>
>>> >> >
>>> >> > <p><input type="button" style="width:150px"
>>> >> > value="$i18n.getString(
>>> >> > 'clear_cache' )"
>>> >> > onclick="window.location.href='clearCache.action'"></p>
>>> >> >
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>>> >> > 2009-10-07 18:53:11 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewStatistics.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,5 +1,5 @@
>>> >> >
>>> >> > -<h3>$i18n.getString( "data_statistics" )</h3>
>>> >> > +<h3>$i18n.getString( "data_statistics" ) #openHelp(
>>> >> > "dataStatistics"
>>> >> > )</h3>
>>> >> >
>>> >> > <table>
>>> >> > <tr>
>>> >> >
>>> >> > === modified file
>>> >> >
>>> >> >
>>> >> > 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm'
>>> >> > ---
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>>> >> > 2010-01-28 09:50:27 +0000
>>> >> > +++
>>> >> >
>>> >> >
>>> >> > dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/zeroValueStorageManagement.vm
>>> >> > 2010-02-23 19:44:51 +0000
>>> >> > @@ -1,4 +1,5 @@
>>> >> > -<h3>$i18n.getString( "zero_storage_management" )</h3>
>>> >> > +
>>> >> > +<h3>$i18n.getString( "zero_storage_management" ) #openHelp(
>>> >> > "zeroValueStorage" )</h3>
>>> >> > <br>
>>> >> > <form id="ZeroDataValueManagement" method="POST"
>>> >> > action="updateZeroIsSignificantForDataElements.action">
>>> >> > <table>
>>> >> >
>>> >> >
>>> >> > _______________________________________________
>>> >> > Mailing list: https://launchpad.net/~dhis2-devs
>>> >> > Post to : dhis2-devs@lists.launchpad.net
>>> >> > Unsubscribe : https://launchpad.net/~dhis2-devs
>>> >> > More help : https://help.launchpad.net/ListHelp
>>> >> >
>>> >> >
>>> >>
>>> >> _______________________________________________
>>> >> Mailing list: https://launchpad.net/~dhis2-devs
>>> >> Post to : dhis2-devs@lists.launchpad.net
>>> >> Unsubscribe : https://launchpad.net/~dhis2-devs
>>> >> More help : https://help.launchpad.net/ListHelp
>>> >
>>> >
>>> > _______________________________________________
>>> > Mailing list: https://launchpad.net/~dhis2-devs
>>> > Post to : dhis2-devs@lists.launchpad.net
>>> > Unsubscribe : https://launchpad.net/~dhis2-devs
>>> > More help : https://help.launchpad.net/ListHelp
>>> >
>>> >
>>
>>
>