Skip to content

Commit

Permalink
imputatie van missing values
Browse files Browse the repository at this point in the history
  • Loading branch information
tvrhgn committed May 10, 2012
1 parent 1bff906 commit 1abe6a5
Show file tree
Hide file tree
Showing 8 changed files with 270 additions and 25 deletions.
4 changes: 3 additions & 1 deletion examples/PoC/PoC-data/Brondata_sbg-item.xml
Expand Up @@ -809,6 +809,7 @@
<score>1</score>
<meting-id>000000192011-04-15SCL90</meting-id>
</Row>

<!-- voorbeeld Honos65 -->

<Row>
Expand Down Expand Up @@ -882,8 +883,9 @@
<score>2</score>
</Row>

<!-- voorbeeld Honosca -->


<!-- voorbeeld Honosca -->
<Row>
<meting-id>70108</meting-id>
<itemnummer>1</itemnummer>
Expand Down
2 changes: 1 addition & 1 deletion src/sbg-synq-test/html-unit-test.xq
Expand Up @@ -130,6 +130,6 @@ let $content :=
}</div>


return ramh:html-doc-jquery( <div>{$ui-script}{$content}</div>, "" )
return ramh:html-doc-jquery( <div>{$ui-script}{$content}</div>, "css/sbg-ram.css" )


41 changes: 40 additions & 1 deletion src/sbg-synq-test/run-unit-tests.xq
Expand Up @@ -185,6 +185,44 @@ for $test in $tests
return unit:build-test-result( $test, $pass, ($instr-def, $meting//item), $act )
};

declare function local:test-honosca-sum( $tests as element(test)*, $ctx as element() )
as element(test)*
{
for $test in $tests
let $instr-def := unit:get-object($ctx, $test/setup/instrument),
$meting := unit:get-object($ctx, $test/setup/meting),
$expected := xs:double($test/expected/value/text()),

$instr := sbgi:laad-instrument($instr-def),

$result := sbgi:bereken-score($meting,$instr),

$act := element { 'value' } { $result },

$pass := $expected eq $result

return unit:build-test-result( $test, $pass, ($instr, $meting//item), $act )
};


declare function local:test-sbg-metingen( $tests as element(test)*, $ctx as element() )
as element(test)*
{
for $test in $tests
let $instr-def := unit:get-object($ctx, $test/setup/instrument),
$meting := unit:get-object($ctx, $test/setup/meting),
$expected := $test/expected/*,

$instr := sbgi:laad-instrument($instr-def),

$result := sbgm:sbg-metingen($meting, $instr),

$pass := unit:atts-equal( $expected, $result )

return unit:build-test-result( $test, $pass, ($instr, $meting/item), $result )
};



declare function local:test-batch-gegevens($tests as element(test)*, $ctx as element() )
as element(test)*
Expand Down Expand Up @@ -297,7 +335,8 @@ return <group>{$group/*[not(local-name()='test')]}
else if ( $functie = 'sbgza:batch-gegevens' ) then local:test-batch-gegevens($tests, $ctx )
else if ( $functie = 'sbgi:bereken-score' ) then local:test-bereken-score($tests, $ctx )
else if ( $functie = 'sbgi:item-scores' ) then local:test-score-items($tests, $ctx )

else if ( $functie = 'sbgi:honosca-sum' ) then local:test-honosca-sum($tests, $ctx )
else if ( $functie = 'sbgm:sbg-metingen' ) then local:test-sbg-metingen($tests,$ctx)
else if ( $functie = 'fall-through' ) then () else ()

}
Expand Down
178 changes: 173 additions & 5 deletions src/sbg-synq-test/unit-tests-instrument.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<tests versie="0.98"
xmlns:sbggz="http://sbggz.nl/schema/import/5.0.1"
xmlns:sbgm="http://sbg-synq.nl/sbg-metingen"
xmlns:sbgi="http://sbg-synq.nl/sbg-instrument"
>
<description label="instrument">instrument functies</description>
Expand Down Expand Up @@ -69,6 +70,16 @@ xmlns:sbgi="http://sbg-synq.nl/sbg-instrument"
<berekening>Sommatie van alle items</berekening>
</schaal>
</instrument>

<instrument code="HoNOSCA">
<naam>HoNOSCA The Health of the Nation Outcome Scales for Children and
Adolescents</naam>
<schaal min="0" max="52" code="TOT">
<items min="0" max="4">1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13</items>
<berekening functie="sum-honosca">Sommatie van de 13 items (negeer items met score 9)</berekening>
</schaal>
</instrument>

</sbg-instrumenten>

<metingen>
Expand Down Expand Up @@ -98,7 +109,6 @@ xmlns:sbgi="http://sbg-synq.nl/sbg-instrument"
<item itemnummer="10" score="1"/>
</meting>


<meting datum="2012-02-29" meting-id="meting-3">
<item itemnummer="1" score="0"/>
<item itemnummer="2" score="1"/>
Expand Down Expand Up @@ -179,18 +189,176 @@ xmlns:sbgi="http://sbg-synq.nl/sbg-instrument"



<group >
<function>sbgi:honosca-sum</function>
<description>test totaalscore honosca</description>

<test name="Test honosca 1" code="score-6">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" totaalscoreMeting="23" gebruiktMeetinstrument="HoNOSCA" typemeting="1">
<item itemnummer="1" score="0"/>
<item itemnummer="2" score="3"/>
<item itemnummer="3" score="0"/>
<item itemnummer="4" score="1"/>
<item itemnummer="5" score="0"/>
<item itemnummer="6" score="1"/>
<item itemnummer="7" score="9"/>
<item itemnummer="8" score="1"/>
<item itemnummer="9" score="2"/>
<item itemnummer="10" score="3"/>
<item itemnummer="11" score="0"/>
<item itemnummer="12" score="4"/>
<item itemnummer="13" score="2"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="0"/>
</meting>

</setup>
<expected>
<value>17</value>
</expected>
</test>


<test name="Test honosca 2" code="score-7">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" totaalscoreMeting="23" gebruiktMeetinstrument="HoNOSCA" typemeting="1">
<item itemnummer="1" score="9"/>
<item itemnummer="2" score="9"/>
<item itemnummer="3" score="9"/>
<item itemnummer="4" score="9"/>
<item itemnummer="5" score="9"/>
<item itemnummer="6" score="9"/>
<item itemnummer="7" score="9"/>
<item itemnummer="8" score="9"/>
<item itemnummer="9" score="9"/>
<item itemnummer="10" score="9"/>
<item itemnummer="11" score="9"/>
<item itemnummer="12" score="9"/>
<item itemnummer="13" score="9"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="4"/>
</meting>

</setup>
<expected>
<value>0</value>
</expected>
</test>

</group>

<group >
<function>sbgi:sum-honosca</function>
<description>test honosca</description>
<function>sbgm:sbg-metingen</function>
<description>Een SBG-meting heeft informatie over het aantal missed items en eventueel wordt een score berekend cq geimputeerd.</description>

<test name="TEST selecteer alle item-scores" code="score-6">
<test name="Test sbg-meting 1" code="score-7">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" gebruiktMeetinstrument="HoNOSCA" typemeting="1">
<item itemnummer="1" score="0"/>
<item itemnummer="2" score="3"/>
<item itemnummer="3" score="0"/>
<item itemnummer="4" score="1"/>
<item itemnummer="5" score="0"/>
<item itemnummer="6" score="1"/>
<item itemnummer="7" score="9"/>
<item itemnummer="8" score="1"/>
<item itemnummer="9" score="2"/>
<item itemnummer="10" score="3"/>
<item itemnummer="11" score="0"/>
<item itemnummer="12" score="4"/>
<item itemnummer="13" score="2"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="0"/>
</meting>
</setup>
<expected>
<sbgm:Meting sbgm:items-missed-perc="8" sbggz:totaalscoreMeting="18"/>
</expected>
</test>


<test name="Test sbg-meting 3" code="score-8">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" gebruiktMeetinstrument="HoNOSCA" typemeting="1">
<item itemnummer="1" score="9"/>
<item itemnummer="2" score="9"/>
<item itemnummer="3" score="9"/>
<item itemnummer="4" score="9"/>
<item itemnummer="5" score="9"/>
<item itemnummer="6" score="9"/>
<item itemnummer="7" score="9"/>
<item itemnummer="8" score="9"/>
<item itemnummer="9" score="9"/>
<item itemnummer="10" score="9"/>
<item itemnummer="11" score="9"/>
<item itemnummer="12" score="9"/>
<item itemnummer="13" score="9"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="4"/>
</meting>

</setup>
<expected>
<sbgm:Meting sbgm:items-missed-perc="100" sbggz:totaalscoreMeting="0"/>
</expected>
</test>


<test name="Test sbg-meting 4" code="score-9">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" gebruiktMeetinstrument="HoNOSCA">
<item itemnummer="1" score="9"/>
<item itemnummer="2" score="9"/>
<item itemnummer="3" score="1"/>
<item itemnummer="4" score="1"/>
<item itemnummer="5" score="1"/>
<item itemnummer="6" score="1"/>
<item itemnummer="7" score="1"/>
<item itemnummer="8" score="1"/>
<item itemnummer="9" score="1"/>
<item itemnummer="10" score="1"/>
<item itemnummer="11" score="1"/>
<item itemnummer="12" score="1"/>
<item itemnummer="13" score="1"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="4"/>
</meting>
</setup>
<expected>
<sbgm:Meting sbggz:totaalscoreMeting="13" />
</expected>
</test>


<test name="Test sbg-meting 5" code="score-9">
<setup>
<instrument ref="true" code="HoNOSCA"/>
<meting datum="2011-03-16" gebruiktMeetinstrument="HoNOSCA">
<item itemnummer="1" score="9"/>
<item itemnummer="2" score="9"/>
<item itemnummer="3" score="3"/>
<item itemnummer="4" score="3"/>
<item itemnummer="5" score="3"/>
<item itemnummer="6" score="3"/>
<item itemnummer="7" score="3"/>
<item itemnummer="8" score="3"/>
<item itemnummer="9" score="3"/>
<item itemnummer="10" score="3"/>
<item itemnummer="11" score="3"/>
<item itemnummer="12" score="3"/>
<item itemnummer="13" score="3"/>
<item itemnummer="14" score="4"/>
<item itemnummer="15" score="4"/>
</meting>
</setup>
<expected>
<value>1, 1, 1, 1, 1, 1, 1, 1, 1, 1</value>
<sbgm:Meting sbggz:totaalscoreMeting="39" />
</expected>
</test>

Expand Down
18 changes: 15 additions & 3 deletions src/sbg-synq/modules/sbg-instrument.xquery
Expand Up @@ -107,11 +107,22 @@ as element(sbgi:instrument)
$omscoor-items := sbgi:schaal-items($schaal/omscoren/text()),
$omscoren := count( $omscoor-items ) gt 0,

$omscoor-atts:= if ( $omscoren ) then (
$item-atts := if ( $omscoren ) then (
attribute { 'item-min' } { xs:double($schaal/omscoren/@min) },
attribute { 'item-max' } { xs:double($schaal/omscoren/@max) }
)
else (),
else
(
if ( $schaal/items/@min )
then attribute { 'item-min' } { data($schaal/items/@min) }
else attribute { 'item-min' } { 0 }
,
if ( $schaal/items/@max and not($omscoren) )
then attribute { 'item-max' } { data($schaal/items/@max) }
else attribute { 'item-max' } { 10000 }
)
,

$controle := if ( $omscoren and not($schaal/omscoren/@min and $schaal/omscoren/@max) )
then 'omscoren ongeldig'
else if ( $schaal/items/@all eq 'true' and not( $instr/@aantal-vragen castable as xs:integer ) )
Expand All @@ -121,10 +132,11 @@ as element(sbgi:instrument)
return
element { 'sbgi:instrument' }
{ $instr/@*
union attribute { 'aantal-items' } { count($score-items) + count($omscoor-items) }
union attribute { 'controle' } { $controle }
union attribute { 'score-items' } { $score-items }
union attribute { 'omscoor-items' } { $omscoor-items }
union $omscoor-atts
union $item-atts
,
element { 'schaal' }
{ $instr/schaal/@*
Expand Down

0 comments on commit 1abe6a5

Please sign in to comment.