[% META title = 'Worklist » Pre-screen' -%] [% # PROCESS dumper.tt dump = flow_screen_data %] [% # PROCESS dumper.tt dump = request_options_map %] [% # PROCESS dumper.tt dump = specimen_map %] [% # PROCESS dumper.tt dump = request_section_notes_map %] [% # PROCESS dumper.tt dump = unregistered_cases %] [% # PROCESS dumper.tt dump = unregistered_request_lab_tests %] [% # PROCESS dumper.tt dump = included_lab_tests %] [% # PROCESS dumper.tt dump = status_opts %]

Pre-screen worklist

[% # define some data structures: headers = [ 'LabNo' 'Sample' 'Surname' 'DoB' 'WBC' 'Lymph' 'Mixed' 'PCS' 'BLS' 'SCS' 'TLS' 'RIT' 'OUT' 'Date/Details']; lab_tests_map = { plasma_cell => 'PCS', b_lymphoid => 'BLS', stem_cell => 'SCS', t_lymphoid => 'TLS', rituximab => 'RIT', outreach => 'OUT', }; map_lab_tests = { # reverse of above PCS => 'plasma_cell', BLS => 'b_lymphoid', SCS => 'stem_cell', TLS => 't_lymphoid', RIT => 'rituximab', OUT => 'outreach', }; col_names = [ 'PCS' 'BLS' 'SCS' 'TLS' 'RIT' 'OUT' ]; %] [% BLOCK haematology; # param; result = flow_screen_data.item(entry).haematology.item(param); IF result.match('\*'); # ie *000 %] [% result %] [% ELSIF result; result / denominator | format('%.1f'); END; END %] [% lot_numbers = BLOCK # define lot numbers block for re-use %] LOT No: [% FOREACH i IN [1 .. 6] %][% END %] [% END %] [% IF flow_screen_data.size || unregistered_cases.size %]
Restrict to cols: [% FOREACH col IN col_names; test_name = map_lab_tests.item(col) %] [% col %] [% ' :: ' UNLESS loop.last %] [% END %] [% site.html.submit %]
Restrict to status: [% FOREACH opt IN status_opts; selected = ( opt.id == c.query.param('status_option_id') ) ? 1 : 0; %] [% opt.description %] :: [% END %] all (except analysed)

[% lot_numbers %] [% FOREACH item IN headers %][% END %] [% # requires ordering by urgency, then lab_number: sort_order = []; FOREACH r IN flow_screen_data.keys.sort; # INCLUDE dumper.tt dump = r; req_id = flow_screen_data.${r}.request_id; sort_order.push(r) IF request_options_map.${req_id}.urgent; END; # INCLUDE dumper.tt dump = sort_order; FOREACH r IN flow_screen_data.keys.sort; # INCLUDE dumper.tt dump = r; req_id = flow_screen_data.${r}.request_id; sort_order.push(r) UNLESS request_options_map.${req_id}.urgent; END; # INCLUDE dumper.tt dump = sort_order; FOREACH entry IN sort_order; import( flow_screen_data.item(entry) ); # INCLUDE dumper.tt dump = request_id; # INCLUDE dumper.tt dump = lab_tests; %] [% class = request_options_map.item(request_id).urgent ? 'red' : 'normal' %] [% FOREACH col_name IN col_names; # BLS, TLC, PCS, etc %] [% END %] [% END %] [% FOREACH entry IN unregistered_cases; # can have multiple specimens, or none: # PROCESS dumper.tt dump = entry; IF entry.pre_registration_specimen; # has had initial processing: FOREACH reg_specimen IN entry.pre_registration_specimen; PROCESS worklist/local/preregistration/specimen_row.tt; END; ELSE; # not yet had specimen(s) allocated: PROCESS worklist/local/preregistration/no_specimen_row.tt; END; END; %] [% lot_numbers %]
[% item %]
[% entry %] [% specimen_map.item(request_id).sample_code.join(', ') %] [% INCLUDE site/snippets/doi.tt IF request_options_map.item(request_id).doi %] [% patient.last_name | upper %] [% # empty DoB field %] [% INCLUDE haematology( param = 'wbc', denominator = 10 ) %] [% INCLUDE haematology( param = 'lymph', denominator = 10 ) %] [% INCLUDE haematology( param = 'mixed', denominator = 10 ) %] [% FOREACH test IN lab_tests; # array of lab_test data from flow_screen_data abbreviated_test_name = lab_tests_map.item(test.name); # BLS, TLS, etc NEXT UNLESS abbreviated_test_name == col_name; %] [% IF test.status.match('new') %]x [% ELSE %] [% END %] [% END %] [% request_section_notes_map.item(request_id) %]
[% ELSE %]

No outstanding pre-screen requests

[% END %]