source: main/trunk/ibisph-view/src/main/webapp/xslt/html/community/Compare.xslt @ 17722

Last change on this file since 17722 was 17722, checked in by GarthBraithwaite_STG, 9 months ago

view, db - LCL and UCL XSLT updates. added value attribute footnote template. More css tweaks.

File size: 28.8 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2
3<xsl:stylesheet version="3.0" 
4        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
5        xmlns:ibis="http://www.ibisph.org"
6
7        exclude-result-prefixes="ibis"
8>
9
10        <ibis:doc>
11                <name>html/community/Compare</name>
12                <summary>
13                        Provides core API "value" code for the comparison pages/reports.
14                </summary>
15                <description>
16                        Provides API templates and params used to determine comparison records
17                        and data values for the community type pages.
18
19                        The value templates operate on the IP's MEASURE/DESIRABLE_VALUE:
20                        null, lt 0 = NA
21                         0   = low values desirable
22                        else = high values desirable
23                </description>
24        </ibis:doc>
25
26        <xsl:param name="Dimensions"/>
27        <xsl:param name="Measures"/>
28        <xsl:param name="ValueTypes"/>
29
30        <xsl:param name="Compare.valueTypes" select="$ValueTypes/VALUE_TYPES"/>
31
32
33        <xsl:param name="Compare.stateTitle" select="$ibis.adopterTitle"/>
34        <xsl:param name="Compare.stateDimensionName"  select="'GeoState'"/>
35        <xsl:param name="Compare.stateDimensionValue" select="'35'"/>
36        <xsl:param name="Compare.usDimensionName"     select="'GeoCountry'"/>
37        <xsl:param name="Compare.usDimensionValue"    select="'US'"/>
38        <xsl:param name="Compare.lowerLimitAncillaryValueName" select="'LowerConfidenceLimit'"/>
39        <xsl:param name="Compare.upperLimitAncillaryValueName" select="'UpperConfidenceLimit'"/>
40
41        <xsl:param name="Compare.defaultPeriodDimensionName"  select="'YearsCombined'"/>
42        <xsl:param name="Compare.defaultPeriodDimensionValue" select="'all'"/>
43
44        <xsl:param name="Compare.defaultNumberOfGroups" select="3"/>
45       
46        <xsl:param name="Compare.confidenceIntervalHelpContent">
47                <div>Description of the Confidence Interval</div>
48                The confidence interval indicates the range of probable
49                true values for the level of risk in the community.
50                <br/><br/>
51
52                A value of "DNA" (Data Not Available) will appear
53                if the confidence interval was not published with
54                the IBIS indicator data for this measure.
55        </xsl:param>
56
57        <xsl:param name="Compare.statisticalStabilityHelpContent">
58                <div>Description of Statistical Stability</div>
59                <ul>
60                        <li>
61                                Stable = This count or rate is relatively stable
62                                and should provide a good estimate of your
63                                community risk.
64                        </li>
65                        <li>
66                                Unstable = This count or rate is statistically
67                                unstable (RSE >0.30), and may fluctuate widely
68                                due to random variation (chance).
69                        </li>
70                        <li>
71                                Very Unstable = This count or rate is extremely
72                                unstable (RSE >0.50). This value should not be
73                                used to represent your population risk. You
74                                should combine years or otherwise increase the
75                                population denominator in this calculation.
76                        </li>
77                        <li>
78                                DNA = Data Not Available. The required community
79                                value and/or confidence interval was not available
80                                for this measure.
81                        </li>
82                </ul>
83        </xsl:param>
84
85        <xsl:param name="Compare.gauge4HelpContent" ibis:doc="">
86                <h4>Description of the Dashboard Gauge</h4>
87                This "dashboard" type graphic is based on the community data
88                on the right.  It compares the community value on this indicator
89                to the state overall value.
90
91                <ul class="ExtraWhiteSpace">
92                        <li>Excellent = The community's value on this indicator
93                                is BETTER than the state value, and the difference
94                                IS statistically significant.
95                        </li>
96                        <li>Watch = The community's value is BETTER than state value,
97                                but the difference IS NOT statistically significant.
98                        </li>
99                        <li>Similar = The community's value is SIMILAR to the state value,
100                                difference IS NOT statistically significant.
101                        </li>
102                        <li>Improvement Needed = The community's value on this
103                                indicator is WORSE than the state value, but the
104                                difference IS NOT statistically significant.
105                        </li>
106                        <li>Reason for Concern = The community's value on this
107                                indicator is WORSE than the state value, and the
108                                difference IS statistically significant.
109                        </li>
110                </ul><br/>
111        </xsl:param>
112
113        <xsl:param name="Compare.gauge3HelpContent" ibis:doc="">
114                <h4>Description of the Dashboard Gauge</h4>
115                This "dashboard" type graphic is based on the community data
116                on the right.  It compares the community value on this indicator
117                to the state overall value.
118
119                <ul class="ExtraWhiteSpace">
120                        <li>Excellent = The community's value on this indicator
121                                is BETTER than the state value, and the difference
122                                IS statistically significant.
123                        </li>
124                        <li>Similar = The community's value is SIMILAR to the state value,
125                                difference IS NOT statistically significant.
126                        </li>
127                        <li>Reason for Concern = The community's value on this
128                                indicator is WORSE than the state value, and the
129                                difference IS statistically significant.
130                        </li>
131                </ul><br/>
132
133                <div class="BottomHalfLineSpace">
134                        The community value is considered statistically significantly
135                        different from the state value if the state value is outside
136                        the range of the community's 95% confidence interval. If the
137                        community's data or 95% confidence interval information is
138                        not available, a blank gauge image will be displayed with
139                        the message, "missing information."
140                </div>
141
142                NOTE: The labels used on the gauge graphic are meant to describe
143                the community's status in plain language. The placement of the
144                gauge needle is based solely on the statistical difference
145                between the community and state values.  When selecting priority
146                health issues to work on, a community should take into account
147                additional factors such as how much improvement could be made,
148                the U.S. value, the statistical stability of the community
149                number, the severity of the health condition, and whether the
150                difference is clinically significant.
151        </xsl:param>
152
153
154
155        <!-- G A U G E   G R A P H I C   a n d   C L A S S I F I C A T I O N -->
156        <xsl:template name="Compare.comparisonClass" 
157                ibis:doc="Localizes logic needed to determine the approp comparison
158                        classification/css class. This call is typically used to determine
159                        the css class for the comparison cell color.
160
161                        Note this template  ONLY handles numeric values - it does NOT deal
162                        with values which contain character type data.
163
164                        Value returned: Excellent, Watch, Lacking, Same, Concerned, ''.
165                "
166        >
167                <xsl:param name="measureValue"/>
168                <xsl:param name="measureLowerLimit"/>
169                <xsl:param name="measureUpperLimit"/>
170                <xsl:param name="comparativeValue"/>
171                <xsl:param name="desirableValue"
172                        ibis:doc="This is the measureValue/DESIRABLE_VALUE.  The current usage
173                                is an index where 0=low is better and + means high is better.
174                                The measureValue's DV is numeric to be flexible for future uses -
175                                e.g. so that actual numeric target type values can be used. 
176                        "
177                />
178                <xsl:param name="numberOfGroups" select="$Compare.defaultNumberOfGroups"/>
179<!--
180
181<xsl:message select="'Compare.comparisonClass~~~~~~~~~~~~~~~~~'"/>
182<xsl:message select="$measureValue"/>
183<xsl:message select="$measureLowerLimit"/>
184<xsl:message select="$measureUpperLimit"/>
185<xsl:message select="$comparativeValue"/>
186<xsl:message select="$desirableValue"/>
187-->
188                <xsl:choose>
189                        <!-- MISSING DATA: if none of the above then the only thing left is MISSING or problem so NA -->
190                        <xsl:when test="not(number($measureValue))
191                                or not(number($measureUpperLimit))
192                                or not(number($measureLowerLimit))
193                                or not(number($comparativeValue))"
194                        ></xsl:when>
195
196                        <!-- L O W   T A R G E T   V A L U E S -->
197                        <!-- EXCELLENT: Low target value, UCL < State Value -->
198                        <xsl:when test="($desirableValue = 0) and ($measureUpperLimit &lt; $comparativeValue)">Better</xsl:when>
199
200                        <!-- REASON FOR CONCERN: Low target value, LCL > State Value  -->
201                        <xsl:when test="($desirableValue = 0) and ($measureLowerLimit &gt;= $comparativeValue)">Worse</xsl:when>
202
203                        <!-- SAME: when none of the above and number groups = 3 -->
204                        <xsl:when test="($desirableValue = 0) and (3 = $numberOfGroups)">Similar</xsl:when>
205
206                        <!-- WATCH: Low target value, Value <= State Value -->
207                        <xsl:when test="($desirableValue = 0) and ($measureValue &lt;= $comparativeValue)">Above</xsl:when>
208
209                        <!-- IMPROVEMENT NEEDED: Low target value, Value >= State Value -->
210                        <xsl:when test="($desirableValue = 0) and ($measureValue &gt;= $comparativeValue)">Below</xsl:when>
211
212
213                        <!-- H I G H   T A R G E T   V A L U E S -->
214                        <!-- EXCELLENT: High target value, LCL > State Value -->
215                        <xsl:when test="$measureLowerLimit &gt; $comparativeValue">Better</xsl:when>
216
217                        <!-- REASON FOR CONCERN: High target value, UCL < State Value -->
218                        <xsl:when test="$measureUpperLimit &lt;= $comparativeValue">Worse</xsl:when>
219
220                        <!-- SAME: when none of the above and number groups = 3 -->
221                        <xsl:when test="3 = $numberOfGroups">Similar</xsl:when>
222
223                        <!-- WATCH: High target value, Value >= State Value -->
224                        <xsl:when test="$measureValue &gt;= $comparativeValue">Above</xsl:when>
225
226                        <!-- IMPROVEMENT NEEDED: High target value, Value <= State Value -->
227                        <xsl:when test="$measureValue &lt;= $comparativeValue">Below</xsl:when>
228
229                </xsl:choose>
230        </xsl:template>
231
232
233        <xsl:template name="Compare.gaugeName" 
234                ibis:doc="Localizes creation of gauge graphic name. This call is
235                        typically used to determine the gauge graphic to display.
236
237                        Value returned: compareIndex _ desired value _ number of groups:
238                        better_low_3 or 4, better_high_3 or 4,
239                        above_low_3 or 4, above_high_3 or 4,
240                        below_low_3 or 4, below_high_3 or 4,
241                        similar_low_3 or 4, similar_high_3 or 4,
242                        worse_low_3 or 4, worse_high_3 or 4,
243                        na, insufficient.
244                "
245        >
246                <xsl:param name="comparisonClass"/>
247                <xsl:param name="measureValue"/>
248                <xsl:param name="measureLowerLimit"/>
249                <xsl:param name="measureUpperLimit"/>
250                <xsl:param name="comparativeValue"/>
251                <xsl:param name="desirableValue"
252                        ibis:doc="This is the MEASURE/DESIRABLE_VALUE.  The current usage
253                                is an index where 0=low is better and + means high is better.
254                                The measure's DV is numeric to be flexible for future uses -
255                                e.g. so that actual numeric target type values can be used. 
256                        "
257                />
258                <xsl:param name="numberOfGroups" select="$Compare.defaultNumberOfGroups"/>
259
260                <xsl:variable name="comparisonClass">
261                        <xsl:if test="0 != string-length($comparisonClass)"><xsl:value-of select="$comparisonClass"/></xsl:if>
262                        <xsl:if test="0 = string-length($comparisonClass)">
263                                <xsl:call-template name="Compare.comparisonClass">
264                                        <xsl:with-param name="measureValue"      select="number($measureValue)"/>
265                                        <xsl:with-param name="comparativeValue"  select="number($comparativeValue)"/>
266                                        <xsl:with-param name="measureLowerLimit" select="number($measureLowerLimit)"/>
267                                        <xsl:with-param name="measureUpperLimit" select="number($measureUpperLimit)"/>
268                                        <xsl:with-param name="desirableValue"    select="number($desirableValue)"/>
269                                        <xsl:with-param name="numberOfGroups"    select="number($numberOfGroups)"/>
270                                </xsl:call-template>
271                        </xsl:if>
272                </xsl:variable>
273                <xsl:variable name="lowHigh" select="if(0 = $desirableValue)then 'low' else 'high'"/>
274
275                <xsl:value-of select="if('' != $comparisonClass) then concat(lower-case($comparisonClass), '_', $lowHigh, '_', $numberOfGroups) else 'na'"/>
276        </xsl:template>
277
278
279
280        <!--  STATISTICAL STABILITY/RELIABILTIY SECTION  -->
281        <xsl:template name="Compare.rse" 
282                ibis:doc="Localizes the calc logic used to determine the reliability.
283                        This value *could* be determined at the time of publishing the
284                        dataset XML.
285                "
286        >
287                <xsl:param name="measure"/>
288                <xsl:param name="measureLowerLimit"/>
289                <xsl:param name="measureUpperLimit"/>
290
291                <xsl:param name="lowerDifference" select="$measure - $measureLowerLimit"/>
292                <xsl:param name="upperDifference" select="$measureUpperLimit - $measure"/>
293                <xsl:param name="difference"      select="if($lowerDifference &gt; $upperDifference)then $lowerDifference else $upperDifference"/>
294                <xsl:value-of select="($difference div 1.96) div $measure"/>
295        </xsl:template>
296
297
298        <xsl:template name="Compare.statisticalReliability" 
299                ibis:doc="Localizes logic needed to determine the approp reliability flag
300                        measure with 0=RSE lt .3, 1=RSE between .30 - .50, 2=RSE gt .50."
301        >
302                <xsl:param name="measure"/>
303                <xsl:param name="measureLowerLimit"/>
304                <xsl:param name="measureUpperLimit"/>
305
306                <!--first off, check for for instances when when the community dimension
307                        is not present - such as indicators that use selected counties, then
308                        check for when the indicator value is missing or '**'
309                        Can also use: string(number($number))='NaN'
310                -->
311                <xsl:choose>
312                        <xsl:when test="(string(number($measure)) = 'NaN')
313                                or ($measureLowerLimit = 'DNA')
314                                or ($measureUpperLimit = 'DNA')
315                        ">DNA</xsl:when>
316
317                        <xsl:otherwise>
318                                <xsl:variable name="rse">
319                                        <xsl:call-template name="Compare.rse">
320                                                <xsl:with-param name="measure"            select="number($measure)"/>
321                                                <xsl:with-param name="measureLowerLimit"  select="number($measureLowerLimit)"/>
322                                                <xsl:with-param name="measureUpperLimit"  select="number($measureUpperLimit)"/>
323                                        </xsl:call-template>
324                                </xsl:variable>
325
326                                <xsl:choose>
327                                        <xsl:when test="number($rse) &lt; 0.3">Stable</xsl:when>
328                                        <xsl:when test="number($rse) &gt; 0.5">Very Unstable</xsl:when>
329                                        <xsl:otherwise>Unstable</xsl:otherwise>
330                                </xsl:choose>
331                        </xsl:otherwise>
332                </xsl:choose>
333        </xsl:template>
334
335
336
337
338        <xsl:template name="Compare.valueOrDNA"
339                ibis:doc="Used to show value or DNA."
340        >
341                <xsl:param name="value"/>
342                <xsl:choose>
343                        <xsl:when test="string(number($value)) ='NaN'">DNA</xsl:when>
344                        <xsl:otherwise><xsl:value-of select="$value"/></xsl:otherwise>
345                </xsl:choose>
346        </xsl:template>
347
348
349        <xsl:template name="Compare.confidenceInterval"
350                ibis:doc="DNA is shown if the comparitiveValue is missing."
351        >
352                <xsl:param name="measureLowerLimit"/>
353                <xsl:param name="measureUpperLimit"/>
354                <xsl:param name="valueFormatPattern"/>
355
356                <xsl:choose>
357                        <xsl:when test="($measureLowerLimit = 'DNA') or ($measureUpperLimit = 'DNA')">
358                                DNA
359                        </xsl:when>
360                        <xsl:otherwise>
361                                 (<xsl:value-of select="ibis:getFormattedNumber($measureLowerLimit, $valueFormatPattern)"/>
362                                - <xsl:value-of select="ibis:getFormattedNumber($measureUpperLimit, $valueFormatPattern)"/>)
363                        </xsl:otherwise>
364                </xsl:choose>
365        </xsl:template>
366
367
368        <xsl:template name="Compare.confidenceIntervalHelp">
369                <span class="ConfidenceIntervalLabel Popup">
370                        95% Confidence Interval
371                        <div class="Container">
372                                <div class="Content">
373                                        <xsl:copy-of select="$Compare.confidenceIntervalHelpContent"/>
374                                </div>
375                        </div>
376                </span>
377        </xsl:template>
378
379
380
381<!-- GARTH TODO: remove or update as needed.
382        <DATASETS>
383                <DATASET name="CancerDeathLung.CancerDeathsPer100K">
384                        <NAME>CancerDeathLung.CancerDeathsPer100K</NAME>
385
386                        <VALUE_TYPES>
387                                <VALUE_TYPE name="RatePer100K">
388                        <MEASURE_NAME>CancerDeathsPer100K</MEASURE_NAME>
389                        <MEASURE>
390                                ...
391                        <DIMENSION_COMBINATIONS>
392                                <DIMENSION_COMBINATION>
393                                        <PERIOD_DIMENSION>
394                                                <NAME>Year</NAME>
395                                                <VALUES>
396                                                        <VALUE>2012</VALUE>
397                                                                . . .
398                                                        <VALUE>1988</VALUE>
399                                                </VALUES>
400                                        </PERIOD_DIMENSION>
401                                        <DIMENSION_1>
402                                                <NAME>US</NAME>
403                                        </DIMENSION_1>
404                                </DIMENSION_COMBINATION>
405                        </DIMENSION_COMBINATIONS>
406Generic USAGES struct doesn't work as they need to be contained as a group
407                        <DIMENSION_USAGES>
408                                <DIMENSION_USAGE>
409                                        <USAGE>period</USAGE>
410                                        <NAME>Year</NAME>
411                                        <VALUES>
412                                                <VALUE>2012</VALUE>
413                                                        . . .
414                                                <VALUE>1988</VALUE>
415                                        </VALUES>
416                                </DIMENSION_USAGE>
417                                <DIMENSION_USAGE>
418                                        <USAGE>dimension_1</USAGE>
419                                        <NAME>US</NAME>
420                                </DIMENSION_USAGE>
421                        </DIMENSION_USAGES>
422
423IP HAS:
424
425
426maybe simply start with the IP datasets that have the community name/value only combination.  ==> COMMUN DATASETS
427                            IP datasets that have the US only combination.  ==> US DATASETS
428
429Get COM and US datasets that of all NON combined years.
430
431Get the US dataset that has period and dim
432
433Get the measure of the US dataset.
434Get the period that is NOT the all combined.
435If not exists then get the first non all combined dimension
436
437
438The request can specify the dims to compare.  If nothing the XSLT can have default state and US.
439The XSLT can then determine the primary dataset by matching the DIM COMBO
440of community dim/value with period name/value and measure.
441
442 the main dimension 1 name and value are on the request URL
443        the state ds is the same as the primary.  The state dim name and value are
444        hard coded values - like the US dim name and value.
445       
446        The period name and value MUST match across all compare datasets.
447       
448        Maybe reference a IP VIEW.  The IP view specifies:
449        - Primary and any other dataset(s).  Primary is the one that contains the
450          specified community dim name/value.  All others are comparisons.  However,
451          how do determine which dim name and value to use on those other datasets?
452          US and STATE can be hard coded.  Others???  Maybe the XSLT has a list of
453          DIM NAME/VALUE to be tried???
454        - Measure
455        - Period dim name
456       
457        ********** PROBLEM WITH IP VIEW: views rarely contains everything needed.
458        The state us is typically by year and does NOT include any other community
459        dims.  Once in a while you'll get State, Community, US by Sex with all years
460        held constant etc.
461-->
462        <xsl:template name="Compare.getIndicatorStateUSComparisonValues"
463                ibis:doc="Contains the logic to determine which IP datasets and their
464                        assoc measures/AV values.  These values are then put inside an XML
465                        struct and returned for consumption.
466                "
467        >
468                <xsl:param name="indicator"/>
469
470                <xsl:param name="communityDimensionName"/>
471                <xsl:param name="communityDimensionValue"/>
472                <xsl:param name="stateDimensionName"      select="$Compare.stateDimensionName"/>
473                <xsl:param name="stateDimensionValue"     select="$Compare.stateDimensionValue"/>
474                <xsl:param name="usDimensionName"         select="$Compare.usDimensionName"/>
475                <xsl:param name="usDimensionValue"        select="$Compare.usDimensionValue"/>
476
477                <xsl:param name="periodDimensionName"/>
478
479                <xsl:param name="measureName"/>
480
481
482                <xsl:variable name="usDatasets"     select="$indicator/DATASETS/DATASET[DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $usDimensionName]]"/>
483                <xsl:variable name="usPeriods"      select="$usDatasets/DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $usDimensionName]/PERIOD_DIMENSION"/>
484                <xsl:variable name="usMeasureNames" select="$usDatasets/MEASURE_NAME"/>
485
486                <xsl:variable name="communityDatasets"     select="$indicator/DATASETS/DATASET[DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $communityDimensionName]]"/>
487                <xsl:variable name="communityPeriods"      select="$communityDatasets/DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $communityDimensionName]/PERIOD_DIMENSION"/>
488                <xsl:variable name="communityMeasureNames" select="$communityDatasets[MEASURE_NAME = $usMeasureNames]/MEASURE_NAME"/>
489
490                <xsl:variable name="periodName">
491                        <xsl:choose>
492                                <xsl:when test="string-length($periodDimensionName) != 0">
493                                        <xsl:value-of select="$periodDimensionName"/>
494                                </xsl:when>
495                                <xsl:when test="exists($usPeriods[(NAME != $Compare.defaultPeriodDimensionName) and (NAME = $communityPeriods/NAME)]/NAME)">
496                                        <xsl:value-of select="($usPeriods[(NAME != $Compare.defaultPeriodDimensionName) and (NAME = $communityPeriods/NAME)]/NAME)[1]"/>
497                                </xsl:when>
498                                <xsl:when test="exists($usPeriods[NAME = $communityPeriods]/NAME)">
499                                        <xsl:value-of select="($usPeriods[NAME = $communityPeriods/NAME]/NAME)[1]"/>
500                                </xsl:when>
501                                <xsl:when test="exists($communityPeriods[NAME != $Compare.defaultPeriodDimensionName]/NAME)">
502                                        <xsl:value-of select="($communityPeriods[NAME != $Compare.defaultPeriodDimensionName]/NAME)[1]"/>
503                                </xsl:when>
504                                <xsl:otherwise>
505                                        <xsl:value-of select="$Compare.defaultPeriodDimensionName"/>
506                                </xsl:otherwise>
507                        </xsl:choose>
508                </xsl:variable>
509
510                <xsl:variable name="measureName" select="
511                        if(string-length($measureName) != 0) then $measureName
512                        else $communityDatasets[(MEASURE_NAME = $communityMeasureNames) and DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[PERIOD_DIMENSION/NAME = $periodName]]/MEASURE_NAME
513                "/>
514
515                <xsl:variable name="communityDataset" select="$communityDatasets[(MEASURE_NAME = $measureName) and DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[PERIOD_DIMENSION/NAME = $periodName]]"/>
516                <xsl:variable name="usDataset"        select="$usDatasets       [(MEASURE_NAME = $measureName) and DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[PERIOD_DIMENSION/NAME = $periodName]]"/>
517
518                <xsl:variable name="periodValues">
519                        <xsl:if test="$periodName = $Compare.defaultPeriodDimensionName">
520                                <xsl:value-of select="$Compare.defaultPeriodDimensionValue"/>
521                        </xsl:if>
522                        <xsl:if test="$periodName != $Compare.defaultPeriodDimensionName">
523                                <xsl:for-each select="distinct-values( $communityDataset/DIMENSION_COMBINATIONS/DIMENSION_COMBINATION/PERIOD_DIMENSION[NAME = $periodName]/VALUES/VALUE )">
524                                        <xsl:sort select="." data-type="text" order="descending"/>
525                                        <xsl:copy-of select="."/>
526                                </xsl:for-each>
527                        </xsl:if>
528                </xsl:variable>
529                <xsl:variable name="periodValue"  select="$periodValues[1]"/>
530<xsl:message select="concat('-----------------Compare.getIndicatorStateUSComparisonValueElements - periodValue: ', $periodValue, ', measureName: ', $measureName)"/>
531<xsl:message select="$periodValues"/>
532<xsl:message select="'---------------'"/>
533
534                <xsl:variable name="communityRecord" select="$communityDataset/RECORDS/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $communityDimensionName) and (VALUE = $communityDimensionValue)] and DIMENSION[(NAME = $periodName) and (VALUE = $periodValue)]]]"/>
535                <xsl:variable name="stateRecord"     select="$communityDataset/RECORDS/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $stateDimensionName)     and (VALUE = $stateDimensionValue)]     and DIMENSION[(NAME = $periodName) and (VALUE = $periodValue)]]]"/>
536                <xsl:variable name="usRecord"        select=       "$usDataset/RECORDS/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $usDimensionName)        and (VALUE = $usDimensionValue)]        and DIMENSION[(NAME = $periodName) and (VALUE = $periodValue)]]]"/>
537
538                <xsl:variable name="measure"    select="$Measures//MEASURE[NAME = $measureName]"/>
539                <xsl:variable name="lowerLimit" select="$communityRecord/ANCILLARY_VALUES/ANCILLARY_VALUE[NAME = $Compare.lowerLimitAncillaryValueName]/VALUE"/>
540                <xsl:variable name="upperLimit" select="$communityRecord/ANCILLARY_VALUES/ANCILLARY_VALUE[NAME = $Compare.upperLimitAncillaryValueName]/VALUE"/>
541                <xsl:variable name="formatPattern" select="$Compare.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN"/>
542<!-- GARTH TODO: remove
543                <xsl:variable name="formatPattern" select="'0.0'"/>
544               
545<xsl:if test="count($usRecord/MEASURE) &gt; 1">
546<xsl:message select="$indicatorName"/>
547<xsl:message select="$measureName"/>
548<xsl:message select="$usRecord"/>
549</xsl:if>
550<xsl:if test="count($indicator/NAME) = 'SuicDeath'">
551<xsl:message select="$indicator/NAME"/>
552<xsl:message select="$periodName"/>
553<xsl:message select="$periodValue"/>
554<xsl:message select="$measure"/>
555</xsl:if>
556
557<xsl:if test="$indicator/NAME = 'SuicDeath'">
558<xsl:message select="$indicator/NAME"/>
559<xsl:message select="$periodName"/>
560<xsl:message select="$periodValue"/>
561<xsl:message select="$communityRecord"/>
562</xsl:if>
563
564<xsl:if test="$indicator/NAME = 'NutriAdultFruitVeg'">
565<xsl:message select="'********** Compare.getIndicatorStateUSComparisonValueElements: NutriAdultFruitVeg Measure Name and DV'"/>
566<xsl:message select="$usDatasets"/>
567<xsl:message select="$usMeasureNames"/>
568<xsl:message select="$communityMeasureNames"/>
569<xsl:message select="$periodName"/>
570<xsl:message select="$periodValue"/>
571<xsl:message select="$measure"/>
572</xsl:if>
573
574<xsl:message select="'garth'"/>
575<xsl:message select="$usRecord"/>
576-->
577
578<xsl:if test="count($stateRecord/MEASURE/VALUE) &gt; 1">
579        <xsl:message select="'xxxxxxxxxxxxxxxxxxxxxxxx start of dup STATE record: '"/>
580        <xsl:message select="$indicator/NAME"/>
581        <xsl:message select="$communityDataset/NAME"/>
582        <xsl:message select="$stateRecord"/>
583        <xsl:message select="'xxxxxxxxxxxxxxxxxxxxxxxx end'"/>
584</xsl:if>
585<xsl:if test="count($usRecord/MEASURE/VALUE) &gt; 1">
586        <xsl:message select="'xxxxxxxxxxxxxxxxxxxxxxxx start of dup US comparison record: '"/>
587        <xsl:message select="$indicator/NAME"/>
588        <xsl:message select="$usDataset/NAME"/>
589        <xsl:message select="$usRecord"/>
590        <xsl:message select="'xxxxxxxxxxxxxxxxxxxxxxxx end'"/>
591</xsl:if>
592
593                <xsl:if test="count($communityRecord/*) != 0">
594                        <PERIOD_DIMENSION>
595                                <NAME><xsl:value-of select="$periodName"/></NAME>
596                                <xsl:copy-of select="$communityDataset//DIMENSION[NAME=$periodName]/TITLE"/>
597                                <xsl:copy-of select="$Dimensions//DIMENSION[NAME=$periodName]/VALUES/VALUE[normalize-space(text()[1]) = $periodValue]"/>
598                        </PERIOD_DIMENSION>
599                        <COMMUNITY>
600                                <xsl:copy-of select="$Dimensions/DIMENSIONS/DIMENSION[NAME = $communityDimensionName]/VALUES/VALUE[normalize-space(text()[1]) = $communityDimensionValue]/TITLE"/>
601                                <VALUE>
602                                        <xsl:value-of select="$communityRecord/MEASURE/VALUE"/>
603                                        <TITLE><xsl:value-of select="ibis:getFormattedNumber($communityRecord/MEASURE/VALUE, $formatPattern)"/></TITLE>
604                                </VALUE>
605                                <LOWER_LIMIT>
606                                        <xsl:value-of select="$lowerLimit"/>
607                                        <TITLE><xsl:value-of select="ibis:getFormattedNumber($lowerLimit, $formatPattern)"/></TITLE>
608                                </LOWER_LIMIT>
609                                <UPPER_LIMIT>
610                                        <xsl:value-of select="$upperLimit"/>
611                                        <TITLE><xsl:value-of select="ibis:getFormattedNumber($upperLimit, $formatPattern)"/></TITLE>
612                                </UPPER_LIMIT>
613                                <xsl:copy-of select="$measure/DESIRABLE_VALUE"/>
614                                <RELIABILITY>
615                                        <xsl:call-template name="Compare.statisticalReliability">
616                                                <xsl:with-param name="measure" select="$communityRecord/MEASURE/VALUE"/>
617                                                <xsl:with-param name="measureLowerLimit" select="$lowerLimit"/>
618                                                <xsl:with-param name="measureUpperLimit" select="$upperLimit"/>
619                                        </xsl:call-template>
620                                </RELIABILITY>
621                        </COMMUNITY>
622                        <STATE>
623                                <xsl:copy-of select="$Dimensions/DIMENSIONS/DIMENSION[NAME = $stateDimensionName]/VALUES/VALUE[normalize-space(text()[1]) = $stateDimensionValue]/TITLE"/>
624                                <VALUE>
625                                        <xsl:value-of select="$stateRecord[1]/MEASURE/VALUE"/>
626                                        <TITLE><xsl:value-of select="ibis:getFormattedNumber($stateRecord[1]/MEASURE/VALUE, $formatPattern)"/></TITLE>
627                                        <xsl:variable name="stateComparisonClass">
628                                                <xsl:call-template name="Compare.comparisonClass">
629                                                        <xsl:with-param name="measureValue"      select="$communityRecord/MEASURE/VALUE"/>
630                                                        <xsl:with-param name="measureLowerLimit" select="$lowerLimit"/>
631                                                        <xsl:with-param name="measureUpperLimit" select="$upperLimit"/>
632                                                        <xsl:with-param name="comparativeValue"  select="$stateRecord[1]/MEASURE/VALUE"/>
633                                                        <xsl:with-param name="desirableValue"    select="$measure/DESIRABLE_VALUE"/>
634                                                </xsl:call-template>   
635                                        </xsl:variable>
636                                        <COMPARISON>
637                                                <CLASS><xsl:value-of select="$stateComparisonClass"/></CLASS>
638                                                <GAUGE_NAME>
639                                                        <xsl:call-template name="Compare.gaugeName">
640                                                                <xsl:with-param name="comparisonClass" select="$stateComparisonClass"/>
641                                                                <xsl:with-param name="desirableValue"  select="$measure/DESIRABLE_VALUE"/>
642                                                        </xsl:call-template>   
643                                                </GAUGE_NAME>
644                                        </COMPARISON>
645                                </VALUE>
646                        </STATE>
647                        <US>
648                                <xsl:copy-of select="$Dimensions/DIMENSIONS/DIMENSION[NAME = $usDimensionName]/VALUES/VALUE[normalize-space(text()[1]) = $usDimensionValue]/TITLE"/>
649                                <VALUE>
650                                        <xsl:value-of select="$usRecord[1]/MEASURE/VALUE"/>
651                                        <TITLE><xsl:value-of select="ibis:getFormattedNumber($usRecord[1]/MEASURE/VALUE, $formatPattern)"/></TITLE>
652                                        <xsl:variable name="usComparisonClass">
653                                                <xsl:call-template name="Compare.comparisonClass">
654                                                        <xsl:with-param name="measureValue"      select="$communityRecord/MEASURE/VALUE"/>
655                                                        <xsl:with-param name="measureLowerLimit" select="$lowerLimit"/>
656                                                        <xsl:with-param name="measureUpperLimit" select="$upperLimit"/>
657                                                        <xsl:with-param name="comparativeValue"  select="$usRecord[1]/MEASURE/VALUE"/>
658                                                        <xsl:with-param name="desirableValue"    select="$measure/DESIRABLE_VALUE"/>
659                                                </xsl:call-template>   
660                                        </xsl:variable>
661                                        <COMPARISON>
662                                                <CLASS><xsl:value-of select="$usComparisonClass"/></CLASS>
663                                                <GAUGE_NAME>
664                                                        <xsl:call-template name="Compare.gaugeName">
665                                                                <xsl:with-param name="comparisonClass" select="$usComparisonClass"/>
666                                                                <xsl:with-param name="desirableValue"  select="$measure/DESIRABLE_VALUE"/>
667                                                        </xsl:call-template>   
668                                                </GAUGE_NAME>
669                                        </COMPARISON>
670                                </VALUE>
671                        </US>
672                        <xsl:copy-of select="$measure"/>
673                </xsl:if>
674        </xsl:template>
675
676</xsl:stylesheet>
677<!-- ============================= End of File ============================= -->
678
Note: See TracBrowser for help on using the repository browser.