[% # PROCESS dumper.tt dump = all_results %] [% # PROCESS dumper.tt dump = raw_lab_test_data.haematology_data %] [% results = {}; haem_data = raw_lab_test_data.haematology_data; FOREACH section IN all_results.keys.sort; FOREACH entry IN all_results.item(section).test; # PROCESS dumper.tt dump = entry.value.result; NEXT UNLESS entry.value.result; # PROCESS dumper.tt dump = entry.value.result; results.$section.${entry.key} = entry.value.result; END; END; # PROCESS dumper.tt dump = results %] [% IF results.size || haem_data.size %]

Lab test results: [% div_name = 'tests'; INCLUDE site/snippets/toggleview.tt %]

[% FOREACH section IN results.keys.sort %]

[% section | html %]: [% FOREACH test IN results.item(section).keys.sort; # PROCESS dumper.tt dump = results.item(section).item(test) %] [% test %]: [% results.item(section).item(test) %] [% UNLESS loop.last %][% END %] [% END %]

[% END %] [% IF haem_data; BLOCK calculate; DEFAULT factor = 10; # unless supplied result = haem_data.item(var); flag = var _ '_f'; # eg wbc_f class = result.match('\*') || haem_data.item(flag) ? 'red' : 'normal'; %] [% var %]: [% IF result.match('\*'); result; # ie *000 ELSE; IF float; # needs formatting: FILTER format('%.' _ float _ 'f'); result / factor; END; ELSE; result / factor; END; END; %] [% END %]

Haematology: [% IF haem_data.status == 'verified' %] [% INCLUDE calculate(var = 'wbc', float = 1) %]| [% INCLUDE calculate(var = 'rbc', float = 2, factor = 100) %]| [% INCLUDE calculate(var = 'hb', factor = 1) # ie int %]| [% INCLUDE calculate(var = 'plt', factor = 1) # ie int %]| [% INCLUDE calculate(var = 'hct', float = 1) %]| [% INCLUDE calculate(var = 'mcv', float = 1) %] [% ELSE %] [ awaiting validation ] [% END %]

[% END %]
[% END %]