Laboratory Information System Screen Requirements

Laboratory Information System Screen Requirements

Screen Inventory

Screen ID Screen Name Primary Actor(s) Workflow(s) Access Level
SCR-LIS-001 Lab Order Worklist Lab Technologist, Lab Supervisor WF-LIS-001, WF-LIS-002, WF-LIS-003, WF-LIS-004, WF-LIS-007 Lab staff (section-based)
SCR-LIS-002 Specimen Collection Worklist Phlebotomist, Lab Technologist WF-LIS-002 Phlebotomy, Lab collection staff
SCR-LIS-003 Specimen Accessioning Lab Technologist WF-LIS-002, WF-LIS-003 Core lab staff
SCR-LIS-004 Result Entry & Verification Lab Technologist, Senior Lab Technologist, Lab Supervisor, Pathologist / Lab Director, Microbiologist WF-LIS-003, WF-LIS-004, WF-LIS-006, WF-LIS-008 Lab professionals with verification rights
SCR-LIS-005 Microbiology Workbench Microbiology Technologist, Microbiologist WF-LIS-006 Microbiology section
SCR-LIS-006 Pathology Case Viewer Pathologist / Lab Director, Lab Technologist WF-LIS-004, WF-LIS-006 Pathology staff
SCR-LIS-007 Critical Value Alert Manager Lab Technologist, Lab Supervisor, Ordering Physician, Nurse WF-LIS-004, WF-LIS-005 Lab + clinical staff with alert rights
SCR-LIS-008 QC Dashboard Lab Technologist, QC Officer, Lab Supervisor, Lab Director WF-LIS-003, WF-LIS-008 QC and analyzer management roles
SCR-LIS-009 Reference Lab Send-Out Tracker Lab Technologist, Senior Lab Technologist, Lab Supervisor WF-LIS-007 Send-out team, supervisors
SCR-LIS-010 Lab Analytics Dashboard Lab Supervisor, Lab Director, QC Officer All LIS workflows (monitoring) Management / analytics roles

flowchart LR H["Lab Home / Module Landing"] --> A["SCR-LIS-001<br/>Lab Order Worklist"] H --> B["SCR-LIS-002<br/>Specimen Collection Worklist"] H --> C["SCR-LIS-008<br/>QC Dashboard"] H --> D["SCR-LIS-010<br/>Lab Analytics Dashboard"] A -->|"Select order"| B A -->|"Specimen received"| C A -->|"Results available"| E["SCR-LIS-004<br/>Result Entry & Verification"] B -->|"Collected"| C B -->|"Scan specimen"| G["SCR-LIS-003<br/>Specimen Accessioning"] G -->|"Accessioned & routed"| C G -->|"Micro specimen"| F["SCR-LIS-005<br/>Microbiology Workbench"] G -->|"Pathology specimen"| I["SCR-LIS-006<br/>Pathology Case Viewer"] C -->|"QC review"| E C -->|"QC issue"| C E -->|"Critical value"| J["SCR-LIS-007<br/>Critical Value Alert Manager"] E -->|"Finalised"| K["(EHR / CPOE / HIE)"] F -->|"Interim / Final results"| E I -->|"Sign-out"| E A -->|"Send-out test"| L["SCR-LIS-009<br/>Reference Lab Send-Out Tracker"] L -->|"Result received"| E J -->|"Acknowledged"| K J -->|"Escalation"| J

Screen Specifications

SCR-LIS-001: Lab Order Worklist

Purpose

Central worklist for lab staff to view, filter, and manage lab orders by section, priority, and status; entry point to collection, accessioning, and result workflows.

Field Specifications

Field Type Required Validation Default Notes
Lab Section Filter Dropdown No Must be valid section code User’s default section Values: Chemistry, Hematology, Microbiology, Pathology, etc.
Priority Filter Multi-select dropdown No IN (STAT, ASAP, Routine, Scheduled) All Color-coded in grid; STAT highlighted
Status Filter Multi-select dropdown No IN (New, In Collection, In Lab, In Progress, Resulted, Final) New + In Collection Drives which orders show
Date Range Date range picker No From ≤ To; max 31 days span Today Filters by order_datetime
Search Text Text input No Min 2 chars to trigger Searches patient name, MRN, accession, test name
Patient Name Text (column) From patient master; bilingual display if available
MRN Text (column) From patient identifiers
Accession Number Text (column) From lab_orders.accession_number
Test Name Text (column) From lab_order_tests.test_name (panel/test)
Priority Badge (column) Must map to allowed priorities STAT = red, ASAP = orange, Routine = blue (with text)
Status Badge (column) Must map to allowed statuses New, In Collection, etc.
Lab Section Text (column) From lab_order_tests.lab_section
Collection Status Text/badge Not collected / Partially collected / Collected
Location Text (column) Ward/clinic from encounter
Actions Buttons (row) “Open Order”, “Go to Collection”, “Go to Results”

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1100px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
  <div style="background: #004b8d; color: white; padding: 12px 20px; display:flex; justify-content:space-between; align-items:center;">
    <h3 style="margin: 0;">Lab Order Worklist</h3>
    <span style="font-size: 12px;">EN / <strong>العربية</strong></span>
  </div>
  <div style="padding: 16px;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px;">
      <div style="flex:1 1 160px;">
        <label>Lab Section</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Chemistry</option>
          <option>Hematology</option>
          <option>Microbiology</option>
        </select>
      </div>
      <div style="flex:1 1 160px;">
        <label>Priority</label><br/>
        <select multiple style="width:100%; padding:4px; height:60px;">
          <option>STAT</option>
          <option>ASAP</option>
          <option>Routine</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Date Range</label><br/>
        <input type="date" style="width:48%; padding:4px;"/> -
        <input type="date" style="width:48%; padding:4px;"/>
      </div>
      <div style="flex:2 1 260px;">
        <label>Search (Patient / MRN / Accession / Test)</label><br/>
        <input type="text" style="width:100%; padding:4px;" placeholder="Type to search..."/>
      </div>
    </div>
    <!-- Table -->
    <div style="border:1px solid #ddd; max-height:420px; overflow:auto;">
      <table style="width:100%; border-collapse:collapse; font-size:13px;">
        <thead style="background:#f5f5f5;">
          <tr>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Patient</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">MRN</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Accession</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Test</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Priority</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Status</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Section</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Collection</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Actions</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td style="padding:6px; border-bottom:1px solid #eee;">Ahmed Al-Maktoum</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">MRN123456</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">CH-24-000123</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">CBC</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">
              <span style="background:#c62828; color:#fff; padding:2px 6px; border-radius:4px; font-size:11px;">STAT</span>
            </td>
            <td style="padding:6px; border-bottom:1px solid #eee;">New</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Hematology</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Not collected</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">
              <button style="padding:2px 6px; font-size:11px;">Open</button>
              <button style="padding:2px 6px; font-size:11px;">Collect</button>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Date range > 31 days “Date range cannot exceed 31 days.” Error
Search text < 2 chars and user presses Enter “Enter at least 2 characters to search.” Info
No orders match filters “No lab orders found for the selected filters.” Info
User without section access selects restricted section “You do not have access to this lab section.” Error

Actions / Buttons

  • Open: Opens order details in a side panel or new view (read-only order info, navigation to collection/accessioning/results).
  • Collect: Navigates to SCR-LIS-002 with the order pre-filtered.
  • Accession (if shown): Navigates to SCR-LIS-003 with accession context.
  • Result (if shown): Navigates to SCR-LIS-004 for that order/test.
  • Refresh (toolbar): Reloads worklist data.
  • Export (optional): Exports current filtered list to CSV (role-restricted).

Accessibility (WCAG 2.1 AA)

  • All filters have <label> elements and are keyboard-focusable.
  • Table headers use <th scope="col">; row selection supports keyboard (arrow keys + Enter).
  • Priority/status badges include text labels; color not used as sole indicator.
  • Live updates (e.g., auto-refresh) announced via aria-live="polite" region.
  • High contrast color palette; focus outlines visible.

Responsive / Mobile

  • On small screens, filters collapse into an accordion “Filters” panel.
  • Table becomes a stacked card list: each row rendered as a card with key fields; actions as large touch buttons.
  • Horizontal scrolling allowed for table on tablets; minimum touch target 44x44 px.

SCR-LIS-002: Specimen Collection Worklist

Purpose

Provide phlebotomists with a mobile-friendly list of patients and required specimens, supporting bedside identity verification, label printing, and collection documentation.

Field Specifications

Field Type Required Validation Default Notes
Collection Route Filter Dropdown No Valid route (Ward, OPD, Home) User last used Helps group rounds
Location Text (column) Ward/room/bed
Patient Name Text (column) From patient master
MRN Text (column) From identifiers
Tests Ordered Text (column) Comma-separated test/panel names
Tube Types Icons/text Must map to valid tube codes e.g., Lavender, SST, Blue
Collection Status Badge IN (Pending, In Progress, Collected, Missed) Status per order/specimen
Barcode Labels Button Enabled only if order valid Triggers label print
Patient Identifier Scan Barcode input Yes (bedside) Must match active patient wristband For inpatients; uses camera/scanner
Collection Time Datetime picker Yes Not in future; not before order time Now Editable
Collector ID Auto / dropdown Yes Must be logged-in user or delegated Logged-in user Audit trail
Specimen Condition Dropdown Yes IN (Good, Hemolyzed, Clotted, Insufficient, Other) Good Drives rejection logic
Comments Textarea No Max 250 chars For special notes

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow:hidden;">
  <div style="background:#00695c; color:white; padding:12px 20px; display:flex; justify-content:space-between;">
    <h3 style="margin:0;">Specimen Collection Worklist</h3>
    <span style="font-size:12px;">EN / <strong>العربية</strong></span>
  </div>
  <div style="padding:16px;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px;">
      <div style="flex:1 1 160px;">
        <label>Route</label><br/>
        <select style="width:100%; padding:4px;">
          <option>All</option>
          <option>Ward Round</option>
          <option>OPD</option>
        </select>
      </div>
      <div style="flex:2 1 260px;">
        <label>Search Patient / MRN</label><br/>
        <input type="text" style="width:100%; padding:4px;" placeholder="Search..."/>
      </div>
    </div>
    <!-- Worklist cards -->
    <div style="display:flex; flex-direction:column; gap:10px;">
      <div style="border:1px solid #ddd; border-radius:6px; padding:10px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:4px;">
          <strong>Ahmed Al-Maktoum (MRN123456)</strong>
          <span>Ward 3B / Bed 12</span>
        </div>
        <div style="font-size:12px; margin-bottom:4px;">
          Tests: CBC, LFT, PT/INR<br/>
          Tubes: <span style="background:#9c27b0; color:#fff; padding:1px 4px; border-radius:3px;">Lavender</span>
          <span style="background:#ffb300; color:#000; padding:1px 4px; border-radius:3px;">SST</span>
        </div>
        <div style="display:flex; justify-content:space-between; align-items:center; margin-top:6px;">
          <span style="font-size:12px;">
            Status:
            <span style="background:#c62828; color:#fff; padding:2px 6px; border-radius:4px;">Pending</span>
          </span>
          <div>
            <button style="padding:4px 8px; font-size:12px; margin-right:4px;">Print Labels</button>
            <button style="padding:4px 8px; font-size:12px;">Start Collection</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Barcode scan does not match selected patient “Scanned wristband does not match selected patient. Please re-verify identity.” Error
Collection time in future “Collection time cannot be in the future.” Error
Collection time before order time “Collection time cannot be earlier than order time.” Error
Specimen condition not ‘Good’ “Specimen marked as [condition]. This will trigger a rejection workflow.” Warning
Attempt to complete collection without required fields “Complete collection time, condition, and collector before marking as collected.” Error

Actions / Buttons

  • Print Labels: Sends label print job to configured printer; logs print event.
  • Start Collection: Opens collection detail view (same screen, expanded card) with identity verification and fields.
  • Mark as Collected: Sets collection status, records time and collector; updates lab_specimens.
  • Mark as Missed: For failed attempts; requires reason.
  • Refresh: Reloads worklist.

Accessibility

  • Large touch targets for mobile; all buttons keyboard accessible.
  • Identity verification instructions available as text; no reliance on color.
  • Screen reader labels for tube type icons (e.g., aria-label="Lavender EDTA tube").
  • Logical tab order: filters → worklist cards → actions.

Responsive / Mobile

  • Designed mobile-first; cards stack vertically.
  • On desktop, cards can be rendered as a table view toggle.
  • Barcode scanning integrates with device camera where supported; fallback manual entry.

SCR-LIS-003: Specimen Accessioning

Purpose

High-throughput screen for scanning incoming specimens, verifying against orders, assigning accession numbers, routing to lab sections, and handling rejections.

Field Specifications

Field Type Required Validation Default Notes
Specimen Barcode Scan Text / scanner input Yes Must match existing pending specimen or label format Primary entry point; auto-advances
Accession Number Text (read-only or auto) Yes Unique per lab section/date Auto-generated From lab_orders.accession_number or lab_specimens
Patient Name Display From patient master
MRN Display From identifiers
Order ID Display From lab_orders
Tests Ordered Display list From lab_order_tests
Specimen Type Dropdown Yes Must match allowed types for tests From order Editable if allowed
Tube Type Dropdown Yes Must match test requirements From order
Received Date/Time Datetime picker Yes Not before collection time; not future Now
Condition Dropdown Yes IN (Acceptable, Hemolyzed, Clotted, Insufficient, Wrong tube, Other) Acceptable Drives rejection
Route to Section Multi-select / checkboxes Yes At least one section From test mapping e.g., Chemistry, Hematology
Rejection Reason Dropdown Conditional Required if Condition indicates reject From master “Specimen Rejection Reason Codes”
Comments Textarea No Max 250 chars

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; border:1px solid #ccc; border-radius:8px; overflow:hidden;">
  <div style="background:#37474f; color:white; padding:12px 20px;">
    <h3 style="margin:0;">Specimen Accessioning</h3>
  </div>
  <div style="padding:16px;">
    <div style="margin-bottom:12px;">
      <label>Scan Specimen Barcode</label><br/>
      <input type="text" style="width:60%; padding:6px;" placeholder="Scan or enter barcode..."/>
      <button style="padding:6px 10px; margin-left:6px;">Search</button>
    </div>
    <!-- Patient/specimen info -->
    <div style="border:1px solid #ddd; border-radius:6px; padding:10px; margin-bottom:12px;">
      <strong>Patient:</strong> Ahmed Al-Maktoum (MRN123456)<br/>
      <strong>Order:</strong> ORD-2026-000123 &nbsp; <strong>Tests:</strong> CBC, LFT<br/>
      <strong>Accession:</strong> <input type="text" value="CH-24-000123" style="padding:2px 4px; width:140px;"/>
    </div>
    <!-- Accession form -->
    <div style="display:flex; flex-wrap:wrap; gap:12px;">
      <div style="flex:1 1 200px;">
        <label>Specimen Type</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Blood</option>
          <option>Serum</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Tube Type</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Lavender</option>
          <option>SST</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Received Date/Time</label><br/>
        <input type="datetime-local" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Condition</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Acceptable</option>
          <option>Hemolyzed</option>
          <option>Insufficient</option>
        </select>
      </div>
    </div>
    <div style="margin-top:10px;">
      <label>Route to Section</label><br/>
      <label><input type="checkbox"/> Chemistry</label>
      <label style="margin-left:10px;"><input type="checkbox"/> Hematology</label>
      <label style="margin-left:10px;"><input type="checkbox"/> Microbiology</label>
    </div>
    <div style="margin-top:10px;">
      <label>Rejection Reason (if applicable)</label><br/>
      <select style="width:50%; padding:4px;">
        <option value="">-- Select reason --</option>
        <option>Hemolyzed</option>
        <option>Insufficient volume</option>
      </select>
    </div>
    <div style="margin-top:10px;">
      <label>Comments</label><br/>
      <textarea style="width:100%; padding:4px;" rows="3"></textarea>
    </div>
    <div style="margin-top:12px; display:flex; justify-content:flex-end; gap:8px;">
      <button style="padding:6px 12px;">Reject Specimen</button>
      <button style="padding:6px 12px; background:#2e7d32; color:white; border:none;">Accession & Route</button>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Barcode not found “No pending specimen or order found for this barcode.” Error
Duplicate accession number “Accession number already exists for this section/date. Please regenerate.” Error
No section selected “Select at least one lab section to route the specimen.” Error
Condition indicates rejection but no reason “Rejection reason is required when specimen is not acceptable.” Error
Received time before collection time “Received time cannot be earlier than collection time.” Error

Actions / Buttons

  • Search / Auto-load: After barcode scan, loads matching order/specimen.
  • Accession & Route: Creates/updates lab_specimens, links to lab_orders, sets worklists for sections.
  • Reject Specimen: Marks specimen as rejected, logs reason, triggers recollection request back to CPOE/EHR.
  • Generate New Accession: Regenerates accession number if conflict.

Accessibility

  • Barcode input has aria-label="Specimen barcode"; supports paste and manual entry.
  • Error messages associated via aria-describedby.
  • Checkboxes for sections have clear labels; focus order logical.

Responsive / Mobile

  • Layout collapses to single column; form fields stacked.
  • Buttons full-width on small screens.
  • Optimised for use with handheld scanners and tablets at reception.

SCR-LIS-004: Result Entry & Verification

Purpose

Screen for entering manual results or reviewing analyzer-imported results, performing delta checks and QC review, and verifying/releasing results to downstream systems.

Field Specifications

Field Type Required Validation Default Notes
Patient Banner Display Standard patient strip (see common patterns)
Test Name Display From lab_order_tests
Result Status Badge IN (Pending, Preliminary, Final, Corrected) From lab_results
QC Status Badge IN (In control, Out of control, Not run) From lab_qc_records
Component Name Text (column) From lab_result_components
Result Value Numeric/text input Yes (if required) Type-specific; numeric range checks Supports numeric or text
Unit Dropdown / display Yes Must match test configuration From test
Reference Range Display From lab_reference_ranges
Delta Check Flag Icon/text Indicates significant change vs previous
Abnormal Flag Dropdown / auto No (auto) IN (Normal, High, Low, Critical) Auto from range Editable with justification
Interpretation Textarea No Max 500 chars For comments
Previous Results Panel Display table Historical values with dates
Verify Button Button Enabled only if validations pass Marks as verified
Critical Indicator Badge If value crosses critical threshold

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1000px; margin: 0 auto; border:1px solid #ccc; border-radius:8px; overflow:hidden;">
  <div style="background:#283593; color:white; padding:12px 20px;">
    <h3 style="margin:0;">Result Entry & Verification</h3>
  </div>
  <div style="padding:16px;">
    <!-- Patient banner -->
    <div style="background:#f0f4f8; padding:8px 10px; border-radius:4px; margin-bottom:10px;">
      <strong>Ahmed Al-Maktoum</strong> (MRN123456) • Male • 45 yrs • Ward 3B<br/>
      Allergies: Penicillin • Emirates ID: 784-1980-1234567-1
    </div>
    <!-- Header info -->
    <div style="display:flex; justify-content:space-between; margin-bottom:8px;">
      <div>
        <strong>Test:</strong> Serum Creatinine (LOINC 2160-0)<br/>
        <strong>Status:</strong> Preliminary
      </div>
      <div>
        <strong>QC:</strong> <span style="background:#2e7d32; color:#fff; padding:2px 6px; border-radius:4px;">In control</span><br/>
        <strong>Delta:</strong> <span style="color:#c62828;">Significant increase vs last result</span>
      </div>
    </div>
    <!-- Result grid -->
    <table style="width:100%; border-collapse:collapse; font-size:13px; margin-bottom:10px;">
      <thead style="background:#f5f5f5;">
        <tr>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Component</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Result</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Unit</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Reference Range</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Flag</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:6px; border-bottom:1px solid #eee;">Creatinine</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">
            <input type="number" step="0.01" style="width:80px; padding:2px;" value="180"/>
          </td>
          <td style="padding:6px; border-bottom:1px solid #eee;">µmol/L</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">60 - 110</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">
            <select style="padding:2px 4px;">
              <option>High</option>
              <option>Critical</option>
            </select>
          </td>
        </tr>
      </tbody>
    </table>
    <!-- Interpretation and previous results -->
    <div style="display:flex; gap:12px; flex-wrap:wrap;">
      <div style="flex:1 1 300px;">
        <label>Interpretation / Comment</label><br/>
        <textarea rows="3" style="width:100%; padding:4px;"></textarea>
      </div>
      <div style="flex:1 1 300px;">
        <label>Previous Results</label>
        <div style="border:1px solid #ddd; max-height:120px; overflow:auto; font-size:12px;">
          <table style="width:100%; border-collapse:collapse;">
            <thead style="background:#fafafa;">
              <tr>
                <th style="padding:4px; border-bottom:1px solid #eee;">Date</th>
                <th style="padding:4px; border-bottom:1px solid #eee;">Value</th>
                <th style="padding:4px; border-bottom:1px solid #eee;">Unit</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td style="padding:4px; border-bottom:1px solid #eee;">2026-02-01 10:30</td>
                <td style="padding:4px; border-bottom:1px solid #eee;">95</td>
                <td style="padding:4px; border-bottom:1px solid #eee;">µmol/L</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
    <!-- Actions -->
    <div style="margin-top:12px; display:flex; justify-content:flex-end; gap:8px;">
      <button style="padding:6px 12px;">Save as Draft</button>
      <button style="padding:6px 12px; background:#f9a825; color:#000; border:none;">Mark as Preliminary</button>
      <button style="padding:6px 12px; background:#2e7d32; color:white; border:none;">Verify & Finalize</button>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Required result value missing “Enter result value for all required components.” Error
Result outside configured analytical limits “Result is outside analytical limits for this test. Please verify entry or repeat test.” Error
QC status not “In control” “QC is not in control for this run. Verification is not allowed until QC issue is resolved.” Error (hard stop)
Delta check exceeded threshold “Result shows a significant change from previous value. Please confirm and document in comments.” Warning
Attempt to finalize with critical value but no critical notification initiated “Critical value detected. Initiate critical notification before finalizing.” Error (configurable)

Actions / Buttons

  • Save as Draft: Saves entered values without changing result status.
  • Mark as Preliminary: Sets status to Preliminary; sends preliminary result to EHR if configured.
  • Verify & Finalize: Performs final validation, sets status to Final, triggers outbound HL7 ORU/FHIR messages and billing events.
  • View Full History: Opens modal with extended result history.
  • Trigger Critical Workflow: Opens SCR-LIS-007 pre-populated.

Accessibility

  • Table cells accessible via keyboard; focus indicators visible.
  • Delta and abnormal flags include textual descriptions; icons have aria-label.
  • Screen reader announces status changes via aria-live.
  • All actions reachable without mouse; no time-based auto-advance.

Responsive / Mobile

  • On smaller screens, result grid becomes vertical list per component.
  • Previous results panel collapses into a toggle “Show previous results”.
  • Action buttons stacked full-width at bottom.

SCR-LIS-005: Microbiology Workbench

Purpose

Support multi-day microbiology workflows: culture setup, incubation tracking, organism identification, susceptibility entry, and interim/final reporting with stewardship rules.

Field Specifications

Field Type Required Validation Default Notes
Worklist Filter (Day) Dropdown No IN (Day 0, Day 1, Day 2, …) Today’s day Based on plating date
Specimen ID Text (column) From lab_micro_cultures.specimen_id
Culture Status Badge IN (Plated, Incubating, Growth, No growth, Final)
Plating Date/Time Display
Media Type Text From lab_micro_cultures.media_type
Growth Status Dropdown Yes IN (No growth, Growth, Contaminant)
Organism Code (SNOMED) Autocomplete Yes (if growth) Valid SNOMED code
Organism Name Display From SNOMED or free text if allowed
Colony Count Numeric No ≥ 0
Identification Method Dropdown No From master list e.g., MALDI-TOF
AST Panel Selector Dropdown No Valid panel Selects antibiotics set
Antibiotic Name Text (column) From master
MIC Value Numeric/text input No As per method
Interpretation Dropdown Yes (if MIC entered) IN (S, I, R)
Cascade Level Display For stewardship
Reportable Flag Checkbox No Auto from rules Controls reporting
Interim Result Toggle Checkbox No Marks as interim
Finalize Culture Button Button Requires mandatory fields

Validation Messages

Condition Message Severity
Growth selected but no organism entered “Enter organism identification for cultures with growth.” Error
MIC entered without interpretation “Select interpretation (S/I/R) for each antibiotic with MIC.” Error
Attempt to finalize without AST where required “Susceptibility testing is required before finalizing this culture.” Error
Cascade rule hides all antibiotics “Cascade rules have suppressed all antibiotics. Review stewardship configuration.” Warning

Actions / Buttons

  • Save Interim: Saves current state, marks as interim; sends interim report if configured.
  • Finalize Culture: Locks culture record, sets status Final, triggers result release.
  • Apply Stewardship Rules: Re-applies cascade reporting logic.
  • View Antibiogram: Opens facility antibiogram reference.

Accessibility

  • Worklist supports keyboard navigation; filters labeled.
  • Antibiotic grid accessible with arrow keys; focus visible.
  • Stewardship warnings announced via aria-live.

Responsive / Mobile

  • Worklist collapses to cards; detailed culture view in separate panel.
  • Antibiotic grid horizontally scrollable on small screens.

SCR-LIS-006: Pathology Case Viewer

Purpose

Provide pathologists with a comprehensive view of pathology cases, including gross and microscopic descriptions, synoptic templates, digital slides, and sign-out controls.

Field Specifications

Field Type Required Validation Default Notes
Case Info Header Display Case number, type, status, priority
Specimen Details Display From lab_pathology_cases and lab_specimens
Gross Description Rich textarea Yes Max length (configurable) Audit trail of edits
Microscopic Description Rich textarea Yes Max length
Diagnosis Text Rich textarea Yes Max length
Diagnosis Code (SNOMED) Autocomplete Recommended Valid SNOMED code
ICD-10-AM Code Autocomplete Recommended Valid ICD-10-AM For billing/registry
Synoptic Template Selector Dropdown No Valid template Auto by case type
Synoptic Fields Structured inputs Yes (per template) Template-specific e.g., tumor size, margins
Digital Slides Viewer Embedded frame/link No DICOM or vendor viewer
Sign-out Button Button Requires mandatory fields Sets status to Final/Signed
Co-signature Required Checkbox/display No From rules For trainees

Validation Messages

Condition Message Severity
Attempt to sign-out with missing mandatory synoptic fields “Complete all required synoptic fields before sign-out.” Error
Diagnosis text empty “Diagnosis is required to sign out this case.” Error
User lacks sign-out privilege “You are not authorised to sign out pathology cases.” Error
Digital slide not available “Digital slide not available. Please review glass slides.” Info

Actions / Buttons

  • Save Draft: Saves current edits without changing status.
  • Sign Out: Sets status to Signed, records pathologist and timestamp, triggers report release.
  • Request Second Opinion: Sends case to another pathologist; status updated.
  • Print Report Preview: Generates formatted report for review.

Accessibility

  • Synoptic fields grouped with headings; labels clear.
  • Digital viewer integration must support keyboard navigation or provide alternative text summary.
  • High contrast for text-heavy areas; large fonts.

Responsive / Mobile

  • Primarily desktop-focused; on tablets, sections collapsible.
  • Digital slide viewer may be disabled or limited on small screens.

SCR-LIS-007: Critical Value Alert Manager

Purpose

Track, manage, and document critical lab results notifications, including escalation and read-back confirmation, in line with UAE regulatory and facility policies.

Field Specifications

Field Type Required Validation Default Notes
Critical Result Display Test name, value, unit, critical threshold
Patient Info Display Patient banner
Responsible Provider Display / dropdown Yes Must be valid provider From order
Notification Method Dropdown Yes IN (In-app, Phone, SMS, Pager, Other) In-app Configurable
Notification Status Badge IN (Pending, In progress, Acknowledged, Escalated) Pending
Escalation Timer Countdown display 15/30 min thresholds Visual + textual
Notification Time Datetime Yes Not future Now
Acknowledged Time Datetime Conditional ≥ Notification Time Set when acknowledged
Acknowledged By Dropdown Conditional Valid provider/user
Read-back Confirmed Checkbox Conditional Required for phone/pager
Escalation Level Dropdown/display No IN (Level 0, 1, 2, 3) 0
Comments Textarea No Max 250 chars

Validation Messages

Condition Message Severity
Attempt to close without read-back for phone notification “Read-back confirmation is required for phone notifications.” Error
Acknowledged time before notification time “Acknowledged time cannot be earlier than notification time.” Error
Escalation overdue “Critical notification overdue. Escalation to next level required.” Warning

Actions / Buttons

  • Start Notification: Logs initial notification attempt.
  • Mark Acknowledged: Records acknowledgment details; stops timer.
  • Escalate: Increments escalation level, triggers next notification target.
  • Complete: Marks notification as completed; locks record.

Accessibility

  • Countdown timer supplemented with text (“X minutes remaining”).
  • Alerts announced via aria-live="assertive" for critical overdue notifications.
  • Color-coded statuses also include text labels.

Responsive / Mobile

  • Designed to be usable on mobile for clinicians acknowledging alerts.
  • Key actions (Acknowledge, Call back) presented as large buttons.

SCR-LIS-008: QC Dashboard

Purpose

Monitor analyzer QC performance, display Levey-Jennings charts, highlight Westgard rule violations, and document corrective actions.

Field Specifications

Field Type Required Validation Default Notes
Analyzer Selector Dropdown Yes Valid analyzer User’s default From lab_analyzers
Test Selector Dropdown Yes Valid test for analyzer
Date Range Date range picker No Max 90 days Last 30 days
Levey-Jennings Chart Graph display QC values vs mean ± SD
QC Status Badge IN (In control, Warning, Out of control)
Westgard Violations Table/list From lab_qc_records.westgard_rule_violated
Corrective Action Textarea Conditional Required if out of control
Approve QC Run Button Button Only if QC in control or after corrective action

Validation Messages

Condition Message Severity
Attempt to approve QC with unresolved violation “Document corrective action before approving this QC run.” Error
Date range > 90 days “QC trend view limited to 90 days.” Error

Actions / Buttons

  • Refresh: Reloads QC data.
  • Approve QC Run: Marks QC as accepted; allows patient results to be released.
  • Print QC Report: Generates PDF for audits.
  • Export Data: CSV export for external analysis.

Accessibility

  • Charts must have textual summaries (mean, SD, number of violations).
  • Westgard rule violations described in text (e.g., “1-3s rule violated on 2026-02-06”).

Responsive / Mobile

  • Charts become simplified; summary stats prioritized.
  • Tables scroll horizontally.

SCR-LIS-009: Reference Lab Send-Out Tracker

Purpose

Track specimens sent to external reference laboratories, monitor TAT, and record receipt of results.

Field Specifications

Field Type Required Validation Default Notes
Send-out List Table One row per send-out
Reference Lab Dropdown/column Yes Valid reference lab From Reference Laboratory Directory
Tracking Number Text No Max 50 chars Courier tracking
Shipped Date Date/datetime Yes Not future Today
Expected Date Date No ≥ Shipped Date Auto from TAT
Status Dropdown/badge Yes IN (Pending, Shipped, In transit, Result received, Cancelled, Overdue) Pending
Overdue Flag Badge Auto if today > expected
Result Received Date Date/datetime Conditional ≥ Shipped Date
Attach Result File File upload No Allowed types (PDF, image) For manual results

Validation Messages

Condition Message Severity
Shipped date in future “Shipped date cannot be in the future.” Error
Result received date before shipped date “Result received date cannot be earlier than shipped date.” Error
Status set to “Result received” without result data “Enter result details or attach result file before marking as received.” Error

Actions / Buttons

  • Create Send-out: Initiates new send-out record from an order/test.
  • Update Tracking: Saves tracking number and shipped info.
  • Mark Result Received: Updates status, opens result entry/attachment.
  • Flag Overdue: Manual override to mark as overdue.

Accessibility

  • Overdue status indicated by text and icon; not color alone.
  • File upload control labeled and keyboard accessible.

Responsive / Mobile

  • Table rows rendered as cards; key fields visible.
  • Actions accessible via a “More” menu on small screens.

SCR-LIS-010: Lab Analytics Dashboard

Purpose

Provide lab leadership with KPI visualizations for TAT, volume, critical value compliance, QC performance, staff productivity, and send-out metrics.

Field Specifications

Field Type Required Validation Default Notes
Date Range Date range picker Yes Max 365 days Last 30 days
Lab Section Filter Multi-select No Valid sections All
Provider Filter Autocomplete No Valid provider For provider-level metrics
TAT Metrics Widget Charts + numbers Routine vs STAT TAT
Volume Trends Widget Line/bar chart Tests per day/month
Critical Value Compliance Widget Gauge/number From lab_critical_notifications
QC Performance Widget Chart QC pass rate
Staff Productivity Widget Table/chart Tests per staff/shift
Send-out Metrics Widget Chart Send-out TAT compliance

Validation Messages

Condition Message Severity
Date range > 365 days “Analytics view limited to 12 months.” Error
No data for selected filters “No data available for the selected period and filters.” Info

Actions / Buttons

  • Apply Filters: Refreshes all widgets.
  • Drill-down: Clicking a widget opens detailed report (new view).
  • Export: Exports current view or underlying data (role-restricted).

Accessibility

  • Each chart has a data table view toggle.
  • KPIs announced with clear labels (e.g., “STAT TAT average: 45 minutes”).

Responsive / Mobile

  • Widgets stack vertically; charts simplified.
  • Data table view preferred on small screens.

Common UI Patterns

Patient Banner

  • Appears on all clinical screens (SCR-LIS-001/002/003/004/005/006/007).
  • Fields:
  • Patient full name (Arabic + English if available)
  • MRN
  • Emirates ID (784-YYYY-NNNNNNN-C)
  • Age, gender
  • Location (ward/clinic)
  • Allergies summary
  • Behaviour:
  • Click opens full demographics (from ehr-patient-mgmt).
  • Read-only; no edits in LIS.
  • Accessibility:
  • Marked as landmark region (role="banner").
  • Text size ≥ 14px; high contrast.

Search Components

  • Used for patients, orders, tests, organisms, providers.
  • Common behaviours:
  • Minimum characters (2–3) before search.
  • Debounced queries (e.g., 300 ms).
  • Clear button to reset.
  • Validation:
  • Informational message when no results.
  • Accessibility:
  • aria-label describing search scope.
  • Results list keyboard navigable; Enter selects.

Alert / Notification Patterns

  • Types:
  • Info (blue), Warning (amber), Error (red), Critical (red with icon).
  • Display:
  • Inline banners at top of content area.
  • For critical/overdue alerts, optional modal with explicit actions.
  • Accessibility:
  • Use aria-live="polite" for info/warning, aria-live="assertive" for critical.
  • Icons always accompanied by text.

Loading States

  • Skeleton loaders or spinners with text “Loading [entity]…”.
  • For long-running operations (e.g., analytics), show progress indicator and allow cancel where possible.
  • Accessibility:
  • Loading region marked with aria-busy="true" while in progress.

Arabic/English Bilingual UI Considerations

  • All labels, messages, and headings must support English and Arabic.
  • Toggle or automatic language selection based on user profile.
  • Right-to-left (RTL) support:
  • When Arabic selected, layout direction switches to RTL.
  • Tables maintain logical column order; text alignment adjusts.
  • Data fields (MRN, Emirates ID, numeric values) remain LTR even in RTL layout.
  • Validation messages provided in both languages.

General Accessibility (WCAG 2.1 AA)

  • Keyboard-only operation supported across all screens.
  • Focus order follows visual order; focus indicators clearly visible.
  • Color contrast ratio ≥ 4.5:1 for text; ≥ 3:1 for large text and UI components.
  • No reliance on color alone to convey meaning (badges include text).
  • Forms:
  • Each input has a <label> or aria-label.
  • Error messages linked via aria-describedby.
  • Time-based elements (e.g., critical timers) do not auto-log out or lose data; timers are informational.

Responsive / Mobile Behaviour (Module-wide)

  • Breakpoints:
  • ≥ 1024px: desktop layout (multi-column tables and grids).
  • 768–1023px: tablet layout (two-column where possible).
  • < 768px: mobile layout (single-column, card-based lists).
  • Tables on small screens:
  • Either horizontal scroll or transform into cards with key fields.
  • Touch targets:
  • Minimum 44x44 px for buttons and interactive elements.
  • Performance:
  • Avoid heavy charts on low bandwidth; provide simplified numeric summaries.

content/clinical/lis/04-screen-requirements.md Generated 2026-02-20 22:54