RSS Git Download  Clone
Raw Blame History
[%- content_only = 1 # no html wrappers -%]

<!-- BEGIN [% component.name %] -->
<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title></title>
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width">

  <link rel="stylesheet" href="/css/bootstrap.min.css">
  <link rel="stylesheet" href="/css/bootstrap-responsive.min.css">
  <link rel="stylesheet" href="/css/guest_view.css" type="text/css">

  <style type="text/css">
    @media print {
      .viewHide  { display: block; }
      .printHide { display: none;  }
    }
    @media screen {
      .viewHide  { display: none; }
    }
    @media screen, print {
      .error { color: #c44; }
    }
  </style>
  <script src="/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
</head>
  
<body>
  <div class="container printHide">
    <div class="row">
      <img src="/images/lcc_logo.jpg"/>
    </div>
 
    <div class="row" id="nav-bar">
      <p class="span6">
        [% user = c.session.param('UserProfile') %]
      <!--<button class="btn btn-primary" type="button">[% user.first_name | ucfirst %]
        [% user.last_name | ucfirst %]</button>-->
        <a href="[% app_url %]/history/=/[% data.id %]">
          <span class="label label-warning">History</span>
        </a>
        <span class="label label">Request form</span>
        <a href="[% app_url %]/search/do_search/?patient_id=[% patient.id %]">
          <span class="label label-success">Previous reports</span>
        </a>
        <a href="[% app_url %]/search">
          <span class="label label-info"></i>New search</span>
        </a>
        <a href="[% app_url %]/resources">
          <span class="label label-important">Resources</span>
        </a>
        <!-- <span class="badge badge-info"><i class="icon-print icon-white"></i></span> -->
        <a href="[% app_url %]/request/print_record/[% data.id %]">
          <img src="/images/print_icon.gif" />
        </a>
        [<a href="[% app_url %]/logout">log out</a>]
      <p>
    </div>

    <div class="row">
      [% IF has_optional.clinical_trial;
          trial_number = get_trial_number(patient.id, data.request_trial.trial_id) %]
          <h4 align="center">
              <font color="green">TODO: SORT THIS
              CLINICAL TRIAL: [% data.request_trial.trial.trial_name %]
              [% IF trial_number %][ [% trial_number %] ][% END %]
              </font>
          </h4>
      [% END %]

      <div class="span2.5">
        <table class="table table-bordered table-striped" id="pid">
          <thead>
            <tr class="highlight">
              <td colspan="2">
                [% url_args = 'last_name=' _ patient.last_name _ ';first_name=' _
                  patient.first_name _ ';middle_name=' _ patient.middle_name
                %]
                <h4 class="text-center">
                  <a href="[% app_url %]/search/do_search?[% url_args | url %]">
                    [% patient.last_name   | upper %],
                    [% format_firstname(patient) || patient.first_name | ucfirst %]
                    [% patient.middle_name | ucfirst %]
                  </a>
                </h4>
              </td>
            </tr>
          </thead>
  
          <tbody>
            <tr>
              <td>
                [% url_args = 'dob_day=' _ patient.dob.strftime('%d') _ ';dob_month=' _
                  patient.dob.strftime('%m') _ ';dob_year=' _ patient.dob.strftime('%Y')
                %]
                <span class="pull-right">
                  <a href="[% app_url %]/search/do_search?[% url_args | url %]">DoB</a>
                </span>
              </td>
              <td>
                <span class="bold">
                  [% IF patient.dob;
                      age_now = calculate_age(patient.dob, c.time_now);
                      age_at_req = calculate_age(patient.dob, data.created_at) %]
                    <span class="acronym" title="age at registration = [% age_at_req
                      %]; age now = [% age_now %]">
                      [% patient.dob.strftime('%d.%b.%Y') %]
                    </span>
                  [% ELSE; site.html.grey_null; END %]
                </span>
              </td>
            </tr>
            <tr>
              <td>
                [% class = [] %]
                <span class="pull-right">
                  [% IF patient.nhs_number;
                      class.push('bold');
                      url_args = 'nhs_number=' _ patient.nhs_number %]
                    <a href="[% app_url %]/search/do_search?[% url_args | url %]">
                      NHS No
                    </a>
                  [% ELSE;
                      presentation = request_data.request_initial_screen.screen.description;
                      trial_name   = request_data.request_trial.trial.trial_name;
                      exemptions   = report_data_maps.nhs_number_exempt;
              
                      IF # one of exempted categories:
                          exemptions.presentation.item(presentation) OR
                          exemptions.clinical_trial.item(trial_name);
                        class.push('normal');
                        nhs_number_exempt = 1;
                      ELSE;
                        class.push('label', 'label-important');
                      END;
                  %]                 
                    NHS No
                  [% END %]
                </span>
              </td>
              <td class="nowrap">
                <span class="[% class.join(' ') %]">
                  [% UNLESS nhs_number_exempt;
                      PROCESS site/snippets/nhs_number.tt
                        nhs_number = patient.nhs_number;
                    ELSE; '[NULL]'; END %]
                </span>
              </td>
            </tr>
            <tr>
              <td>
                <span class="pull-right">
                  [% IF data.patient_case.unit_number;
                      url_args = 'unit_number=' _ data.patient_case.unit_number %]
                    <a href="[% app_url %]/search/do_search?[% url_args | url %]">Unit No</a>
                  [% ELSE %]
                    Unit No
                  [% END %]
                </span>
              </td>
              <td>[% data.patient_case.unit_number || site.html.grey_null %]</td>
            </tr>
            <tr>
              <td>
                <span class="pull-right">Source</span>
              </td>
              <td>
                [% SET location = data.patient_case.referral_source.display_name;
                  PROCESS site/display_name.tt %]            
              </td>
            </tr>
            <tr>
              <td><span class="pull-right">Referrer</span></td>
              <td>
                [%
                  SET department = data.referrer_department.hospital_department;
                  SET referrer   = data.referrer_department.referrer;
                %]
                <span [% IF department %]class="acronym" title="[% department.display_name %]"
                  [% END %]>[% referrer.name %]
                </span>
              </td>
            </tr>
            <tr>
              <td><span class="pull-right">Lab No</span></td>
              <td>[% PROCESS site/snippets/lab_number.tt want_url = 0 # expects request object 'data' %]</td>
            </tr>
          </tbody>
        </table>
      </div>
      
      [%
        IF has_optional.report
          AND status_options.authorised.is_active.match('yes')
          AND NOT history.authorised
          AND request_data.year > 2005; # eg Molecular Misc requests pre-2006 never auth'd
          # reset request_data:
          request_data = {};
          have_secondary_diagnosis = request_data.request_secondary_diagnosis ? 1 : 0;
        END; # request_data = {}; # for testing
      %]
  
      <div class="span7 offset1" id="main-div">
        [% IF request_data.size; # PROCESS dumper.tt dump = request_data %]
          <h2 class="bright">
            [% IF have_secondary_diagnosis %]1.[% END %]
            [% request_data.request_report.diagnosis.name %]
            [% IF request_data.request_report.diagnosis.icdo3 %]
              [[% request_data.request_report.diagnosis.icdo3 %]]
            [% END %]
            <sup>[% INCLUDE site/snippets/hmrn_info_link.tt %]</sup>
          </h2>
        [% ELSE %]
          <h2 class="bright">[ REPORT PENDING AUTHORISATION ]</h2>
        [% END %]
        
        [% IF have_secondary_diagnosis %]
          <h2 class="bright">2.
            [% request_data.request_secondary_diagnosis.secondary_diagnosis.name %]
          </h2>
        [% END %]
        
        <p class="bold indent">
          [% specimen = request_data.request_report.biopsy_site ||
            specimen_map.item(data.id).description.join(' & ') %]
          [% IF request_data.size %]reported on a [% END %][% specimen %]
            specimen received on [% data.created_at.strftime('%d.%b.%Y') %]
        </p>
        
        [% # comment & context warnings:
          context_warnings = [];
          IF context_warning_map.item(data.request_report.diagnosis.id);
              warning = context_warning_map.item(data.request_report.diagnosis.id);
              context_warnings.push(warning);
          END;
          IF specimen_map.item(data.id).description.grep('CSF').size
              AND NOT request_data.request_report.diagnosis.icdo3.match('/3'); # non-ICDO3 + CSF
              str = 'Absence of involvement of the cerebro-spinal fluid does not'
                _ ' exclude the possibility of intracerebral disease';
              context_warnings.push(str);
          END;
          
          comment = [];
          re = '\.\s+'; # for legacy comment; keep space to retain decimal numbers          
          FOREACH line IN request_data.request_report.comment.split(re);
            comment.push(line);
          END;
          IF request_data.request_report AND
            NOT request_data.request_report.status.match('default');
            comment.push('this is a ' _ request_data.request_report.status.upper
            _ ' diagnosis');
          END;
          
          IF context_warnings.size OR comment.size;
        %]
          <ul>
            [% FOREACH entry IN context_warnings %]
              <li class="text-warning">[% entry %]</li>
            [% END %]
            [% FOREACH entry IN comment %]
              <li class="text-error">[% entry %]</li>
            [% END %]
          </ul>
        [% END %]
      </div>
    
      [% # additional comments:
        additional_comments = [];
        
        IF outstanding_tests.size;
          str = 'there are further laboratory investigations pending';
          additional_comments.push(str);
        END;
        
        IF request_errors.size; # PROCESS dumper.tt dump = report_data_maps.report_error_codes;
          FOREACH entry IN request_errors;
            err_code = entry.error_code.code;
            # only want reportable errs:
            NEXT UNLESS report_data_maps.report_error_codes.item(err_code);
            str = report_data_maps.report_error_codes.item(err_code).description
              _ ' [' _ err_code.upper _ ']';
            additional_comments.push(str);
          END;
        END;

        specimen = specimen_map.item(data.id).sample_code;
        IF specimen.grep('BMA').size AND NOT specimen.grep('PB').size
            AND NOT request_data.request_trial;
          str = 'please send a peripheral blood sample with all bone marrows';
          additional_comments.push(str);
        END;  
    
        IF c.get_current_runmode.match('print'); # print report
          str = 'the definitive report is available online at '
            _ c.cfg('settings').service_url;
          additional_comments.push(str);
        END;

        IF additional_comments.size;   
      %]
      <div class="span7 offset1" id="comments">
        <ul>
          [% FOREACH entry IN additional_comments %]
            <li class="text-info">[% entry %]</li>
          [% END %]
        </ul>                   
      </div>
      [% END %]
    </div>

    [% IF request_data.size %]
      <div class="row">
        <div class="span2">
          <span class="label label-info">Supporting information:</span>
        </div>
      </div>

      <div class="accordion" id="summaries">
        [% IF request_data.request_report.morphology %]
          <!-- morphology -->
          <div class="accordion-group">
            <div class="accordion-heading">
              <a class="accordion-toggle" data-toggle="collapse"
                  data-parent="#summaries" href="#collapseOne">
                MORPHOLOGY <i class="icon-fullscreen"></i>                        
              </a>
            </div>
            <div id="collapseOne" class="accordion-body collapse">
              <div class="accordion-inner">
                <div class="offset1">
                  [% symbolise(request_data.request_report.morphology) | html_line_break %]
                </div>
              </div>
            </div>
          </div>
        [% END %]
       
        [% FOREACH entry IN result_summaries;
            section_name = entry.key %]
          <!-- [% section_name %] -->
          <div class="accordion-group">
            <div class="accordion-heading">
              <a class="accordion-toggle" data-toggle="collapse" data-parent="#summaries"
                href="#collapse[% section_name.replace(' ', '').lower %]">
                 [% section_name | upper %] <i class="icon-fullscreen"></i> 
              </a>
            </div>

            <div id="collapse[% section_name.replace(' ', '').lower %]"
                class="accordion-body collapse">
              <div class="accordion-inner">
                <div class="offset1">
                  <!-- make_chart // will draw chart if required: -->
                  [% PROCESS site/make_chart.tt format_info = special_formatting %]
                  <pre>[%- symbolise(entry.value.results_summary)
                    # escapeHTML already done -%]</pre>
                </div>
              </div>
            </div>
          </div>
        [% END %]
    </div>
  [% END %]

  [% IF history.authorised;
    reporter = history.reported.user;
    authoriser = history.authorised.user;
  %]

    <div class="row">
      <div class="row span7">
        <span class="bold">Reported by:</span>
        <span class="rich">
          <b>[% reporter.first_name | ucfirst %]</b>
          <b>[% reporter.last_name  | ucfirst %]</b>          
        </span>
        on <b>[% history.reported.time.strftime('%a %d.%b.%Y @ %H:%M') %]</b>
        [% IF reporter.active.match('yes') %]
          <a href="[% app_url %]/resources/user_messages/[% reporter.id %]">
            <span class="badge badge-bright"><i class="icon-user icon-white"></i></span>
          </a>
        [% END %]
      </div>
      <div class="row span7">
        <span class="bold">Authorised by:</span>
        <span class="rich">
          <b>[% authoriser.first_name | ucfirst %]</b>
          <b>[% authoriser.last_name  | ucfirst %]</b>          
        </span>
        on <b>[% history.authorised.time.strftime('%a %d.%b.%Y @ %H:%M') %]</b>
        [% IF authoriser.active.match('yes') %]
          <a href="[% app_url %]/resources/user_messages/[% authoriser.id %]">
            <span class="badge badge-bright"><i class="icon-user icon-white"></i></span>
          </a>
        [% END %]
      </div>
  </div>
  [% END %]

  <footer id="footer">
      <p class="pull-right"><img src="/images/cpa_logo.png" /></p>
  </footer>
  </div> <!-- /container -->
  <div class="viewHide error">THIS PAGE IS NOT INTENDED TO BE PRINTED.
    PLEASE USE THE "PRINT" LINK IN THE UPPER NAVIGATION SECTION.
  </div>

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="/js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
  <script src="/js/vendor/bootstrap.min.js"></script>
  <script src="/js/main.js"></script>
</body>
</html>
<!-- END [% component.name %] -->